Merge remote-tracking branch 'origin/main'

zm_dev
sy 9 months ago
commit 0c6fb3f1c4

@ -10,13 +10,85 @@
</component>
<component name="ChangeListManager">
<list default="true" id="baeb3dfb-5097-46c5-933e-6d1dab18b815" name="Changes" comment="">
<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/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/common/util/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/common/util/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetClockInTimeListCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetClockInTimeListCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetEvectionCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetEvectionCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustByWorkOverTimeCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustByWorkOverTimeCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/AbsenteeismItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/AbsenteeismItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/BeAwayItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/BeAwayItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/BeLateItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/BeLateItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/ForGetClockItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/ForGetClockItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/LeaveEarlyItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/LeaveEarlyItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/VacationItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/VacationItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/WorkOvertimeItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/WorkOvertimeItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AttendanceSummaryServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AttendanceSummaryServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/cmd/GenerateScheduleCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/cmd/GenerateScheduleCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/SchedulingJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/SchedulingJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/service/impl/AskForLeaveServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/service/impl/AskForLeaveServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/CommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/CommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/DbTools.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/DbTools.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$10.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$10.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$11.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$11.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$12.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$12.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$13.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$13.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$14.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$14.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$15.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$15.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$16.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$16.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$3.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$4.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$4.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$5.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$5.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$6.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$6.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$7.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$7.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$8.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$8.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$9.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$9.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/Test.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/Test.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -59,9 +131,9 @@
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File" value="PLAIN_TEXT" />
<property name="last_directory_selection" value="$PROJECT_DIR$/src/com/engine/kq" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/test" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="project.structure.last.edited" value="Artifacts" />
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.15287958" />
<property name="settings.editor.selected.configurable" value="editor.preferences.fonts.default" />
@ -71,8 +143,8 @@
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\项目备份\考勤\hrm-attendance\test" />
<recent name="D:\项目备份\考勤\hrm-attendance\log\interceptSql" />
<recent name="D:\项目备份\考勤\hrm-attendance\test" />
<recent name="D:\项目备份\考勤\hrm-attendance\src" />
<recent name="D:\项目备份\考勤\hrm-attendance" />
<recent name="D:\项目备份\考勤\hrm-attendance\workflow\request\hrmattendance" />
@ -194,9 +266,9 @@
<recent_temporary>
<list>
<item itemvalue="JUnit.Test.testAnalysis" />
<item itemvalue="Application.Test" />
<item itemvalue="JUnit.Test1.test1" />
<item itemvalue="JUnit.Test1.test3" />
<item itemvalue="Application.Test" />
<item itemvalue="JUnit.Test.testjob" />
</list>
</recent_temporary>
@ -722,6 +794,18 @@
<workItem from="1720675844486" duration="17476000" />
<workItem from="1720747895355" duration="7406000" />
<workItem from="1720756125339" duration="1646000" />
<workItem from="1720761422457" duration="18001000" />
<workItem from="1720791896115" duration="1643000" />
<workItem from="1720841624218" duration="1797000" />
<workItem from="1720852555447" duration="317000" />
<workItem from="1720854486557" duration="656000" />
<workItem from="1720855753924" duration="1161000" />
<workItem from="1720864159551" duration="2105000" />
<workItem from="1720931193229" duration="612000" />
<workItem from="1720938148886" duration="18384000" />
<workItem from="1720958284858" duration="25000" />
<workItem from="1720958325355" duration="6047000" />
<workItem from="1721006102395" duration="16688000" />
</task>
<servers />
</component>
@ -776,14 +860,24 @@
<option name="timeStamp" value="186" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java</url>
<line>54</line>
<option name="timeStamp" value="189" />
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java</url>
<line>582</line>
<option name="timeStamp" value="243" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java</url>
<line>116</line>
<option name="timeStamp" value="253" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java</url>
<line>141</line>
<option name="timeStamp" value="254" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetClockInTimeListCmd.java</url>
<line>57</line>
<option name="timeStamp" value="190" />
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.java</url>
<line>47</line>
<option name="timeStamp" value="256" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

129551
log/sdk.log

File diff suppressed because one or more lines are too long

