Merge remote-tracking branch 'origin/main'

zm_dev
sy 1 year ago
commit 531702b96f

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

@ -10,72 +10,46 @@
</component>
<component name="ChangeListManager">
<list default="true" id="baeb3dfb-5097-46c5-933e-6d1dab18b815" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/beforlog.java" afterDir="false" />
<change 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/GetAskForLeaveCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.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/cmd/GetClockInTimeListCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeListCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetEvectionCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetEvectionCmd.java" 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/job/AttendanceAnalysisJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/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/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$/src/com/engine/common/util/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/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/GetAskForLeaveCmd$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.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/cmd/GetClockInTimeListCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeListCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetEvectionCmd$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetEvectionCmd$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetEvectionCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetEvectionCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/EvectionService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/EvectionService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class" beforeDir="false" />
<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" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestObj.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestObj.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestObj.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestObj.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -118,7 +92,7 @@
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File" value="PLAIN_TEXT" />
<property name="last_directory_selection" value="$PROJECT_DIR$/src/com/engine/kq" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../../easyentry" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../上海考勤产品/考勤分支代码" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" />
@ -140,11 +114,11 @@
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\jucailin\cmd\calendar" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="com.engine.attendance.attendanceanalysis.cmd" />
<recent name="TestAttendanceAllowance" />
<recent name="ComprehensiveWorkingHourServiceImpl" />
<recent name="" />
<recent name="shuju" />
<recent name="com.engine.attendance.attendanceanalysis.service.impl" />
</key>
</component>
<component name="RunAnythingCache">
@ -615,7 +589,13 @@
<workItem from="1712899728990" duration="7469000" />
<workItem from="1713158776480" duration="17419000" />
<workItem from="1713230394234" duration="7819000" />
<workItem from="1713245093631" duration="3537000" />
<workItem from="1713245093631" duration="18383000" />
<workItem from="1713316973682" duration="6367000" />
<workItem from="1713331602706" duration="17751000" />
<workItem from="1713403621962" duration="26362000" />
<workItem from="1713490296383" duration="16659000" />
<workItem from="1713764031764" duration="21292000" />
<workItem from="1713837556859" duration="29446000" />
</task>
<servers />
</component>
@ -654,29 +634,12 @@
<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="JUnit">
<watch expression="clcokInTimeData" />
</configuration>
<configuration name="Application">
<watch expression="((java.util.ArrayList)clcokInTimeData).get(1)" custom="java.util.ArrayList" />
<watch expression="afterClcokInTimeData" />
@ -686,4 +649,9 @@
</configuration>
</watches-manager>
</component>
<component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/hrm_attendance$Test_testAnalysis.ic" NAME="Test.testAnalysis Coverage Results" MODIFIED="1713790744904" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">
<FILTER>TestAttendanceAllowance.*</FILTER>
</SUITE>
</component>
</project>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,354 @@
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 441936 bytes for Chunk::new
# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Use 64 bit Java on a 64 bit OS
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (allocation.cpp:390), pid=11704, tid=11940
#
# JRE version: Java(TM) SE Runtime Environment (8.0_40-b25) (build 1.8.0_40-b25)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.40-b25 mixed mode windows-amd64 compressed oops)
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
--------------- T H R E A D ---------------
Current thread (0x000000001f66b800): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=11940, stack(0x00000000205e0000,0x00000000206e0000)]
Stack: [0x00000000205e0000,0x00000000206e0000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x32b47a]
V [jvm.dll+0x2797f3]
V [jvm.dll+0x27a489]
V [jvm.dll+0x2717a5]
V [jvm.dll+0xcb9a2]
V [jvm.dll+0xcbe6c]
V [jvm.dll+0x49294c]
V [jvm.dll+0x45f77f]
V [jvm.dll+0x46a73b]
V [jvm.dll+0x46cd52]
V [jvm.dll+0x4500d2]
V [jvm.dll+0xa4312]
V [jvm.dll+0xa4c4f]
V [jvm.dll+0x241914]
V [jvm.dll+0x29848a]
C [msvcr100.dll+0x21d9f]
C [msvcr100.dll+0x21e3b]
C [KERNEL32.DLL+0x17344]
C [ntdll.dll+0x526b1]
Current CompileTask:
C2: 3371 1605 4 org.logicalcobwebs.cglib.asm.Type::getDescriptor (214 bytes)
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x00000000216f6800 JavaThread "Prototyper" daemon [_thread_in_native, id=2756, stack(0x0000000023aa0000,0x0000000023ba0000)]
0x0000000021808800 JavaThread "HouseKeeper" daemon [_thread_blocked, id=3012, stack(0x00000000238a0000,0x00000000239a0000)]
0x00000000213f2800 JavaThread "InterceptSqlWirteLog" [_thread_blocked, id=832, stack(0x00000000237a0000,0x00000000238a0000)]
0x0000000021654800 JavaThread "zenith.jdbc.cancelTimer" daemon [_thread_blocked, id=20152, stack(0x00000000236a0000,0x00000000237a0000)]
0x0000000021651000 JavaThread "Abandoned connection cleanup thread" daemon [_thread_blocked, id=16916, stack(0x00000000235a0000,0x00000000236a0000)]
0x000000002188a800 JavaThread "Abandoned connection cleanup thread" daemon [_thread_blocked, id=1856, stack(0x0000000021cb0000,0x0000000021db0000)]
0x0000000020feb000 JavaThread "Timer-1" daemon [_thread_blocked, id=7988, stack(0x0000000022170000,0x0000000022270000)]
0x0000000020bbc000 JavaThread "mysql-cj-abandoned-connection-cleanup" daemon [_thread_blocked, id=20412, stack(0x00000000222d0000,0x00000000223d0000)]
0x000000001ffc2800 JavaThread "Timer-0" [_thread_blocked, id=12540, stack(0x0000000021e70000,0x0000000021f70000)]
0x000000001f719000 JavaThread "Service Thread" daemon [_thread_blocked, id=19436, stack(0x00000000208e0000,0x00000000209e0000)]
0x000000001f60b000 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=17412, stack(0x00000000207e0000,0x00000000208e0000)]
0x000000001f60a800 JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=13356, stack(0x00000000206e0000,0x00000000207e0000)]
=>0x000000001f66b800 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=11940, stack(0x00000000205e0000,0x00000000206e0000)]
0x000000001e568800 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=14208, stack(0x000000001ed10000,0x000000001ee10000)]
0x000000001e567000 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=17064, stack(0x000000001ec10000,0x000000001ed10000)]
0x000000001e556000 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=1784, stack(0x000000001eb10000,0x000000001ec10000)]
0x000000001cbb0000 JavaThread "Attach Listener" daemon [_thread_blocked, id=10292, stack(0x000000001ea10000,0x000000001eb10000)]
0x000000001e553800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=19896, stack(0x000000001e910000,0x000000001ea10000)]
0x0000000003402000 JavaThread "Finalizer" daemon [_thread_blocked, id=1212, stack(0x000000001e410000,0x000000001e510000)]
0x0000000003401000 JavaThread "Reference Handler" daemon [_thread_blocked, id=19280, stack(0x000000001e310000,0x000000001e410000)]
0x000000000311e000 JavaThread "main" [_thread_in_native, id=18740, stack(0x0000000002f20000,0x0000000003020000)]
Other Threads:
0x000000001cb68000 VMThread [stack: 0x000000001e210000,0x000000001e310000] [id=17944]
0x000000001f60e000 WatcherThread [stack: 0x00000000209e0000,0x0000000020ae0000] [id=19352]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap:
PSYoungGen total 75776K, used 16204K [0x000000076b800000, 0x0000000774c00000, 0x00000007c0000000)
eden space 65024K, 8% used [0x000000076b800000,0x000000076bdadab0,0x000000076f780000)
from space 10752K, 96% used [0x000000076f780000,0x00000007701a5600,0x0000000770200000)
to space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
ParOldGen total 173568K, used 59K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c280ec50,0x00000006cd180000)
Metaspace used 20086K, capacity 20458K, committed 20736K, reserved 1067008K
class space used 2155K, capacity 2271K, committed 2304K, reserved 1048576K
Card table byte_map: [0x00000000127d0000,0x0000000012fc0000] byte_map_base: 0x000000000f1bc000
Marking Bits: (ParMarkBitMap*) 0x000000005f7e4040
Begin Bits: [0x0000000013b10000, 0x0000000017a70000)
End Bits: [0x0000000017a70000, 0x000000001b9d0000)
Polling page: 0x0000000000e90000
CodeCache: size=245760Kb used=6191Kb max_used=6191Kb free=239568Kb
bounds [0x0000000003410000, 0x0000000003a30000, 0x0000000012410000]
total_blobs=2056 nmethods=1617 adapters=359
compilation: enabled
Compilation events (10 events):
Event: 3.348 Thread 0x000000001f60a800 nmethod 1612 0x0000000003a14f50 code [0x0000000003a150c0, 0x0000000003a155b8]
Event: 3.348 Thread 0x000000001f60a800 1615 4 org.logicalcobwebs.cglib.asm.ByteVector::putInt (74 bytes)
Event: 3.349 Thread 0x000000001f60b000 1616 3 java.util.HashMap$KeySet::iterator (12 bytes)
Event: 3.349 Thread 0x000000001f60b000 nmethod 1616 0x0000000003a16e50 code [0x0000000003a16fc0, 0x0000000003a17248]
Event: 3.350 Thread 0x000000001f60a800 nmethod 1615 0x0000000003a1d050 code [0x0000000003a1d1a0, 0x0000000003a1d3e8]
Event: 3.350 Thread 0x000000001f60a800 1613 4 org.logicalcobwebs.cglib.core.CodeEmitter::emit_invoke (50 bytes)
Event: 3.350 Thread 0x000000001f60b000 1618 3 org.logicalcobwebs.cglib.core.CodeEmitter::unbox (132 bytes)
Event: 3.351 Thread 0x000000001f60b000 nmethod 1618 0x0000000003a16210 code [0x0000000003a16400, 0x0000000003a16ba8]
Event: 3.352 Thread 0x000000001f60b000 1620 3 org.logicalcobwebs.cglib.asm.Type::getMethodDescriptor (53 bytes)
Event: 3.352 Thread 0x000000001f60b000 nmethod 1620 0x0000000003a208d0 code [0x0000000003a20b00, 0x0000000003a21a08]
GC Heap History (10 events):
Event: 0.888 GC heap before
{Heap before GC invocations=1 (full 0):
PSYoungGen total 75776K, used 65024K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 100% used [0x000000076b800000,0x000000076f780000,0x000000076f780000)
from space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
to space 10752K, 0% used [0x000000076f780000,0x000000076f780000,0x0000000770200000)
ParOldGen total 173568K, used 0K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2800000,0x00000006cd180000)
Metaspace used 4606K, capacity 5086K, committed 5248K, reserved 1056768K
class space used 505K, capacity 530K, committed 640K, reserved 1048576K
Event: 0.892 GC heap after
Heap after GC invocations=1 (full 0):
PSYoungGen total 75776K, used 3503K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 0% used [0x000000076b800000,0x000000076b800000,0x000000076f780000)
from space 10752K, 32% used [0x000000076f780000,0x000000076faebec0,0x0000000770200000)
to space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
ParOldGen total 173568K, used 8K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2802000,0x00000006cd180000)
Metaspace used 4606K, capacity 5086K, committed 5248K, reserved 1056768K
class space used 505K, capacity 530K, committed 640K, reserved 1048576K
}
Event: 1.668 GC heap before
{Heap before GC invocations=2 (full 0):
PSYoungGen total 75776K, used 68527K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 100% used [0x000000076b800000,0x000000076f780000,0x000000076f780000)
from space 10752K, 32% used [0x000000076f780000,0x000000076faebec0,0x0000000770200000)
to space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
ParOldGen total 173568K, used 8K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2802000,0x00000006cd180000)
Metaspace used 12152K, capacity 12360K, committed 12416K, reserved 1060864K
class space used 1299K, capacity 1376K, committed 1408K, reserved 1048576K
Event: 1.672 GC heap after
Heap after GC invocations=2 (full 0):
PSYoungGen total 75776K, used 6320K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 0% used [0x000000076b800000,0x000000076b800000,0x000000076f780000)
from space 10752K, 58% used [0x0000000770200000,0x000000077082c0e0,0x0000000770c80000)
to space 10752K, 0% used [0x000000076f780000,0x000000076f780000,0x0000000770200000)
ParOldGen total 173568K, used 16K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2804000,0x00000006cd180000)
Metaspace used 12152K, capacity 12360K, committed 12416K, reserved 1060864K
class space used 1299K, capacity 1376K, committed 1408K, reserved 1048576K
}
Event: 2.065 GC heap before
{Heap before GC invocations=3 (full 0):
PSYoungGen total 75776K, used 71344K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 100% used [0x000000076b800000,0x000000076f780000,0x000000076f780000)
from space 10752K, 58% used [0x0000000770200000,0x000000077082c0e0,0x0000000770c80000)
to space 10752K, 0% used [0x000000076f780000,0x000000076f780000,0x0000000770200000)
ParOldGen total 173568K, used 16K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2804000,0x00000006cd180000)
Metaspace used 15243K, capacity 15474K, committed 15616K, reserved 1062912K
class space used 1643K, capacity 1705K, committed 1792K, reserved 1048576K
Event: 2.071 GC heap after
Heap after GC invocations=3 (full 0):
PSYoungGen total 75776K, used 8195K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 0% used [0x000000076b800000,0x000000076b800000,0x000000076f780000)
from space 10752K, 76% used [0x000000076f780000,0x000000076ff80ed8,0x0000000770200000)
to space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
ParOldGen total 173568K, used 43K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c280ac50,0x00000006cd180000)
Metaspace used 15243K, capacity 15474K, committed 15616K, reserved 1062912K
class space used 1643K, capacity 1705K, committed 1792K, reserved 1048576K
}
Event: 2.349 GC heap before
{Heap before GC invocations=4 (full 0):
PSYoungGen total 75776K, used 73219K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 100% used [0x000000076b800000,0x000000076f780000,0x000000076f780000)
from space 10752K, 76% used [0x000000076f780000,0x000000076ff80ed8,0x0000000770200000)
to space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
ParOldGen total 173568K, used 43K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c280ac50,0x00000006cd180000)
Metaspace used 17833K, capacity 18140K, committed 18432K, reserved 1064960K
class space used 1920K, capacity 1996K, committed 2048K, reserved 1048576K
Event: 2.355 GC heap after
Heap after GC invocations=4 (full 0):
PSYoungGen total 75776K, used 9314K [0x000000076b800000, 0x0000000774c00000, 0x00000007c0000000)
eden space 65024K, 0% used [0x000000076b800000,0x000000076b800000,0x000000076f780000)
from space 10752K, 86% used [0x0000000770200000,0x0000000770b18ac8,0x0000000770c80000)
to space 10752K, 0% used [0x000000076f780000,0x000000076f780000,0x0000000770200000)
ParOldGen total 173568K, used 51K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c280cc50,0x00000006cd180000)
Metaspace used 17833K, capacity 18140K, committed 18432K, reserved 1064960K
class space used 1920K, capacity 1996K, committed 2048K, reserved 1048576K
}
Event: 3.322 GC heap before
{Heap before GC invocations=5 (full 0):
PSYoungGen total 75776K, used 74338K [0x000000076b800000, 0x0000000774c00000, 0x00000007c0000000)
eden space 65024K, 100% used [0x000000076b800000,0x000000076f780000,0x000000076f780000)
from space 10752K, 86% used [0x0000000770200000,0x0000000770b18ac8,0x0000000770c80000)
to space 10752K, 0% used [0x000000076f780000,0x000000076f780000,0x0000000770200000)
ParOldGen total 173568K, used 51K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c280cc50,0x00000006cd180000)
Metaspace used 19876K, capacity 20234K, committed 20480K, reserved 1067008K
class space used 2146K, capacity 2239K, committed 2304K, reserved 1048576K
Event: 3.330 GC heap after
Heap after GC invocations=5 (full 0):
PSYoungGen total 75776K, used 10389K [0x000000076b800000, 0x0000000774c00000, 0x00000007c0000000)
eden space 65024K, 0% used [0x000000076b800000,0x000000076b800000,0x000000076f780000)
from space 10752K, 96% used [0x000000076f780000,0x00000007701a5600,0x0000000770200000)
to space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
ParOldGen total 173568K, used 59K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c280ec50,0x00000006cd180000)
Metaspace used 19876K, capacity 20234K, committed 20480K, reserved 1067008K
class space used 2146K, capacity 2239K, committed 2304K, reserved 1048576K
}
Deoptimization events (10 events):
Event: 3.183 Thread 0x000000000311e000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x000000000376a858 method=java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; @ 203
Event: 3.183 Thread 0x000000000311e000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x000000000376a858 method=java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; @ 203
Event: 3.183 Thread 0x000000000311e000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x000000000376a858 method=java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; @ 203
Event: 3.183 Thread 0x000000000311e000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x000000000376a858 method=java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; @ 203
Event: 3.238 Thread 0x000000000311e000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000039c3f3c method=org.logicalcobwebs.cglib.asm.Type.getDescriptor(Ljava/lang/StringBuffer;Ljava/lang/Class;)V @ 127
Event: 3.310 Thread 0x000000000311e000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000036f91d0 method=java.lang.String.regionMatches(ZILjava/lang/String;II)Z @ 123
Event: 3.310 Thread 0x000000000311e000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000036ca8a4 method=java.lang.CharacterDataLatin1.isWhitespace(I)Z @ 14
Event: 3.321 Thread 0x000000000311e000 Uncommon trap: reason=range_check action=make_not_entrant pc=0x0000000003980c10 method=org.logicalcobwebs.cglib.asm.Type.getType([CI)Lorg/logicalcobwebs/cglib/asm/Type; @ 162
Event: 3.335 Thread 0x000000000311e000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003985f50 method=org.logicalcobwebs.cglib.asm.Item.isEqualTo(Lorg/logicalcobwebs/cglib/asm/Item;)Z @ 8
Event: 3.337 Thread 0x000000000311e000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003987ff8 method=org.logicalcobwebs.cglib.asm.Item.isEqualTo(Lorg/logicalcobwebs/cglib/asm/Item;)Z @ 8
Internal exceptions (10 events):
Event: 2.115 Thread 0x000000000311e000 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c1f6288) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 2.115 Thread 0x000000000311e000 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c1f6760) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 2.116 Thread 0x000000000311e000 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c2539f8) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 2.116 Thread 0x000000000311e000 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c253ed0) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 2.117 Thread 0x000000000311e000 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c2b7808) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 2.117 Thread 0x000000000311e000 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c2b7ce0) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 2.604 Thread 0x00000000216f6800 Implicit null exception at 0x00000000035eb499 to 0x00000000035eb8d5
Event: 3.354 Thread 0x000000000311e000 Exception <a 'java/lang/OutOfMemoryError': (class: com/mysql/cj/Query$$EnhancerByProxool$$b20f664f$$FastClassByProxool$$ecb2eae4, method: invoke signature: (ILjava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) > (0x000000076bd4d9c8) thrown at [D:\re\‹<§Ô
@
Event: 3.354 Thread 0x000000000311e000 Exception <a 'java/lang/OutOfMemoryError'> (0x000000076bd4d9c8) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\oops\instanceKlass.cpp, line 938]
Event: 3.354 Thread 0x000000000311e000 Exception <a 'java/lang/NullPointerException'> (0x000000076bd4de98) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\interpreter\linkResolver.cpp, line 1280]
Events (10 events):
Event: 3.354 Thread 0x000000000311e000 DEOPT PACKING pc=0x00000000035c73dc sp=0x000000000301ab30
Event: 3.354 Thread 0x000000000311e000 DEOPT UNPACKING pc=0x000000000345787f sp=0x000000000301a950 mode 1
Event: 3.354 loading class weaver/monitor/BaseMonitor
Event: 3.354 loading class weaver/monitor/BaseMonitor done
Event: 3.354 Thread 0x000000000311e000 DEOPT PACKING pc=0x000000000361b1c9 sp=0x00000000030183d0
Event: 3.354 Thread 0x000000000311e000 DEOPT UNPACKING pc=0x000000000345787f sp=0x0000000003018120 mode 1
Event: 3.354 Thread 0x000000000311e000 DEOPT PACKING pc=0x00000000035c7644 sp=0x0000000003018450
Event: 3.354 Thread 0x000000000311e000 DEOPT UNPACKING pc=0x000000000345787f sp=0x0000000003018270 mode 1
Event: 3.354 Thread 0x000000000311e000 DEOPT PACKING pc=0x00000000035c73dc sp=0x00000000030185e0
Event: 3.354 Thread 0x000000000311e000 DEOPT UNPACKING pc=0x000000000345787f sp=0x0000000003018400 mode 1
Dynamic libraries:
0x00007ff717ea0000 - 0x00007ff717ed7000 D:\soft\JDK8\bin\java.exe
0x00007ffda8030000 - 0x00007ffda8228000 C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ffda7440000 - 0x00007ffda74fd000 C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffda5ad0000 - 0x00007ffda5dc6000 C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffda6280000 - 0x00007ffda6330000 C:\WINDOWS\System32\ADVAPI32.dll
0x00007ffda6330000 - 0x00007ffda63ce000 C:\WINDOWS\System32\msvcrt.dll
0x00007ffda6720000 - 0x00007ffda67c0000 C:\WINDOWS\System32\sechost.dll
0x00007ffda67c0000 - 0x00007ffda68e3000 C:\WINDOWS\System32\RPCRT4.dll
0x00007ffda58d0000 - 0x00007ffda58f7000 C:\WINDOWS\System32\bcrypt.dll
0x00007ffda6550000 - 0x00007ffda66ef000 C:\WINDOWS\System32\USER32.dll
0x00007ffda5900000 - 0x00007ffda5922000 C:\WINDOWS\System32\win32u.dll
0x00007ffda66f0000 - 0x00007ffda671b000 C:\WINDOWS\System32\GDI32.dll
0x00007ffda5f40000 - 0x00007ffda6057000 C:\WINDOWS\System32\gdi32full.dll
0x00007ffda5a30000 - 0x00007ffda5acd000 C:\WINDOWS\System32\msvcp_win.dll
0x00007ffda5e40000 - 0x00007ffda5f40000 C:\WINDOWS\System32\ucrtbase.dll
0x00007ffd90c00000 - 0x00007ffd90e9a000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.3636_none_60b6a03d71f818d5\COMCTL32.dll
0x00007ffda6240000 - 0x00007ffda6272000 C:\WINDOWS\System32\IMM32.DLL
0x000000005f9f0000 - 0x000000005fac2000 D:\soft\JDK8\jre\bin\msvcr100.dll
0x000000005efe0000 - 0x000000005f863000 D:\soft\JDK8\jre\bin\server\jvm.dll
0x00007ffda7340000 - 0x00007ffda7348000 C:\WINDOWS\System32\PSAPI.DLL
0x00007ffd8e180000 - 0x00007ffd8e189000 C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x00007ffda6cf0000 - 0x00007ffda6d5b000 C:\WINDOWS\System32\WS2_32.dll
0x00007ffd9e350000 - 0x00007ffd9e35a000 C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ffd90ae0000 - 0x00007ffd90b07000 C:\WINDOWS\SYSTEM32\WINMM.dll
0x000000005efd0000 - 0x000000005efdf000 D:\soft\JDK8\jre\bin\verify.dll
0x000000005efa0000 - 0x000000005efc9000 D:\soft\JDK8\jre\bin\java.dll
0x000000005ebe0000 - 0x000000005ec15000 D:\soft\JDK8\jre\bin\jdwp.dll
0x000000005ebd0000 - 0x000000005ebd8000 D:\soft\JDK8\jre\bin\npt.dll
0x000000005eba0000 - 0x000000005ebc3000 D:\soft\JDK8\jre\bin\instrument.dll
0x000000005ef80000 - 0x000000005ef96000 D:\soft\JDK8\jre\bin\zip.dll
0x00007ffda7880000 - 0x00007ffda7feb000 C:\WINDOWS\System32\SHELL32.dll
0x00007ffda3720000 - 0x00007ffda3ebe000 C:\WINDOWS\SYSTEM32\windows.storage.dll
0x00007ffda7500000 - 0x00007ffda7853000 C:\WINDOWS\System32\combase.dll
0x00007ffda5110000 - 0x00007ffda513e000 C:\WINDOWS\SYSTEM32\Wldp.dll
0x00007ffda69c0000 - 0x00007ffda6a8d000 C:\WINDOWS\System32\OLEAUT32.dll
0x00007ffda6190000 - 0x00007ffda623d000 C:\WINDOWS\System32\SHCORE.dll
0x00007ffda68f0000 - 0x00007ffda6945000 C:\WINDOWS\System32\shlwapi.dll
0x00007ffda5610000 - 0x00007ffda5633000 C:\WINDOWS\SYSTEM32\profapi.dll
0x000000005eb90000 - 0x000000005eb99000 D:\soft\JDK8\jre\bin\dt_socket.dll
0x00007ffda4e70000 - 0x00007ffda4eda000 C:\WINDOWS\system32\mswsock.dll
0x000000005eb80000 - 0x000000005eb8d000 D:\soft\JDK8\jre\bin\management.dll
0x000000005ef30000 - 0x000000005ef4a000 D:\soft\JDK8\jre\bin\net.dll
0x000000005ef10000 - 0x000000005ef21000 D:\soft\JDK8\jre\bin\nio.dll
0x00007ffda0910000 - 0x00007ffda092d000 C:\WINDOWS\system32\NLAapi.dll
0x00007ffda4ae0000 - 0x00007ffda4b1b000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
0x00007ffd82990000 - 0x00007ffd829a7000 C:\WINDOWS\system32\napinsp.dll
0x00007ffd7d350000 - 0x00007ffd7d36b000 C:\WINDOWS\system32\pnrpnsp.dll
0x00007ffda4b20000 - 0x00007ffda4beb000 C:\WINDOWS\SYSTEM32\DNSAPI.dll
0x00007ffda71d0000 - 0x00007ffda71d8000 C:\WINDOWS\System32\NSI.dll
0x00007ffd7d2f0000 - 0x00007ffd7d302000 C:\WINDOWS\System32\winrnr.dll
0x00007ffd9fcb0000 - 0x00007ffd9fcc5000 C:\WINDOWS\system32\wshbth.dll
0x00007ffd9df10000 - 0x00007ffd9df1a000 C:\Windows\System32\rasadhlp.dll
0x00007ffd91960000 - 0x00007ffd919e0000 C:\WINDOWS\System32\fwpuclnt.dll
0x00007ffda32b0000 - 0x00007ffda3494000 C:\WINDOWS\SYSTEM32\dbghelp.dll
0x00007ffda5840000 - 0x00007ffda58c2000 C:\WINDOWS\System32\bcryptPrimitives.dll
VM Arguments:
jvm_args: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:57762,suspend=y,server=n -ea -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:\Users\liuliang\AppData\Local\JetBrains\IntelliJIdea2021.2\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8
java_command: com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 TestAttendanceAllowance.Test,testAnalysis
java_class_path (initial): C:\Users\liuliang\AppData\Local\Temp\classpath1042937322.jar;C:\Users\liuliang\AppData\Local\JetBrains\IntelliJIdea2021.2\captureAgent\debugger-agent.jar
Launcher Type: SUN_STANDARD
Environment Variables:
JAVA_HOME=D:\soft\JDK8
CLASSPATH=.;D:\soft\JDK8\lib\dt.jar;D:\soft\JDK8\lib\tools.jar;D:\Resin\lib\resin.jar;D:\WEAVER\Resin\lib\resin.jar
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;D:\soft\JDK8\jre\bin;D:\soft\apache-maven-3.5.0\bin;D:\soft\hadoop-2.7.7\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\dotnet\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Azure Data Studio\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;D:\nodejs\;D:\Git\cmd;C:\Program Files\Bandizip\;C:\Program Files\TortoiseSVN\bin;C:\Users\liuliang\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Azure Data Studio\bin;D:\Microsoft VS Code\bin;D:\nodejs\node_global;D:\soft\mysql-8.0.29-winx64\bin;
USERNAME=liuliang
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 13, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows 10.0 , 64 bit Build 19041 (10.0.19041.3636)
CPU:total 6 (6 cores per cpu, 1 threads per core) family 6 model 158 stepping 13, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, tsc, tscinvbit, bmi1, bmi2, adx
Memory: 4k page, physical 16611380k(4073348k free), swap 20805684k(3288k free)
vm_info: Java HotSpot(TM) 64-Bit Server VM (25.40-b25) for windows-amd64 JRE (1.8.0_40-b25), built on Feb 10 2015 21:53:57 by "java_re" with MS VC++ 10.0 (VS2010)
time: Mon Apr 22 20:48:01 2024
elapsed time: 3 seconds (0d 0h 0m 3s)

