日历排班分页,手工和已确认数据不分析,批量分析接口失败

zm_dev
liuliang 1 year ago
parent b17eb586c4
commit d1a3489f74

@ -1 +1 @@
аyГ~цЭ|дй~Й~хд|И}фЛ~ш}Т~М|юй~с}С}юЯ}У}Ь~к~Х}Н~г}ЭЖ|б}О}ЪрqчhаjЖkЛjВhТjгiлjфkзiУhЭlЩkуoжpжxЯuЭtЧvВvтwЛvа{иxяyТxЙvЮxЦvБyиxрzпwЧvзxаЫЧшСжМЧСъмЖСЪзнНШзЭдДоЩЪДвкдЩРыщчАяПЬэяЮчцПГЗУЪлощбЭхдЪтзЖТНБУщПсЩлэррЦькмИпЙПРжпАлиШФмюмШдшжиИЖъВнлОЙНиwбsСsЪvцsЕwаtПsщyАlГtДoфsшqлlЬqЦpЗrКlыsЖsвuрsХmхoьqЛrщlйjНZК\т^Й\ФZоVфZХXШ\РVИhбwчxкzБyп{Шzб|ш{оxОxЙ|фzд|яwи{ЗvБyК|ЦVеZюUаYфSТYхXе\цXэaцcвeщ_ЮWхWц^бTмRюTЫTПZсWж[ъTЕ]ы[ЪWТRДWгVоZГZЧUЮYСQсXЮWБYЦ[кZшgО~В~ыzю~л{РzвyК{Бxи~ц|М{ъ~тж|Ф}к~н}ычaчdВ]вhп]вaь^ГaК`гaй^ж_Ш]С]И]в^Т^в^и]Т]Х`ЯkКgшgюgЩgюhШcТ]жWЬkшiцqжhЧoяLбLшLюMБMГMКMКMНMсNХMКMНMГMХMЙMНMФMХMЯKДKЕKЙKюKаJцJЪJЕKЦKБKоLшKФKГKГKЕKИKЕKЕKИJюJФJсKЕKИKФKЕKФKДKГKГKпLДKЕKшKжJаJХJДKЕKХKЦKоLЦKДKЦKИKГKФKЕKюKдJЧIсKБKЦKХKГKЕKДKГKЕKГKрLФKГKКJЪIсJтKЕKФKГKДKоLФKФKФKДKЙKДKвKшJюJФJЧKДKДKДKДK <EFBFBD><EFBFBD>Y<EFBFBD>Y<EFBFBD>Y<EFBFBD>r<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD>~<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

@ -19,25 +19,36 @@
<change beforePath="$PROJECT_DIR$/WEB-INF/sqllog/ecologysql" beforeDir="false" afterPath="$PROJECT_DIR$/WEB-INF/sqllog/ecologysql" 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$/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$/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/GetClockInTimeItemCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeItemCmd.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/GetScheduleResultListCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.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/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/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/cmd/HandleOverdueVocationCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/cmd/HandleOverdueVocationCmd.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/common/util/CommonUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/CommonUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/HolidayGenerationJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/HolidayGenerationJob.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/util/VocationCommonUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/util/VocationCommonUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/util/DateUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/DateUtil.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/common/util/DateUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/DateUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AttendanceSummaryServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AttendanceSummaryServiceImpl.class" 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/GetClockInTimeItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeItemCmd.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/GetScheduleResultListCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/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/web/AttendanceanalysisAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$4.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$4.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$4.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$4.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$5.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$5.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$6.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$6.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$6.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$6.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$7.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$7.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$7.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$7.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/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/vacation/cmd/HandleOverdueVocationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/cmd/HandleOverdueVocationCmd.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/EnterpriseCalendarServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/EnterpriseCalendarServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/HolidayGenerationJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/HolidayGenerationJob.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/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/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/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/common/util/DateUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/DateUtil.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/DateUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/DateUtil.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/TestAttendanceAllowance/Test.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestAttendanceAllowance/Test.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/vocation/Test1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/vocation/Test1.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/test-classes/vocation/Test1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/vocation/Test1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/vocation/Test1.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/vocation/Test1.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/test/vocation/Test1.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/vocation/Test1.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@ -115,7 +126,7 @@
<command value="organzationList" /> <command value="organzationList" />
</option> </option>
</component> </component>
<component name="RunManager" selected="JUnit.Test1.test2"> <component name="RunManager" selected="JUnit.Test.testAnalysis">
<configuration name="TestObj" type="Application" factoryName="Application" nameIsGenerated="true"> <configuration name="TestObj" type="Application" factoryName="Application" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="TestObj" /> <option name="MAIN_CLASS_NAME" value="TestObj" />
<module name="hrm-attendance" /> <module name="hrm-attendance" />
@ -181,35 +192,35 @@
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<configuration name="Test1.test3" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> <configuration name="Test.testAnalysis" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="hrm-attendance" /> <module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" /> <shortenClasspath name="MANIFEST" />
<extension name="coverage"> <extension name="coverage">
<pattern> <pattern>
<option name="PATTERN" value="workflow.*" /> <option name="PATTERN" value="TestAttendanceAllowance.*" />
<option name="ENABLED" value="true" /> <option name="ENABLED" value="true" />
</pattern> </pattern>
</extension> </extension>
<option name="PACKAGE_NAME" value="workflow" /> <option name="PACKAGE_NAME" value="TestAttendanceAllowance" />
<option name="MAIN_CLASS_NAME" value="workflow.Test1" /> <option name="MAIN_CLASS_NAME" value="TestAttendanceAllowance.Test" />
<option name="METHOD_NAME" value="test3" /> <option name="METHOD_NAME" value="testAnalysis" />
<option name="TEST_OBJECT" value="method" /> <option name="TEST_OBJECT" value="method" />
<method v="2"> <method v="2">
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<configuration name="TestHandleOverdueVocation.test1" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> <configuration name="Test.testJob" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="hrm-attendance" /> <module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" /> <shortenClasspath name="MANIFEST" />
<extension name="coverage"> <extension name="coverage">
<pattern> <pattern>
<option name="PATTERN" value="vocation.*" /> <option name="PATTERN" value="TestAttendanceAllowance.*" />
<option name="ENABLED" value="true" /> <option name="ENABLED" value="true" />
</pattern> </pattern>
</extension> </extension>
<option name="PACKAGE_NAME" value="vocation" /> <option name="PACKAGE_NAME" value="TestAttendanceAllowance" />
<option name="MAIN_CLASS_NAME" value="vocation.TestHandleOverdueVocation" /> <option name="MAIN_CLASS_NAME" value="TestAttendanceAllowance.Test" />
<option name="METHOD_NAME" value="test1" /> <option name="METHOD_NAME" value="testJob" />
<option name="TEST_OBJECT" value="method" /> <option name="TEST_OBJECT" value="method" />
<method v="2"> <method v="2">
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
@ -224,11 +235,11 @@
</configuration> </configuration>
<recent_temporary> <recent_temporary>
<list> <list>
<item itemvalue="JUnit.Test1.test2" /> <item itemvalue="JUnit.Test.testAnalysis" />
<item itemvalue="JUnit.Test1.test3 (1)" /> <item itemvalue="JUnit.Test1.test3 (1)" />
<item itemvalue="JUnit.Test.testJob" />
<item itemvalue="JUnit.Test1.test2" />
<item itemvalue="JUnit.Test1.test1" /> <item itemvalue="JUnit.Test1.test1" />
<item itemvalue="JUnit.Test1.test3" />
<item itemvalue="JUnit.TestHandleOverdueVocation.test1" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
@ -672,7 +683,12 @@
<workItem from="1717392850003" duration="7014000" /> <workItem from="1717392850003" duration="7014000" />
<workItem from="1717400027080" duration="8076000" /> <workItem from="1717400027080" duration="8076000" />
<workItem from="1717464908378" duration="2433000" /> <workItem from="1717464908378" duration="2433000" />
<workItem from="1717479367551" duration="594000" /> <workItem from="1717479367551" duration="2207000" />
<workItem from="1717487687547" duration="5997000" />
<workItem from="1717495483305" duration="5307000" />
<workItem from="1717551326927" duration="7073000" />
<workItem from="1717565799282" duration="8912000" />
<workItem from="1717577182099" duration="2331000" />
</task> </task>
<servers /> <servers />
</component> </component>
@ -721,11 +737,6 @@
<line>221</line> <line>221</line>
<option name="timeStamp" value="108" /> <option name="timeStamp" value="108" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java</url>
<line>69</line>
<option name="timeStamp" value="118" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line"> <line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/test/calendarscheduling/TestgetDepartSchedule.java</url> <url>file://$PROJECT_DIR$/test/calendarscheduling/TestgetDepartSchedule.java</url>
<line>27</line> <line>27</line>
@ -733,9 +744,14 @@
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="java-line"> <line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/common/util/DateUtil.java</url> <url>file://$PROJECT_DIR$/src/com/engine/common/util/DateUtil.java</url>
<line>154</line> <line>158</line>
<option name="timeStamp" value="138" /> <option name="timeStamp" value="138" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java</url>
<line>407</line>
<option name="timeStamp" value="155" />
</line-breakpoint>
</breakpoints> </breakpoints>
</breakpoint-manager> </breakpoint-manager>
<watches-manager> <watches-manager>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -15,6 +15,9 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/**
*
*/
@Slf4j @Slf4j
public class GetClockInTimeItemCmd extends AbstractCommonCommand<Map<String,Object>> { public class GetClockInTimeItemCmd extends AbstractCommonCommand<Map<String,Object>> {
public GetClockInTimeItemCmd(Map<String, Object> params){ public GetClockInTimeItemCmd(Map<String, Object> params){

@ -127,7 +127,7 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
lastestTime = lastTime; lastestTime = lastTime;
} }
boolean mark = false;
if (DateUtil.getTime(earliestTime).compareTo(DateUtil.getTime(needGetDate+" 00:00:00")) < 0){ if (DateUtil.getTime(earliestTime).compareTo(DateUtil.getTime(needGetDate+" 00:00:00")) < 0){
//当最早打卡时间点在前一天时,获取前一天的出勤结果打卡数据 //当最早打卡时间点在前一天时,获取前一天的出勤结果打卡数据
String earliestDate = earliestTime.split(" ")[0]; String earliestDate = earliestTime.split(" ")[0];
@ -148,11 +148,13 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
String out = Util.null2String(clockIntime.get("c"+i)); String out = Util.null2String(clockIntime.get("c"+i));
if (!"".equals(out) && !"NULL".equals(out)){ if (!"".equals(out) && !"NULL".equals(out)){
if (DateUtil.getTime(out).compareTo(DateUtil.getTime(earliestTime)) > 0){ if (DateUtil.getTime(out).compareTo(DateUtil.getTime(earliestTime)) > 0){
mark = true;
earliestTime = out; earliestTime = out;
} }
break; break;
}else if (!"".equals(in) && !"NULL".equals(in)){ }else if (!"".equals(in) && !"NULL".equals(in)){
if (DateUtil.getTime(in).compareTo(DateUtil.getTime(earliestTime)) > 0){ if (DateUtil.getTime(in).compareTo(DateUtil.getTime(earliestTime)) > 0){
mark = true;
earliestTime = in; earliestTime = in;
} }
break; break;
@ -160,6 +162,10 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
} }
} }
} }
if (mark){
earliestTime = DateUtil.AfterSeconds(earliestTime,1);
}
log.info("earliestTime :[{}],lastestTime: [{}]",earliestTime,lastestTime); log.info("earliestTime :[{}],lastestTime: [{}]",earliestTime,lastestTime);
String finalEarliestTime = earliestTime; String finalEarliestTime = earliestTime;
String finalLastestTime = lastestTime; String finalLastestTime = lastestTime;

@ -224,13 +224,16 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand<Map<String,O
} }
public List<Map<String,Object>> getDate(Map<String,Object> param){ public List<Map<String,Object>> getDate(Map<String,Object> param){
String userId = params.get("pbdx").toString();
String nd = Util.null2String(param.get("nd")); String nd = Util.null2String(param.get("nd"));
String glpb = Util.null2String(param.get("glpb")); String glpb = Util.null2String(param.get("glpb"));
String sql = "select nd,rq,nlrq,rqlx,xq,rlmc from uf_jcl_kq_rlxx a left join uf_jcl_kq_glpb b on a.rlmc=b.qyrl where b.id=? and a.nd=? "; String sql = "select nd,rq,nlrq,rqlx,xq,rlmc from uf_jcl_kq_rlxx a left join uf_jcl_kq_glpb b on a.rlmc=b.qyrl where b.id=? and a.nd=? ";
List<Map<String,Object>> dataList=null; List<Map<String,Object>> dataList=null;
if ("".equals(glpb)){ if ("".equals(glpb)){
sql = "select a.nd,a.rq,a.nlrq,a.rqlx,a.xq,a.rlmc from uf_jcl_kq_rlxx a left join uf_jcl_kq_rlmc b on a.rlmc=b.id where a.nd=? and b.mrrl=1"; sql = "select subcompanyid1 from hrmresource where id =?";
dataList = DbTools.getSqlToList(sql,nd); Map<String,Object> departMentMap = DbTools.getSqlToMap(sql,userId);
String subcompanyid1 = departMentMap.get("subcompanyid1").toString();
dataList = Utils.getDefaultDateList(subcompanyid1,nd);
}else { }else {
dataList = DbTools.getSqlToList(sql,glpb,nd); dataList = DbTools.getSqlToList(sql,glpb,nd);
} }

@ -572,19 +572,11 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
/** /**
* *
*/ */
if (scheduleResult.size() > 0) { List<Map<String, Object>> restScheduleList = scheduleResult.stream().filter(e -> (ClassSegmentTypeEnum.REST_AND_DINE.getKey().equals(e.get("bdlx")) || ClassSegmentTypeEnum.REST_PERIOD.getKey().equals(e.get("bdlx"))
List<Map<String, Object>> restScheduleList = scheduleResult.stream().filter(e -> 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("dtsfdx"))).collect(Collectors.toList());
|| ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(e.get("bdlx"))).collect(Collectors.toList()); if (restScheduleList.size() > 0){
for (int i=0;i<restScheduleList.size();i++){
Map<String, Object> restSchedule = restScheduleList.get(i);
String dtsfdx = Util.null2String(restSchedule.get("dtsfdx"));
String dtzddxfz = Util.null2String(restSchedule.get("dtzddxfz"));
String dtdxhs = Util.null2String(restSchedule.get("dtdxhs"));
if (CheckBoxEnum.CHECKED.getKey().equals(dtsfdx)){
} }
}
}
/** /**
* 22 * 22
*/ */
@ -881,4 +873,6 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
return false; return false;
} }
} }
} }

