Merge remote-tracking branch 'origin/main'

zm_dev
sy 1 year ago
commit 3298c0166b

@ -1 +1 @@
<EFBFBD><EFBFBD><EFBFBD>}<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>Z譿<EFBFBD>y<EFBFBD>Q<EFBFBD><EFBFBD>
<EFBFBD>[<EFBFBD><EFBFBD>鵿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

@ -10,18 +10,72 @@
</component>
<component name="ChangeListManager">
<list default="true" id="baeb3dfb-5097-46c5-933e-6d1dab18b815" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/AllowanceService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/beforlog.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.at" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.at" 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" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WEB-INF/sqllog/ecologysql" beforeDir="false" afterPath="$PROJECT_DIR$/WEB-INF/sqllog/ecologysql" afterDir="false" />
<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/RecordDataCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/RecordDataCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.java" 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/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$/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/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.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.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$/test/TestGetClockInPoint.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestGetClockInPoint.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -64,9 +118,9 @@
<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$/../../AO史密斯/aosmithProject" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../../easyentry" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="project.structure.last.edited" value="SDKs" />
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.14124292" />
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
@ -86,11 +140,11 @@
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\jucailin\cmd\calendar" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="TestAttendanceAllowance" />
<recent name="ComprehensiveWorkingHourServiceImpl" />
<recent name="" />
<recent name="shuju" />
<recent name="com.engine.attendance.attendanceanalysis.service.impl" />
<recent name="com.engine.attendance.workflow.action" />
<recent name="com.api.attendance.workflow" />
</key>
</component>
<component name="RunAnythingCache">
@ -98,7 +152,7 @@
<command value="organzationList" />
</option>
</component>
<component name="RunManager" selected="JUnit.Tset_sy.test">
<component name="RunManager" selected="JUnit.Test.testAnalysis">
<configuration name="Test (1)" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="shuju.Test" />
<module name="hrm-attendance" />
@ -113,30 +167,10 @@
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Test1" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="ComprehensiveWorkingHourServiceImpl.Test1" />
<module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="ComprehensiveWorkingHourServiceImpl.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="TestMain" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="shuju.TestMain" />
<configuration name="TestGetClockInPoint" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="TestGetClockInPoint" />
<module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="shuju.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
@ -172,6 +206,23 @@
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Test.testAnalysis" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="TestAttendanceAllowance.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="TestAttendanceAllowance" />
<option name="MAIN_CLASS_NAME" value="TestAttendanceAllowance.Test" />
<option name="METHOD_NAME" value="testAnalysis" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Tset_sy.test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" />
@ -192,11 +243,11 @@
</configuration>
<recent_temporary>
<list>
<item itemvalue="JUnit.Test.testAnalysis" />
<item itemvalue="Application.TestGetClockInPoint" />
<item itemvalue="Application.Test (1)" />
<item itemvalue="JUnit.Tset_sy.test" />
<item itemvalue="JUnit.Test1.test" />
<item itemvalue="Application.Test1" />
<item itemvalue="Application.Test (1)" />
<item itemvalue="Application.TestMain" />
</list>
</recent_temporary>
</component>
@ -559,7 +610,12 @@
<workItem from="1712712249272" duration="6788000" />
<workItem from="1712726952165" duration="19422000" />
<workItem from="1712798979811" duration="5690000" />
<workItem from="1712812681283" duration="5428000" />
<workItem from="1712812681283" duration="23124000" />
<workItem from="1712885635868" duration="7005000" />
<workItem from="1712899728990" duration="7469000" />
<workItem from="1713158776480" duration="17419000" />
<workItem from="1713230394234" duration="7819000" />
<workItem from="1713245093631" duration="3537000" />
</task>
<servers />
</component>
@ -594,18 +650,39 @@
<option name="timeStamp" value="54" />
</breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/test/TestGetClockInPoint.java</url>
<line>301</line>
<option name="timeStamp" value="28" />
<url>file://$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.java</url>
<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>
<pinned-members>
<PinnedItemInfo parentTag="java.util.HashMap$Node" memberName="value" />
</pinned-members>
</pin-to-top-manager>
<watches-manager>
<configuration name="Application">
<watch expression="((java.util.ArrayList)clcokInTimeData).get(1)" custom="java.util.ArrayList" />
<watch expression="afterClcokInTimeData" />
<watch expression="((HashMap.Node)((HashMap)beforeClcokInTimeData).entrySet().toArray()[0]).getValue()" custom="java.util.HashMap.Node,java.util.HashMap" />
<watch expression="clcokInTimeData" />
<watch expression="afterClcokInTimeData" />
</configuration>
</watches-manager>
</component>

@ -1753,3 +1753,413 @@
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-04-16","14:01:40.055","loginID=null main-1","24""1-2011695710","null","null","update","update uf_jcl_kq_cqjg set cqsc=8.0,cqzt=0,fxrq='2024-04-16 14:01:39',rqlx=0,bc=1,bcbdxx='09:00-12:00|13:00-18:00',xm1=NULL,sc1=NULL,xm2=NULL,sc2=NULL,xm3=NULL,sc3=NULL,xm4=NULL,sc4=NULL,xm5=NULL,sc5=NULL,xm6=NULL,sc6=NULL,xm7=NULL,sc7=NULL,xm8=NULL,sc8=NULL,j1='09:42:00',j2=NULL,j3=NULL,j4=NULL,j5=NULL,j6=NULL,j7=NULL,c1='20:46:00',c2=NULL,c3=NULL,c4=NULL,c5=NULL,c6=NULL,c7=NULL where ygid=? and rq=?,[81, 2024-04-10]",")
at weaver.conn.RecordSet.executeSql(RecordSet.java:1372)
at weaver.conn.RecordSet.executeUpdate(RecordSet.java:988)
at com.engine.common.util.DbTools.update(DbTools.java:117)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:99)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:17)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl.recordItem(UtilServiceImpl.java:216)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.analysis(AttendanceAnalysisWrapper.java:392)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.attendanceAnalysisForApi(AttendanceAnalysisWrapper.java:117)
at com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction.getSchedulingData(AttendanceanalysisAction.java:128)
at TestAttendanceAllowance.Test.testAnalysis(Test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-04-16","14:01:40.151","loginID=null main-1","8""1-2011695710","null","null","delete","delete from uf_jcl_kq_jbjg where lyid=?,[5607]",")
at weaver.conn.RecordSetTrans.executeSql(RecordSetTrans.java:736)
at weaver.conn.RecordSetTrans.executeUpdate(RecordSetTrans.java:430)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.updateWorkOverTimeDate(RecordDataCmd.java:170)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:157)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:17)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl.recordItem(UtilServiceImpl.java:216)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.analysis(AttendanceAnalysisWrapper.java:392)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.attendanceAnalysisForApi(AttendanceAnalysisWrapper.java:117)
at com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction.getSchedulingData(AttendanceanalysisAction.java:128)
at TestAttendanceAllowance.Test.testAnalysis(Test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-04-16","14:01:40.171","loginID=null main-1","7""1-2011695710","null","null","delete","delete from uf_jcl_kq_jqye where lyid=?,[5607]",")
at weaver.conn.RecordSetTrans.executeSql(RecordSetTrans.java:736)
at weaver.conn.RecordSetTrans.executeUpdate(RecordSetTrans.java:430)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.updateWorkOverTimeDate(RecordDataCmd.java:172)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:157)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:17)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl.recordItem(UtilServiceImpl.java:216)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.analysis(AttendanceAnalysisWrapper.java:392)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.attendanceAnalysisForApi(AttendanceAnalysisWrapper.java:117)
at com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction.getSchedulingData(AttendanceanalysisAction.java:128)
at TestAttendanceAllowance.Test.testAnalysis(Test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-04-16","14:01:40.191","loginID=null main-1","8""1-2011695710","null","null","update","update uf_jcl_kq_jbjg set lyid =? where lyid=?,[5607, 81-2024-04-16]",")
at weaver.conn.RecordSetTrans.executeSql(RecordSetTrans.java:736)
at weaver.conn.RecordSetTrans.executeUpdate(RecordSetTrans.java:430)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.updateWorkOverTimeDate(RecordDataCmd.java:174)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:157)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:17)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl.recordItem(UtilServiceImpl.java:216)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.analysis(AttendanceAnalysisWrapper.java:392)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.attendanceAnalysisForApi(AttendanceAnalysisWrapper.java:117)
at com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction.getSchedulingData(AttendanceanalysisAction.java:128)
at TestAttendanceAllowance.Test.testAnalysis(Test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-04-16","14:01:40.209","loginID=null main-1","8""1-2011695710","null","null","update","update uf_jcl_kq_jqye set lyid =? where lyid=?,[5607, 81-2024-04-16]",")
at weaver.conn.RecordSetTrans.executeSql(RecordSetTrans.java:736)
at weaver.conn.RecordSetTrans.executeUpdate(RecordSetTrans.java:430)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.updateWorkOverTimeDate(RecordDataCmd.java:176)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:157)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:17)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl.recordItem(UtilServiceImpl.java:216)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.analysis(AttendanceAnalysisWrapper.java:392)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.attendanceAnalysisForApi(AttendanceAnalysisWrapper.java:117)
at com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction.getSchedulingData(AttendanceanalysisAction.java:128)
at TestAttendanceAllowance.Test.testAnalysis(Test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-04-16","14:36:49.803","loginID=null main-1","20""1-1237264838","null","null","update","update uf_jcl_kq_cqjg set cqsc=8.0,cqzt=1,fxrq='2024-04-16 14:36:49',rqlx=0,bc=1,bcbdxx='09:00-12:00|13:00-18:00',xm1=122,sc1=12.0,xm2=NULL,sc2=NULL,xm3=NULL,sc3=NULL,xm4=NULL,sc4=NULL,xm5=NULL,sc5=NULL,xm6=NULL,sc6=NULL,xm7=NULL,sc7=NULL,xm8=NULL,sc8=NULL,j1='09:42:00',j2=NULL,j3=NULL,j4=NULL,j5=NULL,j6=NULL,j7=NULL,c1='20:46:00',c2=NULL,c3=NULL,c4=NULL,c5=NULL,c6=NULL,c7=NULL where ygid=? and rq=?,[81, 2024-04-10]",")
at weaver.conn.RecordSet.executeSql(RecordSet.java:1372)
at weaver.conn.RecordSet.executeUpdate(RecordSet.java:988)
at com.engine.common.util.DbTools.update(DbTools.java:117)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:99)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:17)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl.recordItem(UtilServiceImpl.java:216)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.analysis(AttendanceAnalysisWrapper.java:392)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.attendanceAnalysisForApi(AttendanceAnalysisWrapper.java:117)
at com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction.getSchedulingData(AttendanceanalysisAction.java:128)
at TestAttendanceAllowance.Test.testAnalysis(Test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-04-16","14:36:49.891","loginID=null main-1","12""1-1237264838","null","null","delete","delete from uf_jcl_kq_jbjg where lyid=?,[5607]",")
at weaver.conn.RecordSetTrans.executeSql(RecordSetTrans.java:736)
at weaver.conn.RecordSetTrans.executeUpdate(RecordSetTrans.java:430)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.updateWorkOverTimeDate(RecordDataCmd.java:170)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:157)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:17)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl.recordItem(UtilServiceImpl.java:216)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.analysis(AttendanceAnalysisWrapper.java:392)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.attendanceAnalysisForApi(AttendanceAnalysisWrapper.java:117)
at com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction.getSchedulingData(AttendanceanalysisAction.java:128)
at TestAttendanceAllowance.Test.testAnalysis(Test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-04-16","14:36:49.911","loginID=null main-1","8""1-1237264838","null","null","delete","delete from uf_jcl_kq_jqye where lyid=?,[5607]",")
at weaver.conn.RecordSetTrans.executeSql(RecordSetTrans.java:736)
at weaver.conn.RecordSetTrans.executeUpdate(RecordSetTrans.java:430)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.updateWorkOverTimeDate(RecordDataCmd.java:172)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:157)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:17)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl.recordItem(UtilServiceImpl.java:216)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.analysis(AttendanceAnalysisWrapper.java:392)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.attendanceAnalysisForApi(AttendanceAnalysisWrapper.java:117)
at com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction.getSchedulingData(AttendanceanalysisAction.java:128)
at TestAttendanceAllowance.Test.testAnalysis(Test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-04-16","14:36:49.933","loginID=null main-1","6""1-1237264838","null","null","update","update uf_jcl_kq_jbjg set lyid =? where lyid=?,[5607, 81-2024-04-16]",")
at weaver.conn.RecordSetTrans.executeSql(RecordSetTrans.java:736)
at weaver.conn.RecordSetTrans.executeUpdate(RecordSetTrans.java:430)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.updateWorkOverTimeDate(RecordDataCmd.java:174)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:157)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:17)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl.recordItem(UtilServiceImpl.java:216)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.analysis(AttendanceAnalysisWrapper.java:392)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.attendanceAnalysisForApi(AttendanceAnalysisWrapper.java:117)
at com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction.getSchedulingData(AttendanceanalysisAction.java:128)
at TestAttendanceAllowance.Test.testAnalysis(Test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-04-16","14:36:49.951","loginID=null main-1","9""1-1237264838","null","null","update","update uf_jcl_kq_jqye set lyid =? where lyid=?,[5607, 81-2024-04-16]",")
at weaver.conn.RecordSetTrans.executeSql(RecordSetTrans.java:736)
at weaver.conn.RecordSetTrans.executeUpdate(RecordSetTrans.java:430)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.updateWorkOverTimeDate(RecordDataCmd.java:176)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:157)
at com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd.execute(RecordDataCmd.java:17)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl.recordItem(UtilServiceImpl.java:216)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.analysis(AttendanceAnalysisWrapper.java:392)
at com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper.attendanceAnalysisForApi(AttendanceAnalysisWrapper.java:117)
at com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction.getSchedulingData(AttendanceanalysisAction.java:128)
at TestAttendanceAllowance.Test.testAnalysis(Test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"

File diff suppressed because it is too large Load Diff

@ -268,7 +268,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
tqdkfzs = DateUtil.getBetWeenMinutes(getBeforeClockTime(needClockDateList,dtkssj),dtkssj);
}else {
tqdkfzs = Integer.valueOf(needClockIn.get("tqdkfzs") == null?"0":needClockIn.get("tqdkfzs").toString());
tqdkfzs = Util.null2String(needClockIn.get("tqdkfzs")).equals("")?0:Integer.valueOf(needClockIn.get("tqdkfzs").toString());
}
Map<String, Map<String, Object>> ksdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtkssj, clockInTimeList);
@ -305,7 +305,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
if (Util.null2String(needClockIn.get("thdkfzs")).equals("") && !"".equals(getNextClockTime(needClockDateList,dtjssj))){
thdkfzs = DateUtil.getBetWeenMinutes(dtjssj,getNextClockTime(needClockDateList,dtjssj));
}else {
thdkfzs = Integer.valueOf(needClockIn.get("thdkfzs") == null?"0":needClockIn.get("thdkfzs").toString());
thdkfzs = Util.null2String(needClockIn.get("thdkfzs")).equals("")?0:Integer.valueOf(needClockIn.get("thdkfzs").toString());
}
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0) {
@ -661,35 +661,69 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
String pointType = afterClcokInTime.split("\\|")[1];
//empty:漏卡equal:打卡时间和班次时间相等before打卡时间在班次时间之前after打卡时间在班次时间之后
String timeType = afterClcokInTime.split("\\|")[2];
String newPonit = afterClcokInTime.split("\\|")[0]+"|"+pointType;
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);
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();
}
if (nearestClcokInTime.get(newtimeType) != null && (i+2)<clcokInTimeData.size()){
newPonit = newPonit +"|"+newtimeType;
if (afterClcokInTime.split("\\|").length ==4){
newPonit = newPonit +"|"+afterClcokInTime.split("\\|")[3];
}
}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];
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;
}
}else if (newtimeType.equals(ClockPointEnum.AFTER.getKey())){
if (!getNextClockTime(needClockDateList,time).equals("") && DateUtil.getTime(newClockTime).compareTo(DateUtil.getTime(getNextClockTime(needClockDateList,time))) >= 0){
newClockTimeMap = null;
}
clcokInTimeData.remove(afterClcokInTimeData);
afterClcokInTimeData = Maps.newHashMap();
afterClcokInTimeData.put(newPonit,nearestClcokInTime.get(ClockPointEnum.AFTER.getKey()));
clcokInTimeData.add(i + 1,afterClcokInTimeData);
}else {
afterClcokInTimeData.put(afterClcokInTime, 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);
}
// 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);