@ -0,0 +1,332 @@
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 208112 bytes for Chunk::new
# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Use 64 bit Java on a 64 bit OS
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (allocation.cpp:390), pid=18280, tid=16236
#
# JRE version: Java(TM) SE Runtime Environment (8.0_40-b25) (build 1.8.0_40-b25)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.40-b25 mixed mode windows-amd64 compressed oops)
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
--------------- T H R E A D ---------------
Current thread (0x000000001faf4800): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=16236, stack(0x0000000020a30000,0x0000000020b30000)]
Stack: [0x0000000020a30000,0x0000000020b30000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x32b47a]
V [jvm.dll+0x2797f3]
V [jvm.dll+0x27a489]
V [jvm.dll+0x2717a5]
V [jvm.dll+0xcb9a2]
V [jvm.dll+0xcbe6c]
V [jvm.dll+0x4929a7]
V [jvm.dll+0x45f77f]
V [jvm.dll+0x46a73b]
V [jvm.dll+0x46cd52]
V [jvm.dll+0x4500d2]
V [jvm.dll+0xa4312]
V [jvm.dll+0xa4c4f]
V [jvm.dll+0x241914]
V [jvm.dll+0x29848a]
C [msvcr100.dll+0x21d9f]
C [msvcr100.dll+0x21e3b]
C [KERNEL32.DLL+0x17344]
C [ntdll.dll+0x526b1]
Current CompileTask:
C2: 2663 1468 4 org.logicalcobwebs.cglib.asm.Type::getDescriptor (214 bytes)
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x0000000022aa5800 JavaThread "Prototyper" daemon [_thread_in_native, id=12140, stack(0x0000000023f80000,0x0000000024080000)]
0x0000000021c04800 JavaThread "HouseKeeper" daemon [_thread_blocked, id=11952, stack(0x0000000023c60000,0x0000000023d60000)]
0x00000000229ee000 JavaThread "InterceptSqlWirteLog" [_thread_blocked, id=3276, stack(0x0000000023b60000,0x0000000023c60000)]
0x0000000022943800 JavaThread "zenith.jdbc.cancelTimer" daemon [_thread_blocked, id=14604, stack(0x0000000023880000,0x0000000023980000)]
0x0000000021390800 JavaThread "Abandoned connection cleanup thread" daemon [_thread_blocked, id=19252, stack(0x0000000023d80000,0x0000000023e80000)]
0x0000000021b72800 JavaThread "Abandoned connection cleanup thread" daemon [_thread_blocked, id=19256, stack(0x0000000023a60000,0x0000000023b60000)]
0x000000002181e000 JavaThread "Timer-1" daemon [_thread_blocked, id=5236, stack(0x00000000225b0000,0x00000000226b0000)]
0x000000002046a000 JavaThread "mysql-cj-abandoned-connection-cleanup" daemon [_thread_blocked, id=17092, stack(0x00000000222b0000,0x00000000223b0000)]
0x0000000020385800 JavaThread "Timer-0" [_thread_blocked, id=14380, stack(0x0000000021fb0000,0x00000000220b0000)]
0x000000001fb65000 JavaThread "Service Thread" daemon [_thread_blocked, id=10244, stack(0x0000000020d30000,0x0000000020e30000)]
0x000000001faad800 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=13956, stack(0x0000000020c30000,0x0000000020d30000)]
0x000000001faac800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=3444, stack(0x0000000020b30000,0x0000000020c30000)]
=>0x000000001faf4800 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=16236, stack(0x0000000020a30000,0x0000000020b30000)]
0x000000001e9b8800 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=14596, stack(0x000000001f160000,0x000000001f260000)]
0x000000001e9b7000 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=340, stack(0x000000001f060000,0x000000001f160000)]
0x000000001e9ab800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=11840, stack(0x000000001ef60000,0x000000001f060000)]
0x000000001d000800 JavaThread "Attach Listener" daemon [_thread_blocked, id=7568, stack(0x000000001ee60000,0x000000001ef60000)]
0x000000001e9a3800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=19440, stack(0x000000001ed60000,0x000000001ee60000)]
0x0000000003808000 JavaThread "Finalizer" daemon [_thread_blocked, id=19572, stack(0x000000001e860000,0x000000001e960000)]
0x0000000003801000 JavaThread "Reference Handler" daemon [_thread_blocked, id=19812, stack(0x000000001e760000,0x000000001e860000)]
0x000000000307e000 JavaThread "main" [_thread_blocked, id=11380, stack(0x0000000003510000,0x0000000003610000)]
Other Threads:
0x000000001cfb8000 VMThread [stack: 0x000000001e660000,0x000000001e760000] [id=12408]
0x000000001fab4800 WatcherThread [stack: 0x0000000020e30000,0x0000000020f30000] [id=13848]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap:
PSYoungGen total 75776K, used 70327K [0x000000076b800000, 0x0000000774c00000, 0x00000007c0000000)
eden space 65024K, 93% used [0x000000076b800000,0x000000076f3a6a08,0x000000076f780000)
from space 10752K, 85% used [0x0000000770200000,0x0000000770b072d8,0x0000000770c80000)
to space 10752K, 0% used [0x000000076f780000,0x000000076f780000,0x0000000770200000)
ParOldGen total 173568K, used 51K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c280cc50,0x00000006cd180000)
Metaspace used 19636K, capacity 20038K, committed 20224K, reserved 1067008K
class space used 2136K, capacity 2235K, committed 2304K, reserved 1048576K
Card table byte_map: [0x0000000012bd0000,0x00000000133c0000] byte_map_base: 0x000000000f5bc000
Marking Bits: (ParMarkBitMap*) 0x000000005f7e4040
Begin Bits: [0x0000000013f10000, 0x0000000017e70000)
End Bits: [0x0000000017e70000, 0x000000001bdd0000)
Polling page: 0x0000000001830000
CodeCache: size=245760Kb used=5574Kb max_used=5574Kb free=240185Kb
bounds [0x0000000003810000, 0x0000000003d90000, 0x0000000012810000]
total_blobs=1954 nmethods=1516 adapters=358
compilation: enabled
Compilation events (10 events):
Event: 2.637 Thread 0x000000001faac800 1491 % 4 java.util.ArrayList::indexOf @ 36 (67 bytes)
Event: 2.638 Thread 0x000000001faac800 nmethod 1491% 0x0000000003d740d0 code [0x0000000003d74220, 0x0000000003d74598]
Event: 2.638 Thread 0x000000001faac800 1493 4 org.logicalcobwebs.cglib.asm.ByteVector::putByte (39 bytes)
Event: 2.639 Thread 0x000000001faac800 nmethod 1493 0x0000000003d73c90 code [0x0000000003d73de0, 0x0000000003d73f68]
Event: 2.639 Thread 0x000000001faac800 1502 4 org.logicalcobwebs.cglib.asm.ByteVector::put12 (64 bytes)
Event: 2.640 Thread 0x000000001faac800 nmethod 1502 0x0000000003d73750 code [0x0000000003d738a0, 0x0000000003d73ae8]
Event: 2.640 Thread 0x000000001faac800 1471 4 java.lang.StringBuffer::<init> (7 bytes)
Event: 2.640 Thread 0x000000001faac800 nmethod 1471 0x0000000003d78210 code [0x0000000003d78360, 0x0000000003d78458]
Event: 2.641 Thread 0x000000001faac800 1506 4 org.logicalcobwebs.cglib.asm.ClassReader::readUnsignedShort (26 bytes)
Event: 2.641 Thread 0x000000001faac800 nmethod 1506 0x0000000003d78510 code [0x0000000003d78660, 0x0000000003d78778]
GC Heap History (8 events):
Event: 0.688 GC heap before
{Heap before GC invocations=1 (full 0):
PSYoungGen total 75776K, used 65024K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 100% used [0x000000076b800000,0x000000076f780000,0x000000076f780000)
from space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
to space 10752K, 0% used [0x000000076f780000,0x000000076f780000,0x0000000770200000)
ParOldGen total 173568K, used 0K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2800000,0x00000006cd180000)
Metaspace used 4600K, capacity 5086K, committed 5248K, reserved 1056768K
class space used 505K, capacity 530K, committed 640K, reserved 1048576K
Event: 0.691 GC heap after
Heap after GC invocations=1 (full 0):
PSYoungGen total 75776K, used 3471K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 0% used [0x000000076b800000,0x000000076b800000,0x000000076f780000)
from space 10752K, 32% used [0x000000076f780000,0x000000076fae3ee0,0x0000000770200000)
to space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
ParOldGen total 173568K, used 8K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2802000,0x00000006cd180000)
Metaspace used 4600K, capacity 5086K, committed 5248K, reserved 1056768K
class space used 505K, capacity 530K, committed 640K, reserved 1048576K
}
Event: 1.253 GC heap before
{Heap before GC invocations=2 (full 0):
PSYoungGen total 75776K, used 68495K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 100% used [0x000000076b800000,0x000000076f780000,0x000000076f780000)
from space 10752K, 32% used [0x000000076f780000,0x000000076fae3ee0,0x0000000770200000)
to space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
ParOldGen total 173568K, used 8K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2802000,0x00000006cd180000)
Metaspace used 12119K, capacity 12376K, committed 12416K, reserved 1060864K
class space used 1299K, capacity 1376K, committed 1408K, reserved 1048576K
Event: 1.257 GC heap after
Heap after GC invocations=2 (full 0):
PSYoungGen total 75776K, used 6389K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 0% used [0x000000076b800000,0x000000076b800000,0x000000076f780000)
from space 10752K, 59% used [0x0000000770200000,0x000000077083d680,0x0000000770c80000)
to space 10752K, 0% used [0x000000076f780000,0x000000076f780000,0x0000000770200000)
ParOldGen total 173568K, used 24K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2806000,0x00000006cd180000)
Metaspace used 12119K, capacity 12376K, committed 12416K, reserved 1060864K
class space used 1299K, capacity 1376K, committed 1408K, reserved 1048576K
}
Event: 1.579 GC heap before
{Heap before GC invocations=3 (full 0):
PSYoungGen total 75776K, used 71413K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 100% used [0x000000076b800000,0x000000076f780000,0x000000076f780000)
from space 10752K, 59% used [0x0000000770200000,0x000000077083d680,0x0000000770c80000)
to space 10752K, 0% used [0x000000076f780000,0x000000076f780000,0x0000000770200000)
ParOldGen total 173568K, used 24K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2806000,0x00000006cd180000)
Metaspace used 15197K, capacity 15426K, committed 15616K, reserved 1062912K
class space used 1641K, capacity 1705K, committed 1792K, reserved 1048576K
Event: 1.584 GC heap after
Heap after GC invocations=3 (full 0):
PSYoungGen total 75776K, used 8083K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 0% used [0x000000076b800000,0x000000076b800000,0x000000076f780000)
from space 10752K, 75% used [0x000000076f780000,0x000000076ff64ee8,0x0000000770200000)
to space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
ParOldGen total 173568K, used 32K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2808000,0x00000006cd180000)
Metaspace used 15197K, capacity 15426K, committed 15616K, reserved 1062912K
class space used 1641K, capacity 1705K, committed 1792K, reserved 1048576K
}
Event: 1.838 GC heap before
{Heap before GC invocations=4 (full 0):
PSYoungGen total 75776K, used 73107K [0x000000076b800000, 0x0000000770c80000, 0x00000007c0000000)
eden space 65024K, 100% used [0x000000076b800000,0x000000076f780000,0x000000076f780000)
from space 10752K, 75% used [0x000000076f780000,0x000000076ff64ee8,0x0000000770200000)
to space 10752K, 0% used [0x0000000770200000,0x0000000770200000,0x0000000770c80000)
ParOldGen total 173568K, used 32K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c2808000,0x00000006cd180000)
Metaspace used 17784K, capacity 18092K, committed 18176K, reserved 1064960K
class space used 1917K, capacity 1996K, committed 2048K, reserved 1048576K
Event: 1.842 GC heap after
Heap after GC invocations=4 (full 0):
PSYoungGen total 75776K, used 9244K [0x000000076b800000, 0x0000000774c00000, 0x00000007c0000000)
eden space 65024K, 0% used [0x000000076b800000,0x000000076b800000,0x000000076f780000)
from space 10752K, 85% used [0x0000000770200000,0x0000000770b072d8,0x0000000770c80000)
to space 10752K, 0% used [0x000000076f780000,0x000000076f780000,0x0000000770200000)
ParOldGen total 173568K, used 51K [0x00000006c2800000, 0x00000006cd180000, 0x000000076b800000)
object space 173568K, 0% used [0x00000006c2800000,0x00000006c280cc50,0x00000006cd180000)
Metaspace used 17784K, capacity 18092K, committed 18176K, reserved 1064960K
class space used 1917K, capacity 1996K, committed 2048K, reserved 1048576K
}
Deoptimization events (10 events):
Event: 1.449 Thread 0x000000000307e000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003b7b34c method=java.util.Properties$LineReader.readLine()I @ 323
Event: 1.468 Thread 0x000000000307e000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003ba5438 method=java.util.Properties.loadConvert([CII[C)Ljava/lang/String; @ 72
Event: 1.513 Thread 0x000000000307e000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003a07c04 method=java.lang.AbstractStringBuilder.append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; @ 1
Event: 1.531 Thread 0x000000000307e000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003bd5bcc method=java.io.WinNTFileSystem.isLetter(C)Z @ 3
Event: 1.622 Thread 0x0000000022aa5800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003c07a18 method=java.util.Properties.loadConvert([CII[C)Ljava/lang/String; @ 445
Event: 2.067 Thread 0x000000000307e000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000000394306c method=java.lang.AbstractStringBuilder.append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; @ 1
Event: 2.591 Thread 0x000000000307e000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x0000000003b33448 method=java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; @ 203
Event: 2.591 Thread 0x000000000307e000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x0000000003b33448 method=java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; @ 203
Event: 2.591 Thread 0x000000000307e000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x0000000003b33448 method=java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; @ 203
Event: 2.591 Thread 0x000000000307e000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x0000000003b33448 method=java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; @ 203
Internal exceptions (10 events):
Event: 1.629 Thread 0x0000000022aa5800 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c213f48) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 1.629 Thread 0x0000000022aa5800 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c26e670) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 1.629 Thread 0x0000000022aa5800 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c26e9b8) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 1.630 Thread 0x0000000022aa5800 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c2cccf8) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 1.630 Thread 0x0000000022aa5800 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c2cd040) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 1.631 Thread 0x0000000022aa5800 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c329d60) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 1.631 Thread 0x0000000022aa5800 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c32a0a8) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 1.632 Thread 0x0000000022aa5800 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c38d250) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 1.632 Thread 0x0000000022aa5800 Exception <a 'java/security/PrivilegedActionException'> (0x000000076c38d598) thrown at [D:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u40\2855\hotspot\src\share\vm\prims\jvm.cpp, line 1382]
Event: 2.067 Thread 0x000000000307e000 Implicit null exception at 0x0000000003942c19 to 0x0000000003943055
Events (10 events):
Event: 2.627 Thread 0x000000000307e000 DEOPT PACKING pc=0x0000000003bce84c sp=0x000000000360a0b0
Event: 2.627 Thread 0x000000000307e000 DEOPT UNPACKING pc=0x000000000385787f sp=0x0000000003609ed0 mode 1
Event: 2.630 loading class org/logicalcobwebs/cglib/reflect/FastClassEmitter$2
Event: 2.630 loading class org/logicalcobwebs/cglib/reflect/FastClassEmitter$2 done
Event: 2.630 Thread 0x000000000307e000 DEOPT PACKING pc=0x0000000003c44a49 sp=0x0000000003609eb0
Event: 2.630 Thread 0x000000000307e000 DEOPT UNPACKING pc=0x000000000385787f sp=0x0000000003609c00 mode 1
Event: 2.630 Thread 0x000000000307e000 DEOPT PACKING pc=0x0000000003bceab4 sp=0x0000000003609f30
Event: 2.630 Thread 0x000000000307e000 DEOPT UNPACKING pc=0x000000000385787f sp=0x0000000003609d50 mode 1
Event: 2.630 Thread 0x000000000307e000 DEOPT PACKING pc=0x0000000003bce84c sp=0x000000000360a0c0
Event: 2.630 Thread 0x000000000307e000 DEOPT UNPACKING pc=0x000000000385787f sp=0x0000000003609ee0 mode 1
Dynamic libraries:
0x00007ff717ea0000 - 0x00007ff717ed7000 D:\soft\JDK8\bin\java.exe
0x00007ffda8030000 - 0x00007ffda8228000 C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ffda7440000 - 0x00007ffda74fd000 C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffda5ad0000 - 0x00007ffda5dc6000 C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffda6280000 - 0x00007ffda6330000 C:\WINDOWS\System32\ADVAPI32.dll
0x00007ffda6330000 - 0x00007ffda63ce000 C:\WINDOWS\System32\msvcrt.dll
0x00007ffda6720000 - 0x00007ffda67c0000 C:\WINDOWS\System32\sechost.dll
0x00007ffda67c0000 - 0x00007ffda68e3000 C:\WINDOWS\System32\RPCRT4.dll
0x00007ffda58d0000 - 0x00007ffda58f7000 C:\WINDOWS\System32\bcrypt.dll
0x00007ffda6550000 - 0x00007ffda66ef000 C:\WINDOWS\System32\USER32.dll
0x00007ffda5900000 - 0x00007ffda5922000 C:\WINDOWS\System32\win32u.dll
0x00007ffda66f0000 - 0x00007ffda671b000 C:\WINDOWS\System32\GDI32.dll
0x00007ffda5f40000 - 0x00007ffda6057000 C:\WINDOWS\System32\gdi32full.dll
0x00007ffda5a30000 - 0x00007ffda5acd000 C:\WINDOWS\System32\msvcp_win.dll
0x00007ffda5e40000 - 0x00007ffda5f40000 C:\WINDOWS\System32\ucrtbase.dll
0x00007ffd90c00000 - 0x00007ffd90e9a000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.3636_none_60b6a03d71f818d5\COMCTL32.dll
0x00007ffda6240000 - 0x00007ffda6272000 C:\WINDOWS\System32\IMM32.DLL
0x000000005f9f0000 - 0x000000005fac2000 D:\soft\JDK8\jre\bin\msvcr100.dll
0x000000005efe0000 - 0x000000005f863000 D:\soft\JDK8\jre\bin\server\jvm.dll
0x00007ffda7340000 - 0x00007ffda7348000 C:\WINDOWS\System32\PSAPI.DLL
0x00007ffd90ae0000 - 0x00007ffd90b07000 C:\WINDOWS\SYSTEM32\WINMM.dll
0x00007ffd9e350000 - 0x00007ffd9e35a000 C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ffd8e180000 - 0x00007ffd8e189000 C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x00007ffda6cf0000 - 0x00007ffda6d5b000 C:\WINDOWS\System32\WS2_32.dll
0x000000005efd0000 - 0x000000005efdf000 D:\soft\JDK8\jre\bin\verify.dll
0x000000005efa0000 - 0x000000005efc9000 D:\soft\JDK8\jre\bin\java.dll
0x000000005ebe0000 - 0x000000005ec15000 D:\soft\JDK8\jre\bin\jdwp.dll
0x000000005ebd0000 - 0x000000005ebd8000 D:\soft\JDK8\jre\bin\npt.dll
0x000000005eba0000 - 0x000000005ebc3000 D:\soft\JDK8\jre\bin\instrument.dll
0x000000005ef80000 - 0x000000005ef96000 D:\soft\JDK8\jre\bin\zip.dll
0x00007ffda7880000 - 0x00007ffda7feb000 C:\WINDOWS\System32\SHELL32.dll
0x00007ffda3720000 - 0x00007ffda3ebe000 C:\WINDOWS\SYSTEM32\windows.storage.dll
0x00007ffda7500000 - 0x00007ffda7853000 C:\WINDOWS\System32\combase.dll
0x00007ffda5110000 - 0x00007ffda513e000 C:\WINDOWS\SYSTEM32\Wldp.dll
0x00007ffda69c0000 - 0x00007ffda6a8d000 C:\WINDOWS\System32\OLEAUT32.dll
0x00007ffda6190000 - 0x00007ffda623d000 C:\WINDOWS\System32\SHCORE.dll
0x00007ffda68f0000 - 0x00007ffda6945000 C:\WINDOWS\System32\shlwapi.dll
0x00007ffda5610000 - 0x00007ffda5633000 C:\WINDOWS\SYSTEM32\profapi.dll
0x000000005eb90000 - 0x000000005eb99000 D:\soft\JDK8\jre\bin\dt_socket.dll
0x00007ffda4e70000 - 0x00007ffda4eda000 C:\WINDOWS\system32\mswsock.dll
0x000000005eb80000 - 0x000000005eb8d000 D:\soft\JDK8\jre\bin\management.dll
0x000000005ef30000 - 0x000000005ef4a000 D:\soft\JDK8\jre\bin\net.dll
0x000000005ef10000 - 0x000000005ef21000 D:\soft\JDK8\jre\bin\nio.dll
0x00007ffda0910000 - 0x00007ffda092d000 C:\WINDOWS\system32\NLAapi.dll
0x00007ffda4ae0000 - 0x00007ffda4b1b000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
0x00007ffd82990000 - 0x00007ffd829a7000 C:\WINDOWS\system32\napinsp.dll
0x00007ffd7d350000 - 0x00007ffd7d36b000 C:\WINDOWS\system32\pnrpnsp.dll
0x00007ffda4b20000 - 0x00007ffda4beb000 C:\WINDOWS\SYSTEM32\DNSAPI.dll
0x00007ffda71d0000 - 0x00007ffda71d8000 C:\WINDOWS\System32\NSI.dll
0x00007ffd7d2f0000 - 0x00007ffd7d302000 C:\WINDOWS\System32\winrnr.dll
0x00007ffd9fcb0000 - 0x00007ffd9fcc5000 C:\WINDOWS\system32\wshbth.dll
0x00007ffd9df10000 - 0x00007ffd9df1a000 C:\Windows\System32\rasadhlp.dll
0x00007ffd91960000 - 0x00007ffd919e0000 C:\WINDOWS\System32\fwpuclnt.dll
0x00007ffda32b0000 - 0x00007ffda3494000 C:\WINDOWS\SYSTEM32\dbghelp.dll
0x00007ffda5840000 - 0x00007ffda58c2000 C:\WINDOWS\System32\bcryptPrimitives.dll
VM Arguments:
jvm_args: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:56661,suspend=y,server=n -ea -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:\Users\liuliang\AppData\Local\JetBrains\IntelliJIdea2021.2\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8
java_command: com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 TestAttendanceAllowance.Test,testAnalysis
java_class_path (initial): C:\Users\liuliang\AppData\Local\Temp\classpath1628952194.jar;C:\Users\liuliang\AppData\Local\JetBrains\IntelliJIdea2021.2\captureAgent\debugger-agent.jar
Launcher Type: SUN_STANDARD
Environment Variables:
JAVA_HOME=D:\soft\JDK8
CLASSPATH=.;D:\soft\JDK8\lib\dt.jar;D:\soft\JDK8\lib\tools.jar;D:\Resin\lib\resin.jar;D:\WEAVER\Resin\lib\resin.jar
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;D:\soft\JDK8\jre\bin;D:\soft\apache-maven-3.5.0\bin;D:\soft\hadoop-2.7.7\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\dotnet\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Azure Data Studio\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;D:\nodejs\;D:\Git\cmd;C:\Program Files\Bandizip\;C:\Program Files\TortoiseSVN\bin;C:\Users\liuliang\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Azure Data Studio\bin;D:\Microsoft VS Code\bin;D:\nodejs\node_global;D:\soft\mysql-8.0.29-winx64\bin;
USERNAME=liuliang
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 13, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows 10.0 , 64 bit Build 19041 (10.0.19041.3636)
CPU:total 6 (6 cores per cpu, 1 threads per core) family 6 model 158 stepping 13, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, tsc, tscinvbit, bmi1, bmi2, adx
Memory: 4k page, physical 16611380k(2588280k free), swap 20805684k(4068k free)
vm_info: Java HotSpot(TM) 64-Bit Server VM (25.40-b25) for windows-amd64 JRE (1.8.0_40-b25), built on Feb 10 2015 21:53:57 by "java_re" with MS VC++ 10.0 (VS2010)
time: Mon Apr 22 20:23:29 2024
elapsed time: 2 seconds (0d 0h 0m 2s)

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -139,11 +139,9 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
//按照开始时间,结束时间请假
for (Map<String, Object> scheduleMap:scheduleResult){
if (ClassSegmentTypeEnum.WORK_TIME.getKey().equals(scheduleMap.get("bdlx"))){
String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj");
String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj");
}
String dtkssj = Utils.getkssjTime(scheduleMap,analysisDate);
String dtjssj = Utils.getjssjTime(scheduleMap,analysisDate);
employTime +=Utils.getStartAndEndTime(dtkssj,dtjssj,askForLeaveList.get(i));
}
}
@ -187,12 +185,9 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
}else {
//按照开始时间,结束时间请假
for (Map<String, Object> scheduleMap:scheduleResult){
String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj");
String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj");
String dtkssj = Utils.getkssjTime(scheduleMap,analysisDate);
String dtjssj = Utils.getjssjTime(scheduleMap,analysisDate);
if (ClassSegmentTypeEnum.WORK_TIME.getKey().equals(scheduleMap.get("bdlx"))){
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj");
}
employTime +=Utils.getStartAndEndTime(dtkssj,dtjssj,evectionList.get(i));
}
}

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

