liuliang
parent
fa21212925
commit
99d1eaa027
@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="file://$MODULE_DIR$/../../../weaver/ecology/WEB-INF/lib" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$MODULE_DIR$/../../../weaver/ecology/WEB-INF/lib" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$MODULE_DIR$/../../../weaver/ecology/WEB-INF/lib" recursive="false" />
|
||||
<jarDirectory url="file://$MODULE_DIR$/../../../weaver/ecology/WEB-INF/lib" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="file://$MODULE_DIR$/../../../weaver/ecology/classbean" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../easymock-4.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
</component>
|
||||
</module>
|
@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,490 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ArtifactsWorkspaceSettings">
|
||||
<artifacts-to-build>
|
||||
<artifact name="hrm-attendance" />
|
||||
</artifacts-to-build>
|
||||
</component>
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="baeb3dfb-5097-46c5-933e-6d1dab18b815" name="Changes" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/.idea/hrm-attendance.iml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/.idea/uiDesigner.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/api/attendance/vocation/VocationActionApi.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/AdjustStartingTimeEnum.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/BalanceHandleEnum.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/DelayTypeEnum.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/QuotaChangeMethodEnum.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/RemainderHandleEnum.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/StartingUnitEnum.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/cmd/VocationCmd.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/HolidayGenerationWay.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/service/impl/VocationServiceImpl.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/util/VocationCommonUtil.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/web/VocationAction.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/test/TestBySchedulePaymentWay.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/test/TestSinglePaymentFullWay.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/compiler.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/compiler.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/modules.xml" 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/service/impl/WorkOverTimeServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.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/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/common/cmd/GetPersonDateBySuitOrganzation.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/cmd/GetPersonDateBySuitOrganzation.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/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/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/README.md" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/README.md" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/README.md" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/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/workflow/README.md" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/cmd/GetPersonDateBySuitOrganzation.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/cmd/GetPersonDateBySuitOrganzation.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/CommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/CommonUtil.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/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/DbTools.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/DbTools.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/weaver/formmode/customjavacode/modeexpand/DeleteCheckCalendar.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/weaver/formmode/customjavacode/modeexpand/DeleteCheckCalendar.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/test-classes/TestObj.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestObj.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/test/TestObj.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestObj.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="FxmlFile" />
|
||||
<option value="Enum" />
|
||||
<option value="Kotlin Class" />
|
||||
<option value="Interface" />
|
||||
<option value="Class" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="GitSEFilterConfiguration">
|
||||
<file-type-list>
|
||||
<filtered-out-file-type name="LOCAL_BRANCH" />
|
||||
<filtered-out-file-type name="REMOTE_BRANCH" />
|
||||
<filtered-out-file-type name="TAG" />
|
||||
<filtered-out-file-type name="COMMIT_BY_MESSAGE" />
|
||||
</file-type-list>
|
||||
</component>
|
||||
<component name="ProjectId" id="2U96adqKZl9N0O4Pzabp1q9QHuq" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="showLibraryContents" value="true" />
|
||||
<option name="showVisibilityIcons" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
||||
<property name="ToolWindowRun.ShowToolbar" value="false" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File" value="PLAIN_TEXT" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../../easyentry" />
|
||||
<property name="nodejs_package_manager_path" value="npm" />
|
||||
<property name="project.structure.last.edited" value="Artifacts" />
|
||||
<property name="project.structure.proportion" value="0.0" />
|
||||
<property name="project.structure.side.proportion" value="0.14124292" />
|
||||
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
|
||||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="D:\项目备份\考勤\hrm-attendance\src\weaver\formmode\customjavacode\modeexpand" />
|
||||
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\attendance\component" />
|
||||
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\attendance\workflow" />
|
||||
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\attendance\attendancePlan" />
|
||||
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\attendance\attendanceAnalysis" />
|
||||
</key>
|
||||
<key name="CopyClassDialog.RECENTS_KEY">
|
||||
<recent name="com.api.attendance.vocation" />
|
||||
<recent name="com.engine.attendance.vacation.web" />
|
||||
<recent name="com.engine.attendance.enums" />
|
||||
<recent name="com.engine.common.util" />
|
||||
<recent name="com.api.attendance.attendanceAnalysis" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Application.TestObj">
|
||||
<configuration name="TestBySchedulePaymentWay" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="TestBySchedulePaymentWay" />
|
||||
<module name="hrm-attendance" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="TestGetClockInPoint" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="TestGetClockInPoint" />
|
||||
<module name="hrm-attendance" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="TestMergeAskForLeaveAndEvctionSchedule" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="TestMergeAskForLeaveAndEvctionSchedule" />
|
||||
<module name="hrm-attendance" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="TestObj" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="TestObj" />
|
||||
<module name="hrm-attendance" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="TestSinglePaymentFullWay" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="TestSinglePaymentFullWay" />
|
||||
<module name="hrm-attendance" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Application.TestObj" />
|
||||
<item itemvalue="Application.TestSinglePaymentFullWay" />
|
||||
<item itemvalue="Application.TestBySchedulePaymentWay" />
|
||||
<item itemvalue="Application.TestGetClockInPoint" />
|
||||
<item itemvalue="Application.TestMergeAskForLeaveAndEvctionSchedule" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="baeb3dfb-5097-46c5-933e-6d1dab18b815" name="Changes" comment="" />
|
||||
<created>1692339514997</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1692339514997</updated>
|
||||
<workItem from="1692339518784" duration="32000" />
|
||||
<workItem from="1692340040940" duration="1135000" />
|
||||
<workItem from="1692342264650" duration="1045000" />
|
||||
<workItem from="1692348427448" duration="165000" />
|
||||
<workItem from="1692582006773" duration="86000" />
|
||||
<workItem from="1692862486751" duration="1476000" />
|
||||
<workItem from="1692867519107" duration="5763000" />
|
||||
<workItem from="1692930017581" duration="685000" />
|
||||
<workItem from="1692932118593" duration="8584000" />
|
||||
<workItem from="1693215733888" duration="1508000" />
|
||||
<workItem from="1693217500388" duration="1719000" />
|
||||
<workItem from="1693219944225" duration="2791000" />
|
||||
<workItem from="1693223734291" duration="38000" />
|
||||
<workItem from="1693275621669" duration="2705000" />
|
||||
<workItem from="1693289775698" duration="5000" />
|
||||
<workItem from="1693389476816" duration="24000" />
|
||||
<workItem from="1693455269065" duration="959000" />
|
||||
<workItem from="1693475436820" duration="6534000" />
|
||||
<workItem from="1693532699817" duration="12509000" />
|
||||
<workItem from="1693661235999" duration="594000" />
|
||||
<workItem from="1693712928892" duration="14589000" />
|
||||
<workItem from="1693792694888" duration="2850000" />
|
||||
<workItem from="1693808697903" duration="3366000" />
|
||||
<workItem from="1693877386447" duration="9053000" />
|
||||
<workItem from="1693964352907" duration="24844000" />
|
||||
<workItem from="1694051375998" duration="26412000" />
|
||||
<workItem from="1694105584175" duration="591000" />
|
||||
<workItem from="1694136883012" duration="27756000" />
|
||||
<workItem from="1694396019903" duration="23316000" />
|
||||
<workItem from="1694441834842" duration="4431000" />
|
||||
<workItem from="1694482304694" duration="38659000" />
|
||||
<workItem from="1694568645180" duration="20047000" />
|
||||
<workItem from="1694656471239" duration="11646000" />
|
||||
<workItem from="1694744114572" duration="6750000" />
|
||||
<workItem from="1694768715754" duration="1522000" />
|
||||
<workItem from="1695003518158" duration="24104000" />
|
||||
<workItem from="1695092772073" duration="3655000" />
|
||||
<workItem from="1695096840911" duration="26120000" />
|
||||
<workItem from="1695173346187" duration="23490000" />
|
||||
<workItem from="1695298552559" duration="1107000" />
|
||||
<workItem from="1695303174990" duration="2204000" />
|
||||
<workItem from="1695347237495" duration="19376000" />
|
||||
<workItem from="1695553511162" duration="1832000" />
|
||||
<workItem from="1695567565696" duration="2000" />
|
||||
<workItem from="1695605419276" duration="21979000" />
|
||||
<workItem from="1695692085116" duration="6447000" />
|
||||
<workItem from="1695778505662" duration="3617000" />
|
||||
<workItem from="1695792968619" duration="593000" />
|
||||
<workItem from="1695809499955" duration="3071000" />
|
||||
<workItem from="1695863703718" duration="1212000" />
|
||||
<workItem from="1695883451866" duration="2058000" />
|
||||
<workItem from="1696567506303" duration="23130000" />
|
||||
<workItem from="1696648918530" duration="2443000" />
|
||||
<workItem from="1696656774209" duration="3364000" />
|
||||
<workItem from="1696728483294" duration="1958000" />
|
||||
<workItem from="1696734032928" duration="1465000" />
|
||||
<workItem from="1696743147790" duration="2683000" />
|
||||
<workItem from="1696815185965" duration="2525000" />
|
||||
<workItem from="1696829367590" duration="970000" />
|
||||
<workItem from="1696914402478" duration="10222000" />
|
||||
<workItem from="1696988336710" duration="1000000" />
|
||||
<workItem from="1697001252777" duration="7027000" />
|
||||
<workItem from="1697075777172" duration="961000" />
|
||||
<workItem from="1697087513828" duration="8223000" />
|
||||
<workItem from="1697163082165" duration="765000" />
|
||||
<workItem from="1697175141666" duration="7184000" />
|
||||
<workItem from="1697420341962" duration="1265000" />
|
||||
<workItem from="1697526611270" duration="7126000" />
|
||||
<workItem from="1697692534649" duration="17000" />
|
||||
<workItem from="1697692567915" duration="18949000" />
|
||||
<workItem from="1697766779048" duration="1107000" />
|
||||
<workItem from="1697781370605" duration="14040000" />
|
||||
<workItem from="1697962164517" duration="4364000" />
|
||||
<workItem from="1698027923152" duration="2247000" />
|
||||
<workItem from="1698030924575" duration="1073000" />
|
||||
<workItem from="1698034198904" duration="479000" />
|
||||
<workItem from="1698040998092" duration="1319000" />
|
||||
<workItem from="1698042823107" duration="599000" />
|
||||
<workItem from="1698044532659" duration="975000" />
|
||||
<workItem from="1698052825712" duration="303000" />
|
||||
<workItem from="1698074505519" duration="4142000" />
|
||||
<workItem from="1698112102229" duration="5413000" />
|
||||
<workItem from="1698118737181" duration="1681000" />
|
||||
<workItem from="1698125114384" duration="2215000" />
|
||||
<workItem from="1698127602580" duration="3070000" />
|
||||
<workItem from="1698131838215" duration="1150000" />
|
||||
<workItem from="1698133397947" duration="17706000" />
|
||||
<workItem from="1698159833013" duration="3153000" />
|
||||
<workItem from="1698197882990" duration="7332000" />
|
||||
<workItem from="1698211990680" duration="2138000" />
|
||||
<workItem from="1698214652467" duration="6152000" />
|
||||
<workItem from="1698222529178" duration="4023000" />
|
||||
<workItem from="1698247837601" duration="1033000" />
|
||||
<workItem from="1698285046951" duration="3271000" />
|
||||
<workItem from="1698289093518" duration="763000" />
|
||||
<workItem from="1698290043354" duration="1159000" />
|
||||
<workItem from="1698300434653" duration="2009000" />
|
||||
<workItem from="1698302695697" duration="1620000" />
|
||||
<workItem from="1698304471751" duration="1508000" />
|
||||
<workItem from="1698306832195" duration="2655000" />
|
||||
<workItem from="1698309897387" duration="5163000" />
|
||||
<workItem from="1698390288454" duration="13183000" />
|
||||
<workItem from="1698469491561" duration="21890000" />
|
||||
<workItem from="1698591800387" duration="810000" />
|
||||
<workItem from="1698629862640" duration="7694000" />
|
||||
<workItem from="1698643545069" duration="14542000" />
|
||||
<workItem from="1698682351498" duration="601000" />
|
||||
<workItem from="1698716067461" duration="9614000" />
|
||||
<workItem from="1698729774142" duration="25056000" />
|
||||
<workItem from="1698764177164" duration="6279000" />
|
||||
<workItem from="1698802661422" duration="7871000" />
|
||||
<workItem from="1698817074470" duration="103000" />
|
||||
<workItem from="1698817186422" duration="20092000" />
|
||||
<workItem from="1698851593447" duration="598000" />
|
||||
<workItem from="1698889582547" duration="4227000" />
|
||||
<workItem from="1698903441548" duration="18222000" />
|
||||
<workItem from="1698976461966" duration="6519000" />
|
||||
<workItem from="1698989798127" duration="10759000" />
|
||||
<workItem from="1699077797957" duration="11009000" />
|
||||
<workItem from="1699170067846" duration="1000" />
|
||||
<workItem from="1699231897173" duration="9180000" />
|
||||
<workItem from="1699249312970" duration="13580000" />
|
||||
<workItem from="1699277085466" duration="3406000" />
|
||||
<workItem from="1699321801125" duration="20823000" />
|
||||
<workItem from="1699367317403" duration="2736000" />
|
||||
<workItem from="1699409280040" duration="31571000" />
|
||||
<workItem from="1699453614678" duration="5113000" />
|
||||
<workItem from="1699493679787" duration="8376000" />
|
||||
<workItem from="1699508307707" duration="18732000" />
|
||||
<workItem from="1699536866149" duration="2893000" />
|
||||
<workItem from="1699546555621" duration="3842000" />
|
||||
<workItem from="1699581139144" duration="23553000" />
|
||||
<workItem from="1699698872978" duration="667000" />
|
||||
<workItem from="1699795306178" duration="18557000" />
|
||||
<workItem from="1699839546417" duration="10366000" />
|
||||
<workItem from="1699852590390" duration="20996000" />
|
||||
<workItem from="1699883122404" duration="5093000" />
|
||||
<workItem from="1699925326190" duration="8896000" />
|
||||
<workItem from="1699940140486" duration="38421000" />
|
||||
<workItem from="1700026194548" duration="24782000" />
|
||||
<workItem from="1700061652012" duration="859000" />
|
||||
<workItem from="1700098710110" duration="34302000" />
|
||||
<workItem from="1700146477670" duration="3056000" />
|
||||
<workItem from="1700185074002" duration="10574000" />
|
||||
<workItem from="1700199508725" duration="4449000" />
|
||||
<workItem from="1700227183353" duration="3497000" />
|
||||
<workItem from="1700302165324" duration="2382000" />
|
||||
<workItem from="1700386918963" duration="14559000" />
|
||||
<workItem from="1700443922898" duration="47543000" />
|
||||
<workItem from="1700544798039" duration="5043000" />
|
||||
<workItem from="1700550368194" duration="19115000" />
|
||||
<workItem from="1700617767112" duration="7654000" />
|
||||
<workItem from="1700631662957" duration="24095000" />
|
||||
<workItem from="1700663022648" duration="5527000" />
|
||||
<workItem from="1700704116298" duration="2704000" />
|
||||
<workItem from="1700718326275" duration="20611000" />
|
||||
<workItem from="1700745310982" duration="5767000" />
|
||||
<workItem from="1700790471599" duration="120000" />
|
||||
<workItem from="1700792146348" duration="5791000" />
|
||||
<workItem from="1700805055640" duration="14860000" />
|
||||
<workItem from="1700911912741" duration="3478000" />
|
||||
<workItem from="1700922832332" duration="3184000" />
|
||||
<workItem from="1701003586645" duration="4138000" />
|
||||
<workItem from="1701048701474" duration="25552000" />
|
||||
<workItem from="1701135211502" duration="9894000" />
|
||||
<workItem from="1701149493079" duration="22234000" />
|
||||
<workItem from="1701179622668" duration="4377000" />
|
||||
<workItem from="1701221800791" duration="632000" />
|
||||
<workItem from="1701222699216" duration="22066000" />
|
||||
<workItem from="1701264331898" duration="5291000" />
|
||||
<workItem from="1701308939846" duration="763000" />
|
||||
<workItem from="1701310015014" duration="19670000" />
|
||||
<workItem from="1701344692821" duration="3857000" />
|
||||
<workItem from="1701396844222" duration="6519000" />
|
||||
<workItem from="1701409172449" duration="14972000" />
|
||||
<workItem from="1701657236334" duration="11669000" />
|
||||
<workItem from="1701693919320" duration="306000" />
|
||||
<workItem from="1701694449827" duration="605000" />
|
||||
<workItem from="1701695856893" duration="706000" />
|
||||
<workItem from="1701739719725" duration="8782000" />
|
||||
<workItem from="1701754178519" duration="13111000" />
|
||||
<workItem from="1701782398054" duration="4292000" />
|
||||
<workItem from="1701826335733" duration="8249000" />
|
||||
<workItem from="1701841441371" duration="25474000" />
|
||||
<workItem from="1701913164341" duration="9301000" />
|
||||
<workItem from="1701932512214" duration="305000" />
|
||||
<workItem from="1701933687860" duration="33000" />
|
||||
<workItem from="1701934448139" duration="14080000" />
|
||||
<workItem from="1702015977727" duration="1889000" />
|
||||
<workItem from="1702041570275" duration="62000" />
|
||||
<workItem from="1702091888868" duration="571000" />
|
||||
<workItem from="1702260044596" duration="18584000" />
|
||||
<workItem from="1702299487315" duration="698000" />
|
||||
<workItem from="1702345476899" duration="9027000" />
|
||||
<workItem from="1702359471150" duration="24971000" />
|
||||
<workItem from="1702387830195" duration="472000" />
|
||||
<workItem from="1702431310438" duration="9072000" />
|
||||
<workItem from="1702446757969" duration="637000" />
|
||||
<workItem from="1702451213820" duration="1078000" />
|
||||
<workItem from="1702452488557" duration="9578000" />
|
||||
<workItem from="1702467949458" duration="874000" />
|
||||
<workItem from="1702518620091" duration="30274000" />
|
||||
<workItem from="1702604501544" duration="18857000" />
|
||||
<workItem from="1702862913836" duration="22541000" />
|
||||
<workItem from="1702950252730" duration="17920000" />
|
||||
<workItem from="1703036799853" duration="1956000" />
|
||||
<workItem from="1703050450608" duration="6733000" />
|
||||
<workItem from="1703071059485" duration="6330000" />
|
||||
<workItem from="1703122548150" duration="4366000" />
|
||||
<workItem from="1703137084241" duration="13704000" />
|
||||
<workItem from="1703208757025" duration="4253000" />
|
||||
<workItem from="1703223465716" duration="12093000" />
|
||||
<workItem from="1703469101483" duration="11137000" />
|
||||
<workItem from="1703552217336" duration="18509000" />
|
||||
<workItem from="1703639900804" duration="3358000" />
|
||||
<workItem from="1703655988128" duration="11603000" />
|
||||
<workItem from="1703679803847" duration="3276000" />
|
||||
<workItem from="1703725646594" duration="28628000" />
|
||||
<workItem from="1703771887749" duration="1639000" />
|
||||
<workItem from="1703811686137" duration="8497000" />
|
||||
<workItem from="1703835168171" duration="3122000" />
|
||||
<workItem from="1704113096522" duration="1887000" />
|
||||
<workItem from="1704158710782" duration="28896000" />
|
||||
<workItem from="1704208617961" duration="28000" />
|
||||
<workItem from="1704208662225" duration="3489000" />
|
||||
<workItem from="1704245679445" duration="45158000" />
|
||||
<workItem from="1704331947967" duration="38235000" />
|
||||
<workItem from="1704418019602" duration="12095000" />
|
||||
<workItem from="1704461183491" duration="932000" />
|
||||
<workItem from="1704527808201" duration="6902000" />
|
||||
<workItem from="1704605008241" duration="1460000" />
|
||||
<workItem from="1704624857172" duration="13062000" />
|
||||
<workItem from="1704677723452" duration="30104000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="oldMeFiltersMigrated" value="true" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
<breakpoints>
|
||||
<breakpoint enabled="true" type="java-exception">
|
||||
<properties class="java.util.NoSuchElementException" package="java.util" />
|
||||
<option name="timeStamp" value="18" />
|
||||
</breakpoint>
|
||||
<breakpoint enabled="true" type="java-exception">
|
||||
<properties class="java.util.ConcurrentModificationException" package="java.util" />
|
||||
<option name="timeStamp" value="19" />
|
||||
</breakpoint>
|
||||
<breakpoint enabled="true" type="java-exception">
|
||||
<properties class="java.lang.ArithmeticException" package="java.lang" />
|
||||
<option name="timeStamp" value="54" />
|
||||
</breakpoint>
|
||||
<breakpoint enabled="true" type="java-exception">
|
||||
<properties class="java.lang.IllegalArgumentException" package="java.lang" />
|
||||
<option name="timeStamp" value="73" />
|
||||
</breakpoint>
|
||||
<line-breakpoint enabled="true" type="java-line">
|
||||
<url>file://$PROJECT_DIR$/test/TestGetClockInPoint.java</url>
|
||||
<line>301</line>
|
||||
<option name="timeStamp" value="28" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="java-line">
|
||||
<url>file://$PROJECT_DIR$/test/TestMergeAskForLeaveAndEvctionSchedule.java</url>
|
||||
<line>90</line>
|
||||
<option name="timeStamp" value="49" />
|
||||
</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>294</line>
|
||||
<option name="timeStamp" value="91" />
|
||||
</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>279</line>
|
||||
<option name="timeStamp" value="93" />
|
||||
</line-breakpoint>
|
||||
</breakpoints>
|
||||
</breakpoint-manager>
|
||||
<watches-manager>
|
||||
<configuration name="Application">
|
||||
<watch expression="((java.util.ArrayList)clcokInTimeData).get(1)" custom="java.util.ArrayList" />
|
||||
<watch expression="afterClcokInTimeData" />
|
||||
<watch expression="((HashMap.Node)((HashMap)beforeClcokInTimeData).entrySet().toArray()[0]).getValue()" custom="java.util.HashMap.Node,java.util.HashMap" />
|
||||
<watch expression="clcokInTimeData" />
|
||||
</configuration>
|
||||
</watches-manager>
|
||||
</component>
|
||||
</project>
|
Binary file not shown.
@ -0,0 +1,14 @@
|
||||
package com.api.attendance.vocation;
|
||||
|
||||
|
||||
|
||||
import com.engine.attendance.vacation.web.VocationAction;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
@Path("/attendance/vocation")
|
||||
@Slf4j
|
||||
public class VocationActionApi extends VocationAction {
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package com.engine.attendance.enums;
|
||||
|
||||
import com.finance.toolkit.BaseEnum;
|
||||
|
||||
/**
|
||||
* 调整起算日期
|
||||
*/
|
||||
public enum AdjustStartingTimeEnum implements BaseEnum {
|
||||
NO_ADJUST("0","不调整"),
|
||||
NEXT_MONTH("1","调整为下月1日"),
|
||||
BY_SEGMENT_TIME("2","按分隔日期调整"),
|
||||
NOW_MONTH("3","调整为本月1日");
|
||||
|
||||
private String key;
|
||||
private String value;
|
||||
|
||||
AdjustStartingTimeEnum(String key, String value){
|
||||
this.key=key;
|
||||
this.value=value;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.engine.attendance.enums;
|
||||
|
||||
import com.finance.toolkit.BaseEnum;
|
||||
|
||||
public enum BalanceHandleEnum implements BaseEnum {
|
||||
|
||||
CANCEL("0","作废"),
|
||||
DELAY("1","延期"),
|
||||
SALARY_CALCULATION("2","计薪");
|
||||
|
||||
private String key;
|
||||
private String value;
|
||||
|
||||
BalanceHandleEnum(String key, String value){
|
||||
this.key=key;
|
||||
this.value=value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
|
||||
return this.key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.engine.attendance.enums;
|
||||
|
||||
import com.finance.toolkit.BaseEnum;
|
||||
|
||||
public enum DelayTypeEnum implements BaseEnum {
|
||||
|
||||
ONE_MONTH("0","一个月"),
|
||||
TWO_MONTH("1","两个月"),
|
||||
THREE_MONTH("2","三个月"),
|
||||
HALF_YEAR("3","半年"),
|
||||
ONE_YEAR("4","一年");
|
||||
|
||||
private String key;
|
||||
private String value;
|
||||
|
||||
DelayTypeEnum(String key, String value){
|
||||
this.key=key;
|
||||
this.value=value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
|
||||
return this.key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package com.engine.attendance.enums;
|
||||
|
||||
import com.finance.toolkit.BaseEnum;
|
||||
|
||||
public enum QuotaChangeMethodEnum implements BaseEnum {
|
||||
NO_CONVERT("0","不折算"),
|
||||
CONVERT("1","折算"),
|
||||
DIVIDE_QUOTA("2","取分段额度");
|
||||
|
||||
private String key;
|
||||
private String value;
|
||||
|
||||
QuotaChangeMethodEnum(String key, String value){
|
||||
this.key=key;
|
||||
this.value=value;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.engine.attendance.enums;
|
||||
|
||||
import com.finance.toolkit.BaseEnum;
|
||||
|
||||
public enum RemainderHandleEnum implements BaseEnum {
|
||||
ROUND_UP_FOUR("0","四舍五入保留4位小数"),
|
||||
ROUND_UP_TWO("1","四舍五入保留2位小数"),
|
||||
DOWN_ZERO_POINT_FIVE("2","向下取0.5的倍数"),
|
||||
UP_ZERO_POINT_FIVE("3","向上取0.5的倍数"),
|
||||
ROUND_DOWN("4","向下取整"),
|
||||
ROUND_UP("5","向上取整");
|
||||
|
||||
private String key;
|
||||
private String value;
|
||||
|
||||
RemainderHandleEnum(String key, String value){
|
||||
this.key=key;
|
||||
this.value=value;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.engine.attendance.enums;
|
||||
|
||||
import com.finance.toolkit.BaseEnum;
|
||||
|
||||
/**
|
||||
* 起算单位
|
||||
*/
|
||||
public enum StartingUnitEnum implements BaseEnum {
|
||||
NATURAL_YEAR("0","自然年"),
|
||||
STARTING_YEAR("1","起算年"),
|
||||
NATURAL_MONTH("2","自然月"),
|
||||
STARTING_MONTH("3","起算月"),
|
||||
NATURAL_WEEK("4","自然周"),
|
||||
STARTING_WEEK("5","起算周"),
|
||||
NATURAL_DAY("6","自然天");
|
||||
|
||||
private String key;
|
||||
private String value;
|
||||
|
||||
StartingUnitEnum(String key, String value){
|
||||
this.key=key;
|
||||
this.value=value;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.engine.attendance.vacation.cmd;
|
||||
|
||||
import com.engine.attendance.component.persongroup.job.scheduling.tactics.RegularScheduling;
|
||||
import com.engine.attendance.vacation.job.holidaygeneration.tactics.HolidayGenerationWay;
|
||||
import com.engine.common.biz.AbstractCommonCommand;
|
||||
import com.engine.common.entity.BizLogContext;
|
||||
import com.engine.common.util.Utils;
|
||||
import com.engine.core.interceptor.CommandContext;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
public class VocationCmd extends AbstractCommonCommand<Map<String,Object>> {
|
||||
@Override
|
||||
public BizLogContext getLogContext() {
|
||||
return null;
|
||||
}
|
||||
public VocationCmd(Map<String,Object> params){
|
||||
this.params=params;
|
||||
}
|
||||
|
||||
private List<HolidayGenerationWay> rulers;
|
||||
{
|
||||
rulers = new Utils<HolidayGenerationWay>().getAllClassByInterface(HolidayGenerationWay.class);
|
||||
|
||||
}
|
||||
@Override
|
||||
public Map<String, Object> execute(CommandContext commandContext) {
|
||||
List<Map<String,Object>> vocationList = (List<Map<String,Object>>)params.get("vocationList");
|
||||
Map<String,Object> userMap = (Map<String,Object>)params.get("userMap");
|
||||
for (Map<String,Object> vocation : vocationList){
|
||||
String qsrq = Util.null2String(userMap.get(vocation.get("qsrq")));
|
||||
String yjzd = Util.null2String(userMap.get(vocation.get("yjzd")));
|
||||
vocation.put("qsrq",qsrq);
|
||||
vocation.put("yjzd",yjzd);
|
||||
}
|
||||
log.info("VocationCmd params: [{}]",params);
|
||||
String edfffs = Util.null2String(vocationList.get(0).get("edfffs"));
|
||||
for (HolidayGenerationWay holidayGenerationWay :rulers){
|
||||
if (holidayGenerationWay.support(Integer.valueOf(edfffs))){
|
||||
holidayGenerationWay.compute(params);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.engine.attendance.vacation.job.holidaygeneration.tactics;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 循环按间隔时长折算发放
|
||||
*/
|
||||
public class ByIntervalPayMentWay implements HolidayGenerationWay{
|
||||
@Override
|
||||
public boolean support(int personClassfiy) {
|
||||
if (personClassfiy == 2){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void compute(Map<String, Object> data) {
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,262 @@
|
||||
package com.engine.attendance.vacation.job.holidaygeneration.tactics;
|
||||
|
||||
|
||||
import com.engine.attendance.enums.CheckBoxEnum;
|
||||
import com.engine.attendance.enums.QuotaChangeMethodEnum;
|
||||
import com.engine.attendance.enums.StartingUnitEnum;
|
||||
import com.engine.attendance.vacation.util.VocationCommonUtil;
|
||||
import com.engine.common.util.DateUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 循环按期别分批发放
|
||||
*/
|
||||
@Slf4j
|
||||
public class BySchedulePaymentWay implements HolidayGenerationWay{
|
||||
@Override
|
||||
public boolean support(int personClassfiy) {
|
||||
if (personClassfiy == 1){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void compute(Map<String, Object> data) {
|
||||
String userId = Util.null2String(data.get("userId"));
|
||||
String releaseDate = Util.null2String(data.get("releaseDate"));
|
||||
String cover = Util.null2String(data.get("cover"));
|
||||
if ("".equals(releaseDate)){
|
||||
releaseDate = DateUtil.getCurrentTime();
|
||||
}
|
||||
List<Map<String,Object>> vocationList = (List<Map<String,Object>>)data.get("vocationList");
|
||||
//起算日期
|
||||
String qsrq = Util.null2String(vocationList.get(0).get("qsrq"));
|
||||
//额度有效期间
|
||||
String edyxqsz = Util.null2String(vocationList.get(0).get("edyxqsz"));
|
||||
//额度有效期间单位
|
||||
String edyxq = Util.null2String(vocationList.get(0).get("edyxq"));
|
||||
//累计承认工龄月份数栏位值
|
||||
String ljcrglyfslwz= Util.null2String(vocationList.get(0).get("ljcrglyfslwz"));
|
||||
//依据字段
|
||||
String yjzd= Util.null2String(vocationList.get(0).get("yjzd"));
|
||||
//调整起算日期策略
|
||||
String dzqsrq= Util.null2String(vocationList.get(0).get("dzqsrq"));
|
||||
//分割日期
|
||||
String fgrq= Util.null2String(vocationList.get(0).get("fgrq"));
|
||||
//提前执行发放操作的天数
|
||||
Integer dqtqffts = Integer.valueOf(Util.null2String(vocationList.get(0).get("dqtqffts")));
|
||||
//执行发放的时间点
|
||||
String ffdtffsj = Util.null2String(vocationList.get(0).get("ffdtffsj"));
|
||||
//入职当期额度按比例折算
|
||||
String rzdqedablzs = Util.null2String(vocationList.get(0).get("rzdqedablzs"));
|
||||
//首次获得额度按比例折算
|
||||
String schdedablzs = Util.null2String(vocationList.get(0).get("schdedablzs"));
|
||||
//额度变更时额度处理方式
|
||||
String edbgsedclfs = Util.null2String(vocationList.get(0).get("edbgsedclfs"));
|
||||
//额度单位
|
||||
String eddw = Util.null2String(vocationList.get(0).get("edbgsedclfs"));
|
||||
//尾数处理
|
||||
String wscl = Util.null2String(vocationList.get(0).get("wscl"));
|
||||
//首次获得额度控制生效日期
|
||||
String schdedkzsxrq = Util.null2String(vocationList.get(0).get("schdedkzsxrq"));
|
||||
|
||||
qsrq = VocationCommonUtil.getAfterAdjustTime(qsrq,dzqsrq,fgrq);
|
||||
for (Map<String, Object> vocationMap : vocationList) {
|
||||
vocationMap.put("qsrq", qsrq);
|
||||
}
|
||||
|
||||
//相差天数
|
||||
int betweenDays = DateUtil.getBetWeenDays(qsrq, releaseDate.split(" ")[0]);
|
||||
//相差月份
|
||||
int betweenMonth = DateUtil.getBetWeenMonths(qsrq, releaseDate.split(" ")[0]);
|
||||
//总工龄天数
|
||||
int allWorkDays = Double.valueOf(ljcrglyfslwz).intValue() * 30 + betweenDays;
|
||||
//总月数
|
||||
int allMonths = betweenMonth + Double.valueOf(ljcrglyfslwz).intValue();
|
||||
|
||||
|
||||
|
||||
//执行日期
|
||||
Map<String, Object> insertHoliDayParam = VocationCommonUtil.getInsertHoliDayParam(vocationList.get(0), userId, qsrq, releaseDate);
|
||||
|
||||
List<Map<String,Object>> dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam);
|
||||
|
||||
|
||||
//已存在数据且不覆盖
|
||||
if (dataList.size()>0 && !"1".equals(cover)) {
|
||||
return;
|
||||
}
|
||||
String sxrq = insertHoliDayParam.get("sxrq").toString();
|
||||
//实际休息时长
|
||||
double restTime = 0;
|
||||
//工龄小于1年的新员工,且额度有效期单位为自然年
|
||||
if (allMonths < 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) {
|
||||
|
||||
if (QuotaChangeMethodEnum.CONVERT.getKey().equals(edbgsedclfs) || CheckBoxEnum.CHECKED.getKey().equals(schdedablzs)) {
|
||||
|
||||
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.CONVERT,releaseDate);
|
||||
} else {
|
||||
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.NO_CONVERT,releaseDate);
|
||||
}
|
||||
|
||||
insertHoliDayParam.put("sxrq", DateUtil.nextYear(releaseDate.split(" ")[0], 1, DateUtil.yyyyMMdd));
|
||||
|
||||
insertHoliDayParam.put("ktsc", restTime);
|
||||
} else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) {
|
||||
//入职不满一年,且入职当期额度按比例折算
|
||||
if (CheckBoxEnum.CHECKED.getKey().equals(rzdqedablzs) && betweenMonth < 12
|
||||
&& sxrq.split("-")[0].equals(releaseDate.split("-")[0]) && releaseDate.split("-")[0].equals(qsrq.split("-")[0])) {
|
||||
//起算年和发生日期在同一年,生成假期为起算年的当年
|
||||
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.CONVERT,releaseDate);
|
||||
} else {
|
||||
if (QuotaChangeMethodEnum.CONVERT.getKey().equals(edbgsedclfs)) {
|
||||
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.CONVERT,releaseDate);
|
||||
} else if (QuotaChangeMethodEnum.NO_CONVERT.getKey().equals(edbgsedclfs)) {
|
||||
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.NO_CONVERT,releaseDate);
|
||||
}
|
||||
}
|
||||
}else if (edyxq.equals(StartingUnitEnum.STARTING_YEAR.getKey())){
|
||||
int betweenYear = DateUtil.getBetWeenYears(qsrq,releaseDate.split(" ")[0]);
|
||||
Map<String,Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList,betweenYear,yjzd);
|
||||
int occurMonths = DateUtil.getTime(releaseDate).getMonthValue();
|
||||
int StartMonths = DateUtil.getTime(qsrq).getMonthValue();
|
||||
|
||||
int months = occurMonths-StartMonths;
|
||||
if (months < 0){
|
||||
months = 12-StartMonths+occurMonths;
|
||||
}
|
||||
String stage = String.valueOf(months);
|
||||
if (months < 10){
|
||||
stage = "0"+stage;
|
||||
}
|
||||
if (vocationMap.size() >0){
|
||||
restTime = Double.valueOf(vocationMap.get("fdsc"+stage).toString());
|
||||
}else {
|
||||
restTime=0;
|
||||
}
|
||||
}
|
||||
insertHoliDayParam.put("ktsc",restTime);
|
||||
VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye",insertHoliDayParam,dataList);
|
||||
}
|
||||
|
||||
public double getRestTime(Map<String, Object> insertHoliDayParam,List<Map<String, Object>> vocationList,QuotaChangeMethodEnum changeMethodEnum,String releaseDate){
|
||||
String sxrq = insertHoliDayParam.get("sxrq").toString();
|
||||
String qsrq = Util.null2String(vocationList.get(0).get("qsrq"));
|
||||
String nextSxrq = DateUtil.nextYear(sxrq,1,DateUtil.yyyyMMdd);
|
||||
//累计承认工龄月份数栏位值
|
||||
String ljcrglyfslwz = Util.null2String(vocationList.get(0).get("ljcrglyfslwz"));
|
||||
//依据字段
|
||||
String yjzd = Util.null2String(vocationList.get(0).get("yjzd"));
|
||||
//尾数处理
|
||||
String wscl = Util.null2String(vocationList.get(0).get("wscl"));
|
||||
//提前执行发放操作的天数
|
||||
int dqtqffts = Integer.valueOf(Util.null2String(vocationList.get(0).get("dqtqffts")));
|
||||
//执行发放的时间点
|
||||
String ffdtffsj = Util.null2String(vocationList.get(0).get("ffdtffsj"));
|
||||
|
||||
int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue();
|
||||
|
||||
String nowEndYearTime = releaseDate.split("-")[0]+"-12-31";
|
||||
String forWardTime = DateUtil.beforeDay(nowEndYearTime,dqtqffts) +" "+ffdtffsj;
|
||||
|
||||
if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(forWardTime)) >=0){
|
||||
String nextYear = DateUtil.nextYear(releaseDate,1,DateUtil.yyyy);
|
||||
releaseDate = nextYear +"-01-01";
|
||||
}
|
||||
int qsrqMonths = DateUtil.getDays(qsrq,Calendar.MONTH);
|
||||
int releaseDateMonths = DateUtil.getDays(releaseDate,Calendar.MONTH);
|
||||
double restTime=0.0;
|
||||
//折算
|
||||
if (changeMethodEnum == QuotaChangeMethodEnum.CONVERT){
|
||||
int beginYearMonth = DateUtil.getBetWeenMonths(qsrq,sxrq);
|
||||
if (beginYearMonth < 0){
|
||||
beginYearMonth = 0;
|
||||
}
|
||||
beginYearMonth = beginYearMonth+seniority;
|
||||
int endYearMonth = DateUtil.getBetWeenMonths(qsrq,nextSxrq);
|
||||
endYearMonth = endYearMonth+seniority;
|
||||
int beginYear = beginYearMonth/12;
|
||||
int endYear = endYearMonth/12;
|
||||
int endYearRemainder = endYearMonth%12;
|
||||
Map<String,Object> beginYearmap = VocationCommonUtil.getVocationMap(vocationList, beginYear, yjzd);
|
||||
Map<String,Object> endYearmap = VocationCommonUtil.getVocationMap(vocationList, endYear, yjzd);
|
||||
double beginEdktsc = Double.valueOf(beginYearmap.get("edktsc") == null? "0" :Util.null2String(beginYearmap.get("edktsc")));
|
||||
double endEdktsc = Double.valueOf(endYearmap.get("edktsc") == null? "0" :Util.null2String(endYearmap.get("edktsc")));
|
||||
|
||||
//残年分割日期
|
||||
String divideTime = DateUtil.beforeMonth(nextSxrq,endYearRemainder);
|
||||
divideTime = DateUtil.nextMonth(divideTime,1,DateUtil.yyyyMM)+"-01";
|
||||
int divideTimeMonths = DateUtil.getDays(divideTime,Calendar.MONTH);
|
||||
int yearDays = DateUtil.getDays(sxrq, Calendar.DAY_OF_YEAR);
|
||||
|
||||
if (beginEdktsc == endEdktsc){
|
||||
//当前后额定可休时长一样时,代表没有残年情况
|
||||
|
||||
if (DateUtil.getTime(qsrq).compareTo(DateUtil.getTime(sxrq)) >=0){
|
||||
//生成起算日期当年的假期余额,通常用于没有工作经验的新员工
|
||||
int months = releaseDateMonths-qsrqMonths+1;
|
||||
restTime = getRestTime(months,endYearmap);
|
||||
}else {
|
||||
restTime = getRestTime(releaseDateMonths,endYearmap);
|
||||
}
|
||||
}else {
|
||||
//考虑残年
|
||||
if (DateUtil.getTime(qsrq).compareTo(DateUtil.getTime(sxrq)) >=0){
|
||||
//生成起算日期当年的假期余额,通常用于有工作经验的新员工
|
||||
if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(qsrq)) >=0){
|
||||
|
||||
if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(divideTime)) <0){
|
||||
int months = releaseDateMonths-qsrqMonths+1;
|
||||
restTime = getRestTime(months,beginYearmap);
|
||||
}else {
|
||||
int months = releaseDateMonths-divideTimeMonths+1;
|
||||
restTime = getRestTime(months,endYearmap);
|
||||
}
|
||||
}else {
|
||||
int months = releaseDateMonths-qsrqMonths;
|
||||
restTime = getRestTime(months,endYearmap);
|
||||
}
|
||||
}else {
|
||||
if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(divideTime)) <0){
|
||||
int months = releaseDateMonths-qsrqMonths+1;
|
||||
restTime = getRestTime(months,beginYearmap);
|
||||
}else {
|
||||
int months = releaseDateMonths-divideTimeMonths+1;
|
||||
restTime = getRestTime(months,endYearmap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}else {
|
||||
//不折算
|
||||
int beginYearMonth = DateUtil.getBetWeenMonths(qsrq,sxrq);
|
||||
if (beginYearMonth < 0){
|
||||
beginYearMonth = 0;
|
||||
}
|
||||
beginYearMonth = beginYearMonth+seniority;
|
||||
int beginYear = beginYearMonth/12;
|
||||
Map<String,Object> beginYearmap = VocationCommonUtil.getVocationMap(vocationList, beginYear, yjzd);
|
||||
restTime = getRestTime(releaseDateMonths,beginYearmap);
|
||||
}
|
||||
return restTime;
|
||||
}
|
||||
|
||||
public Double getRestTime(int i,Map<String,Object> endYearmap){
|
||||
String str = String.valueOf(i);
|
||||
if (i < 10){
|
||||
str = "0"+str;
|
||||
}
|
||||
|
||||
String fdsc = Util.null2String(endYearmap.get("fdsc"+str));
|
||||
if ("".equals(fdsc)){
|
||||
fdsc="0";
|
||||
}
|
||||
return Double.valueOf(fdsc);
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package com.engine.attendance.vacation.job.holidaygeneration.tactics;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public interface HolidayGenerationWay {
|
||||
boolean support(int personClassfiy);
|
||||
|
||||
void compute(Map<String,Object> requestList);
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.engine.attendance.vacation.job.holidaygeneration.tactics;
|
||||
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 一次发完所有额度
|
||||
*/
|
||||
public class OneTimePayMentWay implements HolidayGenerationWay{
|
||||
@Override
|
||||
public boolean support(int personClassfiy) {
|
||||
if (personClassfiy == 3){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void compute(Map<String, Object> data) {
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,343 @@
|
||||
package com.engine.attendance.vacation.job.holidaygeneration.tactics;
|
||||
|
||||
|
||||
import com.engine.attendance.enums.CheckBoxEnum;
|
||||
import com.engine.attendance.enums.QuotaChangeMethodEnum;
|
||||
import com.engine.attendance.enums.StartingUnitEnum;
|
||||
import com.engine.attendance.vacation.util.VocationCommonUtil;
|
||||
import com.engine.common.util.DateUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import weaver.general.Util;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 循环单次发放全额
|
||||
*/
|
||||
@Slf4j
|
||||
public class SinglePaymentInFullWay implements HolidayGenerationWay {
|
||||
@Override
|
||||
public boolean support(int personClassfiy) {
|
||||
if (personClassfiy == 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void compute(Map<String, Object> data) {
|
||||
String userId = Util.null2String(data.get("userId"));
|
||||
String releaseDate = Util.null2String(data.get("releaseDate"));
|
||||
String cover = Util.null2String(data.get("cover"));
|
||||
if ("".equals(releaseDate)) {
|
||||
releaseDate = DateUtil.getCurrentTime();
|
||||
}
|
||||
List<Map<String, Object>> vocationList = (List<Map<String, Object>>) data.get("vocationList");
|
||||
//起算日期
|
||||
String qsrq = Util.null2String(vocationList.get(0).get("qsrq"));
|
||||
//额度有效期间
|
||||
String edyxqsz = Util.null2String(vocationList.get(0).get("edyxqsz"));
|
||||
//额度有效期间单位
|
||||
String edyxq = Util.null2String(vocationList.get(0).get("edyxq"));
|
||||
//累计承认工龄月份数栏位值
|
||||
String ljcrglyfslwz = Util.null2String(vocationList.get(0).get("ljcrglyfslwz"));
|
||||
//依据字段
|
||||
String yjzd = Util.null2String(vocationList.get(0).get("yjzd"));
|
||||
//调整起算日期策略
|
||||
String dzqsrq = Util.null2String(vocationList.get(0).get("dzqsrq"));
|
||||
//分割日期
|
||||
String fgrq = Util.null2String(vocationList.get(0).get("fgrq"));
|
||||
//提前执行发放操作的天数
|
||||
String dqtqffts = Util.null2String(vocationList.get(0).get("dqtqffts"));
|
||||
//执行发放的时间点
|
||||
String ffdtffsj = Util.null2String(vocationList.get(0).get("ffdtffsj"));
|
||||
//入职当期额度按比例折算
|
||||
String rzdqedablzs = Util.null2String(vocationList.get(0).get("rzdqedablzs"));
|
||||
//首次获得额度按比例折算
|
||||
String schdedablzs = Util.null2String(vocationList.get(0).get("schdedablzs"));
|
||||
//额度变更时额度处理方式
|
||||
String edbgsedclfs = Util.null2String(vocationList.get(0).get("edbgsedclfs"));
|
||||
//额度单位
|
||||
String eddw = Util.null2String(vocationList.get(0).get("edbgsedclfs"));
|
||||
//尾数处理
|
||||
String wscl = Util.null2String(vocationList.get(0).get("wscl"));
|
||||
//首次获得额度控制生效日期
|
||||
String schdedkzsxrq = Util.null2String(vocationList.get(0).get("schdedkzsxrq"));
|
||||
|
||||
qsrq = VocationCommonUtil.getAfterAdjustTime(qsrq, dzqsrq, fgrq);
|
||||
for (Map<String, Object> vocationMap : vocationList) {
|
||||
vocationMap.put("qsrq", qsrq);
|
||||
}
|
||||
|
||||
//相差天数
|
||||
int betweenDays = DateUtil.getBetWeenDays(qsrq, releaseDate.split(" ")[0]);
|
||||
//相差月份
|
||||
int betweenMonth = DateUtil.getBetWeenMonths(qsrq, releaseDate.split(" ")[0]);
|
||||
//总工龄天数
|
||||
int allWorkDays = Double.valueOf(ljcrglyfslwz).intValue() * 30 + betweenDays;
|
||||
//总月数
|
||||
int allMonths = betweenMonth + Double.valueOf(ljcrglyfslwz).intValue();
|
||||
if (allMonths < 12 && !CheckBoxEnum.CHECKED.getKey().equals(schdedablzs)) {
|
||||
log.info("userId : [{}] 工龄小于1年", userId);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Map<String, Object> insertHoliDayParam = VocationCommonUtil.getInsertHoliDayParam(vocationList.get(0), userId, qsrq, releaseDate);
|
||||
|
||||
List<Map<String,Object>> dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam);
|
||||
|
||||
//已存在数据且不覆盖
|
||||
if (dataList.size()>0 && !"1".equals(cover)) {
|
||||
return;
|
||||
}
|
||||
|
||||
String sxrq = insertHoliDayParam.get("sxrq").toString();
|
||||
//实际休息时长
|
||||
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);
|
||||
|
||||
} else {
|
||||
// restTime = edktsc;
|
||||
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.NO_CONVERT);
|
||||
}
|
||||
|
||||
|
||||
if (CheckBoxEnum.CHECKED.getKey().equals(schdedkzsxrq)) {
|
||||
insertHoliDayParam.put("sxrq", DateUtil.nextYear(releaseDate.split(" ")[0], 1, DateUtil.yyyyMMdd));
|
||||
}
|
||||
insertHoliDayParam.put("ktsc", restTime);
|
||||
} else if (allMonths >= 12 && edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())) {
|
||||
//入职不满一年,且入职当期额度按比例折算
|
||||
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);
|
||||
} 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);
|
||||
} else if (QuotaChangeMethodEnum.NO_CONVERT.getKey().equals(edbgsedclfs)) {
|
||||
// restTime = edktsc;
|
||||
restTime = getRestTime(insertHoliDayParam,vocationList,QuotaChangeMethodEnum.NO_CONVERT);
|
||||
}
|
||||
}
|
||||
} else if (edyxq.equals(StartingUnitEnum.STARTING_YEAR.getKey())) {
|
||||
int betweenYear = DateUtil.getBetWeenYears(qsrq,releaseDate.split(" ")[0]);
|
||||
//起算年
|
||||
allMonths = Double.valueOf(ljcrglyfslwz).intValue();
|
||||
int intervalYear = allMonths / 12+betweenYear;
|
||||
Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, intervalYear, yjzd);
|
||||
restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0;
|
||||
} else if (edyxq.equals(StartingUnitEnum.NATURAL_MONTH.getKey())){
|
||||
//自然月
|
||||
betweenMonth = DateUtil.getBetWeenMonths(qsrq,sxrq);
|
||||
if (DateUtil.getTime(sxrq).compareTo(DateUtil.getTime(qsrq)) <=0){
|
||||
betweenMonth = 0;
|
||||
}
|
||||
allMonths = betweenMonth+Double.valueOf(ljcrglyfslwz).intValue();
|
||||
|
||||
Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, allMonths, yjzd);
|
||||
restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0;
|
||||
|
||||
} else if (edyxq.equals(StartingUnitEnum.STARTING_MONTH.getKey())){
|
||||
//起算月
|
||||
betweenMonth = DateUtil.getBetWeenMonths(qsrq,sxrq);
|
||||
allMonths = betweenMonth+Double.valueOf(ljcrglyfslwz).intValue();
|
||||
|
||||
Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, allMonths, yjzd);
|
||||
restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0;
|
||||
} else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey())){
|
||||
//起自然周
|
||||
betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq)+1;
|
||||
if (DateUtil.getTime(sxrq).compareTo(DateUtil.getTime(qsrq)) <=0){
|
||||
betweenDays = 0;
|
||||
}
|
||||
allWorkDays = Double.valueOf(ljcrglyfslwz).intValue()*30+betweenDays;
|
||||
Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, allWorkDays/7, yjzd);
|
||||
restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0;
|
||||
|
||||
} else if (edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){
|
||||
//起算周
|
||||
betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq)+1;
|
||||
if (betweenDays <=7){
|
||||
betweenDays=0;
|
||||
}
|
||||
allWorkDays = Double.valueOf(ljcrglyfslwz).intValue()*30+betweenDays;
|
||||
Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, allWorkDays/7, yjzd);
|
||||
restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0;
|
||||
|
||||
} else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){
|
||||
//自然天
|
||||
betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq)+1;
|
||||
allWorkDays = Double.valueOf(ljcrglyfslwz).intValue()*30+betweenDays;
|
||||
Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, allWorkDays, yjzd);
|
||||
restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0;
|
||||
}
|
||||
insertHoliDayParam.put("ktsc", restTime);
|
||||
|
||||
VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList);
|
||||
}
|
||||
|
||||
|
||||
public double getRestTime(Map<String, Object> insertHoliDayParam,List<Map<String, Object>> vocationList,QuotaChangeMethodEnum changeMethodEnum){
|
||||
String sxrq = insertHoliDayParam.get("sxrq").toString();
|
||||
String qsrq = Util.null2String(vocationList.get(0).get("qsrq"));
|
||||
String nextSxrq = DateUtil.nextYear(sxrq,1,DateUtil.yyyyMMdd);
|
||||
//累计承认工龄月份数栏位值
|
||||
String ljcrglyfslwz = Util.null2String(vocationList.get(0).get("ljcrglyfslwz"));
|
||||
//依据字段
|
||||
String yjzd = Util.null2String(vocationList.get(0).get("yjzd"));
|
||||
//尾数处理
|
||||
String wscl = Util.null2String(vocationList.get(0).get("wscl"));
|
||||
|
||||
int seniority = "".equals(ljcrglyfslwz)?0:Double.valueOf(ljcrglyfslwz).intValue();
|
||||
|
||||
double restTime=0.0;
|
||||
//折算
|
||||
if (changeMethodEnum == QuotaChangeMethodEnum.CONVERT){
|
||||
int beginYearMonth = DateUtil.getBetWeenMonths(qsrq,sxrq);
|
||||
if (beginYearMonth < 0){
|
||||
beginYearMonth = 0;
|
||||
}
|
||||
beginYearMonth = beginYearMonth+seniority;
|
||||
int endYearMonth = DateUtil.getBetWeenMonths(qsrq,nextSxrq);
|
||||
endYearMonth = endYearMonth+seniority;
|
||||
int beginYear = beginYearMonth/12;
|
||||
int endYear = endYearMonth/12;
|
||||
int endYearRemainder = endYearMonth%12;
|
||||
Map<String,Object> beginYearmap = VocationCommonUtil.getVocationMap(vocationList, beginYear, yjzd);
|
||||
Map<String,Object> endYearmap = VocationCommonUtil.getVocationMap(vocationList, endYear, yjzd);
|
||||
double beginEdktsc = Double.valueOf(beginYearmap.get("edktsc") == null? "0" :Util.null2String(beginYearmap.get("edktsc")));
|
||||
double endEdktsc = Double.valueOf(endYearmap.get("edktsc") == null? "0" :Util.null2String(endYearmap.get("edktsc")));
|
||||
|
||||
//残年分割日期
|
||||
String divideTime = DateUtil.beforeMonth(nextSxrq,endYearRemainder);
|
||||
divideTime = divideTime.split("-")[0]+"-"+divideTime.split("-")[1]+"-"+qsrq.split("-")[2];
|
||||
int yearDays = DateUtil.getDays(sxrq, Calendar.DAY_OF_YEAR);
|
||||
|
||||
if (beginEdktsc == endEdktsc){
|
||||
//当前后额定可休时长一样时,代表没有残年情况
|
||||
if (DateUtil.getTime(qsrq).compareTo(DateUtil.getTime(sxrq)) >=0){
|
||||
int days = DateUtil.getBetWeenDays(qsrq,nextSxrq);
|
||||
restTime = VocationCommonUtil.computeRestDays(days, yearDays, endEdktsc, wscl);
|
||||
}else {
|
||||
restTime = beginEdktsc;
|
||||
}
|
||||
}else {
|
||||
//考虑残年
|
||||
if (DateUtil.getTime(qsrq).compareTo(DateUtil.getTime(sxrq)) >=0){
|
||||
|
||||
if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(qsrq)) >=0){
|
||||
int beforeDays = DateUtil.getBetWeenDays(qsrq,divideTime);
|
||||
int afterDays = DateUtil.getBetWeenDays(divideTime,nextSxrq);
|
||||
|
||||
double beforeRestTime = VocationCommonUtil.computeRestDays(beforeDays, yearDays, endEdktsc, wscl);
|
||||
double afterRestTime = VocationCommonUtil.computeRestDays(afterDays, yearDays, endEdktsc, wscl);
|
||||
restTime = beforeRestTime+afterRestTime;
|
||||
}else {
|
||||
int afterDays = DateUtil.getBetWeenDays(qsrq,nextSxrq);
|
||||
restTime = VocationCommonUtil.computeRestDays(afterDays, yearDays, endEdktsc, wscl);
|
||||
}
|
||||
|
||||
}else {
|
||||
int beforeDays = DateUtil.getBetWeenDays(sxrq,divideTime);
|
||||
int afterDays = DateUtil.getBetWeenDays(divideTime,nextSxrq);
|
||||
double beforeRestTime = VocationCommonUtil.computeRestDays(beforeDays, yearDays, endEdktsc, wscl);
|
||||
double afterRestTime = VocationCommonUtil.computeRestDays(afterDays, yearDays, endEdktsc, wscl);
|
||||
restTime = beforeRestTime+afterRestTime;
|
||||
}
|
||||
}
|
||||
|
||||
}else {
|
||||
//不折算
|
||||
int beginYearMonth = DateUtil.getBetWeenMonths(qsrq,sxrq);
|
||||
if (beginYearMonth < 0){
|
||||
beginYearMonth = 0;
|
||||
}
|
||||
beginYearMonth = beginYearMonth+seniority;
|
||||
int beginYear = beginYearMonth/12;
|
||||
Map<String,Object> beginYearmap = VocationCommonUtil.getVocationMap(vocationList, beginYear, yjzd);
|
||||
double beginEdktsc = Double.valueOf(beginYearmap.get("edktsc") == null? "0" :Util.null2String(beginYearmap.get("edktsc")));
|
||||
restTime=beginEdktsc;
|
||||
}
|
||||
return restTime;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.engine.attendance.vacation.service;
|
||||
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface VocationService {
|
||||
Map<String,Object> generateVocation(Map<String,Object> params);
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,94 @@
|
||||
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.VocationCmd;
|
||||
import com.engine.attendance.vacation.service.VocationService;
|
||||
import com.engine.common.cmd.GetPersonDateBySuitOrganzation;
|
||||
import com.engine.common.util.DbTools;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
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.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
public class VocationServiceImpl extends Service implements VocationService {
|
||||
|
||||
private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class);
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String, Object> generateVocation(Map<String, Object> params) {
|
||||
String modeId = Util.null2String(params.get("modeId"));
|
||||
Map<String,Object> param = Maps.newHashMap();
|
||||
param.put("modeId",modeId);
|
||||
Map<String,Object> result = commandExecutor.execute(new GetPersonDateBySuitOrganzation(param));
|
||||
|
||||
String sql = "select a.id userid,a.*,b.* from hrmresource a left join cus_fielddata b on a.id=b.id where a.id in (";
|
||||
|
||||
List<String> userIds = Lists.newArrayList();
|
||||
for (Map.Entry<String, Object> entry : result.entrySet()){
|
||||
userIds.add(entry.getKey());
|
||||
}
|
||||
List<List<String>> userPartions = Lists.partition(userIds,50);
|
||||
List<Map<String,Object>> dataList = Lists.newArrayList();
|
||||
for (List<String> list : userPartions){
|
||||
String querySql = sql + String.join(",",list) +")";
|
||||
log.info("querySql : [{}]",querySql);
|
||||
List<Map<String,Object>> resultList = DbTools.getSqlToList(querySql);
|
||||
|
||||
List<Map<String,Object>> filterList = resultList.stream().filter(e -> "HrmCustomFieldByInfoType".equals(Util.null2String(e.get("scope"))) &&
|
||||
"-1".equals(Util.null2String(e.get("scopeid")))).collect(Collectors.toList());
|
||||
dataList.addAll(filterList);
|
||||
|
||||
List<String> filterStrList = filterList.stream().map(e -> e.get("userid").toString()).collect(Collectors.toList());
|
||||
resultList = resultList.stream().filter(e -> {
|
||||
String userId = Util.null2String(e.get("userid"));
|
||||
if (filterStrList.contains(userId)){
|
||||
return false;
|
||||
}else {
|
||||
return true;
|
||||
}
|
||||
|
||||
}).collect(Collectors.toList());
|
||||
dataList.addAll(resultList);
|
||||
}
|
||||
Map<String,List<Map<String,Object>>> userIdMap = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
|
||||
|
||||
for (Map.Entry<String, Object> entry : result.entrySet()){
|
||||
String userId = entry.getKey();
|
||||
Map<String,String> vocationMap = (Map<String, String>)entry.getValue();
|
||||
Map<String,Object> paramMap = Maps.newHashMap();
|
||||
paramMap.put("startDate","");
|
||||
paramMap.put("endDate","");
|
||||
paramMap.put("resourceId",userId);
|
||||
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap);
|
||||
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data");
|
||||
Map<String, Object> needGenerateVocationMap = Maps.newHashMap();
|
||||
for (Map<String,Object> map : attendanceItems){
|
||||
if (vocationMap.get(map.get("key")) != null){
|
||||
needGenerateVocationMap.put(Util.null2String(map.get("key")),vocationMap.get(map.get("key")));
|
||||
}
|
||||
}
|
||||
log.info("VocationServiceImpl userId:{}, userMap:{}",userId,userIdMap.get(userId));
|
||||
for (Map.Entry<String, Object> e:needGenerateVocationMap.entrySet()){
|
||||
if (e.getValue() != null && ((List<Map<String,Object>>)e.getValue()).size() > 0){
|
||||
Map<String,Object> vocationParam = Maps.newHashMap();
|
||||
vocationParam.put("userId",userId);
|
||||
vocationParam.put("vocationList",e.getValue());
|
||||
vocationParam.put("userMap",userIdMap.get(userId).get(0));
|
||||
vocationParam.put("releaseDate",params.get("releaseDate"));
|
||||
commandExecutor.execute(new VocationCmd(vocationParam));
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package com.engine.attendance.vacation.service;
|
||||
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface vocationService {
|
||||
Map<String,Object> getHrmCondition(Map<String,Object> params, User user);
|
||||
}
|
@ -0,0 +1,425 @@
|
||||
package com.engine.attendance.vacation.util;
|
||||
|
||||
import com.engine.attendance.enums.*;
|
||||
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.google.common.collect.Maps;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.exolab.castor.xml.schema.IdentityField;
|
||||
import weaver.general.TimeUtil;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
public class VocationCommonUtil {
|
||||
|
||||
/**
|
||||
* 获得调整后的起算日期
|
||||
* @param qsrq 起算日期
|
||||
* @param dzqsrq 调整起算日期策略
|
||||
* @param fgrq 分割日期
|
||||
* @return
|
||||
*/
|
||||
public static String getAfterAdjustTime(String qsrq,String dzqsrq,String fgrq){
|
||||
|
||||
if (AdjustStartingTimeEnum.NEXT_MONTH.getKey().equals(dzqsrq)){
|
||||
String nextMonth = DateUtil.nextMonth(qsrq,1,DateUtil.yyyyMMdd);
|
||||
qsrq = nextMonth.split("-")[0]+"-"+nextMonth.split("-")[1]+"-01";
|
||||
|
||||
}else if (AdjustStartingTimeEnum.BY_SEGMENT_TIME.getKey().equals(dzqsrq)){
|
||||
if (fgrq.length() == 1){
|
||||
fgrq = "0"+fgrq;
|
||||
}
|
||||
String divideDate=qsrq.split("-")[0]+"-"+qsrq.split("-")[1]+"-"+fgrq;
|
||||
if (DateUtil.getTime(qsrq).compareTo(DateUtil.getTime(divideDate)) >=0){
|
||||
qsrq=divideDate;
|
||||
}
|
||||
|
||||
}else if (AdjustStartingTimeEnum.NOW_MONTH.getKey().equals(dzqsrq)){
|
||||
|
||||
qsrq = qsrq.split("-")[0]+"-"+qsrq.split("-")[1]+"-01";
|
||||
}
|
||||
log.info("getAfterAdjustTime qsrq : [{}]",qsrq);
|
||||
return qsrq;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得执行日期
|
||||
* @param releaseDate 执行时间
|
||||
* @param vocationMap 假期集合
|
||||
* @return
|
||||
|
||||
public static String getExcuteTime(String releaseDate ,Map<String,Object> vocationMap){
|
||||
String time = "";
|
||||
String edyxq = Util.null2String(vocationMap.get("edyxq"));
|
||||
String dqtqffts = Util.null2String(vocationMap.get("dqtqffts"));
|
||||
String ffdtffsj = Util.null2String(vocationMap.get("ffdtffsj"));
|
||||
String qsrq = Util.null2String(vocationMap.get("qsrq"));
|
||||
int edyxqsz = Double.valueOf(Util.null2String(vocationMap.get("edyxqsz"))).intValue();
|
||||
|
||||
if (edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())){
|
||||
int nowYear = Integer.valueOf(releaseDate.split("-")[0])+1;
|
||||
int StartYear = Integer.valueOf(qsrq.split("-")[0]);
|
||||
if ((nowYear-StartYear)%edyxqsz == 0){
|
||||
String endYearTime = releaseDate.split("-")[0]+"-"+"12-31";
|
||||
time = DateUtil.beforeDay(endYearTime,Integer.valueOf(dqtqffts)) +" "+ffdtffsj;
|
||||
}
|
||||
}else if (edyxq.equals(StartingUnitEnum.STARTING_YEAR.getKey())){
|
||||
int betweenYear = DateUtil.getBetWeenYears(releaseDate.split(" ")[0],qsrq);
|
||||
if (betweenYear >=1 && betweenYear % edyxqsz == 0){
|
||||
if (betweenYear > 1){
|
||||
String startTime = releaseDate.split("-")[0]+"-"+qsrq.split("-")[1]+"-"+qsrq.split("-")[2];
|
||||
time = DateUtil.beforeDay(startTime,Integer.valueOf(dqtqffts)) +" "+ffdtffsj;
|
||||
}else {
|
||||
String startTime = DateUtil.nextYear(qsrq,1,DateUtil.yyyyMMdd);
|
||||
time = DateUtil.beforeDay(startTime,Integer.valueOf(dqtqffts)) +" "+ffdtffsj;
|
||||
}
|
||||
}
|
||||
}else if (edyxq.equals(StartingUnitEnum.NATURAL_MONTH.getKey())){
|
||||
String startTime = qsrq.split("-")[0]+"-"+qsrq.split("-")[1]+"-01";
|
||||
String nowTime = releaseDate.split("-")[0]+"-"+releaseDate.split("-")[1]+"-01";
|
||||
int betweenMonths = DateUtil.getBetWeenMonths(startTime,nowTime)+1;
|
||||
if (betweenMonths % edyxqsz == 0){
|
||||
int diffdays = DateUtil.getDays(releaseDate, Calendar.DAY_OF_MONTH);
|
||||
String endMonthTime = releaseDate.split("-")[0]+"-"+releaseDate.split("-")[1]+"-"+diffdays;
|
||||
time = DateUtil.beforeDay(endMonthTime,Integer.valueOf(dqtqffts)) +" "+ffdtffsj;
|
||||
}
|
||||
|
||||
}else if (edyxq.equals(StartingUnitEnum.STARTING_MONTH.getKey())){
|
||||
|
||||
String afterReleaseDate = DateUtil.AfterDay(releaseDate.split(" ")[0],Integer.valueOf(dqtqffts));
|
||||
int betweenMonths = DateUtil.getBetWeenMonths(qsrq,afterReleaseDate);
|
||||
if (betweenMonths >=1 && betweenMonths%edyxqsz == 0 && qsrq.split("-")[2].equals(afterReleaseDate.split("-")[2])){
|
||||
if (betweenMonths > 1){
|
||||
String startTime = releaseDate.split(" ")[0];
|
||||
time = startTime +" "+ffdtffsj;
|
||||
}else {
|
||||
String startTime = DateUtil.nextMonth(qsrq,1,DateUtil.yyyyMMdd);
|
||||
time = DateUtil.beforeDay(startTime,Integer.valueOf(dqtqffts)) +" "+ffdtffsj;
|
||||
}
|
||||
}
|
||||
|
||||
}else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey())){
|
||||
int days = DateUtil.getBetWeenDays(qsrq,releaseDate.split(" ")[0]);
|
||||
int dayOfWeek = TimeUtil.getDayOfWeek(qsrq);
|
||||
if (dayOfWeek == 0){
|
||||
dayOfWeek = 7;
|
||||
}
|
||||
days = days-(7-dayOfWeek);
|
||||
int betWeenWeeks = days/7 +1;
|
||||
if (days % 7 == 0 && betWeenWeeks%edyxqsz == 0){
|
||||
String startTime = DateUtil.AfterDay(releaseDate.split(" ")[0],7);
|
||||
time = DateUtil.beforeDay(startTime,Integer.valueOf(dqtqffts)) +" "+ffdtffsj;
|
||||
}
|
||||
}else if (edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){
|
||||
String afterReleaseDate = DateUtil.AfterDay(releaseDate.split(" ")[0],Integer.valueOf(dqtqffts));
|
||||
int days = DateUtil.getBetWeenDays(qsrq,afterReleaseDate);
|
||||
int betWeenWeeks = days/7;
|
||||
if (days %7 ==0 && betWeenWeeks%edyxqsz == 0 && betWeenWeeks>=1){
|
||||
if (betWeenWeeks > 1){
|
||||
String startTime = releaseDate.split(" ")[0];
|
||||
time = startTime +" "+ffdtffsj;
|
||||
}else {
|
||||
String startTime = DateUtil.AfterDay(qsrq,7);
|
||||
time = DateUtil.beforeDay(startTime,Integer.valueOf(dqtqffts)) +" "+ffdtffsj;
|
||||
}
|
||||
}
|
||||
|
||||
}else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){
|
||||
time = releaseDate.split(" ")[0]+" "+ffdtffsj;
|
||||
}
|
||||
log.info("excuteTime : [{}]",time);
|
||||
return time;
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* 根据依据字段和
|
||||
* @param vocationList 假期额度集合
|
||||
* @param intervalDuration 间隔时长
|
||||
* @param yjzd 依据字段
|
||||
* @return
|
||||
*/
|
||||
public static Map<String,Object> getVocationMap(List<Map<String,Object>> vocationList,int intervalDuration,String yjzd){
|
||||
|
||||
List<Map<String,Object>> resultList = vocationList.stream().filter(e -> {
|
||||
//间隔时长起
|
||||
double jgsc0 = Double.valueOf(Util.null2String(e.get("jgsc0")));
|
||||
//间隔时长止
|
||||
double jgsc1 = Double.valueOf(Util.null2String(e.get("jgsc1")));
|
||||
//选项值
|
||||
String xxz = Util.null2String(e.get("xxz"));
|
||||
if (!"".equals(yjzd) && xxz.equals(yjzd) && intervalDuration >=jgsc0 && intervalDuration<=jgsc1){
|
||||
return true;
|
||||
}else if ("".equals(yjzd) && intervalDuration >=jgsc0 && intervalDuration<=jgsc1){
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
|
||||
}).collect(Collectors.toList());
|
||||
if (resultList.size() > 0){
|
||||
return resultList.get(0);
|
||||
}else {
|
||||
return new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算额定休息天数
|
||||
* @param day 一年当中占据的天数
|
||||
* @param yearDay 一年的天数
|
||||
* @param ratedRestTime 额定可休时长
|
||||
* @param wscl 尾数处理
|
||||
* @return
|
||||
*/
|
||||
public static double computeRestDays(int day,int yearDay,double ratedRestTime,String wscl){
|
||||
BigDecimal dayBig = new BigDecimal(day);
|
||||
BigDecimal yearDayBig = new BigDecimal(yearDay);
|
||||
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();
|
||||
}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();
|
||||
}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 = 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 = 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();
|
||||
}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();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化插入假期余额参数
|
||||
* @param vocationMap 假期集合
|
||||
* @param userId 员工id
|
||||
* @param qsrq 起算日期
|
||||
* @param ffsj 发放时间
|
||||
* @return
|
||||
*/
|
||||
public static Map<String,Object> getInsertHoliDayParam(Map<String,Object> vocationMap,String userId,String qsrq,String ffsj){
|
||||
Map<String,Object> param = Maps.newHashMap();
|
||||
//额度有效期间单位
|
||||
String edyxq = Util.null2String(vocationMap.get("edyxq"));
|
||||
//额度有效期间
|
||||
int edyxqsz = Double.valueOf(Util.null2String(vocationMap.get("edyxqsz"))).intValue();
|
||||
//提前执行发放操作的天数
|
||||
int dqtqffts = Integer.valueOf(Util.null2String(vocationMap.get("dqtqffts")));
|
||||
//结余未休处理
|
||||
String jywxcl = Util.null2String(vocationMap.get("jywxcl"));
|
||||
//延期时长
|
||||
String yqsc = Util.null2String(vocationMap.get("yqsc"));
|
||||
//执行发放的时间点
|
||||
String ffdtffsj = Util.null2String(vocationMap.get("ffdtffsj"));
|
||||
|
||||
param.put("lyid",vocationMap.get("dataid"));
|
||||
param.put("jqid",vocationMap.get("jb"));
|
||||
param.put("ygid",userId);
|
||||
param.put("qsrq",qsrq);
|
||||
param.put("ffsj",ffsj);
|
||||
|
||||
if (edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())){
|
||||
String nowEndYearTime = ffsj.split("-")[0]+"-12-31";
|
||||
String forWardTime = DateUtil.beforeDay(nowEndYearTime,dqtqffts) +" "+ffdtffsj;
|
||||
if (DateUtil.getTime(ffsj).compareTo(DateUtil.getTime(forWardTime)) >=0){
|
||||
//发放下一年
|
||||
String nextYear = DateUtil.nextYear(ffsj,1,DateUtil.yyyyMMdd);
|
||||
String jzrq = DateUtil.nextYear(nextYear,edyxqsz-1,DateUtil.yyyyMMdd);
|
||||
param.put("sxrq",nextYear.split("-")[0]+"-01-01");
|
||||
param.put("jzrq",jzrq.split("-")[0]+"-12-31");
|
||||
}else {
|
||||
//发放当年
|
||||
param.put("sxrq",ffsj.split("-")[0]+"-01-01");
|
||||
param.put("jzrq",DateUtil.nextYear(ffsj.split("-")[0]+"-12-31",edyxqsz-1,DateUtil.yyyyMMdd));
|
||||
}
|
||||
|
||||
}else if (edyxq.equals(StartingUnitEnum.STARTING_YEAR.getKey())){
|
||||
String startTime = ffsj.split("-")[0]+"-"+qsrq.split("-")[1]+"-"+qsrq.split("-")[2];
|
||||
String beforeStartTime = DateUtil.beforeYear(startTime,1,DateUtil.yyyyMMdd);
|
||||
String beforeEndTime = DateUtil.beforeDay(startTime,1);
|
||||
String endTime = DateUtil.nextYear(beforeEndTime,1,DateUtil.yyyyMMdd);
|
||||
String forWardTime = DateUtil.beforeDay(beforeEndTime,dqtqffts) +" "+ffdtffsj;
|
||||
|
||||
if (DateUtil.getTime(ffsj).compareTo(DateUtil.getTime(forWardTime)) >=0){
|
||||
//发放下一周期
|
||||
param.put("sxrq",startTime);
|
||||
param.put("jzrq",DateUtil.nextYear(endTime,edyxqsz-1,DateUtil.yyyyMMdd));
|
||||
}else {
|
||||
//发放当前周期
|
||||
param.put("sxrq",beforeStartTime);
|
||||
param.put("jzrq",DateUtil.nextYear(beforeEndTime,edyxqsz-1,DateUtil.yyyyMMdd));
|
||||
}
|
||||
|
||||
}else if (edyxq.equals(StartingUnitEnum.NATURAL_MONTH.getKey())){
|
||||
String sxrq = DateUtil.nextMonth(ffsj,1,DateUtil.yyyyMM)+"-01";
|
||||
int days = DateUtil.getDays(sxrq,Calendar.DAY_OF_MONTH);
|
||||
String jzrq = DateUtil.nextMonth(sxrq,edyxqsz-1,DateUtil.yyyyMM) +"-"+days;
|
||||
|
||||
String beforeSxrq = ffsj.split("-")[0]+"-"+ffsj.split("-")[1]+"-01";
|
||||
int beforeDays = DateUtil.getDays(beforeSxrq,Calendar.DAY_OF_MONTH);
|
||||
String beforeJzrq = DateUtil.nextMonth(beforeSxrq,edyxqsz-1,DateUtil.yyyyMM);
|
||||
int beforeJzrqDays = DateUtil.getDays(beforeJzrq,Calendar.DAY_OF_MONTH);
|
||||
beforeJzrq = beforeJzrq +"-"+beforeJzrqDays;
|
||||
|
||||
String forWardTime = DateUtil.beforeDay(ffsj.split("-")[0]+"-"+ffsj.split("-")[1]+"-"+beforeDays,dqtqffts)+" "+ffdtffsj;
|
||||
|
||||
if (DateUtil.getTime(ffsj).compareTo(DateUtil.getTime(forWardTime)) >=0){
|
||||
//发放下一月份
|
||||
param.put("sxrq",sxrq);
|
||||
param.put("jzrq",jzrq);
|
||||
}else {
|
||||
//发放当前月份
|
||||
param.put("sxrq",beforeSxrq);
|
||||
param.put("jzrq",beforeJzrq);
|
||||
}
|
||||
|
||||
}else if (edyxq.equals(StartingUnitEnum.STARTING_MONTH.getKey())){
|
||||
String sxrq = ffsj.split("-")[0]+"-"+ffsj.split("-")[1]+"-"+qsrq.split("-")[2];
|
||||
String beforeEndTime = DateUtil.beforeDay(sxrq,1);
|
||||
String beforeSxrq = DateUtil.beforeMonth(sxrq,1);
|
||||
String beforeJzrq = DateUtil.nextMonth(beforeEndTime,edyxqsz-1,DateUtil.yyyyMM);
|
||||
String jzrq = DateUtil.nextMonth(beforeEndTime,edyxqsz,DateUtil.yyyyMM);
|
||||
|
||||
String forWardTime = DateUtil.beforeDay(beforeEndTime,dqtqffts)+" "+ffdtffsj;
|
||||
|
||||
if (DateUtil.getTime(ffsj).compareTo(DateUtil.getTime(forWardTime)) >=0){
|
||||
//发放下一月份
|
||||
param.put("sxrq",sxrq);
|
||||
param.put("jzrq",jzrq);
|
||||
}else {
|
||||
//发放当前月份
|
||||
param.put("sxrq",beforeSxrq);
|
||||
param.put("jzrq",beforeJzrq);
|
||||
}
|
||||
|
||||
}else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey())){
|
||||
int dayOfWeek = TimeUtil.getDayOfWeek(ffsj);
|
||||
if (dayOfWeek == 0){
|
||||
dayOfWeek = 7;
|
||||
}
|
||||
String time = ffsj.split("-")[0]+"-"+ffsj.split("-")[1] +"-"+ffsj.split(" ")[0].split("-")[2];
|
||||
String sxrq = DateUtil.AfterDay(time,8-dayOfWeek);
|
||||
String beforeSxrq = DateUtil.beforeMonth(time,dayOfWeek-1);
|
||||
String beforeJxrq = DateUtil.AfterDay(time,8-dayOfWeek);
|
||||
|
||||
String forWardTime = DateUtil.beforeDay(beforeJxrq,dqtqffts)+" "+ffdtffsj;
|
||||
|
||||
if (DateUtil.getTime(ffsj).compareTo(DateUtil.getTime(forWardTime)) >=0){
|
||||
//发放下一周
|
||||
param.put("sxrq",sxrq);
|
||||
param.put("jzrq",DateUtil.AfterDay(sxrq,7*edyxqsz-1));
|
||||
}else {
|
||||
//发放当前周
|
||||
param.put("sxrq",beforeSxrq);
|
||||
param.put("jzrq",DateUtil.AfterDay(beforeSxrq,7*edyxqsz-1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}else if (edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){
|
||||
|
||||
String time = ffsj.split("-")[0]+"-"+ffsj.split("-")[1] +"-"+ffsj.split(" ")[0].split("-")[2];
|
||||
int days = DateUtil.getBetWeenDays(qsrq,time);
|
||||
int residueDays = days%7;
|
||||
String beforeSxrq = DateUtil.beforeDay(time,residueDays);
|
||||
String beforeEndTime = DateUtil.AfterDay(beforeSxrq,6);
|
||||
String sxrq = DateUtil.AfterDay(beforeSxrq,7);
|
||||
|
||||
String forWardTime = DateUtil.beforeDay(beforeEndTime,dqtqffts)+" "+ffdtffsj;
|
||||
|
||||
if (DateUtil.getTime(ffsj).compareTo(DateUtil.getTime(forWardTime)) >=0){
|
||||
//发放下一周周期
|
||||
param.put("sxrq",sxrq);
|
||||
param.put("jzrq",DateUtil.AfterDay(sxrq,7*edyxqsz-1));
|
||||
}else {
|
||||
//发放当前周期
|
||||
param.put("sxrq",beforeSxrq);
|
||||
param.put("jzrq",DateUtil.AfterDay(beforeSxrq,7*edyxqsz-1));
|
||||
}
|
||||
|
||||
}else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){
|
||||
String sxrq = DateUtil.AfterDay(ffsj.split(" ")[0],1);
|
||||
param.put("sxrq",sxrq);
|
||||
param.put("jzrq",sxrq);
|
||||
}
|
||||
|
||||
if (BalanceHandleEnum.DELAY.getKey().equals(jywxcl)){
|
||||
if (DelayTypeEnum.ONE_MONTH.getKey().equals(yqsc)){
|
||||
//一个月
|
||||
param.put("yqsxrq",DateUtil.nextMonth(param.get("jzrq").toString(),1,DateUtil.yyyyMMdd));
|
||||
}else if (DelayTypeEnum.TWO_MONTH.getKey().equals(yqsc)){
|
||||
//两个月
|
||||
param.put("yqsxrq",DateUtil.nextMonth(param.get("jzrq").toString(),2,DateUtil.yyyyMMdd));
|
||||
}else if (DelayTypeEnum.THREE_MONTH.getKey().equals(yqsc)){
|
||||
//三个月
|
||||
param.put("yqsxrq",DateUtil.nextMonth(param.get("jzrq").toString(),3,DateUtil.yyyyMMdd));
|
||||
}else if (DelayTypeEnum.HALF_YEAR.getKey().equals(yqsc)){
|
||||
//半年
|
||||
param.put("yqsxrq",DateUtil.nextMonth(param.get("jzrq").toString(),6,DateUtil.yyyyMMdd));
|
||||
}else if (DelayTypeEnum.ONE_YEAR.getKey().equals(yqsc)){
|
||||
//一年
|
||||
param.put("yqsxrq",DateUtil.nextMonth(param.get("jzrq").toString(),12,DateUtil.yyyyMMdd));
|
||||
}
|
||||
}
|
||||
return param;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新假期余额
|
||||
* @param tableName 假期余额表名
|
||||
* @param dataMap 参数
|
||||
*/
|
||||
public static void updateHolidayBalance(String tableName,Map<String,Object> dataMap,List<Map<String,Object>> dataList){
|
||||
log.info("updateHolidayBalance dataMap:[{}]",dataMap);
|
||||
String lyid = Util.null2String(dataMap.get("lyid"));
|
||||
String ygid = Util.null2String(dataMap.get("ygid"));
|
||||
String jqid = Util.null2String(dataMap.get("jqid"));
|
||||
String sxrq = Util.null2String(dataMap.get("sxrq"));
|
||||
String jzrq = Util.null2String(dataMap.get("jzrq"));
|
||||
|
||||
if (dataList.size()>0){
|
||||
Map<String,Object> condition = Maps.newHashMap();
|
||||
condition.put("id",dataList.get(0).get("id"));
|
||||
DbTools.update(CommonUtil.makeUpdateSql(tableName,dataMap,condition));
|
||||
}else {
|
||||
Utils.InsertFormTable(tableName, dataMap, Utils.getFormmodeIdMap());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 该周期是否已存在
|
||||
* @param tableName
|
||||
* @param dataMap
|
||||
* @return
|
||||
*/
|
||||
public static List<Map<String,Object>> ifexist(String tableName,Map<String,Object> dataMap){
|
||||
log.info("updateHolidayBalance dataMap:[{}]",dataMap);
|
||||
String lyid = Util.null2String(dataMap.get("lyid"));
|
||||
String ygid = Util.null2String(dataMap.get("ygid"));
|
||||
String jqid = Util.null2String(dataMap.get("jqid"));
|
||||
String sxrq = Util.null2String(dataMap.get("sxrq"));
|
||||
String jzrq = Util.null2String(dataMap.get("jzrq"));
|
||||
String sql = "select id 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;
|
||||
}
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package com.engine.attendance.vacation.web;
|
||||
|
||||
|
||||
import com.engine.attendance.vacation.service.VocationService;
|
||||
import com.engine.attendance.vacation.service.impl.VocationServiceImpl;
|
||||
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 lombok.extern.slf4j.Slf4j;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.Context;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
public class VocationAction {
|
||||
|
||||
|
||||
private VocationService vocationService = ServiceUtil.getService(VocationServiceImpl.class);
|
||||
|
||||
/**
|
||||
* tableName 表名
|
||||
* columns 查询的列名
|
||||
* conditions 查询条件
|
||||
* orderby 排序及limit
|
||||
* @return
|
||||
*/
|
||||
@GET
|
||||
@Path("/generateVocation")
|
||||
@Produces({"text/plain"})
|
||||
public String generateVocation(@Context HttpServletRequest request, @Context HttpServletResponse response) {
|
||||
try {
|
||||
Map<String,Object> paramMap = ParamUtil.request2Map(request);
|
||||
Map<String,String> formmodeIdMap = Utils.getFormmodeIdMap();
|
||||
//假期额度模块id
|
||||
String modeId = formmodeIdMap.get("uf_jcl_kq_jqed");
|
||||
paramMap.put("modeId",modeId);
|
||||
Map<String,Object> dataMap = vocationService.generateVocation(paramMap);
|
||||
return ApiReturnTools.success(dataMap);
|
||||
}catch (Exception e){
|
||||
log.error("sync fund status fail,catch error: [{}]",e);
|
||||
return ApiReturnTools.error("200","查询失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
Binary file not shown.
@ -1,4 +0,0 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤分析模块
|
||||
## 用于计算分析人员的考勤,算出正常上下班、加班、早退、迟到等一些列考勤项目,并入到出勤结果表
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1,4 +0,0 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤方案模块
|
||||
##
|
||||
|
Binary file not shown.
@ -1,4 +0,0 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤组件模块
|
||||
## person_group 人员分组功能组件
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,4 +0,0 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤流程模块
|
||||
##
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,26 @@
|
||||
import com.engine.attendance.vacation.job.holidaygeneration.tactics.BySchedulePaymentWay;
|
||||
import com.engine.attendance.vacation.job.holidaygeneration.tactics.SinglePaymentInFullWay;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TestBySchedulePaymentWay {
|
||||
public static void main(String[] args) {
|
||||
Map<String,Object> param = Maps.newHashMap();
|
||||
param.put("userId","53");
|
||||
param.put("releaseDate","2023-01-29 00:00:00");
|
||||
|
||||
String json = "[{modedatamodifier=1, edyxqsz=1.00, modedatacreatertype=0, jgsc1=5.00, jgsc0=1.00, yqhedzgxz='', edbgsedclfs='2', edyxq='1', ljcrglyfslwz='1', edktsc=5.00, mc=测试年假, MODEUUID=d1489670-ec11-49f5-8786-58a9ffc1167f, zyz='', id='18', jywxcl='', mainid='18', edkyqcs='', edfffs='0', jjrbhzedn='', modedatacreater='1', ffsj='', jb='112', edbxdcxw='', modedatacreatetime='15:52:56', schdedablzs='1', dczskxsc='', yjzd='', formmodeid='201', rzdqedablzs='1', fdsc01='1', ffdtffsj='00:00', yqsc='', fdsc07='7', fdsc06='6', szjg='2', fdsc09='9', fdsc08='8', qsrq='2021-11-11', fdsc03='3', modedatacreatedate='2023-12-28', fdsc02='2', requestId='', fdsc05='5', fdsc04='4', sm='', eddw='1', form_biz_id=18000333, edyj='2', dzqsrq='1', schdedkzsxrq='0', fdsc10='10', detailid='14', fdsc12='12', fdsc11='11', fgrq='15', wscl='2', dataid='18', dqtqffts='2', xxz='0', modedatamodifydatetime='2024-01-04 16:51:17'},{modedatamodifier=1, edyxqsz=2.00, modedatacreatertype=0, jgsc1=10.00, jgsc0=5.00, yqhedzgxz='', edbgsedclfs='2', edyxq='3', ljcrglyfslwz='1', edktsc=10.00, mc=测试年假, MODEUUID=d1489670-ec11-49f5-8786-58a9ffc1167f, zyz='', id='18', jywxcl='', mainid='18', edkyqcs='', edfffs='0', jjrbhzedn='', modedatacreater='1', ffsj='', jb='112', edbxdcxw='', modedatacreatetime='15:52:56', schdedablzs='1', dczskxsc='', yjzd='', formmodeid='201', rzdqedablzs='1', fdsc01='1', ffdtffsj='00:00', yqsc='', fdsc07='7', fdsc06='6', szjg='2', fdsc09='9', fdsc08='8', qsrq='2021-11-11', fdsc03='3', modedatacreatedate='2023-12-28', fdsc02='2', requestId='', fdsc05='5', fdsc04='4', sm='', eddw='1', form_biz_id=18000333, edyj='2', dzqsrq='1', schdedkzsxrq='0', fdsc10='10', detailid='15', fdsc12='12', fdsc11='11', fgrq='15', wscl='2', dataid='18', dqtqffts='15', xxz='0', modedatamodifydatetime='2024-01-04 16:51:17'}]";
|
||||
Gson gson = new Gson();
|
||||
List<Map<String,String>> vocationList = Lists.newArrayList();
|
||||
vocationList = gson.fromJson(json, (Type) vocationList.getClass());
|
||||
System.out.println(vocationList);
|
||||
|
||||
param.put("vocationList",vocationList);
|
||||
new BySchedulePaymentWay().compute(param);
|
||||
}
|
||||
}
|
@ -1,7 +1,61 @@
|
||||
import com.engine.attendance.vacation.util.VocationCommonUtil;
|
||||
import com.engine.common.util.DateUtil;
|
||||
import com.engine.common.util.Utils;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import sun.misc.BASE64Decoder;
|
||||
import weaver.general.TimeUtil;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class TestObj {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("-".split("-")[0]);
|
||||
public static void main(String[] args) throws Exception{
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.set(Integer.valueOf("2024"), Integer.valueOf("04") - 1, 1);
|
||||
//
|
||||
// System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_YEAR));
|
||||
// System.out.println(DateUtil.getBetWeenHours("2024-01-03 15:00:00","2024-01-03 15:35"));
|
||||
// System.out.println(DateUtil.getTime("2024-01-03 16:00:00").compareTo(DateUtil.getTime("2024-01-03 15:35")));
|
||||
//System.out.println(DateUtil.getBetWeenMonths("2021-12-01","2021-12-01"));
|
||||
|
||||
// System.out.println(DateUtil.getTime("2023-01-01").getDayOfWeek());
|
||||
// System.out.println(TimeUtil.getWeekOfYear(Date.valueOf(DateUtil.getTime("2023-01-09").toLocalDate())));
|
||||
// System.out.println(DateUtil.beforeMonth("2023-11-15",3));
|
||||
|
||||
// System.out.println(DateUtil.getTime("2023-12-16 15:05:01").compareTo(DateUtil.getTime("2023-12-16 24:00:00")));
|
||||
//
|
||||
List<String> list = new ArrayList<>();
|
||||
|
||||
|
||||
// System.out.println(DateUtil.getBetWeenDays("2024-01-02","2024-01-10"));
|
||||
// System.out.println(DateUtil.getBetWeenMonths("2021-06-01","2022-07-01"));
|
||||
// System.out.println(DateUtil.beforeMonth("2023-01-01",6));
|
||||
System.out.println(DateUtil.getBetWeenYears("2023-05-01","2024-01-01"));
|
||||
//System.out.println(DateUtil.getBetWeenDays("2023-01-01","2023-01-01"));
|
||||
// System.out.println(DateUtil.getBetWeenDays("2023-08-02","2024-01-01"));
|
||||
|
||||
|
||||
//System.out.println(VocationCommonUtil.computeRestDays(70,365,7,"4"));
|
||||
//System.out.println(DateUtil.nextMonth("2023-11-25 15:22:11",1,DateUtil.yyyyMM));
|
||||
// System.out.println(DateUtil.getBetWeenYears("2023-05-01","2025-04-31"));
|
||||
// List<Map<String,Object>> vacationList = Lists.newArrayList();
|
||||
// vacationList.add(new HashMap(){{
|
||||
// put("dataid","18");
|
||||
// put("jb","112");
|
||||
//
|
||||
// }});
|
||||
// vacationList.add(new HashMap(){{
|
||||
// put("dataid","18");
|
||||
// put("jb","112");
|
||||
//
|
||||
// }});
|
||||
//
|
||||
// Map<String,String> vacationMap = Maps.newHashMap();
|
||||
// for (Map<String,Object> vocation:vacationList){
|
||||
// vacationMap.put(vocation.get("dataid").toString(),vocation.get("jb").toString());
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,44 @@
|
||||
import com.engine.attendance.vacation.job.holidaygeneration.tactics.SinglePaymentInFullWay;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TestSinglePaymentFullWay {
|
||||
public static void main(String[] args) throws Exception{
|
||||
Map<String,Object> param = Maps.newHashMap();
|
||||
param.put("userId","53");
|
||||
param.put("releaseDate","2021-12-01 00:00:00");
|
||||
|
||||
String json = "[{modedatamodifier=1, edyxqsz=1.00, modedatacreatertype=0, jgsc1=5.00, jgsc0=1.00, yqhedzgxz='', edbgsedclfs='1', edyxq='0', ljcrglyfslwz='18', edktsc=5.00, mc=测试年假, MODEUUID=d1489670-ec11-49f5-8786-58a9ffc1167f, zyz='', id='18', jywxcl='', mainid='18', edkyqcs='', edfffs='0', jjrbhzedn='', modedatacreater='1', ffsj='', jb='112', edbxdcxw='', modedatacreatetime='15:52:56', schdedablzs='1', dczskxsc='', yjzd='', formmodeid='201', rzdqedablzs='1', fdsc01='1', ffdtffsj='00:00', yqsc='', fdsc07='7', fdsc06='6', szjg='2', fdsc09='9', fdsc08='8', qsrq='2021-05-11', fdsc03='3', modedatacreatedate='2023-12-28', fdsc02='2', requestId='', fdsc05='5', fdsc04='4', sm='', eddw='1', form_biz_id=18000333, edyj='2', dzqsrq='1', schdedkzsxrq='0', fdsc10='10', detailid='14', fdsc12='12', fdsc11='11', fgrq='15', wscl='2', dataid='18', dqtqffts='2', xxz='0', modedatamodifydatetime='2024-01-04 16:51:17'},{modedatamodifier=1, edyxqsz=2.00, modedatacreatertype=0, jgsc1=10.00, jgsc0=5.00, yqhedzgxz='', edbgsedclfs='1', edyxq='0', ljcrglyfslwz='1', edktsc=10.00, mc=测试年假, MODEUUID=d1489670-ec11-49f5-8786-58a9ffc1167f, zyz='', id='18', jywxcl='', mainid='18', edkyqcs='', edfffs='0', jjrbhzedn='', modedatacreater='1', ffsj='', jb='112', edbxdcxw='', modedatacreatetime='15:52:56', schdedablzs='1', dczskxsc='', yjzd='', formmodeid='201', rzdqedablzs='1', fdsc01='1', ffdtffsj='00:00', yqsc='', fdsc07='7', fdsc06='6', szjg='2', fdsc09='9', fdsc08='8', qsrq='2021-05-11', fdsc03='3', modedatacreatedate='2023-12-28', fdsc02='2', requestId='', fdsc05='5', fdsc04='4', sm='', eddw='1', form_biz_id=18000333, edyj='2', dzqsrq='1', schdedkzsxrq='0', fdsc10='10', detailid='15', fdsc12='12', fdsc11='11', fgrq='15', wscl='2', dataid='18', dqtqffts='15', xxz='0', modedatamodifydatetime='2024-01-04 16:51:17'}]";
|
||||
Gson gson = new Gson();
|
||||
List<Map<String,String>> vocationList = Lists.newArrayList();
|
||||
vocationList = gson.fromJson(json, (Type) vocationList.getClass());
|
||||
System.out.println(vocationList);
|
||||
// List<Map<String,Object>> vocationList = Lists.newArrayList();
|
||||
// vocationList.add(new HashMap(){{
|
||||
// put("edsc","9.50");
|
||||
// put("bdlx","0");
|
||||
// put("jsdk","1");
|
||||
// put("tqdkfzs","720");
|
||||
// put("sfkt","1");
|
||||
// put("dtjssj","12:00");
|
||||
// put("zddxfz","30");
|
||||
// put("bcxx","25");
|
||||
// put("dxhs","5");
|
||||
// put("bcsdxx","09:00-13:00|13:00-18:30");
|
||||
// put("sfdx","0");
|
||||
// put("dtkssj","09:00");
|
||||
// put("thdkfzs","720");
|
||||
// put("ksdk","0");
|
||||
// put("rqlx","11");
|
||||
// }});
|
||||
|
||||
param.put("vocationList",vocationList);
|
||||
new SinglePaymentInFullWay().compute(param);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue