zm_dev
liuliang 1 year ago
parent fbcdecdf52
commit c52d25d110

@ -1 +1 @@
<EFBFBD>[<EFBFBD><EFBFBD>鵿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>[<EFBFBD><EFBFBD>鵿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

@ -10,8 +10,10 @@
</component>
<component name="ChangeListManager">
<list default="true" id="baeb3dfb-5097-46c5-933e-6d1dab18b815" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/beforlog.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeListCmd.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetEvectionCmd.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/ClassBelongToEnum.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.s" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.s" afterDir="false" />
@ -20,62 +22,43 @@
<change beforePath="$PROJECT_DIR$/log/sdk.log" beforeDir="false" afterPath="$PROJECT_DIR$/log/sdk.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/artifacts/hrm_attendance/hrm-attendance.jar" beforeDir="false" afterPath="$PROJECT_DIR$/out/artifacts/hrm_attendance/hrm-attendance.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/EvectionService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/EvectionService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/workflow/cmd/GetAskForLeaveRecordListCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/workflow/cmd/GetAskForLeaveRecordListCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/workflow/service/impl/BusinessTripsApplyServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/workflow/service/impl/BusinessTripsApplyServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/util/CommonUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/CommonUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/util/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/cmd/VocationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/cmd/VocationCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/service/impl/VocationServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/service/impl/VocationServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/util/VocationCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/util/VocationCommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/EliminationsAskForLeaveAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/EliminationsAskForLeaveAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/EliminationsEvctionCheckAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/EliminationsEvctionCheckAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/MakeUpClockInAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/MakeUpClockInAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/RevokeEliminationsAskForLeaveAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/RevokeEliminationsAskForLeaveAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/RevokeLeaveAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/RevokeLeaveAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/cmd/GetAskForLeaveRecordListCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/cmd/GetAskForLeaveRecordListCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/cmd/GetEliminationsEvctionListCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/cmd/GetEliminationsEvctionListCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/AllowanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/AllowanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/AskForLeaveServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/AskForLeaveServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/AttendanceSummaryServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/AttendanceSummaryServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/BusinessTripsApplyServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/BusinessTripsApplyServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/cmd/GetPersonDateBySuitOrganzation.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/cmd/GetPersonDateBySuitOrganzation.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/CommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/CommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/DbTools.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/DbTools.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$3.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$4.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$4.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$5.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$5.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestMergeAskForLeaveAndEvctionSchedule.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestMergeAskForLeaveAndEvctionSchedule.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestMethod.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestMethod.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestObj.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestObj.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestGetClockInPoint.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestGetClockInPoint.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestObj.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestObj.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -118,7 +101,7 @@
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File" value="PLAIN_TEXT" />
<property name="last_directory_selection" value="$PROJECT_DIR$/src/com/engine/kq" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../../easyentry" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../上海考勤产品/考勤分支代码" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" />
@ -140,11 +123,11 @@
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\jucailin\cmd\calendar" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="com.engine.attendance.attendanceanalysis.cmd" />
<recent name="TestAttendanceAllowance" />
<recent name="ComprehensiveWorkingHourServiceImpl" />
<recent name="" />
<recent name="shuju" />
<recent name="com.engine.attendance.attendanceanalysis.service.impl" />
</key>
</component>
<component name="RunAnythingCache">
@ -615,7 +598,11 @@
<workItem from="1712899728990" duration="7469000" />
<workItem from="1713158776480" duration="17419000" />
<workItem from="1713230394234" duration="7819000" />
<workItem from="1713245093631" duration="3537000" />
<workItem from="1713245093631" duration="18383000" />
<workItem from="1713316973682" duration="6367000" />
<workItem from="1713331602706" duration="17751000" />
<workItem from="1713403621962" duration="26362000" />
<workItem from="1713490296383" duration="15154000" />
</task>
<servers />
</component>
@ -654,21 +641,6 @@
<line>107</line>
<option name="timeStamp" value="71" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java</url>
<line>60</line>
<option name="timeStamp" value="73" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java</url>
<line>50</line>
<option name="timeStamp" value="74" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java</url>
<line>383</line>
<option name="timeStamp" value="76" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
<pin-to-top-manager>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -0,0 +1,118 @@
package com.engine.attendance.attendanceanalysis.cmd;
import com.engine.attendance.enums.CheckBoxEnum;
import com.engine.attendance.enums.ClassBelongToEnum;
import com.engine.attendance.enums.ClassSegmentTypeEnum;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.common.util.Utils;
import com.engine.core.interceptor.CommandContext;
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.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
public class GetAskForLeaveCmd extends AbstractCommonCommand<Map<String,Object>> {
public GetAskForLeaveCmd(Map<String,Object> params){
this.params=params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String,Object> resultMap = Maps.newHashMap();
String userId = Util.null2String(params.get("userId"));
String analysisDate = Util.null2String(params.get("analysisDate"));
List<Map<String, Object>> scheduleResult = (List<Map<String, Object>>)params.get("scheduleResult");
String sql = "select a.qjry,a.jqlx,a.cxjqj,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where a.qjry=? and b.ksrq=>? and b.ksrq<=? and (b.cxqj=0 or b.cxqj is null)";
List<Map<String,Object>> askForLeaveList = DbTools.getSqlToList(sql,userId, DateUtil.beforeDay(analysisDate,1),DateUtil.AfterDay(analysisDate,1));
Map<String,Map<String,Object>> askForLeaveItems = Maps.newHashMap();
String firstKssj = Utils.getkssjTime(scheduleResult.get(0),analysisDate);
String lastjssj = Utils.getjssjTime(scheduleResult.get(scheduleResult.size()-1),analysisDate);
Set<String> jplxSet = Sets.newHashSet();
List<Map<String,Object>> haveAskForLeaveList = askForLeaveList.stream().filter(e->{
String kssj = e.get("ksrq")+" "+e.get("kssj");
String jssj = e.get("jsrq")+" "+e.get("jssj");
if (e.get("ksrq").equals(analysisDate) && !"1".equals(e.get("cxjqj"))){
jplxSet.add(e.get("jqlx").toString());
return true;
}else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(lastjssj)) <0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(firstKssj)) >0 && "1".equals(e.get("cxjqj"))){
jplxSet.add(e.get("jqlx").toString());
return true;
}else {
return false;
}
}).collect(Collectors.toList());
log.info("haveAskForLeaveList : [{}]",haveAskForLeaveList);
sql = "select id,hsl,hsdw,lgsbxydk,tqlghlfzs,fgsbxydk,thfghlfzs,tybcndbjlhbjs,zdycbcndfgzsd,zdycrqqjndxxb,zysd from uf_jcl_kq_kqxm where id in ("+String.join(",",jplxSet)+")";
Map<String,List<Map<String,Object>>> collect = DbTools.getSqlToList(sql).stream().collect(Collectors.groupingBy(e->e.get("id").toString()));
List<Map<String,Object>> resultList = Lists.newArrayList();
List<Map<String,Object>> askForLeaveSchedule = Lists.newArrayList();
for (Map<String,Object> askForLeaveData : haveAskForLeaveList){
Map<String,Object> askForLeaveItem = collect.get(askForLeaveData.get("jqlx")).get(0);
//全天请假
if (CheckBoxEnum.CHECKED.getKey().equals(askForLeaveData.get("qtj"))){
Map<String,Object> map = Maps.newHashMap();
map.put("item",askForLeaveData.get("jqlx"));
map.put("itemduration",scheduleResult.get(0).get("edsc"));
resultList.add(map);
resultMap.put("alldayVaction",resultList);
}
askForLeaveItems.put(askForLeaveData.get("jqlx").toString(),askForLeaveItem);
if (!"".equals(Util.null2String(askForLeaveData.get("kssj"))) && !"".equals(Util.null2String(askForLeaveData.get("jssj")))){
Map<String,Object> askForLeaveMap = new HashMap(){{
put("bcxx", scheduleResult.get(0).get("bcxx"));
put("bcsdxx", scheduleResult.get(0).get("bcsdxx"));
put("edsc", scheduleResult.get(0).get("edsc"));
put("bdlx", ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey());
put("dtkssj",askForLeaveData.get("kssj"));
put("dtjssj",askForLeaveData.get("jssj"));
put("ksdk",askForLeaveItem.get("fgsbxydk"));
put("jsdk",askForLeaveItem.get("lgsbxydk"));
put("tqdkfzs","60");
put("thdkfzs","60");
put("tqlghlfzs",askForLeaveItem.get("tqlghlfzs"));
put("thfghlfzs",askForLeaveItem.get("thfghlfzs"));
}};
String ksrq = Util.null2String(askForLeaveData.get("ksrq"));
if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) == 0){
askForLeaveMap.put("gsrq",ClassBelongToEnum.NOWDAY.getKey());
}else if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) < 0){
askForLeaveMap.put("gsrq",ClassBelongToEnum.YESTERDAY.getKey());
}else if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) > 0){
askForLeaveMap.put("gsrq",ClassBelongToEnum.NEXTDAY.getKey());
}
askForLeaveSchedule.add(askForLeaveMap);
}
}
resultMap.put("askForLeaveList",haveAskForLeaveList);
resultMap.put("askForLeaveItems",askForLeaveItems);
resultMap.put("askForLeaveSchedule",askForLeaveSchedule);
return resultMap;
}
}

