From 3c82054b63b35770f2ccfa7fabf2d31166a51f95 Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 30 Apr 2024 14:57:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4=EF=BC=8C=E8=AF=B7=E5=81=87?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E8=8A=82=E7=82=B9action=E7=B1=BB=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=A2=9E=E5=8A=A0=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E6=A0=A1=E9=AA=8C=E5=81=87=E6=9C=9F=E9=A2=9D=E5=BA=A6?= =?UTF-8?q?=E7=9A=84=E5=81=87=E6=9C=9F=E7=B1=BB=E5=9E=8B=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AskForLeaveWorkFlowArchivingAction.java | 60 ++++--- .../AskForLeaveWorkFlowSubmitAction.java | 169 +++++++++--------- src/com/engine/common/util/CommonUtil.java | 25 ++- 3 files changed, 143 insertions(+), 111 deletions(-) diff --git a/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.java b/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.java index a013069..8004ef7 100644 --- a/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.java +++ b/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.java @@ -35,6 +35,8 @@ public class AskForLeaveWorkFlowArchivingAction implements Action { String qjry = mainTableData.get("qjry"); //实际假期类型 String jqlx = mainTableData.get("sjqjlx"); + //需要校验假期额度的假期类型 + List checkAmountJqIdList = CommonUtil.getJqInfoWithAmount(); //第一笔开始时间 String firstStartDate = detailTableData.get(0).get("ksrq"); @@ -46,36 +48,40 @@ public class AskForLeaveWorkFlowArchivingAction implements Action { try { - Map balanceMap = Maps.newHashMap(); - for (Map data : detailTable2){ - String jqye = Util.null2String(data.get("jqye")); - double sysc = Double.valueOf(data.get("sysc").toString()); - double havedSysc= balanceMap.get(jqye) ==null?0:Double.valueOf(balanceMap.get(jqye).toString()); - sysc = Utils.add(sysc,havedSysc); - balanceMap.put(jqye,sysc); - } + //当前假期类型需要校验剩余额度时则更新假期余额,否则跳过 + if (checkAmountJqIdList.contains(jqlx)) { + Map balanceMap = Maps.newHashMap(); + for (Map data : detailTable2){ + String jqye = Util.null2String(data.get("jqye")); + double sysc = Double.valueOf(data.get("sysc").toString()); + double havedSysc= balanceMap.get(jqye) ==null?0:Double.valueOf(balanceMap.get(jqye).toString()); + sysc = Utils.add(sysc,havedSysc); + balanceMap.put(jqye,sysc); + } - for (Map.Entry entry:balanceMap.entrySet()){ - String id = entry.getKey(); - double ztsc = Double.valueOf(entry.getValue().toString()); - Map map = (Map)holidayBalanceMap.get(id); - - double havedztsc = Util.null2String(map.get("ztsc")).equals("") ? 0 : Double.valueOf(map.get("ztsc").toString()); - double havedyxsc = Util.null2String(map.get("yxsc")).equals("") ? 0 : Double.valueOf(map.get("yxsc").toString()); - - double updatedztsc = Utils.subtract(havedztsc,ztsc); - double updatedwxsc = Utils.add(havedyxsc,ztsc); - - String updateSql = "update uf_jcl_kq_jqye set yxsc=?,ztsc=? where id=?"; - if (!DbTools.update(updateSql,updatedwxsc,updatedztsc,id)){ - //更新假期余额失败 - String message = "更新假期余额失败"; - log.error(message); - requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222"); - requestInfo.getRequestManager().setMessagecontent(message); - return Action.FAILURE_AND_CONTINUE; + for (Map.Entry entry:balanceMap.entrySet()){ + String id = entry.getKey(); + double ztsc = Double.valueOf(entry.getValue().toString()); + Map map = (Map)holidayBalanceMap.get(id); + + double havedztsc = Util.null2String(map.get("ztsc")).equals("") ? 0 : Double.valueOf(map.get("ztsc").toString()); + double havedyxsc = Util.null2String(map.get("yxsc")).equals("") ? 0 : Double.valueOf(map.get("yxsc").toString()); + + double updatedztsc = Utils.subtract(havedztsc,ztsc); + double updatedwxsc = Utils.add(havedyxsc,ztsc); + + String updateSql = "update uf_jcl_kq_jqye set yxsc=?,ztsc=? where id=?"; + if (!DbTools.update(updateSql,updatedwxsc,updatedztsc,id)){ + //更新假期余额失败 + String 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("AskForLeaveWorkFlowSubmitAction error : [{}]",e); return Action.FAILURE_AND_CONTINUE; diff --git a/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java b/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java index c3e7b9d..4c8cc1c 100644 --- a/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java +++ b/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java @@ -41,6 +41,8 @@ public class AskForLeaveWorkFlowSubmitAction implements Action { String qjry = mainTableData.get("qjry"); //实际假期类型 String jqlx = mainTableData.get("sjqjlx"); + //需要校验假期额度的假期类型 + List checkAmountJqIdList = CommonUtil.getJqInfoWithAmount(); //第一笔开始时间 String firstStartDate = detailTableData.get(0).get("ksrq"); @@ -92,73 +94,70 @@ public class AskForLeaveWorkFlowSubmitAction implements Action { return Action.FAILURE_AND_CONTINUE; } } - - /** * 假期校验及入库 */ String sql = "select id,jqid,sxrq,ktsc,yxsc,wxsc,yqsxrq,ztsc from uf_jcl_kq_jqye where ygid=? and jqid=? and sxrq<=? and yqsxrq>=? order by sxrq"; - List> holidayBalanceList = DbTools.getSqlToList(sql, qjry, jqlx, firstStartDate, firstStartDate); - Map holidayBalanceMap = holidayBalanceList.stream().collect(Collectors.toMap(e -> e.get("id").toString(), e -> e)); - sql = "select id,mc,hsdw,hsl,jcbyxsyqjb,yxsydjb,qzsyyxjb from uf_jcl_kq_kqxm where id=?"; - Map holidayItem = DbTools.getSqlToMap(sql, jqlx); - - //假期核算单位 - String hsdw = Util.null2String(holidayItem.get("hsdw")); - //请假方式 - String cxjqj = mainTableData.get("cxjqj"); - - for (Map detailData : detailTableData) { - String ksrq = detailData.get("ksrq"); - //请假时间 - double leaveDuration = 0; - if (cxjqj.equals(AskAndEvctionWayEnum.ALLDAY.getKey())) { - leaveDuration = 1; - } else if (cxjqj.equals(AskAndEvctionWayEnum.HALFDAY.getKey())) { - leaveDuration = 0.5; - } else if (cxjqj.equals(AskAndEvctionWayEnum.TIME_INTERVAL.getKey()) || cxjqj.equals(AskAndEvctionWayEnum.HOUR.getKey())) { - leaveDuration = Double.valueOf(Util.null2String(detailData.get("qjsc"))); - } - if (hsdw.equals(AccountingUnitEnum.HOUR.getKey()) && (cxjqj.equals(AskAndEvctionWayEnum.ALLDAY.getKey()) || cxjqj.equals(AskAndEvctionWayEnum.HALFDAY.getKey()))) { - leaveDuration = leaveDuration * 8; - } - log.info("leaveDuration : [{}]", leaveDuration); - List> holidayBalancefilterList = holidayBalanceList.stream().filter(e -> DateUtil.getTime(e.get("yqsxrq").toString()).compareTo(DateUtil.getTime(ksrq)) >= 0).collect(Collectors.toList()); - for (Map holidayBalance : holidayBalancefilterList) { - //额定未休时长 - double wxsc = holidayBalance.get("wxsc") == null ? 0 : Double.valueOf(holidayBalance.get("wxsc").toString()); - if (leaveDuration > 0) { - Map detail2Map = Maps.newHashMap(); - detail2Map.put("glmxid", detailData.get("id")); - detail2Map.put("jqye", holidayBalance.get("id")); - detail2Map.put("mainid", mainTableData.get("id")); - detail2Map.put("glrq", detailData.get("ksrq")); - if (leaveDuration > wxsc) { - detail2Map.put("sysc", wxsc); - leaveDuration = Utils.subtract(leaveDuration, wxsc); - wxsc = 0; - } else { - detail2Map.put("sysc", leaveDuration); - leaveDuration = 0; - wxsc = Utils.subtract(wxsc, leaveDuration); + //当前假期类型需要校验剩余额度时则校验假期剩余额度,否则跳过校验 + if (checkAmountJqIdList.contains(jqlx)) { + //假期核算单位 + String hsdw = Util.null2String(holidayItem.get("hsdw")); + //请假方式 + String cxjqj = mainTableData.get("cxjqj"); + + for (Map detailData : detailTableData) { + String ksrq = detailData.get("ksrq"); + //请假时间 + double leaveDuration = 0; + if (cxjqj.equals(AskAndEvctionWayEnum.ALLDAY.getKey())) { + leaveDuration = 1; + } else if (cxjqj.equals(AskAndEvctionWayEnum.HALFDAY.getKey())) { + leaveDuration = 0.5; + } else if (cxjqj.equals(AskAndEvctionWayEnum.TIME_INTERVAL.getKey()) || cxjqj.equals(AskAndEvctionWayEnum.HOUR.getKey())) { + leaveDuration = Double.valueOf(Util.null2String(detailData.get("qjsc"))); + } + if (hsdw.equals(AccountingUnitEnum.HOUR.getKey()) && (cxjqj.equals(AskAndEvctionWayEnum.ALLDAY.getKey()) || cxjqj.equals(AskAndEvctionWayEnum.HALFDAY.getKey()))) { + leaveDuration = leaveDuration * 8; + } + log.info("leaveDuration : [{}]", leaveDuration); + List> holidayBalancefilterList = holidayBalanceList.stream().filter(e -> DateUtil.getTime(e.get("yqsxrq").toString()).compareTo(DateUtil.getTime(ksrq)) >= 0).collect(Collectors.toList()); + for (Map holidayBalance : holidayBalancefilterList) { + //额定未休时长 + double wxsc = Util.null2String(holidayBalance.get("wxsc")).equals("") ? 0 : Double.valueOf(holidayBalance.get("wxsc").toString()); + if (leaveDuration > 0) { + Map detail2Map = Maps.newHashMap(); + detail2Map.put("glmxid", detailData.get("id")); + detail2Map.put("jqye", holidayBalance.get("id")); + detail2Map.put("mainid", mainTableData.get("id")); + detail2Map.put("glrq", detailData.get("ksrq")); + if (leaveDuration > wxsc) { + detail2Map.put("sysc", wxsc); + leaveDuration = Utils.subtract(leaveDuration, wxsc); + wxsc = 0; + } else { + detail2Map.put("sysc", leaveDuration); + leaveDuration = 0; + wxsc = Utils.subtract(wxsc, leaveDuration); + } + detailTable2.add(detail2Map); + holidayBalance.put("wxsc", wxsc); } - detailTable2.add(detail2Map); - holidayBalance.put("wxsc", wxsc); } - } - if (leaveDuration > 0) { - //假期余额不足 - String message = ksrq + "对应的" + holidayItem.get("mc") + "假期余额不足!"; - log.error(message); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent(message); - return Action.FAILURE_AND_CONTINUE; + if (leaveDuration > 0) { + //假期余额不足 + String message = ksrq + "对应的" + holidayItem.get("mc") + "假期余额不足!"; + log.error(message); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } } } + log.info("detailTable2 : [{}]", detailTable2); //更新流程明细表2 @@ -173,36 +172,40 @@ public class AskForLeaveWorkFlowSubmitAction implements Action { return Action.FAILURE_AND_CONTINUE; } - //更新假期余额在途时长 - Map balanceMap = Maps.newHashMap(); - for (Map data : detailTable2) { - String jqye = Util.null2String(data.get("jqye")); - double sysc = Double.valueOf(data.get("sysc").toString()); - double havedSysc = balanceMap.get(jqye) == null ? 0 : Double.valueOf(balanceMap.get(jqye).toString()); - sysc = Utils.add(sysc, havedSysc); - balanceMap.put(jqye, sysc); - } - for (Map.Entry entry : balanceMap.entrySet()) { - String id = entry.getKey(); - double ztsc = Double.valueOf(entry.getValue().toString()); - Map map = (Map) holidayBalanceMap.get(id); - - double havedztsc = Util.null2String(map.get("ztsc")).equals("") ? 0 : Double.valueOf(map.get("ztsc").toString()); - double havedwxsc = Util.null2String(map.get("wxsc")).equals("") ? 0 : Double.valueOf(map.get("wxsc").toString()); - - double updatedztsc = Utils.add(havedztsc, ztsc); - double updatedwxsc = Utils.subtract(havedwxsc, ztsc); - - String updateSql = "update uf_jcl_kq_jqye set wxsc=?,ztsc=? where id=?"; - if (!DbTools.update(updateSql, updatedwxsc, updatedztsc, id)) { - //更新假期余额失败 - String message = "更新假期余额失败"; - log.error(message); - requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); - requestInfo.getRequestManager().setMessagecontent(message); - return Action.FAILURE_AND_CONTINUE; + //当前假期类型需要校验剩余额度时则更新假期余额在途时长,否则跳过 + if (checkAmountJqIdList.contains(jqlx)) { + //更新假期余额在途时长 + Map balanceMap = Maps.newHashMap(); + for (Map data : detailTable2) { + String jqye = Util.null2String(data.get("jqye")); + double sysc = Double.valueOf(data.get("sysc").toString()); + double havedSysc = balanceMap.get(jqye) == null ? 0 : Double.valueOf(balanceMap.get(jqye).toString()); + sysc = Utils.add(sysc, havedSysc); + balanceMap.put(jqye, sysc); + } + for (Map.Entry entry : balanceMap.entrySet()) { + String id = entry.getKey(); + double ztsc = Double.valueOf(entry.getValue().toString()); + Map map = (Map) holidayBalanceMap.get(id); + + double havedztsc = Util.null2String(map.get("ztsc")).equals("") ? 0 : Double.valueOf(map.get("ztsc").toString()); + double havedwxsc = Util.null2String(map.get("wxsc")).equals("") ? 0 : Double.valueOf(map.get("wxsc").toString()); + + double updatedztsc = Utils.add(havedztsc, ztsc); + double updatedwxsc = Utils.subtract(havedwxsc, ztsc); + + String updateSql = "update uf_jcl_kq_jqye set wxsc=?,ztsc=? where id=?"; + if (!DbTools.update(updateSql, updatedwxsc, updatedztsc, id)) { + //更新假期余额失败 + String message = "更新假期余额失败"; + log.error(message); + requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222"); + requestInfo.getRequestManager().setMessagecontent(message); + return Action.FAILURE_AND_CONTINUE; + } } } + }catch (Exception e){ log.error("AskForLeaveWorkFlowSubmitAction error : [{}]",e); return Action.FAILURE_AND_CONTINUE; diff --git a/src/com/engine/common/util/CommonUtil.java b/src/com/engine/common/util/CommonUtil.java index 0e025ce..1f7f9a6 100644 --- a/src/com/engine/common/util/CommonUtil.java +++ b/src/com/engine/common/util/CommonUtil.java @@ -425,5 +425,28 @@ public class CommonUtil { return empIdList; } - + /** + * 获取附带假期使用额度概念的假期类型列表 + * @return + */ + public static List getJqInfoWithAmount() { + List jqIdList = new ArrayList<>(); + //来自假期额度 + String sql1 = "select * from uf_jcl_kq_jqed"; + List> data1 = DbTools.getSqlToList(sql1); + for (Map map : data1) { + jqIdList.add(Util.null2String(map.get("id"))); + } + //来自加班类型的考勤项目中关联的假期类型 + String sql2 = "select * from uf_jcl_kq_kqxm where xmlx = 4 and jbzdzjqye = 1"; + List> data2 = DbTools.getSqlToList(sql2); + for (Map map : data2) { + String jqId = Util.null2String(map.get("zrdjb")); + if (!"".equals(jqId)) { + jqIdList.add(jqId); + } + } + jqIdList = jqIdList.stream().distinct().collect(Collectors.toList()); + return jqIdList; + } }