Merge remote-tracking branch 'origin/main'

zm_dev
sy 11 months ago
commit 785ee44a92

@ -1 +1 @@
<EFBFBD><EFBFBD>Y<EFBFBD>Y<EFBFBD>Y<EFBFBD>r<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD>~<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
а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

@ -10,16 +10,59 @@
</component>
<component name="ChangeListManager">
<list default="true" id="baeb3dfb-5097-46c5-933e-6d1dab18b815" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/cmd/HandleOverdueVocationCmd.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/workflow/cmd/GetRestDayIntervalCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.at" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.s" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.s" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/log/sdk.log" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/WEB-INF/prop/weaver.properties" beforeDir="false" afterPath="$PROJECT_DIR$/WEB-INF/prop/weaver.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WEB-INF/sqllog/ecologysql" beforeDir="false" afterPath="$PROJECT_DIR$/WEB-INF/sqllog/ecologysql" afterDir="false" />
<change beforePath="$PROJECT_DIR$/log/sdk.log" beforeDir="false" afterPath="$PROJECT_DIR$/log/sdk.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/artifacts/hrm_attendance/hrm-attendance.jar" beforeDir="false" afterPath="$PROJECT_DIR$/out/artifacts/hrm_attendance/hrm-attendance.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/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/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/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/job/holidaygeneration/tactics/SinglePaymentInFullWay.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/service/VocationService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/service/VocationService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/service/impl/VocationServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/service/impl/VocationServiceImpl.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/attendance/vacation/web/VocationAction.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/web/VocationAction.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/workflow/service/AskForLeaveService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/workflow/service/AskForLeaveService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/workflow/service/impl/AskForLeaveServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/workflow/service/impl/AskForLeaveServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/workflow/web/AskForLeaveAction.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/workflow/web/AskForLeaveAction.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/util/CommonUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/CommonUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/util/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/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$/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/UpdateAttendanceResultWrapper$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/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/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/job/holidaygeneration/tactics/SinglePaymentInFullWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/service/VocationService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/service/VocationService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/service/impl/VocationServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/service/impl/VocationServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/util/VocationCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/util/VocationCommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/web/VocationAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/web/VocationAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/AskForLeaveService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/AskForLeaveService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/AskForLeaveServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/service/impl/AskForLeaveServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/web/AskForLeaveAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/workflow/web/AskForLeaveAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/CommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/CommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$3.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/Test2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestAttendanceAllowance/Test2.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/beforlog.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test2.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test2.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/beforlog.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/workflow/beforlog.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/workflow/request/hrmattendance/HrmAskForLeave_e9.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/workflow/request/hrmattendance/HrmAskForLeave_e9.jsp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/workflow/request/hrmattendance/HrmCustomCard_e9.jsp" beforeDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -84,11 +127,11 @@
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\jucailin\cmd\calendar" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="calendarscheduling" />
<recent name="workflow" />
<recent name="vocation" />
<recent name="calendarscheduling" />
<recent name="com.engine.attendance.attendanceanalysis.cmd" />
<recent name="TestAttendanceAllowance" />
<recent name="ComprehensiveWorkingHourServiceImpl" />
</key>
</component>
<component name="RunAnythingCache">
@ -96,7 +139,7 @@
<command value="organzationList" />
</option>
</component>
<component name="RunManager" selected="JUnit.Test1.test1">
<component name="RunManager" selected="JUnit.Test1.test1 (1)">
<configuration name="TestObj" type="Application" factoryName="Application" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="TestObj" />
<module name="hrm-attendance" />
@ -111,35 +154,35 @@
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Test1.test1" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<configuration name="Test1.test1 (1)" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="vocation.*" />
<option name="PATTERN" value="workflow.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="vocation" />
<option name="MAIN_CLASS_NAME" value="vocation.Test1" />
<option name="PACKAGE_NAME" value="workflow" />
<option name="MAIN_CLASS_NAME" value="workflow.Test1" />
<option name="METHOD_NAME" value="test1" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Test1.test2 (1)" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<configuration name="Test1.test1" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="vocation.*" />
<option name="PATTERN" value="workflow.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="vocation" />
<option name="MAIN_CLASS_NAME" value="vocation.Test1" />
<option name="METHOD_NAME" value="test2" />
<option name="METHOD_NAME" value="test1" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
@ -150,19 +193,19 @@
<shortenClasspath name="MANIFEST" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="calendarscheduling.*" />
<option name="PATTERN" value="workflow.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="calendarscheduling" />
<option name="MAIN_CLASS_NAME" value="calendarscheduling.Test1" />
<option name="PACKAGE_NAME" value="vocation" />
<option name="MAIN_CLASS_NAME" value="vocation.Test1" />
<option name="METHOD_NAME" value="test2" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Test.testAnalysis" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<configuration name="Test2.testAnalysis" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" />
<extension name="coverage">
@ -172,19 +215,25 @@
</pattern>
</extension>
<option name="PACKAGE_NAME" value="TestAttendanceAllowance" />
<option name="MAIN_CLASS_NAME" value="TestAttendanceAllowance.Test" />
<option name="MAIN_CLASS_NAME" value="TestAttendanceAllowance.Test2" />
<option name="METHOD_NAME" value="testAnalysis" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Tset_sy.test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<configuration name="Test.testAnalysis" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="Tset_sy" />
<option name="METHOD_NAME" value="test" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="TestAttendanceAllowance.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="TestAttendanceAllowance" />
<option name="MAIN_CLASS_NAME" value="TestAttendanceAllowance.Test" />
<option name="METHOD_NAME" value="testAnalysis" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
@ -199,11 +248,10 @@
</configuration>
<recent_temporary>
<list>
<item itemvalue="JUnit.Test1.test1 (1)" />
<item itemvalue="JUnit.Test1.test1" />
<item itemvalue="JUnit.Test1.test2 (1)" />
<item itemvalue="JUnit.Test2.testAnalysis" />
<item itemvalue="JUnit.Test.testAnalysis" />
<item itemvalue="JUnit.Tset_sy.test" />
<item itemvalue="JUnit.Test1.test2" />
</list>
</recent_temporary>
</component>
@ -626,7 +674,12 @@
<workItem from="1716517144358" duration="11000" />
<workItem from="1716528894728" duration="591000" />
<workItem from="1716531236250" duration="15130000" />
<workItem from="1716774175793" duration="4903000" />
<workItem from="1716774175793" duration="12616000" />
<workItem from="1716797286470" duration="10368000" />
<workItem from="1716859385203" duration="3896000" />
<workItem from="1716874187287" duration="24109000" />
<workItem from="1716904842701" duration="406000" />
<workItem from="1716946250888" duration="5661000" />
</task>
<servers />
</component>
@ -680,16 +733,6 @@
<line>69</line>
<option name="timeStamp" value="118" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java</url>
<line>41</line>
<option name="timeStamp" value="123" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java</url>
<line>111</line>
<option name="timeStamp" value="124" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
<watches-manager>