@ -34,7 +34,7 @@ public class AttendanceAnalysisJob extends BaseCronJob {
public void execute() { public void execute() {
log.info("********AttendanceAnalysisJob start********"); log.info("********AttendanceAnalysisJob start********");
String queryUserSql = "select id from hrmresource where (status = 0 or status = 1 or status = 2 or status = 3) and status != 10"; String queryUserSql = "select id from hrmresource";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql); List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
String beforeFourDayDate = DateUtil.getCurrentDateMinusDay(4); String beforeFourDayDate = DateUtil.getCurrentDateMinusDay(4);
@ -52,9 +52,10 @@ public class AttendanceAnalysisJob extends BaseCronJob {
dataList.addAll(makeUpList); dataList.addAll(makeUpList);
} }
dataList = dataList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); dataList = dataList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
sql = "select sjzt,sgsj,ygid,rq from uf_jcl_kq_cqjg where rq>=? and rq<=?";
List<Map<String,Object>> attendaceResult = DbTools.getSqlToList(sql,DateUtil.beforeDay(nowDate,2),DateUtil.beforeDay(nowDate,1));
Map<String,List<Map<String,Object>>> attendaceGroupById = attendaceResult.stream().collect(Collectors.groupingBy(e->e.get("ygid").toString()));
for (Map<String,Object> userMap:userList){ for (Map<String,Object> userMap:userList){
String userId = Util.null2String(userMap.get("id")); String userId = Util.null2String(userMap.get("id"));
@ -73,7 +74,7 @@ public class AttendanceAnalysisJob extends BaseCronJob {
Map<String,Object> workHourdataMap = basicsetService.getWorkHoursItemByPerson(paramMap); Map<String,Object> workHourdataMap = basicsetService.getWorkHoursItemByPerson(paramMap);
List<Map<String,Object>> workHourItems = (List<Map<String,Object>>)workHourdataMap.get("data"); List<Map<String,Object>> workHourItems = (List<Map<String,Object>>)workHourdataMap.get("data");
attendanceAnalysisService.attendanceAnalysis(userId,collect.get(userMap.get("id")),attendanceItems,workHourItems,clockInTimeMap); attendanceAnalysisService.attendanceAnalysis(userId,nowDate,collect.get(userMap.get("id")),attendanceItems,workHourItems,clockInTimeMap,attendaceGroupById.get(userId));
} }
Map<String,Object> param = Maps.newHashMap(); Map<String,Object> param = Maps.newHashMap();
param.put("startDate",DateUtil.beforeDay(nowDate,1)); param.put("startDate",DateUtil.beforeDay(nowDate,1));

@ -43,9 +43,9 @@ public class AttendanceanalysisAction {
try { try {
Map<String,Object> paramMap = ParamUtil.request2Map(request); Map<String,Object> paramMap = ParamUtil.request2Map(request);
// Map<String,Object> paramMap = Maps.newHashMap(); // Map<String,Object> paramMap = Maps.newHashMap();
// paramMap.put("startDate","2024-05-02"); // paramMap.put("startDate","2024-04-28");
// paramMap.put("endDate","2024-05-02"); // paramMap.put("endDate","2024-04-28");
// paramMap.put("userIds","27"); // paramMap.put("userIds","31");
String startDate = Util.null2String(paramMap.get("startDate")); String startDate = Util.null2String(paramMap.get("startDate"));
@ -55,7 +55,7 @@ public class AttendanceanalysisAction {
String userIds = Util.null2String(paramMap.get("userIds")); String userIds = Util.null2String(paramMap.get("userIds"));
int betweenDays = DateUtil.getBetWeenDays(startDate,endDate); int betweenDays = DateUtil.getBetWeenDays(startDate,endDate);
if ("".equals(userIds)){ if ("".equals(userIds)){
String queryUserSql = "select id from hrmresource where (status = 0 or status = 1 or status = 2 or status = 3) and status != 10"; String queryUserSql = "select id from hrmresource";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql); List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ? order by signdate,signtime"; 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); List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
@ -67,9 +67,11 @@ public class AttendanceanalysisAction {
} }
dataList = dataList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); dataList = dataList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
sql = "select sjzt,sgsj,ygid,rq from uf_jcl_kq_cqjg where rq>=? and rq<=?";
List<Map<String,Object>> attendaceResult = DbTools.getSqlToList(sql,startDate,endDate);
Map<String,List<Map<String,Object>>> attendaceGroupById = attendaceResult.stream().collect(Collectors.groupingBy(e->e.get("ygid").toString()));
for (Map<String,Object> userMap :userList){ for (Map<String,Object> userMap :userList){
String userId = userMap.get("id").toString(); String userId = userMap.get("id").toString();
@ -97,16 +99,22 @@ public class AttendanceanalysisAction {
classesParamMap.put("pblx","0"); classesParamMap.put("pblx","0");
classesParamMap.put("pbdx",userId); classesParamMap.put("pbdx",userId);
classesParamMap.put("current","1"); classesParamMap.put("current","1");
classesParamMap.put("pageSize",10); classesParamMap.put("pageSize",DateUtil.getBetWeenDays(startBeforeDate,endAfterDate)+1);
classesParamMap.put("recurrence",1); classesParamMap.put("recurrence",1);
classesParamMap.put("clockInTimeMap",clockInTimeMap); classesParamMap.put("clockInTimeMap",clockInTimeMap);
classesParamMap.put("clockInData",dataList); classesParamMap.put("clockInData",dataList);
classesParamMap.put("attendanceItems",attendanceItems); classesParamMap.put("attendanceItems",attendanceItems);
Map<String,Object> schedulMap = utilService.getSchedulingInFormation(classesParamMap); Map<String,Object> schedulMap = utilService.getSchedulingInFormation(classesParamMap);
Map<String, List<Map<String, Object>>> attendaceResultMap = Maps.newHashMap();
if (attendaceResult != null && attendaceResult.size() > 0) {
attendaceResultMap = attendaceGroupById.get(userId).stream().collect(Collectors.groupingBy(e -> e.get("rq").toString()));
}
for (int i=0; i<=betweenDays;i++){ for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i); String date = DateUtil.AfterDay(startDate,i);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap); attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap,attendaceResultMap.get(date));
} }
allowanceService.addAllowanceRecords(paramMap); allowanceService.addAllowanceRecords(paramMap);
} }
@ -124,6 +132,11 @@ public class AttendanceanalysisAction {
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
sql = "select sjzt,sgsj,ygid,rq from uf_jcl_kq_cqjg where rq>=? and rq<=? and ygid in ("+userIds+")";
List<Map<String,Object>> attendaceResult = DbTools.getSqlToList(sql,startDate,endDate);
Map<String,List<Map<String,Object>>> attendaceGroupById = attendaceResult.stream().collect(Collectors.groupingBy(e->e.get("ygid").toString()));
for (String userId : userIds.split(",")){ for (String userId : userIds.split(",")){
/**获得人员考勤项目*/ /**获得人员考勤项目*/
Map<String,Object> param = Maps.newHashMap(); Map<String,Object> param = Maps.newHashMap();
@ -150,16 +163,21 @@ public class AttendanceanalysisAction {
classesParamMap.put("pblx","0"); classesParamMap.put("pblx","0");
classesParamMap.put("pbdx",userId); classesParamMap.put("pbdx",userId);
classesParamMap.put("current","1"); classesParamMap.put("current","1");
classesParamMap.put("pageSize",10); classesParamMap.put("pageSize",DateUtil.getBetWeenDays(startBeforeDate,endAfterDate)+1);
classesParamMap.put("recurrence",1); classesParamMap.put("recurrence",1);
classesParamMap.put("clockInTimeMap",clockInTimeMap); classesParamMap.put("clockInTimeMap",clockInTimeMap);
classesParamMap.put("clockInData",dataList); classesParamMap.put("clockInData",dataList);
classesParamMap.put("attendanceItems",attendanceItems); classesParamMap.put("attendanceItems",attendanceItems);
Map<String,Object> schedulMap = utilService.getSchedulingInFormation(classesParamMap); Map<String,Object> schedulMap = utilService.getSchedulingInFormation(classesParamMap);
Map<String, List<Map<String, Object>>> attendaceResultMap = Maps.newHashMap();
if (attendaceResult != null && attendaceResult.size() > 0) {
attendaceResultMap = attendaceGroupById.get(userId).stream().collect(Collectors.groupingBy(e -> e.get("rq").toString()));
}
for (int i=0; i<=betweenDays;i++){ for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i); String date = DateUtil.AfterDay(startDate,i);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap); attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap,workHourItems,clockInTimeMap,attendaceResultMap.get(date));
} }
} }
paramMap.put("empIds",paramMap.get("userIds")); paramMap.put("empIds",paramMap.get("userIds"));

