diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanBackAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanBackAction.java new file mode 100644 index 0000000..f493291 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanBackAction.java @@ -0,0 +1,73 @@ +package com.engine.jucailinkq.attendance.workflow.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.jucailinkq.attendance.attendanceanalysis.service.UtilService; +import com.engine.jucailinkq.attendance.attendanceanalysis.service.impl.UtilServiceImpl; +import com.engine.jucailinkq.attendance.enums.*; +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.engine.jucailinkq.common.util.Utils; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.general.TimeUtil; +import weaver.general.Util; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 加班计划流程退回 + * @author sy + */ +@Slf4j +public class OvertimePlanBackAction implements Action { + + @Override + public String execute(RequestInfo requestInfo) { + String requestId = requestInfo.getRequestid(); + try { + //收集加班计划中流程id关联的数据 + String sql = "select id from uf_jcl_kq_jbjh where lyid = " + requestId; + List> jbjhData = DbTools.getSqlToList(sql); + List jbjhIdList = jbjhData.stream().map(f->f.get("id").toString()).collect(Collectors.toList()); + if (jbjhIdList.size() > 0) { + //删除加班计划明细表 + sql = "delete from uf_jcl_kq_jbjh_dt1 where mainid in (" + String.join(",",jbjhIdList) + ")"; + boolean delSign1 = DbTools.update(sql); + String message = ""; + if (!delSign1) { + message = message + "删除加班计划明细表数据失败!"; + } + //删除加班计划表 + sql = "delete from uf_jcl_kq_jbjh where id in (" + String.join(",",jbjhIdList) + ")"; + boolean delSign2 = DbTools.update(sql); + if (!delSign2) { + message = message + "删除加班计划主表数据失败!"; + } + //删除加班结果中加班计划转换的数据 + sql = "delete from uf_jcl_kq_jbjg where jbjhid in (" + String.join(",",jbjhIdList) + ")"; + boolean delSign3 = DbTools.update(sql); + if (!delSign3) { + message = message + "删除加班结果表数据失败!"; + } + if (!delSign1 || !delSign2 || !delSign3) { + log.error(message); + requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } + } + + }catch (Exception e){ + log.error("OvertimePlanBackAction error : [{}]", e.getMessage()); + return Action.FAILURE_AND_CONTINUE; + } + return Action.SUCCESS; + } + +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanCheckAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanCheckAction.java index db6e128..8cc484a 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanCheckAction.java +++ b/src/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanCheckAction.java @@ -329,7 +329,7 @@ public class OvertimePlanCheckAction implements Action { } /** - * 获取目标人员时间区间内的加班结果 + * 获取目标人员时间区间内的加班结果、加班计划 */ public List> getWorkOverTimeResults(String startDate,String endDate,String userId){ String sql = "select a.sjjbsc, a.sjksrq, a.sjjsrq, a.jbjhid, a.jblx, b.hsdw from uf_jcl_kq_jbjg a left join uf_jcl_kq_kqxm b on a.jblx = b.id where a.zt != 2 and a.jbry=? and a.sjksrq>=? and a.sjjsrq<=?"; diff --git a/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/OvertimePlanDataReset.java b/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/OvertimePlanDataReset.java new file mode 100644 index 0000000..3ee332e --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/OvertimePlanDataReset.java @@ -0,0 +1,109 @@ +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.engine.jucailinkq.common.util.Utils; +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 java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 加班计划流程删除、退回等进行加班计划、加班结果台账数据删除 + * @author sy + */ +@Slf4j +public class OvertimePlanDataReset implements WorkFlowHandleTacis{ + @Override + public boolean support(String personClassfiy) { + if (personClassfiy.equals(WorkFlowTypeEnum.OVERTIME_PLAN.getKey())){ + return true; + } + return false; + } + + @Override + public void reset(Map requestMap) { + log.info("OvertimePlanDataReset 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_jbjh where lyid = " + requestId; + List> jbjhData = DbTools.getSqlToList(sql); + List jbjhIdList = jbjhData.stream().map(f->f.get("id").toString()).collect(Collectors.toList()); + if (jbjhIdList.size() > 0) { + //删除加班计划明细表 + sql = "delete from uf_jcl_kq_jbjh_dt1 where mainid in (" + String.join(",",jbjhIdList) + ")"; + boolean delSign1 = DbTools.update(sql); + String message = ""; + if (!delSign1) { + message = message + "删除加班计划明细表数据失败!"; + } + //删除加班计划表 + sql = "delete from uf_jcl_kq_jbjh where id in (" + String.join(",",jbjhIdList) + ")"; + boolean delSign2 = DbTools.update(sql); + if (!delSign2) { + message = message + "删除加班计划主表数据失败!"; + } + //删除加班结果中加班计划转换的数据 + sql = "delete from uf_jcl_kq_jbjg where jbjhid in (" + String.join(",",jbjhIdList) + ")"; + boolean delSign3 = DbTools.update(sql); + if (!delSign3) { + message = message + "删除加班结果表数据失败!"; + } + if (!delSign1 || !delSign2 || !delSign3) { + log.error(message); + } + } + }catch (Exception e){ + log.error("OvertimePlanDataReset 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; + } +}