From 4726d6a479346a333f6633b922c89bcf063df7cf Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 28 Oct 2024 14:25:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4-=E5=87=BA=E5=B7=AE=E3=80=81?= =?UTF-8?q?=E8=A1=A5=E6=89=93=E5=8D=A1=E6=B5=81=E7=A8=8B=EF=BC=8C=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=BC=BA=E5=88=B6=E9=80=80=E5=9B=9E=E3=80=81=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=9B=B8=E5=85=B3=E6=95=B0=E6=8D=AE=E9=87=8D=E7=BD=AE?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/action/EvectionBackAction.java | 52 +++++++++ .../action/MakeUpClockInBackAction.java | 47 ++++++++ .../proxy/tactics/EvectionDataReset.java | 100 ++++++++++++++++++ .../proxy/tactics/MakeUpClockInDataReset.java | 93 ++++++++++++++++ 4 files changed, 292 insertions(+) create mode 100644 src/com/engine/jucailinkq/attendance/workflow/action/EvectionBackAction.java create mode 100644 src/com/engine/jucailinkq/attendance/workflow/action/MakeUpClockInBackAction.java create mode 100644 src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/EvectionDataReset.java create mode 100644 src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/MakeUpClockInDataReset.java diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/EvectionBackAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/EvectionBackAction.java new file mode 100644 index 0000000..ffd4095 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/EvectionBackAction.java @@ -0,0 +1,52 @@ +package com.engine.jucailinkq.attendance.workflow.action; + +import com.engine.jucailinkq.common.util.DbTools; +import lombok.extern.slf4j.Slf4j; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 出差流程退回 + */ +@Slf4j +public class EvectionBackAction implements Action { + + @Override + public String execute(RequestInfo requestInfo) { + String requestId = requestInfo.getRequestid(); + try { + String sql = "select id from uf_jcl_kq_ccjl where djly = 0 and lyid = " + requestId; + List> ccData = DbTools.getSqlToList(sql); + if (ccData.size() > 0) { + List ccjlIdList = ccData.stream().map(f->f.get("id").toString()).collect(Collectors.toList()); + //删除出差记录明细表 + sql = "delete from uf_jcl_kq_ccjl_dt1 where mainid in (" + String.join(",", ccjlIdList) + ")"; + boolean delSign1 = DbTools.update(sql); + String message = ""; + if (!delSign1) { + message = message + "删除出差记录明细表数据失败!"; + } + //删除出差记录主表 + sql = "delete from uf_jcl_kq_ccjl where id in (" + String.join(",", ccjlIdList) + ")"; + boolean delSign2 = DbTools.update(sql); + if (!delSign2) { + message = message + "删除出差记录主表数据失败!"; + } + if (!delSign1 || !delSign2) { + log.error(message); + requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } + } + }catch (Exception e){ + log.error("EvctionBackAction error : [{}]", e.getMessage()); + return Action.FAILURE_AND_CONTINUE; + } + return Action.SUCCESS; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/MakeUpClockInBackAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/MakeUpClockInBackAction.java new file mode 100644 index 0000000..7635926 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/MakeUpClockInBackAction.java @@ -0,0 +1,47 @@ +package com.engine.jucailinkq.attendance.workflow.action; + +import com.engine.jucailinkq.common.util.DbTools; +import lombok.extern.slf4j.Slf4j; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 补打卡退回action + */ +@Slf4j +public class MakeUpClockInBackAction implements Action { + + @Override + public String execute(RequestInfo requestInfo) { + + String requestId = requestInfo.getRequestid(); + try { + String sql = "select id from uf_jcl_kq_bdkjl where sjly = 0 and lcid = " + requestId; + List> bdkData = DbTools.getSqlToList(sql); + if (bdkData.size() > 0) { + List bdkjlIdList = bdkData.stream().map(f->f.get("id").toString()).collect(Collectors.toList()); + //删除出差记录主表 + sql = "delete from uf_jcl_kq_bdkjl where id in (" + String.join(",", bdkjlIdList) + ")"; + boolean delSign = DbTools.update(sql); + String message = ""; + if (!delSign) { + message = message + "删除补打卡记录表数据失败!"; + log.error(message); + requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } + } + }catch (Exception e){ + log.error("MakeUpClockInBackAction : [{}]", e.getMessage()); + } + return Action.SUCCESS; + } + + + +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/EvectionDataReset.java b/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/EvectionDataReset.java new file mode 100644 index 0000000..2192dea --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/EvectionDataReset.java @@ -0,0 +1,100 @@ +package com.engine.jucailinkq.attendance.workflow.proxy.tactics; + +import com.alibaba.fastjson.JSONObject; +import com.engine.jucailinkq.attendance.workflow.enums.WorkFlowTypeEnum; +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 java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 出差流程删除、退回等进行出差记录数据删除 + * @author sy + */ +@Slf4j +public class EvectionDataReset implements WorkFlowHandleTacis{ + @Override + public boolean support(String personClassfiy) { + if (personClassfiy.equals(WorkFlowTypeEnum.EVECTION.getKey())){ + return true; + } + return false; + } + + @Override + public void reset(Map requestMap) { + log.info("EvectionDataReset requestMap: [{}]",requestMap); + String tableName = requestMap.get("lcbd").toString(); + String requestId = requestMap.get("requestId").toString(); + String operate = requestMap.get("operate").toString(); + + Map mainMap = null; + List> detailTableData = null; + if (operate.equals("dodelete")){ + //删除流程 + String sql = "select deletetabledata from workflow_requestdeletelog where request_id=? and (isvalid is null or isvalid <> '1')"; + List> deleteDataList = DbTools.getSqlToList(sql,requestId); + if (deleteDataList.size() > 0){ + String deletetabledata = deleteDataList.get(0).get("deletetabledata").toString(); + Map>> map = (Map>>) JSONObject.parse(deletetabledata); + mainMap = keyToLowerMap(map.get(tableName).get(0)); + detailTableData = keyToLowerList(map.get(tableName+"_dt1")); + } + }else { + String sql = "select * from "+tableName+" where requestid=?"; + mainMap = DbTools.getSqlToList(sql,requestId).get(0); + // 流程表单明细表1数据 + sql = "select * from "+tableName+"_dt1 where mainid=?"; + detailTableData = DbTools.getSqlToList(sql,mainMap.get("id")); + } + log.info("detailTableData : [{}]",detailTableData); + if (mainMap == null || detailTableData == null){ + return; + } + try { + //收集出差记录中流程id关联的数据 + String sql = "select id from uf_jcl_kq_ccjl where djly = 0 and lyid = " + requestId; + List> ccData = DbTools.getSqlToList(sql); + if (ccData.size() > 0) { + List ccjlIdList = ccData.stream().map(f->f.get("id").toString()).collect(Collectors.toList()); + //删除出差记录明细表 + sql = "delete from uf_jcl_kq_ccjl_dt1 where mainid in (" + String.join(",", ccjlIdList) + ")"; + boolean delSign1 = DbTools.update(sql); + String message = ""; + if (!delSign1) { + message = message + "删除出差记录明细表数据失败!"; + } + //删除出差记录主表 + sql = "delete from uf_jcl_kq_ccjl where id in (" + String.join(",", ccjlIdList) + ")"; + boolean delSign2 = DbTools.update(sql); + if (!delSign2) { + message = message + "删除出差记录主表数据失败!"; + } + if (!delSign1 || !delSign2) { + log.error(message); + } + } + }catch (Exception e){ + log.error("EvectionDataReset error : [{}]", e.getMessage()); + } + } + + public Map keyToLowerMap(Map map){ + Map resultMap = Maps.newHashMap(); + map.entrySet().forEach(e->{ + resultMap.put(e.getKey().toLowerCase(),e.getValue()); + }); + return resultMap; + } + public List> keyToLowerList(List> list){ + List> resultList = Lists.newArrayList(); + for (Map map:list){ + resultList.add(keyToLowerMap(map)); + } + return resultList; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/MakeUpClockInDataReset.java b/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/MakeUpClockInDataReset.java new file mode 100644 index 0000000..57fc415 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/MakeUpClockInDataReset.java @@ -0,0 +1,93 @@ +package com.engine.jucailinkq.attendance.workflow.proxy.tactics; + +import com.alibaba.fastjson.JSONObject; +import com.engine.jucailinkq.attendance.workflow.enums.WorkFlowTypeEnum; +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.interfaces.workflow.action.Action; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 补打卡流程删除、退回等进行补打卡记录数据删除 + * @author sy + */ +@Slf4j +public class MakeUpClockInDataReset implements WorkFlowHandleTacis{ + @Override + public boolean support(String personClassfiy) { + if (personClassfiy.equals(WorkFlowTypeEnum.CLOCK_IN.getKey())){ + return true; + } + return false; + } + + @Override + public void reset(Map requestMap) { + log.info("MakeUpClockInDataReset requestMap: [{}]",requestMap); + String tableName = requestMap.get("lcbd").toString(); + String requestId = requestMap.get("requestId").toString(); + String operate = requestMap.get("operate").toString(); + + Map mainMap = null; + List> detailTableData = null; + if (operate.equals("dodelete")){ + //删除流程 + String sql = "select deletetabledata from workflow_requestdeletelog where request_id=? and (isvalid is null or isvalid <> '1')"; + List> deleteDataList = DbTools.getSqlToList(sql,requestId); + if (deleteDataList.size() > 0){ + String deletetabledata = deleteDataList.get(0).get("deletetabledata").toString(); + Map>> map = (Map>>) JSONObject.parse(deletetabledata); + mainMap = keyToLowerMap(map.get(tableName).get(0)); + detailTableData = keyToLowerList(map.get(tableName+"_dt1")); + } + }else { + String sql = "select * from "+tableName+" where requestid=?"; + mainMap = DbTools.getSqlToList(sql,requestId).get(0); + // 流程表单明细表1数据 + sql = "select * from "+tableName+"_dt1 where mainid=?"; + detailTableData = DbTools.getSqlToList(sql,mainMap.get("id")); + } + log.info("detailTableData : [{}]",detailTableData); + if (mainMap == null || detailTableData == null){ + return; + } + try { + //收集补打卡记录中流程id关联的数据 + String sql = "select id from uf_jcl_kq_bdkjl where sjly = 0 and lcid = " + requestId; + List> bdkData = DbTools.getSqlToList(sql); + if (bdkData.size() > 0) { + List bdkjlIdList = bdkData.stream().map(f->f.get("id").toString()).collect(Collectors.toList()); + //删除出差记录主表 + sql = "delete from uf_jcl_kq_bdkjl where id in (" + String.join(",", bdkjlIdList) + ")"; + boolean delSign = DbTools.update(sql); + String message = ""; + if (!delSign) { + message = message + "删除补打卡记录表数据失败!"; + log.error(message); + } + } + }catch (Exception e){ + log.error("MakeUpClockInDataReset error : [{}]", e.getMessage()); + } + } + + public Map keyToLowerMap(Map map){ + Map resultMap = Maps.newHashMap(); + map.entrySet().forEach(e->{ + resultMap.put(e.getKey().toLowerCase(),e.getValue()); + }); + return resultMap; + } + public List> keyToLowerList(List> list){ + List> resultList = Lists.newArrayList(); + for (Map map:list){ + resultList.add(keyToLowerMap(map)); + } + return resultList; + } +}