diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAttendanceCycleCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAttendanceCycleCmd.java index 861f2b0..033dbc2 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAttendanceCycleCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAttendanceCycleCmd.java @@ -10,6 +10,7 @@ import com.engine.jucailinkq.common.util.Utils; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import lombok.extern.slf4j.Slf4j; import weaver.general.Util; import java.util.List; @@ -20,6 +21,7 @@ import java.util.stream.Collectors; /** * 获得当前执行日期的考勤周期内需要分析的日期 */ +@Slf4j public class GetAttendanceCycleCmd extends AbstractCommonCommand> { public GetAttendanceCycleCmd(Map params){ @@ -35,6 +37,7 @@ public class GetAttendanceCycleCmd extends AbstractCommonCommand execute(CommandContext commandContext) { List> userList = (List>)params.get("userList"); String executeDate = Util.null2String(params.get("executeDate")); + String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqzqmc"); params.put("modeId",modeId); Map userToDateMap = Maps.newHashMap(); @@ -94,6 +97,8 @@ public class GetAttendanceCycleCmd extends AbstractCommonCommand resultMap = Maps.newHashMap(); + clearRepeatClock(effectiveclockInTimeList); resultMap.put("resultList",effectiveclockInTimeList); return resultMap; @@ -237,4 +239,24 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand> effectiveclockInTimeList){ + Map gobalSet = ExtensionClassHolder.getGlobalSetMap(); + if (!Util.null2String(gobalSet.get("interval_minutes")).equals("")){ + for (int i=0;i params); + /** + * 根据人员集合获得对应需要分析的日期 + * @param params + * @return + */ Map getAttendanceCycle(Map params); } diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java index 82bf6b7..cf8e165 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java @@ -48,8 +48,8 @@ public class AttendanceanalysisAction { try { Map paramMap = ParamUtil.request2Map(request); // Map paramMap = Maps.newHashMap(); -// paramMap.put("startDate","2024-07-01"); -// paramMap.put("endDate","2024-07-01"); +// paramMap.put("startDate","2024-08-05"); +// paramMap.put("endDate","2024-08-05"); // paramMap.put("userIds","81"); String startDate = Util.null2String(paramMap.get("startDate")); @@ -110,7 +110,7 @@ public class AttendanceanalysisAction { classesParamMap.put("pageSize",9999); classesParamMap.put("recurrence",1); classesParamMap.put("clockInTimeMap",clockInTimeMap); - classesParamMap.put("clockInData",dataList); + classesParamMap.put("clockInData",collect.get(userId)); classesParamMap.put("attendanceItems",attendanceItems); Map schedulMap = utilService.getSchedulingInFormation(classesParamMap); @@ -174,7 +174,7 @@ public class AttendanceanalysisAction { classesParamMap.put("pageSize",9999); classesParamMap.put("recurrence",1); classesParamMap.put("clockInTimeMap",clockInTimeMap); - classesParamMap.put("clockInData",dataList); + classesParamMap.put("clockInData",collect.get(userId)); classesParamMap.put("attendanceItems",attendanceItems); Map schedulMap = utilService.getSchedulingInFormation(classesParamMap); diff --git a/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java b/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java index cb34b1f..d5a2838 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java @@ -96,7 +96,7 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand> personGroupData = DbTools.getSqlToList(sql); - Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate); + Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate); for (Map personGroupOrganization :personGroupOrganizationList){ String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0]; diff --git a/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.java b/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.java index 6200b51..d89744e 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.java @@ -94,7 +94,7 @@ public class GetWorkHoursItemByPersonCmd extends AbstractCommonCommand> personGroupData = DbTools.getSqlToList(sql); - Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate); + Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate); log.debug("personnelGroupIds : {}",personnelGroupIds); for (Map personGroupOrganization :personGroupOrganizationList){ String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0]; diff --git a/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/cmd/GetKqCycleCheckoutInfoCmd.java b/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/cmd/GetKqCycleCheckoutInfoCmd.java index 237fa34..9d6bbf2 100644 --- a/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/cmd/GetKqCycleCheckoutInfoCmd.java +++ b/src/com/engine/jucailinkq/attendance/component/AttendanceCycle/cmd/GetKqCycleCheckoutInfoCmd.java @@ -53,7 +53,7 @@ public class GetKqCycleCheckoutInfoCmd extends AbstractCommonCommand attendanceSetIdsSets = CommonUtil.getDataIds(userId,modeId,null,null); + Set attendanceSetIdsSets = CommonUtil.getDataIds(userId,modeId,DateUtil.getCurrentDate()); log.debug("attendanceSetIdsSets : {}",attendanceSetIdsSets); if (attendanceSetIdsSets.size() == 0){ //取默认周期 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 388cc23..a3deccd 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 @@ -49,7 +49,7 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService { String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_bcxx"); Set bcids = Sets.newHashSet(); for (String resourceId :resourceIds.split(",")){ - bcids.addAll(CommonUtil.getAllDataIds(resourceId,modeId,DateUtil.getCurrentDate(),DateUtil.getCurrentDate())); + bcids.addAll(CommonUtil.getAllDataIds(resourceId,modeId,DateUtil.getCurrentDate())); } WeaTable table = new WeaTable(); String pageId = "936b04850b7b478cafd59d1cf4cb9fc1"; @@ -213,6 +213,9 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService { sqltj = sqltj.replace("and","and"); sqltj = sqltj.replace("or","or"); sqltj = sqltj.replace("join","join"); + sqltj = sqltj.replace("like","like"); + sqltj = sqltj.replace("in","in"); + sqltj = sqltj.replace("union","in"); log.info("getPersonnelGroupingByPerson sqltj : [{}]",sqltj); List> dataList = DbTools.getSqlToList(sqltj); for (Map dataMap :dataList){ 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 5eee83d..07137c0 100644 --- a/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java +++ b/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java @@ -9,6 +9,7 @@ import com.engine.common.entity.BizLogContext; import com.engine.jucailinkq.common.util.DateUtil; import com.engine.jucailinkq.common.util.DbTools; import com.engine.core.interceptor.CommandContext; +import com.engine.jucailinkq.common.util.Utils; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -16,6 +17,8 @@ import lombok.extern.slf4j.Slf4j; import weaver.general.Util; import weaver.hrm.company.DepartmentComInfo; +import java.time.ZoneOffset; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Set; @@ -68,7 +71,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand> dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray()); //人员数据 - Map>> personCollect = dataList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString())); + // Map>> personCollect = dataList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString())); //人员分组数据 @@ -77,7 +80,9 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand> personGroupData = DbTools.getSqlToList(queryryfz); - Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx,null,null); + List> personnelGroups = PersongroupCommonUtil.getPersonnelGroupByPerson(personGroupData,pbdx,null); + 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()); querySqlbyPbdx = sql +conditions + " and pbdxryfz in ("; log.debug("递归查询人员-人员分组节点,sql:{},personnelGroupIds:{}",querySqlbyPbdx,personnelGroupIds); if(personnelGroupIds.size() > 0){ @@ -85,7 +90,22 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand>> personGroupCollect = personGroupList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString())); + personGroupList = personGroupList.stream().filter(e->{ + String bcrq = e.get("bcrq").toString(); + String pbdxryfz = e.get("pbdxryfz").toString(); + Map personnelGroup = personnelGroupsCollect.get(pbdxryfz).get(personnelGroupsCollect.get(pbdxryfz).size()-1); + String edate = Util.null2String(personnelGroup.get("edate")); + String bdate = Util.null2String(personnelGroup.get("bdate")); + e.put("bdate",bdate); + if ((!"".equals(bdate) && DateUtil.getTime(bcrq).compareTo(DateUtil.getTime(bdate)) <0) || + (!"".equals(edate) && DateUtil.getTime(bcrq).compareTo(DateUtil.getTime(edate)) > 0)){ + return false; + }else { + return true; + } + }).collect(Collectors.toList()); + + //Map>> personGroupCollect = personGroupList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString())); //部门数据 @@ -101,7 +121,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand>> departmentCollect = departmentList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString())); + // Map>> departmentCollect = departmentList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString())); //分部数据 @@ -113,34 +133,81 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand>> subCompanyCollect = subCompanyList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString())); + //Map>> subCompanyCollect = subCompanyList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString())); //排班途径枚举集合 + dataList.addAll(personGroupList); + dataList.addAll(departmentList); + dataList.addAll(subCompanyList); - if (CheckBoxEnum.CHECKED.getKey().equals(showAll)){ - dataTableList.addAll(dataList); - dataTableList.addAll(personGroupList); - dataTableList.addAll(departmentList); - dataTableList.addAll(subCompanyList); - }else { + if (!CheckBoxEnum.CHECKED.getKey().equals(showAll)){ + Map>> dataCollect = dataList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString())); for (SchedulingApproachEnum schedulingApproachEnum :SchedulingApproachEnum.values()){ - List> resulstList = personCollect.get(schedulingApproachEnum.getKey()); + List> resulstList = dataCollect.get(schedulingApproachEnum.getKey()); if (resulstList == null || resulstList.size() == 0){ - resulstList = personGroupCollect.get(schedulingApproachEnum.getKey()); - if (resulstList == null || resulstList.size() == 0){ - resulstList = departmentCollect.get(schedulingApproachEnum.getKey()); - if (resulstList == null || resulstList.size() == 0){ - resulstList = subCompanyCollect.get(schedulingApproachEnum.getKey()); + continue; + } + Map>> resulstCollect = resulstList.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("bcrq")))); + for (Map.Entry>> entry:resulstCollect.entrySet()){ + String bcrq = entry.getKey(); + List> scheduleList = entry.getValue(); + if (scheduleList.size() > 1){ + //优先级。人员 》人员分组》部门》分部 + List> psersonList = scheduleList.stream().filter(e->!Util.null2String(e.get("pbdxry")).equals("")).collect(Collectors.toList()); + if (psersonList.size() == 0){ + psersonList = scheduleList.stream().filter(e->!Util.null2String(e.get("pbdxryfz")).equals("")).collect(Collectors.toList()); + if (psersonList.size() > 1){ + psersonList = psersonList.stream().sorted(Comparator.comparing(e -> DateUtil.getTime(e.get("bdate").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); + psersonList = Lists.newArrayList(psersonList.get(psersonList.size()-1)); + } + } + if (psersonList.size() == 0){ + psersonList = scheduleList.stream().filter(e->!Util.null2String(e.get("pbdxbm")).equals("")).collect(Collectors.toList()); } + if (psersonList.size() == 0){ + psersonList = scheduleList.stream().filter(e->!Util.null2String(e.get("pbdxfb")).equals("")).collect(Collectors.toList()); + } + if (psersonList.size() > 0){ + if (schedulingApproachEnum == SchedulingApproachEnum.RULE){ + psersonList = psersonList.stream().sorted(Comparator.comparing(e->Long.valueOf(e.get("pbgl").toString()))).collect(Collectors.toList()); + }else { + psersonList = psersonList.stream().sorted(Comparator.comparing(e->Long.valueOf(e.get("keyid").toString()))).collect(Collectors.toList()); + } + dataTableList.add(psersonList.get(psersonList.size()-1)); + } + }else { + dataTableList.add(scheduleList.get(0)); } } - if (resulstList != null && resulstList.size() != 0){ - dataTableList.addAll(resulstList); - } + } + }else { + dataTableList = dataList; } +// if (CheckBoxEnum.CHECKED.getKey().equals(showAll)){ +// dataTableList.addAll(dataList); +// dataTableList.addAll(personGroupList); +// dataTableList.addAll(departmentList); +// dataTableList.addAll(subCompanyList); +// }else { +// for (SchedulingApproachEnum schedulingApproachEnum :SchedulingApproachEnum.values()){ +// List> resulstList = personCollect.get(schedulingApproachEnum.getKey()); +// if (resulstList == null || resulstList.size() == 0){ +// resulstList = personGroupCollect.get(schedulingApproachEnum.getKey()); +// if (resulstList == null || resulstList.size() == 0){ +// resulstList = departmentCollect.get(schedulingApproachEnum.getKey()); +// if (resulstList == null || resulstList.size() == 0){ +// resulstList = subCompanyCollect.get(schedulingApproachEnum.getKey()); +// } +// } +// } +// if (resulstList != null && resulstList.size() != 0){ +// dataTableList.addAll(resulstList); +// } +// } +// } }else if ("1".equals(pblx)){ List param = Lists.newArrayList(); param.addAll(Dateparam); @@ -220,7 +287,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand> personGroupData = DbTools.getSqlToList(queryryfz); - Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx,null,null); + Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx,null); String querySqlbyPbdx = sql +conditions + " and pbdxryfz in ("; log.debug("递归查询人员-人员分组节点,sql:{},personnelGroupIds:{}",querySqlbyPbdx,personnelGroupIds); if(personnelGroupIds.size() > 0){ 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 ca9e8ca..ee3b5c8 100644 --- a/src/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java +++ b/src/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java @@ -329,37 +329,54 @@ public class PersongroupCommonUtil { /*** - * 获得人员是否在人员分组里 + * 获得人员所在在的人员分组id * @param personnelGrouping 人员分组集合 * @param userId 人员id * @return 人员分组主键ID集合 */ - public static Set getPersonnelGroupingByPerson(List> personnelGrouping,String userId,String startDate,String endDate){ + public static Set getPersonnelGroupingByPerson(List> personnelGrouping,String userId,String date){ Map>> collect = personnelGrouping.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("mainid")))); Set personnelGroupIds = Sets.newHashSet(); log.debug("getPersonnelGroupingByPerson collect : {}",collect); if (userId == null || "".equals(userId)){ return personnelGroupIds; } + personnelGroupIds = getPersonnelGroupByPerson(personnelGrouping,userId,date).stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet()); + + return personnelGroupIds; + } + + + /*** + * 获得人员所在人员分组 + * @param personnelGrouping 人员分组集合 + * @param userId 人员id + * @return 人员分组主键ID集合 + */ + public static List> getPersonnelGroupByPerson(List> personnelGrouping,String userId,String date){ + Map>> collect = personnelGrouping.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("mainid")))); + List> resultList = Lists.newArrayList(); + log.debug("getPersonnelGroupingByPerson collect : {}",collect); + if (userId == null || "".equals(userId)){ + return resultList; + } for (Map.Entry>> e : collect.entrySet()){ List> value = e.getValue(); for (Map data :value ){ String edate = Util.null2String(data.get("edate")); String bdate = Util.null2String(data.get("bdate")); - if (!"".equals(startDate) && startDate != null){ - if ((!"".equals(edate) && DateUtil.getBetWeenDays(edate,startDate) >0) || DateUtil.getBetWeenDays(bdate,endDate) < 0){ + if (date != null && !date.equals("")){ + if ((!"".equals(bdate) && DateUtil.getTime(date).compareTo(DateUtil.getTime(bdate)) <0) || + (!"".equals(edate) && DateUtil.getTime(date).compareTo(DateUtil.getTime(edate)) > 0)){ continue; } } - if (!"".equals(edate) && DateUtil.getBetWeenDays(edate) >0){ - continue; - } String empid = Util.null2String(data.get("empid")); String filters = Util.null2String(data.get("filters")); String sqltj = Util.null2String(data.get("sqltj")); log.debug(" empid : {},userId : {}",empid,userId); if (empid.equals(userId)){ - personnelGroupIds.add(e.getKey()); + resultList.add(data); }else if (!"".equals(filters)){ filters = filters.replace("and","and"); filters = filters.replace("or","or"); @@ -375,7 +392,7 @@ public class PersongroupCommonUtil { for (Map dataMap :dataList){ String hrmId = Util.null2String(dataMap.get("id")); if (hrmId.equals(userId)){ - personnelGroupIds.add(e.getKey()); + resultList.add(data); } } }else if (!"".equals(sqltj)){ @@ -383,12 +400,15 @@ public class PersongroupCommonUtil { sqltj = sqltj.replace("and","and"); sqltj = sqltj.replace("or","or"); sqltj = sqltj.replace("join","join"); + sqltj = sqltj.replace("like","like"); + sqltj = sqltj.replace("in","in"); + sqltj = sqltj.replace("union","in"); log.info("getPersonnelGroupingByPerson sqltj : [{}]",sqltj); List> dataList = DbTools.getSqlToList(sqltj); for (Map dataMap :dataList){ String hrmId = Util.null2String(dataMap.get("id")); if (hrmId.equals(userId)){ - personnelGroupIds.add(e.getKey()); + resultList.add(data); } } } @@ -396,7 +416,7 @@ public class PersongroupCommonUtil { } - return personnelGroupIds; + return resultList; } /** @@ -446,6 +466,9 @@ public class PersongroupCommonUtil { sqltj = sqltj.replace("and","and"); sqltj = sqltj.replace("or","or"); sqltj = sqltj.replace("join","join"); + sqltj = sqltj.replace("like","like"); + sqltj = sqltj.replace("in","in"); + sqltj = sqltj.replace("union","in"); log.info("getPersonnelGroupingByPerson sqltj : [{}]",sqltj); List> dataList = DbTools.getSqlToList(sqltj); for (Map dataMap :dataList){ diff --git a/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java b/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java index 0a49f5f..39562af 100644 --- a/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java @@ -15,8 +15,11 @@ import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import weaver.general.Util; +import java.time.ZoneOffset; +import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Slf4j @@ -49,7 +52,7 @@ public class SchedulingResultsServiceImpl extends Service implements SchedulingR if (!CheckBoxEnum.CHECKED.getKey().equals(showAll)){ dataTableList = Utils.getSchedulingList(dataTableList); } - + dataTableList = dataTableList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("bcrq").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); int total = dataTableList.size(); resultMap.put("total",total); if (pageSize != 9999){ diff --git a/src/com/engine/jucailinkq/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.java b/src/com/engine/jucailinkq/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.java index 3cac570..de9ec59 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.java +++ b/src/com/engine/jucailinkq/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.java @@ -50,7 +50,7 @@ public class GetKqCycleTimeIntervalCmd extends AbstractCommonCommand departMentMap = DbTools.getSqlToMap(sql,userId); - Set attendanceSetIdsSets = CommonUtil.getDataIds(userId,modeId,null,null); + Set attendanceSetIdsSets = CommonUtil.getDataIds(userId,modeId,DateUtil.getCurrentDate()); log.debug("attendanceSetIdsSets : {}",attendanceSetIdsSets); if (attendanceSetIdsSets.size() == 0){ //取默认周期 diff --git a/src/com/engine/jucailinkq/attendance/workflow/cmd/GetRestDayIntervalCmd.java b/src/com/engine/jucailinkq/attendance/workflow/cmd/GetRestDayIntervalCmd.java index ac6f52e..883403c 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/cmd/GetRestDayIntervalCmd.java +++ b/src/com/engine/jucailinkq/attendance/workflow/cmd/GetRestDayIntervalCmd.java @@ -40,7 +40,7 @@ public class GetRestDayIntervalCmd extends AbstractCommonCommand calendarSetIdsSets = CommonUtil.getDataIds(userId,modeId, DateUtil.getCurrentDate(),DateUtil.getCurrentDate()); + Set calendarSetIdsSets = CommonUtil.getDataIds(userId,modeId, DateUtil.getCurrentDate()); if (calendarSetIdsSets.size() > 0){ String sql = "select rqlx,rq from uf_jcl_kq_rlxx where rlmc=? and rq>=? and rq<=?"; List> dataList = DbTools.getSqlToList(sql,calendarSetIdsSets.toArray()[0],startDate,endDate); diff --git a/src/com/engine/jucailinkq/attendance/workflow/service/impl/ProcessSubmitCheckServiceImpl.java b/src/com/engine/jucailinkq/attendance/workflow/service/impl/ProcessSubmitCheckServiceImpl.java index 71c93e4..d8f9632 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/service/impl/ProcessSubmitCheckServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/workflow/service/impl/ProcessSubmitCheckServiceImpl.java @@ -28,7 +28,7 @@ public class ProcessSubmitCheckServiceImpl extends Service implements ProcessSub Map resultMap = Maps.newHashMap(); resultMap.put("result","0"); - Set attendanceSetIdsSets = CommonUtil.getDataIds(userId,modeId,null,null); + Set attendanceSetIdsSets = CommonUtil.getDataIds(userId,modeId,DateUtil.getCurrentDate()); log.debug("attendanceSetIdsSets : {}",attendanceSetIdsSets); for (String submitDate:submitDates.split(",")){ LocalDateTime localDateTime = DateUtil.getTime(submitDate); diff --git a/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java b/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java index 922fe3d..2a946e6 100644 --- a/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java +++ b/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java @@ -262,6 +262,9 @@ public class GetPersonDateBySuitOrganzation extends AbstractCommonCommand> dataList = DbTools.getSqlToList(sqltj); for (Map dataMap :dataList){ diff --git a/src/com/engine/jucailinkq/common/util/CommonUtil.java b/src/com/engine/jucailinkq/common/util/CommonUtil.java index 0ba46e1..14e3720 100644 --- a/src/com/engine/jucailinkq/common/util/CommonUtil.java +++ b/src/com/engine/jucailinkq/common/util/CommonUtil.java @@ -63,7 +63,7 @@ public class CommonUtil { public static String makeUpdateSql(String tableName, Map map,Map condition){ String updateSql = "update "+tableName+" set "; for (Map.Entry e : map.entrySet()){ - if (e.getValue() !=null && !"".equals(e.getValue())){ + if (e.getValue() !=null && !"".equals(e.getValue()) && !e.getKey().equals("id")){ updateSql = updateSql + e.getKey()+"='"+e.getValue().toString()+"',"; } } @@ -111,11 +111,10 @@ public class CommonUtil { * 获得包含该人员的适用范围的模块的数据id,按照人员-人员分组-部门-分部优先级取到最优先的 * @param resourceId * @param modeId - * @param startDate - * @param endDate + * @param date * @return */ - public static Set getDataIds(String resourceId,String modeId,String startDate,String endDate){ + public static Set getDataIds(String resourceId,String modeId,String date){ String sql = "select dxlx,dataid,dx from uf_jcl_syzz where modeid=?"; List> organizationList = DbTools.getSqlToList(sql,modeId); @@ -145,7 +144,7 @@ public class CommonUtil { sql = "select mainid,empid,filters,bdate,edate,sqltj from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")"; log.debug("query personGroupData : {}",sql); List> personGroupData = DbTools.getSqlToList(sql); - Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate); + Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date); log.debug("personnelGroupIds : {}",personnelGroupIds); for (Map personGroupOrganization :personGroupOrganizationList){ String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0]; @@ -196,11 +195,10 @@ public class CommonUtil { * 获得包含该人员的适用范围的模块的所有数据id,给班次适用范围用 * @param resourceId * @param modeId - * @param startDate - * @param endDate + * @param date * @return */ - public static Set getAllDataIds(String resourceId,String modeId,String startDate,String endDate){ + public static Set getAllDataIds(String resourceId,String modeId,String date){ String sql = "select dxlx,dataid,dx from uf_jcl_syzz where modeid=?"; List> organizationList = DbTools.getSqlToList(sql,modeId); @@ -230,7 +228,7 @@ public class CommonUtil { sql = "select mainid,empid,filters,bdate,edate,sqltj from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")"; log.debug("query personGroupData : {}",sql); List> personGroupData = DbTools.getSqlToList(sql); - Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate); + Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date); log.debug("personnelGroupIds : {}",personnelGroupIds); for (Map personGroupOrganization :personGroupOrganizationList){ String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0]; @@ -521,6 +519,9 @@ public class CommonUtil { sqltj = sqltj.replace("and","and"); sqltj = sqltj.replace("or","or"); sqltj = sqltj.replace("join","join"); + sqltj = sqltj.replace("like","like"); + sqltj = sqltj.replace("in","in"); + sqltj = sqltj.replace("union","in"); log.info("getPersonnelGroupingByPerson sqltj : [{}]",sqltj); List> dataList = DbTools.getSqlToList(sqltj); for (Map dataMap :dataList){ @@ -597,6 +598,9 @@ public class CommonUtil { sqltj = sqltj.replace("and","and"); sqltj = sqltj.replace("or","or"); sqltj = sqltj.replace("join","join"); + sqltj = sqltj.replace("like","like"); + sqltj = sqltj.replace("in","in"); + sqltj = sqltj.replace("union","in"); log.info("getPersonnelGroupingByPerson sqltj : [{}]",sqltj); List> dataList = DbTools.getSqlToList(sqltj); for (Map dataMap :dataList){ @@ -655,7 +659,7 @@ public class CommonUtil { */ public static String getRqlx(String userId,String date){ String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_rlmc"); - Set calendarSetIdsSets = CommonUtil.getDataIds(userId,modeId,DateUtil.getCurrentDate(),DateUtil.getCurrentDate()); + Set calendarSetIdsSets = CommonUtil.getDataIds(userId,modeId,DateUtil.getCurrentDate()); log.debug("getRqlx calendarSetIdsSets : [{}]",calendarSetIdsSets); String rqlx = ""; if (calendarSetIdsSets.size() > 0){ @@ -686,7 +690,7 @@ public class CommonUtil { */ public static List> getYearCalendarList(String userId,String year){ String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_rlmc"); - Set calendarSetIdsSets = CommonUtil.getDataIds(userId,modeId,DateUtil.getCurrentDate(),DateUtil.getCurrentDate()); + Set calendarSetIdsSets = CommonUtil.getDataIds(userId,modeId,DateUtil.getCurrentDate()); log.debug("getRqlx calendarSetIdsSets : [{}]",calendarSetIdsSets); List> resultList = Lists.newArrayList(); if (calendarSetIdsSets.size() > 0){ @@ -792,7 +796,9 @@ public class CommonUtil { Map>> detailDataGroupMap = DbTools.getSqlToList(sql).stream().collect(Collectors.groupingBy(e->e.get("id").toString())); try { - //打卡卡点扩展类 + /** + * 打卡卡点扩展类 + */ List adjustClockPointAction = Lists.newArrayList(); List> adjustClockPointActionResultList = dataList.stream().filter(e->"0".equals(e.get("jkdzsxlx"))).sorted(Comparator.comparing(e->Integer.valueOf(e.get("zhsx").toString()))).collect(Collectors.toList()); for (Map adjustClockPointActionMap:adjustClockPointActionResultList){ @@ -810,6 +816,13 @@ public class CommonUtil { adjustClockPointAction.add(action); } ExtensionClassHolder.setAdjustClockPointAction(adjustClockPointAction); + /** + * 全局变量设置 + */ + sql = "select csm id,csz name from uf_jcl_kq_globalset where zt=0"; + Map globalMap = DbTools.getSqlToMapList(sql); + ExtensionClassHolder.setGlobalSetMap(globalMap); + }catch (Exception e){ log.error("initExtensionClassHolder fail"); throw new AttendanceRunTimeException("初始化扩展类失败"); @@ -904,7 +917,7 @@ public class CommonUtil { sql = "select mainid,empid,filters,sqltj,bdate,edate from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")"; List> personGroupData = DbTools.getSqlToList(sql); - Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData, empId,date, date); + Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData, empId,date); for (Map personGroupOrganization :personGroupOrganizationList){ String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0]; diff --git a/src/com/engine/jucailinkq/common/util/ExtensionClassHolder.java b/src/com/engine/jucailinkq/common/util/ExtensionClassHolder.java index 33811c9..7d8fb61 100644 --- a/src/com/engine/jucailinkq/common/util/ExtensionClassHolder.java +++ b/src/com/engine/jucailinkq/common/util/ExtensionClassHolder.java @@ -3,6 +3,7 @@ package com.engine.jucailinkq.common.util; import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.getclockInpoint.biz.AbstractAdjustClockPointAction; import java.util.List; +import java.util.Map; /** * 扩展类 @@ -13,6 +14,12 @@ public class ExtensionClassHolder { */ private static ThreadLocal> adjustClockPointActionThreadLocal = new ThreadLocal<>(); + /** + * 全局设置变量 + */ + private static ThreadLocal> globalSetMapThreadLocal = new ThreadLocal<>(); + + public static void setAdjustClockPointAction(List adjustClockPointActionList) { adjustClockPointActionThreadLocal.set(adjustClockPointActionList); } @@ -20,4 +27,12 @@ public class ExtensionClassHolder { public static List getAdjustClockPointAction() { return adjustClockPointActionThreadLocal.get(); } + + public static void setGlobalSetMap(Map map) { + globalSetMapThreadLocal.set(map); + } + + public static Map getGlobalSetMap() { + return globalSetMapThreadLocal.get(); + } }