@ -22,7 +22,7 @@ import java.util.Map;
import java.util.stream.Collectors;
/**
*
*
*/
@Slf4j
public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object>> {
@ -653,80 +653,73 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
String signdateTime = beforeClcokInTimeMap.get("signdate") + " " + beforeClcokInTimeMap.get("signtime");
String resetClcokInTime ="";
Map<String, Map<String, Object>> resetClcokInTimeData = null;
if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) <= 0) {
//该打卡归属前一个打卡点
Map<String, Map<String, Object>> nearestClcokInTime = Utils.getNearestClcokInTimeCmd(afterTime, clockInTimeList);
//start开始打卡时间点end结束打卡时间点
String pointType = afterClcokInTime.split("\\|")[1];
//empty:漏卡equal:打卡时间和班次时间相等before打卡时间在班次时间之前after打卡时间在班次时间之后
String timeType = afterClcokInTime.split("\\|")[2];
String time = afterClcokInTime.split("\\|")[0];
String newPonit = time+"|"+pointType;
String newtimeType = "";
if (timeType.equals(ClockPointEnum.BEFORE.getKey())){
newtimeType = ClockPointEnum.AFTER.getKey();
}else if (timeType.equals(ClockPointEnum.AFTER.getKey())){
newtimeType = ClockPointEnum.BEFORE.getKey();
//该打卡归属前一个打卡点,后一个打卡点需要重新设置
resetClcokInTime = afterClcokInTime;
resetClcokInTimeData = afterClcokInTimeData;
} else if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) > 0) {
//该打卡归属后一个打卡点,前一个打卡点需要重新设置
resetClcokInTime=beforeClcokInTime;
resetClcokInTimeData = beforeClcokInTimeData;
}
//需要重新赋值的打卡时间
String restTime = resetClcokInTime.split("\\|")[0];
if (resetClcokInTime.split("\\|").length ==4 && !"0".equals(resetClcokInTime.split("\\|")[3])){
restTime = resetClcokInTime.split("\\|")[3];
}
Map<String, Map<String, Object>> nearestClcokInTime = Utils.getNearestClcokInTimeCmd(restTime, clockInTimeList);
//start开始打卡时间点end结束打卡时间点
String pointType = resetClcokInTime.split("\\|")[1];
//empty:漏卡equal:打卡时间和班次时间相等before打卡时间在班次时间之前after打卡时间在班次时间之后
String timeType = resetClcokInTime.split("\\|")[2];
String time = resetClcokInTime.split("\\|")[0];
String newPonit = time+"|"+pointType;
String newtimeType = "";
if (timeType.equals(ClockPointEnum.BEFORE.getKey())){
newtimeType = ClockPointEnum.AFTER.getKey();
}else if (timeType.equals(ClockPointEnum.AFTER.getKey())){
newtimeType = ClockPointEnum.BEFORE.getKey();
}
if (nearestClcokInTime.get(newtimeType) != null && (i+2)<clcokInTimeData.size()){
newPonit = newPonit +"|"+newtimeType;
if (resetClcokInTime.split("\\|").length ==4){
newPonit = newPonit +"|"+resetClcokInTime.split("\\|")[3];
}
if (nearestClcokInTime.get(newtimeType) != null && (i+2)<clcokInTimeData.size()){
newPonit = newPonit +"|"+newtimeType;
if (afterClcokInTime.split("\\|").length ==4){
newPonit = newPonit +"|"+afterClcokInTime.split("\\|")[3];
Map<String, Object> newClockTimeMap = nearestClcokInTime.get(newtimeType);
String newClockTime = newClockTimeMap.get("signdate")+ " "+newClockTimeMap.get("signtime");
int index = clcokInTimeData.indexOf(resetClcokInTimeData);
if (newtimeType.equals(ClockPointEnum.BEFORE.getKey())){
if (!getBeforeClockTime(needClockDateList,time).equals("") && DateUtil.getTime(newClockTime).compareTo(DateUtil.getTime(getBeforeClockTime(needClockDateList,time))) <= 0){
newClockTimeMap = null;
}
Map<String, Object> newClockTimeMap = nearestClcokInTime.get(newtimeType);
String newClockTime = newClockTimeMap.get("signdate")+ " "+newClockTimeMap.get("signtime");
if (newtimeType.equals(ClockPointEnum.BEFORE.getKey())){
if (!getBeforeClockTime(needClockDateList,time).equals("") && DateUtil.getTime(newClockTime).compareTo(DateUtil.getTime(getBeforeClockTime(needClockDateList,time))) <= 0){
newClockTimeMap = null;
if ((index-1) >= 0){
//当重新需要打卡的时间戳赋予打卡时间之前的打卡集合时,进行比对
Map<String, Map<String, Object>> resetBeforeData = clcokInTimeData.get(index-1);
Map<String, Object> resetBeforeClcokInTimeMap = null;
for (Map.Entry<String, Map<String, Object>> resetBeforeEntry : resetBeforeData.entrySet()) {
resetBeforeClcokInTimeMap = resetBeforeEntry.getValue();
}
}else if (newtimeType.equals(ClockPointEnum.AFTER.getKey())){
if (!getNextClockTime(needClockDateList,time).equals("") && DateUtil.getTime(newClockTime).compareTo(DateUtil.getTime(getNextClockTime(needClockDateList,time))) >= 0){
if (newClockTimeMap == resetBeforeClcokInTimeMap){
newClockTimeMap = null;
}
}
int index = clcokInTimeData.indexOf(afterClcokInTimeData);
clcokInTimeData.remove(afterClcokInTimeData);
afterClcokInTimeData = Maps.newHashMap();
afterClcokInTimeData.put(newPonit,newClockTimeMap);
clcokInTimeData.add(index,afterClcokInTimeData);
}else {
afterClcokInTimeData.put(afterClcokInTime, null);
}else if (newtimeType.equals(ClockPointEnum.AFTER.getKey())){
if (!getNextClockTime(needClockDateList,time).equals("") && DateUtil.getTime(newClockTime).compareTo(DateUtil.getTime(getNextClockTime(needClockDateList,time))) >= 0){
newClockTimeMap = null;
}
}
// if (pointType.equals(ClockPointEnum.END.getKey())){
// if (nearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null && (i+2)<clcokInTimeData.size()){
// newPonit = newPonit +"|"+ClockPointEnum.BEFORE.getKey();
// if (afterClcokInTime.split("\\|").length ==4){
// newPonit = newPonit +"|"+afterClcokInTime.split("\\|")[3];
// }
// clcokInTimeData.remove(afterClcokInTimeData);
// afterClcokInTimeData = Maps.newHashMap();
// afterClcokInTimeData.put(newPonit,nearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()));
// clcokInTimeData.add(afterClcokInTimeData);
// }else {
// afterClcokInTimeData.put(afterClcokInTime, null);
// }
// }else if (pointType.equals(ClockPointEnum.START.getKey())){
// if (nearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null){
// newPonit = newPonit +"|"+ClockPointEnum.AFTER.getKey();
// if (afterClcokInTime.split("\\|").length ==4){
// newPonit = newPonit +"|"+afterClcokInTime.split("\\|")[3];
// }
// clcokInTimeData.remove(afterClcokInTimeData);
// afterClcokInTimeData = Maps.newHashMap();
// afterClcokInTimeData.put(newPonit,nearestClcokInTime.get(ClockPointEnum.AFTER.getKey()));
// clcokInTimeData.add(i + 1,afterClcokInTimeData);
// }else {
// afterClcokInTimeData.put(afterClcokInTime, null);
// }
// }
} else if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) > 0) {
//该打卡归属后一个打卡点
beforeClcokInTimeData.put(beforeClcokInTime, null);
clcokInTimeData.remove(resetClcokInTimeData);
resetClcokInTimeData = Maps.newHashMap();
resetClcokInTimeData.put(newPonit,newClockTimeMap);
clcokInTimeData.add(index,resetClcokInTimeData);
}else {
resetClcokInTimeData.put(restTime, null);
}
}
}

@ -0,0 +1,122 @@
package com.engine.attendance.attendanceanalysis.cmd;
import com.engine.attendance.enums.CheckBoxEnum;
import com.engine.attendance.enums.ClassSegmentTypeEnum;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.common.util.Utils;
import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
*/
@Slf4j
public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Object>> {
public GetClockInTimeListCmd(Map<String, Object> params){
this.params=params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
//打卡日期
String needGetDate = Util.null2String(params.get("date"));
//打卡数据
List<Map<String,Object>> clockInTimeList = (List<Map<String,Object>>)params.get("clockInTimeList");
//班次数据
Map<String, List<Map<String,Object>>> schedulingResultCollect = (Map<String, List<Map<String,Object>>>)params.get("schedulingResultCollect");
//出勤结果日期对应的进出数据
Map<String,Map<String,Object>> clockInTimeMap = (Map<String,Map<String,Object>>)params.get("clockInTimeMap");
//当天班次
List<Map<String,Object>> needGetDateScheduling = schedulingResultCollect.get(needGetDate);
//分析人员
String userId = Util.null2String(params.get("userId"));
List<Map<String, Object>> scheduleList = needGetDateScheduling.stream().filter(e -> {
if (!ClassSegmentTypeEnum.REST_AND_DINE.getKey().equals(e.get("bdlx")) && !ClassSegmentTypeEnum.REST_PERIOD.getKey().equals(e.get("bdlx")) &&
!ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(e.get("bdlx")) && (CheckBoxEnum.CHECKED.getKey().equals(e.get("ksdk")) || CheckBoxEnum.CHECKED.getKey().equals(e.get("jsdk")))){
return true;
}else {
return false;
}
}).collect(Collectors.toList());
Map<String, Object> firstKsdkSchedule = null;
Map<String, Object> lastKsdkSchedule = null;
for (int i=0;i<scheduleList.size();i++){
if (CheckBoxEnum.CHECKED.getKey().equals(scheduleList.get(i).get("ksdk"))){
firstKsdkSchedule = scheduleList.get(i);
break;
}
}
for (int j=scheduleList.size()-1;j>0;j--){
if (CheckBoxEnum.CHECKED.getKey().equals(scheduleList.get(j).get("jsdk"))){
lastKsdkSchedule = scheduleList.get(j);
break;
}
}
//当天班次最早会打卡的时间点
String earliestTime = Utils.getkssjEarliestTime(firstKsdkSchedule,needGetDate);
//当天班次最晚会打卡的时间点
String lastestTime = Utils.getjssjLastestTime(lastKsdkSchedule,needGetDate);
if (DateUtil.getTime(earliestTime).compareTo(DateUtil.getTime(needGetDate+" 00:00:00")) < 0){
//当最早打卡时间点在前一天时,获取前一天的出勤结果打卡数据
String earliestDate = earliestTime.split(" ")[0];
Map<String,Object> clockIntime = clockInTimeMap.get(earliestDate);
if (clockIntime == null){
String sql = "select rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where ygid=? and rq>=? and rq<=?";
List<Map<String,Object>> attendanceResult = DbTools.getSqlToList(sql,userId,DateUtil.beforeDay(earliestDate,1),earliestDate);
Map<String, List<Map<String,Object>>> attendanceCollect = attendanceResult.stream().collect(Collectors.groupingBy(e->e.get("rq").toString()));
clockIntime = attendanceCollect.get(earliestDate) == null?null:attendanceCollect.get(earliestDate).get(0);
if (clockIntime == null){
//取不到当天的就再往前取一天
clockIntime = attendanceCollect.get(DateUtil.beforeDay(earliestDate,1)) == null?null:attendanceCollect.get(DateUtil.beforeDay(earliestDate,1)).get(0);
}
}
if (clockIntime !=null){
for (int i=8;i>0;i--){
String in = Util.null2String(clockIntime.get("j"+i));
String out = Util.null2String(clockIntime.get("c"+i));
if (!"".equals(out)){
if (DateUtil.getTime(out).compareTo(DateUtil.getTime(earliestTime)) > 0){
earliestTime = out;
}
break;
}else if (!"".equals(in)){
if (DateUtil.getTime(in).compareTo(DateUtil.getTime(earliestTime)) > 0){
earliestTime = in;
}
break;
}
}
}
}
log.info("earliestTime :[{}],lastestTime: [{}]",earliestTime,lastestTime);
String finalEarliestTime = earliestTime;
List<Map<String,Object>> effectiveclockInTimeList = clockInTimeList.stream().filter(e->{
String signDate = e.get("signdate")+" "+e.get("signtime");
if (DateUtil.getTime(signDate).compareTo(DateUtil.getTime(finalEarliestTime)) >0 && DateUtil.getTime(signDate).compareTo(DateUtil.getTime(lastestTime)) <=0){
return true;
}else {
return false;
}
}).collect(Collectors.toList());
Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("resultList",effectiveclockInTimeList);
return resultMap;
}
}

@ -0,0 +1,118 @@
package com.engine.attendance.attendanceanalysis.cmd;
import com.engine.attendance.enums.CheckBoxEnum;
import com.engine.attendance.enums.ClassBelongToEnum;
import com.engine.attendance.enums.ClassSegmentTypeEnum;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.common.util.Utils;
import com.engine.core.interceptor.CommandContext;
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.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
public class GetEvectionCmd extends AbstractCommonCommand<Map<String,Object>> {
public GetEvectionCmd(Map<String,Object> params){
this.params=params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String,Object> resultMap = Maps.newHashMap();
String userId = Util.null2String(params.get("userId"));
String analysisDate = Util.null2String(params.get("analysisDate"));
List<Map<String, Object>> scheduleResult = (List<Map<String, Object>>)params.get("scheduleResult");
String sql = "select b.ccr,a.cclx,a.ccsd,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where b.ccr=? and b.ksrq>=? and b.ksrq<=? and (b.cxcc=0 or b.cxcc is null)";
List<Map<String,Object>> evectionList = DbTools.getSqlToList(sql,userId, DateUtil.beforeDay(analysisDate,1),DateUtil.AfterDay(analysisDate,1));
Map<String,Map<String,Object>> evectionItems = Maps.newHashMap();
String firstKssj = Utils.getkssjTime(scheduleResult.get(0),analysisDate);
String lastjssj = Utils.getjssjTime(scheduleResult.get(scheduleResult.size()-1),analysisDate);
Set<String> cclxSet = Sets.newHashSet();
List<Map<String,Object>> haveEvectionList = evectionList.stream().filter(e->{
String kssj = e.get("ksrq")+" "+e.get("kssj");
String jssj = e.get("jsrq")+" "+e.get("jssj");
if (e.get("ksrq").equals(analysisDate) && !"1".equals(e.get("ccsd"))){
cclxSet.add(e.get("cclx").toString());
return true;
}else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(lastjssj)) <0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(firstKssj)) >0 && "1".equals(e.get("ccsd"))){
cclxSet.add(e.get("cclx").toString());
return true;
}else {
return false;
}
}).collect(Collectors.toList());
log.info("haveEvectionList : [{}]",haveEvectionList);
sql = "select id,hsl,hsdw,lgsbxydk,tqlghlfzs,fgsbxydk,thfghlfzs,tybcndbjlhbjs,zdycbcndfgzsd,zdycrqqjndxxb,zysd from uf_jcl_kq_kqxm where id in ("+String.join(",",cclxSet)+")";
Map<String,List<Map<String,Object>>> collect = DbTools.getSqlToList(sql).stream().collect(Collectors.groupingBy(e->e.get("id").toString()));
List<Map<String,Object>> resultList = Lists.newArrayList();
List<Map<String,Object>> evectionSchedule = Lists.newArrayList();
for (Map<String,Object> evectionData : haveEvectionList){
Map<String,Object> evectionItem = collect.get(evectionData.get("cclx")).get(0);
//全天出差
if (CheckBoxEnum.CHECKED.getKey().equals(evectionData.get("qtcc"))){
Map<String,Object> map = Maps.newHashMap();
map.put("item",evectionData.get("cclx"));
map.put("itemduration",scheduleResult.get(0).get("edsc"));
resultList.add(map);
resultMap.put("alldayEvection",resultList);
}
evectionItems.put(evectionData.get("jqlx").toString(),evectionItem);
if (!"".equals(Util.null2String(evectionData.get("kssj"))) && !"".equals(Util.null2String(evectionData.get("jssj")))){
Map<String,Object> evectioneMap = new HashMap(){{
put("bcxx", scheduleResult.get(0).get("bcxx"));
put("bcsdxx", scheduleResult.get(0).get("bcsdxx"));
put("edsc", scheduleResult.get(0).get("edsc"));
put("bdlx", ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey());
put("dtkssj",evectionData.get("kssj"));
put("dtjssj",evectionData.get("jssj"));
put("ksdk",evectionItem.get("fgsbxydk"));
put("jsdk",evectionItem.get("lgsbxydk"));
put("tqdkfzs","60");
put("thdkfzs","60");
put("tqlghlfzs",evectionItem.get("tqlghlfzs"));
put("thfghlfzs",evectionItem.get("thfghlfzs"));
}};
String ksrq = Util.null2String(evectionData.get("ksrq"));
if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) == 0){
evectioneMap.put("gsrq",ClassBelongToEnum.NOWDAY.getKey());
}else if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) < 0){
evectioneMap.put("gsrq",ClassBelongToEnum.YESTERDAY.getKey());
}else if (DateUtil.getTime(ksrq).compareTo(DateUtil.getTime(analysisDate)) > 0){
evectioneMap.put("gsrq",ClassBelongToEnum.NEXTDAY.getKey());
}
evectionSchedule.add(evectionData);
}
}
resultMap.put("evectionList",haveEvectionList);
resultMap.put("evectionItems",evectionItems);
resultMap.put("evectionSchedule",evectionSchedule);
return resultMap;
}
}