@ -37,18 +37,19 @@ public class AttendanceAnalysisWrapper extends Service {
/** /**
* *
*
* @param userId id * @param userId id
* @param dataList * @param dataList
* @param attendanceItems * @param attendanceItems
*/ */
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){ public void attendanceAnalysis(String userId, String analysisDate, List<Map<String, Object>> dataList, List<Map<String, Object>> attendanceItems, List<Map<String, Object>> workHourItems, Map<String, Map<String, Object>> clockInTimeMap, List<Map<String, Object>> attendaceResult) {
log.info("***********analysis userId:{} start***********", userId); log.info("***********analysis userId:{} start***********", userId);
log.info("clockInTimeDate : [{}]", dataList); log.info("clockInTimeDate : [{}]", dataList);
String beforeFourDayDate = DateUtil.getCurrentDateMinusDay(4); String beforeFourDayDate = DateUtil.beforeDay(analysisDate, 4);
String beforeTwoDayDate = DateUtil.getCurrentDateMinusDay(2); String beforeTwoDayDate = DateUtil.beforeDay(analysisDate, 2);
String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1); String beforeOneDayDate = DateUtil.beforeDay(analysisDate, 1);
String nowDate = DateUtil.getCurrentDate(); String nowDate = analysisDate;
/** 打卡数据 */ /** 打卡数据 */
Map<String, List<Map<String, Object>>> collect = Maps.newHashMap(); Map<String, List<Map<String, Object>>> collect = Maps.newHashMap();
if (dataList != null && dataList.size() > 0) { if (dataList != null && dataList.size() > 0) {
@ -77,33 +78,53 @@ public class AttendanceAnalysisWrapper extends Service {
getClockTimeParam.put("schedulingResultCollect", schedulingResultsMap); getClockTimeParam.put("schedulingResultCollect", schedulingResultsMap);
getClockTimeParam.put("clockInTimeMap", clockInTimeMap); getClockTimeParam.put("clockInTimeMap", clockInTimeMap);
getClockTimeParam.put("userId", userId); getClockTimeParam.put("userId", userId);
//前一天打卡数据 Map<String, List<Map<String, Object>>> attendaceResultMap = Maps.newHashMap();
if (attendaceResult != null && attendaceResult.size() > 0) {
attendaceResultMap = attendaceResult.stream().collect(Collectors.groupingBy(e -> e.get("rq").toString()));
}
List<Map<String, Object>> beforeOneDayDateattendaceResult = attendaceResultMap.get(beforeOneDayDate);
if (beforeOneDayDateattendaceResult == null || beforeOneDayDateattendaceResult.size() == 0 || (!CheckBoxEnum.CHECKED.getKey().equals(beforeOneDayDateattendaceResult.get(0).get("sgsj")) &&
!"3".equals(beforeOneDayDateattendaceResult.get(0).get("sjzt")))) {
log.info("getClockTimeParam : [{}]", getClockTimeParam); log.info("getClockTimeParam : [{}]", getClockTimeParam);
//前一天打卡数据
List<Map<String, Object>> beforeOneDayClockInTimeList = utilService.getClockInTime(getClockTimeParam); List<Map<String, Object>> beforeOneDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
log.info("beforeOneDayClockInTimeList : [{}]", beforeOneDayClockInTimeList); log.info("beforeOneDayClockInTimeList : [{}]", beforeOneDayClockInTimeList);
//分析前一天考勤 //分析前一天考勤
Map<String, Object> recordDataTime1 = analysis(userId, beforeOneDayDate, beforeOneDayClockInTimeList, schedulingResultsMap.get(beforeOneDayDate), attendanceItems, workHourItems); Map<String, Object> recordDataTime1 = analysis(userId, beforeOneDayDate, beforeOneDayClockInTimeList, schedulingResultsMap.get(beforeOneDayDate), attendanceItems, workHourItems);
clockInTimeMap.put(beforeOneDayDate, recordDataTime1); clockInTimeMap.put(beforeOneDayDate, recordDataTime1);
}
getClockTimeParam.put("date", beforeTwoDayDate); getClockTimeParam.put("date", beforeTwoDayDate);
List<Map<String, Object>> beforeTwoDayDateattendaceResult = attendaceResultMap.get(beforeTwoDayDate);
if (beforeTwoDayDateattendaceResult == null || beforeTwoDayDateattendaceResult.size() == 0 || (!CheckBoxEnum.CHECKED.getKey().equals(beforeTwoDayDateattendaceResult.get(0).get("sgsj")) &&
!"3".equals(beforeTwoDayDateattendaceResult.get(0).get("sjzt")))) {
//前第二天打卡数据 //前第二天打卡数据
List<Map<String, Object>> beforeTwoDayClockInTimeList = utilService.getClockInTime(getClockTimeParam); List<Map<String, Object>> beforeTwoDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
log.info("beforeTwoDayClockInTimeList : [{}]", beforeTwoDayClockInTimeList); log.info("beforeTwoDayClockInTimeList : [{}]", beforeTwoDayClockInTimeList);
//分析前第二天考勤 //分析前第二天考勤
Map<String, Object> recordDataTime2 = analysis(userId, beforeTwoDayDate, beforeTwoDayClockInTimeList, schedulingResultsMap.get(beforeTwoDayDate), attendanceItems, workHourItems); Map<String, Object> recordDataTime2 = analysis(userId, beforeTwoDayDate, beforeTwoDayClockInTimeList, schedulingResultsMap.get(beforeTwoDayDate), attendanceItems, workHourItems);
clockInTimeMap.put(beforeTwoDayDate, recordDataTime2); clockInTimeMap.put(beforeTwoDayDate, recordDataTime2);
}
} }
/** /**
* *
*
* @param userId id * @param userId id
* @param analysisDate * @param analysisDate
* @param dataList 23 * @param dataList 23
* @param attendanceItems * @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,Map<String,Map<String,Object>> clockInTimeMap){ 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,List<Map<String,Object>> attendaceResult) {
log.info("***********analysis userId:{},analysisDate:{} start***********", userId, analysisDate); log.info("***********analysis userId:{},analysisDate:{} start***********", userId, analysisDate);
log.info("clockInTimeDate : [{}]", dataList); log.info("clockInTimeDate : [{}]", dataList);
log.info("attendaceResult : [{}]",attendaceResult);
if (attendaceResult!=null && attendaceResult.size()>0 && (CheckBoxEnum.CHECKED.getKey().equals(attendaceResult.get(0).get("sgsj")) ||
"3".equals(attendaceResult.get(0).get("sjzt")))) {
return;
}
Map<String, List<Map<String, Object>>> collect = Maps.newHashMap(); Map<String, List<Map<String, Object>>> collect = Maps.newHashMap();
if (dataList != null && dataList.size() > 0) { if (dataList != null && dataList.size() > 0) {
collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate")))); collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate"))));
@ -123,8 +144,10 @@ public class AttendanceAnalysisWrapper extends Service {
Map<String, Object> recordDataTime = analysis(userId, analysisDate, clockInTimeList, schedulingResultsMap.get(analysisDate), attendanceItems, workHourItems); Map<String, Object> recordDataTime = analysis(userId, analysisDate, clockInTimeList, schedulingResultsMap.get(analysisDate), attendanceItems, workHourItems);
clockInTimeMap.put(analysisDate, recordDataTime); clockInTimeMap.put(analysisDate, recordDataTime);
} }
/** /**
* *
*
* @param userId * @param userId
* @param analysisDate * @param analysisDate
* @param clockInTimeList * @param clockInTimeList
@ -189,7 +212,6 @@ public class AttendanceAnalysisWrapper extends Service {
} }
List<Map<String, Object>> askForLeaveAndEvctionSchedule = Lists.newArrayList(); List<Map<String, Object>> askForLeaveAndEvctionSchedule = Lists.newArrayList();
//请假记录 //请假记录
Map<String, Object> askForLeaveDataMap = updateAttendanceResultWrapper.getAskForLeave(workingHourparam); Map<String, Object> askForLeaveDataMap = updateAttendanceResultWrapper.getAskForLeave(workingHourparam);
@ -301,7 +323,6 @@ public class AttendanceAnalysisWrapper extends Service {
List<Map<String, Object>> recordWorkOverTime = updateAttendanceResultWrapper.recordWorkOverTime(recordAbnormalParam); List<Map<String, Object>> recordWorkOverTime = updateAttendanceResultWrapper.recordWorkOverTime(recordAbnormalParam);
/** /**
* *
*/ */
@ -339,6 +360,7 @@ public class AttendanceAnalysisWrapper extends Service {
/** /**
* *
*
* @param askForLeaveAndEvctionSchedule * @param askForLeaveAndEvctionSchedule
* @param analysisDate * @param analysisDate
* @return * @return

@ -426,11 +426,7 @@ public class UpdateAttendanceResultWrapper extends Service {
recordParam.put("recordDataTime",Maps.newHashMap()); recordParam.put("recordDataTime",Maps.newHashMap());
recordParam.put("attendanceDuration",0); recordParam.put("attendanceDuration",0);
recordParam.put("formmodeIdMap",Utils.getFormmodeIdMap()); recordParam.put("formmodeIdMap",Utils.getFormmodeIdMap());
List<Map<String, Object>> recordDataList = Lists.newArrayList(); List<Map<String, Object>> recordDataList = Lists.newArrayList();;
recordDataList.add(new HashMap(){{
put("item",SystemItemEnum.NO_SCHEDULING.getKey());
put("itemduration","NULL");
}});
if (allowanceMap.get("ifnotWork") != null){ if (allowanceMap.get("ifnotWork") != null){
//次日免班 //次日免班
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey()); recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
@ -439,9 +435,14 @@ public class UpdateAttendanceResultWrapper extends Service {
} }
if (rqlx.equals(DateTypeEnum.WORK_DAY.getKey()) || rqlx.equals(DateTypeEnum.CHANGECLASS.getKey())){ if (rqlx.equals(DateTypeEnum.WORK_DAY.getKey()) || rqlx.equals(DateTypeEnum.CHANGECLASS.getKey())){
recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey()); recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey());
recordDataList.add(new HashMap(){{
put("item",SystemItemEnum.NO_SCHEDULING.getKey());
put("itemduration","NULL");
}});
}else { }else {
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey()); recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
recordParam.put("sfxx",CheckBoxEnum.CHECKED.getKey()); recordParam.put("sfxx",CheckBoxEnum.CHECKED.getKey());
} }

@ -103,7 +103,6 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
conditions = " departmentid="+deparmentId; conditions = " departmentid="+deparmentId;
} }
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
String dbType = rs.getDBType();
List<Map<String,Object>> dataTable = null; List<Map<String,Object>> dataTable = null;
int startindex = (pageindex-1)*pageSize; int startindex = (pageindex-1)*pageSize;
int endindex = pageindex*pageSize; int endindex = pageindex*pageSize;
@ -112,32 +111,32 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
String endTime = dateTime+"-"+monthDays; String endTime = dateTime+"-"+monthDays;
//当为系统管理员用户登录时 //当为系统管理员用户登录时
if ("1".equals(userId)){ if ("1".equals(userId)){
if ("oracle".equals(dbType) || "dm".equals(dbType) || "jc".equals(dbType) || "st".equals(dbType)){ // if ("oracle".equals(dbType) || "dm".equals(dbType) || "jc".equals(dbType) || "st".equals(dbType)){
//
//
// String sql = "select id,subcompanyid1,departmentid,workcode,lastname,ROWNUM rn from hrmresource where 1=1 and ROWNUM<="+endindex;
// sql = sql+" and "+conditions;
// String queryDatatablesql = "select * from ("+sql+") where rn >"+startindex;
// log.info("queryDatatablesql : {}",queryDatatablesql);
// dataTable = DbTools.getSqlToList(queryDatatablesql);
//
// }else if ("sqlserver".equals(dbType)){
// String sql = "select row_number() over(order by id asc) rownum,id from hrmresource where "+conditions; // String sql = "select row_number() over(order by id asc) rownum,id from hrmresource where "+conditions;
// sql = "select top 1 a.id from ( "+sql+" ) a where a.rownum>"+startindex; // sql = "select top 1 a.id from ( "+sql+" ) a where a.rownum>"+startindex;
// String queryDatatablesql = "select top "+pageSize+" id,subcompanyid1,departmentid,workcode,lastname from hrmresource where id >=("+sql+") and "+conditions; // String queryDatatablesql = "select top "+pageSize+" id,subcompanyid1,departmentid,workcode,lastname from hrmresource where id >=("+sql+") and "+conditions;
// log.info("queryDatatablesql : {}",queryDatatablesql); // log.info("queryDatatablesql : {}",queryDatatablesql);
// dataTable = DbTools.getSqlToList(queryDatatablesql); // dataTable = DbTools.getSqlToList(queryDatatablesql);
// }else {
// String sql = "select id from hrmresource where "+conditions+" limit "+startindex+",1";
String sql = "select id,subcompanyid1,departmentid,workcode,lastname,ROWNUM rn from hrmresource where 1=1 and ROWNUM<="+endindex; // String querySql = "select id,subcompanyid1,departmentid,workcode,lastname from hrmresource where id >=("+sql+") and "+conditions+" limit "+pageSize;
sql = sql+" and "+conditions; // log.info("queryDatatablesql : {}",querySql);
String queryDatatablesql = "select * from ("+sql+") where rn >"+startindex; // dataTable = DbTools.getSqlToList(querySql);
log.info("queryDatatablesql : {}",queryDatatablesql); // }
dataTable = DbTools.getSqlToList(queryDatatablesql); String querySql = "select id,subcompanyid1,departmentid,workcode,lastname from hrmresource ";
if (!conditions.equals("")){
}else if ("sqlserver".equals(dbType)){ querySql = querySql+" where "+conditions;
String sql = "select row_number() over(order by id asc) rownum,id from hrmresource where "+conditions;
sql = "select top 1 a.id from ( "+sql+" ) a where a.rownum>"+startindex;
String queryDatatablesql = "select top "+pageSize+" id,subcompanyid1,departmentid,workcode,lastname from hrmresource where id >=("+sql+") and "+conditions;
log.info("queryDatatablesql : {}",queryDatatablesql);
dataTable = DbTools.getSqlToList(queryDatatablesql);
}else {
String sql = "select id from hrmresource where "+conditions+" limit "+startindex+",1";
String querySql = "select id,subcompanyid1,departmentid,workcode,lastname from hrmresource where id >=("+sql+") and "+conditions+" limit "+pageSize;
log.info("queryDatatablesql : {}",querySql);
dataTable = DbTools.getSqlToList(querySql);
} }
dataTable = DbTools.getSqlToList(querySql);
}else { }else {
String querySql = "select id,subcompanyid1,departmentid,workcode,lastname from hrmresource "; String querySql = "select id,subcompanyid1,departmentid,workcode,lastname from hrmresource ";
if (!conditions.equals("")){ if (!conditions.equals("")){
@ -201,6 +200,17 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
} }
} }
} }
int total = dataTable.size();
resultMap.put("count",total);
if (endindex > total){
endindex = total;
}
startindex = endindex-pageSize;
if (startindex < 0){
startindex = 0;
}
dataTable = dataTable.subList(startindex,endindex);
Map<String,Object> param = Maps.newHashMap(); Map<String,Object> param = Maps.newHashMap();
param.put("tableName",params.get("tableName")); param.put("tableName",params.get("tableName"));
@ -268,7 +278,7 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
resultMap.put("datas",datas); resultMap.put("datas",datas);
resultMap.put("columns",getCloumns(monthDays,startTime)); resultMap.put("columns",getCloumns(monthDays,startTime));
resultMap.put("pagesize",pageSize); resultMap.put("pagesize",pageSize);
resultMap.put("count",dataTable.size());
resultMap.put("pageindex",pageindex); resultMap.put("pageindex",pageindex);
return resultMap; return resultMap;
} }
@ -277,10 +287,11 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
List<Map<String,Object>> cloumns = Lists.newArrayList(); List<Map<String,Object>> cloumns = Lists.newArrayList();
cloumns.add(new HashMap(){{ cloumns.add(new HashMap(){{
put("title","编号"); put("title","编号");
put("width",80); put("width",120);
put("dataIndex","workcode"); put("dataIndex","workcode");
put("key","workcode"); put("key","workcode");
put("fixed","left"); put("fixed","left");
put("height",40);
put("align","center"); put("align","center");
}}); }});
cloumns.add(new HashMap(){{ cloumns.add(new HashMap(){{
@ -289,22 +300,25 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
put("dataIndex","lastname"); put("dataIndex","lastname");
put("key","lastname"); put("key","lastname");
put("fixed","left"); put("fixed","left");
put("height",40);
put("align","center"); put("align","center");
}}); }});
cloumns.add(new HashMap(){{ cloumns.add(new HashMap(){{
put("title","分部"); put("title","分部");
put("width",80); put("width",120);
put("dataIndex","subcompany"); put("dataIndex","subcompany");
put("key","subcompany"); put("key","subcompany");
put("fixed","left"); put("fixed","left");
put("height",40);
put("align","center"); put("align","center");
}}); }});
cloumns.add(new HashMap(){{ cloumns.add(new HashMap(){{
put("title","部门"); put("title","部门");
put("width",80); put("width",120);
put("dataIndex","department"); put("dataIndex","department");
put("key","department"); put("key","department");
put("fixed","left"); put("fixed","left");
put("height",40);
put("align","center"); put("align","center");
}}); }});
@ -314,6 +328,7 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
map.put("dataIndex",DateUtil.AfterDay(startTime,i)); map.put("dataIndex",DateUtil.AfterDay(startTime,i));
map.put("key",i+1); map.put("key",i+1);
map.put("width",80); map.put("width",80);
map.put("height",40);
map.put("isCalendar",0); map.put("isCalendar",0);
cloumns.add(map); cloumns.add(map);
} }

@ -418,7 +418,7 @@ public class CommonUtil {
log.info("empGroupId : " + id + ", empIdsByGroup : " + empIdsByGroup); log.info("empGroupId : " + id + ", empIdsByGroup : " + empIdsByGroup);
//查询目标人员信息 //查询目标人员信息
if (empIdsByGroup.size() > 0) { if (empIdsByGroup.size() > 0) {
String querySql = "select * from hrmresource where id = in ("+String.join(",",empIdsByGroup)+")"; String querySql = "select * from hrmresource where id in ("+String.join(",",empIdsByGroup)+")";
if (!minSecurityLevel.equals("")) { if (!minSecurityLevel.equals("")) {
querySql = querySql + " and seclevel >= " +minSecurityLevel; querySql = querySql + " and seclevel >= " +minSecurityLevel;
} }
@ -627,10 +627,16 @@ public class CommonUtil {
if (dataList.size() > 0){ if (dataList.size() > 0){
rqlx = dataList.get(0).get("rqlx").toString(); rqlx = dataList.get(0).get("rqlx").toString();
}else { }else {
rqlx = Utils.getDefaultDateType(userId,date); sql = "select subcompanyid1 from hrmresource where id =?";
Map<String,Object> departMentMap = DbTools.getSqlToMap(sql,userId);
String subcompanyid1 = departMentMap.get("subcompanyid1").toString();
rqlx = Utils.getDefaultDateType(subcompanyid1,date);
} }
}else { }else {
rqlx = Utils.getDefaultDateType(userId,date); String sql = "select subcompanyid1 from hrmresource where id =?";
Map<String,Object> departMentMap = DbTools.getSqlToMap(sql,userId);
String subcompanyid1 = departMentMap.get("subcompanyid1").toString();
rqlx = Utils.getDefaultDateType(subcompanyid1,date);
} }
return rqlx; return rqlx;
} }

@ -67,6 +67,10 @@ public class DateUtil {
LocalDateTime localDateTime = DateUtil.getTime(time); LocalDateTime localDateTime = DateUtil.getTime(time);
return localDateTime.plusMinutes(minutes).format(yyyyMMddHHmm); return localDateTime.plusMinutes(minutes).format(yyyyMMddHHmm);
} }
public static String AfterSeconds(String time,long seconds){
LocalDateTime localDateTime = DateUtil.getTime(time);
return localDateTime.plusSeconds(seconds).format(yyyyMMddHHmmss);
}
public static String nowMonth(String time){ public static String nowMonth(String time){
LocalDateTime localDateTime = LocalDate.parse(time, yyyyMMdd).atStartOfDay(); LocalDateTime localDateTime = LocalDate.parse(time, yyyyMMdd).atStartOfDay();

@ -655,15 +655,12 @@ public class Utils<T> {
} }
/** /**
* *
* @param userId * @param subcompanyid1
* @param date * @param date
* @return * @return
*/ */
public static String getDefaultDateType(String userId,String date){ public static String getDefaultDateType(String subcompanyid1,String date){
String rqlx = ""; String rqlx = "";
String sql = "select subcompanyid1 from hrmresource where id =?";
Map<String,Object> departMentMap = DbTools.getSqlToMap(sql,userId);
String subcompanyid1 = departMentMap.get("subcompanyid1").toString();
String parentSubcompanyids = ""; String parentSubcompanyids = "";
try { try {
@ -672,7 +669,7 @@ public class Utils<T> {
log.error("getDefaultDateType error:[{}]",e); log.error("getDefaultDateType error:[{}]",e);
} }
parentSubcompanyids = subcompanyid1+parentSubcompanyids; parentSubcompanyids = subcompanyid1+parentSubcompanyids;
sql = "select b.szjg,a.rqlx from uf_jcl_kq_rlxx a left join uf_jcl_kq_rlmc b on a.rlmc=b.id where b.mrrl=1 and b.szjg in ("+parentSubcompanyids+") and a.rq=?"; String sql = "select b.szjg,a.rqlx from uf_jcl_kq_rlxx a left join uf_jcl_kq_rlmc b on a.rlmc=b.id where b.mrrl=1 and b.szjg in ("+parentSubcompanyids+") and a.rq=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,date); List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,date);
Map<String,Object> dataMap = dataList.stream().collect(Collectors.toMap(e->e.get("szjg").toString(),e->e.get("rqlx"))); Map<String,Object> dataMap = dataList.stream().collect(Collectors.toMap(e->e.get("szjg").toString(),e->e.get("rqlx")));
for (int i=0;i<parentSubcompanyids.split(",").length;i++){ for (int i=0;i<parentSubcompanyids.split(",").length;i++){
@ -684,6 +681,33 @@ public class Utils<T> {
} }
return rqlx; return rqlx;
} }
/**
*
* @param subcompanyid1
* @param year
* @return
*/
public static List<Map<String,Object>> getDefaultDateList(String subcompanyid1,String year){
List<Map<String,Object>> resultList=null;
String parentSubcompanyids = "";
try {
parentSubcompanyids = new SubCompanyComInfo().getAllParentSubcompanyId(subcompanyid1,parentSubcompanyids);
}catch (Exception e){
log.error("getDefaultDateType error:[{}]",e);
}
parentSubcompanyids = subcompanyid1+parentSubcompanyids;
String sql = "select a.nd,a.rq,a.nlrq,a.rqlx,a.xq,a.rlmc,b.szjg from uf_jcl_kq_rlxx a left join uf_jcl_kq_rlmc b on a.rlmc=b.id where b.mrrl=1 and b.szjg in ("+parentSubcompanyids+") and a.nd=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,year);
Map<String,List<Map<String,Object>>> dataMap = dataList.stream().collect(Collectors.groupingBy(e->e.get("szjg").toString()));
for (int i=0;i<parentSubcompanyids.split(",").length;i++){
String subId = parentSubcompanyids.split(",")[i];
resultList = dataMap.get(subId);
if (resultList != null){
break;
}
}
return resultList;
}
/** /**
* *

@ -1,5 +1,6 @@
package TestAttendanceAllowance; package TestAttendanceAllowance;
import com.engine.attendance.attendanceanalysis.job.AttendanceAnalysisJob;
import com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction; import com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction;
import com.engine.attendance.component.calendarscheduling.web.WorkRulesController; import com.engine.attendance.component.calendarscheduling.web.WorkRulesController;
import com.engine.common.util.DateUtil; import com.engine.common.util.DateUtil;
@ -28,12 +29,17 @@ Test extends beforlog{
@org.junit.Test @org.junit.Test
public void test2() throws Exception{ public void test2() throws Exception{
Map<String,Object> paramMap = Maps.newHashMap(); Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate","2024-04-15"); paramMap.put("startDate","2024-04-28");
paramMap.put("endDate","2024-04-15"); paramMap.put("endDate","2024-04-28");
paramMap.put("userIds","31"); paramMap.put("userIds","31");
WorkRulesController action = new WorkRulesController(); WorkRulesController action = new WorkRulesController();
action.getDepartSchedule(null,null); action.getDepartSchedule(null,null);
} }
@org.junit.Test
public void testJob() {
AttendanceAnalysisJob job = new AttendanceAnalysisJob();
job.execute();
}
} }

@ -43,8 +43,8 @@ public class Test1 extends beforlog {
} }
@Test @Test
public void test3() throws Exception{ public void test3() throws Exception{
System.out.println(DateUtil.nextMonth("2022-12-31",6,DateUtil.yyyyMMdd)); System.out.println(DateUtil.getTime("2024-06-05 12:11:01"));
System.out.println(DateUtil.getBetWeenMonths("2022-12-31","2023-06-30"));
} }

Loading…
Cancel
Save