@ -146,8 +146,8 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand<Map<String,O
List<Map<String,Object>> overPlanattendanceItems = DbTools.getSqlToList(querySql,overtimePlan.get("jblx"));
map.put("bcxx",resultList == null || resultList.get(0) ==null ? "0" :resultList.get(0).get("bcxx"));
map.put("bcsdxx",resultList == null || resultList.get(0) ==null ? "":resultList.get(0).get("bcsdxx"));
map.put("bcxx",resultList == null || resultList.size()==0 || resultList.get(0) ==null ? "" :resultList.get(0).get("bcxx"));
map.put("bcsdxx",resultList == null || resultList.size()==0 || resultList.get(0) ==null ? "":resultList.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")));

@ -3,17 +3,26 @@ package com.engine.jucailinkq.attendance.attendanceanalysis.cmd;
import com.engine.jucailinkq.attendance.enums.CheckBoxEnum;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.jucailinkq.attendance.vacation.util.VocationCommonUtil;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.core.interceptor.CommandContext;
import com.engine.jucailinkq.common.util.Utils;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.conn.RecordSet;
import weaver.conn.RecordSetTrans;
import weaver.general.Util;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
/**
*
@ -38,13 +47,17 @@ public class RecordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
//项目数据集合
List<Map<String, Object>> recordDataList = (List<Map<String, Object>>)params.get("recordData");
//日期类型
String rqlx = Util.null2String(params.get("rqlx"));
String rqlx = Util.null2String(params.get("rqlx")).equals("")?null:Util.null2String(params.get("rqlx"));
//班次
List<Map<String,Object>> classInfo = (List<Map<String,Object>>)params.get("classInfo");
//进出时间
Map<String,Object> recordDataTime = (Map<String,Object>)params.get("recordDataTime");
//出勤时间
String attendanceDuration = Util.null2String(params.get("attendanceDuration"));
//加班转假期余额集合
List<Map<String, Object>> overTimeHolidayList = params.get("overTimeHolidayList")==null?Lists.newArrayList():(List<Map<String, Object>>)params.get("overTimeHolidayList");
//加班结果集合
List<Map<String, Object>> overTimeResultList = params.get("overTimeResultList")==null?Lists.newArrayList():(List<Map<String, Object>>)params.get("overTimeResultList");
Map<String,String> formmodeIdMap = (Map<String,String>)params.get("formmodeIdMap");
@ -111,7 +124,7 @@ public class RecordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
insertDatas.add(userId);
insertDatas.add(userList.get(0).get("subcompanyid1"));
insertDatas.add(userList.get(0).get("departmentid"));
insertDatas.add(userList.get(0).get("jobtitle"));
insertDatas.add("".equals(userList.get(0).get("jobtitle"))?null:userList.get(0).get("jobtitle"));
insertDatas.add(analysisDate);
insertDatas.add(classInfo.size()>0?classInfo.get(0).get("bcxx"):null);
insertDatas.add(classInfo.size()>0?classInfo.get(0).get("bcsdxx"):null);
@ -162,32 +175,246 @@ public class RecordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
DbTools.update(sql,insertDatas.toArray());
}
updateWorkOverTimeDate(userId,analysisDate);
updateWorkOverTimeDate(userId,analysisDate,overTimeHolidayList,overTimeResultList);
return null;
}
public void updateWorkOverTimeDate(String userId,String date){
/**
*
* @param userId
* @param date
* @param overTimeHolidayList
* @param overTimeResultList
*/
public void updateWorkOverTimeDate(String userId,String date,List<Map<String,Object>> overTimeHolidayList,List<Map<String,Object>> overTimeResultList){
String sql = "select id from uf_jcl_kq_cqjg where ygid=? and rq=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,userId,date);
if (dataList.size() > 0){
String id = Util.null2String(dataList.get(0).get("id"));
RecordSetTrans rst = new RecordSetTrans();
rst.setAutoCommit(false);
//处理加班结果
sql = "select id,jblx,lyid from uf_jcl_kq_jbjg where lyid=? and jbjgly=4";
List<Map<String,Object>> oldOverTimeList = DbTools.getSqlToList(sql,id);
for (Map<String,Object> overTimeResult : overTimeResultList){
overTimeResult.put("lyid",id);
}
try {
sql = "delete from uf_jcl_kq_jbjg where lyid=?";
rst.executeUpdate(sql,id);
sql = "delete from uf_jcl_kq_jqye where lyid=?";
rst.executeUpdate(sql,id);
sql = "update uf_jcl_kq_jbjg set lyid =? where lyid=?";
rst.executeUpdate(sql,id,userId+"-"+DateUtil.getCurrentDate());
sql = "update uf_jcl_kq_jqye set lyid =? where lyid=?";
rst.executeUpdate(sql,id,userId+"-"+DateUtil.getCurrentDate());
rst.commit();
updateOverTimeResult(oldOverTimeList,overTimeResultList);
//处理假期余额
sql = "select id,jqid,ktsc,yxsc,wxsc,ztsc,zfsc,jxsc,dzkxsc,lyid,lyjblx from uf_jcl_kq_jqye where lyid=? and lylx=4";
List<Map<String,Object>> oldOverTimeHolidayList = DbTools.getSqlToList(sql,id);
for (Map<String,Object> overTimeHoliday : overTimeHolidayList){
overTimeHoliday.put("lyid",id);
}
updateOverTimeHoliday(oldOverTimeHolidayList,overTimeHolidayList);
}catch (Exception e){
rst.rollback();
log.error("updateWorkOverTimeDate error :{}",e);
log.error("updateWorkOverTimeDate error : [{}]",e);
}
}
}
/**
*
* @param oldResultData
* @param newResultData
*/
public void updateOverTimeResult(List<Map<String,Object>> oldResultData,List<Map<String,Object>> newResultData)throws Exception{
Map<String,Object> operate = Maps.newHashMap();
operate.put("delete",Lists.newArrayList());
operate.put("insert",Lists.newArrayList());
operate.put("update",Lists.newArrayList());
Map<String,List<Map<String,Object>>> oldOverTimeGroupByType = oldResultData.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("jblx"))));
Map<String,List<Map<String,Object>>> overTimeGroupByType = newResultData.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("jblx"))));
oldOverTimeGroupByType.entrySet().forEach(e->{
String jblx = e.getKey();
List<Map<String,Object>> oldData = e.getValue();
List<Map<String,Object>> newData = overTimeGroupByType.get(jblx);
if (newData == null || newData.size() == 0){
//新数据不存在,老数据存在。老数据需要删除
List<String> deleteList = (List<String>)operate.get("delete");
deleteList.addAll(oldData.stream().map(f->f.get("id").toString()).collect(Collectors.toList()));
}else if (newData.size() == oldData.size()){
//新数据和老数据条数相等。更新老数据。
List<Map<String,Object>> updateList = (List<Map<String,Object>>)operate.get("update");
for (int i =0;i<newData.size();i++){
newData.get(i).put("id",oldData.get(i).get("id"));
}
updateList.addAll(newData);
}else {
//老数据与新数据条数不一致,删除老数据。新增新数据
List<Map<String,Object>> insertList = (List<Map<String,Object>>)operate.get("insert");
List<String> deleteList = (List<String>)operate.get("delete");
deleteList.addAll(oldData.stream().map(f->f.get("id").toString()).collect(Collectors.toList()));
insertList.addAll(newData);
}
});
overTimeGroupByType.entrySet().forEach(e->{
String jblx = e.getKey();
List<Map<String,Object>> newData = e.getValue();
List<Map<String,Object>> oldData = oldOverTimeGroupByType.get(jblx);
if (oldData == null || oldData.size() == 0){
//老数据不存在,新数据存在。新增数据
List<Map<String,Object>> insertList = (List<Map<String,Object>>)operate.get("insert");
insertList.addAll(newData);
}
});
List<String> deleteList = (List<String>) operate.get("delete");
List<Map<String, Object>> updateList = (List<Map<String, Object>>) operate.get("update");
List<Map<String, Object>> insertList = (List<Map<String, Object>>) operate.get("insert");
if (deleteList.size() > 0) {
String deleteSql = "delete from uf_jcl_kq_jbjg where id in (" + String.join(",", deleteList) + ")";
DbTools.update(deleteSql);
}
if (updateList.size() > 0) {
for (Map<String, Object> updateParam : updateList) {
Map<String, Object> condition = Maps.newHashMap();
condition.put("id", updateParam.get("id"));
DbTools.update(CommonUtil.makeUpdateSql("uf_jcl_kq_jbjg", updateParam, condition));
}
}
if (insertList.size() > 0) {
for (Map<String, Object> insertParam : insertList) {
Utils.InsertFormTable("uf_jcl_kq_jbjg",insertParam,(Map<String,String>)params.get("formmodeIdMap"));
}
}
}
/**
*
* @param oldHolidayData
* @param newHolidayData
*/
public void updateOverTimeHoliday(List<Map<String,Object>> oldHolidayData,List<Map<String,Object>> newHolidayData)throws Exception {
Map<String,List<Map<String,Object>>> oldHolidayGroupByType = oldHolidayData.stream().collect(Collectors.groupingBy(e->e.get("lyjblx").toString()));
Map<String,List<Map<String,Object>>> newHolidayGroupByType = newHolidayData.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("lyjblx"))));
List<String> deleteList = Lists.newArrayList();
List<Map<String,Object>> updateList = Lists.newArrayList();
List<Map<String,Object>> insertList = Lists.newArrayList();
List<String> revokeHoliday = Lists.newArrayList();
Map<String,List<Map<String,Object>>> beforeHolidays = Maps.newHashMap();
for (Map.Entry<String,List<Map<String,Object>>> entry : oldHolidayGroupByType.entrySet()){
String jblx = entry.getKey();
Map<String,Object> oldData = entry.getValue().get(0);
List<Map<String,Object>> newDataList = newHolidayGroupByType.get(jblx);
double oldktsc = Double.valueOf(oldData.get("ktsc").toString());
double oldyxsc = Double.valueOf(oldData.get("yxsc").toString());
double oldwxsc = Double.valueOf(oldData.get("wxsc").toString());
double oldzfsc = Double.valueOf(oldData.get("zfsc").toString());
double oldztsc = Double.valueOf(oldData.get("ztsc").toString());
if (newDataList == null || newDataList.size() == 0 || newDataList.get(0).size() <= 1){
//新数据不存在或者可休时长为0老数据存在。
//删除老数据
deleteList.add(oldData.get("id").toString());
if (oldyxsc > 0){
//手动撤销所有请假余额
revokeHoliday.add(oldData.get("id").toString());
}
}else{
double totalKtsc = newDataList.stream().mapToDouble(e->Double.valueOf(e.get("ktsc").toString())).sum();
if (totalKtsc == 0){
//可休时长为0
deleteList.add(oldData.get("id").toString());
if (oldyxsc > 0){
//手动撤销所有请假余额
revokeHoliday.add(oldData.get("id").toString());
}
}else {
Map<String,Object> newData = newDataList.get(0);
newData.put("ktsc",String.format ("%.2f",totalKtsc));
//更新老数据。
newData.put("zfsc",oldzfsc);
newData.put("ztsc",oldztsc);
newData.put("wxsc",VocationCommonUtil.substract(String.format ("%.2f",totalKtsc),oldzfsc,oldztsc,oldyxsc));
newData.put("yxsc",oldyxsc);
newData.put("id",oldData.get("id"));
if (!newData.get("jqid").equals(oldData.get("jqid"))){
//假期类型替换
revokeHoliday.add(oldData.get("id").toString());
newData.put("yxsc",0);
newData.put("wxsc",totalKtsc);
}else {
if (oldwxsc >= 0 && Double.compare(totalKtsc,oldyxsc) <0){
//当没有透支时,新的可休时长小于老的已休时长,手动撤销所有已休请假余额。
revokeHoliday.add(oldData.get("id").toString());
newData.put("yxsc",0);
newData.put("wxsc",totalKtsc);
}else if (oldwxsc < 0 && Double.compare(totalKtsc,oldktsc) < 0){
//当透支时,新的可休时长小于老的可休时长,不撤销继续减
double subctractKtsc = new BigDecimal(String.valueOf(totalKtsc)).subtract(new BigDecimal(String.valueOf(oldktsc)),new MathContext(4, RoundingMode.HALF_UP)).doubleValue();
newData.put("yxsc",oldyxsc+subctractKtsc);
newData.put("wxsc",new BigDecimal(oldData.get("wxsc").toString()).subtract(new BigDecimal(String.valueOf(subctractKtsc)),new MathContext(4, RoundingMode.HALF_UP)).doubleValue());
}
}
updateList.add(newData);
}
}
}
String queryHolidaySql = "select id,yxsc,wxsc,ktsc,jqid,ztsc,zfsc from uf_jcl_kq_jqye where ygid=? and jqid=? order by modedatacreatedate desc,modedatacreatetime desc";
for (Map.Entry<String,List<Map<String,Object>>> entry : newHolidayGroupByType.entrySet()){
String jblx = entry.getKey();
List<Map<String,Object>> newDataList = entry.getValue();
if (newDataList != null && newDataList.size() > 0 && newDataList.get(0).size() > 1){
double totalKtsc = newDataList.stream().mapToDouble(e->Double.valueOf(e.get("ktsc").toString())).sum();
Map<String,Object> newData = newDataList.get(0);
List<Map<String,Object>> oldData = oldHolidayGroupByType.get(jblx);
if (oldData == null || oldData.size() == 0){
newData.put("ktsc",totalKtsc);
beforeHolidays.put(newData.get("jqid").toString(),DbTools.getSqlToList(queryHolidaySql,newData.get("ygid"),newData.get("jqid")));
//老数据不存在,新数据存在。新增数据
insertList.add(newData);
}
}
}
if (deleteList.size() > 0){
String deleteSql = "delete from uf_jcl_kq_jqye where id in ("+String.join(",",deleteList)+")";
DbTools.update(deleteSql);
}
if (updateList.size() > 0){
for (Map<String,Object> updateParam:updateList){
Map<String,Object> condition = Maps.newHashMap();
condition.put("id",updateParam.get("id"));
DbTools.update(CommonUtil.makeUpdateSql("uf_jcl_kq_jqye",updateParam,condition));
}
}
if (insertList.size() > 0){
for (Map<String,Object> insertParam:insertList){
List<Map<String,Object>> beforeHolidayList = beforeHolidays.get(insertParam.get("jqid").toString());
double beforewxsc = 0;
if (beforeHolidayList != null && beforeHolidayList.size() >0){
//假期余额透支功能
beforewxsc =Double.valueOf(beforeHolidayList.get(0).get("wxsc").toString());
}
if (beforewxsc < 0){
insertParam.put("wxsc",Double.valueOf(insertParam.get("ktsc").toString())+beforewxsc);
insertParam.put("yxsc",0-beforewxsc);
}
boolean excuteResult = Utils.InsertFormTable("uf_jcl_kq_jqye",insertParam,(Map<String,String>)params.get("formmodeIdMap"));
List<Map<String,Object>> nowdataList = DbTools.getSqlToList(queryHolidaySql,insertParam.get("ygid"),insertParam.get("jqid"));
if (excuteResult && beforewxsc <0){
VocationCommonUtil.handleOverdraftHoliday(beforeHolidayList.get(0),beforewxsc,nowdataList.get(0));
}
}
}
if (revokeHoliday.size() > 0){
String sql = "select b.id from uf_jcl_kq_qjjl_dt2 a left join uf_jcl_kq_qjjl_dt1 b on a.glmxid=b.glmxid where a.jqye in ("+String.join(",",revokeHoliday)+")";
List<String> needRevokeHolidays = DbTools.getSqlToList(sql).stream().map(e->e.get("id").toString()).collect(Collectors.toList());
if (needRevokeHolidays.size() > 0){
sql = "update uf_jcl_kq_qjjl_dt1 set cxqj=1 where id in ("+String.join(",",needRevokeHolidays)+")";
DbTools.update(sql);
}
}
}
}

@ -86,6 +86,8 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
String userId = Util.null2String(params.get("userId"));
Map<String,Object> resultMap = Maps.newHashMap();
if (!"".equals(jbqsfzs)){
if (jbsc < Integer.valueOf(jbqsfzs)){
//小于最小加班分钟数不算加班
@ -170,11 +172,14 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
*
*/
//加班时长自动转入假期余额
resultMap.put("overTimeHoliday",Maps.newHashMap());
if (CheckBoxEnum.CHECKED.getKey().equals(jbzdzjqye)){
Map<String,Object> insertHoliDayParam = Maps.newHashMap();
insertHoliDayParam.put("ygid",userId);
insertHoliDayParam.put("jqid",workTimeBeLateItems.get(0).get("zrdjb"));
insertHoliDayParam.put("lyid",userId+"-"+DateUtil.getCurrentDate());
insertHoliDayParam.put("lylx","4");
insertHoliDayParam.put("lyjblx",workTimeBeLateItems.get(0).get("key"));
Map<String,Object> holidayItem = getHolidayItem(workTimeBeLateItems.get(0).get("zrdjb").toString(),attendanceItems);
double ktsc = Utils.getItemdurationDown(Double.valueOf(holidayItem.get("hsl").toString()),holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES);
@ -232,6 +237,7 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
}
String zdyqsc = Util.null2String(workTimeBeLateItems.get(0).get("zdyqsc"));
insertHoliDayParam.put("yqsxrq",insertHoliDayParam.get("jzrq"));
if (DelayTypeEnum.ONE_MONTH.getKey().equals(zdyqsc)){
//一个月
insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(insertHoliDayParam.get("jzrq").toString(),1,DateUtil.yyyyMMdd));
@ -248,12 +254,11 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
//一年
insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(insertHoliDayParam.get("jzrq").toString(),12,DateUtil.yyyyMMdd));
}
updateholidayResult(id,insertHoliDayParam);
resultMap.put("overTimeHoliday",getholidayResult(id,insertHoliDayParam));
}
updateOverTimeResult(id,insertParam);
return workOverTimeItems;
resultMap.put("overTimeResult",getOverTimeResult(id,insertParam));
resultMap.put("workOverTimeItems",workOverTimeItems);
return resultMap;
}
public List<Map<String, Object>> getWorkOverTimeResults(String startDate,String endDate,String userId){
@ -310,7 +315,7 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
/**
*
*/
public void updateOverTimeResult(String lyid, Map<String,Object> insertParam){
public Map<String,Object> getOverTimeResult(String lyid, Map<String,Object> insertParam){
if (!"".equals(lyid)){
String sql = "select edjxsc,ydxsc from uf_jcl_kq_jbjg where lyid=?";
List<Map<String,Object>> overTimeResultList = DbTools.getSqlToList(sql,lyid);
@ -323,52 +328,43 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
insertParam.put("wdxsc",String.format("%.2f",eddxsc-ydxsc));
}
}
Utils.InsertFormTable("uf_jcl_kq_jbjg",insertParam,(Map<String,String>)params.get("formmodeIdMap"));
return insertParam;
//Utils.InsertFormTable("uf_jcl_kq_jbjg",insertParam,(Map<String,String>)params.get("formmodeIdMap"));
}
/**
*
* 0
*/
public void updateholidayResult(String lyid,Map<String,Object> insertParam){
public Map<String,Object> getholidayResult(String lyid,Map<String,Object> insertParam){
double ktsc = Utils.convertDouble(insertParam.get("ktsc"));
String queryBeforeHolidaySql = "select id,yxsc,wxsc,ktsc,lyid from uf_jcl_kq_jqye where ygid=? and jqid=? order by jzrq desc, modedatacreatedate desc ,modedatacreatetime";
List<Map<String,Object>> beforeHolidayBalanceList = DbTools.getSqlToList(queryBeforeHolidaySql,insertParam.get("ygid"),insertParam.get("jqid"));
double beforewxsc = 0;
if (!"".equals(lyid)) {
beforeHolidayBalanceList = beforeHolidayBalanceList.stream().filter(e->!e.get("lyid").equals(lyid)).collect(Collectors.toList());
if (beforeHolidayBalanceList.size() > 0 && Double.valueOf(beforeHolidayBalanceList.get(0).get("wxsc").toString()) <0){
beforewxsc = Double.valueOf(beforeHolidayBalanceList.get(0).get("wxsc").toString());
}
String sql = "select yxsc,ztsc,zfsc,jxsc,yqsc,yqyxsc from uf_jcl_kq_jqye where lyid=?";
List<Map<String,Object>> holidayList = DbTools.getSqlToList(sql,lyid);
if (holidayList.size() > 0){
Map<String,Object> holidayMap = holidayList.get(0);
insertParam.put("yxsc",holidayMap.get("yxsc"));
insertParam.put("ztsc",holidayMap.get("ztsc"));
insertParam.put("zfsc",holidayMap.get("zfsc"));
insertParam.put("jxsc",holidayMap.get("jxsc"));
insertParam.put("yqsc",holidayMap.get("yqsc"));
insertParam.put("yqyxsc",holidayMap.get("yqyxsc"));
double wxsc = ktsc-Utils.convertDouble(insertParam.get("yxsc"))-Utils.convertDouble(holidayMap.get("ztsc"))-Utils.convertDouble(holidayMap.get("zfsc"));
insertParam.put("wxsc",String.format("%.2f",wxsc));
}else {
if (ktsc == 0){
insertParam.put("lyid",lyid);
}
}
Utils.InsertFormTable("uf_jcl_kq_jqye",insertParam,(Map<String,String>)params.get("formmodeIdMap"));
}else {
if (ktsc !=0){
if (beforeHolidayBalanceList.size() > 0 && Double.valueOf(beforeHolidayBalanceList.get(0).get("wxsc").toString()) <0){
beforewxsc = Double.valueOf(beforeHolidayBalanceList.get(0).get("wxsc").toString());
}
Utils.InsertFormTable("uf_jcl_kq_jqye",insertParam,(Map<String,String>)params.get("formmodeIdMap"));
}
// String sql = "select yxsc,ztsc,zfsc,jxsc,yqsc,yqyxsc from uf_jcl_kq_jqye where lyid=?";
// List<Map<String,Object>> holidayList = DbTools.getSqlToList(sql,lyid);
// if (holidayList.size() > 0){
// Map<String,Object> holidayMap = holidayList.get(0);
// insertParam.put("yxsc",holidayMap.get("yxsc"));
// insertParam.put("ztsc",holidayMap.get("ztsc"));
// insertParam.put("zfsc",holidayMap.get("zfsc"));
// insertParam.put("jxsc",holidayMap.get("jxsc"));
// insertParam.put("yqsc",holidayMap.get("yqsc"));
// insertParam.put("yqyxsc",holidayMap.get("yqyxsc"));
// double wxsc = ktsc-Utils.convertDouble(insertParam.get("yxsc"))-Utils.convertDouble(holidayMap.get("ztsc"))-Utils.convertDouble(holidayMap.get("zfsc"));
// insertParam.put("wxsc",String.format("%.2f",wxsc));
// }
// else {
// if (ktsc == 0){
// insertParam.put("lyid",lyid);
// }
// }
// Utils.InsertFormTable("uf_jcl_kq_jqye",insertParam,(Map<String,String>)params.get("formmodeIdMap"));
}
// else {
// if (ktsc !=0){
// Utils.InsertFormTable("uf_jcl_kq_jqye",insertParam,(Map<String,String>)params.get("formmodeIdMap"));
// }
// }
return insertParam;
}

@ -12,5 +12,5 @@ public interface WorkOverTimeService {
* @param params
* @return
*/
List<Map<String, Object>> recordWorkOverTime(Map<String,Object> params);
Map<String, Object> recordWorkOverTime(Map<String,Object> params);
}

@ -24,7 +24,7 @@ import java.util.stream.Collectors;
@Slf4j
public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeService {
@Override
public List<Map<String, Object>> recordWorkOverTime(Map<String, Object> params) {
public Map<String, Object> recordWorkOverTime(Map<String, Object> params) {
//考勤项目
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)params.get("attendanceItems");
//排班
@ -58,7 +58,10 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
/**
*
*/
List<Map<String, Object>> resultLists = Lists.newArrayList();
Map<String,Object> resultMap = Maps.newHashMap();
List<Map<String, Object>> workOverTimeItemList = Lists.newArrayList();
List<Map<String, Object>> overTimeHolidayList = Lists.newArrayList();
List<Map<String, Object>> overTimeResultList = Lists.newArrayList();
for (Map<String, Object> scheduleMap :scheduleResult){
List<Map<String,Object>> workTimeBeLateItems = getWorkTimeBeLateItems(scheduleMap,attendanceItems);
if (workTimeBeLateItems.size() == 0 || ClassSegmentTypeEnum.WORK_TIME.getKey().equals(scheduleMap.get("beforeClassSegment"))){
@ -71,8 +74,16 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
Map<String,Object> overTimeDuraionMap = commandExecutor.execute(new GetOvertimeDurationCmd(params));
params.putAll(overTimeDuraionMap);
//获得加班项目
Map<String,Object> itemMap = commandExecutor.execute(new SaveWorkOverTimeCmd(params));
resultLists.add(itemMap);
Map<String,Object> saveWorkOverTimeMap = commandExecutor.execute(new SaveWorkOverTimeCmd(params));
if (saveWorkOverTimeMap.get("workOverTimeItems") != null){
workOverTimeItemList.add((Map<String,Object>)saveWorkOverTimeMap.get("workOverTimeItems"));
}
if (saveWorkOverTimeMap.get("overTimeHoliday") != null){
overTimeHolidayList.add((Map<String,Object>)saveWorkOverTimeMap.get("overTimeHoliday"));
}
if (saveWorkOverTimeMap.get("overTimeResult") != null){
overTimeResultList.add((Map<String,Object>)saveWorkOverTimeMap.get("overTimeResult"));
}
}
/**
@ -100,12 +111,22 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ
String realityEndime = restOverTimeDuraion.stream().max(Comparator.comparing(e->DateUtil.getTime(e.get("realityEndime").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).get().get("realityEndime").toString();
params.put("realityStartTime",realityStartTime);
params.put("realityEndime",realityEndime);
Map<String,Object> itemMap = commandExecutor.execute(new SaveWorkOverTimeCmd(params));
resultLists.add(itemMap);
Map<String,Object> saveWorkOverTimeMap = commandExecutor.execute(new SaveWorkOverTimeCmd(params));
if (saveWorkOverTimeMap.get("workOverTimeItems") != null){
workOverTimeItemList.add((Map<String,Object>)saveWorkOverTimeMap.get("workOverTimeItems"));
}
if (saveWorkOverTimeMap.get("overTimeHoliday") != null){
overTimeHolidayList.add((Map<String,Object>)saveWorkOverTimeMap.get("overTimeHoliday"));
}
if (saveWorkOverTimeMap.get("overTimeResult") != null){
overTimeResultList.add((Map<String,Object>)saveWorkOverTimeMap.get("overTimeResult"));
}
}
return resultLists;
resultMap.put("workOverTimeItemList",workOverTimeItemList);
resultMap.put("overTimeHolidayList",overTimeHolidayList);
resultMap.put("overTimeResultList",overTimeResultList);
return resultMap;
}
public List<Map<String,Object>> getWorkTimeBeLateItems(Map<String, Object> scheduleMap,List<Map<String,Object>> attendanceItems){

@ -48,8 +48,8 @@ public class AttendanceanalysisAction {
try {
Map<String,Object> paramMap = ParamUtil.request2Map(request);
// Map<String,Object> paramMap = Maps.newHashMap();
// paramMap.put("startDate","2024-07-01");
// paramMap.put("endDate","2024-07-01");
// paramMap.put("startDate","2024-06-01");
// paramMap.put("endDate","2024-06-30");
// paramMap.put("userIds","81");
String startDate = Util.null2String(paramMap.get("startDate"));

@ -304,7 +304,6 @@ public class AttendanceAnalysisWrapper extends Service {
/**
*
*/
Map<String, Object> vactionMap = updateAttendanceResultWrapper.recordAskForLeave(recordAbnormalParam);
List<Map<String, Object>> abnormalClockInListByAskForLeave = (List<Map<String, Object>>) vactionMap.get("abnormalClockInList");
List<Map<String, Object>> vactionList = (List<Map<String, Object>>) vactionMap.get("resultList");
@ -324,8 +323,11 @@ public class AttendanceAnalysisWrapper extends Service {
log.debug("出差外出后消除的异常 : [{}]", recordEvection.get("offsetEvectionAnomaly"));
/**
*
* workOverTimeItemList:
* overTimeHolidayList
* overTimeResultList
*/
List<Map<String, Object>> recordWorkOverTime = updateAttendanceResultWrapper.recordWorkOverTime(recordAbnormalParam);
Map<String, Object> recordWorkOverTime = updateAttendanceResultWrapper.recordWorkOverTime(recordAbnormalParam);
/**
@ -341,10 +343,15 @@ public class AttendanceAnalysisWrapper extends Service {
recordData.addAll(evectionResultList);
abnormalClockInListByEvction = abnormalClockInListByEvction.stream().filter(e -> (boolean) e.get("record")).collect(Collectors.toList());
recordData.addAll(abnormalClockInListByEvction);
recordData.addAll(recordWorkOverTime);
List<Map<String, Object>> workOverTimeItemList = (List<Map<String, Object>>)recordWorkOverTime.get("workOverTimeItemList");
if (workOverTimeItemList.size() > 0){
recordData.addAll(workOverTimeItemList);
}
recordParam.put("recordData", recordData);
recordParam.put("recordDataTime", utilService.getNeedRecordClockInTime(clcokInTimeData));
recordParam.put("attendanceDuration", attendanceDuration);
recordParam.put("overTimeHolidayList",recordWorkOverTime.get("overTimeHolidayList") == null?Lists.newArrayList():recordWorkOverTime.get("overTimeHolidayList"));
recordParam.put("overTimeResultList",recordWorkOverTime.get("overTimeResultList") == null?Lists.newArrayList():recordWorkOverTime.get("overTimeResultList"));
log.info("recordParam : {}", recordParam);
if (abnormalClockInListByEvction.size() > 0) {
recordParam.put("cqzt", CheckBoxEnum.CHECKED.getKey());

@ -175,7 +175,7 @@ public class UpdateAttendanceResultWrapper extends Service {
* @param params
* @return
*/
public List<Map<String, Object>> recordWorkOverTime(Map<String,Object> params){
public Map<String, Object> recordWorkOverTime(Map<String,Object> params){
return workOverTimeService.recordWorkOverTime(params);
}

@ -35,7 +35,7 @@ public class GetDatatableCmd extends AbstractCommonCommand<Map<String,Object>> {
int pageSize = Integer.valueOf(Util.null2String(params.get("pageSize")));
String showAll = Util.null2String(params.get("showAll"));
RecordSet rs = new RecordSet();
Map<String, Object> resultMap = Maps.newHashMap();
String sql = "select id from "+tableName +" where 1=1 ";
List<Object> param = Lists.newArrayList();
@ -75,7 +75,7 @@ public class GetDatatableCmd extends AbstractCommonCommand<Map<String,Object>> {
}
int startindex = (current-1)*pageSize;
int endindex = current*pageSize;
String dbType = rs.getDBType();
String dbType = DbTools.thread.get().getDBType();
if ("oracle".equals(dbType) || "dm".equals(dbType) || "jc".equals(dbType) || "st".equals(dbType)){
sql = "select a.id as keyid,b.lastname,a.*,ROWNUM rn from "+tableName +" a left join hrmresource b on a.pbdxry=b.id where ROWNUM<="+endindex;

@ -8,6 +8,7 @@ import com.engine.jucailinkq.common.util.Utils;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.conn.RecordSetTrans;
import weaver.general.TimeUtil;
import weaver.general.Util;
@ -472,99 +473,85 @@ public class VocationCommonUtil {
*/
public static void updateHolidayBalance(String tableName,Map<String,Object> dataMap,List<Map<String,Object>> dataList,String edyxq){
log.debug("updateHolidayBalance dataMap:[{}]",dataMap);
String lyid = Util.null2String(dataMap.get("lyid"));
String ygid = Util.null2String(dataMap.get("ygid"));
String jqid = Util.null2String(dataMap.get("jqid"));
String sxrq = Util.null2String(dataMap.get("sxrq"));
String jzrq = Util.null2String(dataMap.get("jzrq"));
dataMap.put("yxsc",0);
dataMap.put("ztsc",0);
dataMap.put("wxsc",dataMap.get("ktsc"));
dataMap.put("yqsxrq",dataMap.get("jzrq"));
dataMap.put("jxsc",0);
dataMap.put("yqsc",0);
dataMap.put("yqyxsc",0);
//查询上一笔假期余额是否有透支情况
String queryBeforeHolidaySql = "select id,yxsc,wxsc,ktsc from uf_jcl_kq_jqye where and ygid=? and jqid=? and sxrq=? and jzrq=? order by modedatacreatedate desc ,modedatacreatetime";
String beforeSxrq = "";
String beforeJzrq = "";
if (edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey()) || edyxq.equals(StartingUnitEnum.STARTING_YEAR.getKey())){
beforeSxrq = DateUtil.beforeYear(sxrq,1,DateUtil.yyyyMMdd);
beforeJzrq = DateUtil.beforeYear(jzrq,1,DateUtil.yyyyMMdd);
}else if (edyxq.equals(StartingUnitEnum.NATURAL_MONTH.getKey()) || edyxq.equals(StartingUnitEnum.STARTING_MONTH.getKey())){
beforeSxrq = DateUtil.beforeMonth(sxrq,1);
beforeJzrq = DateUtil.beforeMonth(jzrq,1);
}else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey()) || edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){
beforeSxrq = DateUtil.beforeDay(sxrq,7);
beforeJzrq = DateUtil.beforeDay(jzrq,7);
}else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){
beforeSxrq = DateUtil.beforeDay(sxrq,1);
beforeJzrq = DateUtil.beforeDay(jzrq,1);
}
List<Map<String,Object>> beforeHolidayBalanceList = DbTools.getSqlToList(queryBeforeHolidaySql,lyid,ygid,jqid,beforeSxrq,beforeJzrq);
double beforewxsc = 0;
String updatesql = "update uf_jcl_kq_jqye set wxsc=0,yxsc=ktsc where id=?";
if (beforeHolidayBalanceList.size() > 0 && Double.valueOf(beforeHolidayBalanceList.get(0).get("wxsc").toString()) <0){
//beforeHolidayBalanceList
beforewxsc = Double.valueOf(beforeHolidayBalanceList.get(0).get("wxsc").toString());
}
boolean excuteResult = false;
if (dataList.size()>0){
Map<String,Object> condition = Maps.newHashMap();
condition.put("id",dataList.get(0).get("id"));
double ktsc = Double.valueOf(dataMap.get("ktsc").toString());
double oldyxsc = Double.valueOf(Util.null2String(dataList.get(0).get("yxsc")).equals("")?"0":Util.null2String(dataList.get(0).get("yxsc")));
double oldztsc = Double.valueOf(Util.null2String(dataList.get(0).get("ztsc")).equals("")?"0":Util.null2String(dataList.get(0).get("ztsc")));
double oldzfsc = Double.valueOf(Util.null2String(dataList.get(0).get("zfsc")).equals("")?"0":Util.null2String(dataList.get(0).get("zfsc")));
double oldjxsc = Double.valueOf(Util.null2String(dataList.get(0).get("jxsc")).equals("")?"0":Util.null2String(dataList.get(0).get("jxsc")));
dataMap.put("yqsc",dataList.get(0).get("yqsc"));
dataMap.put("yqyxsc",dataList.get(0).get("yqyxsc"));
dataMap.put("jxsc",oldjxsc);
dataMap.put("ztsc",oldztsc);
dataMap.put("zfsc",oldzfsc);
double wxsc = ktsc-oldztsc-oldzfsc-oldyxsc;
if (beforewxsc < 0){
wxsc = wxsc+beforewxsc;
oldyxsc = oldyxsc-beforewxsc;
try {
String lyid = Util.null2String(dataMap.get("lyid"));
String ygid = Util.null2String(dataMap.get("ygid"));
String jqid = Util.null2String(dataMap.get("jqid"));
String sxrq = Util.null2String(dataMap.get("sxrq"));
String jzrq = Util.null2String(dataMap.get("jzrq"));
dataMap.put("yxsc",0);
dataMap.put("ztsc",0);
dataMap.put("wxsc",dataMap.get("ktsc"));
dataMap.put("yqsxrq",dataMap.get("jzrq"));
dataMap.put("jxsc",0);
dataMap.put("yqsc",0);
dataMap.put("yqyxsc",0);
dataMap.put("zfsc",0);
//查询上一笔假期余额是否有透支情况
String queryBeforeHolidaySql = "select id,yxsc,wxsc,ktsc,ztsc,zfsc,modedatacreatedate,modedatacreatetime from uf_jcl_kq_jqye where ygid=? and jqid=? order by modedatacreatedate desc ,modedatacreatetime desc";
String beforeSxrq = "";
String beforeJzrq = "";
if (edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey()) || edyxq.equals(StartingUnitEnum.STARTING_YEAR.getKey())){
beforeSxrq = DateUtil.beforeYear(sxrq,1,DateUtil.yyyyMMdd);
beforeJzrq = DateUtil.beforeYear(jzrq,1,DateUtil.yyyyMMdd);
}else if (edyxq.equals(StartingUnitEnum.NATURAL_MONTH.getKey()) || edyxq.equals(StartingUnitEnum.STARTING_MONTH.getKey())){
beforeSxrq = DateUtil.beforeMonth(sxrq,1);
beforeJzrq = DateUtil.beforeMonth(jzrq,1);
}else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey()) || edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){
beforeSxrq = DateUtil.beforeDay(sxrq,7);
beforeJzrq = DateUtil.beforeDay(jzrq,7);
}else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){
beforeSxrq = DateUtil.beforeDay(sxrq,1);
beforeJzrq = DateUtil.beforeDay(jzrq,1);
}
dataMap.put("yxsc",oldyxsc);
dataMap.put("wxsc",String.format ("%.2f",wxsc));
excuteResult = DbTools.update(CommonUtil.makeUpdateSql(tableName,dataMap,condition));
}else {
if (beforewxsc < 0){
dataMap.put("wxsc",Double.valueOf(dataMap.get("ktsc").toString())+beforewxsc);
dataMap.put("yxsc",0-beforewxsc);
}
excuteResult = Utils.InsertFormTable(tableName, dataMap, Utils.getFormmodeIdMap());
dataList = DbTools.getSqlToList(queryBeforeHolidaySql,lyid,ygid,jqid,dataMap.get("sxrq"),dataMap.get("jzrq"));
}
if (excuteResult && beforewxsc < 0){
//上一笔假透支归0
DbTools.update(updatesql,beforeHolidayBalanceList.get(0).get("id"));
//修改请假申请明细的假期余额字段将透支的假改成当前的
String currentHolidayId = dataList.get(0).get("id").toString();
String beforeHolidayId = beforeHolidayBalanceList.get(0).get("id").toString();
String sql = "select id,glrq,sysc from uf_jcl_kq_qjjl_dt2 where jqye=? order by id desc";
List<Map<String,Object>> askforleaveList = DbTools.getSqlToList(sql,beforeHolidayId);
BigDecimal overdraftHoliday = new BigDecimal(String.valueOf(Math.abs(beforewxsc)));
List<String> ids = Lists.newArrayList();
for (Map<String,Object> askforleave:askforleaveList){
BigDecimal sysc = new BigDecimal(askforleave.get("sysc").toString());
overdraftHoliday = overdraftHoliday.subtract(sysc,new MathContext(2, RoundingMode.HALF_UP));
if (overdraftHoliday.doubleValue() >= 0){
ids.add(askforleave.get("id").toString());
List<Map<String,Object>> beforeHolidayBalanceList = DbTools.getSqlToList(queryBeforeHolidaySql,ygid,jqid);
double beforewxsc = 0;
boolean excuteResult = false;
if (dataList.size()>0){
Map<String,Object> condition = Maps.newHashMap();
condition.put("id",dataList.get(0).get("id"));
double ktsc = Double.valueOf(dataMap.get("ktsc").toString());
double oldyxsc = Double.valueOf(Util.null2String(dataList.get(0).get("yxsc")).equals("")?"0":Util.null2String(dataList.get(0).get("yxsc")));
double oldztsc = Double.valueOf(Util.null2String(dataList.get(0).get("ztsc")).equals("")?"0":Util.null2String(dataList.get(0).get("ztsc")));
double oldzfsc = Double.valueOf(Util.null2String(dataList.get(0).get("zfsc")).equals("")?"0":Util.null2String(dataList.get(0).get("zfsc")));
double oldjxsc = Double.valueOf(Util.null2String(dataList.get(0).get("jxsc")).equals("")?"0":Util.null2String(dataList.get(0).get("jxsc")));
dataMap.put("yqsc",dataList.get(0).get("yqsc"));
dataMap.put("yqyxsc",dataList.get(0).get("yqyxsc"));
dataMap.put("jxsc",oldjxsc);
dataMap.put("ztsc",oldztsc);
dataMap.put("zfsc",oldzfsc);
double wxsc = VocationCommonUtil.substract(dataMap.get("ktsc").toString(),oldztsc,oldzfsc,oldyxsc);
// if (beforewxsc < 0){
// wxsc = wxsc+beforewxsc;
// oldyxsc = oldyxsc-beforewxsc;
// }
dataMap.put("yxsc",oldyxsc);
dataMap.put("wxsc",String.format ("%.2f",wxsc));
excuteResult = DbTools.update(CommonUtil.makeUpdateSql(tableName,dataMap,condition));
}else {
if (beforeHolidayBalanceList.size() > 0 && Double.valueOf(beforeHolidayBalanceList.get(0).get("wxsc").toString()) <0){
//beforeHolidayBalanceList
beforewxsc = Double.valueOf(beforeHolidayBalanceList.get(0).get("wxsc").toString());
}
if (beforewxsc < 0){
dataMap.put("wxsc",Double.valueOf(dataMap.get("ktsc").toString())+beforewxsc);
dataMap.put("yxsc",0-beforewxsc);
}
excuteResult = Utils.InsertFormTable(tableName, dataMap, Utils.getFormmodeIdMap());
String querNowSql = "select id,yxsc,wxsc,ktsc from uf_jcl_kq_jqye where lyid=? and ygid=? and jqid=? and sxrq=? and jzrq=? and (lylx is null or lylx = 6) order by modedatacreatedate desc ,modedatacreatetime desc";
dataList = DbTools.getSqlToList(querNowSql,lyid,ygid,jqid,dataMap.get("sxrq"),dataMap.get("jzrq"));
if (excuteResult && beforewxsc <0){
handleOverdraftHoliday(beforeHolidayBalanceList.get(0),beforewxsc,dataList.get(0));
}
}
log.info("need adjust askforleave detail2 data : [{}]",ids);
if (ids.size() > 0){
updatesql = "update uf_jcl_kq_qjjl_dt2 set jqye=? where id in ("+String.join(",",ids)+")";
DbTools.update(updatesql,currentHolidayId);
}
}catch (Exception e){
log.error(e.getMessage());
}
}
/**
@ -585,4 +572,64 @@ public class VocationCommonUtil {
return dataList;
}
/**
*
*/
public static void handleOverdraftHoliday(Map<String,Object> beforeHolidayBalance, double beforewxsc, Map<String,Object> nowData)throws Exception{
String updatesql = "update uf_jcl_kq_jqye set wxsc=0,yxsc=? where id=?";
double oldktsc = Double.valueOf(beforeHolidayBalance.get("ktsc").toString());
double oldztsc = Double.valueOf(Util.null2String(beforeHolidayBalance.get("ztsc")).equals("")?"0":Util.null2String(beforeHolidayBalance.get("ztsc")));
double oldzfsc = Double.valueOf(Util.null2String(beforeHolidayBalance.get("zfsc")).equals("")?"0":Util.null2String(beforeHolidayBalance.get("zfsc")));
//上一笔假透支归0
double oldyxsc = new BigDecimal(oldktsc).subtract(new BigDecimal(oldztsc)).subtract(new BigDecimal(oldzfsc),new MathContext(2, RoundingMode.HALF_UP)).doubleValue();
DbTools.update(updatesql,oldyxsc,beforeHolidayBalance.get("id"));
//修改请假申请明细的假期余额字段将透支的假改成当前的
String currentHolidayId = nowData.get("id").toString();
String beforeHolidayId = beforeHolidayBalance.get("id").toString();
String sql = "select id,glrq,sysc,mainid,glmxid,jqye,mxid from uf_jcl_kq_qjjl_dt2 where jqye=? order by id desc";
List<Map<String,Object>> askforleaveList = DbTools.getSqlToList(sql,beforeHolidayId);
BigDecimal overdraftHoliday = new BigDecimal(String.valueOf(Math.abs(beforewxsc)));
List<String> ids = Lists.newArrayList();
for (Map<String,Object> askforleave:askforleaveList){
BigDecimal sysc = new BigDecimal(askforleave.get("sysc").toString());
overdraftHoliday = overdraftHoliday.subtract(sysc,new MathContext(2, RoundingMode.HALF_UP));
if (overdraftHoliday.doubleValue() >= 0){
ids.add(askforleave.get("id").toString());
}else {
double newsysc = Math.abs(overdraftHoliday.doubleValue());
overdraftHoliday = overdraftHoliday.add(sysc);
String updateSql = "update uf_jcl_kq_qjjl_dt2 set sysc=? where id=?";
Map<String,Object> insertParam = Maps.newHashMap();
insertParam.put("mainid",askforleave.get("mainid"));
insertParam.put("glmxid",askforleave.get("glmxid"));
insertParam.put("jqye",currentHolidayId);
insertParam.put("sysc",overdraftHoliday.doubleValue());
insertParam.put("glrq",askforleave.get("glrq"));
insertParam.put("mxid",askforleave.get("mxid"));
if (DbTools.update(updateSql,newsysc,askforleave.get("id"))){
Utils.InsertFormTable("uf_jcl_kq_qjjl_dt2",insertParam,Utils.getFormmodeIdMap());
}
break;
}
}
log.info("need adjust askforleave detail2 data : [{}]",ids);
if (ids.size() > 0){
updatesql = "update uf_jcl_kq_qjjl_dt2 set jqye=? where id in ("+String.join(",",ids)+")";
DbTools.update(updatesql,currentHolidayId);
}
}
public static double substract(String total,Object...values){
BigDecimal totalbig = new BigDecimal(total);
for (Object value :values){
totalbig = totalbig.subtract(new BigDecimal(String.valueOf(value)),new MathContext(4, RoundingMode.HALF_UP));
}
return totalbig.doubleValue();
}
}

@ -35,7 +35,7 @@ public class GetAskForLeaveRecordListCmd extends AbstractCommonCommand<Map<Strin
String endDate = Util.null2String(params.get("endDate"));
log.debug("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=?";
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) and a.qjry =? and a.ksrq >= ? and a.ksrq <= ? and a.jqlx=?";
List<Map<String, Object>> detailList = DbTools.getSqlToList(detailSql,targetUserId,startDate,endDate,businessTripsType);
if (detailList.size() > 0) {
retmap.put("result", detailList);

@ -10,6 +10,7 @@ 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.conn.RecordSetTrans;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import weaver.soa.workflow.request.*;
@ -51,6 +52,7 @@ public class CommonUtil {
return DbTools.update(insertSql,dataList);
}
/**
* updatesql
* @param tableName

@ -2,6 +2,7 @@ package com.engine.jucailinkq.common.util;
import com.google.common.collect.Maps;
import weaver.conn.RecordSet;
import weaver.conn.RecordSetTrans;
import java.util.ArrayList;
import java.util.HashMap;
@ -10,8 +11,9 @@ import java.util.Map;
public class DbTools {
private static ThreadLocal<RecordSet> thread = ThreadLocal.withInitial(()->new RecordSet());
public static ThreadLocal<RecordSet> thread = ThreadLocal.withInitial(()->new RecordSet());
public static ThreadLocal<RecordSetTrans> threadRecordSetTrans = ThreadLocal.withInitial(()->new RecordSetTrans());
public static List<Map<String,Object>> getSqlToList(String sql,Object...value){
RecordSet rs = thread.get();

@ -584,12 +584,14 @@ public class Utils<T> {
*/
public static boolean InsertFormTable(String tableName,Map<String,Object> dataMap,Map<String,String> formmodeIdMap){
String formmodeId = formmodeIdMap.get(tableName);
dataMap.put("formmodeid",formmodeId);
dataMap.put("modeuuid", UUID.randomUUID().toString());
dataMap.put("modedatacreater","1");
dataMap.put("modedatacreatertype","0");
dataMap.put("modedatacreatedate",DateUtil.getCurrentTime().split(" ")[0]);
dataMap.put("modedatacreatetime",DateUtil.getCurrentTime().split(" ")[1]);
if (!tableName.contains("_dt")){
dataMap.put("formmodeid",formmodeId);
dataMap.put("modeuuid", UUID.randomUUID().toString());
dataMap.put("modedatacreater","1");
dataMap.put("modedatacreatertype","0");
dataMap.put("modedatacreatedate",DateUtil.getCurrentTime().split(" ")[0]);
dataMap.put("modedatacreatetime",DateUtil.getCurrentTime().split(" ")[1]);
}
return CommonUtil.makeInsertSql(tableName,dataMap);
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save