@ -28,19 +28,21 @@ public class AttendanceAnalysisJob extends BaseCronJob {
String queryUserSql = "select id from hrmresource where (status = 0 or status = 1 or status = 2 or status = 3) and status != 10";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
String beforeThreeDayDate = DateUtil.getCurrentDateMinusDay(3);
String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1);
String beforeFourDayDate = DateUtil.getCurrentDateMinusDay(4);
String nowDate = DateUtil.getCurrentDate();
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,beforeThreeDayDate,beforeOneDayDate);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,beforeFourDayDate,nowDate);
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
for (Map<String,Object> userMap:userList){
String userId = Util.null2String(userMap.get("id"));
//日期对应的打卡数据
Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap();
/**获得人员考勤项目*/
Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate",beforeThreeDayDate);
paramMap.put("endDate",beforeOneDayDate);
paramMap.put("startDate",beforeFourDayDate);
paramMap.put("endDate",nowDate);
paramMap.put("resourceId",userId);
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap);
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data");
@ -50,7 +52,7 @@ public class AttendanceAnalysisJob extends BaseCronJob {
Map<String,Object> workHourdataMap = basicsetService.getWorkHoursItemByPerson(paramMap);
List<Map<String,Object>> workHourItems = (List<Map<String,Object>>)workHourdataMap.get("data");
attendanceAnalysisService.attendanceAnalysis(userId,collect.get(userMap.get("id")),attendanceItems,workHourItems);
attendanceAnalysisService.attendanceAnalysis(userId,collect.get(userMap.get("id")),attendanceItems,workHourItems,clockInTimeMap);
}
log.info("********AttendanceAnalysisJob end********");
}

