From 5a4e6af0a04c7c1384217a4f513ed3d3d16ee3f0 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 31 Jul 2024 18:00:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4-=E8=80=83=E5=8B=A4=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=B5=81=E7=A8=8B=EF=BC=8C=E6=89=B9=E5=87=86=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E8=A7=A6=E5=8F=91=E8=80=83=E5=8B=A4=E5=91=A8=E6=9C=9F?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E7=BB=93=E8=B4=A6=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmd/GetKqCycleCheckoutInfoCmd.java | 149 ++++++++++++++++++ .../service/AttendanceCycleService.java | 8 + .../impl/AttendanceCycleServiceImpl.java | 19 +++ .../action/AllowanceConfirmApproveAction.java | 117 ++++++++++++++ ...a => AllowanceConfirmArchivingAction.java} | 18 +-- .../workflow/action/EvctionCheckAction.java | 2 +- .../action/EvectionApproveAction.java | 93 +++++++++++ .../action/MakeUpClockApproveAction.java | 95 +++++++++++ .../action/OvertimePlanApproveAction.java | 95 +++++++++++ .../RevokeAskForLeaveApproveAction.java | 79 ++++++++++ .../action/RevokeEvctionApproveAction.java | 79 ++++++++++ ...BatchAskForLeaveWorkFlowApproveAction.java | 87 ++++++++++ 12 files changed, 831 insertions(+), 10 deletions(-) create mode 100644 src/com/engine/jucailinkq/attendance/component/AttendanceCycle/cmd/GetKqCycleCheckoutInfoCmd.java create mode 100644 src/com/engine/jucailinkq/attendance/component/AttendanceCycle/service/AttendanceCycleService.java create mode 100644 src/com/engine/jucailinkq/attendance/component/AttendanceCycle/service/impl/AttendanceCycleServiceImpl.java create mode 100644 src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmApproveAction.java rename src/com/engine/jucailinkq/attendance/workflow/action/{AllowanceConfirmAction.java => AllowanceConfirmArchivingAction.java} (85%) create mode 100644 src/com/engine/jucailinkq/attendance/workflow/action/EvectionApproveAction.java create mode 100644 src/com/engine/jucailinkq/attendance/workflow/action/MakeUpClockApproveAction.java create mode 100644 src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanApproveAction.java create mode 100644 src/com/engine/jucailinkq/attendance/workflow/action/RevokeAskForLeaveApproveAction.java create mode 100644 src/com/engine/jucailinkq/attendance/workflow/action/RevokeEvctionApproveAction.java create mode 100644 src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowApproveAction.java diff --git a/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/cmd/GetKqCycleCheckoutInfoCmd.java b/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/cmd/GetKqCycleCheckoutInfoCmd.java new file mode 100644 index 0000000..237fa34 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/cmd/GetKqCycleCheckoutInfoCmd.java @@ -0,0 +1,149 @@ +package com.engine.jucailinkq.attendance.component.AttendanceCycle.cmd; + +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; +import com.engine.jucailinkq.common.util.DbTools; +import com.engine.jucailinkq.common.util.Utils; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.hrm.company.DepartmentComInfo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 获取人员、日期范围内考勤周期的结账情况 + */ +@Slf4j +public class GetKqCycleCheckoutInfoCmd extends AbstractCommonCommand> { + + public GetKqCycleCheckoutInfoCmd(Map params){ + this.params = params; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + @Override + public Map execute(CommandContext commandContext) { + String userId = Util.null2String(params.get("userId")); + List> submitDataList = (List>)params.get("submitDataList"); + String submitStr = Util.null2String(params.get("submitStr")); + //提交日期 + String submitDate = Util.null2String(params.get("submitDate")); + + Map resultMap = Maps.newHashMap(); + resultMap.put("status",true); + Set yearSet = Sets.newHashSet(); + for (Map map : submitDataList){ + yearSet.add(map.get(submitStr).toString().split("-")[0]); + } + + log.debug("GetKqCycleCheckoutInfoCmd userId:[{}],submitDateList:[{}],submitStr:[{}]",userId,submitDataList,submitStr); + String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqzqmc"); + + Set attendanceSetIdsSets = CommonUtil.getDataIds(userId,modeId,null,null); + log.debug("attendanceSetIdsSets : {}",attendanceSetIdsSets); + if (attendanceSetIdsSets.size() == 0){ + //取默认周期 + String sql = "select id from uf_jcl_kq_kqzqmc where mrzq=1"; + List> dataList = DbTools.getSqlToList(sql); + if (dataList.size() > 0){ + attendanceSetIdsSets.add(dataList.get(0).get("id").toString()); + } + } + + String sql = "select id,departmentid,subcompanyid1 from hrmresource where id =?"; + Map departMentMap = DbTools.getSqlToMap(sql,userId); + String deptid = Util.null2String(departMentMap.get("departmentid")); + String pdeptids = ""; + List> checkoutList = Lists.newArrayList(); + List nocycleList = Lists.newArrayList(); + List> dataList = Lists.newArrayList(); + + try { + pdeptids = DepartmentComInfo.getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids); + pdeptids = deptid + pdeptids; + log.debug("pdeptids : [{}]",pdeptids); + + sql = "select a.zt,a.ksrq,a.jsrq,a.gzrq,a.gzsj,b.zt dtzt,b.tsbm,b.gzrq dtgzrq,b.gzsj dtgzsj from uf_jcl_kq_kqzq a left join uf_jcl_kq_kqzq_dt1 b on a.id=b.mainid where a.mc=? and a.nd in ("+String.join(",",yearSet)+")"; + if (attendanceSetIdsSets.toArray().length == 0){ + resultMap.put("status",false); + return resultMap; + } + List> list = DbTools.getSqlToList(sql,attendanceSetIdsSets.toArray()[0]); + log.debug("GetKqCycleCheckoutInfoCmd list : [{}]",list); + for (Map detailData:submitDataList){ + String ksrq = Util.null2String(detailData.get(submitStr)).split(" ")[0]; + List> cycleTime = list.stream().filter(e->DateUtil.getTime(e.get("ksrq").toString()).compareTo(DateUtil.getTime(ksrq)) <= 0 && + DateUtil.getTime(e.get("jsrq").toString()).compareTo(DateUtil.getTime(ksrq)) >=0).collect(Collectors.toList()); + log.debug("数据业务日期:[{}],周期数据:[{}]",ksrq,cycleTime); + if (cycleTime.size() > 0){ + Map date = Maps.newHashMap(); + date.put("startDate",cycleTime.get(0).get("ksrq")); + date.put("endDate",cycleTime.get(0).get("jsrq")); + dataList.add(date); + + //0:待关账 1:已关账,2:已结账 + String zt = Util.null2String(cycleTime.get(0).get("zt")); + String gzrq = Util.null2String(cycleTime.get(0).get("gzrq")); + String gzsj = Util.null2String(cycleTime.get(0).get("gzsj")); + + String tsbm = Util.null2String(cycleTime.get(0).get("tsbm")); + String dtzt = Util.null2String(cycleTime.get(0).get("dtzt")); + String dtgzrq = Util.null2String(cycleTime.get(0).get("dtgzrq")); + String dtgzsj = Util.null2String(cycleTime.get(0).get("dtgzsj")); + + if ("2".equals(zt)){ + //数据已关账或提交日期大于关账时间 + checkoutList.add(new HashMap(){{ + put("rq",detailData.get(submitStr)); + put("cycle",cycleTime); + }}); + } + +// if (!"".equals(tsbm) && CommonUtil.ifContainStr(pdeptids,tsbm,",")){ +// //人员在特殊部门里 +// if ("2".equals(dtzt)){ +// //处于关账状态或提交日期大于关账时间 +// checkoutList.add(new HashMap(){{ +// put("rq",detailData.get(submitStr)); +// put("cycle",cycleTime); +// }}); +// } +// }else { +// if ("2".equals(zt)){ +// //数据已关账或提交日期大于关账时间 +// checkoutList.add(new HashMap(){{ +// put("rq",detailData.get(submitStr)); +// put("cycle",cycleTime); +// }}); +// } +// } + }else { + nocycleList.add(detailData.get(submitStr).toString()); + } + } + }catch (Exception e){ + log.error("catch error :{}",e); + } + log.debug("GetKqCycleCheckoutInfoCmd checkoutList : [{}]",checkoutList); + log.debug("GetKqCycleCheckoutInfoCmd nocycleList : [{}]",nocycleList); + + resultMap.put("checkoutList",checkoutList); + resultMap.put("nocycleList",nocycleList); + resultMap.put("dataList",dataList); + return resultMap; + } +} diff --git a/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/service/AttendanceCycleService.java b/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/service/AttendanceCycleService.java new file mode 100644 index 0000000..9718d87 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/service/AttendanceCycleService.java @@ -0,0 +1,8 @@ +package com.engine.jucailinkq.attendance.component.AttendanceCycle.service; + +import java.util.Map; + +public interface AttendanceCycleService { + + Map getKqCycleCheckoutInfoCmd(Map params); +} diff --git a/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/service/impl/AttendanceCycleServiceImpl.java b/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/service/impl/AttendanceCycleServiceImpl.java new file mode 100644 index 0000000..ba4378f --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/service/impl/AttendanceCycleServiceImpl.java @@ -0,0 +1,19 @@ +package com.engine.jucailinkq.attendance.component.AttendanceCycle.service.impl; + +import com.engine.core.impl.Service; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.cmd.GetKqCycleCheckoutInfoCmd; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.AttendanceCycleService; + +import java.util.Map; + +/** + * @Author: sy + * @Description: 考勤周期相关功能实现类 + * @Date: 2024/7/31 + **/ +public class AttendanceCycleServiceImpl extends Service implements AttendanceCycleService { + @Override + public Map getKqCycleCheckoutInfoCmd(Map params) { + return commandExecutor.execute(new GetKqCycleCheckoutInfoCmd(params)); + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmApproveAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmApproveAction.java new file mode 100644 index 0000000..66f6a61 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmApproveAction.java @@ -0,0 +1,117 @@ +package com.engine.jucailinkq.attendance.workflow.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.AttendanceCycleService; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.impl.AttendanceCycleServiceImpl; +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; +import com.engine.jucailinkq.common.util.DbTools; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import weaver.general.Util; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Cell; +import weaver.soa.workflow.request.DetailTable; +import weaver.soa.workflow.request.RequestInfo; +import weaver.soa.workflow.request.Row; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author: sy + * @Description: 津贴确认流程,批准节点action + * @Date: 2024/7/25 + **/ +@Slf4j +public class AllowanceConfirmApproveAction implements Action { + + private AttendanceCycleService getAttendanceCycleService = ServiceUtil.getService(AttendanceCycleServiceImpl.class); + + @Override + public String execute(RequestInfo requestInfo) { + log.info("AllowanceConfirmApproveAction,do action on request:" + requestInfo.getRequestid()); + String requestid = requestInfo.getRequestid(); + try { + + // 流程表单主表数据 + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); + String qrr = mainTableData.get("xjr"); + List jtIdList = new ArrayList<>(); + List ztUpdateList = new ArrayList<>(); + + // 流程表单明细表数据 + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0); + log.info("detailTableData:" + detailTableData); + //收集明细表中津贴数据id + jtIdList = detailTableData.stream().map(e->Util.null2String(e.get("jtid"))).collect(Collectors.toList()); + if (jtIdList.size() > 0) { + //遍历比较哪些津贴数据的状态改变了,并将状态发生改变的津贴数据认定为要更新出勤结果数据状态的津贴数据 + String jtSql = "select id, zt from uf_jcl_kq_cqjt where id in (" + String.join(",", jtIdList) + ")"; + List> jtDataList = DbTools.getSqlToList(jtSql); + Map jtStatusMap = jtDataList.stream().collect(Collectors.toMap(e->Util.null2String(e.get("id")), e->Util.null2String(e.get("zt")))); + detailTableData.forEach(f -> { + if (StringUtils.isNotBlank(f.get("jtid"))) { + //收集需要更改出勤结果数据状态的人员、日期信息 + if (!jtStatusMap.getOrDefault(f.get("jtid"), "").equals(Util.null2String(f.get("zt")))) { + ztUpdateList.add(f.get("jtid")); + } + } + }); + } + log.info("ztUpdateList_size:" + ztUpdateList.size()); + if (ztUpdateList.size() > 0) { + /** + * 考勤周期检查 + */ + Map params = Maps.newHashMap(); + params.put("userId",qrr); + params.put("submitDate", DateUtil.getCurrentDate()); + params.put("submitStr","rq"); + //筛选出津贴状态发生变化的明细数据 + detailTableData = detailTableData.stream().filter(e -> ztUpdateList.contains(e.get("jtid"))).collect(Collectors.toList()); + params.put("submitDataList",detailTableData); + log.info("params:" + params); + Map dataMap = getAttendanceCycleService.getKqCycleCheckoutInfoCmd(params); + log.info("dataMap:" + dataMap); + List> checkoutList = (List>)dataMap.get("checkoutList"); + List nocycleList = (List)dataMap.get("nocycleList"); + + boolean status = (boolean)dataMap.get("status"); + if (!status){ + log.error("该人员没有考勤周期"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); + return Action.FAILURE_AND_CONTINUE; + } + if (checkoutList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (checkoutList.size() > 0){ + List list = checkoutList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已结账"; + } + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + log.info(message); + return Action.FAILURE_AND_CONTINUE; + } + } + + } catch (Exception e) { + log.debug("流程数据报错:AllowanceConfirmApproveAction:"); + StringWriter errorsWriter = new StringWriter(); + e.printStackTrace(new PrintWriter(errorsWriter)); + log.debug(errorsWriter.toString()); + requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222"); + requestInfo.getRequestManager().setMessagecontent("【津贴确认批准action】报错,请联系管理员!"); + return Action.FAILURE_AND_CONTINUE; + } + return SUCCESS; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmArchivingAction.java similarity index 85% rename from src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmAction.java rename to src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmArchivingAction.java index 3d9f659..a5b1594 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmAction.java +++ b/src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmArchivingAction.java @@ -22,11 +22,11 @@ import java.util.stream.Collectors; * @Date: 2024/7/25 **/ @Slf4j -public class AllowanceConfirmAction implements Action { +public class AllowanceConfirmArchivingAction implements Action { @Override public String execute(RequestInfo requestInfo) { - log.debug("AllowanceConfirmAction,do action on request:" + requestInfo.getRequestid()); + log.debug("AllowanceConfirmArchivingAction,do action on request:" + requestInfo.getRequestid()); String requestid = requestInfo.getRequestid(); try { @@ -36,7 +36,7 @@ public class AllowanceConfirmAction implements Action { List jtIdList = new ArrayList<>(); DetailTable[] detailTable = requestInfo.getDetailTableInfo().getDetailTable(); - log.debug("AllowanceConfirmAction detailTable : [{}], length : {}", Arrays.toString(detailTable), detailTable.length); + log.debug("AllowanceConfirmArchivingAction detailTable : [{}], length : {}", Arrays.toString(detailTable), detailTable.length); List> updateList = new ArrayList<>(); if (detailTable.length > 0) { for (DetailTable dt : detailTable) { @@ -49,7 +49,7 @@ public class AllowanceConfirmAction implements Action { for (Cell c : h) { //列 String name = Util.null2String(c.getName()); - log.debug("AllowanceConfirmAction key : {}, value : {}",c.getName(), c.getValue()); + log.debug("AllowanceConfirmArchivingAction key : {}, value : {}",c.getName(), c.getValue()); if ("zt".equals(name)) { itemMap.put("zt", Util.null2String(c.getValue())); } @@ -69,7 +69,7 @@ public class AllowanceConfirmAction implements Action { } } } - log.debug("AllowanceConfirmAction updateList : [{}]",updateList); + log.debug("AllowanceConfirmArchivingAction updateList : [{}]",updateList); //遍历比较哪些津贴数据的状态改变了,并将状态发生改变的津贴数据认定为要更新出勤结果数据状态的津贴数据 String jtSql = "select id, zt from uf_jcl_kq_cqjt where id in (" + String.join(",", jtIdList) + ")"; @@ -81,9 +81,9 @@ public class AllowanceConfirmAction implements Action { updateList.forEach(f -> { if (StringUtils.isNotBlank(f.get("jtid"))) { String sql = "update uf_jcl_kq_cqjt" +" set "+"zt=?,bz=? where id = ?"; - log.debug("AllowanceConfirmAction sql : [{}]",sql); + log.debug("AllowanceConfirmArchivingAction sql : [{}]",sql); DbTools.update(sql, Util.null2String(f.get("zt")), Util.null2String(f.get("sm")), f.get("jtid")); - log.debug("AllowanceConfirmAction zt : {}, bz : {}, jtid : {}",Util.null2String(f.get("zt")), Util.null2String(f.get("sm")), f.get("jtid")); + log.debug("AllowanceConfirmArchivingAction zt : {}, bz : {}, jtid : {}",Util.null2String(f.get("zt")), Util.null2String(f.get("sm")), f.get("jtid")); //收集需要更改出勤结果数据状态的人员、日期信息 if (!jtStatusMap.getOrDefault(f.get("jtid"), "").equals(Util.null2String(f.get("zt")))) { Map empDateItem = new HashMap<>(); @@ -105,12 +105,12 @@ public class AllowanceConfirmAction implements Action { } } catch (Exception e) { - log.debug("流程数据报错:AllowanceConfirmAction:"); + log.debug("流程数据报错:AllowanceConfirmArchivingAction:"); StringWriter errorsWriter = new StringWriter(); e.printStackTrace(new PrintWriter(errorsWriter)); log.debug(errorsWriter.toString()); requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222"); - requestInfo.getRequestManager().setMessagecontent("【津贴确认action】报错,请联系管理员!"); + requestInfo.getRequestManager().setMessagecontent("【津贴确认归档action】报错,请联系管理员!"); return Action.FAILURE_AND_CONTINUE; } return SUCCESS; diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/EvctionCheckAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/EvctionCheckAction.java index 7b51f08..cb75128 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/action/EvctionCheckAction.java +++ b/src/com/engine/jucailinkq/attendance/workflow/action/EvctionCheckAction.java @@ -33,7 +33,7 @@ public class EvctionCheckAction implements Action { //出差人员 String ccr = mainTableData.get("ccr"); try { - Map>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("bdkr")))); + Map>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("ccr")))); for (Map.Entry>> tableEntry :detailGroupMap.entrySet()){ List> detailGroupByUserList = tableEntry.getValue(); diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/EvectionApproveAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/EvectionApproveAction.java new file mode 100644 index 0000000..eeb5168 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/EvectionApproveAction.java @@ -0,0 +1,93 @@ +package com.engine.jucailinkq.attendance.workflow.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.AttendanceCycleService; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.impl.AttendanceCycleServiceImpl; +import com.engine.jucailinkq.attendance.workflow.service.MakeUpClockInService; +import com.engine.jucailinkq.attendance.workflow.service.impl.MakeUpClockInServiceImpl; +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 出差流程批准action + */ +@Slf4j +public class EvectionApproveAction implements Action { + private AttendanceCycleService getAttendanceCycleService = ServiceUtil.getService(AttendanceCycleServiceImpl.class); + + @Override + public String execute(RequestInfo requestInfo) { + String requestid = requestInfo.getRequestid(); + // 流程表单主表数据 + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); + // 流程表单明细表数据 + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0); + //出差人员 + String ccr = mainTableData.get("ccr"); + try { + Map>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("ccr")))); + + for (Map.Entry>> tableEntry :detailGroupMap.entrySet()){ + List> detailGroupByUserList = tableEntry.getValue(); + Map params = Maps.newHashMap(); + if ("".equals(tableEntry.getKey())){ + params.put("userId",ccr); + }else { + params.put("userId",tableEntry.getKey()); + } + params.put("submitDate",DateUtil.getCurrentDate()); + params.put("submitStr","ksrq"); + params.put("submitDataList",detailGroupByUserList); + + /** + * 考勤周期校验 + */ + if (detailGroupByUserList == null || detailGroupByUserList.size() == 0){ + log.error("明细表没有数据!"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("明细表没有数据!"); + return Action.FAILURE_AND_CONTINUE; + } + Map dataMap = getAttendanceCycleService.getKqCycleCheckoutInfoCmd(params); + List> checkoutList = (List>)dataMap.get("checkoutList"); + List nocycleList = (List)dataMap.get("nocycleList"); + List> dateList = (List>)dataMap.get("dataList"); + + boolean status = (boolean)dataMap.get("status"); + if (!status){ + log.error("该人员没有考勤周期"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); + return Action.FAILURE_AND_CONTINUE; + } + if (checkoutList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (checkoutList.size() > 0){ + List list = checkoutList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已结账"; + } + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } + } + }catch (Exception e){ + log.error("EvectionApproveAction error : [{}]",e); + return Action.FAILURE_AND_CONTINUE; + } + return Action.SUCCESS; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/MakeUpClockApproveAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/MakeUpClockApproveAction.java new file mode 100644 index 0000000..76a8e78 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/MakeUpClockApproveAction.java @@ -0,0 +1,95 @@ +package com.engine.jucailinkq.attendance.workflow.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.AttendanceCycleService; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.impl.AttendanceCycleServiceImpl; +import com.engine.jucailinkq.attendance.workflow.cmd.GetKqCycleTimeIntervalCmd; +import com.engine.jucailinkq.attendance.workflow.service.impl.MakeUpClockInServiceImpl; +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; +import com.engine.jucailinkq.common.util.DbTools; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 补打卡流程批准action + */ +@Slf4j +public class MakeUpClockApproveAction implements Action { + + private AttendanceCycleService getAttendanceCycleService = ServiceUtil.getService(AttendanceCycleServiceImpl.class); + + @Override + public String execute(RequestInfo requestInfo) { + String requestid = requestInfo.getRequestid(); + log.debug("**********MakeUpClockApproveAction import data start**********"); + // 流程表单主表数据 + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); + // 流程表单明细表数据 + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0); + log.info("detailTableData : [{}]", detailTableData); + //补打卡人员 + String userId = mainTableData.get("bdkry"); + Map>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e-> Util.null2String(e.get("bdkr")))); + + for (Map.Entry>> tableEntry :detailGroupMap.entrySet()){ + List> detailGroupByUserList = tableEntry.getValue(); + Map params = Maps.newHashMap(); + if ("".equals(tableEntry.getKey())){ + params.put("userId",userId); + }else { + params.put("userId",tableEntry.getKey()); + } + params.put("submitDate", DateUtil.getCurrentDate()); + params.put("submitStr","bdkrq"); + params.put("submitDataList",detailGroupByUserList); + /** + * 考勤周期校验 + */ + if (detailGroupByUserList == null || detailGroupByUserList.size() == 0){ + log.error("明细表没有数据!"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("明细表没有数据!"); + return Action.FAILURE_AND_CONTINUE; + } + Map dataMap = getAttendanceCycleService.getKqCycleCheckoutInfoCmd(params); + List> checkoutList = (List>)dataMap.get("checkoutList"); + List nocycleList = (List)dataMap.get("nocycleList"); + List> dateList = (List>)dataMap.get("dataList"); + + boolean status = (boolean)dataMap.get("status"); + if (!status){ + log.error("该人员没有考勤周期"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); + return Action.FAILURE_AND_CONTINUE; + } + if (checkoutList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (checkoutList.size() > 0){ + List list = checkoutList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已结账"; + } + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } + } + log.debug("**********MakeUpClockApproveAction import data end**********"); + + return Action.SUCCESS; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanApproveAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanApproveAction.java new file mode 100644 index 0000000..706a09a --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanApproveAction.java @@ -0,0 +1,95 @@ +package com.engine.jucailinkq.attendance.workflow.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.AttendanceCycleService; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.impl.AttendanceCycleServiceImpl; +import com.engine.jucailinkq.attendance.workflow.service.MakeUpClockInService; +import com.engine.jucailinkq.attendance.workflow.service.impl.MakeUpClockInServiceImpl; +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 加班计划流程批准action + */ +@Slf4j +public class OvertimePlanApproveAction implements Action { + + private AttendanceCycleService getAttendanceCycleService = ServiceUtil.getService(AttendanceCycleServiceImpl.class); + + @Override + public String execute(RequestInfo requestInfo) { + String requestid = requestInfo.getRequestid(); + // 流程表单主表数据 + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); + // 流程表单明细表数据 + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0); + //加班人员 + String jbry = mainTableData.get("jbry"); + try { + Map>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("jbry")))); + + for (Map.Entry>> tableEntry :detailGroupMap.entrySet()){ + List> detailGroupByUserList = tableEntry.getValue(); + Map params = Maps.newHashMap(); + if ("".equals(tableEntry.getKey())){ + params.put("userId",jbry); + }else { + params.put("userId",tableEntry.getKey()); + } + params.put("submitDate",DateUtil.getCurrentDate()); + params.put("submitStr","ksrq"); + params.put("submitDataList",detailGroupByUserList); + + /** + * 考勤周期校验 + */ + if (detailGroupByUserList == null || detailGroupByUserList.size() == 0){ + log.error("明细表没有数据!"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("明细表没有数据!"); + return Action.FAILURE_AND_CONTINUE; + } + Map dataMap = getAttendanceCycleService.getKqCycleCheckoutInfoCmd(params); + List> checkoutList = (List>)dataMap.get("checkoutList"); + List nocycleList = (List)dataMap.get("nocycleList"); + List> dateList = (List>)dataMap.get("dataList"); + + boolean status = (boolean)dataMap.get("status"); + if (!status){ + log.error("该人员没有考勤周期"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); + return Action.FAILURE_AND_CONTINUE; + } + if (checkoutList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (checkoutList.size() > 0){ + List list = checkoutList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已结账"; + } + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } + } + + }catch (Exception e){ + log.error("OvertimePlanApproveAction error : [{}]",e); + return Action.FAILURE_AND_CONTINUE; + } + return Action.SUCCESS; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/RevokeAskForLeaveApproveAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/RevokeAskForLeaveApproveAction.java new file mode 100644 index 0000000..bf98697 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/RevokeAskForLeaveApproveAction.java @@ -0,0 +1,79 @@ +package com.engine.jucailinkq.attendance.workflow.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.AttendanceCycleService; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.impl.AttendanceCycleServiceImpl; +import com.engine.jucailinkq.attendance.workflow.service.MakeUpClockInService; +import com.engine.jucailinkq.attendance.workflow.service.impl.MakeUpClockInServiceImpl; +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; +import com.engine.jucailinkq.common.util.DbTools; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 销假流程批准action + */ +@Slf4j +public class RevokeAskForLeaveApproveAction implements Action { + + private AttendanceCycleService getAttendanceCycleService = ServiceUtil.getService(AttendanceCycleServiceImpl.class); + + @Override + public String execute(RequestInfo requestInfo) { + + String requestid = requestInfo.getRequestid(); + // 流程表单主表数据 + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); + // 流程表单明细表数据 + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0); + //销假人 + String xjr = mainTableData.get("xjr"); + + Map params = Maps.newHashMap(); + params.put("userId",xjr); + params.put("submitDate", DateUtil.getCurrentDate()); + params.put("submitStr","ksrq"); + params.put("submitDataList",detailTableData); + + //筛选出勾选了撤销的明细数据 + detailTableData = detailTableData.stream().filter(e->"1".equals(e.get("cx"))).collect(Collectors.toList()); + params.put("submitDataList",detailTableData); + + if (detailTableData.size() > 0) { + Map dataMap = getAttendanceCycleService.getKqCycleCheckoutInfoCmd(params); + List> checkoutList = (List>)dataMap.get("checkoutList"); + List nocycleList = (List)dataMap.get("nocycleList"); + + boolean status = (boolean)dataMap.get("status"); + if (!status){ + log.error("该人员没有考勤周期"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); + return Action.FAILURE_AND_CONTINUE; + } + if (checkoutList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (checkoutList.size() > 0){ + List list = checkoutList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已结账"; + } + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } + } + + return Action.SUCCESS; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/RevokeEvctionApproveAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/RevokeEvctionApproveAction.java new file mode 100644 index 0000000..18c4b3c --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/RevokeEvctionApproveAction.java @@ -0,0 +1,79 @@ +package com.engine.jucailinkq.attendance.workflow.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.AttendanceCycleService; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.impl.AttendanceCycleServiceImpl; +import com.engine.jucailinkq.attendance.workflow.service.MakeUpClockInService; +import com.engine.jucailinkq.attendance.workflow.service.impl.MakeUpClockInServiceImpl; +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; +import com.engine.jucailinkq.common.util.DbTools; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 销差流程批准action + */ +@Slf4j +public class RevokeEvctionApproveAction implements Action { + + private AttendanceCycleService getAttendanceCycleService = ServiceUtil.getService(AttendanceCycleServiceImpl.class); + + @Override + public String execute(RequestInfo requestInfo) { + + String requestid = requestInfo.getRequestid(); + // 流程表单主表数据 + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); + // 流程表单明细表数据 + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0); + //销差人 + String xcr = mainTableData.get("xjr"); + + /** + * 考勤周期检查 + */ + Map params = Maps.newHashMap(); + params.put("userId",xcr); + params.put("submitDate", DateUtil.getCurrentDate()); + params.put("submitStr","ksrq"); + //筛选出勾选了撤销的明细数据 + detailTableData = detailTableData.stream().filter(e->"1".equals(e.get("cx"))).collect(Collectors.toList()); + params.put("submitDataList",detailTableData); + if (detailTableData.size() > 0) { + Map dataMap = getAttendanceCycleService.getKqCycleCheckoutInfoCmd(params); + List> checkoutList = (List>)dataMap.get("checkoutList"); + List nocycleList = (List)dataMap.get("nocycleList"); + + boolean status = (boolean)dataMap.get("status"); + if (!status){ + log.error("该人员没有考勤周期"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); + return Action.FAILURE_AND_CONTINUE; + } + if (checkoutList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (checkoutList.size() > 0){ + List list = checkoutList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已结账"; + } + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } + } + + return Action.SUCCESS; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowApproveAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowApproveAction.java new file mode 100644 index 0000000..7f20572 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowApproveAction.java @@ -0,0 +1,87 @@ +package com.engine.jucailinkq.attendance.workflow.action.askforleave; + +import com.engine.common.util.ServiceUtil; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.AttendanceCycleService; +import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.impl.AttendanceCycleServiceImpl; +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 批量请假流程批准action + */ +@Slf4j +public class BatchAskForLeaveWorkFlowApproveAction implements Action { + + private AttendanceCycleService getAttendanceCycleService = ServiceUtil.getService(AttendanceCycleServiceImpl.class); + + @Override + public String execute(RequestInfo requestInfo) { + String requestid = requestInfo.getRequestid(); + log.debug("**********BatchAskForLeaveWorkFlowApproveAction import data start**********"); + // 流程表单主表数据 + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); + // 流程表单明细表数据 + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0); + log.info("detailTableData : [{}]", detailTableData); + + Map>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e-> Util.null2String(e.get("qjr")))); + + for (Map.Entry>> tableEntry :detailGroupMap.entrySet()){ + List> detailGroupByUserList = tableEntry.getValue(); + Map params = Maps.newHashMap(); + + params.put("userId",tableEntry.getKey()); + + params.put("submitDate", DateUtil.getCurrentDate()); + params.put("submitStr","ksrq"); + params.put("submitDataList",detailGroupByUserList); + /** + * 考勤周期校验 + */ + if (detailGroupByUserList == null || detailGroupByUserList.size() == 0){ + log.error("明细表没有数据!"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("明细表没有数据!"); + return Action.FAILURE_AND_CONTINUE; + } + Map dataMap = getAttendanceCycleService.getKqCycleCheckoutInfoCmd(params); + List> checkoutList = (List>)dataMap.get("checkoutList"); + List nocycleList = (List)dataMap.get("nocycleList"); + List> dateList = (List>)dataMap.get("dataList"); + + boolean status = (boolean)dataMap.get("status"); + if (!status){ + log.error("该人员没有考勤周期"); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent("该人员没有考勤周期!"); + return Action.FAILURE_AND_CONTINUE; + } + if (checkoutList.size() > 0 || nocycleList.size() > 0){ + String message = ""; + if (nocycleList.size() > 0){ + message = message +String.join(",",nocycleList)+"未找对对应的考勤周期;"; + } + if (checkoutList.size() > 0){ + List list = checkoutList.stream().map(e->e.get("rq").toString()).collect(Collectors.toList()); + message = message +String.join(",",list)+"对应的考勤周期的考勤周期已结账"; + } + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } + } + log.debug("**********BatchAskForLeaveWorkFlowApproveAction import data end**********"); + + return Action.SUCCESS; + } +}