@ -4,5 +4,7 @@ import java.util.List;
import java.util.Map;
public interface AllowanceService {
List<Map<String,Object>> removeAbnormal(Map<String,Object> param);
Map<String,Object> allowanceHandle(Map<String,Object> param);
Map<String,Object> removeAbnormal(Map<String,Object> param);
}

@ -1,29 +1,169 @@
package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.item.AbsenteeismItemCmd;
import com.engine.attendance.attendanceanalysis.cmd.item.BeLateItemCmd;
import com.engine.attendance.attendanceanalysis.service.AllowanceService;
import com.engine.attendance.enums.AccountingUnitEnum;
import com.engine.attendance.enums.AttendanceItemTypeEnum;
import com.engine.attendance.enums.CheckBoxEnum;
import com.engine.attendance.enums.WorkForTimeEnum;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.common.util.Utils;
import com.engine.core.impl.Service;
import com.google.common.collect.Maps;
import weaver.general.Util;
import java.time.ZoneOffset;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class AllowanceServiceImpl extends Service implements AllowanceService {
@Override
public List<Map<String, Object>> removeAbnormal(Map<String, Object> param) {
public Map<String, Object> allowanceHandle(Map<String, Object> param) {
String userId = Util.null2String(param.get("userId"));
String analysisDate = Util.null2String(param.get("analysisDate"));
Map<String,Object> resultMap = Maps.newHashMap();
String sql = "select jtlx,sc,zt from uf_jcl_kq_cqjt where zt=1 and yg=? and rq=?";
List<Map<String,Object>> allowanceList = DbTools.getSqlToList(sql,userId,analysisDate);
List<Map<String,Object>> allowanceList = DbTools.getSqlToList(sql,userId,DateUtil.beforeDay(analysisDate,1));
if (allowanceList.size() == 0){
return null;
return resultMap;
}
Set<String> allowances = allowanceList.stream().map(e-> e.get("jtlx").toString()).collect(Collectors.toSet());
Map<String,List<Map<String,Object>>> allowanceGroupByList = allowanceList.stream().collect(Collectors.groupingBy(e->e.get("jtlx").toString()));
sql = "select id,csjthdclfs,tcscws,hsdw from uf_jcl_kq_kqxm where id in ("+String.join(",",allowances)+")";
List<Map<String,Object>> itemList = DbTools.getSqlToList(sql);
Map<String,List<Map<String,Object>>> itemGroupbyList = itemList.stream().collect(Collectors.groupingBy(e->e.get("id").toString()));
allowanceGroupByList.entrySet().forEach(e -> {
String jtlx = e.getKey();
List<Map<String,Object>> list = e.getValue();
Map<String,Object> item = itemGroupbyList.get(jtlx).get(0);
String csjthdclfs = Util.null2String(item.get("csjthdclfs"));
String tcscws = Util.null2String(item.get("tcscws"));
String hsdw = Util.null2String(item.get("hsdw"));
if ("1".equals(csjthdclfs)){
//次日免班
resultMap.put("ifnotWork","true");
}else if ("2".equals(csjthdclfs)){
//推迟上班
double scsum = list.stream().mapToDouble(f->Double.valueOf(f.get("sc").toString())).sum();
scsum = Utils.converTimeToMinute(scsum,hsdw);
double multiple = Double.valueOf(tcscws);
resultMap.put(jtlx, Utils.multiply(scsum,multiple));
}
});
if (resultMap.get("ifnotWork") != null){
//次日免班
}else {
//推迟上班分钟数
double delayMinute = 0;
for (Map.Entry<String,Object> entry :resultMap.entrySet()){
delayMinute = delayMinute+Double.valueOf(String.valueOf(entry.getValue()));
}
resultMap.put("delayMinute",delayMinute);
}
return resultMap;
}
@Override
public Map<String, Object> removeAbnormal(Map<String, Object> param) {
List<Map<String,Object>> abnormalClockInList = (List<Map<String,Object>>)param.get("abnormalClockInList");
//班次
List<Map<String,Object>> scheduleResult = (List<Map<String,Object>>)param.get("scheduleResult");
//分析日期
String analysisDate = Util.null2String(param.get("analysisDate"));
//考勤项目
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)param.get("attendanceItems");
int delayMinute = Double.valueOf(Util.null2String(param.get("delayMinute"))).intValue();
List<Map<String,Object>> lateList = abnormalClockInList.stream().filter(e-> AttendanceItemTypeEnum.LATE.equals(e.get("itemType"))).collect(Collectors.toList());
lateList = lateList.stream().sorted(Comparator.comparing(e-> DateUtil.getTime(e.get("classStartTime").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
Map<String,Object> lateMap = lateList.get(0);
if (delayMinute > 0){
//早上卡嗲
String classStartTime = Util.null2String(lateMap.get("classStartTime"));
//早上打卡时间
String classEndTime = Util.null2String(lateMap.get("classEndTime"));
int index = 0;
for (Map<String,Object> abnormalClockIn:abnormalClockInList){
if (abnormalClockIn.get("itemType").equals(AttendanceItemTypeEnum.LATE) &&
abnormalClockIn.get("classStartTime").equals(lateMap.get("classStartTime")) ){
index = 0;
}
}
abnormalClockInList.remove(index);
//延迟上班后新的上班时间
String newClassStartTime = DateUtil.AfterMinutes(classStartTime,delayMinute);
if (DateUtil.getTime(newClassStartTime).compareTo(DateUtil.getTime(classEndTime)) >=0){
//消除迟到
}else {
//重新计算迟到项目以及时间
int between = Utils.removeRestTime(newClassStartTime,classEndTime,scheduleResult,analysisDate);
Map<String,Object> lateParams = Maps.newHashMap();
lateParams.put("attendanceItems",attendanceItems);
lateParams.put("time",between);
lateParams.put("rqlx",scheduleResult.get(0).get("rqlx"));
lateParams.put("workfor", WorkForTimeEnum.WORK_TIME.getKey());
Map<String,Object> result = commandExecutor.execute(new BeLateItemCmd(lateParams));
List<Map<String,Object>> workTimeBeLateItems = (List<Map<String,Object>>)result.get("attendanceItems");
if (workTimeBeLateItems.size() == 0){
workTimeBeLateItems = (List<Map<String,Object>>)commandExecutor.execute(new AbsenteeismItemCmd(lateParams)).get("attendanceItems");
}
if (workTimeBeLateItems.size() > 0){
Map<String,Object> saveWorkTimeBeLateParam = Maps.newHashMap();
double hsl = Double.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("hsl")));
String hsdw = Util.null2String(workTimeBeLateItems.get(0).get("hsdw"));
String kczgsc = Util.null2String(workTimeBeLateItems.get(0).get("kczgsc"));
if (CheckBoxEnum.CHECKED.getKey().equals(kczgsc)){
//起步扣除分钟数
int qbkcsc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("qbkcsc")));
//超出后单次累加扣除分钟数
int cckcbc = Integer.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("cckcbc")));
if (between <= qbkcsc){
between = qbkcsc;
}else {
int deductionDuration = between-qbkcsc;
between = Double.valueOf(Utils.getItemduration(cckcbc,AccountingUnitEnum.MINUTES.getKey(),deductionDuration,AccountingUnitEnum.MINUTES)).intValue()+qbkcsc;
}
}
double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES);
saveWorkTimeBeLateParam.put("item",workTimeBeLateItems.get(0).get("key"));
saveWorkTimeBeLateParam.put("itemduration",itemduration);
saveWorkTimeBeLateParam.put("betweenMinutes",between);
saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE);
saveWorkTimeBeLateParam.put("hsdw",hsdw);
saveWorkTimeBeLateParam.put("hsl",hsl);
saveWorkTimeBeLateParam.put("kczgsc",kczgsc);
saveWorkTimeBeLateParam.put("classStartTime",classStartTime);
saveWorkTimeBeLateParam.put("classEndTime",classEndTime);
saveWorkTimeBeLateParam.put("pointTime",lateMap.get("pointTime"));
saveWorkTimeBeLateParam.put("bdlx",lateMap.get("bdlx"));
abnormalClockInList.add(saveWorkTimeBeLateParam);
}
}
}
return null;
}
}