@ -22,4 +22,11 @@ public interface AskForLeaveService {
* @return
*/
boolean askForLeaveByHalfDay(Map<String,Object> param);
/**
*
* @param param
* @return
*/
Map<String,Object> getAskForLeave(Map<String,Object> param);
}

@ -22,4 +22,10 @@ public interface EvectionService {
* @return
*/
List<Map<String,Object>> evectionByHalfDay(Map<String,Object> param);
/**
*
* @param param
* @return
*/
Map<String,Object> getEvection(Map<String,Object> param);
}

@ -1,5 +1,6 @@
package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.GetAskForLeaveCmd;
import com.engine.attendance.attendanceanalysis.service.AskForLeaveService;
import com.engine.attendance.enums.AccountingUnitEnum;
import com.engine.attendance.enums.AttendanceItemTypeEnum;
@ -118,5 +119,10 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
map.put("offsetAskForLeaveAnomaly",offsetAskForLeaveAnomaly);
return map;
}
@Override
public Map<String, Object> getAskForLeave(Map<String, Object> param) {
return commandExecutor.execute(new GetAskForLeaveCmd(param));
}
}

@ -1,5 +1,7 @@
package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.GetAskForLeaveCmd;
import com.engine.attendance.attendanceanalysis.cmd.GetEvectionCmd;
import com.engine.attendance.attendanceanalysis.service.EvectionService;
import com.engine.attendance.enums.AccountingUnitEnum;
import com.engine.attendance.enums.AttendanceItemTypeEnum;
@ -112,4 +114,9 @@ public class EvectionServiceImpl extends Service implements EvectionService {
public List<Map<String,Object>> evectionByHalfDay(Map<String, Object> param) {
return null;
}
@Override
public Map<String, Object> getEvection(Map<String, Object> param) {
return commandExecutor.execute(new GetEvectionCmd(param));
}
}