@ -22,7 +22,7 @@ import java.util.Map;
import java.util.stream.Collectors;
/**
*
*
*/
@Slf4j
public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object>> {
@ -53,18 +53,14 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
boolean ifEndNeedClock=false;
if (needClockInList.size() > 0 && askForLeaveAndEvctionScheduleList.size() > 0) {
String startTime = analysisDate + " " + needClockInList.get(0).get("dtkssj").toString();
String endStartTime = analysisDate + " " + needClockInList.get(needClockInList.size()-1).get("dtkssj").toString();
String endTime = analysisDate + " " + needClockInList.get(needClockInList.size()-1).get("dtjssj").toString();
if (DateUtil.getTime(endStartTime).compareTo(DateUtil.getTime(endTime)) > 0) {
endTime = DateUtil.AfterDay(analysisDate, 1) + " " + needClockInList.get(needClockInList.size()-1).get("dtjssj");
}
String startTime = Utils.getkssjTime(needClockInList.get(0),analysisDate);
String endStartTime = Utils.getkssjTime(needClockInList.get(needClockInList.size()-1),analysisDate);
String endTime = Utils.getjssjTime(needClockInList.get(needClockInList.size()-1),analysisDate);
for (Map<String, Object> askForLeaveAndEvctionSchedule :askForLeaveAndEvctionScheduleList){
String dtkssj = analysisDate + " " + askForLeaveAndEvctionSchedule.get("dtkssj");
String dtjssj = analysisDate + " " + askForLeaveAndEvctionSchedule.get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0) {
dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + askForLeaveAndEvctionSchedule.get("dtjssj");
}
String dtkssj = Utils.getkssjTime(askForLeaveAndEvctionSchedule,analysisDate);
String dtjssj = Utils.getjssjTime(askForLeaveAndEvctionSchedule,analysisDate);
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(startTime))<=0 || DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(endTime)) >= 0){
askForLeaveAndEvctionSchedule.put("ksdk",CheckBoxEnum.UNCHECKED.getKey());
}
@ -75,11 +71,9 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(startTime))<=0 && DateUtil.getTime(dtjssj).compareTo(DateUtil.getTime(endTime))<0 && DateUtil.getTime(dtjssj).compareTo(DateUtil.getTime(startTime)) >0){
//骑在开始上班时间
for (Map<String,Object> needClockMap:needClockInList){
String kssj = analysisDate + " " + needClockMap.get("dtkssj");
String jssj = analysisDate + " " + needClockMap.get("dtjssj");
if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(jssj)) > 0) {
jssj = DateUtil.AfterDay(analysisDate, 1) + " " + needClockMap.get("dtjssj");
}
String kssj = Utils.getkssjTime(needClockMap,analysisDate);
String jssj = Utils.getjssjTime(needClockMap,analysisDate);
if (CheckBoxEnum.CHECKED.getKey().equals(needClockMap.get("ksdk")) && DateUtil.getTime(dtjssj).compareTo(DateUtil.getTime(jssj)) >=0){
ifStartNeedClock=true;
@ -90,7 +84,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(startTime)) > 0 && DateUtil.getTime(dtjssj).compareTo(DateUtil.getTime(endTime))>=0 && DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(endTime)) < 0){
//骑在下班时间
for (Map<String,Object> needClockMap:needClockInList){
String kssj = analysisDate + " " + needClockMap.get("dtkssj");
String kssj = Utils.getkssjTime(needClockMap,analysisDate);
if (CheckBoxEnum.CHECKED.getKey().equals(needClockMap.get("jsdk")) && DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(kssj)) <=0){
ifEndNeedClock=true;
@ -105,28 +99,24 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
*
*/
for (Map<String, Object> askForLeaveAndEvctionMap :askForLeaveAndEvctionScheduleList){
String evctiondtkssj = analysisDate + " " +Util.null2String(askForLeaveAndEvctionMap.get("dtkssj"));
String evctiondtkssj = Utils.getkssjTime(askForLeaveAndEvctionMap,analysisDate);
String evctionksdk = Util.null2String(askForLeaveAndEvctionMap.get("ksdk"));
String evctiondtjssj = analysisDate + " " +Util.null2String(askForLeaveAndEvctionMap.get("dtjssj"));
String evctiondtjssj = Utils.getjssjTime(askForLeaveAndEvctionMap,analysisDate);
String evctionjsdk = Util.null2String(askForLeaveAndEvctionMap.get("jsdk"));
if (DateUtil.getTime(evctiondtkssj).compareTo(DateUtil.getTime(evctiondtjssj)) > 0) {
evctiondtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + Util.null2String(askForLeaveAndEvctionMap.get("dtjssj"));
}
List<String> lists = Lists.newArrayList();
for (int i=0;i<scheduleResult.size();i++){
String dtkssj = analysisDate + " " +Util.null2String(scheduleResult.get(i).get("dtkssj"));
String dtjssj = analysisDate + " " +Util.null2String(scheduleResult.get(i).get("dtjssj"));
String dtkssj = Utils.getkssjTime(scheduleResult.get(i),analysisDate);
String dtjssj = Utils.getjssjTime(scheduleResult.get(i),analysisDate);
String bdlx = Util.null2String(scheduleResult.get(i).get("bdlx"));
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0) {
dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + Util.null2String(scheduleResult.get(i).get("dtjssj"));
}
if (DateUtil.getTime(evctiondtkssj).compareTo(DateUtil.getTime(dtkssj)) <= 0 && DateUtil.getTime(evctiondtjssj).compareTo(DateUtil.getTime(dtkssj)) >=0
&& !ClassSegmentTypeEnum.REST_AND_DINE.getKey().equals(bdlx) && !ClassSegmentTypeEnum.REST_PERIOD.getKey().equals(bdlx) && !ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(bdlx)){
lists.add(scheduleResult.get(i).get("dtkssj")+"-"+ClockPointEnum.START.getKey()+"-"+Util.null2String(scheduleResult.get(i).get("ksdk")));
lists.add(dtkssj+"&"+ClockPointEnum.START.getKey()+"&"+Util.null2String(scheduleResult.get(i).get("ksdk")));
}
if (DateUtil.getTime(evctiondtkssj).compareTo(DateUtil.getTime(dtjssj)) <= 0 && DateUtil.getTime(evctiondtjssj).compareTo(DateUtil.getTime(dtjssj)) >=0
&& !ClassSegmentTypeEnum.REST_AND_DINE.getKey().equals(bdlx) && !ClassSegmentTypeEnum.REST_PERIOD.getKey().equals(bdlx) && !ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(bdlx)){
lists.add(scheduleResult.get(i).get("dtjssj")+"-"+ClockPointEnum.END.getKey()+"-"+Util.null2String(scheduleResult.get(i).get("jsdk")));
lists.add(dtjssj+"&"+ClockPointEnum.END.getKey()+"&"+Util.null2String(scheduleResult.get(i).get("jsdk")));
}
}
//新打卡
@ -134,40 +124,40 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
//时间-结束卡\开始卡-是否打卡
if (lists.size() == 1){
String str = lists.get(0);
if (ClockPointEnum.START.getKey().equals(str.split("-")[1]) && CheckBoxEnum.CHECKED.getKey().equals(evctionjsdk)){
newNeedClockLists.add(str.split("-")[0]+"-"+str.split("-")[1]+"-0");
if (ClockPointEnum.START.getKey().equals(str.split("&")[1]) && CheckBoxEnum.CHECKED.getKey().equals(evctionjsdk)){
newNeedClockLists.add(str.split("&")[0]+"&"+str.split("&")[1]+"&0");
}else if (ClockPointEnum.END.getKey().equals(str.split("-")[1]) && CheckBoxEnum.CHECKED.getKey().equals(evctionksdk)){
newNeedClockLists.add(str.split("-")[0]+"-"+str.split("-")[1]+"-0");
newNeedClockLists.add(str.split("&")[0]+"&"+str.split("&")[1]+"&0");
}
}else if (lists.size() > 1){
for(int i=0;i<lists.size();i++){
String str = lists.get(i);
if (i ==0){
if (CheckBoxEnum.CHECKED.getKey().equals(evctionksdk) || ClockPointEnum.START.getKey().equals(str.split("-")[1])){
newNeedClockLists.add(str.split("-")[0]+"-"+str.split("-")[1]+"-0");
if (CheckBoxEnum.CHECKED.getKey().equals(evctionksdk) || ClockPointEnum.START.getKey().equals(str.split("&")[1])){
newNeedClockLists.add(str.split("&")[0]+"&"+str.split("&")[1]+"&0");
}
}else if (i == lists.size()-1){
if (CheckBoxEnum.CHECKED.getKey().equals(evctionjsdk) || ClockPointEnum.END.getKey().equals(str.split("-")[1])){
newNeedClockLists.add(str.split("-")[0]+"-"+str.split("-")[1]+"-0");
if (CheckBoxEnum.CHECKED.getKey().equals(evctionjsdk) || ClockPointEnum.END.getKey().equals(str.split("&")[1])){
newNeedClockLists.add(str.split("&")[0]+"&"+str.split("&")[1]+"&0");
}
}else {
newNeedClockLists.add(str.split("-")[0]+"-"+str.split("-")[1]+"-0");
newNeedClockLists.add(str.split("&")[0]+"&"+str.split("&")[1]+"&0");
}
}
}
for (int i=0;i<scheduleResult.size();i++){
String dtkssj = Util.null2String(scheduleResult.get(i).get("dtkssj"));
String dtjssj = Util.null2String(scheduleResult.get(i).get("dtjssj"));
String dtkssj = Utils.getkssjTime(scheduleResult.get(i),analysisDate);
String dtjssj = Utils.getjssjTime(scheduleResult.get(i),analysisDate);
for (String newNeedClock : newNeedClockLists){
if (ClockPointEnum.START.getKey().equals(newNeedClock.split("-")[1])){
if (newNeedClock.split("-")[0].equals(dtkssj)){
scheduleResult.get(i).put("ksdk",newNeedClock.split("-")[2]);
if (ClockPointEnum.START.getKey().equals(newNeedClock.split("&")[1])){
if (newNeedClock.split("&")[0].equals(dtkssj)){
scheduleResult.get(i).put("ksdk",newNeedClock.split("&")[2]);
}
}else if (ClockPointEnum.END.getKey().equals(newNeedClock.split("-")[1])){
if (newNeedClock.split("-")[0].equals(dtjssj)){
scheduleResult.get(i).put("jsdk",newNeedClock.split("-")[2]);
}else if (ClockPointEnum.END.getKey().equals(newNeedClock.split("&")[1])){
if (newNeedClock.split("&")[0].equals(dtjssj)){
scheduleResult.get(i).put("jsdk",newNeedClock.split("&")[2]);
}
}
}
@ -178,16 +168,14 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
scheduleResult.addAll(askForLeaveAndEvctionScheduleList);
scheduleResult = scheduleResult.stream().sorted(Comparator.comparing(e->DateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
scheduleResult = scheduleResult.stream().sorted(Comparator.comparing(e->DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
}
List<String> needClockDateList = Lists.newArrayList();
for (int i=0;i<scheduleResult.size();i++){
String dtkssj = analysisDate + " " + scheduleResult.get(i).get("dtkssj");
String dtjssj = analysisDate + " " + scheduleResult.get(i).get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0) {
dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + scheduleResult.get(i).get("dtjssj");
}
String dtkssj = Utils.getkssjTime(scheduleResult.get(i),analysisDate);
String dtjssj = Utils.getjssjTime(scheduleResult.get(i),analysisDate);
if (CheckBoxEnum.CHECKED.getKey().equals(scheduleResult.get(i).get("ksdk"))) {
needClockDateList.add(dtkssj);
}
@ -208,18 +196,16 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
!ClassSegmentTypeEnum.EVECTION.getKey().equals(bdlx) &&
!ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey().equals(bdlx)){
scheduleResult.get(i).put("ksdk",CheckBoxEnum.CHECKED.getKey());
needClockDateList.add(0,analysisDate + " "+dtkssj);
needClockDateList.add(0,Utils.getkssjTime(scheduleResult.get(i),analysisDate));
break;
}
if (ifEndNeedClock && needClockInList.get(needClockInList.size()-1).get("dtjssj").equals(dtjssj) &&
!ClassSegmentTypeEnum.EVECTION.getKey().equals(bdlx) &&
!ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey().equals(bdlx)){
scheduleResult.get(i).put("jsdk",CheckBoxEnum.CHECKED.getKey());
dtkssj = analysisDate + " " + scheduleResult.get(i).get("dtkssj");
dtjssj = analysisDate + " " + scheduleResult.get(i).get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0) {
dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + scheduleResult.get(i).get("dtjssj");
}
dtkssj = Utils.getkssjTime(scheduleResult.get(i),analysisDate);
dtjssj = Utils.getjssjTime(scheduleResult.get(i),analysisDate);
needClockDateList.add(dtjssj);
break;
}
@ -228,8 +214,6 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
log.info("经过重新计算卡点时 新的scheduleResult : [{}]",scheduleResult);
@ -258,17 +242,16 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
/**非请假外出开始打卡逻辑处理*/
if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("ksdk")) && !ClassSegmentTypeEnum.EVECTION.getKey().equals(needClockIn.get("bdlx")) &&
!ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey().equals(needClockIn.get("bdlx"))) {
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");
}
String dtkssj = Utils.getkssjTime(needClockIn,analysisDate);
String dtjssj = Utils.getjssjTime(needClockIn,analysisDate);
//计算最大提前打卡分钟数
int tqdkfzs = 60;
if (Util.null2String(needClockIn.get("tqdkfzs")).equals("") && !"".equals(getBeforeClockTime(needClockDateList,dtkssj))){
tqdkfzs = DateUtil.getBetWeenMinutes(getBeforeClockTime(needClockDateList,dtkssj),dtkssj);
}else {
tqdkfzs = Util.null2String(needClockIn.get("tqdkfzs")).equals("")?0:Integer.valueOf(needClockIn.get("tqdkfzs").toString());
tqdkfzs = Util.null2String(needClockIn.get("tqdkfzs")).equals("")?60:Integer.valueOf(needClockIn.get("tqdkfzs").toString());
}
Map<String, Map<String, Object>> ksdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtkssj, clockInTimeList);
@ -299,18 +282,16 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
/**非请假外出结束打卡逻辑处理*/
if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("jsdk")) && !ClassSegmentTypeEnum.EVECTION.getKey().equals(needClockIn.get("bdlx")) &&
!ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey().equals(needClockIn.get("bdlx"))) {
String dtkssj = analysisDate + " " + needClockIn.get("dtkssj");
String dtjssj = analysisDate + " " + needClockIn.get("dtjssj");
String dtkssj = Utils.getkssjTime(needClockIn,analysisDate);
String dtjssj = Utils.getjssjTime(needClockIn,analysisDate);
//计算最大退后打卡分钟数
int thdkfzs = 60;
if (Util.null2String(needClockIn.get("thdkfzs")).equals("") && !"".equals(getNextClockTime(needClockDateList,dtjssj))){
thdkfzs = DateUtil.getBetWeenMinutes(dtjssj,getNextClockTime(needClockDateList,dtjssj));
}else {
thdkfzs = Util.null2String(needClockIn.get("thdkfzs")).equals("")?0:Integer.valueOf(needClockIn.get("thdkfzs").toString());
thdkfzs = Util.null2String(needClockIn.get("thdkfzs")).equals("")?60:Integer.valueOf(needClockIn.get("thdkfzs").toString());
}
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();
@ -340,7 +321,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
*/
if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("ksdk")) && (ClassSegmentTypeEnum.EVECTION.getKey().equals(needClockIn.get("bdlx")) ||
ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey().equals(needClockIn.get("bdlx")))){
String dtkssj = analysisDate + " " + needClockIn.get("dtkssj");
String dtkssj = Utils.getkssjTime(needClockIn,analysisDate);
int thdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("thdkfzs")));
if (!"".equals(getNextClockTime(needClockDateList,dtkssj))){
DateUtil.getBetWeenMinutes(dtkssj,getNextClockTime(needClockDateList,dtkssj));
@ -376,11 +357,8 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("jsdk")) && (ClassSegmentTypeEnum.EVECTION.getKey().equals(needClockIn.get("bdlx")) ||
ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey().equals(needClockIn.get("bdlx")))){
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");
}
String dtkssj = Utils.getkssjTime(needClockIn,analysisDate);
String dtjssj = Utils.getjssjTime(needClockIn,analysisDate);
int tqdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("tqdkfzs")));
if (!"".equals(getBeforeClockTime(needClockDateList,dtjssj))){
@ -451,25 +429,15 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
//弹性核算
int dxhs = Integer.valueOf(Util.null2String(workScheduleList.get(0).get("dxhs")));
Map<String, Object> ksdkMap = workScheduleList.get(0);
String kssjStart = analysisDate + " " + Util.null2String(ksdkMap.get("dtkssj"));
String jssjStart = analysisDate + " " + Util.null2String(ksdkMap.get("dtjssj"));
//最早上班时间
String kssjStart = Utils.getkssjTime(ksdkMap,analysisDate);
Map<String, Object> jsdkMap = workScheduleList.get(workScheduleList.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"));
String jssjEnd = Utils.getjssjTime(jsdkMap,analysisDate);
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 flexibleWorkTime = "";
@ -478,7 +446,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
if (leaveAndEvctionList.size() >0){
//第一笔请假、外出时间
Map<String, Object> leaveAndEvctionMap = leaveAndEvctionList.get(0);
String leaveAndEvctionkssj = analysisDate + " " + Util.null2String(leaveAndEvctionMap.get("dtkssj"));
String leaveAndEvctionkssj = Utils.getkssjTime(leaveAndEvctionMap,analysisDate);
//最大开始弹性时间
String minkssjStart = DateUtil.beforeMinutes(kssjStart,zddxfz);
String maxkssjStart = DateUtil.AfterMinutes(kssjStart,zddxfz);
@ -653,80 +621,110 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
String signdateTime = beforeClcokInTimeMap.get("signdate") + " " + beforeClcokInTimeMap.get("signtime");
String resetClcokInTime ="";
Map<String, Map<String, Object>> resetClcokInTimeData = null;
if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) <= 0) {
//该打卡归属前一个打卡点
Map<String, Map<String, Object>> nearestClcokInTime = Utils.getNearestClcokInTimeCmd(afterTime, clockInTimeList);
//start开始打卡时间点end结束打卡时间点
String pointType = afterClcokInTime.split("\\|")[1];
//empty:漏卡equal:打卡时间和班次时间相等before打卡时间在班次时间之前after打卡时间在班次时间之后
String timeType = afterClcokInTime.split("\\|")[2];
String time = afterClcokInTime.split("\\|")[0];
String newPonit = time+"|"+pointType;
String newtimeType = "";
if (timeType.equals(ClockPointEnum.BEFORE.getKey())){
newtimeType = ClockPointEnum.AFTER.getKey();
}else if (timeType.equals(ClockPointEnum.AFTER.getKey())){
newtimeType = ClockPointEnum.BEFORE.getKey();
//该打卡归属前一个打卡点,后一个打卡点需要重新设置
resetClcokInTime = afterClcokInTime;
resetClcokInTimeData = afterClcokInTimeData;
} else if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) > 0) {
//该打卡归属后一个打卡点,前一个打卡点需要重新设置
resetClcokInTime=beforeClcokInTime;
resetClcokInTimeData = beforeClcokInTimeData;
}
//需要重新赋值的打卡时间
String restTime = resetClcokInTime.split("\\|")[0];
if (resetClcokInTime.split("\\|").length ==4 && !"0".equals(resetClcokInTime.split("\\|")[3])){
restTime = resetClcokInTime.split("\\|")[3];
}
Map<String, Map<String, Object>> nearestClcokInTime = Utils.getNearestClcokInTimeCmd(restTime, clockInTimeList);
//start开始打卡时间点end结束打卡时间点
String pointType = resetClcokInTime.split("\\|")[1];
//empty:漏卡equal:打卡时间和班次时间相等before打卡时间在班次时间之前after打卡时间在班次时间之后
String timeType = resetClcokInTime.split("\\|")[2];
String time = resetClcokInTime.split("\\|")[0];
String newPonit = time+"|"+pointType;
String newtimeType = "";
if (timeType.equals(ClockPointEnum.BEFORE.getKey())){
newtimeType = ClockPointEnum.AFTER.getKey();
}else if (timeType.equals(ClockPointEnum.AFTER.getKey())){
newtimeType = ClockPointEnum.BEFORE.getKey();
}
if (nearestClcokInTime.get(newtimeType) != null){
newPonit = newPonit +"|"+newtimeType;
if (resetClcokInTime.split("\\|").length ==4){
newPonit = newPonit +"|"+resetClcokInTime.split("\\|")[3];
}
if (nearestClcokInTime.get(newtimeType) != null && (i+2)<clcokInTimeData.size()){
newPonit = newPonit +"|"+newtimeType;
if (afterClcokInTime.split("\\|").length ==4){
newPonit = newPonit +"|"+afterClcokInTime.split("\\|")[3];
Map<String, Object> newClockTimeMap = nearestClcokInTime.get(newtimeType);
String newClockTime = newClockTimeMap.get("signdate")+ " "+newClockTimeMap.get("signtime");
int index = clcokInTimeData.indexOf(resetClcokInTimeData);
if (newtimeType.equals(ClockPointEnum.BEFORE.getKey())){
if (!getBeforeClockTime(needClockDateList,time).equals("") && DateUtil.getTime(newClockTime).compareTo(DateUtil.getTime(getBeforeClockTime(needClockDateList,time))) <= 0){
newClockTimeMap = null;
}
Map<String, Object> newClockTimeMap = nearestClcokInTime.get(newtimeType);
String newClockTime = newClockTimeMap.get("signdate")+ " "+newClockTimeMap.get("signtime");
if (newtimeType.equals(ClockPointEnum.BEFORE.getKey())){
if (!getBeforeClockTime(needClockDateList,time).equals("") && DateUtil.getTime(newClockTime).compareTo(DateUtil.getTime(getBeforeClockTime(needClockDateList,time))) <= 0){
newClockTimeMap = null;
if ((index-1) >= 0){
//当重新需要打卡的时间戳与打卡时间之前的打卡集合时,进行比对
Map<String, Map<String, Object>> resetBeforeData = clcokInTimeData.get(index-1);
Map<String, Object> resetBeforeClcokInTimeMap = null;
for (Map.Entry<String, Map<String, Object>> resetBeforeEntry : resetBeforeData.entrySet()) {
resetBeforeClcokInTimeMap = resetBeforeEntry.getValue();
}
}else if (newtimeType.equals(ClockPointEnum.AFTER.getKey())){
if (!getNextClockTime(needClockDateList,time).equals("") && DateUtil.getTime(newClockTime).compareTo(DateUtil.getTime(getNextClockTime(needClockDateList,time))) >= 0){
if (newClockTimeMap == resetBeforeClcokInTimeMap){
newClockTimeMap = null;
}
}
int index = clcokInTimeData.indexOf(afterClcokInTimeData);
clcokInTimeData.remove(afterClcokInTimeData);
afterClcokInTimeData = Maps.newHashMap();
afterClcokInTimeData.put(newPonit,newClockTimeMap);
clcokInTimeData.add(index,afterClcokInTimeData);
}else if (newtimeType.equals(ClockPointEnum.AFTER.getKey())){
if (!getNextClockTime(needClockDateList,time).equals("") && DateUtil.getTime(newClockTime).compareTo(DateUtil.getTime(getNextClockTime(needClockDateList,time))) >= 0){
newClockTimeMap = null;
}
}
if (newClockTimeMap == null){
//当需要调整的卡点为漏卡时将打卡进行退回,若另一个卡点调整后为不漏卡情况,则调整该节点
if (resetClcokInTimeData == beforeClcokInTimeData){
resetClcokInTime = afterClcokInTime;
resetClcokInTimeData = afterClcokInTimeData;
}else if (resetClcokInTimeData == afterClcokInTimeData){
resetClcokInTime=beforeClcokInTime;
resetClcokInTimeData = beforeClcokInTimeData;
}
if (!resetClcokInTimeData(resetClcokInTime,resetClcokInTimeData,clockInTimeList,needClockDateList,clcokInTimeData)){
if (resetClcokInTimeData == beforeClcokInTimeData){
resetClcokInTimeData = afterClcokInTimeData;
}else if (resetClcokInTimeData == afterClcokInTimeData){
resetClcokInTimeData = beforeClcokInTimeData;
}
clcokInTimeData.remove(resetClcokInTimeData);
resetClcokInTimeData = Maps.newHashMap();
resetClcokInTimeData.put(newPonit,newClockTimeMap);
clcokInTimeData.add(index,resetClcokInTimeData);
}
}else {
afterClcokInTimeData.put(afterClcokInTime, null);
clcokInTimeData.remove(resetClcokInTimeData);
resetClcokInTimeData = Maps.newHashMap();
resetClcokInTimeData.put(newPonit,newClockTimeMap);
clcokInTimeData.add(index,resetClcokInTimeData);
}
}else {
if (resetClcokInTimeData == beforeClcokInTimeData){
resetClcokInTime = afterClcokInTime;
resetClcokInTimeData = afterClcokInTimeData;
}else if (resetClcokInTimeData == afterClcokInTimeData){
resetClcokInTime=beforeClcokInTime;
resetClcokInTimeData = beforeClcokInTimeData;
}
if (!resetClcokInTimeData(resetClcokInTime,resetClcokInTimeData,clockInTimeList,needClockDateList,clcokInTimeData)){
if (resetClcokInTimeData == beforeClcokInTimeData){
resetClcokInTime = afterClcokInTime;
resetClcokInTimeData = afterClcokInTimeData;
}else if (resetClcokInTimeData == afterClcokInTimeData){
resetClcokInTime=beforeClcokInTime;
resetClcokInTimeData = beforeClcokInTimeData;
}
resetClcokInTimeData.put(resetClcokInTime, 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);
}
}
}
@ -735,6 +733,9 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
return clcokInTimeData;
}
public String getNextClockTime(List<String> needClockDateList,String time){
int index = 0;
for (int i=0;i<needClockDateList.size();i++){
@ -766,4 +767,63 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
}
public boolean resetClcokInTimeData(String resetClcokInTime,Map<String, Map<String, Object>> resetClcokInTimeData,List<Map<String, Object>> clockInTimeList, List<String> needClockDateList,List<Map<String, Map<String, Object>>> clcokInTimeData){
String restTime = resetClcokInTime.split("\\|")[0];
if (resetClcokInTime.split("\\|").length ==4 && !"0".equals(resetClcokInTime.split("\\|")[3])){
restTime = resetClcokInTime.split("\\|")[3];
}
Map<String, Map<String, Object>> nearestClcokInTime = Utils.getNearestClcokInTimeCmd(restTime, clockInTimeList);
//start开始打卡时间点end结束打卡时间点
String pointType = resetClcokInTime.split("\\|")[1];
//empty:漏卡equal:打卡时间和班次时间相等before打卡时间在班次时间之前after打卡时间在班次时间之后
String timeType = resetClcokInTime.split("\\|")[2];
String time = resetClcokInTime.split("\\|")[0];
String newPonit = time+"|"+pointType;
String newtimeType = "";
if (timeType.equals(ClockPointEnum.BEFORE.getKey())){
newtimeType = ClockPointEnum.AFTER.getKey();
}else if (timeType.equals(ClockPointEnum.AFTER.getKey())){
newtimeType = ClockPointEnum.BEFORE.getKey();
}
if (nearestClcokInTime.get(newtimeType) != null){
newPonit = newPonit +"|"+newtimeType;
if (resetClcokInTime.split("\\|").length ==4){
newPonit = newPonit +"|"+resetClcokInTime.split("\\|")[3];
}
Map<String, Object> newClockTimeMap = nearestClcokInTime.get(newtimeType);
String newClockTime = newClockTimeMap.get("signdate")+ " "+newClockTimeMap.get("signtime");
int index = clcokInTimeData.indexOf(resetClcokInTimeData);
if (newtimeType.equals(ClockPointEnum.BEFORE.getKey())){
if (!getBeforeClockTime(needClockDateList,time).equals("") && DateUtil.getTime(newClockTime).compareTo(DateUtil.getTime(getBeforeClockTime(needClockDateList,time))) <= 0){
newClockTimeMap = null;
}
if ((index-1) >= 0){
//当重新需要打卡的时间戳与打卡时间之前的打卡集合时,进行比对
Map<String, Map<String, Object>> resetBeforeData = clcokInTimeData.get(index-1);
Map<String, Object> resetBeforeClcokInTimeMap = null;
for (Map.Entry<String, Map<String, Object>> resetBeforeEntry : resetBeforeData.entrySet()) {
resetBeforeClcokInTimeMap = resetBeforeEntry.getValue();
}
if (newClockTimeMap == resetBeforeClcokInTimeMap){
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;
}
}
if (newClockTimeMap != null){
clcokInTimeData.remove(resetClcokInTimeData);
resetClcokInTimeData = Maps.newHashMap();
resetClcokInTimeData.put(newPonit,newClockTimeMap);
clcokInTimeData.add(index,resetClcokInTimeData);
return true;
}
}
return false;
}
}

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

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

@ -86,7 +86,12 @@ public class RecordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
}
if (recordDataTime != null && recordDataTime.size() >0){
for (Map.Entry<String,Object> entry : recordDataTime.entrySet()){
sql = sql + entry.getKey()+"="+entry.getValue()+",";
if (entry.getValue() == null || "NULL".equals(entry.getValue()) || "null".equals(entry.getValue())
||"".equals(entry.getValue())){
sql = sql + entry.getKey()+"="+entry.getValue()+",";
}else {
sql = sql + entry.getKey()+"='"+entry.getValue()+"',";
}
}
}else {
for (int i=1;i<9;i++){

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

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

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

@ -35,7 +35,7 @@ public interface UtilService {
*/
Map<String,Object> getNeedRecordClockInTime(List<Map<String,Map<String,Object>>> clcokInTimeData);
/**
*
*
*/
List<Map<String,Map<String,Object>>> getClockInPointCmd(Map<String,Object> params);

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

@ -357,8 +357,8 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
for (int i =0;i<logarithm;i++){
int index1 = i*2;
int index2 = index1+1;
resultMap.put("j"+(i+1),"'"+clockInTimeList.get(index1).get("signtime")+"'");
resultMap.put("c"+(i+1),"'"+clockInTimeList.get(index2).get("signtime")+"'");
resultMap.put("j"+(i+1),clockInTimeList.get(index1).get("signtime"));
resultMap.put("c"+(i+1),clockInTimeList.get(index2).get("signtime"));
}
log.info("betweenMinute : [{}]",resultMap);
return resultMap;

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

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

@ -89,11 +89,9 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
//加班结束时间
String dtjssj = Util.null2String(scheduleMap.get("dtjssj"));
String kssj = analysisDate +" "+dtkssj;
String jssj = analysisDate +" "+dtjssj;
if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(jssj)) >0){
jssj = DateUtil.AfterDay(analysisDate,1)+" "+Util.null2String(scheduleMap.get("dtjssj"));
}
String kssj = Utils.getkssjTime(scheduleMap,analysisDate);
String jssj = Utils.getjssjTime(scheduleMap,analysisDate);
//加班实际开始时间
String realityStartTime = "";
//加班实际结束时间

@ -17,7 +17,6 @@ import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -37,26 +36,30 @@ 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");
paramMap.put("startDate","2024-04-22");
paramMap.put("endDate","2024-04-22");
paramMap.put("userIds","31");
String startDate = Util.null2String(paramMap.get("startDate"));
String startBeforeDate = DateUtil.beforeDay(startDate,1);
String startBeforeDate = DateUtil.beforeDay(startDate,2);
String endDate = Util.null2String(paramMap.get("endDate"));
String endAfterDate = DateUtil.AfterDay(endDate,1);
String endAfterDate = DateUtil.AfterDay(endDate,2);
String userIds = Util.null2String(paramMap.get("userIds"));
int betweenDays = DateUtil.getBetWeenDays(startDate,endDate);
if ("".equals(userIds)){
String queryUserSql = "select id from hrmresource where (status = 0 or status = 1 or status = 2 or status = 3) and status != 10";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ?";
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ? order by signdate,signtime";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
for (Map<String,Object> userMap :userList){
String userId = userMap.get("id").toString();
//出勤结果,进出时间
Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap();
/**获得人员考勤项目*/
Map<String,Object> param = Maps.newHashMap();
param.put("startDate",startBeforeDate);
@ -86,17 +89,19 @@ public class AttendanceanalysisAction {
for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap);
}
}
}else {
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ?";
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ? order by signdate,signtime";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
for (String userId : userIds.split(",")){
/**获得人员考勤项目*/
Map<String,Object> param = Maps.newHashMap();
//出勤结果,进出时间
Map<String,Map<String,Object>> clockInTimeMap = Maps.newHashMap();
param.put("startDate",startBeforeDate);
param.put("endDate",endAfterDate);
param.put("resourceId",userId);
@ -125,7 +130,7 @@ public class AttendanceanalysisAction {
for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap);
}
}
}
@ -152,7 +157,7 @@ public class AttendanceanalysisAction {
String userIds = Util.null2String(paramMap.get("userIds"));
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ? order by signdate,signtime";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startDate,endDate);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,DateUtil.beforeDay(startDate,1),DateUtil.AfterDay(endDate,1));
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
//考勤项目

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

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

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

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

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

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

@ -382,11 +382,9 @@ public class Utils<T> {
int betweenMinutes = DateUtil.getBetWeenMinutes(kssj,jssj);
log.info("removeRestTime scheduleResult : {}",scheduleResult);
for (Map<String, Object> restSchedule :scheduleResult){
String dtkssj = analysisDate+" "+restSchedule.get("dtkssj");
String dtjssj = analysisDate+" "+restSchedule.get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+restSchedule.get("dtjssj");
}
String dtkssj = Utils.getkssjTime(restSchedule,analysisDate);
String dtjssj = Utils.getjssjTime(restSchedule,analysisDate);
if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtkssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtjssj)) >=0){
//休息时间在请假时间中间
betweenMinutes = betweenMinutes - DateUtil.getBetWeenMinutes(dtkssj,dtjssj);
@ -646,4 +644,51 @@ public class Utils<T> {
return time;
}
public static String getkssjEarliestTime(Map<String,Object> schedulingMap,String date){
String tqdkfzs = Util.null2String(schedulingMap.get("tqdkfzs"));
if ("".equals(tqdkfzs)){
tqdkfzs = "60";
}
return DateUtil.beforeMinutes(getkssjTime(schedulingMap,date),Integer.valueOf(tqdkfzs));
}
public static String getkssjTime(Map<String,Object> schedulingMap,String date){
String gsrq = Util.null2String(schedulingMap.get("gsrq"));
String kssj = Util.null2String(schedulingMap.get("dtkssj"));
if (gsrq.equals(ClassBelongToEnum.YESTERDAY.getKey())){
date = DateUtil.beforeDay(date,1);
}else if (gsrq.equals(ClassBelongToEnum.NEXTDAY.getKey())){
date = DateUtil.AfterDay(date,1);
}
kssj = date+" "+kssj;
return kssj;
}
public static String getjssjLastestTime(Map<String,Object> schedulingMap,String date){
String thdkfzs = Util.null2String(schedulingMap.get("thdkfzs"));
if ("".equals(thdkfzs)){
thdkfzs = "60";
}
return DateUtil.AfterMinutes(getjssjTime(schedulingMap,date),Integer.valueOf(thdkfzs));
}
public static String getjssjTime(Map<String,Object> schedulingMap,String date){
String gsrq = Util.null2String(schedulingMap.get("gsrq"));
String jssj = Util.null2String(schedulingMap.get("dtjssj"));
String kssj = Util.null2String(schedulingMap.get("dtkssj"));
if (gsrq.equals(ClassBelongToEnum.YESTERDAY.getKey())){
date = DateUtil.beforeDay(date,1);
}else if (gsrq.equals(ClassBelongToEnum.NEXTDAY.getKey())){
date = DateUtil.AfterDay(date,1);
}
jssj = date+" "+jssj;
kssj = date+" "+kssj;
if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(jssj)) > 0) {
jssj = DateUtil.AfterDay(date, 1) + " " + Util.null2String(schedulingMap.get("dtjssj"));
}
return jssj;
}
}

Binary file not shown.

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

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

Loading…
Cancel
Save