@ -1,8 +1,23 @@
DriverClasses=oracle.jdbc.OracleDriver
#DriverClasses=oracle.jdbc.OracleDriver
#
#ecology.url = jdbc:oracle:thin:@192.168.0.106:1521:ecology
#ecology.user = hrm_test
#ecology.password = ecology
#ecology.charset = ISO
#ecology.maxconn = 300
#ecology.minconn = 50
#ecology.maxusecount = 6000
#ecology.maxidletime = 600
#ecology.maxalivetime = 10
#ecology.checktime = 3600
ecology.url = jdbc:oracle:thin:@192.168.0.106:1521:ecology
ecology.user = hrm_test
ecology.password = ecology
DriverClasses = com.mysql.cj.jdbc.Driver
ecology.url = jdbc:mysql://221.226.25.34:8286/ecologyjcl?characterEncoding=utf8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai
ecology.user = fanwei
ecology.password = alpwsl92
ecology.charset = ISO
ecology.maxconn = 300
ecology.minconn = 50
@ -10,3 +25,7 @@ ecology.maxusecount = 6000
ecology.maxidletime = 600
ecology.maxalivetime = 10
ecology.checktime = 3600
ecology.isgoveproj = 0
LOG_FORMAT = yyyy.MM.dd'-'hh:mm:ss
DEBUG_MODE = false

