From 69afe99c53be5b0ca60bfe6719bb43e175badefd Mon Sep 17 00:00:00 2001 From: liuliang <401809302@qq.com> Date: Fri, 27 Dec 2024 18:02:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BC=B9=E6=80=A7=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E7=8F=AD=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=89=93=E5=8D=A1=E5=8C=B9=E9=85=8D=E7=8F=AD=E6=AC=A1?= =?UTF-8?q?bug=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=81=87=E6=9C=9F=E5=8F=91?= =?UTF-8?q?=E6=94=BEbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../getclockInpoint/GetClockInPointCmd.java | 14 +++++--- .../impl/AttendanceSummaryServiceImpl.java | 32 +++++++++---------- .../service/impl/ShiftServiceImpl.java | 16 +++++----- .../web/AttendanceanalysisAction.java | 21 ++++++++---- .../HolidayGenerationJob.java | 5 +++ .../tactics/BySchedulePaymentWay.java | 15 +++++---- .../vacation/util/VocationCommonUtil.java | 3 ++ .../service/impl/AskForLeaveServiceImpl.java | 6 ++-- .../HrmjucailWorkOvertimePlan_e9.jsp | 8 ++++- 9 files changed, 73 insertions(+), 47 deletions(-) diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java index 34f8732..582bcd8 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java @@ -608,7 +608,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand> startNearestClcokInTime = Utils.getNearestClcokInTimeCmd(DateUtil.beforeMinutes(clockdto.getClassTime(),zddxfz), clockInTimeList); ClockPointEnum timeType = getStartClassTimeType(ksdkMap,startNearestClcokInTime,kssjStart,DateUtil.beforeMinutes(kssjStart,zddxfz)); - clockdto.setTimeType(timeType); - clockdto.setClockTime(startNearestClcokInTime.get(timeType)); +// clockdto.setTimeType(timeType); +// clockdto.setClockTime(startNearestClcokInTime.get(timeType)); - Map clcokInTime = clockdto.getClockTime(); + Map clcokInTime = startNearestClcokInTime.get(timeType); if (pointTime.equals(kssjStart) && ClockPointEnum.START.equals(pointType) && clcokInTime != null && CheckBoxEnum.CHECKED.getKey().equals(ifToWorkClock)) { //该卡点是弹性开始时间 //弹性上班期间未被请假开始时间占据 + clockdto.setTimeType(timeType); + clockdto.setClockTime(startNearestClcokInTime.get(timeType)); if ("".equals(flexibleWorkTime) ){ String signTime = clcokInTime.get("signdate") + " " + clcokInTime.get("signtime"); if (ClockPointEnum.BEFORE.equals(timeType)) { @@ -803,6 +805,8 @@ public class GetClockInPointCmd extends AbstractCommonCommand> kqxmList = DbTools.getSqlToList(kqxmSql); //收集视图列头 - StringBuilder viewColumn = new StringBuilder("id,ygid,rq,fbid,bm,zw,bc"); + StringBuilder viewColumn = new StringBuilder("id,ygid,rq,fbid,bm,zw,bc,rqlx"); //拼接视图内容sql - StringBuilder viewResourceSql = new StringBuilder("SELECT id, ygid, rq, fbid, bm, zw, bc"); + StringBuilder viewResourceSql = new StringBuilder("SELECT id, ygid, rq, fbid, bm, zw, bc, rqlx"); //考勤项目核算单位、id、名称 //20241031需求变更,字段“助记码”代替“名称” String hsdw = ""; @@ -539,31 +539,31 @@ public class AttendanceSummaryServiceImpl extends Service implements AttendanceS String createViewSql = "CREATE VIEW " + viewName; createViewSql = createViewSql + " AS " + viewResourceSql.toString(); createViewSql = createViewSql + " FROM (" + - "SELECT id, fbid, bm, zw, ygid, rq, bc, xm1 AS xm," + ifNullFunction + "(sc1,0) AS sc FROM uf_jcl_kq_cqjg WHERE (xm1 IS NOT NULL) UNION ALL " + "SELECT id, fbid, bm, zw, ygid,rqlx, rq, bc, xm1 AS xm," + ifNullFunction + "(sc1,0) AS sc FROM uf_jcl_kq_cqjg WHERE (xm1 IS NOT NULL) UNION ALL " + - "SELECT id, fbid, bm, zw, ygid, rq, bc, xm2," + ifNullFunction + "(sc2,0) FROM uf_jcl_kq_cqjg WHERE (xm2 IS NOT NULL) UNION ALL " + "SELECT id, fbid, bm, zw, ygid,rqlx, rq, bc, xm2," + ifNullFunction + "(sc2,0) FROM uf_jcl_kq_cqjg WHERE (xm2 IS NOT NULL) UNION ALL " + - "SELECT id, fbid, bm, zw, ygid, rq, bc, xm3," + ifNullFunction + "(sc3,0) FROM uf_jcl_kq_cqjg WHERE (xm3 IS NOT NULL) UNION ALL " + "SELECT id, fbid, bm, zw, ygid,rqlx, rq, bc, xm3," + ifNullFunction + "(sc3,0) FROM uf_jcl_kq_cqjg WHERE (xm3 IS NOT NULL) UNION ALL " + - "SELECT id, fbid, bm, zw, ygid, rq, bc, xm4," + ifNullFunction + "(sc4,0) FROM uf_jcl_kq_cqjg WHERE (xm4 IS NOT NULL) UNION ALL " + "SELECT id, fbid, bm, zw, ygid,rqlx, rq, bc, xm4," + ifNullFunction + "(sc4,0) FROM uf_jcl_kq_cqjg WHERE (xm4 IS NOT NULL) UNION ALL " + - "SELECT id, fbid, bm, zw, ygid, rq, bc, xm5," + ifNullFunction + "(sc5,0) FROM uf_jcl_kq_cqjg WHERE (xm5 IS NOT NULL) UNION ALL " + "SELECT id, fbid, bm, zw, ygid,rqlx, rq, bc, xm5," + ifNullFunction + "(sc5,0) FROM uf_jcl_kq_cqjg WHERE (xm5 IS NOT NULL) UNION ALL " + - "SELECT id, fbid, bm, zw, ygid, rq, bc, xm6," + ifNullFunction + "(sc6,0) FROM uf_jcl_kq_cqjg WHERE (xm6 IS NOT NULL) UNION ALL " + "SELECT id, fbid, bm, zw, ygid,rqlx, rq, bc, xm6," + ifNullFunction + "(sc6,0) FROM uf_jcl_kq_cqjg WHERE (xm6 IS NOT NULL) UNION ALL " + - "SELECT id, fbid, bm, zw, ygid, rq, bc, xm7," + ifNullFunction + "(sc7,0) FROM uf_jcl_kq_cqjg WHERE (xm7 IS NOT NULL) UNION ALL " + "SELECT id, fbid, bm, zw, ygid,rqlx, rq, bc, xm7," + ifNullFunction + "(sc7,0) FROM uf_jcl_kq_cqjg WHERE (xm7 IS NOT NULL) UNION ALL " + - "SELECT id, fbid, bm, zw, ygid, rq, bc, xm8," + ifNullFunction + "(sc8,0) FROM uf_jcl_kq_cqjg WHERE (xm8 IS NOT NULL) UNION ALL " + "SELECT id, fbid, bm, zw, ygid,rqlx, rq, bc, xm8," + ifNullFunction + "(sc8,0) FROM uf_jcl_kq_cqjg WHERE (xm8 IS NOT NULL) UNION ALL " + - "SELECT id, fbid, bm, zw, ygid, rq, bc, CASE WHEN cqzt = 0 THEN '1' ELSE '5' END, cqsc FROM uf_jcl_kq_cqjg UNION ALL " + "SELECT id, fbid, bm, zw, ygid,rqlx, rq, bc, CASE WHEN cqzt = 0 THEN '1' ELSE '5' END, cqsc FROM uf_jcl_kq_cqjg UNION ALL " + - "SELECT id, fbid, bm, zw, ygid, rq, bc, CASE WHEN rqlx = 0 OR rqlx = 4 THEN '2' WHEN rqlx = 2 OR rqlx = 3 THEN '3' WHEN rqlx = 1 THEN '4' ELSE '0' END ,cqsc FROM uf_jcl_kq_cqjg UNION ALL " + "SELECT id, fbid, bm, zw, ygid,rqlx, rq, bc, CASE WHEN rqlx = 0 OR rqlx = 4 THEN '2' WHEN rqlx = 2 OR rqlx = 3 THEN '3' WHEN rqlx = 1 THEN '4' ELSE '0' END ,cqsc FROM uf_jcl_kq_cqjg UNION ALL " + - "SELECT T2.id, T2.fbid, T2.bm, T2.zw, T2.ygid, T2.rq, T2.bc, T1.jtlx, " + ifNullFunction + "(T1.sc,0) FROM uf_jcl_kq_cqjt T1 LEFT JOIN uf_jcl_kq_cqjg T2 ON T1.yg = T2.ygid AND T1.rq = T2.rq WHERE T1.zt = 1 UNION ALL " + "SELECT T2.id, T2.fbid, T2.bm, T2.zw, T2.ygid,rqlx, T2.rq, T2.bc, T1.jtlx, " + ifNullFunction + "(T1.sc,0) FROM uf_jcl_kq_cqjt T1 LEFT JOIN uf_jcl_kq_cqjg T2 ON T1.yg = T2.ygid AND T1.rq = T2.rq WHERE T1.zt = 1 UNION ALL " + - "SELECT T2.id, T2.fbid, T2.bm, T2.zw, T2.ygid, T2.rq, T2.bc, T1.bdklx, 1 FROM uf_jcl_kq_bdkjl T1 LEFT JOIN uf_jcl_kq_cqjg T2 ON T1.bdkry = T2.ygid AND T1.dkrq = T2.rq WHERE T1.jlzt = 1 AND T2.id IS NOT NULL " + "SELECT T2.id, T2.fbid, T2.bm, T2.zw, T2.ygid,rqlx, T2.rq, T2.bc, T1.bdklx, 1 FROM uf_jcl_kq_bdkjl T1 LEFT JOIN uf_jcl_kq_cqjg T2 ON T1.bdkry = T2.ygid AND T1.dkrq = T2.rq WHERE T1.jlzt = 1 AND T2.id IS NOT NULL " + - ") ta GROUP BY id, ygid, rq, fbid, bm, zw, bc"; + ") ta GROUP BY id, ygid,rqlx, rq, fbid, bm, zw, bc"; boolean createSign = DbTools.update(createViewSql); bs.writeLog("创建视图结果:" + createSign); diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.java index 503bdae..d97fe23 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.java @@ -80,8 +80,8 @@ public class ShiftServiceImpl extends Service implements ShiftService { } //1-比较各候选班次实际打卡正常的时间点个数B String resultB = Util.null2String(result.get("judgePartB")); - if (resultB.compareTo(compareB) != 0) { - result = resultB.compareTo(compareB) < 0 ? compareMap : result; + if (!resultB.equals(compareB)) { + result = Double.valueOf(resultB) < Double.valueOf(compareB) ? compareMap : result; continue; } //2-B相同时,比较B/A最大。各候选班次(结合了请假、出差、加班等)需要打卡的时间点个数A @@ -96,22 +96,22 @@ public class ShiftServiceImpl extends Service implements ShiftService { //3-B/A相同时C最小。异常总分钟数C String resultC = Util.null2String(result.get("judgePartC")); String compareC = Util.null2String(compareMap.get("judgePartC")); - if (resultC.compareTo(compareC) != 0) { - result = resultC.compareTo(compareC) > 0 ? compareMap : result; + if (!resultC.equals(compareC)) { + result = Double.valueOf(resultC)>Double.valueOf(compareC) ? compareMap : result; continue; } //4-C相同时D最小,冗余总分钟数D String resultD = Util.null2String(result.get("judgePartD")); String compareD = Util.null2String(compareMap.get("judgePartD")); - if (resultD.compareTo(compareD) != 0) { - result = resultD.compareTo(compareD) > 0 ? compareMap : result; + if (!resultD.equals(compareD)) { + result = Double.valueOf(resultD)>Double.valueOf(compareD) ? compareMap : result; continue; } //5-D相同时E最小,班次优先级E(候选班组上有各班次的优先级设置) String resultE = Util.null2String(result.get("judgePartE")); String compareE = Util.null2String(compareMap.get("judgePartE")); - if (resultE.compareTo(compareE) != 0) { - result = resultE.compareTo(compareE) > 0 ? compareMap : result; + if (!resultE.equals(compareE)) { + result = Double.valueOf(resultE)>Double.valueOf(compareE) ? compareMap : result; } } //全天没有打卡时,看上一个工作日的班次为优先,如果前一个工作日也没有班次,按优先级 diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java index 73c013c..271154a 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java @@ -47,11 +47,11 @@ public class AttendanceanalysisAction { public String getSchedulingData(@Context HttpServletRequest request, @Context HttpServletResponse response) { try { log.info("********AttendanceanalysisAction start********"); - Map paramMap = ParamUtil.request2Map(request); -// Map paramMap = Maps.newHashMap(); -// paramMap.put("startDate","2024-12-08"); -// paramMap.put("endDate","2024-12-08"); -// paramMap.put("userIds","25"); + Map paramMap = ParamUtil.request2Map(request); + // Map paramMap = Maps.newHashMap(); +// paramMap.put("startDate","2024-12-10"); +// paramMap.put("endDate","2024-12-10"); +// paramMap.put("userIds","84"); String startDate = Util.null2String(paramMap.get("startDate")); String startBeforeDate = DateUtil.beforeDay(startDate,2); @@ -143,6 +143,9 @@ public class AttendanceanalysisAction { String companystartDate = Util.null2String(userMap.get("companystartdate")); //离职日期 String terminationDate = Util.null2String(departEmployeeMap.get(userId)); + if (!"".equals(terminationDate) && DateUtil.getTime(terminationDate).compareTo(DateUtil.getTime(companystartDate)) <=0){ + terminationDate=""; + } log.info("***********analysis userId:{},anyslsSize:{},allsize:{} start***********", userId,anyslsSize,userList.size()); //出勤结果,进出时间 @@ -258,6 +261,10 @@ public class AttendanceanalysisAction { String companystartDate = Util.null2String(userGroupMap.get(userId).get(0).get("companystartdate")); //离职日期 String terminationDate = Util.null2String(departEmployeeMap.get(userId)); + if (!"".equals(terminationDate) && DateUtil.getTime(terminationDate).compareTo(DateUtil.getTime(companystartDate)) <=0){ + terminationDate=""; + } + //出勤结果,进出时间 Map> clockInTimeMap = Maps.newHashMap(); @@ -300,7 +307,7 @@ public class AttendanceanalysisAction { log.info("***********analysis userId:{} date: {} error ***********", userId,date); log.error("execute fail,catch error: [{}]",e); if (userIds.split(",").length ==1 && startDate.equals(endDate)){ - throw new AttendanceRunTimeException("analysis error "); + throw new AttendanceRunTimeException(e); } } } @@ -314,7 +321,7 @@ public class AttendanceanalysisAction { log.info("***********analysis userId:{} date: {} error ***********", userId,date); log.error("execute fail,catch error: [{}]",e); if (userIds.split(",").length ==1 && startDate.equals(endDate)){ - throw new AttendanceRunTimeException("analysis error "); + throw new AttendanceRunTimeException(e); } } } diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/HolidayGenerationJob.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/HolidayGenerationJob.java index 65c8b6b..0b08303 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/HolidayGenerationJob.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/HolidayGenerationJob.java @@ -25,6 +25,11 @@ public class HolidayGenerationJob extends BaseCronJob { * 发放日期 */ private String executeDate; + + /** + * + */ + private String scopeid; @Override public void execute() { log.info("**********HolidayGenerationJob start ************"); diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java index 3965e24..1c42c7b 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java @@ -252,13 +252,14 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{ endYear = beginYear+1; //分割日期 - int month = DateUtil.getBetWeenMonths(qsrq,sxrq); - if (month < 0){ - month = 0; - } - int historySeniority = seniority-month; - divideTime = DateUtil.beforeMonth(qsrq,historySeniority); - divideTime = sxrq.split("-")[0]+"-"+divideTime.split("-")[1]+"-"+divideTime.split("-")[2]; +// int month = DateUtil.getBetWeenMonths(qsrq,sxrq); +// if (month < 0){ +// month = 0; +// } +// int historySeniority = seniority-month; +// divideTime = DateUtil.beforeMonth(qsrq,historySeniority); + divideTime = sxrq.split("-")[0]+"-"+qsrq.split("-")[1]+"-"+qsrq.split("-")[2]; + divideTime = DateUtil.nextMonth(divideTime,1,DateUtil.yyyyMM)+"-01"; } Map beginYearmap = VocationCommonUtil.getVocationMap(vocationList, beginYear, yjzd,userId); diff --git a/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java b/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java index 1c1dedf..a4b3653 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java +++ b/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java @@ -647,6 +647,9 @@ public class VocationCommonUtil { double ktsc = Double.valueOf(Util.null2String(insertHoliDayParam.get("ktsc"))); String startDate = sxrq; String endtDate = jzrq; + if (!"".equals(jzrqzd) && !"".equals(companystartdate) && DateUtil.getTime(jzrqzd).compareTo(DateUtil.getTime(companystartdate)) <=0){ + jzrqzd=""; + } if (!"".equals(companystartdate) && DateUtil.getTime(companystartdate).compareTo(DateUtil.getTime(sxrq)) >=0 && DateUtil.getTime(companystartdate).compareTo(DateUtil.getTime(jzrq)) <=0){ startDate = companystartdate; diff --git a/src/com/engine/jucailinkq/attendance/workflow/service/impl/AskForLeaveServiceImpl.java b/src/com/engine/jucailinkq/attendance/workflow/service/impl/AskForLeaveServiceImpl.java index 92cbab1..1053549 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/service/impl/AskForLeaveServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/workflow/service/impl/AskForLeaveServiceImpl.java @@ -157,7 +157,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic //假期余额使用规则,0-假别优先,1-失效日期优先,默认0 String jqyeUsePriority = Util.null2String(mainTableData.get("yesygz")); if ("".equals(jqyeUsePriority)) { - jqyeUsePriority = "0"; + jqyeUsePriority = "1"; } //获取请假日期集合 List leaveDateList = DateUtil.getDatesBetween(startDate, endDate); @@ -289,7 +289,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic } if (canUseJqyeList.size() > 0) { //按照延期失效日期早+级联优先级高(优先数字小)规则排序 - canUseJqyeList.sort(Comparator.comparing((Map h) -> (String) h.get("yqsxrq")) + canUseJqyeList.sort(Comparator.comparing((Map h) -> (String) h.get("yqsxrq")).thenComparing(h->h.get("sxrq").toString()) .thenComparing(h -> (Integer) h.get("jbPriorityValue"))); } @@ -1816,7 +1816,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic String startDate, String leaveEmpId, String empName, String modeId, List errorMessage, int jbPriorityValue) { String itemId = Util.null2String(holidayItem.get("id")); - 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 yqsxrq, modedatacreatedate, modedatacreatetime"; + 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 yqsxrq, sxrq"; List> holidayBalanceList = DbTools.getSqlToList(sql, leaveEmpId, itemId, startDate, startDate); //获取延期失效日期最晚的一条 Map maxYqsxrqMap = holidayBalanceList.stream().reduce((m1, m2) -> m2).orElse(null); diff --git a/workflow/request/hrmattendance/HrmjucailWorkOvertimePlan_e9.jsp b/workflow/request/hrmattendance/HrmjucailWorkOvertimePlan_e9.jsp index 6a1082e..0211597 100644 --- a/workflow/request/hrmattendance/HrmjucailWorkOvertimePlan_e9.jsp +++ b/workflow/request/hrmattendance/HrmjucailWorkOvertimePlan_e9.jsp @@ -113,6 +113,12 @@ WfForm.changeFieldValue(WfForm.convertFieldNameToId("gsrq", "detail_1")+"_"+rowindex, { value: resultData[0].gsrq }); + WfForm.changeFieldValue(WfForm.convertFieldNameToId("jblx", "detail_1")+"_"+rowindex, { + value: resultData[0].jblx, + specialobj:[ + {id:resultData[0].jblx,name:resultData[0].jblxName} + ] + }); } }else { let errorData = res.data.errorInfo; @@ -157,7 +163,7 @@ if (WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq","detail_1")+"_"+rowIndex) != value){ WfForm.changeFieldValue(WfForm.convertFieldNameToId("jsrq","detail_1")+"_"+rowIndex,{value:value}) console.log("WfForm.bindDetailFieldChangeEvent--",id,rowIndex,value); - // updateDetail(rowIndex); + updateDetail(rowIndex); } });