@ -1,9 +1,6 @@
package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.ComputeAttendanceDurationCmd;
import com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd;
import com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd;
import com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd;
import com.engine.attendance.attendanceanalysis.cmd.*;
import com.engine.attendance.attendanceanalysis.service.UtilService;
import com.engine.attendance.component.persongroup.service.SchedulingResultsService;
import com.engine.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl;
@ -50,7 +47,7 @@ public class UtilServiceImpl extends Service implements UtilService {
schedulMap.put("schedulingMapBydate",schedulingMapBydate);
Map<String,List<Map<String,Object>>> resultMap = Maps.newHashMap();
String sql = "select a.id bcxx,a.edsc,a.zgzsc,a.bcsdxx,a.sfdx,a.sfkt,b.bdlx,a.btgz,a.fgsjd,a.zddxfz,a.dxhs,b.kssj dtkssj,b.jssj dtjssj,b.ksdk,b.jsdk,b.tqdkfzs,b.thdkfzs,b.edxss,b.sfdx dtsfdx,b.zddxfz dtzddxfz,b.dxhs dtdxhs from uf_jcl_kq_bcxx a left join uf_jcl_kq_bcxx_dt1 b on a.id=b.mainid where a.id in (";
String sql = "select a.id bcxx,a.edsc,a.zgzsc,a.bcsdxx,a.sfdx,a.sfkt,b.bdlx,a.btgz,a.fgsjd,a.zddxfz,a.dxhs,b.kssj dtkssj,b.jssj dtjssj,b.ksdk,b.jsdk,b.tqdkfzs,b.thdkfzs,b.edxss,b.sfdx dtsfdx,b.zddxfz dtzddxfz,b.dxhs dtdxhs,b.gsrq from uf_jcl_kq_bcxx a left join uf_jcl_kq_bcxx_dt1 b on a.id=b.mainid where a.id in (";
String bcxxIds = "";
for (Map.Entry<String,List<Map<String,Object>>> entry :schedulingMap.entrySet()){
if (!entry.getKey().equals("")){
@ -60,7 +57,7 @@ public class UtilServiceImpl extends Service implements UtilService {
List<Map<String,Object>> dataList = Lists.newArrayList();
if (!"".equals(bcxxIds)){
bcxxIds = bcxxIds.substring(0,bcxxIds.length()-1);
sql = sql +bcxxIds+") order by b.kssj";
sql = sql +bcxxIds+") order by b.gsrq,b.kssj";
dataList = DbTools.getSqlToList(sql);
Map<String,List<Map<String,Object>>> dataMap = dataList.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("bcxx"))));
@ -143,6 +140,7 @@ public class UtilServiceImpl extends Service implements UtilService {
map.put("rqlx",dateMap.get(e.getKey()));
map.put("edxss",overtimePlan.get("jbsc"));
map.put("jblx",attendanceItems);
map.put("gsrq",ClassBelongToEnum.NOWDAY.getKey());
if (attendanceItems.size() >0){
map.put("ksdk",attendanceItems.get(0).get("ksjbbxydk"));
map.put("jsdk",attendanceItems.get(0).get("jsjbbxydk"));
@ -206,7 +204,7 @@ public class UtilServiceImpl extends Service implements UtilService {
*/
@Override
public List<Map<String, Object>> getClockInTime(Map<String, Object> params) {
Map<String,Object> result = commandExecutor.execute(new GetClockInTimeItemCmd(params));
Map<String,Object> result = commandExecutor.execute(new GetClockInTimeListCmd(params));
List<Map<String, Object>> resultList = (List<Map<String, Object>>)result.get("resultList");
return resultList;
}
@ -238,12 +236,12 @@ public class UtilServiceImpl extends Service implements UtilService {
//empty:漏卡equal:打卡时间和班次时间相等before打卡时间在班次时间之前after打卡时间在班次时间之后
String timeType = point.split("\\|")[2];
String time = clcokInTime.get("signdate")+" "+clcokInTime.get("signtime");
if (ClockPointEnum.START.getKey().equals(pointType)){
//开始时间打卡
String key = "j"+inIndex;
if (!ClockPointEnum.EMPTY.getKey().equals(timeType) && clcokInTime != null){
String value = "'"+clcokInTime.get("signtime")+"'";
String value = "'"+time+"'";
resultMap.put(key,value);
}else {
resultMap.put(key,"NULL");
@ -253,7 +251,7 @@ public class UtilServiceImpl extends Service implements UtilService {
//结束时间打卡
String key = "c"+outIndex;
if (!ClockPointEnum.EMPTY.getKey().equals(timeType) && clcokInTime != null){
String value = "'"+clcokInTime.get("signtime")+"'";
String value = "'"+time+"'";
resultMap.put(key,value);
}else {
resultMap.put(key,"NULL");

@ -17,7 +17,6 @@ import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -37,15 +36,17 @@ public class AttendanceanalysisAction {
@Produces({"text/plain"})
public String getSchedulingData(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try {
// Map<String,Object> paramMap = ParamUtil.request2Map(request);
Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate","2024-04-10");
paramMap.put("endDate","2024-04-10");
paramMap.put("userIds","81");
Map<String,Object> paramMap = ParamUtil.request2Map(request);
// Map<String,Object> paramMap = Maps.newHashMap();
// paramMap.put("startDate","2024-04-16");
// paramMap.put("endDate","2024-04-16");
// paramMap.put("userIds","68");
String startDate = Util.null2String(paramMap.get("startDate"));
String startBeforeDate = DateUtil.beforeDay(startDate,1);
String startBeforeDate = DateUtil.beforeDay(startDate,2);
String endDate = Util.null2String(paramMap.get("endDate"));
String endAfterDate = DateUtil.AfterDay(endDate,1);
String endAfterDate = DateUtil.AfterDay(endDate,2);
String userIds = Util.null2String(paramMap.get("userIds"));
int betweenDays = DateUtil.getBetWeenDays(startDate,endDate);
if ("".equals(userIds)){
@ -57,6 +58,8 @@ public class AttendanceanalysisAction {
for (Map<String,Object> userMap :userList){
String userId = userMap.get("id").toString();
//出勤结果,进出时间
Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap();
/**获得人员考勤项目*/
Map<String,Object> param = Maps.newHashMap();
param.put("startDate",startBeforeDate);
@ -86,7 +89,7 @@ public class AttendanceanalysisAction {
for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap);
}
}
}else {
@ -97,6 +100,8 @@ public class AttendanceanalysisAction {
for (String userId : userIds.split(",")){
/**获得人员考勤项目*/
Map<String,Object> param = Maps.newHashMap();
//出勤结果,进出时间
Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap();
param.put("startDate",startBeforeDate);
param.put("endDate",endAfterDate);
param.put("resourceId",userId);
@ -125,7 +130,7 @@ public class AttendanceanalysisAction {
for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap);
}
}
}
@ -152,7 +157,7 @@ public class AttendanceanalysisAction {
String userIds = Util.null2String(paramMap.get("userIds"));
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<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startDate,endDate);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,DateUtil.beforeDay(startDate,1),DateUtil.AfterDay(endDate,1));
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
//考勤项目

@ -41,13 +41,14 @@ public class AttendanceAnalysisWrapper extends Service {
* @param dataList
* @param attendanceItems
*/
public void attendanceAnalysis(String userId, List<Map<String,Object>> dataList,List<Map<String,Object>> attendanceItems,List<Map<String,Object>> workHourItems){
public void attendanceAnalysis(String userId, List<Map<String,Object>> dataList,List<Map<String,Object>> attendanceItems,List<Map<String,Object>> workHourItems,Map<String,Map<String,Object>> clockInTimeMap){
log.info("***********analysis userId:{} start***********",userId);
log.info("clockInTimeDate : [{}]",dataList);
String beforeThreeDayDate = DateUtil.getCurrentDateMinusDay(3);
String beforeFourDayDate = DateUtil.getCurrentDateMinusDay(4);
String beforeTwoDayDate = DateUtil.getCurrentDateMinusDay(2);
String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1);
String nowDate = DateUtil.getCurrentDate();
/** 打卡数据 */
Map<String, List<Map<String,Object>>> collect = Maps.newHashMap();
if (dataList != null && dataList.size() >0){
@ -56,8 +57,8 @@ public class AttendanceAnalysisWrapper extends Service {
/** 获取人员班次*/
Map<String,Object> classesParamMap = Maps.newHashMap();
classesParamMap.put("tableName","uf_pbjg");
classesParamMap.put("startDate",beforeThreeDayDate);
classesParamMap.put("endDate",beforeOneDayDate);
classesParamMap.put("startDate",beforeFourDayDate);
classesParamMap.put("endDate",nowDate);
classesParamMap.put("pblx","0");
classesParamMap.put("pbdx",userId);
classesParamMap.put("current","1");
@ -71,22 +72,24 @@ public class AttendanceAnalysisWrapper extends Service {
/**计算获取前一天和第二天打卡数据*/
Map<String,Object> getClockTimeParam = Maps.newHashMap();
getClockTimeParam.put("date",beforeOneDayDate);
getClockTimeParam.put("clockInTimeCollect",collect);
getClockTimeParam.put("clockInTimeList",dataList);
getClockTimeParam.put("schedulingResultCollect",schedulingResultsMap);
getClockTimeParam.put("clockInTimeMap",clockInTimeMap);
getClockTimeParam.put("userId",userId);
//前一天打卡数据
log.info("getClockTimeParam : [{}]",getClockTimeParam);
List<Map<String, Object>> beforeOneDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
log.info("beforeOneDayClockInTimeList : [{}]",beforeOneDayClockInTimeList);
//分析前一天考勤
analysis(userId,beforeOneDayDate,beforeOneDayClockInTimeList,schedulingResultsMap.get(beforeOneDayDate),attendanceItems,schedulingMapBydate.get(beforeOneDayDate),workHourItems,dataList);
Map<String,Object> recordDataTime1 = analysis(userId,beforeOneDayDate,beforeOneDayClockInTimeList,schedulingResultsMap.get(beforeOneDayDate),attendanceItems,schedulingMapBydate.get(beforeOneDayDate),workHourItems,dataList);
clockInTimeMap.put(beforeOneDayDate,recordDataTime1);
getClockTimeParam.put("date",beforeTwoDayDate);
//前第二天打卡数据
List<Map<String, Object>> beforeTwoDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
log.info("beforeTwoDayClockInTimeList : [{}]",beforeTwoDayClockInTimeList);
//分析前第二天考勤
analysis(userId,beforeTwoDayDate,beforeTwoDayClockInTimeList,schedulingResultsMap.get(beforeTwoDayDate),attendanceItems,schedulingMapBydate.get(beforeTwoDayDate),workHourItems,dataList);
Map<String,Object> recordDataTime2 = analysis(userId,beforeTwoDayDate,beforeTwoDayClockInTimeList,schedulingResultsMap.get(beforeTwoDayDate),attendanceItems,schedulingMapBydate.get(beforeTwoDayDate),workHourItems,dataList);
clockInTimeMap.put(beforeTwoDayDate,recordDataTime2);
}
@ -97,7 +100,7 @@ public class AttendanceAnalysisWrapper extends Service {
* @param dataList 23
* @param attendanceItems
*/
public void attendanceAnalysisForApi(String userId,String analysisDate, List<Map<String,Object>> dataList,List<Map<String,Object>> attendanceItems,Map<String,Object> schedulMap,List<Map<String,Object>> workHourItems){
public void attendanceAnalysisForApi(String userId,String analysisDate, List<Map<String,Object>> dataList,List<Map<String,Object>> attendanceItems,Map<String,Object> schedulMap,List<Map<String,Object>> workHourItems,Map<String,Map<String,Object>> clockInTimeMap){
log.info("***********analysis userId:{} start***********",userId);
log.info("clockInTimeDate : [{}]",dataList);
Map<String, List<Map<String,Object>>> collect = Maps.newHashMap();
@ -109,13 +112,15 @@ public class AttendanceAnalysisWrapper extends Service {
/**计算获取前一天和第二天打卡数据*/
Map<String,Object> getClockTimeParam = Maps.newHashMap();
getClockTimeParam.put("date",analysisDate);
getClockTimeParam.put("clockInTimeCollect",collect);
getClockTimeParam.put("clockInTimeList",dataList);
getClockTimeParam.put("schedulingResultCollect",schedulingResultsMap);
getClockTimeParam.put("clockInTimeMap",clockInTimeMap);
getClockTimeParam.put("userId",userId);
//前一天打卡数据
log.info("getClockTimeParam : [{}]",getClockTimeParam);
List<Map<String, Object>> clockInTimeList = utilService.getClockInTime(getClockTimeParam);
analysis(userId,analysisDate,clockInTimeList,schedulingResultsMap.get(analysisDate),attendanceItems,schedulingMapBydate.get(analysisDate),workHourItems,dataList);
Map<String,Object> recordDataTime = analysis(userId,analysisDate,clockInTimeList,schedulingResultsMap.get(analysisDate),attendanceItems,schedulingMapBydate.get(analysisDate),workHourItems,dataList);
clockInTimeMap.put(analysisDate,recordDataTime);
}
/**
*
@ -125,7 +130,7 @@ public class AttendanceAnalysisWrapper extends Service {
* @param scheduleResult
* @param attendanceItems
*/
public void analysis(String userId,String analysisDate,List<Map<String, Object>> clockInTimeList,List<Map<String, Object>> scheduleResult,List<Map<String,Object>> attendanceItems,List<Map<String, Object>> scheduleList,List<Map<String,Object>> workHourItems,List<Map<String,Object>> clockList){
public Map<String,Object> analysis(String userId,String analysisDate,List<Map<String, Object>> clockInTimeList,List<Map<String, Object>> scheduleResult,List<Map<String,Object>> attendanceItems,List<Map<String, Object>> scheduleList,List<Map<String,Object>> workHourItems,List<Map<String,Object>> clockList){
Map<String,Object> recordParam = Maps.newHashMap();
Map<String,String> formModeIdMap = Utils.getFormmodeIdMap();
recordParam.put("userId",userId);
@ -141,6 +146,7 @@ public class AttendanceAnalysisWrapper extends Service {
workingHourparam.put("analysisDate",analysisDate);
workingHourparam.put("userId",userId);
workingHourparam.put("attendanceItems",attendanceItems);
workingHourparam.put("scheduleResult",scheduleResult);
/**
*
@ -152,7 +158,7 @@ public class AttendanceAnalysisWrapper extends Service {
String ifPriority = Util.null2String(workHourItems.get(0).get("hlpbyxsyzhgs"));
if (CheckBoxEnum.CHECKED.getKey().equals(ifPriority)){
comprehensiveWorkingHourService.excuteByWorkHour(workingHourparam);
return;
return null;
}
}
@ -168,115 +174,33 @@ public class AttendanceAnalysisWrapper extends Service {
params.put("attendanceItems",attendanceItems);
params.put("allowanceMap",allowanceMap);
updateAttendanceResultWrapper.recordNoClass(params);
return;
return null;
}
recordParam.put("rqlx",scheduleResult.get(0).get("rqlx"));
List<Map<String, Object>> needClockInSchedule = scheduleResult.stream().filter(e -> "1".equals(e.get("ksdk")) || "1".equals(e.get("jsdk"))).collect(Collectors.toList());
//请假记录
String sql = "select a.qjry,a.jqlx,a.cxjqj,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where a.qjry=? and b.ksrq=? and (b.cxqj=0 or b.cxqj is null)";
List<Map<String,Object>> askForLeaveList = DbTools.getSqlToList(sql,userId,analysisDate);
log.info("askForLeaveList :{}",askForLeaveList);
//考勤项目
Map<String,Map<String,Object>> askForLeaveItems = Maps.newHashMap();
//出差记录
sql = "select b.ccr,a.cclx,a.ccsd,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where b.ccr=? and b.ksrq=? and (b.cxcc=0 or b.cxcc is null)";
List<Map<String,Object>> evectionList = DbTools.getSqlToList(sql,userId,analysisDate);
log.info("evectionList :{}",evectionList);
//出差项目
Map<String,Map<String,Object>> evectionItems = Maps.newHashMap();
sql = "select hsl,hsdw,lgsbxydk,tqlghlfzs,fgsbxydk,thfghlfzs,tybcndbjlhbjs,zdycbcndfgzsd,zdycrqqjndxxb,zysd from uf_jcl_kq_kqxm where id=?";
List<Map<String,Object>> askForLeaveAndEvctionSchedule = Lists.newArrayList();
for (Map<String,Object> askForLeaveData : askForLeaveList){
Map<String,Object> askForLeaveItem = DbTools.getSqlToMap(sql,askForLeaveData.get("jqlx"));
//请假记录
Map<String,Object> askForLeaveDataMap = updateAttendanceResultWrapper.getAskForLeave(workingHourparam);
if (askForLeaveDataMap.get("alldayVaction") != null){
//全天请假
if (CheckBoxEnum.CHECKED.getKey().equals(askForLeaveData.get("qtj"))){
List<Map<String,Object>> resultList = Lists.newArrayList();
Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("item",askForLeaveData.get("jqlx"));
resultMap.put("itemduration",scheduleResult.get(0).get("edsc"));
resultList.add(resultMap);
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
recordParam.put("recordData",resultList);
utilService.recordItem(recordParam);
return;
}
askForLeaveItems.put(askForLeaveData.get("jqlx").toString(),askForLeaveItem);
List<Map<String, Object>> finalScheduleResult = scheduleResult;
Map<String,Object> askForLeaveMap = new HashMap(){{
put("bcxx", finalScheduleResult.get(0).get("bcxx"));
put("bcsdxx", finalScheduleResult.get(0).get("bcsdxx"));
put("edsc", finalScheduleResult.get(0).get("edsc"));
put("bdlx", ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey());
put("dtkssj",askForLeaveData.get("kssj"));
put("dtjssj",askForLeaveData.get("jssj"));
put("ksdk",askForLeaveItem.get("fgsbxydk"));
put("jsdk",askForLeaveItem.get("lgsbxydk"));
put("tqdkfzs","60");
put("thdkfzs","60");
put("tqlghlfzs",askForLeaveItem.get("tqlghlfzs"));
put("thfghlfzs",askForLeaveItem.get("thfghlfzs"));
}};
if (!"".equals(Util.null2String(askForLeaveData.get("kssj"))) && !"".equals(Util.null2String(askForLeaveData.get("jssj")))){
//scheduleResult.add(askForLeaveMap);
askForLeaveAndEvctionSchedule.add(askForLeaveMap);
}
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
recordParam.put("recordData",askForLeaveDataMap.get("alldayVaction"));
utilService.recordItem(recordParam);
return null;
}
for (Map<String,Object> evectionData :evectionList){
askForLeaveAndEvctionSchedule.addAll((List<Map<String,Object>>)askForLeaveDataMap.get("askForLeaveList"));
//出差记录
Map<String,Object> evectionDataMap = updateAttendanceResultWrapper.getEvection(workingHourparam);
if (evectionDataMap.get("alldayEvection") != null){
//全天出差
Map<String,Object> evectionItem = DbTools.getSqlToMap(sql,evectionData.get("cclx"));
if (CheckBoxEnum.CHECKED.getKey().equals(evectionData.get("qtcc"))) {
List<Map<String,Object>> resultList = Lists.newArrayList();
Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("item", evectionData.get("cclx"));
resultMap.put("itemduration", scheduleResult.get(0).get("edsc"));
resultList.add(resultMap);
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
recordParam.put("recordData",resultList);
utilService.recordItem(recordParam);
return;
}
evectionItems.put(evectionData.get("cclx").toString(),evectionItem);
List<Map<String, Object>> finalScheduleResult1 = scheduleResult;
Map<String,Object> evectionMap = new HashMap(){{
put("bcxx", finalScheduleResult1.get(0).get("bcxx"));
put("bcsdxx", finalScheduleResult1.get(0).get("bcsdxx"));
put("edsc", finalScheduleResult1.get(0).get("edsc"));
put("bdlx", ClassSegmentTypeEnum.EVECTION.getKey());
put("dtkssj",evectionData.get("kssj"));
put("dtjssj",evectionData.get("jssj"));
put("ksdk",evectionItem.get("fgsbxydk"));
put("jsdk",evectionItem.get("lgsbxydk"));
put("tqdkfzs","60");
put("thdkfzs","60");
put("tqlghlfzs",evectionItem.get("tqlghlfzs"));
put("thfghlfzs",evectionItem.get("thfghlfzs"));
}};
if (!"".equals(Util.null2String(evectionData.get("kssj"))) && !"".equals(Util.null2String(evectionData.get("jssj")))){
//scheduleResult.add(evectionMap);
askForLeaveAndEvctionSchedule.add(evectionMap);
}
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
recordParam.put("recordData",evectionDataMap.get("alldayEvection"));
utilService.recordItem(recordParam);
return null;
}
// if(clockInTimeList == null || clockInTimeList.size() == 0){
// if (needClockInSchedule.size() > 0){
// //全天漏打卡
// recordParam.put("cqzt",1);
// recordParam.put("needClockInSchedule",needClockInSchedule);
// List<Map<String,Object>> iforgetClockIn = forgetClockInService.forgetClockInAllDays(recordParam);
// if (iforgetClockIn.size()>0){
// recordParam.put("recordData",iforgetClockIn);
// utilService.recordItem(recordParam);
// }
// return;
// }
// }
scheduleResult = scheduleResult.stream().sorted(Comparator.comparing(e->DateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
askForLeaveAndEvctionSchedule.addAll((List<Map<String,Object>>)askForLeaveDataMap.get("evectionList"));
if (askForLeaveAndEvctionSchedule.size() > 0){
askForLeaveAndEvctionSchedule = mergeAskForLeaveAndEvctionSchedule(askForLeaveAndEvctionSchedule,analysisDate);
@ -301,21 +225,16 @@ public class AttendanceAnalysisWrapper extends Service {
log.info("recordAbnormalParam clcokInTimeList:{},attendanceItems size :{},scheduleResult :{},analysisDate:[{}],userId:[{}],rqlx:[{}],modeId:[{}]",clcokInTimeData,
attendanceItems.size(),scheduleResult,analysisDate,userId,scheduleResult.get(0).get("rqlx"));
/**
*
*/
//
// List<Map<String,Object>> normalList= updateAttendanceResultWrapper.recordNormal(recordAbnormalParam);
/**
* ,退
*
**/
recordAbnormalParam.put("askForLeaveList",askForLeaveList);
recordAbnormalParam.put("askForLeaveItems",askForLeaveItems);
recordAbnormalParam.put("evectionList",evectionList);
recordAbnormalParam.put("evectionItems",evectionItems);
recordAbnormalParam.put("askForLeaveList",askForLeaveDataMap.get("askForLeaveList"));
recordAbnormalParam.put("askForLeaveItems",askForLeaveDataMap.get("askForLeaveItems"));
recordAbnormalParam.put("evectionList",evectionDataMap.get("evectionList"));
recordAbnormalParam.put("evectionItems",evectionDataMap.get("evectionItems"));
List<Map<String,Object>> abnormalClockInList = updateAttendanceResultWrapper.recordAbnormalClockIn(recordAbnormalParam);
@ -330,10 +249,10 @@ public class AttendanceAnalysisWrapper extends Service {
//次日免班
recordParam.put("recordData",Lists.newArrayList());
recordParam.put("recordDataTime",Maps.newHashMap());
recordParam.put("attendanceDuration",0);
recordParam.put("attendanceDuration",scheduleResult.get(0).get("edsc").toString());
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
utilService.recordItem(recordParam);
return;
return null;
}
if (!"".equals(Util.null2String(allowanceMap.get("delayMinute")))){
recordAbnormalParam.put("delayMinute",allowanceMap.get("delayMinute"));
@ -390,6 +309,7 @@ public class AttendanceAnalysisWrapper extends Service {
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
}
utilService.recordItem(recordParam);
return (Map<String,Object>)recordParam.get("recordDataTime");
}

@ -465,4 +465,23 @@ public class UpdateAttendanceResultWrapper extends Service {
public Map<String,Object> removeAbnormal(Map<String,Object> params){
return allowanceService.removeAbnormal(params);
}
/**
*
* @param params
* @return
*/
public Map<String,Object> getAskForLeave(Map<String,Object> params){
return askForLeaveService.getAskForLeave(params);
}
/**
*
* @param params
* @return
*/
public Map<String,Object> getEvection(Map<String,Object> params){
return evectionService.getEvection(params);
}
}

@ -0,0 +1,31 @@
package com.engine.attendance.enums;
import com.finance.toolkit.BaseEnum;
/**
*
*/
public enum ClassBelongToEnum implements BaseEnum {
NOWDAY("1","当日"),
YESTERDAY("0","昨日"),
NEXTDAY("2","次日");
private String key;
private String value;
ClassBelongToEnum(String key, String value){
this.key=key;
this.value=value;
}
@Override
public String getKey() {
return this.key;
}
@Override
public String getValue() {
return this.value;
}
}

@ -34,41 +34,17 @@ public class GetAskForLeaveRecordListCmd extends AbstractCommonCommand<Map<Strin
String businessTripsType = Util.null2String(params.get("businessTripsType"));
String startDate = Util.null2String(params.get("startDate"));
String endDate = Util.null2String(params.get("endDate"));
log.info("targetUserId : {}, businessTripsType : {}, startDate : {}, endDate : {}",targetUserId, businessTripsType, startDate, endDate);
String sql = "select * from uf_jcl_kq_qjjl where qjry="+targetUserId;
if (!businessTripsType.equals("")) {
sql += " and jqlx = " + businessTripsType;
}
if (!startDate.equals("")) {
sql += " and ksrq >= '" + startDate+"'";
}
if (!endDate.equals("")) {
sql += " and jsrq <= '" + endDate+"'";
}
log.info(sql);
List<String> maidList = new ArrayList<>();
if (!targetUserId.equals("")) {
List<Map<String,Object>> datas = DbTools.getSqlToList(sql);
if (datas.size() > 0) {
datas.forEach(f -> {
maidList.add(f.get("id").toString());
});
}
}
log.info("maidList : [{}]",maidList);
//查询子表数据
if (maidList.size() > 0) {
String detailSql = "select a.id,a.cxqj,a.ksrq,a.kssj,a.jsrq,a.jssj,a.qjsc,a.qtj,a.btj,a.cxsm from uf_jcl_kq_qjjl_dt1 a where (a.cxqj is null or a.cxqj<>1) mainid in ("+String.join(",",maidList)+")";
List<Map<String,Object>> detailList = DbTools.getSqlToList(detailSql);
if (detailList.size() > 0) {
retmap.put("result", detailList);
} else {
retmap.put("result", null);
}
log.info("detailList : [{}]",detailList);
log.info("targetUserId : {}, businessTripsType : {}, startDate : {}, endDate : {}", targetUserId, businessTripsType, startDate, endDate);
String detailSql = "select a.id,a.cxqj,a.ksrq,a.kssj,a.jsrq,a.jssj,a.qjsc,a.qtj,a.btj,a.cxsm from uf_jcl_kq_qjjl_dt1 a left join uf_jcl_kq_qjjl b on a.mainid=b.id where (a.cxqj is null or a.cxqj<>1) and b.qjry =? and a.ksrq >= ? and a.ksrq <= ? and b.jqlx=?";
List<Map<String, Object>> detailList = DbTools.getSqlToList(detailSql,targetUserId,startDate,endDate,businessTripsType);
if (detailList.size() > 0) {
retmap.put("result", detailList);
} else {
retmap.put("result", null);
}
log.info("detailList : [{}]", detailList);
return retmap;
}
}

@ -21,48 +21,24 @@ public class BusinessTripsApplyServiceImpl extends Service implements BusinessTr
@Override
public Map<String, Object> getBusinessTripsApplyList(Map<String, Object> params) {
// return commandExecutor.execute(new GetBusinessTripsApplyListCmd(params, user));
Map<String, Object> retmap = new HashMap<String, Object>();
//获取主表id列表
String targetUserId = Util.null2String(params.get("targetUserId"));
String businessTripsType = Util.null2String(params.get("businessTripsType"));
String startDate = Util.null2String(params.get("startDate"));
String endDate = Util.null2String(params.get("endDate"));
log.info("targetUserId : {}, businessTripsType : {}, startDate : {}, endDate : {}",targetUserId, businessTripsType, startDate, endDate);
String sql = "select * from uf_jcl_kq_ccjl where ccr="+targetUserId;
if (!businessTripsType.equals("")) {
sql += " and cclx = " + businessTripsType;
}
if (!startDate.equals("")) {
sql += " and ksrq >= '" + startDate+"'";
}
if (!endDate.equals("")) {
sql += " and jsrq <= '" + endDate+"'";
}
log.info(sql);
List<String> maidList = new ArrayList<>();
if (!targetUserId.equals("")) {
List<Map<String,Object>> datas = DbTools.getSqlToList(sql);
if (datas.size() > 0) {
datas.forEach(f -> {
maidList.add(f.get("id").toString());
});
}
}
log.info("maidList : [{}]",maidList);
log.info("targetUserId : {}, businessTripsType : {}, startDate : {}, endDate : {}", targetUserId, businessTripsType, startDate, endDate);
//查询子表数据
if (maidList.size() > 0) {
String detailSql = "select a.id,a.cxcc,a.ksrq,a.kssj,a.jsrq,a.jssj,a.ccsc,a.qtcc,a.btcc,a.cxsm from uf_jcl_kq_ccjl_dt1 a where mainid in ("+String.join(",",maidList)+")";
List<Map<String,Object>> detailList = DbTools.getSqlToList(detailSql);
if (detailList.size() > 0) {
retmap.put("result", detailList);
} else {
retmap.put("result", null);
}
log.info("detailList : [{}]",detailList);
String detailSql = "select a.id,a.cxcc,a.ksrq,a.kssj,a.jsrq,a.jssj,a.ccsc,a.qtcc,a.btcc,a.cxsm from uf_jcl_kq_ccjl_dt1 a left join uf_jcl_kq_ccjl b on a.mainid=b.id where (a.cxcc is null or a.cxcc<>1) and a.ccr =? and a.ksrq >= ? and a.ksrq <= ? and b.cclx=?";
List<Map<String, Object>> detailList = DbTools.getSqlToList(detailSql,targetUserId,startDate,endDate,businessTripsType);
if (detailList.size() > 0) {
retmap.put("result", detailList);
} else {
retmap.put("result", null);
}
log.info("detailList : [{}]", detailList);
return retmap;
}
}

@ -424,4 +424,6 @@ public class CommonUtil {
}
return empIdList;
}
}

@ -646,4 +646,46 @@ public class Utils<T> {
return time;
}
public static String getkssjEarliestTime(Map<String,Object> schedulingMap,String date){
String tqdkfzs = Util.null2String(schedulingMap.get("tqdkfzs"));
if ("".equals(tqdkfzs)){
tqdkfzs = "60";
}
return DateUtil.beforeMinutes(getkssjTime(schedulingMap,date),Integer.valueOf(tqdkfzs));
}
public static String getkssjTime(Map<String,Object> schedulingMap,String date){
String gsrq = Util.null2String(schedulingMap.get("gsrq"));
String kssj = Util.null2String(schedulingMap.get("dtkssj"));
if (gsrq.equals(ClassBelongToEnum.YESTERDAY.getKey())){
date = DateUtil.beforeDay(date,1);
}else if (gsrq.equals(ClassBelongToEnum.NEXTDAY.getKey())){
date = DateUtil.AfterDay(date,1);
}
kssj = date+" "+kssj;
return kssj;
}
public static String getjssjLastestTime(Map<String,Object> schedulingMap,String date){
String thdkfzs = Util.null2String(schedulingMap.get("thdkfzs"));
if ("".equals(thdkfzs)){
thdkfzs = "60";
}
return DateUtil.AfterMinutes(getjssjTime(schedulingMap,date),Integer.valueOf(thdkfzs));
}
public static String getjssjTime(Map<String,Object> schedulingMap,String date){
String gsrq = Util.null2String(schedulingMap.get("gsrq"));
String jssj = Util.null2String(schedulingMap.get("dtjssj"));
if (gsrq.equals(ClassBelongToEnum.YESTERDAY.getKey())){
date = DateUtil.beforeDay(date,1);
}else if (gsrq.equals(ClassBelongToEnum.NEXTDAY.getKey())){
date = DateUtil.AfterDay(date,1);
}
jssj = date+" "+jssj;
return jssj;
}
}

Binary file not shown.

@ -45,7 +45,7 @@ public class TestGetClockInPoint {
put("dtkssj","09:00");
put("dtdxhs","5");
put("zgzsc","8.00");
put("thdkfzs","800");
put("thdkfzs","");
put("ksdk","1");
put("rqlx","0");
}});
@ -53,12 +53,12 @@ public class TestGetClockInPoint {
put("edsc","8");
put("bdlx","1");
put("fgsjd","15:10");
put("jsdk","0");
put("jsdk","1");
put("tqdkfzs","");
put("sfxx","0");
put("edxss","3.00");
put("sfkt","0");
put("dtjssj","13:00");
put("dtjssj","18:00");
put("dtsfdx","0");
put("dtzddxfz","30");
put("btgz","0");
@ -67,55 +67,30 @@ public class TestGetClockInPoint {
put("dxhs","5");
put("bcsdxx","09:00-12:00|13:00-18:00");
put("sfdx","0");
put("dtkssj","09:00");
put("dtkssj","13:00");
put("dtdxhs","5");
put("zgzsc","8.00");
put("thdkfzs","");
put("ksdk","0");
put("thdkfzs","240");
put("ksdk","1");
put("rqlx","0");
}});
schedulingList.add(new HashMap(){{
put("edsc","8");
put("bdlx","1");
put("fgsjd","15:10");
put("edsc","9.50");
put("bdlx","2");
put("jsdk","1");
put("tqdkfzs","800");
put("sfxx","0");
put("edxss","3.00");
put("sfkt","0");
put("dtjssj","18:00");
put("dtsfdx","0");
put("dtzddxfz","30");
put("btgz","0");
put("tqdkfzs","60");
put("sfkt","1");
put("dtjssj","21:00");
put("zddxfz","30");
put("bcxx","1");
put("bcxx","25");
put("dxhs","5");
put("bcsdxx","09:00-12:00|13:00-18:00");
put("sfdx","0");
put("dtkssj","13:00");
put("dtdxhs","5");
put("zgzsc","8.00");
put("thdkfzs","800");
put("ksdk","0");
put("rqlx","0");
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","1");
put("dtkssj","19:00");
put("thdkfzs","120");
put("ksdk","1");
put("rqlx","11");
}});
// schedulingList.add(new HashMap(){{
// put("edsc","9.50");
// put("bdlx","2");
// put("jsdk","1");
// put("tqdkfzs","60");
// put("sfkt","1");
// put("dtjssj","21:00");
// put("zddxfz","30");
// put("bcxx","25");
// put("dxhs","5");
// put("bcsdxx","09:00-13:00|13:00-18:30");
// put("sfdx","1");
// put("dtkssj","19:00");
// put("thdkfzs","120");
// put("ksdk","1");
// put("rqlx","11");
// }});
List<Map<String,Object>> dataList = Lists.newArrayList();
@ -168,6 +143,25 @@ public class TestGetClockInPoint {
param.put("scheduleResult",schedulingList);
param.put("clockInTimeList",dataList);
param.put("askForLeaveAndEvctionSchedule",askForLeaveAndEvctionSchedule);
List<Map<String, Object>> needClockInList = schedulingList.stream().filter(e -> {
if (!ClassSegmentTypeEnum.REST_AND_DINE.getKey().equals(e.get("bdlx")) && !ClassSegmentTypeEnum.REST_PERIOD.getKey().equals(e.get("bdlx")) &&
!ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(e.get("bdlx")) && (CheckBoxEnum.CHECKED.getKey().equals(e.get("ksdk")) || CheckBoxEnum.CHECKED.getKey().equals(e.get("jsdk")))){
return true;
}else {
return false;
}
}).collect(Collectors.toList());
Map<String, Object> firstKsdkSchedule = null;
for (int i=0;i<needClockInList.size();i++){
if (CheckBoxEnum.CHECKED.getKey().equals(needClockInList.get(i).get("ksdk"))){
firstKsdkSchedule = needClockInList.get(i);
System.out.println(firstKsdkSchedule);
break;
}
}
System.out.println(firstKsdkSchedule);
// List<Map<String, Map<String,Object>>> collect = getClockInPoint("2023-11-12",schedulingList,dataList);
List<Map<String, Map<String,Object>>> collect = (List<Map<String, Map<String, Object>>>)new GetClockInPointCmd(param).execute(null).get("clcokInTimeData");

@ -29,6 +29,7 @@ import java.util.stream.Collectors;
public class TestObj {
public static void main(String[] args) throws Exception{
System.out.println(DateUtil.getTime("2024-04-17 23:00:00").compareTo(DateUtil.getTime("2024-04-18 00:00:00")));
// List<Map<String,Object>> existsList = new ArrayList<>();
// existsList = existsList.stream().filter(e->DateUtil.getTime("2024-03-19").compareTo(DateUtil.getTime(e.get("dkrq").toString())) <=0 &&
// DateUtil.getTime("2024-03-19").compareTo(DateUtil.getTime(e.get("dkrq").toString())) >=0).collect(Collectors.toList());
@ -57,7 +58,7 @@ public class TestObj {
// BigDecimal bigDecimal1 = new BigDecimal(100);
// BigDecimal bigDecimal2 = new BigDecimal(60);
// System.out.println(bigDecimal1.divide(bigDecimal2,2,RoundingMode.HALF_UP).doubleValue());
System.out.println(Utils.multiply(1.1,1.5));
// System.out.println(Utils.multiply(1.1,1.5));
// System.out.println(Utils.getItemdurationDown(30, AccountingUnitEnum.MINUTES.getKey(), 35,AccountingUnitEnum.MINUTES));
}

Loading…
Cancel
Save