From ea9153f420654ddb0c3f222875e8d0119c41f266 Mon Sep 17 00:00:00 2001 From: liuliang <401809302@qq.com> Date: Mon, 21 Oct 2024 19:35:44 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8A=A0=E7=8F=AD?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E5=BC=82=E5=B8=B8bug=EF=BC=8C=E5=81=87?= =?UTF-8?q?=E6=9C=9F=E4=BD=99=E9=A2=9D=E5=A2=9E=E5=8A=A0=E7=A6=BB=E8=81=8C?= =?UTF-8?q?=E5=90=8E=E6=A0=B9=E6=8D=AE=E7=A6=BB=E8=81=8C=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E6=8A=98=E7=AE=97=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workovertime/GetOvertimeDurationCmd.java | 8 ++++---- .../attendance/vacation/cmd/VocationCmd.java | 12 +++++++++++- .../tactics/ByIntervalPayMentWay.java | 3 +++ .../tactics/BySchedulePaymentWay.java | 3 +++ .../tactics/OneTimePayMentWay.java | 4 ++++ .../tactics/SinglePaymentInFullWay.java | 4 +++- .../vacation/util/VocationCommonUtil.java | 19 +++++++++++++++++++ 7 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java index d23b650..3ebe33d 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java @@ -171,7 +171,7 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand> beLateAbnormal = abnormalClockInList.stream().filter(e -> e.get("pointTime").equals(kssj)).collect(Collectors.toList()); + List> beLateAbnormal = abnormalClockInList.stream().filter(e -> e.get("pointTime").equals(kssj) && e.get("bdlx").equals(scheduleMap.get("bdlx"))).collect(Collectors.toList()); double beLateTime = 0; if (beLateAbnormal.size() > 0) { String hsdw = Util.null2String(beLateAbnormal.get(0).get("hsdw")); @@ -198,7 +198,7 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand 0) { beLateTime = DateUtil.getBetWeenMinutes(kssjTime, realityStartTime); - List> collect1 = anomalyList.stream().filter(e -> e.get("pointTime").equals(kssj)).collect(Collectors.toList()); + List> collect1 = anomalyList.stream().filter(e -> e.get("pointTime").equals(kssj) && e.get("bdlx").equals(scheduleMap.get("bdlx"))).collect(Collectors.toList()); if (!"".equals(jbwdhlfzs) && beLateTime < Integer.valueOf(jbwdhlfzs)) { beLateTime = 0; @@ -213,7 +213,7 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand> leaveEarlyAbnormal = abnormalClockInList.stream().filter(e -> e.get("pointTime").equals(jssj)).collect(Collectors.toList()); + List> leaveEarlyAbnormal = abnormalClockInList.stream().filter(e -> e.get("pointTime").equals(jssj) && e.get("bdlx").equals(scheduleMap.get("bdlx"))).collect(Collectors.toList()); double leaveElaryTime = 0; if (leaveEarlyAbnormal.size() > 0) { String hsdw = Util.null2String(leaveEarlyAbnormal.get(0).get("hsdw")); @@ -242,7 +242,7 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand> collect2 = anomalyList.stream().filter(e -> e.get("pointTime").equals(jssj)).collect(Collectors.toList()); + List> collect2 = anomalyList.stream().filter(e -> e.get("pointTime").equals(jssj) && e.get("bdlx").equals(scheduleMap.get("bdlx")) ).collect(Collectors.toList()); if (!"".equals(jbzzhlfzs) && leaveElaryTime < Integer.valueOf(jbzzhlfzs)) { leaveElaryTime = 0; } diff --git a/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java b/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java index d58d4b3..36ec4e4 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java +++ b/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java @@ -42,9 +42,11 @@ public class VocationCmd extends AbstractCommonCommand> { String qsrq = Util.null2String(vocation.get("qsrq")).toLowerCase(); String yjzd = Util.null2String(vocation.get("yjzd")).toLowerCase(); String ljcrglyfslwz = Util.null2String(vocation.get("ljcrglyfslwz")); + String jzrqzd = Util.null2String(vocation.get("jzrqzd")); String qsrqValue = Util.null2String(userMap.get(qsrq)); String yjzdValue = Util.null2String(userMap.get(yjzd)); String ljcrglyfslwzValue = Util.null2String(userMap.get(ljcrglyfslwz)); + String jzrqzdValue = Util.null2String(userMap.get(jzrqzd)); if ("".equals(qsrqValue)){ for (Map map: userList){ qsrqValue = Util.null2String(map.get(qsrq)); @@ -69,8 +71,16 @@ public class VocationCmd extends AbstractCommonCommand> { } } } + if ("".equals(jzrqzdValue)){ + for (Map map: userList){ + jzrqzdValue = Util.null2String(map.get(jzrqzd)); + if (!"".equals(jzrqzdValue)){ + break; + } + } + } - + vocation.put("jzrqzdValue",jzrqzdValue); vocation.put("qsrqValue",qsrqValue); vocation.put("yjzdValue",yjzdValue); vocation.put("ljcrglyfslwzValue",ljcrglyfslwzValue); 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 e9c9b67..0388b37 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 @@ -261,6 +261,9 @@ public class ByIntervalPayMentWay implements HolidayGenerationWay{ } insertHoliDayParam.put("ktsc", restTime); + //截止日期 + String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); + VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); return insertHoliDayParam; 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 774e7a0..7aa4872 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 @@ -179,6 +179,9 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{ } insertHoliDayParam.put("ktsc",restTime); + //截止日期 + String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); + VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye",insertHoliDayParam,dataList,edyxq); return insertHoliDayParam; diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java index 0cae9b7..dfda4d3 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java @@ -153,6 +153,10 @@ public class OneTimePayMentWay implements HolidayGenerationWay{ restTime = ktsc; } insertHoliDayParam.put("ktsc", restTime); + + //截止日期 + String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); + VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); return insertHoliDayParam; diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java index 4ca898a..d715c60 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java @@ -40,6 +40,8 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay { List> vocationList = (List>) data.get("vocationList"); //起算日期 String qsrq = Util.null2String(vocationList.get(0).get("qsrqValue")); + //截止日期 + String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); //额度有效期间 String edyxqsz = Util.null2String(vocationList.get(0).get("edyxqsz")); //额度有效期间单位 @@ -203,8 +205,8 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay { } insertHoliDayParam.put("ktsc", restTime); - if (!"1".equals(isOneTime)){ + VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); } return insertHoliDayParam; diff --git a/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java b/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java index c3e9759..c1c001e 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java +++ b/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java @@ -632,4 +632,23 @@ public class VocationCommonUtil { } return totalbig.doubleValue(); } + + /** + * 根据截止日期计算可休时长 + * 如果截止日期字段有值,且截止日在额度的生效与失效日期之间时 + * 用生效日期至截止日期的天数 除以生效日期与失效日期的天数 再乘以额度天数 + * @param insertHoliDayParam + * @param jzrqzd + */ + public static void computeRestTimeByjzrqzd(Map insertHoliDayParam,String jzrqzd){ + String sxrq = Util.null2String(insertHoliDayParam.get("sxrq")); + String jzrq = Util.null2String(insertHoliDayParam.get("jzrq")); + double ktsc = Double.valueOf(Util.null2String(insertHoliDayParam.get("ktsc"))); + if (!"".equals(jzrqzd) && DateUtil.getTime(jzrqzd).compareTo(DateUtil.getTime(sxrq)) >=0 && + DateUtil.getTime(jzrqzd).compareTo(DateUtil.getTime(jzrq)) <=0){ + int alldays = DateUtil.getBetWeenDays(sxrq,jzrq); + int days = DateUtil.getBetWeenDays(sxrq,jzrqzd); + insertHoliDayParam.put("ktsc",Utils.divide(days*ktsc,alldays)); + } + } } From 1fe80a06fdd72fbfcb164ab25e9d67c13585c436 Mon Sep 17 00:00:00 2001 From: liuliang <401809302@qq.com> Date: Fri, 25 Oct 2024 18:06:04 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=81=87=E6=9C=9F?= =?UTF-8?q?=E5=8F=91=E6=94=BE=E6=A0=B9=E6=8D=AE=E7=A6=BB=E8=81=8C=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E5=85=A5=E8=81=8C=E6=97=A5=E6=9C=9F=E6=8A=98=E7=AE=97?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=81=E4=BF=AE=E6=94=B9=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E6=8C=89=E6=9C=9F=E5=8F=91=E6=94=BE=E6=8A=98=E7=AE=97bug?= =?UTF-8?q?=E3=80=81=E4=BF=AE=E6=94=B9=E4=B8=80=E6=AC=A1=E6=80=A7=E5=8F=91?= =?UTF-8?q?=E6=94=BE=E5=81=87=E6=9C=9F=E4=BD=99=E9=A2=9D=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E3=80=81=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2=E7=8F=AD=E6=AC=A1?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/AttendanceanalysisAction.java | 6 +-- .../GetAttendanceItemsByPersonDataCmd.java | 3 +- .../cmd/GetWorkHoursItemByPersonCmd.java | 2 +- .../cmd/GetDatatableRecurrenceCmd.java | 4 +- .../service/impl/PersonGroupServiceImpl.java | 2 +- .../attendance/vacation/cmd/VocationCmd.java | 5 +++ .../tactics/ByIntervalPayMentWay.java | 15 +++++-- .../tactics/BySchedulePaymentWay.java | 19 ++++++--- .../tactics/OneTimePayMentWay.java | 42 ++++++++++--------- .../tactics/SinglePaymentInFullWay.java | 22 +++++++--- .../service/impl/VocationServiceImpl.java | 12 +++++- .../vacation/util/VocationCommonUtil.java | 15 +++++-- .../cmd/GetPersonDateBySuitOrganzation.java | 6 +-- .../jucailinkq/common/util/CommonUtil.java | 13 +++--- .../jucailinkq/common/util/DateUtil.java | 4 +- 15 files changed, 111 insertions(+), 59 deletions(-) diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java index e06b610..5a10e7d 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java @@ -46,9 +46,9 @@ public class AttendanceanalysisAction { log.info("********AttendanceanalysisAction start********"); Map paramMap = ParamUtil.request2Map(request); // Map paramMap = Maps.newHashMap(); -// paramMap.put("startDate","2024-10-10"); -// paramMap.put("endDate","2024-10-10"); -// paramMap.put("userIds","22"); +// paramMap.put("startDate","2024-09-16"); +// paramMap.put("endDate","2024-09-16"); +// paramMap.put("userIds","23"); String startDate = Util.null2String(paramMap.get("startDate")); String startBeforeDate = DateUtil.beforeDay(startDate,2); diff --git a/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java b/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java index e95e93d..0b9ae56 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java @@ -36,7 +36,8 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand execute(CommandContext commandContext) { String resourceId = Util.null2String(params.get("resourceId")); - String startDate = Util.null2String(params.get("startDate")); + String startDate = Util.null2String(params.get("startDate")).equals("")?DateUtil.getCurrentDate():Util.null2String(params.get("startDate")); + String endDate = Util.null2String(params.get("endDate")); String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqfa"); Map resultMap = Maps.newHashMap(); diff --git a/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.java b/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.java index a54cd80..5486ac1 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.java @@ -33,7 +33,7 @@ public class GetWorkHoursItemByPersonCmd extends AbstractCommonCommand execute(CommandContext commandContext) { String resourceId = Util.null2String(params.get("resourceId")); - String startDate = Util.null2String(params.get("startDate")); + String startDate = Util.null2String(params.get("startDate")).equals("")?DateUtil.getCurrentDate():Util.null2String(params.get("startDate")); String endDate = Util.null2String(params.get("endDate")); String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_zhgs"); Map resultMap = Maps.newHashMap(); diff --git a/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java b/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java index fdc15a5..279eac0 100644 --- a/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java +++ b/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java @@ -89,9 +89,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(currentTime))<=0) && - (Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(currentTime))>=0)).collect(Collectors.toList()); - } + } Map>> personnelGroupsCollect = personnelGroups.stream().collect(Collectors.groupingBy(e->e.get("mainid").toString())); Set personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet()); 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 9edf8ff..64f57e1 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 @@ -35,7 +35,7 @@ public class PersonGroupServiceImpl extends Service implements PersonGroupServic } Map data = Maps.newHashMap(); - String sql = "select * from (select t1.fieldid,t2.fieldname,t1.fieldlable,t1.ismand,t2.fielddbtype,t2.fieldhtmltype,t2.type, t1.dmlurl, t1.fieldorder, t1.isuse, t1.isModify,'1' as allowModify, t1.groupid, 1 as allowhide from cus_formfield t1, cus_formdict t2 where t1.fieldid=t2.id and t1.scope='HrmCustomFieldByInfoType' and (t1.scopeid='1' or t1.scopeid='-1' or t1.scopeid='3' ) " + + String sql = "select * from (select t1.fieldid,t2.fieldname,t1.fieldlable,t1.ismand,t2.fielddbtype,t2.fieldhtmltype,t2.type, t1.dmlurl, t1.fieldorder, t1.isuse, t1.isModify,'1' as allowModify, t1.groupid, 1 as allowhide from cus_formfield t1, cus_formdict t2 where t1.fieldid=t2.id and t1.scope='HrmCustomFieldByInfoType' and t1.scopeid='1' " + " UNION all " + " select fieldid, fieldname, fieldlabel ,ismand ,fielddbtype ,fieldhtmltype ,type , dmlurl,fieldorder ,isuse ,isModify ,allowModify, groupid, allowhide from hrm_formfield) hrmallfield where (groupid in (select id from hrm_fieldgroup where (grouptype = '1' or grouptype = '-1' or grouptype = '3')) or fieldname='subcompanyid1')"; diff --git a/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java b/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java index 36ec4e4..d3245b0 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java +++ b/src/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.java @@ -42,6 +42,7 @@ public class VocationCmd extends AbstractCommonCommand> { String qsrq = Util.null2String(vocation.get("qsrq")).toLowerCase(); String yjzd = Util.null2String(vocation.get("yjzd")).toLowerCase(); String ljcrglyfslwz = Util.null2String(vocation.get("ljcrglyfslwz")); + String lsgldw = Util.null2String(vocation.get("lsgldw")); String jzrqzd = Util.null2String(vocation.get("jzrqzd")); String qsrqValue = Util.null2String(userMap.get(qsrq)); String yjzdValue = Util.null2String(userMap.get(yjzd)); @@ -84,6 +85,10 @@ public class VocationCmd extends AbstractCommonCommand> { vocation.put("qsrqValue",qsrqValue); vocation.put("yjzdValue",yjzdValue); vocation.put("ljcrglyfslwzValue",ljcrglyfslwzValue); + if (!"".equals(lsgldw) && !"".equals(ljcrglyfslwzValue) && "0".equals(lsgldw)){ + //当累计单位为年时 + vocation.put("ljcrglyfslwzValue",Math.round(Double.valueOf(ljcrglyfslwzValue)*12)); + } vocation.put("zyzValue",getUserIds(vocation)); } log.debug("VocationCmd params: [{}]",params); 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 0388b37..612884c 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 @@ -261,9 +261,18 @@ public class ByIntervalPayMentWay implements HolidayGenerationWay{ } insertHoliDayParam.put("ktsc", restTime); - //截止日期 - String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); - VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); + //离职日期 + String jzrqzd = Util.null2String(data.get("leaveDate")); + //入职日期 + List> userList = (List>)data.get("userList"); + Map userMap = userList.size()>0?userList.get(0):Maps.newHashMap(); + + String companystartdate = Util.null2String(userMap.get("companystartdate")); + if ("companystartdate".equals(Util.null2String(vocationList.get(0).get("qsrq")))){ + companystartdate=""; + } + + VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); return insertHoliDayParam; 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 7aa4872..7667326 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 @@ -179,9 +179,18 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{ } insertHoliDayParam.put("ktsc",restTime); - //截止日期 - String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); - VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); + //离职日期 + String jzrqzd = Util.null2String(data.get("leaveDate")); + //入职日期 + List> userList = (List>)data.get("userList"); + Map userMap = userList.size()>0?userList.get(0):Maps.newHashMap(); + + String companystartdate = Util.null2String(userMap.get("companystartdate")); + if ("companystartdate".equals(Util.null2String(vocationList.get(0).get("qsrq")))){ + companystartdate=""; + } + + VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye",insertHoliDayParam,dataList,edyxq); return insertHoliDayParam; @@ -254,7 +263,7 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{ if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(qsrq)) >=0){ if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(divideTime)) <0){ - int months = releaseDateMonths-qsrqMonths+1; + int months = DateUtil.getTime(DateUtil.beforeMonth(divideTime,1)).getMonthValue(); restTime = getRestTime(months,beginYearmap); }else { int months = releaseDateMonths-divideTimeMonths+1; @@ -266,7 +275,7 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{ } }else { if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(divideTime)) <0){ - int months = releaseDateMonths-qsrqMonths+1; + int months = DateUtil.getTime(DateUtil.beforeMonth(divideTime,1)).getMonthValue(); restTime = getRestTime(months,beginYearmap); }else { int months = releaseDateMonths-divideTimeMonths+1; diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java index dfda4d3..610b005 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java @@ -40,15 +40,20 @@ public class OneTimePayMentWay implements HolidayGenerationWay{ String fgrq= Util.null2String(vocationList.get(0).get("fgrq")); //额度依据 String edyj= Util.null2String(vocationList.get(0).get("edyj")); - data.put("isOneTime","1"); +// data.put("isOneTime","1"); if ("".equals(qsrq)){ return Maps.newHashMap(); } qsrq = VocationCommonUtil.getAfterAdjustTime(qsrq,dzqsrq,fgrq); - for (Map vocationMap : vocationList) { - vocationMap.put("qsrqValue", qsrq); +// for (Map vocationMap : vocationList) { +// vocationMap.put("qsrqValue", qsrq); +// } + + if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(qsrq)) < 0){ + //releaseDate=qsrq; + return Maps.newHashMap(); } //额度有效期间单位 String edyxq = Util.null2String(vocationList.get(0).get("edyxq")); @@ -62,17 +67,14 @@ public class OneTimePayMentWay implements HolidayGenerationWay{ SinglePaymentInFullWay singlePaymentInFullWay = new SinglePaymentInFullWay(); if ("0".equals(edyj) || "2".equals(edyj) || "4".equals(edyj)){ Map maxMap = vocationList.stream().max(Comparator.comparing(e->Double.valueOf(e.get("jgsc1").toString()).intValue())).get(); + Map minMap = vocationList.stream().min(Comparator.comparing(e->Double.valueOf(e.get("jgsc0").toString()).intValue())).get(); int maxjgsc1 = Double.valueOf(maxMap.get("jgsc1").toString()).intValue(); - insertHoliDayParam = getInsertHoliDayParam(vocationList.get(0), userId, qsrq, releaseDate,maxjgsc1); - dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam); - //已存在数据且不覆盖 - if (dataList.size()>0 && !"1".equals(cover)) { - return insertHoliDayParam; - } + int minjgsc0 = Double.valueOf(minMap.get("jgsc0").toString()).intValue(); +// if (edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())){ //自然年 - for (int i=0;i<=maxjgsc1;i++){ + for (int i=minjgsc0;i<=maxjgsc1;i++){ String executeTime = DateUtil.nextYear(qsrq,i,DateUtil.yyyyMMdd); data.put("releaseDate",executeTime); Map map = singlePaymentInFullWay.compute(data); @@ -81,7 +83,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{ } }else if (edyxq.equals(StartingUnitEnum.STARTING_YEAR.getKey())){ //起算年 - for (int i=0;i<=maxjgsc1;i++){ + for (int i=minjgsc0;i<=maxjgsc1;i++){ String executeTime = DateUtil.nextYear(qsrq,i,DateUtil.yyyyMMdd); data.put("releaseDate",executeTime); Map map = singlePaymentInFullWay.compute(data); @@ -91,7 +93,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{ }else if (edyxq.equals(StartingUnitEnum.NATURAL_MONTH.getKey())){ //自然月 - for (int i=0;i<=maxjgsc1;i++){ + for (int i=minjgsc0;i<=maxjgsc1;i++){ String executeTime = DateUtil.nextMonth(qsrq,i,DateUtil.yyyyMMdd); data.put("releaseDate",executeTime); Map map = singlePaymentInFullWay.compute(data); @@ -102,7 +104,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{ }else if (edyxq.equals(StartingUnitEnum.STARTING_MONTH.getKey())){ //起算月 - for (int i=0;i<=maxjgsc1;i++){ + for (int i=minjgsc0;i<=maxjgsc1;i++){ String executeTime = DateUtil.nextMonth(qsrq,i,DateUtil.yyyyMMdd); data.put("releaseDate",executeTime); Map map = singlePaymentInFullWay.compute(data); @@ -113,7 +115,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{ }else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey())){ //自然周 - for (int i=0;i<=maxjgsc1;i++){ + for (int i=minjgsc0;i<=maxjgsc1;i++){ String executeTime = DateUtil.AfterDay(qsrq,i*7); data.put("releaseDate",executeTime); Map map = singlePaymentInFullWay.compute(data); @@ -124,8 +126,8 @@ public class OneTimePayMentWay implements HolidayGenerationWay{ }else if (edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){ //起算周 - for (int i=0;i<=maxjgsc1;i++){ - String executeTime = DateUtil.AfterDay(qsrq,i*7); + for (int i=minjgsc0;i<=maxjgsc1;i++){ + String executeTime = DateUtil.AfterDay(qsrq, i*7); data.put("releaseDate",executeTime); Map map = singlePaymentInFullWay.compute(data); double ktsc = map.get("ktsc") == null?0:Double.valueOf(map.get("ktsc").toString()); @@ -134,7 +136,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{ }else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){ //自然天 - for (int i=0;i<=maxjgsc1;i++){ + for (int i=minjgsc0;i<=maxjgsc1;i++){ String executeTime = DateUtil.AfterDay(qsrq,i); data.put("releaseDate",executeTime); Map map = singlePaymentInFullWay.compute(data); @@ -155,9 +157,9 @@ public class OneTimePayMentWay implements HolidayGenerationWay{ insertHoliDayParam.put("ktsc", restTime); //截止日期 - String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); - VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); - VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); +// String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); +// VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); +// VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); return insertHoliDayParam; } diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java index d715c60..cf42304 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java @@ -41,7 +41,7 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay { //起算日期 String qsrq = Util.null2String(vocationList.get(0).get("qsrqValue")); //截止日期 - String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); + String jzrqzd = Util.null2String(data.get("leaveDate")); //额度有效期间 String edyxqsz = Util.null2String(vocationList.get(0).get("edyxqsz")); //额度有效期间单位 @@ -177,8 +177,8 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay { Map vocationMap = VocationCommonUtil.getVocationMap(vocationList, allMonths, yjzd,userId); restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0; } else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey())){ - //起自然周 - betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq)+1; + //自然周 + betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq); if (DateUtil.getTime(sxrq).compareTo(DateUtil.getTime(qsrq)) <=0){ betweenDays = 0; } @@ -188,7 +188,7 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay { } else if (edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){ //起算周 - betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq)+1; + betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq); if (betweenDays <=7){ betweenDays=0; } @@ -198,7 +198,7 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay { } else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){ //自然天 - betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq)+1; + betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq); allWorkDays = Double.valueOf(ljcrglyfslwz).intValue()*30+betweenDays; Map vocationMap = VocationCommonUtil.getVocationMap(vocationList, allWorkDays, yjzd,userId); restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0; @@ -206,7 +206,17 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay { insertHoliDayParam.put("ktsc", restTime); if (!"1".equals(isOneTime)){ - VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); + //离职日期 + //入职日期 + List> userList = (List>)data.get("userList"); + Map userMap = userList.size()>0?userList.get(0):Maps.newHashMap(); + + String companystartdate = Util.null2String(userMap.get("companystartdate")); + if ("companystartdate".equals(Util.null2String(vocationList.get(0).get("qsrq")))){ + companystartdate=""; + } + + VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); } return insertHoliDayParam; 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 7afb813..f93108c 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/service/impl/VocationServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/vacation/service/impl/VocationServiceImpl.java @@ -6,6 +6,8 @@ import com.engine.jucailinkq.attendance.vacation.cmd.HandleOverdueVocationCmd; import com.engine.jucailinkq.attendance.vacation.cmd.VocationCmd; import com.engine.jucailinkq.attendance.vacation.service.VocationService; import com.engine.jucailinkq.common.cmd.GetPersonDateBySuitOrganzation; +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; import com.engine.jucailinkq.common.util.DbTools; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; @@ -33,11 +35,16 @@ public class VocationServiceImpl extends Service implements VocationService { String sql = "select a.id userid,a.*,b.* from hrmresource a left join cus_fielddata b on a.id=b.id where a.id in ("; + String queryDepartEmployeeSql = "select resourceid ,changedate,type_n from HRMSTATUSHISTORY where type_n = 5 or type_n = 7"; + //获取离职日期 + List> departEmployeeList = DbTools.getSqlToList(queryDepartEmployeeSql); + Map departEmployeeMap = CommonUtil.getDepartEmployeeMap(departEmployeeList); + List userIds = Lists.newArrayList(); for (Map.Entry entry : result.entrySet()){ userIds.add(entry.getKey()); } - List> userPartions = Lists.partition(userIds,50); + List> userPartions = Lists.partition(userIds,100); List> dataList = Lists.newArrayList(); for (List list : userPartions){ String querySql = sql + String.join(",",list) +")"; @@ -53,7 +60,7 @@ public class VocationServiceImpl extends Service implements VocationService { String userId = entry.getKey(); Map vocationMap = (Map)entry.getValue(); Map paramMap = Maps.newHashMap(); - paramMap.put("startDate",""); + paramMap.put("startDate", DateUtil.getCurrentDate()); paramMap.put("endDate",""); paramMap.put("resourceId",userId); Map dataMap = basicsetService.getAttendanceItemsByPerson(paramMap); @@ -73,6 +80,7 @@ public class VocationServiceImpl extends Service implements VocationService { vocationParam.put("userList",userIdMap.get(userId)); vocationParam.put("releaseDate",params.get("releaseDate")); vocationParam.put("cover",params.get("cover")); + vocationParam.put("leaveDate",departEmployeeMap.get(userId)); commandExecutor.execute(new VocationCmd(vocationParam)); } } diff --git a/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java b/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java index c1c001e..394e48b 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java +++ b/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java @@ -640,15 +640,22 @@ public class VocationCommonUtil { * @param insertHoliDayParam * @param jzrqzd */ - public static void computeRestTimeByjzrqzd(Map insertHoliDayParam,String jzrqzd){ + public static void computeRestTimeByjzrqzd(Map insertHoliDayParam,String jzrqzd,String companystartdate){ String sxrq = Util.null2String(insertHoliDayParam.get("sxrq")); String jzrq = Util.null2String(insertHoliDayParam.get("jzrq")); + int alldays = DateUtil.getBetWeenDays(sxrq,jzrq)+1; double ktsc = Double.valueOf(Util.null2String(insertHoliDayParam.get("ktsc"))); + String startDate = sxrq; + String endtDate = jzrq; + if (!"".equals(companystartdate) && DateUtil.getTime(companystartdate).compareTo(DateUtil.getTime(sxrq)) >=0 && + DateUtil.getTime(companystartdate).compareTo(DateUtil.getTime(jzrq)) <=0){ + startDate = companystartdate; + } if (!"".equals(jzrqzd) && DateUtil.getTime(jzrqzd).compareTo(DateUtil.getTime(sxrq)) >=0 && DateUtil.getTime(jzrqzd).compareTo(DateUtil.getTime(jzrq)) <=0){ - int alldays = DateUtil.getBetWeenDays(sxrq,jzrq); - int days = DateUtil.getBetWeenDays(sxrq,jzrqzd); - insertHoliDayParam.put("ktsc",Utils.divide(days*ktsc,alldays)); + endtDate=jzrqzd; } + int days = DateUtil.getBetWeenDays(startDate,endtDate)+1; + insertHoliDayParam.put("ktsc",Utils.divide(days*ktsc,alldays)); } } diff --git a/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java b/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java index 816523b..f43cdb7 100644 --- a/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java +++ b/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java @@ -104,7 +104,7 @@ public class GetPersonDateBySuitOrganzation extends AbstractCommonCommand 0){ sql = sql+ " and departmentid in ("+String.join(",",departMentIds)+")"; } @@ -254,11 +254,11 @@ public class GetPersonDateBySuitOrganzation extends AbstractCommonCommand> personnelGroups = personBelongGroup.get(resourceId) == null? Lists.newArrayList():personBelongGroup.get(resourceId); - personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(date))<=0) && - (Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(date))>=0)).collect(Collectors.toList()); + if (date != null && !date.equals("")){ + personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(date))<=0) && + (Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(date))>=0)).collect(Collectors.toList()); + } personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet()); } @@ -252,9 +254,10 @@ public class CommonUtil { personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date); }else { List> personnelGroups = personBelongGroup.get(resourceId) == null? Lists.newArrayList():personBelongGroup.get(resourceId); - personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(date))<=0) && - (Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(date))>=0)).collect(Collectors.toList()); - + if (date != null && !date.equals("")){ + personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(date))<=0) && + (Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(date))>=0)).collect(Collectors.toList()); + } personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet()); } diff --git a/src/com/engine/jucailinkq/common/util/DateUtil.java b/src/com/engine/jucailinkq/common/util/DateUtil.java index c970f32..4b8c25a 100644 --- a/src/com/engine/jucailinkq/common/util/DateUtil.java +++ b/src/com/engine/jucailinkq/common/util/DateUtil.java @@ -69,11 +69,11 @@ public class DateUtil { public static String beforeDay(String time,long day){ - LocalDateTime localDateTime = LocalDate.parse(time, yyyyMMdd).atStartOfDay(); + LocalDateTime localDateTime = DateUtil.getTime(time); return localDateTime.minusDays(day).format(yyyyMMdd); } public static String AfterDay(String time,long day){ - LocalDateTime localDateTime = LocalDate.parse(time, yyyyMMdd).atStartOfDay(); + LocalDateTime localDateTime = DateUtil.getTime(time); return localDateTime.plusDays(day).format(yyyyMMdd); }