diff --git a/src/main/java/com/weaver/seconddev/attend/controller/AttendanceSchedulingController.java b/src/main/java/com/weaver/seconddev/attend/controller/AttendanceSchedulingController.java index 5666caa..8987427 100644 --- a/src/main/java/com/weaver/seconddev/attend/controller/AttendanceSchedulingController.java +++ b/src/main/java/com/weaver/seconddev/attend/controller/AttendanceSchedulingController.java @@ -48,6 +48,11 @@ public class AttendanceSchedulingController { return attendanceSchedulingService.createFlowV2(params); } + @PostMapping("/createSummaryApprovalFlow") + private WeaResult createSummaryApprovalFlow(@RequestBody Map params) throws UnsupportedEncodingException { + return attendanceSchedulingService.createSummaryApprovalFlow(params); + } + @PostMapping("/updateAttendStatus") private WeaResult> updateAttendStatus(@RequestBody Map params) throws UnsupportedEncodingException { return attendanceSchedulingService.updateAttendStatus(params); diff --git a/src/main/java/com/weaver/seconddev/attend/entity/param/SummaryApprovalParam.java b/src/main/java/com/weaver/seconddev/attend/entity/param/SummaryApprovalParam.java new file mode 100644 index 0000000..d488fbf --- /dev/null +++ b/src/main/java/com/weaver/seconddev/attend/entity/param/SummaryApprovalParam.java @@ -0,0 +1,22 @@ +package com.weaver.seconddev.attend.entity.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author:dxfeng + * @createTime: 2025/06/13 + * @version: 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class SummaryApprovalParam { + private String fieldName; + private String fieldKey; + private Long fieldId; + private String rowKey; +} diff --git a/src/main/java/com/weaver/seconddev/attend/service/AttendanceSchedulingService.java b/src/main/java/com/weaver/seconddev/attend/service/AttendanceSchedulingService.java index 795ed3f..39d1588 100644 --- a/src/main/java/com/weaver/seconddev/attend/service/AttendanceSchedulingService.java +++ b/src/main/java/com/weaver/seconddev/attend/service/AttendanceSchedulingService.java @@ -28,5 +28,8 @@ public interface AttendanceSchedulingService { String saveSheet(Map header,Map body); + WeaResult createSummaryApprovalFlow(Map params) throws UnsupportedEncodingException; + + } diff --git a/src/main/java/com/weaver/seconddev/attend/service/impl/AttendanceSchedulingServiceImpl.java b/src/main/java/com/weaver/seconddev/attend/service/impl/AttendanceSchedulingServiceImpl.java index cfe6e2c..2271d4c 100644 --- a/src/main/java/com/weaver/seconddev/attend/service/impl/AttendanceSchedulingServiceImpl.java +++ b/src/main/java/com/weaver/seconddev/attend/service/impl/AttendanceSchedulingServiceImpl.java @@ -11,10 +11,12 @@ import com.weaver.common.batch.excel.ExcelUtil; import com.weaver.common.batch.excel.RowData; import com.weaver.common.form.dto.data.FormDataDetailDto; import com.weaver.common.form.dto.data.FormDataDto; +import com.weaver.common.form.dto.data.FormDataDtoParam; import com.weaver.common.form.dto.data.FormDataOptionDto; import com.weaver.common.form.metadata.ModuleSource; import com.weaver.common.hrm.dao.HrmCommonEmployeeDao; import com.weaver.framework.rpc.annotation.RpcReference; +import com.weaver.seconddev.attend.entity.param.SummaryApprovalParam; import com.weaver.seconddev.attend.entity.po.SchedulingStatusPo; import com.weaver.seconddev.attend.mapper.AttendanceSchedulingMapper; import com.weaver.seconddev.attend.mapper.SchedulingStatusMapper; @@ -451,12 +453,12 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ if (StringUtils.isNotBlank(workCode) && !"-".equals(workCode)) { List byJobNums = hrmCommonEmployeeDao.getByJobNums(Collections.singletonList(workCode), tenantKey); if (CollectionUtils.isEmpty(byJobNums)) { - WeaResult fail = WeaResult.fail("第" + i + "行未查询到对应人员,工号[" + workCode + "]"); + WeaResult fail = WeaResult.fail("第" + (i + 1) + "行未查询到对应人员,工号[" + workCode + "]"); return JSON.toJSONString(fail); } if (byJobNums.size() > 1) { - WeaResult fail = WeaResult.fail("第" + i + "行工号不唯一,工号[" + workCode + "]"); + WeaResult fail = WeaResult.fail("第" + (i + 1) + "行工号不唯一,工号[" + workCode + "]"); return JSON.toJSONString(fail); } SimpleEmployee simpleEmployee = byJobNums.get(0); @@ -464,12 +466,12 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ } else { List byUserNames = hrmCommonEmployeeDao.getByUserNames(Collections.singletonList(empName), tenantKey); if (CollectionUtils.isEmpty(byUserNames)) { - WeaResult fail = WeaResult.fail("第" + i + "行未查询到对应人员,人员[" + empName + "]"); + WeaResult fail = WeaResult.fail("第" + (i + 1) + "行未查询到对应人员,人员[" + empName + "]"); return JSON.toJSONString(fail); } if (byUserNames.size() > 1) { - WeaResult fail = WeaResult.fail("第" + i + "行人员不唯一,人员[" + empName + "]"); + WeaResult fail = WeaResult.fail("第" + (i + 1) + "行人员不唯一,人员[" + empName + "]"); return JSON.toJSONString(fail); } SimpleEmployee simpleEmployee = byUserNames.get(0); @@ -480,10 +482,10 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ SchedulingStatusPo schedulingStatus = schedulingStatusMapper.getByCondition(tenantKey, employeeId, month); if (schedulingStatus != null) { if ("1".equals(schedulingStatus.getStatus())) { - WeaResult fail = WeaResult.fail("第" + i + "行排班审核中,无法修改"); + WeaResult fail = WeaResult.fail("第" + (i + 1) + "行排班审核中,无法修改"); return JSON.toJSONString(fail); } else if ("2".equals(schedulingStatus.getStatus())) { - WeaResult fail = WeaResult.fail("第" + i + "行排班已审核,无法修改"); + WeaResult fail = WeaResult.fail("第" + (i + 1) + "行排班已审核,无法修改"); return JSON.toJSONString(fail); } } @@ -501,4 +503,133 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ return JSON.toJSONString(resultObj); } + + @Override + public WeaResult createSummaryApprovalFlow(Map params) throws UnsupportedEncodingException { + String workflowId = params.get("workflowId"); + String formId = params.get("formId"); + String detailData = params.get("detailData"); + String month = params.get("month"); + + WfcRequestOperateParamDataEntity wfcRequestOperateParamDataEntity = new WfcRequestOperateParamDataEntity(); + wfcRequestOperateParamDataEntity.setWorkflowId(Long.parseLong(workflowId)); + Map mainFieldsMap = new HashMap<>(); + // 考勤月份 + mainFieldsMap.put("kqyf", "1144947056082575373"); + + List summaryApprovalParams = new ArrayList<>(); + summaryApprovalParams.add(new SummaryApprovalParam("姓名", "xm", 1144947283791339524L, "empId")); + summaryApprovalParams.add(new SummaryApprovalParam("工号", "gh", 1144947283791339526L, "jobNum")); + summaryApprovalParams.add(new SummaryApprovalParam("分部", "fb", 1144947532958162959L, "subcompanyId")); + summaryApprovalParams.add(new SummaryApprovalParam("部门", "bm", 1144947532958162960L, "deptId")); + summaryApprovalParams.add(new SummaryApprovalParam("岗位", "gw", 1144947532958162961L, "positionId")); + summaryApprovalParams.add(new SummaryApprovalParam("安全级别", "aqjb", 1144947532958162962L, "seclevel")); + summaryApprovalParams.add(new SummaryApprovalParam("入职时间", "rzsj", 1144947532958162963L, "workdate")); + summaryApprovalParams.add(new SummaryApprovalParam("应出勤工时", "ycqgs", 1144947988124033028L, "working")); + summaryApprovalParams.add(new SummaryApprovalParam("出勤工时", "cqgs", 1144947988124033029L, "actual")); + summaryApprovalParams.add(new SummaryApprovalParam("出勤天数(打卡)", "cqtsdk", 1144949061983297536L, "actualByTimecard")); + summaryApprovalParams.add(new SummaryApprovalParam("实际打卡工时", "sjdkgs", 1144949061983297537L, "actualWork")); + summaryApprovalParams.add(new SummaryApprovalParam("迟到工时", "cdgs", 1144949061983297538L, "lateLength")); + summaryApprovalParams.add(new SummaryApprovalParam("迟到次数", "cdcs", 1144949061983297539L, "lateNumOfMonth")); + summaryApprovalParams.add(new SummaryApprovalParam("严重迟到工时", "yzcdgs", 1144949061983297540L, "seriouslyLateLength")); + summaryApprovalParams.add(new SummaryApprovalParam("严重迟到次数", "yzcdcs", 1144949117608157195L, "seriousLateNumOfMonth")); + summaryApprovalParams.add(new SummaryApprovalParam("早退工时", "ztgs", 1144949117608157196L, "earlyOutLength")); + summaryApprovalParams.add(new SummaryApprovalParam("早退次数", "ztcs", 1144949117608157197L, "leaveEarlyNumOfMonth")); + summaryApprovalParams.add(new SummaryApprovalParam("严重早退工时", "yzztgs", 1144949117608157198L, "seriouslyEarlyLength")); + summaryApprovalParams.add(new SummaryApprovalParam("严重早退次数", "yzztcs", 1144949117608157199L, "seriousEarlyNumOfMonth")); + summaryApprovalParams.add(new SummaryApprovalParam("未出勤工时", "wcqgs", 1144949491362586625L, "lostLength")); + summaryApprovalParams.add(new SummaryApprovalParam("旷工工时", "kggs", 1144949491362586626L, "absenteeismLength")); + summaryApprovalParams.add(new SummaryApprovalParam("旷工次数", "kgcs", 1144949491362586627L, "absentNumOfMonth")); + summaryApprovalParams.add(new SummaryApprovalParam("签到次数", "qdcs", 1144949491362586628L, "SIGN_IN_RECORD")); + summaryApprovalParams.add(new SummaryApprovalParam("签退次数", "qtcs", 1144949491362586629L, "SIGN_OUT_RECORD")); + summaryApprovalParams.add(new SummaryApprovalParam("外勤次数", "wqcs", 1144949641652887553L, "oAttendNum")); + summaryApprovalParams.add(new SummaryApprovalParam("外勤时长", "wqsz", 1144949641652887554L, "oAttendLength")); + summaryApprovalParams.add(new SummaryApprovalParam("工作日出差", "gzrcc", 1144949641652887555L, "bTnormal")); + summaryApprovalParams.add(new SummaryApprovalParam("周末出差", "zmcc", 1144949641652887556L, "bTweekend")); + summaryApprovalParams.add(new SummaryApprovalParam("节假日出差", "jjrcc", 1144949641652887557L, "bTholiday")); + summaryApprovalParams.add(new SummaryApprovalParam("工作日公出", "gzrgc", 1144949744774045697L, "oSnormal")); + summaryApprovalParams.add(new SummaryApprovalParam("周末公出", "zmgc", 1144949744774045698L, "oSweekend")); + summaryApprovalParams.add(new SummaryApprovalParam("节假日公出", "jjrgc", 1144949744774045699L, "oSholiday")); + summaryApprovalParams.add(new SummaryApprovalParam("事假", "sj", 1144949744774045700L, "leaveHour8443762179122157788")); + summaryApprovalParams.add(new SummaryApprovalParam("丧假", "sj1", 1144949744774045701L, "leaveHour8443762179149957809")); + summaryApprovalParams.add(new SummaryApprovalParam("产假", "cj", 1144950285931536385L, "leaveHour8443762179149957807")); + summaryApprovalParams.add(new SummaryApprovalParam("婚假", "hj", 1144950285931536386L, "leaveHour8443762179149957805")); + summaryApprovalParams.add(new SummaryApprovalParam("调休", "dx", 1144950285931536387L, "leaveHour8443762179149457801")); + summaryApprovalParams.add(new SummaryApprovalParam("病假", "bj", 1144950285931536388L, "leaveHour8443762179149457799")); + summaryApprovalParams.add(new SummaryApprovalParam("年休假", "nxj", 1144950285931536389L, "leaveHour8443762179122457790")); + summaryApprovalParams.add(new SummaryApprovalParam("陪产假", "pcj", 1144950363299667978L, "leaveHour1127871967101444097")); + summaryApprovalParams.add(new SummaryApprovalParam("计生假", "jsj", 1144950363299667979L, "leaveHour1127872057295757312")); + summaryApprovalParams.add(new SummaryApprovalParam("哺乳假", "brj", 1144950363299667980L, "leaveHour1127872117173641218")); + summaryApprovalParams.add(new SummaryApprovalParam("探亲假", "tqj", 1144950363299667981L, "leaveHour1127872194575327234")); + summaryApprovalParams.add(new SummaryApprovalParam("工伤假", "gsj", 1144950363299667982L, "leaveHour1127872289131716608")); + summaryApprovalParams.add(new SummaryApprovalParam("育儿假", "yej", 1144950461924532226L, "leaveHour1127873989888434176")); + summaryApprovalParams.add(new SummaryApprovalParam("赡养费", "syj", 1144950461924532227L, "leaveHour1127874024155897865")); + summaryApprovalParams.add(new SummaryApprovalParam("工作日加班(不关联调休)", "gzrjbbgldx", 1144950461924532228L, "nlieu_normal")); + summaryApprovalParams.add(new SummaryApprovalParam("双休日加班(不关联调休)", "sxrjbbgldx", 1144950461924532229L, "nlieu_weekend")); + summaryApprovalParams.add(new SummaryApprovalParam("节假日加班(不关联调休)", "jjrjbbgldx", 1144950461924532230L, "nlieu_holiday")); + summaryApprovalParams.add(new SummaryApprovalParam("工作日加班(关联调休)", "gzrjbgldx", 1144950543713460224L, "lieu_normal")); + summaryApprovalParams.add(new SummaryApprovalParam("双休日加班(关联调休)", "sxrjbgldx", 1144950543713460225L, "lieu_weekend")); + summaryApprovalParams.add(new SummaryApprovalParam("节假日加班(关联调休)", "jjrjbgldx", 1144950543713460226L, "lieu_holiday")); + summaryApprovalParams.add(new SummaryApprovalParam("未签到次数", "wqdcs", 1144950543713460227L, "absenseNumOfMonth")); + summaryApprovalParams.add(new SummaryApprovalParam("未签退次数", "wqtcs", 1144950543713460228L, "unSignOutNumOfMonth")); + summaryApprovalParams.add(new SummaryApprovalParam("未打卡次数", "wdkcs", 1144950818599755777L, "unSignNum")); + + + //表单字段集合 + List formDataDetailDtos = new ArrayList<>(); + + // 构建主表字段 + FormDataDetailDto monthDetailDto = new FormDataDetailDto(); + monthDetailDto.setFieldId(Long.valueOf(mainFieldsMap.get("kqyf"))); + monthDetailDto.setContent(month); + formDataDetailDtos.add(monthDetailDto); + + // 构建明细表数据 + String decode = URLDecoder.decode(detailData, "UTF-8"); + User currentUser = UserContext.getCurrentUser(); + + JSONArray detailDataArray = JSON.parseArray(decode); + for (int rorIndex = 0; rorIndex < detailDataArray.size(); rorIndex++) { + int rowNum = rorIndex + 1; + JSONObject detailRow = detailDataArray.getJSONObject(rorIndex); + + for (SummaryApprovalParam param : summaryApprovalParams) { + String content = detailRow.getString(param.getRowKey()); + if (StringUtils.isBlank(content)) { + // 如果为空,置为null + content = null; + } + FormDataDetailDto detailDto = new FormDataDetailDto(); + detailDto.setFieldId(param.getFieldId()); + detailDto.setDataIndex((long) rowNum); + detailDto.setContent(content); + formDataDetailDtos.add(detailDto); + } + + log.error("formDataDetailDtos==" + JSON.toJSONString(formDataDetailDtos)); + + } + + if (CollectionUtils.isEmpty(formDataDetailDtos)) { + return WeaResult.fail("请选择数据后进行提交"); + } + + + //表单数据 + FormDataDto formDataDto = new FormDataDto(); + formDataDto.setFormId(Long.valueOf(formId)); + formDataDto.setDataDetails(formDataDetailDtos); + + FormDataDtoParam formDataDtoParam = new FormDataDtoParam(); + formDataDtoParam.setFormDataDtos(Collections.singletonList(formDataDto)); + formDataDtoParam.setFormId(Long.valueOf(formId)); + + WeaResult flow = + wfcRequestOperateRest.createFlowV2(wfcRequestOperateParamDataEntity, UserContext.getCurrentUser(), formDataDtoParam); + + //WeaResult flow = + // wfcRequestOperateRest.createFlow(wfcRequestOperateParamDataEntity, UserContext.getCurrentUser(), formDataDto); + return flow; + + } }