@ -36,7 +36,7 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
@Override
public Map<String, Object> excuteByWorkHour(Map<String, Object> param) {
Map<String, Object> resultMap = Maps.newHashMap();
log.info("ComprehensiveWorkingHourServiceImpl param : [{}]",param);
//按照日期分割的打卡时间
List<Map<String,Object>> clockInTimeList = (List<Map<String,Object>>) param.get("clockInTimeCollect");
//分析日期

@ -156,10 +156,27 @@ public class UtilServiceImpl extends Service implements UtilService {
String kssjend = e.getKey() +" "+resultList.get(resultList.size()-1).get("dtkssj");
String kssj = e.getKey() +" "+overtimePlan.get("kssj");
if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(kssjbegin)) <0){
//加班计划在开头
if (resultList.get(0).get("dtkssj").equals(overtimePlan.get("jssj")) &&
resultList.get(0).get("ksdk").equals(CheckBoxEnum.CHECKED.getKey()) &&
map.get("ksdk").equals(CheckBoxEnum.CHECKED.getKey()) &&
map.get("jsdk").equals(CheckBoxEnum.CHECKED.getKey())){
//当加班结束时间和早上打卡时间重合时
}
resultList.add(0,map);
}else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(kssjend)) >0){
//加班计划在末尾
if (resultList.get(0).get("dtjssj").equals(overtimePlan.get("kssj")) &&
resultList.get(0).get("jsdk").equals(CheckBoxEnum.CHECKED.getKey()) &&
map.get("ksdk").equals(CheckBoxEnum.CHECKED.getKey()) &&
map.get("jsdk").equals(CheckBoxEnum.CHECKED.getKey())){
//当加班结束时间和晚上下班时间重合时1
}
resultList.add(map);
}else {
//加班计划在中间
for (int j=1;j<resultList.size();j++){
String kssj1 = e.getKey() +" "+resultList.get(j).get("dtkssj");
String kssj2 = e.getKey() +" "+overtimePlan.get("kssj");

@ -37,7 +37,11 @@ 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 = 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");
String startDate = Util.null2String(paramMap.get("startDate"));
String startBeforeDate = DateUtil.beforeDay(startDate,1);
String endDate = Util.null2String(paramMap.get("endDate"));

@ -142,6 +142,11 @@ public class AttendanceAnalysisWrapper extends Service {
workingHourparam.put("userId",userId);
workingHourparam.put("attendanceItems",attendanceItems);
/**
*
*/
Map<String,Object> allowanceMap = updateAttendanceResultWrapper.allowanceHandle(recordParam);
if (workHourItems !=null && workHourItems.size() >0){
workingHourparam.put("workHourItem",workHourItems.get(0));
String ifPriority = Util.null2String(workHourItems.get(0).get("hlpbyxsyzhgs"));
@ -161,6 +166,7 @@ public class AttendanceAnalysisWrapper extends Service {
params.put("scheduleList",scheduleList);
params.put("workHourItems",workHourItems);
params.put("attendanceItems",attendanceItems);
params.put("allowanceMap",allowanceMap);
updateAttendanceResultWrapper.recordNoClass(params);
return;
}
@ -316,9 +322,28 @@ public class AttendanceAnalysisWrapper extends Service {
/**
*
*
*/
recordAbnormalParam.put("abnormalClockInList",abnormalClockInList);
String ifnotWork = Util.null2String(allowanceMap.get("ifnotWork"));
if (!"".equals(ifnotWork)){
//次日免班
recordParam.put("recordData",Lists.newArrayList());
recordParam.put("recordDataTime",Maps.newHashMap());
recordParam.put("attendanceDuration",0);
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
utilService.recordItem(recordParam);
return;
}
if (!"".equals(Util.null2String(allowanceMap.get("delayMinute")))){
recordAbnormalParam.put("delayMinute",allowanceMap.get("delayMinute"));
updateAttendanceResultWrapper.removeAbnormal(recordAbnormalParam);
}
/**
*
*/
Map<String, Object> vactionMap = updateAttendanceResultWrapper.recordAskForLeave(recordAbnormalParam);
List<Map<String,Object>> abnormalClockInListByAskForLeave = (List<Map<String,Object>>)vactionMap.get("abnormalClockInList");
List<Map<String,Object>> vactionList = (List<Map<String,Object>>)vactionMap.get("resultList");
@ -340,9 +365,6 @@ public class AttendanceAnalysisWrapper extends Service {
*/
List<Map<String,Object>> recordWorkOverTime= updateAttendanceResultWrapper.recordWorkOverTime(recordAbnormalParam);
/**
*
*/
/**

@ -27,7 +27,8 @@ public class UpdateAttendanceResultWrapper extends Service {
private EvectionService evectionService= ServiceUtil.getService(EvectionServiceImpl.class);
private WorkOverTimeService workOverTimeService = ServiceUtil.getService(WorkOverTimeServiceImpl.class);
private ComprehensiveWorkingHourService comprehensiveWorkingHourService = ServiceUtil.getService(ComprehensiveWorkingHourServiceImpl.class);
private AllowanceService allowanceService = ServiceUtil.getService(AllowanceServiceImpl.class);
private UtilService utilService = ServiceUtil.getService(UtilServiceImpl.class);
/**
*
@ -409,6 +410,8 @@ public class UpdateAttendanceResultWrapper extends Service {
String userId = Util.null2String(params.get("userId"));
//综合工时
List<Map<String,Object>> workHourItems = (List<Map<String,Object>>)params.get("workHourItems");
//津贴
Map<String,Object> allowanceMap = (Map<String,Object>)params.get("allowanceMap");
Map<String,Object> normalParams = Maps.newHashMap();
@ -417,6 +420,23 @@ public class UpdateAttendanceResultWrapper extends Service {
normalParams.put("modeId",params.get("modeId"));
normalParams.put("scheduleList",params.get("scheduleList"));
log.info("userId : {} ,analysisDate: {} have no class",userId,analysisDate);
if (allowanceMap.get("ifnotWork") != null){
//次日免班
Map<String,Object> recordParam = Maps.newHashMap();
recordParam.put("userId",userId);
recordParam.put("analysisDate",analysisDate);
recordParam.put("recordData",Lists.newArrayList());
recordParam.put("rqlx",Utils.getDateType(analysisDate));
recordParam.put("classInfo",Lists.newArrayList());
recordParam.put("recordDataTime",Maps.newHashMap());
recordParam.put("attendanceDuration",0);
recordParam.put("formmodeIdMap",Utils.getFormmodeIdMap());
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
utilService.recordItem(recordParam);
return false;
}
if (workHourItems.size() >0){
params.put("workHourItem",workHourItems.get(0));
comprehensiveWorkingHourService.excuteByWorkHour(params);
@ -433,9 +453,16 @@ public class UpdateAttendanceResultWrapper extends Service {
* @param params
* @return
*/
public List<Map<String,Object>> allowanceHandle(Map<String,Object> params){
public Map<String,Object> allowanceHandle(Map<String,Object> params){
return allowanceService.allowanceHandle(params);
}
return null;
/**
*
* @param params
* @return
*/
public Map<String,Object> removeAbnormal(Map<String,Object> params){
return allowanceService.removeAbnormal(params);
}
}

@ -16,6 +16,7 @@ import java.io.IOException;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLDecoder;
@ -562,14 +563,30 @@ public class Utils<T> {
return resultList;
}
/**
*
* @param value1
* @param value2
* @return
*/
public static double subtract(double value1,double value2){
return new BigDecimal(value1).subtract(new BigDecimal(value2),new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue();
return new BigDecimal(value1).subtract(new BigDecimal(value2),new MathContext(BigDecimal.ROUND_HALF_UP)).doubleValue();
}
/**
*
* @param value1
* @param value2
* @return
*/
public static double add(double value1,double value2){
return new BigDecimal(value1).add(new BigDecimal(value2),new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue();
return new BigDecimal(value1).add(new BigDecimal(value2),new MathContext(BigDecimal.ROUND_HALF_UP)).doubleValue();
}
public static double multiply(double value1,double value2){
return new BigDecimal(value1).multiply(new BigDecimal(value2),new MathContext(BigDecimal.ROUND_HALF_UP)).doubleValue();
}
/**
@ -603,4 +620,30 @@ public class Utils<T> {
Map<String,Object> data = DbTools.getSqlToMap(sql,rlmc,date.split(" ")[0]);
return Util.null2String(data.get("rqlx"));
}
/**
*
* @param date
* @return
*/
public static String getDateType(String date){
String sql = "select a.rqlx from uf_jcl_kq_rlxx a left join uf_jcl_kq_rlmc b on a.rlmc=b.id where b.mrrl=1 and a.rq=?";
Map<String,Object> data = DbTools.getSqlToMap(sql,date);
return Util.null2String(data.get("rqlx"));
}
/**
*
* @param time
* @param hsdw
* @return
*/
public static double converTimeToMinute(double time,String hsdw){
if (AccountingUnitEnum.DAY.getKey().equals(hsdw)){
time = time*24*60;
}else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)){
time = time*60;
}
return time;
}
}

Binary file not shown.

@ -18,73 +18,68 @@ public class Test1 extends beforlog {
@Test
public void test(){
// ComprehensiveWorkingHourService comprehensiveWorkingHourService = ServiceUtil.getService(ComprehensiveWorkingHourServiceImpl.class);
// Map<String,Object> param = Maps.newHashMap();
// List<Map<String,Object>> clockInTimeList = Lists.newArrayList();
// Map<String,Object> workHourItem = Maps.newHashMap();
// clockInTimeList.add(new HashMap(){{
// put("signtime","08:05:00");
// put("signdate","2024-04-08");
// }});
// clockInTimeList.add(new HashMap(){{
// put("signtime","19:15:00");
// put("signdate","2024-04-08");
// }});
// clockInTimeList.add(new HashMap(){{
// put("signtime","11:01:00");
// put("signdate","2024-04-09");
// }});
// clockInTimeList.add(new HashMap(){{
// put("signtime","11:05:30");
// put("signdate","2024-04-09");
// }});
// clockInTimeList.add(new HashMap(){{
// put("signtime","13:00:00");
// put("signdate","2024-04-09");
// }});
// clockInTimeList.add(new HashMap(){{
// put("signtime","17:04:00");
// put("signdate","2024-04-09");
// }});
// clockInTimeList.add(new HashMap(){{
// put("signtime","08:16:00");
// put("signdate","2024-04-10");
// }});
// clockInTimeList.add(new HashMap(){{
// put("signtime","21:14:00");
// put("signdate","2024-04-10");
// }});
// workHourItem.put("wdkhlfzs","1");
// workHourItem.put("rzcgzsc","12.00");
// workHourItem.put("rzwdkbdsj","09:00");
// workHourItem.put("ljcqscdhsfzs","30");
// workHourItem.put("szjg","1");
// workHourItem.put("hsgsdrqlx","4,0");
// workHourItem.put("dzsbksd","1");
// workHourItem.put("qyrl","5");
// workHourItem.put("rgzscjsgz","1");
// workHourItem.put("hlpbyxsyzhgs","1");
// workHourItem.put("zwdkxbdkssj","");
// workHourItem.put("rgzscbzhsyc","1");
// workHourItem.put("rgzscyq","10.00");
// workHourItem.put("ccrgzscyqjrcqsc","1");
// workHourItem.put("zzdksbdkssj","06:00");
//
//
// param.put("analysisDate","2024-04-09");
// param.put("userId","80");
// param.put("clockInTimeCollect",clockInTimeList);
// param.put("workHourItem",workHourItem);
// param.put("attendanceItems",Lists.newArrayList());
// comprehensiveWorkingHourService.excuteByWorkHour(param);
ComprehensiveWorkingHourService comprehensiveWorkingHourService = ServiceUtil.getService(ComprehensiveWorkingHourServiceImpl.class);
Map<String,Object> param = Maps.newHashMap();
List<Map<String,Object>> clockInTimeList = Lists.newArrayList();
Map<String,Object> workHourItem = Maps.newHashMap();
clockInTimeList.add(new HashMap(){{
put("signtime","08:05:00");
put("signdate","2024-04-08");
}});
clockInTimeList.add(new HashMap(){{
put("signtime","19:15:00");
put("signdate","2024-04-08");
}});
clockInTimeList.add(new HashMap(){{
put("signtime","11:01:00");
put("signdate","2024-04-09");
}});
clockInTimeList.add(new HashMap(){{
put("signtime","11:05:30");
put("signdate","2024-04-09");
}});
clockInTimeList.add(new HashMap(){{
put("signtime","13:00:00");
put("signdate","2024-04-09");
}});
clockInTimeList.add(new HashMap(){{
put("signtime","17:04:00");
put("signdate","2024-04-09");
}});
clockInTimeList.add(new HashMap(){{
put("signtime","08:16:00");
put("signdate","2024-04-10");
}});
clockInTimeList.add(new HashMap(){{
put("signtime","21:14:00");
put("signdate","2024-04-10");
}});
workHourItem.put("wdkhlfzs","1");
workHourItem.put("rzcgzsc","12.00");
workHourItem.put("rzwdkbdsj","09:00");
workHourItem.put("ljcqscdhsfzs","30");
workHourItem.put("szjg","1");
workHourItem.put("hsgsdrqlx","4,0");
workHourItem.put("dzsbksd","1");
workHourItem.put("qyrl","5");
workHourItem.put("rgzscjsgz","1");
workHourItem.put("hlpbyxsyzhgs","1");
workHourItem.put("zwdkxbdkssj","");
workHourItem.put("rgzscbzhsyc","1");
workHourItem.put("rgzscyq","10.00");
workHourItem.put("ccrgzscyqjrcqsc","1");
workHourItem.put("zzdksbdkssj","06:00");
param.put("analysisDate","2024-04-09");
param.put("userId","80");
param.put("clockInTimeCollect",clockInTimeList);
param.put("workHourItem",workHourItem);
param.put("attendanceItems",Lists.newArrayList());
comprehensiveWorkingHourService.excuteByWorkHour(param);
AllowanceService getAllowanceService = ServiceUtil.getService(AllowanceServiceImpl.class);
Map<String,Object> param = Maps.newHashMap();
param.put("startDate","2024-04-01");
param.put("endDate","2024-04-09");
getAllowanceService.addAllowanceRecords(param);
}
}

@ -0,0 +1,22 @@
package TestAttendanceAllowance;
import com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction;
import com.google.common.collect.Maps;
import java.util.Map;
public class Test extends beforlog{
@org.junit.Test
public void testAnalysis(){
Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate","2024-04-10");
paramMap.put("endDate","2024-04-10");
paramMap.put("userIds","81");
beforlog be = new beforlog();
AttendanceanalysisAction action = new AttendanceanalysisAction();
action.getSchedulingData(null,null);
}
}

@ -0,0 +1,142 @@
package TestAttendanceAllowance;
import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Before;
import weaver.general.GCONST;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class beforlog {
@Before
public void init(){
GCONST.setRootPath("");
GCONST.setServerName("ecology");
System.out.println("----------------开始----------------");
}
@After
public void demoAfter() throws Exception{
System.out.println("-----------------结束---------------");
}
public HttpServletRequest CreateHttpServletOrmap(Map<String,Object> map){
HttpServletRequest httpServletRequest = (HttpServletRequest) EasyMock.createMock(HttpServletRequest.class);
// Map<String, String> map2 = new HashMap<>();
for (String key:map.keySet() ) {
// String[] values=
// map2.put(key,map.get(key).toString());
EasyMock.expect(httpServletRequest.getParameter(key)).andReturn(map.get(key).toString());
}
// EasyMock.expect(httpServletRequest.getParameterMap()).andReturn(map2);
EasyMock.expect(httpServletRequest.getParameter("2123")).andReturn("123");
HttpSession session = EasyMock.createStrictMock(HttpSession.class);
//session管理
EasyMock.expect(httpServletRequest.getParameter("f_weaver_belongto_userid")).andReturn("1");
EasyMock.expect(httpServletRequest.getParameter("f_weaver_belongto_usertype")).andReturn("0");
EasyMock.expect(session.getAttribute("weaver_user@bean")).andReturn(new User(290464));
EasyMock.expect(httpServletRequest.getSession(true)).andStubReturn(session);
EasyMock.replay(httpServletRequest, session);
return httpServletRequest;
}
public HttpServletRequest CreateHttpServletOr(Map<String,Object> map){
HttpServletRequest httpServletRequest = (HttpServletRequest) EasyMock.createMock(HttpServletRequest.class);
Map<String, String[]> map2 = new HashMap<>();
for (String key:map.keySet() ) {
// String[] values=
map2.put(key,map.get(key).toString().split(""));
EasyMock.expect(httpServletRequest.getParameter(key)).andReturn(map.get(key).toString());
}
// EasyMock.expect(httpServletRequest.getParameterMap()).andReturn(map2);
EasyMock.expect(httpServletRequest.getParameter("2123")).andReturn("123");
HttpSession session = EasyMock.createStrictMock(HttpSession.class);
//session管理
EasyMock.expect(httpServletRequest.getParameter("f_weaver_belongto_userid")).andReturn("26347");
EasyMock.expect(httpServletRequest.getParameter("f_weaver_belongto_usertype")).andReturn("0");
EasyMock.expect(session.getAttribute("weaver_user@bean")).andReturn(new User(26347));
EasyMock.expect(httpServletRequest.getSession(true)).andStubReturn(session);
EasyMock.replay(httpServletRequest, session);
return httpServletRequest;
}
public HttpServletRequest CreateHttpServletworkflowtodu(Map<String,Object> map,Map<String,String> headmap){
HttpServletRequest httpServletRequest = (HttpServletRequest) EasyMock.createMock(HttpServletRequest.class);
Map<String, String> map2 = new HashMap<>();
for (String key:map.keySet() ) {
// String[] values=
EasyMock.expect(httpServletRequest.getParameter(key)).andReturn(map.get(key).toString());
}
for (String key:headmap.keySet() ) {
// String[] values=
EasyMock.expect(httpServletRequest.getHeader(key)).andReturn(headmap.get(key).toString());
}
EasyMock.expect(httpServletRequest.getParameter("2123")).andReturn("123");
HttpSession session = EasyMock.createStrictMock(HttpSession.class);
//session管理
EasyMock.expect(httpServletRequest.getParameter("f_weaver_belongto_userid")).andReturn("26347");
EasyMock.expect(httpServletRequest.getParameter("f_weaver_belongto_usertype")).andReturn("0");
EasyMock.expect(session.getAttribute("weaver_user@bean")).andReturn(new User(26347));
EasyMock.expect(httpServletRequest.getSession(true)).andStubReturn(session);
EasyMock.replay(httpServletRequest, session);
return httpServletRequest;
}
public String getUrl(){
String value= this.getClass().getResource("/").getPath();
if(value.length()>1){
return value.substring(1,value.length()-1);
}
return value;
}
public String loadjson(String path) {
path=getUrl()+path;
String str = "";
try {
File file = new File(path);// 定义一个file对象用来初始化FileReader
FileReader reader = new FileReader(file);// 定义一个fileReader对象用来初始化BufferedReader
BufferedReader bReader = new BufferedReader(reader);// new一个BufferedReader对象将文件内容读取到缓存
StringBuilder sb = new StringBuilder();// 定义一个字符串缓存,将字符串存放缓存中
String s = "";
while ((s = bReader.readLine()) != null) {// 逐行读取文件内容,不读取换行符和末尾的空格
sb.append(s + "\n");// 将读取的字符串添加换行符后累加存放在缓存中
System.out.println(s);
}
bReader.close();
str = sb.toString();
return str;
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
}

@ -25,72 +25,79 @@ public class TestGetClockInPoint {
public static void main(String[] args) {
List<Map<String,Object>> schedulingList = Lists.newArrayList();
schedulingList.add(new HashMap(){{
put("edsc","9.50");
put("edsc","8");
put("bdlx","0");
put("jsdk","1");
put("tqdkfzs","720");
put("sfkt","1");
put("fgsjd","15:10");
put("jsdk","0");
put("tqdkfzs","120");
put("sfxx","0");
put("edxss","3.00");
put("sfkt","0");
put("dtjssj","12:00");
put("dtsfdx","0");
put("dtzddxfz","30");
put("btgz","0");
put("zddxfz","30");
put("bcxx","25");
put("bcxx","1");
put("dxhs","5");
put("bcsdxx","09:00-13:00|13:00-18:30");
put("bcsdxx","09:00-12:00|13:00-18:00");
put("sfdx","0");
put("dtkssj","09:00");
put("thdkfzs","720");
put("ksdk","0");
put("rqlx","11");
put("dtdxhs","5");
put("zgzsc","8.00");
put("thdkfzs","800");
put("ksdk","1");
put("rqlx","0");
}});
schedulingList.add(new HashMap(){{
put("edsc","9.50");
put("edsc","8");
put("bdlx","1");
put("fgsjd","15:10");
put("jsdk","0");
put("tqdkfzs","120");
put("sfkt","1");
put("tqdkfzs","");
put("sfxx","0");
put("edxss","3.00");
put("sfkt","0");
put("dtjssj","13:00");
put("dtsfdx","0");
put("dtzddxfz","30");
put("btgz","0");
put("zddxfz","30");
put("bcxx","25");
put("bcxx","1");
put("dxhs","5");
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","1");
put("dtkssj","12:00");
put("thdkfzs","120");
put("bcsdxx","09:00-12:00|13:00-18:00");
put("sfdx","0");
put("dtkssj","09:00");
put("dtdxhs","5");
put("zgzsc","8.00");
put("thdkfzs","");
put("ksdk","0");
put("rqlx","11");
put("rqlx","0");
}});
schedulingList.add(new HashMap(){{
put("edsc","9.50");
put("bdlx","0");
put("jsdk","0");
put("tqdkfzs","720");
put("sfkt","1");
put("edsc","8");
put("bdlx","1");
put("fgsjd","15:10");
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("zddxfz","30");
put("bcxx","25");
put("bcxx","1");
put("dxhs","5");
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","1");
put("bcsdxx","09:00-12:00|13:00-18:00");
put("sfdx","0");
put("dtkssj","13:00");
put("thdkfzs","720");
put("ksdk","1");
put("rqlx","11");
}});
schedulingList.add(new HashMap(){{
put("edsc","9.50");
put("bdlx","1");
put("jsdk","0");
put("tqdkfzs","120");
put("sfkt","1");
put("dtjssj","19: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","18:00");
put("thdkfzs","120");
put("dtdxhs","5");
put("zgzsc","8.00");
put("thdkfzs","800");
put("ksdk","0");
put("rqlx","11");
put("rqlx","0");
}});
// schedulingList.add(new HashMap(){{
// put("edsc","9.50");
@ -112,18 +119,18 @@ public class TestGetClockInPoint {
List<Map<String,Object>> dataList = Lists.newArrayList();
// dataList.add(new HashMap(){{
// put("signtime","11:20:00");
// put("id","48");
// put("userid","53");
// put("signdate","2023-11-12");
// }});
// dataList.add(new HashMap(){{
// put("signtime","13:20:00");
// put("id","48");
// put("userid","53");
// put("signdate","2023-11-12");
// }});
dataList.add(new HashMap(){{
put("signtime","09:42:00");
put("id","48");
put("userid","81");
put("signdate","2024-04-10");
}});
dataList.add(new HashMap(){{
put("signtime","20:46:00");
put("id","48");
put("userid","81");
put("signdate","2024-04-10");
}});
// dataList.add(new HashMap(){{
// put("signtime","18:29:00");
// put("id","48");
@ -157,297 +164,16 @@ public class TestGetClockInPoint {
// put("ksdk","0");
// put("rqlx","11");
// }});
param.put("analysisDate","2023-11-12");
param.put("analysisDate","2024-04-10");
param.put("scheduleResult",schedulingList);
param.put("clockInTimeList",dataList);
param.put("askForLeaveAndEvctionSchedule",askForLeaveAndEvctionSchedule);
// 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");
// Map<String,Object> clock = getNeedRecordClockInTime(collect);
// System.out.println(clock);
}
public static List<Map<String, Map<String,Object>>> getClockInPoint(String analysisDate, List<Map<String, Object>> needClockInSchedule, List<Map<String, Object>> clockInTimeList){
List<Map<String,Map<String,Object>>> clcokInTimeData = Lists.newArrayList();
for (Map<String, Object> needClockIn :needClockInSchedule){
if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("ksdk"))){
String dtkssj = analysisDate+" "+needClockIn.get("dtkssj");
String dtjssj = analysisDate+" "+needClockIn.get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+needClockIn.get("dtjssj");
}
int tqdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("tqdkfzs")));
Map<String,Map<String,Object>> ksdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtkssj,clockInTimeList);
String timeType = ClockPointEnum.EMPTY.getKey();
Map<String,Map<String,Object>> clcokInTimeMap = Maps.newHashMap();
if (ksdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null){
timeType=ClockPointEnum.EQUAL.getKey();
}
if (ClockPointEnum.EMPTY.getKey().equals(timeType) && ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null){
String clockInTime = ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") +" "+ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.beforeMinutes(dtkssj,tqdkfzs))) >=0){
//打卡时间大于等于最早打卡时间
timeType=ClockPointEnum.BEFORE.getKey();
}
}
if (ClockPointEnum.EMPTY.getKey().equals(timeType) && ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null){
String clockInTime = ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") +" "+ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(dtjssj)) < 0){
//打卡时间小于结束时间
timeType=ClockPointEnum.AFTER.getKey();
}
}
clcokInTimeMap.put(dtkssj+"|"+ClockPointEnum.START.getKey()+"|"+timeType,ksdkNearestClcokInTime.get(timeType));
clcokInTimeData.add(clcokInTimeMap);
}
if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("jsdk"))){
String dtkssj = analysisDate+" "+needClockIn.get("dtkssj");
String dtjssj = analysisDate+" "+needClockIn.get("dtjssj");
int thdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("thdkfzs")));
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+needClockIn.get("dtjssj");
}
Map<String,Map<String,Object>> jsdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtjssj,clockInTimeList);
String timeType = ClockPointEnum.EMPTY.getKey();
Map<String,Map<String,Object>> clcokInTimeMap = Maps.newHashMap();
if (jsdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null){
timeType=ClockPointEnum.EQUAL.getKey();
}
if (ClockPointEnum.EMPTY.getKey().equals(timeType) && jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null){
String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") +" "+jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.AfterMinutes(dtjssj,thdkfzs))) <=0){
timeType=ClockPointEnum.AFTER.getKey();
}
}
if (ClockPointEnum.EMPTY.getKey().equals(timeType) && jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null){
String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") +" "+jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(dtkssj)) >0){
timeType=ClockPointEnum.BEFORE.getKey();
}
}
clcokInTimeMap.put(dtjssj+"|"+ClockPointEnum.END.getKey()+"|"+timeType,jsdkNearestClcokInTime.get(timeType));
clcokInTimeData.add(clcokInTimeMap);
}
}
clcokInTimeData = clcokInTimeData.stream().sorted(Comparator.comparing(e->{
//卡点
String point = "";
//当天打卡数据
for (Map.Entry<String,Map<String,Object>> entry :e.entrySet()){
point = entry.getKey();
}
return DateUtil.getTime(point.split("\\|")[0]).toInstant(ZoneOffset.of("+8")).toEpochMilli();
})).collect(Collectors.toList());
//当弹性上下班时
if (needClockInSchedule.size() > 0){
//是否弹性
String sfdx = Util.null2String(needClockInSchedule.get(0).get("sfdx"));
//最大弹性分钟
int zddxfz = Integer.valueOf(Util.null2String(needClockInSchedule.get(0).get("zddxfz")));
//弹性核算
int dxhs = Integer.valueOf(Util.null2String(needClockInSchedule.get(0).get("dxhs")));
if (CheckBoxEnum.CHECKED.getKey().equals(sfdx)){
//上下班弹性
List<Map<String, Object>> needClockInStartList = needClockInSchedule.stream().filter(e -> ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx")) && CheckBoxEnum.CHECKED.getKey().equals(e.get("ksdk"))).collect(Collectors.toList());
List<Map<String, Object>> needClockInEndList = needClockInSchedule.stream().filter(e -> ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx")) && CheckBoxEnum.CHECKED.getKey().equals(e.get("jsdk"))).collect(Collectors.toList());
if (needClockInStartList.size()>0 && needClockInEndList.size()>0){
Map<String, Object> ksdkMap = needClockInStartList.get(0);
String kssjStart = analysisDate + " " +Util.null2String(ksdkMap.get("dtkssj"));
String jssjStart = analysisDate +" "+Util.null2String(ksdkMap.get("dtjssj"));
Map<String, Object> jsdkMap = needClockInEndList.get(needClockInEndList.size()-1);
int thdkfzs = Integer.valueOf(Util.null2String(jsdkMap.get("thdkfzs")));
String kssjEnd = analysisDate + " " +Util.null2String(jsdkMap.get("dtkssj"));
String jssjEnd = analysisDate +" "+Util.null2String(jsdkMap.get("dtjssj"));
if (ksdkMap != jsdkMap){
if (DateUtil.getTime(kssjStart).compareTo(DateUtil.getTime(jssjStart)) > 0){
kssjStart = DateUtil.beforeDay(analysisDate,1)+" "+Util.null2String(ksdkMap.get("dtkssj"));
}
if (DateUtil.getTime(kssjEnd).compareTo(DateUtil.getTime(jssjEnd)) > 0){
jssjEnd = DateUtil.AfterDay(analysisDate,1)+" "+Util.null2String(jsdkMap.get("dtjssj"));
}
}else {
jssjEnd = DateUtil.AfterDay(analysisDate,1)+" "+Util.null2String(jsdkMap.get("dtjssj"));
}
//弹性上班卡
String flexibleWork = "";
for (int i=0;i<clcokInTimeData.size();i++){
Map<String,Map<String,Object>> clcokInTimeMap = clcokInTimeData.get(i);
//卡点
String point = "";
//当天打卡数据
Map<String,Object> clcokInTime = null;
for (Map.Entry<String,Map<String,Object>> entry :clcokInTimeMap.entrySet()){
point = entry.getKey();
clcokInTime = entry.getValue();
}
//需要计算的班次打卡时间点
String pointTime = point.split("\\|")[0];
//start开始打卡时间点end结束打卡时间点
String pointType = point.split("\\|")[1];
//empty:漏卡equal:打卡时间和班次时间相等before打卡时间在班次时间之前after打卡时间在班次时间之后
String timeType = point.split("\\|")[2];
if (pointTime.equals(kssjStart) && ClockPointEnum.START.getKey().equals(pointType) && clcokInTime != null){
String signTime = clcokInTime.get("signdate")+" "+clcokInTime.get("signtime");
//该卡点是弹性开始时间
if (ClockPointEnum.BEFORE.getKey().equals(timeType)){
int betWeenTime = DateUtil.getBetWeenMinutes(signTime,kssjStart);
String newPonit = point;
if (betWeenTime <= zddxfz){
betWeenTime = Double.valueOf(Utils.getItemdurationDown(5.0, AccountingUnitEnum.MINUTES.getKey(),betWeenTime,AccountingUnitEnum.MINUTES)).intValue();
flexibleWork = DateUtil.beforeMinutes(kssjStart,betWeenTime);
newPonit = pointTime+"|"+pointType+"|"+ClockPointEnum.EQUAL.getKey()+"|"+flexibleWork;
}else if (betWeenTime > zddxfz){
newPonit = point +"|"+DateUtil.beforeMinutes(kssjStart,zddxfz);
flexibleWork = DateUtil.beforeMinutes(kssjStart,zddxfz);
}
clcokInTimeMap.remove(point);
clcokInTimeMap.put(newPonit,clcokInTime);
}else if (ClockPointEnum.AFTER.getKey().equals(timeType)){
//迟到
String newPonit = point;
int betWeenTime = DateUtil.getBetWeenMinutes(kssjStart,signTime);
if (betWeenTime <= zddxfz){
betWeenTime = Double.valueOf(Utils.getItemduration(5.0, AccountingUnitEnum.MINUTES.getKey(),betWeenTime,AccountingUnitEnum.MINUTES)).intValue();
flexibleWork = DateUtil.AfterMinutes(kssjStart,betWeenTime);
newPonit = pointTime+"|"+pointType+"|"+ClockPointEnum.EQUAL.getKey()+"|"+flexibleWork;
}else if (betWeenTime > zddxfz){
newPonit = point +"|"+DateUtil.AfterMinutes(kssjStart,zddxfz);
flexibleWork = DateUtil.AfterMinutes(kssjStart,zddxfz);
}
clcokInTimeMap.remove(point);
clcokInTimeMap.put(newPonit,clcokInTime);
}
}else if (pointTime.equals(jssjEnd) && ClockPointEnum.END.getKey().equals(pointType) && clcokInTime != null){
//该卡点是弹性下班点
int betweenToWorkTime = DateUtil.getBetWeenMinutes(flexibleWork,kssjStart);
//弹性下班时间点
String flexibleOffWork = jssjEnd;
if (betweenToWorkTime >=0){
flexibleOffWork = DateUtil.beforeMinutes(flexibleOffWork,Math.abs(betweenToWorkTime));
}else if (betweenToWorkTime < 0){
flexibleOffWork = DateUtil.AfterMinutes(flexibleOffWork,Math.abs(betweenToWorkTime));
}
//根据弹性下班时间点重新计算
Map<String,Map<String,Object>> jsdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(flexibleOffWork,clockInTimeList);
String newtimeType = ClockPointEnum.EMPTY.getKey();
if (jsdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null){
newtimeType=ClockPointEnum.EQUAL.getKey();
}
if (ClockPointEnum.EMPTY.getKey().equals(newtimeType) && jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null){
String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") +" "+jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.AfterMinutes(flexibleOffWork,thdkfzs))) <=0){
newtimeType=ClockPointEnum.AFTER.getKey();
}
}
if (ClockPointEnum.EMPTY.getKey().equals(newtimeType) && jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null){
String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") +" "+jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(kssjEnd)) >0){
newtimeType=ClockPointEnum.BEFORE.getKey();
}
}
String newPonit = jssjEnd+"|"+ClockPointEnum.END.getKey()+"|"+newtimeType+"|"+flexibleOffWork;
clcokInTimeMap.remove(point);
clcokInTimeMap.put(newPonit,jsdkNearestClcokInTime.get(newtimeType));
}
}
}
}
}
//当有2笔需要打卡时可能会有打卡歧义的情况歧义情况取2个时间点的中间值当打卡时间小于中间值归属前一个打卡大于则相反
if (clcokInTimeData.size() >1){
for (int i=0;i<clcokInTimeData.size()-1;i++){
Map<String,Map<String,Object>> beforeClcokInTimeData = clcokInTimeData.get(i);
Map<String,Map<String,Object>> afterClcokInTimeData = clcokInTimeData.get(i+1);
Map<String,Object> beforeClcokInTimeMap = null;
String beforeClcokInTime = "";
String afterClcokInTime = "";
Map<String,Object> afterClcokInTimeMap = null;
for (Map.Entry<String,Map<String,Object>> beforeEntry :beforeClcokInTimeData.entrySet()){
beforeClcokInTimeMap = beforeEntry.getValue();
beforeClcokInTime = beforeEntry.getKey();
}
for (Map.Entry<String,Map<String,Object>> afterEntry :afterClcokInTimeData.entrySet()){
afterClcokInTimeMap = afterEntry.getValue();
afterClcokInTime = afterEntry.getKey();
}
//重复
if (beforeClcokInTimeMap != null && beforeClcokInTimeMap == afterClcokInTimeMap ){
String beforeTime = beforeClcokInTime.split("\\|")[0];
String afterTime = afterClcokInTime.split("\\|")[0];
long betWeenMinutes = DateUtil.getBetWeenMinutes(beforeTime,afterTime);
String middileTime = DateUtil.AfterMinutes(beforeTime,betWeenMinutes/2);
String signdateTime = beforeClcokInTimeMap.get("signdate") +" "+beforeClcokInTimeMap.get("signtime");
if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) <=0){
//该打卡归属前一个打卡点
afterClcokInTimeData.put(afterClcokInTime,null);
}else if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) >0){
//该打卡归属后一个打卡点
beforeClcokInTimeData.put(beforeClcokInTime,null);
}
}
}
}
return clcokInTimeData;
}
public static Map<String, Object> getNeedRecordClockInTime(List<Map<String,Map<String,Object>>> clcokInTimeData) {
Map<String, Object> resultMap = Maps.newHashMap();
int inIndex = 1;
int outIndex = 1;
for (Map<String,Map<String,Object>> clcokInTimeMap : clcokInTimeData){
//卡点
String point = "";
//当天打卡数据
Map<String,Object> clcokInTime = null;
for (Map.Entry<String,Map<String,Object>> entry :clcokInTimeMap.entrySet()){
point = entry.getKey();
clcokInTime = entry.getValue();
}
//需要计算的班次打卡时间点
String pointTime = point.split("\\|")[0];
//start开始打卡时间点end结束打卡时间点
String pointType = point.split("\\|")[1];
//empty:漏卡equal:打卡时间和班次时间相等before打卡时间在班次时间之前after打卡时间在班次时间之后
String timeType = point.split("\\|")[2];
if (ClockPointEnum.START.getKey().equals(pointType)){
//开始时间打卡
String key = "j"+inIndex;
if (!ClockPointEnum.EMPTY.getKey().equals(timeType) && clcokInTimeData != null){
String value = clcokInTime.get("signdate")+" "+clcokInTime.get("signtime");
resultMap.put(key,value);
}
inIndex++;
}else if (ClockPointEnum.END.getKey().equals(pointType)){
//结束时间打卡
String key = "c"+outIndex;
if (!ClockPointEnum.EMPTY.getKey().equals(timeType) && clcokInTimeData != null){
String value = clcokInTime.get("signdate")+" "+clcokInTime.get("signtime");
resultMap.put(key,value);
}
outIndex++;
}
}
return resultMap;
}
}

@ -54,9 +54,10 @@ public class TestObj {
//
//
// System.out.println(DateUtil.getBetWeenMinutes("2023-12-01 10:14","2023-12-01 12:25"));
BigDecimal bigDecimal1 = new BigDecimal(100);
BigDecimal bigDecimal2 = new BigDecimal(60);
System.out.println(bigDecimal1.divide(bigDecimal2,2,RoundingMode.HALF_UP).doubleValue());
// 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.getItemdurationDown(30, AccountingUnitEnum.MINUTES.getKey(), 35,AccountingUnitEnum.MINUTES));
}

@ -1,13 +1,18 @@
package shuju;
import com.engine.common.util.DateUtil;
import com.engine.common.util.Utils;
import com.google.common.collect.Lists;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
System.out.println(DateUtil.getBetWeenMinutes("2024-04-10 09:06:00","2024-04-10 18:04:00"));
System.out.println(Utils.subtract(1,2));
}
}

Loading…
Cancel
Save