修改bug
This commit is contained in:
parent
4d1938005f
commit
3663e7d5d2
@ -1,17 +1,15 @@
|
||||
package com.zhgd.xmgl.modules.ocr.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @Description: ocr识别模块位置
|
||||
@ -65,4 +63,9 @@ public class OcrModulePlace implements Serializable {
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private java.util.Date updateTime;
|
||||
/**
|
||||
* 配置json
|
||||
*/
|
||||
@ApiModelProperty(value = "配置json")
|
||||
private java.lang.String configJson;
|
||||
}
|
||||
|
||||
@ -1,30 +1,42 @@
|
||||
package com.zhgd.xmgl.modules.worker.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zhgd.annotation.OperLog;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.jeecg.common.mybatis.EntityMap;
|
||||
import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.SjEnterpriseInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.TeamInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.EnterpriseDepartmentTeamTreeVo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.StatsEnterpriseWeekVo;
|
||||
import com.zhgd.xmgl.modules.worker.service.IDepartmentInfoService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IEnterpriseInfoService;
|
||||
import com.zhgd.xmgl.modules.worker.service.ITeamInfoService;
|
||||
import com.zhgd.xmgl.util.ListUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
@ -41,6 +53,12 @@ import java.util.Map;
|
||||
public class EnterpriseInfoController {
|
||||
@Autowired
|
||||
private IEnterpriseInfoService enterpriseInfoService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IDepartmentInfoService departmentInfoService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private ITeamInfoService teamInfoService;
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
@ -177,7 +195,6 @@ public class EnterpriseInfoController {
|
||||
return enterpriseInfoService.deleteSj(enterpriseInfo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
@ -195,7 +212,6 @@ public class EnterpriseInfoController {
|
||||
return Result.success(enterpriseInfoService.getEnterpriseInfoById(map));
|
||||
}
|
||||
|
||||
|
||||
@OperLog(operModul = "劳务公司管理", operType = "查询", operDesc = "通过社会统一信用代码查询劳务公司")
|
||||
@ApiOperation(value = "通过社会统一信用代码查询劳务公司", notes = "通过社会统一信用代码查询劳务公司", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ -248,4 +264,62 @@ public class EnterpriseInfoController {
|
||||
public Result<StatsEnterpriseWeekVo> statsEnterpriseWeek(@ApiIgnore @RequestBody Map<String, Object> param) {
|
||||
return Result.success(enterpriseInfoService.statsEnterpriseWeek(param));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询单位部门班组tree列表", notes = "查询单位部门班组tree列表", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "enterpriseTypeId", value = "企业类型", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "name", value = "名称", paramType = "body", required = false, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/getEnterpriseDepartmentTeamTree")
|
||||
public Result<List<EnterpriseDepartmentTeamTreeVo>> getEnterpriseDepartmentTeamTree(@ApiIgnore @RequestBody Map<String, Object> param) {
|
||||
String projectSn = MapUtils.getString(param, "projectSn");
|
||||
String name = MapUtils.getString(param, "name");
|
||||
List<EnterpriseDepartmentTeamTreeVo> all = new ArrayList<>();
|
||||
List<DepartmentInfo> departmentInfos = departmentInfoService.list(new LambdaQueryWrapper<DepartmentInfo>()
|
||||
.eq(DepartmentInfo::getProjectSn, projectSn));
|
||||
List<TeamInfo> teamInfoList = teamInfoService.list(new LambdaQueryWrapper<TeamInfo>()
|
||||
.eq(TeamInfo::getProjectSn, projectSn));
|
||||
Map<Long, String> enterpriseId2UniqueIdMap = new HashMap<>();
|
||||
List<EnterpriseDepartmentTeamTreeVo> enterprises = enterpriseInfoService.getEnterpriseInfos(param).stream().map(e -> {
|
||||
enterpriseId2UniqueIdMap.put(e.getId(), e.getId() + "");
|
||||
EnterpriseDepartmentTeamTreeVo vo = new EnterpriseDepartmentTeamTreeVo();
|
||||
vo.setUniqueId(e.getId() + "");
|
||||
vo.setParentId(e.getParentEnterpriseId() + "");
|
||||
vo.setName(e.getEnterpriseName());
|
||||
vo.setOriginalId(e.getId() + "");
|
||||
vo.setTypeName(e.getCompanyTypeName());
|
||||
vo.setCategory(1);
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
List<EnterpriseDepartmentTeamTreeVo> departments = departmentInfos.stream().filter(d -> Objects.nonNull(enterpriseId2UniqueIdMap.get(d.getEnterpriseId()))).map(d -> {
|
||||
EnterpriseDepartmentTeamTreeVo vo = new EnterpriseDepartmentTeamTreeVo();
|
||||
vo.setUniqueId(IdUtil.randomUUID());
|
||||
vo.setParentId(enterpriseId2UniqueIdMap.get(d.getEnterpriseId()));
|
||||
vo.setName(d.getDepartmentName());
|
||||
vo.setOriginalId(d.getId() + "");
|
||||
vo.setTypeName("部门");
|
||||
vo.setCategory(2);
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
List<EnterpriseDepartmentTeamTreeVo> teams = teamInfoList.stream().filter(t -> Objects.nonNull(enterpriseId2UniqueIdMap.get(t.getEnterpriseId()))).map(t -> {
|
||||
EnterpriseDepartmentTeamTreeVo vo = new EnterpriseDepartmentTeamTreeVo();
|
||||
vo.setUniqueId(IdUtil.randomUUID());
|
||||
vo.setParentId(enterpriseId2UniqueIdMap.get(t.getEnterpriseId()));
|
||||
vo.setName(t.getTeamName());
|
||||
vo.setOriginalId(t.getId() + "");
|
||||
vo.setTypeName("班组");
|
||||
vo.setCategory(3);
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
all.addAll(enterprises);
|
||||
all.addAll(departments);
|
||||
all.addAll(teams);
|
||||
if (StrUtil.isNotBlank(name)) {
|
||||
all = all.stream().filter(vo -> vo.getName().contains(name)).collect(Collectors.toList());
|
||||
}
|
||||
List<EnterpriseDepartmentTeamTreeVo> vos = BeanUtil.copyToList(ListUtils.listToTree(JSONArray.parseArray(JSON.toJSONString(all)), "uniqueId", "parentId", "children"), EnterpriseDepartmentTeamTreeVo.class);
|
||||
return Result.success(vos);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,11 +2,13 @@ package com.zhgd.xmgl.modules.worker.controller;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateField;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.stream.StreamUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@ -23,10 +25,7 @@ import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.dto.WorkerDailyAttendanceStatisticsV2Dto;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceStatisticsV2Vo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.ExceptionHourStatisticsListVo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.StatisticsListVo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.*;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerDailyAttendanceStatisticsV2Service;
|
||||
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
|
||||
@ -484,5 +483,147 @@ public class WorkerDailyAttendanceStatisticsV2Controller {
|
||||
return Result.success(workerDailyAttendanceStatisticsV2Service.countWorkerDailyAttendanceStatisticsV2ByDate(param));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询考勤日报列表", notes = "查询考勤日报列表", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "attendanceDate", value = "考勤日期yyyy-MM-dd", paramType = "body", required = true, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/getWorkerDailyAttendancesByDate")
|
||||
public Result<IPage<WorkerDailyAttendancesByDateVo>> getWorkerDailyAttendancesByDate(@RequestBody HashMap<String, Object> param) {
|
||||
String projectSn = MapUtils.getString(param, "projectSn");
|
||||
String attendanceDate = MapUtils.getString(param, "attendanceDate");
|
||||
param.put("addTime_end", attendanceDate);
|
||||
IPage<WorkerInfo> workerInfoList = workerInfoService.selectWorkerInfoList(param);
|
||||
Map<String, WorkerDailyAttendanceStatisticsV2Vo> personSnMap = workerDailyAttendanceStatisticsV2Service.queryList(param).stream()
|
||||
.collect(Collectors.toMap(WorkerDailyAttendanceStatisticsV2::getPersonSn, Function.identity()));
|
||||
Map<String, List<WorkerAttendance>> personSn2AttendancesMap = workerAttendanceService.list(new LambdaQueryWrapper<WorkerAttendance>()
|
||||
.eq(WorkerAttendance::getProjectSn, projectSn)
|
||||
.ge(WorkerAttendance::getCreateTime, attendanceDate)
|
||||
.le(WorkerAttendance::getCreateTime, DateUtil.formatDateTime(DateUtil.endOfDay(DateUtil.parseDate(attendanceDate)))))
|
||||
.stream().collect(Collectors.groupingBy(WorkerAttendance::getPersonSn));
|
||||
List<WorkerDailyAttendancesByDateVo> vos = new ArrayList<>();
|
||||
for (WorkerInfo workerInfo : workerInfoList.getRecords()) {
|
||||
WorkerDailyAttendanceStatisticsV2Vo voDb = personSnMap.get(workerInfo.getPersonSn());
|
||||
WorkerDailyAttendancesByDateVo vo = new WorkerDailyAttendancesByDateVo();
|
||||
if (voDb != null) {
|
||||
BeanUtil.copyProperties(vo, voDb);
|
||||
} else {
|
||||
vo.setPersonType(workerInfo.getPersonType());
|
||||
vo.setEnterpriseName(workerInfo.getEnterpriseName());
|
||||
vo.setWorkerName(workerInfo.getWorkerName());
|
||||
vo.setDeptName(workerInfo.getDepartmentName());
|
||||
vo.setProjectSn(workerInfo.getProjectSn());
|
||||
vo.setPersonSn(workerInfo.getPersonSn());
|
||||
vo.setAttendanceDate(DateUtil.parseDate(attendanceDate));
|
||||
vo.setHourVal(new BigDecimal("0"));
|
||||
vo.setDayVal(new BigDecimal("0"));
|
||||
vo.setIsAttendance(0);
|
||||
vo.setOvertimeHourVal(new BigDecimal("0"));
|
||||
vo.setOvertimeDayVal(new BigDecimal("0"));
|
||||
vo.setInserviceType(workerInfo.getInserviceType());
|
||||
}
|
||||
List<WorkerAttendance> attendances = personSn2AttendancesMap.get(workerInfo.getPersonSn());
|
||||
if (Objects.equals(vo.getIsAttendance(), 1) && CollUtil.isNotEmpty(attendances)) {
|
||||
String firstInTime = attendances.stream().filter(w -> Objects.equals(w.getPassType(), 1)).min(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime).orElse(null);
|
||||
String endOutTime = attendances.stream().filter(w -> Objects.equals(w.getPassType(), 2)).max(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime).orElse(null);
|
||||
vo.setFirstInTime(firstInTime);
|
||||
vo.setEndOutTime(endOutTime);
|
||||
String firstTimeAm = attendances.stream().filter(w -> DateUtil.compare(DateUtil.parseDateTime(w.getCreateTime()), DateUtil.parseDateTime(attendanceDate + " 12:00:00")) < 0).min(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime).orElse(null);
|
||||
vo.setFirstTimeAm(firstTimeAm);
|
||||
String endTimePm = attendances.stream().filter(w -> DateUtil.compare(DateUtil.parseDateTime(w.getCreateTime()), DateUtil.parseDateTime(attendanceDate + " 12:00:00")) >= 0).max(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime).orElse(null);
|
||||
vo.setEndTimePm(endTimePm);
|
||||
}
|
||||
vos.add(vo);
|
||||
}
|
||||
IPage<WorkerDailyAttendancesByDateVo> p = new Page<>();
|
||||
p.setTotal(workerInfoList.getTotal());
|
||||
p.setRecords(vos);
|
||||
p.setCurrent(workerInfoList.getCurrent());
|
||||
p.setSize(workerInfoList.getSize());
|
||||
return Result.success(p);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "统计考勤日报", notes = "统计考勤日报", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "attendanceDate", value = "考勤日期yyyy-MM-dd", paramType = "body", required = true, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/countWorkerDailyAttendancesStaticsByDate")
|
||||
public Result<CountWorkerDailyAttendancesStaticsByDateVo> countWorkerDailyAttendancesStaticsByDate(@RequestBody HashMap<String, Object> param) {
|
||||
String projectSn = MapUtils.getString(param, "projectSn");
|
||||
String attendanceDate = MapUtils.getString(param, "attendanceDate");
|
||||
param.put("addTime_end", attendanceDate);
|
||||
List<WorkerDailyAttendanceStatisticsV2Vo> vos = workerDailyAttendanceStatisticsV2Service.queryList(param);
|
||||
CountWorkerDailyAttendancesStaticsByDateVo vo = new CountWorkerDailyAttendancesStaticsByDateVo();
|
||||
vo.setInServiceCount((int) vos.stream().filter(v -> Objects.equals(v.getInserviceType(), 1)).count());
|
||||
vo.setAttendanceCount((int) vos.stream().filter(v -> Objects.equals(v.getIsAttendance(), 1)).count());
|
||||
vo.setAbsentCount((int) vos.stream().filter(v -> Objects.equals(v.getIsAttendance(), 0)).count());
|
||||
vo.setAttendanceRate(Objects.nonNull(vo.getInServiceCount()) ? NumberUtil.mul(NumberUtil.div(vo.getAttendanceCount(), vo.getInServiceCount(), 4), new BigDecimal("100")) : null);
|
||||
param.put("addTime_end", null);
|
||||
param.put("exitDate_begin", attendanceDate);
|
||||
param.put("exitDate_end", attendanceDate);
|
||||
IPage<WorkerInfo> workerInfoList = workerInfoService.selectWorkerInfoList(param);
|
||||
vo.setLeftCount((int) workerInfoList.getTotal());
|
||||
return Result.success(vo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "导出考勤日报excel记录", notes = "导出考勤日报excel记录", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "downloadType", value = "1上下午打卡2进出场打卡", paramType = "body", required = true, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/exportWorkerDailyAttendancesStaticsByDateXls")
|
||||
public void exportXls(HttpServletResponse response, @RequestBody HashMap<String, Object> param) {
|
||||
// String templateUrl = null;
|
||||
// try {
|
||||
// String sn = MapUtils.getString(param, "sn");
|
||||
//// String libraryId = MapUtils.getString(param, "libraryId");
|
||||
// List<String> detailIdList = JSON.parseArray(JSON.toJSONString(param.get("detailIdList")), String.class);
|
||||
// // Step.1 组装查询条件
|
||||
// param.put("pageNo", 1);
|
||||
// param.put("pageSize", -1);
|
||||
// List<Map<String, Object>> listMap = new ArrayList<>();
|
||||
// Map<String, Object> firstSheetMap = new HashMap<>();
|
||||
// List<RiskListDetail> details = riskListDetailService.list(new LambdaQueryWrapper<RiskListDetail>()
|
||||
//// .eq(RiskListDetail::getLibraryId, libraryId)
|
||||
// .in(RiskListDetail::getId, detailIdList)
|
||||
// );
|
||||
// Map<String, DictionaryItem> factorTypeMap = dictionaryItemService.getDictList("risk_factor_type", null).stream().collect(Collectors.toMap(DictionaryItem::getData, Function.identity(), (o1, o2) -> o1));
|
||||
// Map<Long, RiskListPotentialAccidentType> accidentTypeMap = riskListPotentialAccidentTypeService.list(new LambdaQueryWrapper<RiskListPotentialAccidentType>()
|
||||
// .eq(RiskListPotentialAccidentType::getSn, sn)).stream().collect(Collectors.toMap(RiskListPotentialAccidentType::getId, Function.identity(), (o1, o2) -> o1));
|
||||
// for (RiskListDetail detail : details) {
|
||||
// Map<String, Object> map = new HashMap<>();
|
||||
// map.put("riskDescription", detail.getRiskDescription());
|
||||
// map.put("accidentType", Optional.ofNullable(accidentTypeMap.get(detail.getAccidentTypeId())).map(RiskListPotentialAccidentType::getType).orElse(""));
|
||||
// map.put("riskFactorType", Optional.ofNullable(factorTypeMap.get(detail.getRiskFactorType())).map(DictionaryItem::getName).orElse(""));
|
||||
// List<String> levels = Arrays.asList("重大风险", "较大风险", "一般风险", "低风险");
|
||||
// map.put("riskLevel", Optional.ofNullable(detail.getRiskLevel()).map(m -> levels.get(m - 1)).orElse(""));
|
||||
// map.put("engineeringMeasure", detail.getEngineeringMeasure());
|
||||
// map.put("managementMeasure", detail.getManagementMeasure());
|
||||
// map.put("personalProtection", detail.getPersonalProtection());
|
||||
// map.put("emergencyMeasure", detail.getEmergencyMeasure());
|
||||
// map.put("educationalMeasure", detail.getEducationalMeasure());
|
||||
// listMap.add(map);
|
||||
// }
|
||||
// //将项目清单集合添加到map中
|
||||
// firstSheetMap.put("listMap", listMap);
|
||||
// Map<Integer, Map<String, Object>> root = new HashMap<>(4);
|
||||
// root.put(0, firstSheetMap);
|
||||
// putOtherSheets(sn, root);
|
||||
// templateUrl = Fileutils.getExportTemplateFile("excel/风险清单详情导出模板.xlsx").getAbsolutePath();
|
||||
//// templateUrl = new File("C:\\Users\\Administrator\\IdeaProjects\\wisdomisite-with-flowjar\\tmp\\风险清单详情导出模板.xlsx").getAbsolutePath();
|
||||
// TemplateExportParams params = new TemplateExportParams(templateUrl, root.keySet().toArray(new Integer[]{}));
|
||||
// Workbook workbook = ExcelExportUtil.exportExcel(root, params);
|
||||
// //设置下拉
|
||||
// ExcelUtils.downLoadExcel("风险清单详情导出模板.xlsx", response, workbook);
|
||||
// } catch (IOException e) {
|
||||
// log.error("", e);
|
||||
// throw new OpenAlertException("系统错误");
|
||||
// } finally {
|
||||
// if (templateUrl != null) {
|
||||
// FileUtil.deleteFile(templateUrl);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -72,4 +72,9 @@ public class WorkerDailyAttendanceStatisticsV2 implements Serializable {
|
||||
*/
|
||||
@ApiModelProperty(value = "加班工日")
|
||||
private java.math.BigDecimal overtimeDayVal;
|
||||
/**
|
||||
* 在职状态 1在职 2离职
|
||||
*/
|
||||
@ApiModelProperty(value = "在职状态 1在职 2离职")
|
||||
private java.lang.Integer inserviceType;
|
||||
}
|
||||
|
||||
@ -0,0 +1,35 @@
|
||||
package com.zhgd.xmgl.modules.worker.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class CountWorkerDailyAttendancesStaticsByDateVo {
|
||||
/**
|
||||
* 当日在职
|
||||
*/
|
||||
@ApiModelProperty("当日在职")
|
||||
private Integer inServiceCount;
|
||||
/**
|
||||
* 当日出勤
|
||||
*/
|
||||
@ApiModelProperty("当日出勤")
|
||||
private Integer attendanceCount;
|
||||
/**
|
||||
* 当日缺勤
|
||||
*/
|
||||
@ApiModelProperty("当日缺勤")
|
||||
private Integer absentCount;
|
||||
/**
|
||||
* 出勤率
|
||||
*/
|
||||
@ApiModelProperty("出勤率")
|
||||
private BigDecimal attendanceRate;
|
||||
/**
|
||||
* 当日退场
|
||||
*/
|
||||
@ApiModelProperty("当日退场")
|
||||
private Integer leftCount;
|
||||
}
|
||||
@ -0,0 +1,45 @@
|
||||
package com.zhgd.xmgl.modules.worker.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class EnterpriseDepartmentTeamTreeVo {
|
||||
/**
|
||||
* 唯一id
|
||||
*/
|
||||
@ApiModelProperty("唯一id")
|
||||
private String uniqueId;
|
||||
/**
|
||||
* parentId
|
||||
*/
|
||||
@ApiModelProperty("parentId")
|
||||
private String parentId;
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
@ApiModelProperty("名称")
|
||||
private String name;
|
||||
/**
|
||||
* 原始id
|
||||
*/
|
||||
@ApiModelProperty("原始id")
|
||||
private String originalId;
|
||||
/**
|
||||
* 类型名称
|
||||
*/
|
||||
@ApiModelProperty("类型名称")
|
||||
private String typeName;
|
||||
/**
|
||||
* 1单位2部门3班组
|
||||
*/
|
||||
@ApiModelProperty("1单位2部门3班组")
|
||||
private Integer category;
|
||||
/**
|
||||
* children
|
||||
*/
|
||||
@ApiModelProperty("children")
|
||||
private List<EnterpriseDepartmentTeamTreeVo> children;
|
||||
}
|
||||
@ -1,7 +1,12 @@
|
||||
package com.zhgd.xmgl.modules.worker.entity.vo;
|
||||
|
||||
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class EnterpriseInfoVo {
|
||||
public class EnterpriseInfoVo extends EnterpriseInfo {
|
||||
private List<EnterpriseInfoVo> children;
|
||||
private String enterpriseId;
|
||||
}
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package com.zhgd.xmgl.modules.worker.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class WorkerDailyAttendancesByDateVo extends WorkerDailyAttendanceStatisticsV2Vo {
|
||||
/**
|
||||
* 进场打卡(首次)
|
||||
*/
|
||||
@ApiModelProperty(value = "进场打卡(首次)")
|
||||
private String firstInTime;
|
||||
/**
|
||||
* 出场打卡(末次)
|
||||
*/
|
||||
@ApiModelProperty(value = "出场打卡(末次)")
|
||||
private String endOutTime;
|
||||
/**
|
||||
* 上午打卡(首次)
|
||||
*/
|
||||
@ApiModelProperty(value = "上午打卡(首次)")
|
||||
private String firstTimeAm;
|
||||
/**
|
||||
* 下午打卡(未次)
|
||||
*/
|
||||
@ApiModelProperty(value = "下午打卡(未次)")
|
||||
private String endTimePm;
|
||||
}
|
||||
@ -11,7 +11,7 @@
|
||||
,en.enterprise_name
|
||||
,if(a.person_type=1,b.team_name,c.department_name) as dept_name
|
||||
from worker_daily_attendance_statistics_v2 t
|
||||
LEFT JOIN worker_info a on t.person_sn=a.person_sn
|
||||
JOIN worker_info a on t.person_sn=a.person_sn
|
||||
LEFT JOIN team_info b ON a.team_id = b.id and a.person_type = 1
|
||||
LEFT JOIN department_info c ON a.department_id = c.id and a.person_type = 2
|
||||
LEFT JOIN worker_type wt ON b.worker_type_id = wt.id and a.person_type = 1
|
||||
|
||||
@ -257,6 +257,12 @@
|
||||
<if test="param.workerInfos != null and param.workerInfos != ''">
|
||||
and FIND_IN_SET(a.id, #{param.workerInfos})
|
||||
</if>
|
||||
<if test="param.addTime_begin != null and param.addTime_begin != ''">
|
||||
and a.add_time >= #{param.addTime_begin}
|
||||
</if>
|
||||
<if test="param.addTime_end != null and param.addTime_end != ''">
|
||||
and a.add_time <= CONCAT(DATE_FORMAT(#{param.addTime_end}, '%Y-%m-%d'), ' 23:59:59')
|
||||
</if>
|
||||
<choose>
|
||||
<when test="param.orderBy == '1'.toString()">
|
||||
order by a.exit_date desc
|
||||
|
||||
@ -9,6 +9,7 @@ import com.zhgd.jeecg.common.mybatis.EntityMap;
|
||||
import com.zhgd.xmgl.base.CompanyVo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.SjEnterpriseInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.EnterpriseInfoVo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.StatsEnterpriseWeekVo;
|
||||
|
||||
import java.util.List;
|
||||
@ -23,11 +24,14 @@ import java.util.Map;
|
||||
public interface IEnterpriseInfoService extends IService<EnterpriseInfo> {
|
||||
/**
|
||||
* 列表查询劳务公司信息
|
||||
*
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
List<EntityMap> getEnterpriseInfoList(Map<String, Object> map);
|
||||
|
||||
List<EnterpriseInfoVo> getEnterpriseInfos(Map<String, Object> map);
|
||||
|
||||
/**
|
||||
* 添加劳务公司信息
|
||||
* @param enterpriseInfo
|
||||
|
||||
@ -76,12 +76,13 @@ public interface IWorkerDailyAttendanceStatisticsV2Service extends IService<Work
|
||||
*
|
||||
* @param projectSn
|
||||
* @param personSn
|
||||
* @param inserviceType
|
||||
* @param date
|
||||
* @param ruleV2
|
||||
* @param attendances
|
||||
* @param allAttendances
|
||||
*/
|
||||
void calAndSaveStatistics(String projectSn, String personSn, DateTime date, WorkerAttendanceRuleV2 ruleV2, List<CalAttendanceBo> attendances, List<CalAttendanceBo> allAttendances);
|
||||
void calAndSaveStatistics(String projectSn, String personSn, Integer inserviceType, DateTime date, WorkerAttendanceRuleV2 ruleV2, List<CalAttendanceBo> attendances, List<CalAttendanceBo> allAttendances);
|
||||
|
||||
/**
|
||||
* 重新统计考勤
|
||||
|
||||
@ -42,6 +42,7 @@ import com.zhgd.xmgl.modules.quality.enums.QualityInspectionRecordStatusEnum;
|
||||
import com.zhgd.xmgl.modules.quality.service.IQualityInspectionRecordService;
|
||||
import com.zhgd.xmgl.modules.quality.service.IQualityRegionService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.*;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.EnterpriseInfoVo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.StatsEnterpriseWeekVo;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.DepartmentInfoMapper;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper;
|
||||
@ -190,6 +191,12 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl<EnterpriseInfoMapper,
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EnterpriseInfoVo> getEnterpriseInfos(Map<String, Object> map) {
|
||||
List<EntityMap> enterpriseInfoList = getEnterpriseInfoList(map);
|
||||
return BeanUtil.copyToList(enterpriseInfoList, EnterpriseInfoVo.class);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<EntityMap> getSupplierEnterprises(Map<String, Object> map) {
|
||||
|
||||
@ -188,7 +188,7 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calAndSaveStatistics(String projectSn, String personSn, DateTime date, WorkerAttendanceRuleV2 ruleV2, List<CalAttendanceBo> attendances, List<CalAttendanceBo> allAttendances) {
|
||||
public void calAndSaveStatistics(String projectSn, String personSn, Integer inserviceType, DateTime date, WorkerAttendanceRuleV2 ruleV2, List<CalAttendanceBo> attendances, List<CalAttendanceBo> allAttendances) {
|
||||
attendances = attendances.stream().filter(o -> Objects.equals(o.getPersonSn(), personSn) &&
|
||||
(DateUtil.isSameDay(DateUtil.offsetDay(date, -1), o.getDate())
|
||||
|| DateUtil.isSameDay(date, o.getDate())
|
||||
@ -209,6 +209,7 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
|
||||
hour = getCalHour(personSn, date, ruleV2, attendances, allAttendances, null, null);
|
||||
}
|
||||
sta.setHourVal(hour);
|
||||
sta.setInserviceType(inserviceType);
|
||||
|
||||
//2.计算工日
|
||||
BigDecimal day = null;
|
||||
@ -428,7 +429,6 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
|
||||
String projectSn = MapUtils.getString(map, "projectSn");
|
||||
List<WorkerInfo> workerInfos = workerInfoService.list(new LambdaQueryWrapper<WorkerInfo>()
|
||||
.eq(WorkerInfo::getProjectSn, projectSn)
|
||||
.eq(WorkerInfo::getInserviceType, 1)
|
||||
);
|
||||
Map<Long, WorkerAttendanceRuleV2> groupToRuleMap = workerAttendanceRuleV2Service.list(new LambdaQueryWrapper<WorkerAttendanceRuleV2>().eq(WorkerAttendanceRuleV2::getProjectSn, projectSn))
|
||||
.stream().collect(Collectors.toMap(WorkerAttendanceRuleV2::getGroupV2Id, Function.identity(), (o1, o2) -> o1));
|
||||
@ -450,7 +450,7 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
|
||||
for (DateTime dateTime : range) {
|
||||
for (WorkerInfo worker : workerInfos) {
|
||||
WorkerAttendanceRuleV2 ruleV2 = Optional.ofNullable(worker.getAttendanceGroupV2Id()).map(groupToRuleMap::get).orElse(null);
|
||||
this.calAndSaveStatistics(worker.getProjectSn(), worker.getPersonSn(), dateTime, ruleV2, attendances, allAttendances);
|
||||
this.calAndSaveStatistics(worker.getProjectSn(), worker.getPersonSn(), worker.getInserviceType(), dateTime, ruleV2, attendances, allAttendances);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user