@ -10272,3 +10272,83 @@
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-05-28","10:31:48.083","loginID=null main-1","71""1-330128595","null","null","update","update uf_jcl_kq_jqye set zfsc='0.0',wxsc='5.86',ktsc='5.8607',jxsc='0.0',ygid='302',sxrq='2024-01-01',jqid='145',ztsc='0.0',qsrq='2014-11-01',yqsxrq='2024-12-31',yxsc='0.0',ffsj='2024-05-28 10:31:47',lyid='70',jzrq='2024-12-31' where 1=1 and id='4047',[]",")
at weaver.conn.RecordSet.executeSql(RecordSet.java:1372)
at weaver.conn.RecordSet.executeUpdate(RecordSet.java:988)
at com.engine.common.util.DbTools.update(DbTools.java:117)
at com.engine.attendance.vacation.util.VocationCommonUtil.updateHolidayBalance(VocationCommonUtil.java:475)
at com.engine.attendance.vacation.job.holidaygeneration.tactics.SinglePaymentInFullWay.compute(SinglePaymentInFullWay.java:207)
at com.engine.attendance.vacation.cmd.VocationCmd.execute(VocationCmd.java:84)
at com.engine.attendance.vacation.cmd.VocationCmd.execute(VocationCmd.java:19)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.vacation.service.impl.VocationServiceImpl.generateVocation(VocationServiceImpl.java:75)
at vocation.Test1.test1(Test1.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"
"2024-05-28","10:37:19.668","loginID=null main-1","62""1-790021811","null","null","update","update uf_jcl_kq_jqye set zfsc='5.86',wxsc='0.00',ktsc='5.8607',jxsc='0.0',ygid='302',sxrq='2024-01-01',jqid='145',ztsc='0.0',qsrq='2014-11-01',yqsxrq='2024-12-31',yxsc='0.0',ffsj='2024-05-28 10:37:19',lyid='70',jzrq='2024-12-31' where 1=1 and id='4047',[]",")
at weaver.conn.RecordSet.executeSql(RecordSet.java:1372)
at weaver.conn.RecordSet.executeUpdate(RecordSet.java:988)
at com.engine.common.util.DbTools.update(DbTools.java:117)
at com.engine.attendance.vacation.util.VocationCommonUtil.updateHolidayBalance(VocationCommonUtil.java:475)
at com.engine.attendance.vacation.job.holidaygeneration.tactics.SinglePaymentInFullWay.compute(SinglePaymentInFullWay.java:207)
at com.engine.attendance.vacation.cmd.VocationCmd.execute(VocationCmd.java:84)
at com.engine.attendance.vacation.cmd.VocationCmd.execute(VocationCmd.java:19)
at com.engine.core.interceptor.CommandInvoker.execute(CommandInvoker.java:38)
at com.engine.core.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at com.engine.core.interceptor.LogInterceptor.execute(LogInterceptor.java:19)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:37)
at com.engine.core.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:42)
at com.engine.attendance.vacation.service.impl.VocationServiceImpl.generateVocation(VocationServiceImpl.java:75)
at vocation.Test1.test1(Test1.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
"

File diff suppressed because one or more lines are too long

@ -0,0 +1,265 @@
package com.engine.attendance.attendanceanalysis.web;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cloudstore.dev.api.util.EMManager;
import com.engine.common.util.ApiReturnTools;
import com.engine.common.util.ParamUtil;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.dateformat.DateTransformer;
import weaver.dateformat.TimeZoneVar;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import weaver.hrm.resource.ResourceComInfo;
import weaver.systeminfo.SystemEnv;
@Slf4j
@Path("/hrm/kq/jucailin/button")
public class AttendanceJucailinButtonAction {
private DateTimeFormatter fullFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/**
*
*/
@POST
@Path("/getButtonBaseInfo")
@Produces(MediaType.TEXT_PLAIN)
public String getButtonBaseInfo(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String, Object> retmap = new HashMap<String, Object>();
User user = HrmUserVarify.getUser (request , response) ;
try {
ResourceComInfo resourceComInfo = new ResourceComInfo();
String lastname = user.getLastname();
String messagerurl = resourceComInfo.getMessagerUrls("" + user.getUID());
String shortname = "";
boolean USERICONLASTNAME = Util.null2String(new BaseBean().getPropValue("Others", "USERICONLASTNAME")).equals("1");
if (USERICONLASTNAME && (messagerurl.indexOf("icon_w_wev8.jpg") > -1 || messagerurl.indexOf("icon_m_wev8.jpg") > -1 || messagerurl.indexOf("dummyContact.png") > -1)) {
shortname = User.getLastname(Util.null2String(Util.formatMultiLang(lastname, "" + user.getLanguage())));
}
String curDate = DateUtil.getCurrentDate();
retmap.put("userid", user.getUID());
retmap.put("lastname", lastname);
retmap.put("shortname", shortname);
retmap.put("messagerurl", messagerurl);
retmap.put("date", curDate);
retmap.put("timemillis", System.currentTimeMillis());
retmap.put("status", "1");
} catch (Exception e) {
log.error("execute fail,catch error: [{}]",e);
retmap.put("status", "-1");
return ApiReturnTools.error("500",SystemEnv.getHtmlLabelName(382661, user.getLanguage()));
}
return JSONObject.toJSONString(retmap);
}
/**
* 退
*
*
* @param request
* @param response
* @return
*/
@POST
@Path("/getButtons")
@Produces(MediaType.TEXT_PLAIN)
public String getButtons(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> retmap = new HashMap<String, Object>();
User user = HrmUserVarify.getUser (request , response) ;
try{
LocalDateTime now = LocalDateTime.now();
String curDate = DateUtil.getCurrentDate();
//真正的考勤时间线
ResourceComInfo resourceComInfo = new ResourceComInfo();
String lastname = user.getLastname();
String messagerurl = resourceComInfo.getMessagerUrls(""+user.getUID());
String shortname = "";
boolean USERICONLASTNAME = Util.null2String(new BaseBean().getPropValue("Others" , "USERICONLASTNAME")).equals("1");
if(USERICONLASTNAME&&(messagerurl.indexOf("icon_w_wev8.jpg")>-1||messagerurl.indexOf("icon_m_wev8.jpg")>-1||messagerurl.indexOf("dummyContact.png")>-1)){
shortname = User.getLastname(Util.null2String(Util.formatMultiLang(lastname, ""+user.getLanguage())));
}
String resourceId = String.valueOf(user.getUID());
List<Object> signListLine = getSignListLine(resourceId,curDate);
retmap.put("lastname", lastname);
retmap.put("shortname", shortname);
retmap.put("messagerurl", messagerurl);
retmap.put("date", curDate);
retmap.put("timeline", signListLine);
retmap.put("status", "1");
retmap.put("now", now.format(fullFormatter));
}catch (Exception e) {
retmap.put("status", "-1");
retmap.put("message", SystemEnv.getHtmlLabelName(382661,user.getLanguage()));
}
return JSONObject.toJSONString(retmap);
}
/**
* 退
*/
private List<Object> getSignListLine(String resourceId, String curDate) {
List<Object> signListLine = Lists.newArrayList();
RecordSet recordSet = new RecordSet();
String sql = "select * from hrmschedulesign where userid = "+resourceId+" and signDate='"+curDate+"' order by signTime desc ";
recordSet.executeQuery(sql);
while (recordSet.next()){
String signDate = recordSet.getString("signDate");
String signTime = recordSet.getString("signTime");
String signDateTime = signDate+" "+signTime;
String addr = Util.null2String(recordSet.getString("addr"));
Map<String,Object> cardTimelineMap = new HashMap<>();
cardTimelineMap.put("date", curDate);
cardTimelineMap.put("signTime", signDateTime);
cardTimelineMap.put("position", addr);
signListLine.add(cardTimelineMap);
}
return signListLine;
}
/**
* 退
* @param request
* @param response
* @return
*/
@POST
@Path("/punchButton")
@Produces(MediaType.TEXT_PLAIN)
public String punchButton(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> retmap = new HashMap<String, Object>();
User user = HrmUserVarify.getUser (request , response) ;
try{
Map<String, Object> params = ParamUtil.request2Map(request);
RecordSet rs = new RecordSet();
String deviceInfo = Util.null2String(params.get("deviceInfo"));
JSONObject jsonObject = null;
if(deviceInfo.length() > 0){
jsonObject = JSON.parseObject(deviceInfo);
JSONObject jsonObject1 = new JSONObject();
Set<Entry<String, Object>> jsonSet = jsonObject.entrySet();
for(Entry<String, Object> js : jsonSet){
String key = js.getKey();
String value = Util.null2String(js.getValue());
jsonObject1.put(key, value);
}
if(!jsonObject1.isEmpty()){
deviceInfo = jsonObject1.toJSONString();
}
}
//手机打卡部分
String longitude = Util.null2String(params.get("longitude"));
String latitude = Util.null2String(params.get("latitude"));
String signData = Util.null2String(params.get("signData"));
//wifi用的
String mac = Util.null2String(params.get("mac"));
String sid = Util.null2String(params.get("sid"));
String addr = Util.null2String(params.get("position"));
String showaddress =addr;
String ismobile = Util.null2String(params.get("ismobile"));
//区分是来自于钉钉还是EM7
String browser = Util.null2String(params.get("browser"));
DateTimeFormatter fullFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime localTime = LocalTime.now();
String signTime =localTime.format(dateTimeFormatter);
String signDate = LocalDate.now().format(dateFormatter);
String timeZone = Util.null2String(TimeZoneVar.getTimeZone(),"");
//处理多时区
String timeZoneConversion = Util.null2String(new weaver.general.BaseBean().getPropValue("weaver_timezone_conversion","timeZoneConversion")).trim();
if("1".equals(timeZoneConversion)) {
DateTransformer dateTransformer=new DateTransformer();
String[] zone_localTime = dateTransformer.getLocaleDateAndTime(signDate,signTime);
if(zone_localTime != null && zone_localTime.length == 2){
signDate = zone_localTime[0];
signTime = zone_localTime[1];
}
}
int userId = user.getUID();
String userType = user.getLogintype();
String clientAddress = Util.getIpAddr(request);
String isInCom = "1";
String datetime_timezone = signDate+" "+signTime;
LocalDateTime nowDateTime = LocalDateTime.parse(datetime_timezone,fullFormatter);
//记录下是来自于E9的pc端签到
String signfrom = "e9pc";
if("1".equalsIgnoreCase(ismobile)){
signfrom = "e9mobile";
if("DingTalk".equalsIgnoreCase(browser)){
signfrom = "DingTalk";
}else if("Wechat".equalsIgnoreCase(browser)){
signfrom = "Wechat";
String weChat_deviceid = Util.null2String(request.getSession().getAttribute(
EMManager.DeviceId));
if(weChat_deviceid.length() > 0){
//微信打卡的设备号需要单独处理
if(jsonObject != null){
jsonObject.put("deviceId", weChat_deviceid);
}else{
jsonObject = new JSONObject();
jsonObject.put("deviceId", weChat_deviceid);
}
if(!jsonObject.isEmpty()){
deviceInfo = jsonObject.toJSONString();
}
}
}
}
deviceInfo = deviceInfo.replaceAll("\\?", "");
String signType = "1";
String belongdate = signDate;
String punchSql = "insert into HrmScheduleSign(userId,userType,signType,signDate,signTime,clientAddress,isInCom,timeZone,belongdate,signfrom,longitude,latitude,addr,deviceInfo,showaddress) "+
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
boolean isOk = rs.executeUpdate(punchSql,userId,userType,signType,signDate,signTime,clientAddress,isInCom,
timeZone,belongdate,signfrom,longitude,latitude,addr,deviceInfo,showaddress);
log.info(user.getLastname()+":PunchButtonCmd:punchSql:"+punchSql+":isOk:"+isOk);
retmap.put("status", "1");
retmap.put("signdate", signDate);
retmap.put("signtime", signTime);
}catch (Exception e){
retmap.put("status", "-1");
retmap.put("message", SystemEnv.getHtmlLabelName(382661,user.getLanguage()));
}
return JSONObject.toJSONString(retmap);
}
}

@ -262,8 +262,9 @@ public class AttendanceanalysisAction {
@Produces({"text/plain"})
public String getDefaultCalendar(@Context HttpServletRequest request, @Context HttpServletResponse response){
try {
String sql = "select id, szjg, rlmc, rlsm from uf_jcl_kq_rlmc where mrrl = '1'";
List<Map<String,Object>> calendarList = DbTools.getSqlToList(sql);
Map<String,Object> paramMap = ParamUtil.request2Map(request);
String sql = "select id, szjg, rlmc, rlsm from uf_jcl_kq_rlmc where mrrl = '1' and szjg=?";
List<Map<String,Object>> calendarList = DbTools.getSqlToList(sql,paramMap.get("szjg"));
return ApiReturnTools.success(calendarList);
}catch (Exception e){
log.error("execute fail,catch error: [{}]",e);
@ -279,10 +280,11 @@ public class AttendanceanalysisAction {
@Produces({"text/plain"})
public String dumpDefaultCalendar(@Context HttpServletRequest request, @Context HttpServletResponse response){
try {
String sql = "update uf_jcl_kq_rlmc set mrrl = '0'";
Map<String,Object> paramMap = ParamUtil.request2Map(request);
String sql = "update uf_jcl_kq_rlmc set mrrl = '0' where szjg=?";
List<Map<String,Object>> resultList = Lists.newArrayList();
Map<String,Object> map = Maps.newHashMap();
if(DbTools.update(sql))
if(DbTools.update(sql,paramMap.get("szjg")))
map.put("update","1");
else
map.put("update","0");

@ -419,13 +419,7 @@ public class UpdateAttendanceResultWrapper extends Service {
recordParam.put("userId",userId);
recordParam.put("analysisDate",analysisDate);
recordParam.put("recordData",Lists.newArrayList());
String rqlx = "";
try {
rqlx = CommonUtil.getRqlx(userId,analysisDate);
}catch (Exception e){
log.error("recordNoClass exception : [{}]",e);
rqlx = Utils.getDateType(userId);
}
String rqlx = CommonUtil.getRqlx(userId,analysisDate);
recordParam.put("rqlx",rqlx);
recordParam.put("classInfo",Lists.newArrayList());

@ -0,0 +1,41 @@
package com.engine.attendance.vacation.cmd;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.core.interceptor.CommandContext;
import weaver.general.Util;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class HandleOverdueVocationCmd extends AbstractCommonCommand<Map<String,Object>> {
public HandleOverdueVocationCmd(Map<String,Object> params){
this.params=params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
String releaseDate = Util.null2String(params.get("releaseDate"));
if ("".equals(releaseDate)){
releaseDate = DateUtil.getCurrentDate();
}
String sql = "select jb,jywxcl,yqsc,edkyqcs,yqhedzgxz from uf_jcl_kq_jqed where jywxcl in (0,1)";
List<Map<String,Object>> holidayRuleList = DbTools.getSqlToList(sql);
Set<String> jbsets = holidayRuleList.stream().map(e->e.get("jb").toString()).collect(Collectors.toSet());
sql = "select id,jqid,sxrq,jzrq,yqsxrq from uf_jcl_kq_jqye where yqsxrq<? and jqid in ("+String.join(",",jbsets)+")";
List<Map<String,Object>> holidayBalanceList = DbTools.getSqlToList(sql,releaseDate);
return null;
}
}

@ -31,14 +31,14 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
releaseDate = DateUtil.getCurrentTime();
}
String cover = Util.null2String(data.get("cover"));
Map<String, Object> maxMap = vocationList.stream().max(Comparator.comparing(e->Double.valueOf(e.get("jgsc1").toString()).intValue())).get();
int maxjgsc1 = Double.valueOf(maxMap.get("jgsc1").toString()).intValue();
//起算日期
String qsrq = Util.null2String(vocationList.get(0).get("qsrqValue"));
//调整起算日期策略
String dzqsrq= Util.null2String(vocationList.get(0).get("dzqsrq"));
//分割日期
String fgrq= Util.null2String(vocationList.get(0).get("fgrq"));
//额度依据
String edyj= Util.null2String(vocationList.get(0).get("edyj"));
data.put("isOneTime","1");
qsrq = VocationCommonUtil.getAfterAdjustTime(qsrq,dzqsrq,fgrq);
@ -48,7 +48,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
//额度有效期间单位
String edyxq = Util.null2String(vocationList.get(0).get("edyxq"));
Map<String, Object> insertHoliDayParam = getInsertHoliDayParam(vocationList.get(0), userId, qsrq, releaseDate,maxjgsc1);
Map<String, Object> insertHoliDayParam = Maps.newHashMap();
List<Map<String,Object>> dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam);
@ -60,6 +60,10 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
//实际休息时长
double restTime = 0;
SinglePaymentInFullWay singlePaymentInFullWay = new SinglePaymentInFullWay();
if ("0".equals(edyj) || "2".equals(edyj) || "4".equals(edyj)){
Map<String, Object> maxMap = vocationList.stream().max(Comparator.comparing(e->Double.valueOf(e.get("jgsc1").toString()).intValue())).get();
int maxjgsc1 = Double.valueOf(maxMap.get("jgsc1").toString()).intValue();
insertHoliDayParam = getInsertHoliDayParam(vocationList.get(0), userId, qsrq, releaseDate,maxjgsc1);
if (edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())){
//自然年
for (int i=0;i<=maxjgsc1;i++){
@ -104,7 +108,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
}else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey())){
//自然周
for (int i=0;i<=maxjgsc1;i++){
String executeTime = DateUtil.nextMonth(qsrq,i*7,DateUtil.yyyyMMdd);
String executeTime = DateUtil.AfterDay(qsrq,i*7);
data.put("releaseDate",executeTime);
Map<String,Object> map = singlePaymentInFullWay.compute(data);
double ktsc = map.get("ktsc") == null?0:Double.valueOf(map.get("ktsc").toString());
@ -115,24 +119,28 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
}else if (edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){
//起算周
for (int i=0;i<=maxjgsc1;i++){
String executeTime = DateUtil.nextMonth(qsrq,i*7,DateUtil.yyyyMMdd);
String executeTime = DateUtil.AfterDay(qsrq,i*7);
data.put("releaseDate",executeTime);
Map<String,Object> map = singlePaymentInFullWay.compute(data);
double ktsc = map.get("ktsc") == null?0:Double.valueOf(map.get("ktsc").toString());
restTime = restTime + ktsc;
}
}else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){
//自然天
for (int i=0;i<=maxjgsc1;i++){
String executeTime = DateUtil.nextMonth(qsrq,i,DateUtil.yyyyMMdd);
String executeTime = DateUtil.AfterDay(qsrq,i);
data.put("releaseDate",executeTime);
Map<String,Object> map = singlePaymentInFullWay.compute(data);
double ktsc = map.get("ktsc") == null?0:Double.valueOf(map.get("ktsc").toString());
restTime = restTime + ktsc;
}
}
}else {
insertHoliDayParam = singlePaymentInFullWay.compute(data);
double ktsc = insertHoliDayParam.get("ktsc") == null?0:Double.valueOf(insertHoliDayParam.get("ktsc").toString());
restTime = ktsc;
}
insertHoliDayParam.put("ktsc", restTime);
VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList);

@ -110,34 +110,11 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay {
double restTime = 0;
//工龄小于1年的新员工,且额度有效期单位为自然年
if (allMonths < 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) {
// Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, 0, yjzd);
//
// //额定休息时长
// double edktsc = Double.valueOf(vocationMap.get("edktsc") == null? "0" :Util.null2String(vocationMap.get("edktsc")));
if (QuotaChangeMethodEnum.CONVERT.getKey().equals(edbgsedclfs) || CheckBoxEnum.CHECKED.getKey().equals(schdedablzs)) {
// if (!sxrq.split("-")[0].equals(releaseDate.split("-")[0]) && releaseDate.split("-")[0].equals(qsrq.split("-")[0])) {
// //起算年和发生日期在同一年,生成假期在下一年
// int days = DateUtil.getBetWeenDays(qsrq, qsrq.split("-")[0] + "-12-31") + 1;
// int yearDays = DateUtil.getDays(qsrq, Calendar.DAY_OF_YEAR);
// restTime = VocationCommonUtil.computeRestDays(days, yearDays, edktsc, wscl);
// } else if (sxrq.split("-")[0].equals(releaseDate.split("-")[0]) && releaseDate.split("-")[0].equals(qsrq.split("-")[0])) {
// //起算年和发生日期在同一年,生成假期为起算年的当年
// int days = Double.valueOf(ljcrglyfslwz).intValue() * 30;
// int yearDays = DateUtil.getDays(DateUtil.beforeYear(releaseDate,1,DateUtil.yyyyMMdd), Calendar.DAY_OF_YEAR);
// restTime = VocationCommonUtil.computeRestDays(days, yearDays, edktsc, wscl);
// } else if (sxrq.split("-")[0].equals(releaseDate.split("-")[0]) && !releaseDate.split("-")[0].equals(qsrq.split("-")[0])) {
// //起算年在发生日期的上一年,起算年的后一年
// int days = DateUtil.getBetWeenDays(qsrq, qsrq.split("-")[0] + "-12-31") + 1;
// int yearDays = DateUtil.getDays(qsrq, Calendar.DAY_OF_YEAR);
// restTime = VocationCommonUtil.computeRestDays(days, yearDays, edktsc, wscl);
// } else if (!sxrq.split("-")[0].equals(releaseDate.split("-")[0]) && !releaseDate.split("-")[0].equals(qsrq.split("-")[0])) {
// //起算年在发生日期的上一年,生成假期为起算年的后第二年
// restTime = edktsc;
// }
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.CONVERT,userId);
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.CONVERT,userId);
} else {
// restTime = edktsc;
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.NO_CONVERT,userId);
}
@ -160,58 +137,14 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay {
if (CheckBoxEnum.CHECKED.getKey().equals(rzdqedablzs) && betweenMonth < 12
&& sxrq.split("-")[0].equals(releaseDate.split("-")[0]) && releaseDate.split("-")[0].equals(qsrq.split("-")[0])) {
//起算年和发生日期在同一年,生成假期为起算年的当年
// Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, Double.valueOf(ljcrglyfslwz).intValue() / 12, yjzd);
// double edktsc = Double.valueOf(vocationMap.get("edktsc").toString());
// int days = DateUtil.getBetWeenDays(qsrq, releaseDate.split(" ")[0]) + 1;
// int yearDays = DateUtil.getDays(qsrq, Calendar.DAY_OF_YEAR);
// restTime = VocationCommonUtil.computeRestDays(days, yearDays, edktsc, wscl);
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.CONVERT,userId);
} else {
//
// if (!sxrq.split("-")[0].equals(releaseDate.split("-")[0]) && releaseDate.split("-")[0].equals(qsrq.split("-")[0])) {
// //起算年和发生日期在同一年,生成假期在下一年
// //betweenMonth = DateUtil.getBetWeenMonths(qsrq,qsrq.split("-")[0] + "-12-31");
// betweenMonth = DateUtil.getBetWeenMonths(qsrq,sxrq);
//
// } else if (sxrq.split("-")[0].equals(releaseDate.split("-")[0]) && releaseDate.split("-")[0].equals(qsrq.split("-")[0])) {
// //起算年和发生日期在同一年,生成假期为发生日期的当年
// betweenMonth=0;
//
// } else if (sxrq.split("-")[0].equals(releaseDate.split("-")[0]) && !releaseDate.split("-")[0].equals(qsrq.split("-")[0])) {
// //起算年在发生日期的之前,生成假期为发生日期的当年
// //betweenMonth = DateUtil.getBetWeenMonths(qsrq,DateUtil.beforeYear(releaseDate,1,DateUtil.yyyy) + "-12-31");
// betweenMonth = DateUtil.getBetWeenMonths(qsrq,sxrq);
//
// } else if (!sxrq.split("-")[0].equals(releaseDate.split("-")[0]) && !releaseDate.split("-")[0].equals(qsrq.split("-")[0])) {
// //起算年在发生日期的之前,生成假期为发生日期的下一年
// //betweenMonth = DateUtil.getBetWeenMonths(qsrq,releaseDate.split("-")[0] + "-12-31");
// betweenMonth = DateUtil.getBetWeenMonths(qsrq,sxrq);
//
// }
// allMonths = betweenMonth + Double.valueOf(ljcrglyfslwz).intValue();
// int intervalYear = allMonths/12;
// Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, intervalYear / 12, yjzd);
// double edktsc = Double.valueOf(vocationMap.get("edktsc").toString());
if (QuotaChangeMethodEnum.CONVERT.getKey().equals(edbgsedclfs)) {
// Map<String, Object> beforeVocationMap = VocationCommonUtil.getVocationMap(vocationList, intervalYear - 1, yjzd);
// if (!beforeVocationMap.get("detailid").equals(vocationMap.get("detailid"))) {
// //考虑残年情况
// double beforeEdktsc = Double.valueOf(beforeVocationMap.get("edktsc").toString());
// int needBackMonths = (intervalYear - 1) * 12 - Double.valueOf(ljcrglyfslwz).intValue();
//
// String middleTime = releaseDate.split("-")[0] + "-" + DateUtil.nextMonth(qsrq, needBackMonths, DateUtil.yyyyMMdd).split("-")[1] + "-" + qsrq.split("-")[2];
// int beforeDays = DateUtil.getBetWeenDays(releaseDate.split("-")[0] + "-01-01", middleTime);
// int afterDays = DateUtil.getBetWeenDays(middleTime, releaseDate.split("-")[0] + "-12-31");
//
// int yearDays = DateUtil.getDays(releaseDate, Calendar.DAY_OF_YEAR);
// restTime = VocationCommonUtil.computeRestDays(beforeDays, yearDays, beforeEdktsc, wscl) + VocationCommonUtil.computeRestDays(afterDays, yearDays, edktsc, wscl);
// } else {
// restTime = edktsc;
// }
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.CONVERT,userId);
} else if (QuotaChangeMethodEnum.NO_CONVERT.getKey().equals(edbgsedclfs)) {
// restTime = edktsc;
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.NO_CONVERT,userId);
}
}
@ -327,7 +260,7 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay {
if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(qsrq)) >=0){
int beforeDays = DateUtil.getBetWeenDays(qsrq,divideTime);
int afterDays = DateUtil.getBetWeenDays(divideTime,nextSxrq)+1;
int afterDays = DateUtil.getBetWeenDays(divideTime,nextSxrq);
double beforeRestTime = VocationCommonUtil.computeRestDays(beforeDays, yearDays, beginEdktsc, wscl);
double afterRestTime = VocationCommonUtil.computeRestDays(afterDays, yearDays, endEdktsc, wscl);
@ -339,7 +272,7 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay {
}else {
int beforeDays = DateUtil.getBetWeenDays(sxrq,divideTime);
int afterDays = DateUtil.getBetWeenDays(divideTime,nextSxrq)+1;
int afterDays = DateUtil.getBetWeenDays(divideTime,nextSxrq);
double beforeRestTime = VocationCommonUtil.computeRestDays(beforeDays, yearDays, beginEdktsc, wscl);
double afterRestTime = VocationCommonUtil.computeRestDays(afterDays, yearDays, endEdktsc, wscl);
restTime = beforeRestTime+afterRestTime;

@ -5,7 +5,7 @@ import weaver.hrm.User;
import java.util.Map;
public interface VocationService {
Map<String,Object> generateVocation(Map<String,Object> params);
void generateVocation(Map<String,Object> params);
void handleOverdueVocation(Map<String,Object> params);
}

@ -2,6 +2,7 @@ package com.engine.attendance.vacation.service.impl;
import com.engine.attendance.attendanceplan.service.AttendancePlanService;
import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl;
import com.engine.attendance.vacation.cmd.HandleOverdueVocationCmd;
import com.engine.attendance.vacation.cmd.VocationCmd;
import com.engine.attendance.vacation.service.VocationService;
import com.engine.common.cmd.GetPersonDateBySuitOrganzation;
@ -24,7 +25,7 @@ public class VocationServiceImpl extends Service implements VocationService {
@Override
public Map<String, Object> generateVocation(Map<String, Object> params) {
public void generateVocation(Map<String, Object> params) {
String modeId = Util.null2String(params.get("modeId"));
Map<String,Object> param = Maps.newHashMap();
param.put("modeId",modeId);
@ -76,7 +77,11 @@ public class VocationServiceImpl extends Service implements VocationService {
}
}
}
return null;
}
@Override
public void handleOverdueVocation(Map<String, Object> params) {
commandExecutor.execute(new HandleOverdueVocationCmd(params));
}
}

@ -243,19 +243,19 @@ public class VocationCommonUtil {
BigDecimal ratedRestTimeBig = new BigDecimal(ratedRestTime);
double result = 0;
if (RemainderHandleEnum.ROUND_UP_FOUR.getKey().equals(wscl)){
result = dayBig.divide(yearDayBig,6,BigDecimal.ROUND_HALF_UP).multiply(ratedRestTimeBig).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue();
result = dayBig.multiply(ratedRestTimeBig).divide(yearDayBig,4,BigDecimal.ROUND_HALF_UP).doubleValue();
}else if (RemainderHandleEnum.ROUND_UP_TWO.getKey().equals(wscl)){
result = dayBig.divide(yearDayBig,6,BigDecimal.ROUND_HALF_UP).multiply(ratedRestTimeBig).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
result = dayBig.multiply(ratedRestTimeBig).divide(yearDayBig,2,BigDecimal.ROUND_HALF_UP).doubleValue();
}else if (RemainderHandleEnum.DOWN_ZERO_POINT_FIVE.getKey().equals(wscl)){
result = dayBig.divide(yearDayBig,6,BigDecimal.ROUND_HALF_UP).multiply(ratedRestTimeBig).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue();
result = dayBig.multiply(ratedRestTimeBig).divide(yearDayBig,2,BigDecimal.ROUND_HALF_UP).doubleValue();
result = Math.floor(result * 2) / 2;
}else if (RemainderHandleEnum.UP_ZERO_POINT_FIVE.getKey().equals(wscl)){
result = dayBig.divide(yearDayBig,6,BigDecimal.ROUND_HALF_UP).multiply(ratedRestTimeBig).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue();
result = dayBig.multiply(ratedRestTimeBig).divide(yearDayBig,2,BigDecimal.ROUND_HALF_UP).doubleValue();
result = Math.ceil(result * 2) / 2;
}else if (RemainderHandleEnum.ROUND_DOWN.getKey().equals(wscl)){
result = dayBig.divide(yearDayBig,6,BigDecimal.ROUND_HALF_UP).multiply(ratedRestTimeBig).setScale(0,BigDecimal.ROUND_DOWN).doubleValue();
result = dayBig.multiply(ratedRestTimeBig).divide(yearDayBig,0,BigDecimal.ROUND_DOWN).doubleValue();
}else if (RemainderHandleEnum.ROUND_UP.getKey().equals(wscl)){
result = dayBig.divide(yearDayBig,6,BigDecimal.ROUND_HALF_UP).multiply(ratedRestTimeBig).setScale(0,BigDecimal.ROUND_UP).doubleValue();
result = dayBig.multiply(ratedRestTimeBig).divide(yearDayBig,0,BigDecimal.ROUND_UP).doubleValue();
}
return result;
@ -451,10 +451,27 @@ public class VocationCommonUtil {
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);
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);
dataMap.put("yxsc",oldyxsc);
double wxsc = ktsc-oldztsc-oldzfsc-oldyxsc;
dataMap.put("wxsc",String.format ("%.2f",wxsc));
DbTools.update(CommonUtil.makeUpdateSql(tableName,dataMap,condition));
}else {
Utils.InsertFormTable(tableName, dataMap, Utils.getFormmodeIdMap());
@ -475,7 +492,7 @@ public class VocationCommonUtil {
String jqid = Util.null2String(dataMap.get("jqid"));
String sxrq = Util.null2String(dataMap.get("sxrq"));
String jzrq = Util.null2String(dataMap.get("jzrq"));
String sql = "select id,ffsj from "+tableName +" where lyid=? and ygid=? and jqid=? and sxrq=? and jzrq=?";
String sql = "select id,ffsj,ktsc,yxsc,wxsc,ztsc,zfsc,yqsc,yqyxsc,yqsxrq from "+tableName +" where lyid=? and ygid=? and jqid=? and sxrq=? and jzrq=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,lyid,ygid,jqid,sxrq,jzrq);
return dataList;

@ -7,6 +7,7 @@ import com.engine.common.util.ApiReturnTools;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.common.util.Utils;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -40,8 +41,8 @@ public class VocationAction {
//假期额度模块id
String modeId = formmodeIdMap.get("uf_jcl_kq_jqed");
paramMap.put("modeId",modeId);
Map<String,Object> dataMap = vocationService.generateVocation(paramMap);
return ApiReturnTools.success(dataMap);
vocationService.generateVocation(paramMap);
return ApiReturnTools.success(Maps.newHashMap());
}catch (Exception e){
log.error("sync fund status fail,catch error: [{}]",e);
return ApiReturnTools.error("200","查询失败");

@ -118,8 +118,8 @@ public class AskForLeaveWorkFlowSubmitAction implements Action {
leaveDuration = leaveDuration * 8;
}
log.info("leaveDuration : [{}]", leaveDuration);
List<Map<String, Object>> holidayBalancefilterList = holidayBalanceList.stream().filter(e -> DateUtil.getTime(e.get("yqsxrq").toString()).compareTo(DateUtil.getTime(ksrq)) >= 0).collect(Collectors.toList());
for (Map<String, Object> holidayBalance : holidayBalancefilterList) {
// List<Map<String, Object>> holidayBalancefilterList = holidayBalanceList.stream().filter(e -> DateUtil.getTime(e.get("yqsxrq").toString()).compareTo(DateUtil.getTime(ksrq)) >= 0).collect(Collectors.toList());
for (Map<String, Object> holidayBalance : holidayBalanceList) {
//额定未休时长
double wxsc = Util.null2String(holidayBalance.get("wxsc")).equals("") ? 0 : Double.valueOf(holidayBalance.get("wxsc").toString());
if (leaveDuration > 0) {

@ -0,0 +1,84 @@
package com.engine.attendance.workflow.cmd;
import com.engine.attendance.enums.CheckBoxEnum;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.CommonUtil;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.common.util.Utils;
import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.company.SubCompanyComInfo;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
public class GetRestDayIntervalCmd extends AbstractCommonCommand<Map<String, Object>> {
public GetRestDayIntervalCmd(Map<String, Object> params, User user) {
this.user = user;
this.params = params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String, Object> resultMap = Maps.newHashMap();
String userId = Util.null2String(params.get("userId"));
String startDate = Util.null2String(params.get("startDate"));
String endDate = Util.null2String(params.get("endDate"));
String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_rlmc");
Set<String> calendarSetIdsSets = CommonUtil.getDataIds(userId,modeId, DateUtil.getCurrentDate(),DateUtil.getCurrentDate());
if (calendarSetIdsSets.size() > 0){
String sql = "select rqlx,rq from uf_jcl_kq_rlxx where rlmc=? and rq>=? and rq<=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,calendarSetIdsSets.toArray()[0],startDate,endDate);
if (dataList.size() == 0){
dataList = getDefaultDateType(userId,startDate,endDate);
}
resultMap.put("data",dataList);
}else {
resultMap.put("data",getDefaultDateType(userId,startDate,endDate));
}
return resultMap;
}
public List<Map<String,Object>> getDefaultDateType(String userId,String startDate,String endDate){
List<Map<String,Object>> resultList = Lists.newArrayList();
String sql = "select subcompanyid1 from hrmresource where id =?";
Map<String,Object> departMentMap = DbTools.getSqlToMap(sql,userId);
String subcompanyid1 = departMentMap.get("subcompanyid1").toString();
String parentSubcompanyids = "";
try {
parentSubcompanyids = new SubCompanyComInfo().getAllParentSubcompanyId(subcompanyid1,parentSubcompanyids);
}catch (Exception e){
log.error("getDefaultDateType error:[{}]",e);
}
parentSubcompanyids = subcompanyid1+parentSubcompanyids;
sql = "select b.szjg,a.rqlx,a.rq 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>=? and a.rq<=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startDate,endDate);
Map<String,List<Map<String,Object>>> dataGroupByOrganzation = 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 = dataGroupByOrganzation.get(subId);
if (resultList != null && resultList.size()>0){
break;
}
}
return resultList;
}
}

@ -6,4 +6,11 @@ public interface AskForLeaveService {
Map<String, Object> getUesdHolidayItem(Map<String, Object> params);
Map<String, Object> getAskForLeaveRecordList(Map<String, Object> params);
/**
*
* @param params
* @return
*/
Map<String, Object> getRestDayInterval(Map<String, Object> params);
}

@ -3,6 +3,7 @@ package com.engine.attendance.workflow.service.impl;
import com.engine.attendance.enums.CheckBoxEnum;
import com.engine.attendance.workflow.cmd.GetAskForLeaveRecordListCmd;
import com.engine.attendance.workflow.cmd.GetKqCycleTimeIntervalCmd;
import com.engine.attendance.workflow.cmd.GetRestDayIntervalCmd;
import com.engine.attendance.workflow.service.AskForLeaveService;
import com.engine.common.exception.AttendanceRunTimeException;
import com.engine.common.util.DateUtil;
@ -11,6 +12,7 @@ import com.engine.core.impl.Service;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import java.time.ZoneOffset;
import java.util.Comparator;
@ -113,4 +115,17 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
public Map<String, Object> getAskForLeaveRecordList(Map<String, Object> params) {
return commandExecutor.execute(new GetAskForLeaveRecordListCmd(params,user));
}
@Override
public Map<String, Object> getRestDayInterval(Map<String, Object> params) {
Map<String, Object> resultMap = Maps.newHashMap();
String itemId = Util.null2String(params.get("itemId"));
String sql = "select zdycrqqjndxxb from uf_jcl_kq_kqxm where id=?";
List<Map<String,Object>> itemList = DbTools.getSqlToList(sql,itemId);
String zdycrqqjndxxb = Util.null2String(itemList.get(0).get("zdycrqqjndxxb"));
if (CheckBoxEnum.UNCHECKED.getKey().equals(zdycrqqjndxxb)){
return resultMap;
}
return commandExecutor.execute(new GetRestDayIntervalCmd(params,user));
}
}

@ -56,7 +56,6 @@ public class AskForLeaveAction {
}
}
/**
*
* @param request
@ -76,4 +75,24 @@ public class AskForLeaveAction {
return ApiReturnTools.error("500","getBusinessTripsApplyList error");
}
}
/**
*
* @param request
* @param response
* @return
*/
@GET
@Path("/getRestDayInterval")
@Produces(MediaType.APPLICATION_JSON)
public String getRestDayInterval(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try {
User user = HrmUserVarify.getUser(request, response);
Map<String,Object> param = ParamUtil.request2Map(request);
return new ResponseResult<Map<String, Object>, Map<String, Object>>(user).run(getAskForLeaveService(user) :: getRestDayInterval,param);
}catch (Exception e){
log.error("execute fail,catch error: [{}]",e);
return ApiReturnTools.error("500","getBusinessTripsApplyList error");
}
}
}

@ -621,23 +621,16 @@ public class CommonUtil {
Set<String> calendarSetIdsSets = CommonUtil.getDataIds(userId,modeId,DateUtil.getCurrentDate(),DateUtil.getCurrentDate());
log.info("getRqlx calendarSetIdsSets : [{}]",calendarSetIdsSets);
String rqlx = "";
if (calendarSetIdsSets.size() == 0){
String sql = "select subcompanyid1 from hrmresource where id =?";
Map<String,Object> departMentMap = DbTools.getSqlToMap(sql,userId);
sql = "select id from uf_jcl_kq_rlmc where szjg=?";
List<Map<String,Object>> resultList = DbTools.getSqlToList(sql,departMentMap.get("subcompanyid1"));
calendarSetIdsSets = resultList.stream().map(e->e.get("id").toString()).collect(Collectors.toSet());
}
if (calendarSetIdsSets.size() > 0){
String sql = "select rqlx from uf_jcl_kq_rlxx where rlmc=? and rq=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,calendarSetIdsSets.toArray()[0],date);
if (dataList.size() > 0){
rqlx = dataList.get(0).get("rqlx").toString();
}else {
rqlx = Utils.getDateType(date);
rqlx = Utils.getDefaultDateType(userId,date);
}
}else {
rqlx = Utils.getDateType(date);
rqlx = Utils.getDefaultDateType(userId,date);
}
return rqlx;
}

@ -9,6 +9,8 @@ import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import java.io.File;
import java.io.FileFilter;
@ -269,7 +271,7 @@ public class Utils<T> {
durationBig = new BigDecimal(Math.floor(durationHour/hsl));
itemDuration = durationBig.multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_UP)).doubleValue();
}else {
itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue();
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}else if (unit.equals(AccountingUnitEnum.HOUR)){
@ -277,7 +279,7 @@ public class Utils<T> {
durationBig = new BigDecimal(Math.floor(duration/hsl));
itemDuration=durationBig.multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_UP)).doubleValue();
}else {
itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue();
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}
@ -288,7 +290,7 @@ public class Utils<T> {
durationBig = new BigDecimal(Math.floor(duration/hsl));
itemDuration=durationBig.multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_UP)).doubleValue();
}else {
itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue();
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}else if (unit.equals(AccountingUnitEnum.HOUR)){
@ -298,7 +300,7 @@ public class Utils<T> {
durationBig = new BigDecimal(Math.floor(durationMinute/hsl));
itemDuration=durationBig.multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_UP)).doubleValue();
}else {
itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue();
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}
}
@ -333,7 +335,7 @@ public class Utils<T> {
durationBig = new BigDecimal(Math.floor(durationHour/hsl));
itemDuration = durationBig.multiply(hslBig).doubleValue();
}else {
itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue();
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}else if (unit.equals(AccountingUnitEnum.HOUR)){
@ -341,7 +343,7 @@ public class Utils<T> {
durationBig = new BigDecimal(Math.floor(duration/hsl));
itemDuration=durationBig.multiply(hslBig).doubleValue();
}else {
itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue();
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}
@ -352,7 +354,7 @@ public class Utils<T> {
durationBig = new BigDecimal(Math.floor(duration/hsl));
itemDuration=durationBig.multiply(hslBig).doubleValue();
}else {
itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue();
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}else if (unit.equals(AccountingUnitEnum.HOUR)){
@ -362,7 +364,7 @@ public class Utils<T> {
durationBig = new BigDecimal(Math.floor(durationMinute/hsl));
itemDuration=durationBig.multiply(hslBig).doubleValue();
}else {
itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue();
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}
}
@ -645,14 +647,35 @@ public class Utils<T> {
return Util.null2String(data.get("rqlx"));
}
/**
*
*
* @param userId
* @param date
* @return
*/
public static String getDateType(String date){
String sql = "select a.rqlx from uf_jcl_kq_rlxx a left join uf_jcl_kq_rlmc b on a.rlmc=b.id where b.mrrl=1 and a.rq=?";
Map<String,Object> data = DbTools.getSqlToMap(sql,date);
return Util.null2String(data.get("rqlx"));
public static String getDefaultDateType(String userId,String date){
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 = "";
try {
parentSubcompanyids = new SubCompanyComInfo().getAllParentSubcompanyId(subcompanyid1,parentSubcompanyids);
}catch (Exception e){
log.error("getDefaultDateType error:[{}]",e);
}
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=?";
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")));
for (int i=0;i<parentSubcompanyids.split(",").length;i++){
String subId = parentSubcompanyids.split(",")[i];
rqlx = Util.null2String(dataMap.get(subId));
if (!"".equals(rqlx)){
break;
}
}
return rqlx;
}
/**

@ -3,16 +3,14 @@ package TestAttendanceAllowance;
import com.engine.attendance.attendanceanalysis.dto.ClockPointDTO;
import com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction;
import com.engine.attendance.enums.ClockPointEnum;
import com.engine.common.util.DateUtil;
import com.google.common.collect.Maps;
import java.util.Calendar;
import java.util.Map;
public class Test2 {
@org.junit.Test
public void testAnalysis() throws Exception{
ClockPointDTO clockPointDTO = ClockPointDTO.builder().build();
clockPointDTO.setRecord(true);
System.out.println(clockPointDTO.isRecord());
}
}

@ -1,9 +1,7 @@
package vocation;
import com.engine.attendance.vacation.job.holidaygeneration.HolidayGenerationJob;
import com.engine.attendance.vacation.service.VocationService;
import com.engine.attendance.vacation.service.impl.VocationServiceImpl;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.common.util.Utils;
import com.engine.cube.service.ModeImpExpService;
@ -11,9 +9,9 @@ import com.engine.cube.service.impl.ModeImpExpServiceImpl;
import com.google.common.collect.Maps;
import org.junit.Test;
import weaver.hrm.User;
import weaver.hrm.company.SubCompanyComInfo;
import workflow.beforlog;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test1 extends beforlog {
@ -32,12 +30,9 @@ public class Test1 extends beforlog{
basicsetService.generateVocation(params);
}
@Test
public void test2() {
for (int i=0;i<10;i++){
if (i==8)
break;
}
System.out.println("1111");
public void test2() throws Exception{
System.out.println(new SubCompanyComInfo().getAllSupCompany("21"));
}

@ -0,0 +1,37 @@
package workflow;
import com.engine.attendance.vacation.service.VocationService;
import com.engine.attendance.vacation.service.impl.VocationServiceImpl;
import com.engine.attendance.workflow.service.AskForLeaveService;
import com.engine.attendance.workflow.service.impl.AskForLeaveServiceImpl;
import com.engine.common.util.CommonUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.common.util.Utils;
import com.engine.cube.service.ModeImpExpService;
import com.engine.cube.service.impl.ModeImpExpServiceImpl;
import com.google.common.collect.Maps;
import org.junit.Test;
import weaver.hrm.User;
import weaver.hrm.company.SubCompanyComInfo;
import java.util.Map;
public class Test1 extends beforlog {
private ModeImpExpService getService(User user) {
return (ModeImpExpService) ServiceUtil.getService(ModeImpExpServiceImpl.class, user);
}
AskForLeaveService askForLeaveService = ServiceUtil.getService(AskForLeaveServiceImpl.class);
@Test
public void test1() {
Map<String,Object> param = Maps.newHashMap();
param.put("itemId","139");
param.put("userId","34");
param.put("startDate","2024-05-01");
param.put("endDate","2024-05-28");
Map<String,Object> result = askForLeaveService.getRestDayInterval(param);
System.out.println(result);
}
}

@ -1,4 +1,4 @@
package vocation;
package workflow;
import org.easymock.EasyMock;
import org.junit.After;

@ -11,6 +11,7 @@
<script >
jQuery(document).ready(function(){
try{
//依据当前请假方式,对页面上的控件显示属性进行调整
@ -24,11 +25,12 @@
//alert("jqlx change");
//关掉自动生成明细记录功能
autodetail = false;
detailtTable();
//自动添加请假明细数据
adddetail();
//打开自动生成明细记录功能
autodetail = true;
detailtTable();
});
//请假人员值变更时,自动生成明细
@ -315,6 +317,10 @@
let jssj = WfForm.getFieldValue(WfForm.convertFieldNameToId("jssj"));
//请假时长
var qjsc = WfForm.getFieldValue(WfForm.convertFieldNameToId("qjsc"));
//实际请假类型
var sjqjlx = WfForm.getFieldValue(WfForm.convertFieldNameToId("sjqjlx"));
//实际请假类型
var qjry = WfForm.getFieldValue(WfForm.convertFieldNameToId("qjry"));
//清空第一明细所有记录
WfForm.delDetailRow("detail_1", "all");
//判断请假是否跨天
@ -323,6 +329,28 @@
var v_tmpbdate = new Date(ksrq);
//预置明细记录结束日期
var v_tmpedate = new Date(v_tmpbdate);
let param = {
itemId:sjqjlx,
userId:qjry,
startDate:ksrq,
endDate:jsrq
}
debugger;
let dateList=undefined;
$.ajax({
url:"/api/attendance/askforleave/getRestDayInterval",
type:"GET",
data:param,
dataType:"json",
async:false,
success:function(res){
console.log(res)
if (res.api_status){
dateList = res.data.data;
}
}
})
if (mttsdcc == '1') {
//首次循环时,明细开始与结束日期均等于主表开始日期,而主表结束日期一定大于等于开始日期,所以至少添加一笔明细
@ -331,6 +359,24 @@
//初始化明细记录
var addObj = {};
//添加开始日期字段信息
let rqlx = "";
let beginDate = v_tmpbdate.toString();
if (dateList != undefined){
dateList.filter(item => {
if (item.rq == beginDate){
rqlx = item.rqlx;
}
});
}
if (rqlx == "1" || rqlx=="2" || rqlx=="3"){
//明细开始日期加一天
v_tmpbdate = v_tmpbdate.setDate(v_tmpbdate.getDate() + 1);
v_tmpbdate = new Date(v_tmpbdate);
//明细结束日期加一天
v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
v_tmpedate = new Date(v_tmpedate);
continue;
}
addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate};
if (ccsd === '1'){
//按时间区间请假逻辑

@ -1,70 +0,0 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:useBean id="strUtil" class="weaver.common.StringUtil" scope="page" />
<jsp:useBean id="dateUtil" class="weaver.common.DateUtil" scope="page" />
<jsp:useBean id="RecordSet" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="attProcSetManager" class="com.engine.kq.wfset.attendance.manager.HrmAttProcSetManager" scope="page" />
<%
%>
<script >
jQuery(document).ready(function(){
try{
WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("bdkrq", "detail_1"),function(id,rowIndex,value){
console.log("WfForm.bindDetailFieldChangeEvent--",id,rowIndex,value);
let bdkry = WfForm.getFieldValue(WfForm.convertFieldNameToId('bdkry'));
$.ajax({
url:'/api/operate/common/queryCommon',
data:{
action:'query_common',
mark:'query_attendance_result',
condition:'ygid:'+bdkry+',rq:'+value
},
type:'GET',
dataType:'json',
success:function(res){
console.log(res)
if(res.data.data.length > 0){
let data = res.data.data[0]
//班次信息
WfForm.changeFieldValue(WfForm.convertFieldNameToId("bcbdxx", "detail_1")+"_"+rowIndex, {value:data.bcbdxx});
//出勤结果
WfForm.changeFieldValue(WfForm.convertFieldNameToId("cqjg", "detail_1")+"_"+rowIndex, {value:data.cqzt});
let dkxx='';
for(let i=1;i<9;i++){
let j = "j"+i;
let c = "c"+i;
let jvalue="";
let cvalue="";
for (let key in data){
if(key == j){
jvalue = data[key];
}else if (key == c){
cvalue = data[key];
}
}
if (jvalue != "" || cvalue != ""){
dkxx = dkxx +jvalue+"-"+cvalue+",";
}
}
if (dkxx.length >0){
dkxx.substring(0,dkxx.length-1);
}
//打卡信息
WfForm.changeFieldValue(WfForm.convertFieldNameToId("dkxx", "detail_1")+"_"+rowIndex, {value:dkxx});
}
}
})
});
}catch (e) {
}
});
</script>
Loading…
Cancel
Save