From 391c4cbc0898baafba50d6080f4ab3bba583eb3a Mon Sep 17 00:00:00 2001 From: liuliang <401809302@qq.com> Date: Fri, 7 Feb 2025 18:24:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E9=A1=B5=E9=9D=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E5=8A=A0=E7=8F=AD=E6=97=B6=E9=97=B4=E8=AE=A1?= =?UTF-8?q?=E7=AE=97bug=EF=BC=8C=E6=B8=85=E7=90=86=E7=A6=BB=E8=81=8C?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=89=93=E5=8D=A1?= =?UTF-8?q?=E5=8C=B9=E9=85=8Dbug=E4=BF=AE=E5=A4=8D=EF=BC=8C=E8=A7=84?= =?UTF-8?q?=E5=BE=8B=E6=8E=92=E7=8F=ADbug=E4=BF=AE=E5=A4=8D,=E5=81=87?= =?UTF-8?q?=E6=9C=9F=E5=8F=91=E6=94=BE=E8=B5=B7=E7=AE=97=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BC=82=E5=B8=B8bug=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E3=80=82=E8=AF=B7=E5=81=87=E3=80=81=E5=8A=A0=E7=8F=AD=E3=80=81?= =?UTF-8?q?=E5=87=BA=E5=B7=AE=E8=A1=A5=E6=89=93=E5=8D=A1=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=BD=92=E6=A1=A3=E8=87=AA=E5=8A=A8=E5=88=86=E6=9E=90=E5=87=BA?= =?UTF-8?q?=E5=8B=A4=E5=8A=9F=E8=83=BD=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmd/GetScheduleResultListCmd.java | 1 + .../workovertime/GetOvertimeDurationCmd.java | 23 +++-- .../job/AttendanceAnalysisJob.java | 4 +- .../impl/AbnormalAttendanceServiceImpl.java | 4 + .../impl/ForgetClockInServiceImpl.java | 2 + .../wrapper/AttendaceActionWrapper.java | 8 +- .../wrapper/AttendanceAnalysisWrapper.java | 7 +- .../UpdateAttendanceResultWrapper.java | 22 ++++- .../service/impl/WorkRulesServiceImpl.java | 4 +- .../page/cmd/GetPersonPageServiceCmd.java | 93 ++++++++++--------- .../cmd/GetManagerHavePersonCmd.java | 44 +++++++++ .../commonutil/PersongroupCommonUtil.java | 22 ++--- .../service/PersonGroupService.java | 2 + .../service/impl/PersonGroupServiceImpl.java | 7 ++ .../persongroup/web/PersonGroupAction.java | 16 ++++ .../attendance/vacation/cmd/VocationCmd.java | 28 +++++- .../tactics/ByIntervalPayMentWay.java | 3 +- .../service/impl/VocationServiceImpl.java | 4 +- .../GenerateWorkflowVocationAction.java | 4 + .../common/cmd/CleanHaveLeaveUserDataCmd.java | 4 + .../GetPersonVocationBySuitOrganzation.java | 13 ++- 21 files changed, 227 insertions(+), 88 deletions(-) create mode 100644 src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetManagerHavePersonCmd.java diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.java index 4b3f993..59c98e5 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.java @@ -215,6 +215,7 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand 0) { String hsdw = Util.null2String(leaveEarlyAbnormal.get(0).get("hsdw")); String itemduration = Util.null2String(leaveEarlyAbnormal.get(0).get("itemduration")); + String jbsczkchssc = Util.null2String(leaveEarlyAbnormal.get(0).get("jbsczkchssc")); AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum) leaveEarlyAbnormal.get(0).get("itemType"); if (itemType == AttendanceItemTypeEnum.MISSE_CARD) { //下午漏卡 - leaveElaryTime = jbsc; + if ("".equals(jbsczkchssc) || CheckBoxEnum.CHECKED.getKey().equals(jbsczkchssc)){ + leaveElaryTime = jbsc; + } } else { - if (AccountingUnitEnum.DAY.getKey().equals(hsdw)) { - leaveElaryTime = Integer.valueOf(scheduleMap.get("edsc").toString()) * Double.valueOf(itemduration); - } else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)) { - leaveElaryTime = Double.valueOf(itemduration) * 60; - } else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)) { - leaveElaryTime = Double.valueOf(itemduration); - } else if (AccountingUnitEnum.ONCE.getKey().equals(hsdw)) { - leaveElaryTime = jbsc; + if ("".equals(jbsczkchssc) || CheckBoxEnum.CHECKED.getKey().equals(jbsczkchssc)){ + if (AccountingUnitEnum.DAY.getKey().equals(hsdw)) { + leaveElaryTime = Integer.valueOf(scheduleMap.get("edsc").toString()) * Double.valueOf(itemduration); + } else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)) { + leaveElaryTime = Double.valueOf(itemduration) * 60; + } else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)) { + leaveElaryTime = Double.valueOf(itemduration); + } else if (AccountingUnitEnum.ONCE.getKey().equals(hsdw)) { + leaveElaryTime = jbsc; + } } } } else { diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java index 00d4221..5a133ae 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java @@ -56,7 +56,7 @@ public class AttendanceAnalysisJob extends BaseCronJob { //查询所有在职人员 - String queryUserSql = "select id,departmentid,subcompanyid1,companystartdate,seclevel from hrmresource where status <> '5' and status <> '4' and status <> '7'"; + String queryUserSql = "select id,departmentid,subcompanyid1,companystartdate,seclevel from hrmresource where status <> '5' and status <> '4' and status <> '7' and (belongto is null or belongto='-1')"; List> userList = DbTools.getSqlToList(queryUserSql); @@ -66,7 +66,7 @@ public class AttendanceAnalysisJob extends BaseCronJob { List> departEmployeePartition = Lists.partition(departEmployeeList,200); for (List userIdPartition :departEmployeePartition){ - String sql = "select id,departmentid,subcompanyid1,companystartdate from hrmresource where id in ("+String.join(",",userIdPartition)+")"; + String sql = "select id,departmentid,subcompanyid1,companystartdate from hrmresource where id in ("+String.join(",",userIdPartition)+") and (belongto is null or belongto='-1')"; userList.addAll(DbTools.getSqlToList(sql)); } } diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java index 5752399..8e37e7c 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java @@ -133,6 +133,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt if (!"".equals(jbwdhlfzs) && between > Integer.valueOf(jbwdhlfzs)){ Map saveWorkTimeBeLateParam = Maps.newHashMap(); String kczgsc = Util.null2String(lateItems.get(0).get("kczgsc")); + String jbsczkchssc = Util.null2String(lateItems.get(0).get("jbsczkchssc")); double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES,Double.valueOf(scheduleResult.get(0).get("edsc").toString())); saveWorkTimeBeLateParam.put("item",lateItems.get(0).get("key")); saveWorkTimeBeLateParam.put("itemduration",itemduration); @@ -141,6 +142,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("hsl",hsl); saveWorkTimeBeLateParam.put("kczgsc",kczgsc); + saveWorkTimeBeLateParam.put("jbsczkchssc",jbsczkchssc); saveWorkTimeBeLateParam.put("classStartTime",classStartTime); saveWorkTimeBeLateParam.put("classEndTime",clockInTime); resultList.add(saveWorkTimeBeLateParam); @@ -294,6 +296,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt if (!"".equals(jbzzhlfzs) && between > Integer.valueOf(jbzzhlfzs)){ log.debug("between :{},jbzzhlfzs:{}",between,jbzzhlfzs); String kczgsc = Util.null2String(beEarlyItems.get(0).get("kczgsc")); + String jbsczkchssc = Util.null2String(beEarlyItems.get(0).get("jbsczkchssc")); double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES,Double.valueOf(scheduleResult.get(0).get("edsc").toString())); Map saveWorkTimeBeLateParam = Maps.newHashMap(); saveWorkTimeBeLateParam.put("item",beEarlyItems.get(0).get("key")); @@ -302,6 +305,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LEAVE_EARLY); saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("kczgsc",kczgsc); + saveWorkTimeBeLateParam.put("jbsczkchssc",jbsczkchssc); saveWorkTimeBeLateParam.put("hsl",hsl); saveWorkTimeBeLateParam.put("classStartTime",clockInTime); saveWorkTimeBeLateParam.put("classEndTime",classEndTime); diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java index a5b024f..146473d 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java @@ -55,6 +55,7 @@ public class ForgetClockInServiceImpl extends Service implements ForgetClockInSe forgetParam.put("itemType", AttendanceItemTypeEnum.MISSE_CARD); forgetParam.put("zysd",attendanceItems.get(0).get("zysd")); forgetParam.put("kczgsc", CheckBoxEnum.CHECKED.getKey()); + forgetParam.put("jbsczkchssc", CheckBoxEnum.CHECKED.getKey()); // forgetParam.put("classStartTime",Utils.getkssjTime(classInfo,analysisDate)); //forgetParam.put("classEndTime",Utils.getjssjTime(classInfo,analysisDate)); //forgetParam.put("betweenMinutes",DateUtil.getBetWeenMinutes(forgetParam.get("classStartTime").toString(),forgetParam.get("classEndTime").toString())); @@ -124,6 +125,7 @@ public class ForgetClockInServiceImpl extends Service implements ForgetClockInSe forgotMap.put("bdlx",bdlx); forgotMap.put("hsdw",hsdw); forgotMap.put("kczgsc",items.get(0).get("kczgsc")); + forgotMap.put("jbsczkchssc",items.get(0).get("jbsczkchssc")); forgotMap.put("betweenMinutes",Double.valueOf(edfzs).intValue()); forgotMap.put("hsl",items.get(0).get("hsl")); forgotMap.put("classStartTime",dtkssj); diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendaceActionWrapper.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendaceActionWrapper.java index a8816e9..45d5097 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendaceActionWrapper.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendaceActionWrapper.java @@ -99,7 +99,7 @@ public class AttendaceActionWrapper extends Service { List> hxbzList = DbTools.getSqlToList(queryHxbz); - String queryUserSql = "select id,companystartdate,seclevel,departmentid,subcompanyid1 from hrmresource where status <> '5' and status <> '4' and status <> '7'"; + String queryUserSql = "select id,companystartdate,seclevel,departmentid,subcompanyid1 from hrmresource where status <> '5' and status <> '4' and status <> '7' and (belongto is null or belongto='-1')"; List> userList = DbTools.getSqlToList(queryUserSql); String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ? order by signdate,signtime"; List> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate); @@ -125,7 +125,7 @@ public class AttendaceActionWrapper extends Service { 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){ + if (!"".equals(terminationDate) && !"".equals(companystartDate) && DateUtil.getTime(terminationDate).compareTo(DateUtil.getTime(companystartDate)) <=0){ terminationDate=""; } @@ -217,7 +217,7 @@ public class AttendaceActionWrapper extends Service { String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ? order by signdate,signtime"; List> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate); - String queryUserSql = "select id,companystartdate,seclevel,departmentid,subcompanyid1 from hrmresource where id in ("+userIds+")"; + String queryUserSql = "select id,companystartdate,seclevel,departmentid,subcompanyid1 from hrmresource where id in ("+userIds+") and (belongto is null or belongto='-1')"; List> userList = DbTools.getSqlToList(queryUserSql); Map>> userGroupMap = userList.stream().collect(Collectors.groupingBy(e->e.get("id").toString())); @@ -243,7 +243,7 @@ public class AttendaceActionWrapper extends Service { 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){ + if (!"".equals(terminationDate) && !"".equals(companystartDate) && DateUtil.getTime(terminationDate).compareTo(DateUtil.getTime(companystartDate)) <=0){ terminationDate=""; } diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java index 2d0185e..4f620bd 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java @@ -176,7 +176,7 @@ public class AttendanceAnalysisWrapper extends Service { List> analysisDateClockInTimeList = utilService.getClockInTime(getClockTimeParam); //分析考勤 Map recordDataTime1 = analysis(userId, analysisDate, analysisDateClockInTimeList, schedulingResultsMap.get(analysisDate), analysisDateAttendanceItems, workHourItems,(Map)schedulMap.get("clockInTimeDataMap"), - (List>)analysisParam.get("evectionList"),(List>)analysisParam.get("askforList")); + (List>)analysisParam.get("evectionList"),(List>)analysisParam.get("askforList"),(List>)schedulMap.get("scheduleDateMap")); clockInTimeMap.put(analysisDate, recordDataTime1); } }catch (Exception e){ @@ -327,7 +327,7 @@ public class AttendanceAnalysisWrapper extends Service { //打卡数据 List> analysisDateClockInTimeList = utilService.getClockInTime(getClockTimeParam); Map recordDataTime1 = analysis(userId, analysisDate, analysisDateClockInTimeList, schedulingResultsMap.get(analysisDate), analysisDateAttendanceItems, workHourItems,(Map)schedulMap.get("clockInTimeDataMap"), - (List>)analysisParam.get("evectionList"),(List>)analysisParam.get("askforList")); + (List>)analysisParam.get("evectionList"),(List>)analysisParam.get("askforList"),(List>)schedulMap.get("scheduleDateMap")); clockInTimeMap.put(analysisDate, recordDataTime1); } @@ -341,7 +341,7 @@ public class AttendanceAnalysisWrapper extends Service { * @param attendanceItems 考勤项目 */ public Map analysis(String userId, String analysisDate, List> clockInTimeList, List> scheduleResult, List> attendanceItems, List> workHourItems - ,Map clockInTimeDataMap,List> evectionList,List> askforList) { + ,Map clockInTimeDataMap,List> evectionList,List> askforList,List> scheduleDateMap) { if (scheduleResult != null){ scheduleResult = scheduleResult.stream().sorted(Comparator.comparing(e -> DateUtil.getTime(Utils.getkssjTime(e, analysisDate)).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); } @@ -392,6 +392,7 @@ public class AttendanceAnalysisWrapper extends Service { params.put("workHourItems", workHourItems); params.put("attendanceItems", attendanceItems); params.put("allowanceMap", allowanceMap); + params.put("scheduleDateMap",scheduleDateMap); return (Map)updateAttendanceResultWrapper.recordNoClass(params).get("recordDataTime"); } diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java index 6035edf..2b14e84 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java @@ -599,14 +599,25 @@ public class UpdateAttendanceResultWrapper extends Service { //津贴 Map allowanceMap = (Map)params.get("allowanceMap"); + List> scheduleDateMap = (List>)params.get("scheduleDateMap"); + log.debug("userId : {} ,analysisDate: {} have no class",userId,analysisDate); Map recordParam = Maps.newHashMap(); recordParam.put("userId",userId); recordParam.put("analysisDate",analysisDate); recordParam.put("recordData",Lists.newArrayList()); - String rqlx = CommonUtil.getRqlx(userId,analysisDate); - recordParam.put("rqlx",rqlx); + String rqlx = null; + String sfxx = ""; + if (scheduleDateMap != null && scheduleDateMap.size() >0){ + rqlx = scheduleDateMap.get(0).get("rqlx").toString(); + sfxx = scheduleDateMap.get(0).get("sfxx").toString(); + recordParam.put("rqlx",scheduleDateMap.get(0).get("rqlx")); + }else { + rqlx = CommonUtil.getRqlx(userId,analysisDate); + recordParam.put("rqlx",rqlx); + } + recordParam.put("classInfo",Lists.newArrayList()); recordParam.put("recordDataTime",Maps.newHashMap()); @@ -619,15 +630,20 @@ public class UpdateAttendanceResultWrapper extends Service { utilService.recordItem(recordParam); return recordParam; } - if (rqlx.equals(DateTypeEnum.WORK_DAY.getKey()) || rqlx.equals(DateTypeEnum.CHANGECLASS.getKey())){ + if ((rqlx.equals(DateTypeEnum.WORK_DAY.getKey()) || rqlx.equals(DateTypeEnum.CHANGECLASS.getKey())) && !CheckBoxEnum.CHECKED.getKey().equals(sfxx)){ recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey()); recordDataList.add(new HashMap(){{ put("item",SystemItemEnum.NO_SCHEDULING.getKey()); put("itemduration","NULL"); }}); }else { + recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey()); recordParam.put("sfxx",CheckBoxEnum.CHECKED.getKey()); + recordDataList.add(new HashMap(){{ + put("item",SystemItemEnum.REST_DAY.getKey()); + put("itemduration","NULL"); + }}); } diff --git a/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java b/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java index 26a7022..11e65c9 100644 --- a/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java @@ -69,9 +69,11 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService { if (bcids.size() > 0){ sqlWhere = sqlWhere + " and t.id in ("+String.join(",",bcids)+")"; } - sqlWhere = sqlWhere + " or attendance_organization is null"; + sqlWhere = sqlWhere + " or t.attendance_organization is null"; table.setSqlwhere(sqlWhere); + table.setSqlorderby("t.modedatacreatedate,t.modedatacreatetime"); + table.setSqlprimarykey("id"); diff --git a/src/com/engine/jucailinkq/attendance/component/page/cmd/GetPersonPageServiceCmd.java b/src/com/engine/jucailinkq/attendance/component/page/cmd/GetPersonPageServiceCmd.java index 13ba124..89d7726 100644 --- a/src/com/engine/jucailinkq/attendance/component/page/cmd/GetPersonPageServiceCmd.java +++ b/src/com/engine/jucailinkq/attendance/component/page/cmd/GetPersonPageServiceCmd.java @@ -76,64 +76,67 @@ public class GetPersonPageServiceCmd extends AbstractCommonCommand> holidayShowSet = DbTools.getSqlToList(sql); Map> newholidayMap = Maps.newHashMap(); - for (Map holidayShow:holidayShowSet){ - String jqxm = Util.null2String(holidayShow.get("jqxm")); - Map fatherHoliday = holidayMap.get(jqxm); - if (fatherHoliday == null){ - continue; - } - String sonjqxm = Util.null2String(holidayShow.get("zjq")); - String zsdw = Util.null2String(holidayShow.get("zsdw")); - String tzhwxs = Util.null2String(holidayShow.get("tzhwxs")); - if (!"".equals(sonjqxm)){ - for (String item:sonjqxm.split(",")){ - Map sonHoliday = holidayMap.get(item); - if (sonHoliday != null){ - fatherHoliday.put("allHoliday",Double.valueOf(fatherHoliday.get("allHoliday").toString())+Double.valueOf(sonHoliday.get("allHoliday").toString())); - fatherHoliday.put("oldHoliday",Double.valueOf(fatherHoliday.get("oldHoliday").toString())+Double.valueOf(sonHoliday.get("oldHoliday").toString())); - fatherHoliday.put("nowHoliday",Double.valueOf(fatherHoliday.get("nowHoliday").toString())+Double.valueOf(sonHoliday.get("nowHoliday").toString())); + if (holidayShowSet.size() == 0){ + newholidayMap = holidayMap; + }else { + for (Map holidayShow:holidayShowSet){ + String jqxm = Util.null2String(holidayShow.get("jqxm")); + Map fatherHoliday = holidayMap.get(jqxm); + if (fatherHoliday == null){ + continue; + } + String sonjqxm = Util.null2String(holidayShow.get("zjq")); + String zsdw = Util.null2String(holidayShow.get("zsdw")); + String tzhwxs = Util.null2String(holidayShow.get("tzhwxs")); + if (!"".equals(sonjqxm)){ + for (String item:sonjqxm.split(",")){ + Map sonHoliday = holidayMap.get(item); + if (sonHoliday != null){ + fatherHoliday.put("allHoliday",Double.valueOf(fatherHoliday.get("allHoliday").toString())+Double.valueOf(sonHoliday.get("allHoliday").toString())); + fatherHoliday.put("oldHoliday",Double.valueOf(fatherHoliday.get("oldHoliday").toString())+Double.valueOf(sonHoliday.get("oldHoliday").toString())); + fatherHoliday.put("nowHoliday",Double.valueOf(fatherHoliday.get("nowHoliday").toString())+Double.valueOf(sonHoliday.get("nowHoliday").toString())); + } } } - } - String hsdw = Util.null2String(fatherHoliday.get("hsdw")); - double tzhwxsValue = Double.valueOf(tzhwxs); - if (zsdw.equals("0")){ - //天 + String hsdw = Util.null2String(fatherHoliday.get("hsdw")); + double tzhwxsValue = Double.valueOf(tzhwxs); + if (zsdw.equals("0")){ + //天 - if (AccountingUnitEnum.HOUR.getKey().equals(hsdw) && !"".equals(tzhwxs)){ + if (AccountingUnitEnum.HOUR.getKey().equals(hsdw) && !"".equals(tzhwxs)){ - fatherHoliday.put("allHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("allHoliday").toString()),tzhwxsValue)); - fatherHoliday.put("oldHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("oldHoliday").toString()),tzhwxsValue)); - fatherHoliday.put("nowHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("nowHoliday").toString()),tzhwxsValue)); + fatherHoliday.put("allHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("allHoliday").toString()),tzhwxsValue)); + fatherHoliday.put("oldHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("oldHoliday").toString()),tzhwxsValue)); + fatherHoliday.put("nowHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("nowHoliday").toString()),tzhwxsValue)); - }else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)){ + }else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)){ - fatherHoliday.put("allHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("allHoliday").toString()),tzhwxsValue*60)); - fatherHoliday.put("oldHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("oldHoliday").toString()),tzhwxsValue*60)); - fatherHoliday.put("nowHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("nowHoliday").toString()),tzhwxsValue*60)); + fatherHoliday.put("allHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("allHoliday").toString()),tzhwxsValue*60)); + fatherHoliday.put("oldHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("oldHoliday").toString()),tzhwxsValue*60)); + fatherHoliday.put("nowHoliday", Utils.divide(Double.valueOf(fatherHoliday.get("nowHoliday").toString()),tzhwxsValue*60)); - } - }else if (zsdw.equals("1")){ - //小时 - if (AccountingUnitEnum.DAY.getKey().equals(hsdw) && !"".equals(tzhwxs)){ - fatherHoliday.put("allHoliday", Double.valueOf(fatherHoliday.get("allHoliday").toString())*tzhwxsValue); - fatherHoliday.put("oldHoliday", Double.valueOf(fatherHoliday.get("oldHoliday").toString())*tzhwxsValue); - fatherHoliday.put("nowHoliday", Double.valueOf(fatherHoliday.get("nowHoliday").toString())*tzhwxsValue); - }else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)){ - - fatherHoliday.put("allHoliday", Double.valueOf(fatherHoliday.get("allHoliday").toString())*60); - fatherHoliday.put("oldHoliday", Double.valueOf(fatherHoliday.get("oldHoliday").toString())*60); - fatherHoliday.put("nowHoliday", Double.valueOf(fatherHoliday.get("nowHoliday").toString())*60); + } + }else if (zsdw.equals("1")){ + //小时 + if (AccountingUnitEnum.DAY.getKey().equals(hsdw) && !"".equals(tzhwxs)){ + fatherHoliday.put("allHoliday", Double.valueOf(fatherHoliday.get("allHoliday").toString())*tzhwxsValue); + fatherHoliday.put("oldHoliday", Double.valueOf(fatherHoliday.get("oldHoliday").toString())*tzhwxsValue); + fatherHoliday.put("nowHoliday", Double.valueOf(fatherHoliday.get("nowHoliday").toString())*tzhwxsValue); + }else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)){ + + fatherHoliday.put("allHoliday", Double.valueOf(fatherHoliday.get("allHoliday").toString())*60); + fatherHoliday.put("oldHoliday", Double.valueOf(fatherHoliday.get("oldHoliday").toString())*60); + fatherHoliday.put("nowHoliday", Double.valueOf(fatherHoliday.get("nowHoliday").toString())*60); - } + } + } + newholidayMap.put(jqxm,fatherHoliday); } - newholidayMap.put(jqxm,fatherHoliday); - - } + resultMap.put("holiday",newholidayMap); int diffdays = DateUtil.getDays(generateDate, Calendar.DAY_OF_MONTH); String startDate = generateDate + "-01"; diff --git a/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetManagerHavePersonCmd.java b/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetManagerHavePersonCmd.java new file mode 100644 index 0000000..6863c41 --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetManagerHavePersonCmd.java @@ -0,0 +1,44 @@ +package com.engine.jucailinkq.attendance.component.persongroup.cmd; + +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import com.engine.jucailinkq.attendance.component.persongroup.commonutil.PersongroupCommonUtil; +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 weaver.general.Util; + +import java.util.List; +import java.util.Map; + +public class GetManagerHavePersonCmd extends AbstractCommonCommand> { + public GetManagerHavePersonCmd(Map params){ + this.params=params; + } + @Override + public BizLogContext getLogContext() { + return null; + } + + @Override + public Map execute(CommandContext commandContext) { + String sql = "select * from uf_ryqz where userfor=5"; + List> personnelGrouping = DbTools.getSqlToList(sql); + + Map resultMap = Maps.newHashMap(); + List> resultList = Lists.newArrayList(); + resultMap.put("resultList",resultList); + for (Map personnelGroupMap : personnelGrouping){ + String fzgly = Util.null2String(personnelGroupMap.get("fzgly")); + Map dataMap = Maps.newHashMap(); + dataMap.put("manager",fzgly); + sql = "select a.list_type,b.mainid,b.empid,b.filters,b.bdate,b.edate,b.sqltj from uf_ryqz a left join uf_ryqz_dt1 b on a.id=b.mainid where a.id=?"; + List> list = DbTools.getSqlToList(sql,personnelGroupMap.get("id")); + dataMap.put("personSet", PersongroupCommonUtil.getUserIdsByPersonnelGrouping(list, DateUtil.getCurrentDate())); + resultList.add(dataMap); + } + return resultMap; + } +} diff --git a/src/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java b/src/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java index 1a0e8a1..5f43b70 100644 --- a/src/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java +++ b/src/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java @@ -126,26 +126,20 @@ public class PersongroupCommonUtil { * @return */ public static int getNeedSkipDay(String jjrcl,String gxrcl,String rlmc,String dateCondition){ - String sql = "select count(0) num from uf_jcl_kq_rlxx where rlmc=? and "+dateCondition; + String sql = "select rqlx from uf_jcl_kq_rlxx where rlmc=? and "+dateCondition; String conditionSql = ""; int needSkipDay = 0; + + List> resutlList = DbTools.getSqlToList(sql,rlmc); + if ("1".equals(jjrcl)){ //节假日为跳过 - conditionSql = conditionSql + " rqlx=1"; + needSkipDay += resutlList.stream().filter(e->"1".equals(e.get("rqlx"))).collect(Collectors.toList()).size(); } if ("1".equals(gxrcl)){ - //公休日为跳过 - if ("".equals(conditionSql)){ - conditionSql = conditionSql + " rqlx=2 or rqlx=3"; - }else { - conditionSql = conditionSql + " or rqlx=2 or rqlx=3"; - } - } - if (!"".equals(conditionSql)){ - sql = sql + " and ( "+conditionSql+")"; - log.debug("getNeedSkipDay sql : {},rlmc : {}",sql,rlmc); - Map objectMap = DbTools.getSqlToMap(sql,rlmc); - needSkipDay = Integer.valueOf(objectMap.get("num").toString()); + //节假日为跳过 + needSkipDay += resutlList.stream().filter(e->"2".equals(e.get("rqlx")) || "3".equals(e.get("rqlx"))).collect(Collectors.toList()).size(); + } return needSkipDay; diff --git a/src/com/engine/jucailinkq/attendance/component/persongroup/service/PersonGroupService.java b/src/com/engine/jucailinkq/attendance/component/persongroup/service/PersonGroupService.java index e32330e..c451999 100644 --- a/src/com/engine/jucailinkq/attendance/component/persongroup/service/PersonGroupService.java +++ b/src/com/engine/jucailinkq/attendance/component/persongroup/service/PersonGroupService.java @@ -9,4 +9,6 @@ public interface PersonGroupService { Map getHrmCondition(Map params, User user); Map saveApplicableOrganization(Map params); + + Map getManagerHavePerson(Map params); } diff --git a/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java b/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java index 64f57e1..8406167 100644 --- a/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java @@ -1,6 +1,8 @@ package com.engine.jucailinkq.attendance.component.persongroup.service.impl; +import com.engine.jucailinkq.attendance.component.persongroup.cmd.DeleteBatchScheduleCmd; +import com.engine.jucailinkq.attendance.component.persongroup.cmd.GetManagerHavePersonCmd; import com.engine.jucailinkq.attendance.component.persongroup.service.PersonGroupService; import com.engine.jucailinkq.common.util.DbTools; import com.engine.jucailinkq.common.util.Utils; @@ -120,4 +122,9 @@ public class PersonGroupServiceImpl extends Service implements PersonGroupServic resultMap.put("result",rs.executeBatchSql(insertSql,addLists)); return resultMap; } + + @Override + public Map getManagerHavePerson(Map params) { + return commandExecutor.execute(new GetManagerHavePersonCmd(params)); + } } diff --git a/src/com/engine/jucailinkq/attendance/component/persongroup/web/PersonGroupAction.java b/src/com/engine/jucailinkq/attendance/component/persongroup/web/PersonGroupAction.java index 3c1362e..9a7dc70 100644 --- a/src/com/engine/jucailinkq/attendance/component/persongroup/web/PersonGroupAction.java +++ b/src/com/engine/jucailinkq/attendance/component/persongroup/web/PersonGroupAction.java @@ -60,4 +60,20 @@ public class PersonGroupAction { } } + @GET + @Path("/getManagerHavePerson") + @Produces({"text/plain"}) + public String getManagerHavePerson(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request,response); + Map paramMap = ParamUtil.request2Map(request); + Map dataMap = basicsetService.getManagerHavePerson(paramMap); + return ApiReturnTools.success(dataMap); + }catch (Exception e){ + log.error("execute fail,catch error: [{}]",e); + return ApiReturnTools.error("500","getHrmCondition error"); + } + + } + } diff --git a/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java b/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java index a13baba..bb5e052 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java +++ b/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java @@ -1,8 +1,12 @@ package com.engine.jucailinkq.attendance.vacation.cmd; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.engine.jucailinkq.attendance.vacation.job.holidaygeneration.tactics.HolidayGenerationWay; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; +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.engine.core.interceptor.CommandContext; @@ -13,6 +17,7 @@ import weaver.general.Util; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.stream.Collectors; @Slf4j @@ -107,11 +112,32 @@ public class VocationCmd extends AbstractCommonCommand> { } log.debug("VocationCmd params: [{}]",params); String edfffs = Util.null2String(vocationList.get(0).get("edfffs")); + List> dataList = Lists.newArrayList(); for (HolidayGenerationWay holidayGenerationWay :rulers){ if (holidayGenerationWay.support(Integer.valueOf(edfffs))){ - holidayGenerationWay.compute(params); + try { + holidayGenerationWay.compute(params); + }catch (Exception e){ + Map dataMap = Maps.newHashMap(); + dataMap.put("ycnr",e.toString()); + dataMap.put("ycsj", DateUtil.getCurrentTime()); + dataMap.put("ycry", Util.null2String(params.get("userId"))); + dataMap.put("ycjq",vocationList.get(0).get("jb")); + dataMap.put("ycjqcs", JSON.toJSONString(vocationList)); + dataMap.put("formmodeid",params.get("errorMode")); + dataMap.put("modeuuid", UUID.randomUUID().toString()); + dataMap.put("modedatacreater","1"); + dataMap.put("modedatacreatertype","0"); + dataMap.put("modedatacreatedate",DateUtil.getCurrentTime().split(" ")[0]); + dataMap.put("modedatacreatetime",DateUtil.getCurrentTime().split(" ")[1]); + dataList.add(dataMap); + log.error("VocationCmd error : [{}]",e); + } } } + if (dataList.size() >0){ + CommonUtil.insertBatch(dataList,"uf_jcl_kq_jqerror"); + } return null; } diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java index 5a65b39..9f798d2 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java @@ -346,7 +346,8 @@ public class ByIntervalPayMentWay implements HolidayGenerationWay{ //残年分割日期 String divideTime = DateUtil.beforeMonth(qsrq,seniority); - divideTime = sxrq.split("-")[0]+"-"+divideTime.split("-")[1]+"-"+divideTime.split("-")[2]; + //divideTime = sxrq.split("-")[0]+"-"+divideTime.split("-")[1]+"-"+divideTime.split("-")[2]; + divideTime = DateUtil.nextYear(divideTime,endYear,DateUtil.yyyyMMdd); if (jgscsf.equals("2")){ //直接取工龄字段 beginYear = seniority/12; diff --git a/src/com/engine/jucailinkq/attendance/vacation/service/impl/VocationServiceImpl.java b/src/com/engine/jucailinkq/attendance/vacation/service/impl/VocationServiceImpl.java index 3857517..7cff4f6 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/service/impl/VocationServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/vacation/service/impl/VocationServiceImpl.java @@ -55,7 +55,8 @@ public class VocationServiceImpl extends Service implements VocationService { dataList.addAll(resultList); } Map>> userIdMap = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); - + sql = "select c.id name,b.tablename id from workflow_bill b left join modeinfo c on b.id=c.formid where (c.isDelete is null or c.isDelete <> '1') and tablename in ('uf_jcl_kq_jqerror')"; + Map errorModeMap = DbTools.getSqlToMapList(sql); for (Map.Entry entry : result.entrySet()){ String userId = entry.getKey(); @@ -84,6 +85,7 @@ public class VocationServiceImpl extends Service implements VocationService { vocationParam.put("releaseDate",params.get("releaseDate")); vocationParam.put("cover",params.get("cover")); vocationParam.put("leaveDate",departEmployeeMap.get(userId)); + vocationParam.put("errorMode",errorModeMap.get("uf_jcl_kq_jqerror")); commandExecutor.execute(new VocationCmd(vocationParam)); } } diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/GenerateWorkflowVocationAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/GenerateWorkflowVocationAction.java index db08c49..491b802 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/GenerateWorkflowVocationAction.java +++ b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/GenerateWorkflowVocationAction.java @@ -52,6 +52,9 @@ public class GenerateWorkflowVocationAction implements Action { String sql = "select a.id userid,a.*,b.* from hrmresource a left join cus_fielddata b on a.id=b.id where a.id =?"; List> userList = DbTools.getSqlToListKeySmallLetter(sql,qjry); + sql = "select c.id name,b.tablename id from workflow_bill b left join modeinfo c on b.id=c.formid where (c.isDelete is null or c.isDelete <> '1') and tablename in ('uf_jcl_kq_jqerror')"; + Map errorModeMap = DbTools.getSqlToMapList(sql); + log.info("GenerateWorkflowVocationAction : [{}]",result.get(qjry)); if (result.get(qjry) != null){ Map vocationMap = (Map)result.get(qjry); @@ -78,6 +81,7 @@ public class GenerateWorkflowVocationAction implements Action { vocationParam.put("releaseDate",params.get("releaseDate")); vocationParam.put("cover",params.get("cover")); vocationParam.put("leaveDate",departEmployeeMap.get(qjry)); + vocationParam.put("errorMode",errorModeMap.get("uf_jcl_kq_jqerror")); new VocationCmd(vocationParam).execute(null); } } diff --git a/src/com/engine/jucailinkq/common/cmd/CleanHaveLeaveUserDataCmd.java b/src/com/engine/jucailinkq/common/cmd/CleanHaveLeaveUserDataCmd.java index f26b69e..f14f152 100644 --- a/src/com/engine/jucailinkq/common/cmd/CleanHaveLeaveUserDataCmd.java +++ b/src/com/engine/jucailinkq/common/cmd/CleanHaveLeaveUserDataCmd.java @@ -96,6 +96,8 @@ public class CleanHaveLeaveUserDataCmd extends AbstractCommonCommand0){ + DbTools.update(updateSql,user,startDate,endDate); } if (!"".equals(terminationDate) && DateUtil.getTime(terminationDate).compareTo(DateUtil.getTime(endDate)) <= 0 && DateUtil.getTime(terminationDate).compareTo(DateUtil.getTime(startDate)) >= 0) { @@ -107,6 +109,8 @@ public class CleanHaveLeaveUserDataCmd extends AbstractCommonCommand0 && departMentIds.size() == 0){ sql = sql+ " and subcompanyid1 in ("+String.join(",",subCompanyIds)+")"; } - + sql += " and (belongto is null or belongto='-1') "; List> hrmListByDepartAndSubCompanyIds = DbTools.getSqlToList(sql); //部门id-人员id集合 @@ -256,11 +256,11 @@ public class GetPersonVocationBySuitOrganzation extends AbstractCommonCommand> dataList = DbTools.getSqlToList(sqltj); + sql = "select id from hrmresource where belongto is null or belongto='-1'"; + List> hrmListMap = DbTools.getSqlToList(sql); + List hrmList = hrmListMap.stream().map(e->e.get("id").toString()).collect(Collectors.toList()); for (Map dataMap :dataList){ String hrmId = Util.null2String(dataMap.get("id")); - userIds.add(hrmId); + if (hrmList.contains(hrmId)){ + userIds.add(hrmId); + } } } }