yuanzhi_kuang il y a 6 mois
Parent
commit
2c85197af3
23 fichiers modifiés avec 665 ajouts et 196 suppressions
  1. 8 3
      metadata/com/kingdee/eas/custom/wamke/syncdata/CompensationItemMapping.bizunit
  2. 14 14
      metadata/com/kingdee/eas/custom/wamke/syncdata/app/CT_SYN_CompensationItemMapping.table
  3. 25 25
      metadata/com/kingdee/eas/custom/wamke/syncdata/app/CompensationItemMapping.entity
  4. 11 11
      metadata/com/kingdee/eas/custom/wamke/syncdata/app/CompensationItemMappingQuery.query
  5. 36 36
      metadata/com/kingdee/eas/custom/wamke/syncdata/client/CompensationItemMappingEditUI.ui
  6. 2 2
      metadata/com/kingdee/eas/custom/wamke/syncdata/client/CompensationItemMappingListUI.ui
  7. 4 4
      metadata/entity_pkmapping.properties
  8. 3 3
      metadata/facade_pkmapping.properties
  9. 5 5
      src/com/kingdee/eas/custom/wamke/syncdata/AbstractCompensationItemMappingInfo.java
  10. 13 22
      src/com/kingdee/eas/custom/wamke/syncdata/SynRmAttFinalizationDataFacadeControllerBean.java
  11. 25 25
      src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingEditUI.java
  12. 1 1
      src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingEditUI.properties
  13. 1 1
      src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingEditUI_l1.properties
  14. 1 1
      src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingEditUI_l2.properties
  15. 1 1
      src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingEditUI_l3.properties
  16. 0 0
      src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingListUI.java
  17. 0 1
      src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingListUI.properties
  18. 0 1
      src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingListUI_l2.properties
  19. 0 1
      src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingListUI_l3.properties
  20. 99 37
      src/com/kingdee/eas/custom/wamke/syncdata/utils/AttSalaryCalculator.java
  21. 175 0
      src/com/kingdee/eas/custom/wamke/syncdata/utils/SHRAttendanceSync.java
  22. 239 0
      src/com/kingdee/eas/custom/wamke/syncdata/utils/SalaryItemCalculatorUtils.java
  23. 2 2
      websrc/com/kingdee/shr/compensation/web/handler/CmpCalDynamicListHandlerEx.java

+ 8 - 3
metadata/com/kingdee/eas/custom/wamke/syncdata/CompensationItemMapping.bizunit

@@ -75,6 +75,11 @@
             <lang locale="zh_CN" value="com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI" />
             <lang locale="zh_TW" value="com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI" />
         </rs>
+        <rs key="bizUnit[com.kingdee.eas.custom.wamke.syncdata.CompensationItemMapping].extendedProperty.enableFieldPermission">
+            <lang locale="en_US" value="false" />
+            <lang locale="zh_CN" value="false" />
+            <lang locale="zh_TW" value="false" />
+        </rs>
         <rs key="bizUnit[com.kingdee.eas.custom.wamke.syncdata.CompensationItemMapping].extendedProperty.isAsstAcctType">
             <lang locale="en_US" value="false" />
             <lang locale="zh_CN" value="false" />
@@ -96,9 +101,9 @@
             <lang locale="zh_TW" value="com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingListUI" />
         </rs>
         <rs key="bizUnit[com.kingdee.eas.custom.wamke.syncdata.CompensationItemMapping].extendedProperty.maxFieldIndex">
-            <lang locale="en_US" value="2" />
-            <lang locale="zh_CN" value="2" />
-            <lang locale="zh_TW" value="2" />
+            <lang locale="en_US" value="3" />
+            <lang locale="zh_CN" value="3" />
+            <lang locale="zh_TW" value="3" />
         </rs>
         <rs key="bizUnit[com.kingdee.eas.custom.wamke.syncdata.CompensationItemMapping].extendedProperty.userDefined">
             <lang locale="en_US" value="true" />

+ 14 - 14
metadata/com/kingdee/eas/custom/wamke/syncdata/app/CT_SYN_CompensationItemMapping.table

@@ -71,7 +71,7 @@
             <isMultilingual>false</isMultilingual>
             <isEncoded>false</isEncoded>
             <isNullable>false</isNullable>
-            <defaultValue />
+            <defaultValue>''</defaultValue>
             <sqlType>VARCHAR</sqlType>
             <length>44</length>
             <scale>0</scale>
@@ -141,23 +141,23 @@
             <isMultilingual>false</isMultilingual>
             <isEncoded>false</isEncoded>
             <isNullable>true</isNullable>
-            <defaultValue>11111111-1111-1111-1111-111111111111CCE7AED4</defaultValue>
+            <defaultValue>'11111111-1111-1111-1111-111111111111CCE7AED4'</defaultValue>
             <sqlType>VARCHAR</sqlType>
             <length>44</length>
             <scale>0</scale>
             <precision>0</precision>
         </column>
         <column>
-            <name>CFComNum</name>
-            <alias>dataTable[com.kingdee.eas.custom.wamke.syncdata.app.CT_SYN_CompensationItemMapping].columns.column[CFComNum].alias</alias>
-            <description>dataTable[com.kingdee.eas.custom.wamke.syncdata.app.CT_SYN_CompensationItemMapping].columns.column[CFComNum].description</description>
+            <name>CFAttNum</name>
+            <alias>dataTable[com.kingdee.eas.custom.wamke.syncdata.app.CT_SYN_CompensationItemMapping].columns.column[CFAttNum].alias</alias>
+            <description>dataTable[com.kingdee.eas.custom.wamke.syncdata.app.CT_SYN_CompensationItemMapping].columns.column[CFAttNum].description</description>
             <userDefined>true</userDefined>
             <isMultilingual>false</isMultilingual>
             <isEncoded>false</isEncoded>
             <isNullable>true</isNullable>
             <defaultValue />
             <sqlType>NVARCHAR</sqlType>
-            <length>20</length>
+            <length>120</length>
             <scale>0</scale>
             <precision>0</precision>
         </column>
@@ -241,17 +241,17 @@
             <lang locale="zh_HK" value="考勤定案與薪酬項目映射" />
             <lang locale="zh_TW" value="考勤定案與薪酬項目映射" />
         </rs>
-        <rs key="dataTable[com.kingdee.eas.custom.wamke.syncdata.app.CT_SYN_CompensationItemMapping].columns.column[CFComNum].alias">
+        <rs key="dataTable[com.kingdee.eas.custom.wamke.syncdata.app.CT_SYN_CompensationItemMapping].columns.column[CFAttNum].alias">
             <lang locale="en_US" value="null" />
-            <lang locale="zh_CN" value="薪酬项目编码" />
-            <lang locale="zh_HK" value="薪酬項目編碼" />
-            <lang locale="zh_TW" value="薪酬項目編碼" />
+            <lang locale="zh_CN" value="考勤项编码" />
+            <lang locale="zh_HK" value="考勤項編碼" />
+            <lang locale="zh_TW" value="考勤項編碼" />
         </rs>
-        <rs key="dataTable[com.kingdee.eas.custom.wamke.syncdata.app.CT_SYN_CompensationItemMapping].columns.column[CFComNum].description">
+        <rs key="dataTable[com.kingdee.eas.custom.wamke.syncdata.app.CT_SYN_CompensationItemMapping].columns.column[CFAttNum].description">
             <lang locale="en_US" value="null" />
-            <lang locale="zh_CN" value="薪酬项目编码" />
-            <lang locale="zh_HK" value="薪酬項目編碼" />
-            <lang locale="zh_TW" value="薪酬項目編碼" />
+            <lang locale="zh_CN" value="考勤项编码" />
+            <lang locale="zh_HK" value="考勤項編碼" />
+            <lang locale="zh_TW" value="考勤項編碼" />
         </rs>
         <rs key="dataTable[com.kingdee.eas.custom.wamke.syncdata.app.CT_SYN_CompensationItemMapping].columns.column[FControlUnitID].alias">
             <lang locale="en_US" value="null" />

+ 25 - 25
metadata/com/kingdee/eas/custom/wamke/syncdata/app/CompensationItemMapping.entity

@@ -179,9 +179,9 @@
     </table>
     <properties>
         <ownProperty>
-            <name>comNum</name>
-            <alias>entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].alias</alias>
-            <description>entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].description</description>
+            <name>attNum</name>
+            <alias>entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].alias</alias>
+            <description>entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].description</description>
             <userDefined>true</userDefined>
             <configured>false</configured>
             <dataType>String</dataType>
@@ -189,13 +189,13 @@
             <isMultilingual>false</isMultilingual>
             <isNullable>false</isNullable>
             <formula />
-            <length>20</length>
+            <length>120</length>
             <precision>0</precision>
             <decimalDigits>0</decimalDigits>
-            <defaultValue>entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].defaultValue</defaultValue>
+            <defaultValue>entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].defaultValue</defaultValue>
             <displayFormat />
             <mappingField>
-                <key name="name" value="CFComNum" />
+                <key name="name" value="CFAttNum" />
             </mappingField>
         </ownProperty>
     </properties>
@@ -370,70 +370,70 @@
             <lang locale="zh_HK" value="null" />
             <lang locale="zh_TW" value="null" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].alias">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].alias">
             <lang locale="en_US" value="null" />
-            <lang locale="zh_CN" value="薪酬项目编码" />
-            <lang locale="zh_HK" value="薪酬項目編碼" />
-            <lang locale="zh_TW" value="薪酬項目編碼" />
+            <lang locale="zh_CN" value="考勤项编码" />
+            <lang locale="zh_HK" value="考勤項編碼" />
+            <lang locale="zh_TW" value="考勤項編碼" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].defaultValue">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].defaultValue">
             <lang locale="en_US" value="null" />
             <lang locale="zh_CN" value="null" />
             <lang locale="zh_HK" value="null" />
             <lang locale="zh_TW" value="null" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].description">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].description">
             <lang locale="en_US" value="null" />
-            <lang locale="zh_CN" value="薪酬项目编码" />
-            <lang locale="zh_HK" value="薪酬項目編碼" />
-            <lang locale="zh_TW" value="薪酬項目編碼" />
+            <lang locale="zh_CN" value="考勤项编码" />
+            <lang locale="zh_HK" value="考勤項編碼" />
+            <lang locale="zh_TW" value="考勤項編碼" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].extendedProperty.ColWidthInKDTable">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].extendedProperty.ColWidthInKDTable">
             <lang locale="en_US" value="50" />
             <lang locale="zh_CN" value="50" />
             <lang locale="zh_TW" value="50" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].extendedProperty.bizDataType">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].extendedProperty.bizDataType">
             <lang locale="en_US" value="STRING" />
             <lang locale="zh_CN" value="STRING" />
             <lang locale="zh_TW" value="STRING" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].extendedProperty.enableFieldPermission">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].extendedProperty.enableFieldPermission">
             <lang locale="en_US" value="false" />
             <lang locale="zh_CN" value="false" />
             <lang locale="zh_TW" value="false" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].extendedProperty.isAsstAcctType">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].extendedProperty.isAsstAcctType">
             <lang locale="en_US" value="false" />
             <lang locale="zh_CN" value="false" />
             <lang locale="zh_TW" value="false" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].extendedProperty.isForGrouping">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].extendedProperty.isForGrouping">
             <lang locale="en_US" value="false" />
             <lang locale="zh_CN" value="false" />
             <lang locale="zh_TW" value="false" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].extendedProperty.isForMapping">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].extendedProperty.isForMapping">
             <lang locale="en_US" value="false" />
             <lang locale="zh_CN" value="false" />
             <lang locale="zh_TW" value="false" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].extendedProperty.isForMatching">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].extendedProperty.isForMatching">
             <lang locale="en_US" value="false" />
             <lang locale="zh_CN" value="false" />
             <lang locale="zh_TW" value="false" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].extendedProperty.isForWrittenBack">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].extendedProperty.isForWrittenBack">
             <lang locale="en_US" value="false" />
             <lang locale="zh_CN" value="false" />
             <lang locale="zh_TW" value="false" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].extendedProperty.isInCode">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].extendedProperty.isInCode">
             <lang locale="en_US" value="false" />
             <lang locale="zh_CN" value="false" />
             <lang locale="zh_TW" value="false" />
         </rs>
-        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[comNum].extendedProperty.isVisibleForKDTable">
+        <rs key="entityObject[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping].properties.ownProperty[attNum].extendedProperty.isVisibleForKDTable">
             <lang locale="en_US" value="true" />
             <lang locale="zh_CN" value="true" />
             <lang locale="zh_TW" value="true" />

+ 11 - 11
metadata/com/kingdee/eas/custom/wamke/syncdata/app/CompensationItemMappingQuery.query

@@ -516,11 +516,11 @@
             </query>
         </queryField>
         <queryField>
-            <name>comNum</name>
+            <name>attNum</name>
             <userDefined>true</userDefined>
             <formulaString>#0</formulaString>
             <constString />
-            <displayName>joinQuery[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMappingQuery].units.queryField[comNum].displayName</displayName>
+            <displayName>joinQuery[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMappingQuery].units.queryField[attNum].displayName</displayName>
             <groupType />
             <isSelector>true</isSelector>
             <isFilter>true</isFilter>
@@ -529,15 +529,15 @@
             <returnType>String</returnType>
             <propertyRefs>
                 <propertyRef>
-                    <key>9eb9b50b-2605-4e32-b909-5010dbd7e7e4</key>
+                    <key>28eca8df-dfe9-40a1-a413-5af3e51f2d8f</key>
                     <parentUnit>
-                        <key name="name" value="comNum" />
+                        <key name="name" value="attNum" />
                     </parentUnit>
                     <subEntity>
                         <key name="name" value="CompensationItemMapping" />
                     </subEntity>
                     <refProperty>
-                        <key name="name" value="comNum" />
+                        <key name="name" value="attNum" />
                     </refProperty>
                 </propertyRef>
             </propertyRefs>
@@ -767,18 +767,18 @@
             <lang locale="zh_HK" value="null" />
             <lang locale="zh_TW" value="null" />
         </rs>
-        <rs key="joinQuery[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMappingQuery].units.queryField[comNum].displayName">
+        <rs key="joinQuery[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMappingQuery].units.queryField[attNum].displayName">
             <lang locale="en_US" value="null" />
-            <lang locale="zh_CN" value="薪酬项目编码" />
-            <lang locale="zh_HK" value="薪酬項目編碼" />
-            <lang locale="zh_TW" value="薪酬項目編碼" />
+            <lang locale="zh_CN" value="考勤项编码" />
+            <lang locale="zh_HK" value="考勤項編碼" />
+            <lang locale="zh_TW" value="考勤項編碼" />
         </rs>
-        <rs key="joinQuery[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMappingQuery].units.queryField[comNum].extendedProperty.isCommonQueryFilter">
+        <rs key="joinQuery[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMappingQuery].units.queryField[attNum].extendedProperty.isCommonQueryFilter">
             <lang locale="en_US" value="true" />
             <lang locale="zh_CN" value="true" />
             <lang locale="zh_TW" value="true" />
         </rs>
-        <rs key="joinQuery[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMappingQuery].units.queryField[comNum].extendedProperty.isCommonQuerySorter">
+        <rs key="joinQuery[com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMappingQuery].units.queryField[attNum].extendedProperty.isCommonQuerySorter">
             <lang locale="en_US" value="true" />
             <lang locale="zh_CN" value="true" />
             <lang locale="zh_TW" value="true" />

+ 36 - 36
metadata/com/kingdee/eas/custom/wamke/syncdata/client/CompensationItemMappingEditUI.ui

@@ -214,12 +214,12 @@
             </parent>
         </component>
         <component>
-            <name>contcomNum</name>
-            <alias>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contcomNum].alias</alias>
+            <name>contattNum</name>
+            <alias>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contattNum].alias</alias>
             <userDefined>true</userDefined>
             <classType>com.kingdee.bos.ctrl.swing.KDLabelContainer</classType>
             <isContainer>true</isContainer>
-            <constraints>101,84,270,19</constraints>
+            <constraints>101,90,270,19</constraints>
             <tabIndex>0</tabIndex>
             <herited>false</herited>
             <bimUIObjectPK />
@@ -232,28 +232,28 @@
                 <property>
                     <name>boundLabelText</name>
                     <type>java.lang.String</type>
-                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contcomNum].properties.property[boundLabelText].value</value>
+                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contattNum].properties.property[boundLabelText].value</value>
                     <isMultiLan>true</isMultiLan>
                     <userDefined>true</userDefined>
                 </property>
                 <property>
                     <name>boundLabelLength</name>
                     <type>int</type>
-                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contcomNum].properties.property[boundLabelLength].value</value>
+                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contattNum].properties.property[boundLabelLength].value</value>
                     <isMultiLan>false</isMultiLan>
                     <userDefined>true</userDefined>
                 </property>
                 <property>
                     <name>boundLabelUnderline</name>
                     <type>boolean</type>
-                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contcomNum].properties.property[boundLabelUnderline].value</value>
+                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contattNum].properties.property[boundLabelUnderline].value</value>
                     <isMultiLan>false</isMultiLan>
                     <userDefined>true</userDefined>
                 </property>
                 <property>
                     <name>visible</name>
                     <type>boolean</type>
-                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contcomNum].properties.property[visible].value</value>
+                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contattNum].properties.property[visible].value</value>
                     <isMultiLan>false</isMultiLan>
                     <userDefined>true</userDefined>
                 </property>
@@ -409,54 +409,54 @@
             </propertyBindings>
         </component>
         <component>
-            <name>txtcomNum</name>
-            <alias>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtcomNum].alias</alias>
+            <name>txtattNum</name>
+            <alias>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtattNum].alias</alias>
             <userDefined>true</userDefined>
             <classType>com.kingdee.bos.ctrl.swing.KDTextField</classType>
             <isContainer>false</isContainer>
             <constraints>3</constraints>
-            <tabIndex>11</tabIndex>
+            <tabIndex>12</tabIndex>
             <herited>false</herited>
             <bimUIObjectPK />
             <properties>
                 <property>
                     <name>visible</name>
                     <type>boolean</type>
-                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtcomNum].properties.property[visible].value</value>
+                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtattNum].properties.property[visible].value</value>
                     <isMultiLan>false</isMultiLan>
                     <userDefined>true</userDefined>
                 </property>
                 <property>
                     <name>horizontalAlignment</name>
                     <type>int</type>
-                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtcomNum].properties.property[horizontalAlignment].value</value>
+                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtattNum].properties.property[horizontalAlignment].value</value>
                     <isMultiLan>false</isMultiLan>
                     <userDefined>true</userDefined>
                 </property>
                 <property>
                     <name>maxLength</name>
                     <type>int</type>
-                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtcomNum].properties.property[maxLength].value</value>
+                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtattNum].properties.property[maxLength].value</value>
                     <isMultiLan>false</isMultiLan>
                     <userDefined>true</userDefined>
                 </property>
                 <property>
                     <name>required</name>
                     <type>boolean</type>
-                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtcomNum].properties.property[required].value</value>
+                    <value>uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtattNum].properties.property[required].value</value>
                     <isMultiLan>false</isMultiLan>
                     <userDefined>true</userDefined>
                 </property>
             </properties>
             <parent>
-                <key name="name" value="contcomNum" />
+                <key name="name" value="contattNum" />
             </parent>
             <propertyBindings>
                 <propertyBinding>
                     <propertyName>text</propertyName>
                     <propertyType>java.lang.String</propertyType>
                     <bindingObject>editData</bindingObject>
-                    <bindingField>comNum</bindingField>
+                    <bindingField>attNum</bindingField>
                     <fieldType>String</fieldType>
                     <accessType>2</accessType>
                     <autoMode>false</autoMode>
@@ -711,31 +711,31 @@
             <lang locale="zh_HK" value="false" />
             <lang locale="zh_TW" value="false" />
         </rs>
-        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contcomNum].alias">
+        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contattNum].alias">
             <lang locale="en_US" value="null" />
             <lang locale="zh_CN" value="null" />
             <lang locale="zh_HK" value="null" />
             <lang locale="zh_TW" value="null" />
         </rs>
-        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contcomNum].properties.property[boundLabelLength].value">
+        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contattNum].properties.property[boundLabelLength].value">
             <lang locale="en_US" value="100" />
             <lang locale="zh_CN" value="100" />
             <lang locale="zh_HK" value="100" />
             <lang locale="zh_TW" value="100" />
         </rs>
-        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contcomNum].properties.property[boundLabelText].value">
+        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contattNum].properties.property[boundLabelText].value">
             <lang locale="en_US" value="null" />
-            <lang locale="zh_CN" value="薪酬项目编码" />
-            <lang locale="zh_HK" value="薪酬項目編碼" />
-            <lang locale="zh_TW" value="薪酬項目編碼" />
+            <lang locale="zh_CN" value="考勤项编码" />
+            <lang locale="zh_HK" value="考勤項編碼" />
+            <lang locale="zh_TW" value="考勤項編碼" />
         </rs>
-        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contcomNum].properties.property[boundLabelUnderline].value">
+        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contattNum].properties.property[boundLabelUnderline].value">
             <lang locale="en_US" value="true" />
             <lang locale="zh_CN" value="true" />
             <lang locale="zh_HK" value="true" />
             <lang locale="zh_TW" value="true" />
         </rs>
-        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contcomNum].properties.property[visible].value">
+        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[contattNum].properties.property[visible].value">
             <lang locale="en_US" value="true" />
             <lang locale="zh_CN" value="true" />
             <lang locale="zh_HK" value="true" />
@@ -909,31 +909,31 @@
             <lang locale="zh_HK" value="80" />
             <lang locale="zh_TW" value="80" />
         </rs>
-        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtcomNum].alias">
+        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtattNum].alias">
             <lang locale="en_US" value="null" />
-            <lang locale="zh_CN" value="薪酬项目编码" />
-            <lang locale="zh_HK" value="薪酬項目編碼" />
-            <lang locale="zh_TW" value="薪酬項目編碼" />
+            <lang locale="zh_CN" value="考勤项编码" />
+            <lang locale="zh_HK" value="考勤項編碼" />
+            <lang locale="zh_TW" value="考勤項編碼" />
         </rs>
-        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtcomNum].properties.property[horizontalAlignment].value">
+        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtattNum].properties.property[horizontalAlignment].value">
             <lang locale="en_US" value="2" />
             <lang locale="zh_CN" value="2" />
             <lang locale="zh_HK" value="2" />
             <lang locale="zh_TW" value="2" />
         </rs>
-        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtcomNum].properties.property[maxLength].value">
-            <lang locale="en_US" value="20" />
-            <lang locale="zh_CN" value="20" />
-            <lang locale="zh_HK" value="20" />
-            <lang locale="zh_TW" value="20" />
+        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtattNum].properties.property[maxLength].value">
+            <lang locale="en_US" value="120" />
+            <lang locale="zh_CN" value="120" />
+            <lang locale="zh_HK" value="120" />
+            <lang locale="zh_TW" value="120" />
         </rs>
-        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtcomNum].properties.property[required].value">
+        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtattNum].properties.property[required].value">
             <lang locale="en_US" value="false" />
             <lang locale="zh_CN" value="false" />
             <lang locale="zh_HK" value="false" />
             <lang locale="zh_TW" value="false" />
         </rs>
-        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtcomNum].properties.property[visible].value">
+        <rs key="uiObject[com.kingdee.eas.custom.wamke.syncdata.client.CompensationItemMappingEditUI].components.component[txtattNum].properties.property[visible].value">
             <lang locale="en_US" value="true" />
             <lang locale="zh_CN" value="true" />
             <lang locale="zh_HK" value="true" />

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 2
metadata/com/kingdee/eas/custom/wamke/syncdata/client/CompensationItemMappingListUI.ui


+ 4 - 4
metadata/entity_pkmapping.properties

@@ -1,7 +1,7 @@
 #
-#Fri Oct 10 18:20:13 CST 2025
-96A52CB4=com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping
-AA574AB3=com.kingdee.eas.custom.wamke.syncdata.app.SyncRmPersonSalaryRecord
-1A406BE8=com.kingdee.eas.custom.wamke.syncdata.app.ButterflyPrincipal
+#Thu Oct 16 16:02:15 CST 2025
 50A9BB4A=com.kingdee.eas.custom.wamke.syncdata.app.MobileEntryBill
+1A406BE8=com.kingdee.eas.custom.wamke.syncdata.app.ButterflyPrincipal
+AA574AB3=com.kingdee.eas.custom.wamke.syncdata.app.SyncRmPersonSalaryRecord
+96A52CB4=com.kingdee.eas.custom.wamke.syncdata.app.CompensationItemMapping
 41C9F5A2=com.kingdee.eas.custom.wamke.syncdata.app.AttFinalization

+ 3 - 3
metadata/facade_pkmapping.properties

@@ -1,9 +1,9 @@
 #
-#Fri Oct 10 18:20:13 CST 2025
+#Thu Oct 16 16:02:15 CST 2025
 428D4CAE=com.kingdee.eas.custom.wamke.SyncRmPersonSalary2Facade
 0143D5CC=com.kingdee.eas.custom.wamke.syncdata.SynRmAttFinalization
-13193CB0=com.kingdee.eas.custom.wamke.syncdata.Copy_SynRmAttFinalizationFacade
 305E65DE=com.kingdee.eas.custom.wamke.SyncEhrOrganization
+13193CB0=com.kingdee.eas.custom.wamke.syncdata.Copy_SynRmAttFinalizationFacade
 242987D0=com.kingdee.eas.custom.wamke.syncdata.SynRmAttFinalizationDataFacade
-8A3C2BCF=com.kingdee.eas.custom.wamke.syncdata.SyncRmPersonSalaryFacade
 23F1DBAC=com.kingdee.eas.custom.wamke.SyncEhrBlackListFacade
+8A3C2BCF=com.kingdee.eas.custom.wamke.syncdata.SyncRmPersonSalaryFacade

+ 5 - 5
src/com/kingdee/eas/custom/wamke/syncdata/AbstractCompensationItemMappingInfo.java

@@ -18,15 +18,15 @@ public class AbstractCompensationItemMappingInfo extends com.kingdee.eas.framewo
         super(pkField);
     }
     /**
-     * Object:¿¼ÇÚ¶¨°¸Óëн³êÏîĿӳÉä's н³êÏîÄ¿±àÂëproperty 
+     * Object:¿¼ÇÚ¶¨°¸Óëн³êÏîĿӳÉä's ¿¼ÇÚÏî±àÂëproperty 
      */
-    public String getComNum()
+    public String getAttNum()
     {
-        return getString("comNum");
+        return getString("attNum");
     }
-    public void setComNum(String item)
+    public void setAttNum(String item)
     {
-        setString("comNum", item);
+        setString("attNum", item);
     }
     public BOSObjectType getBOSType()
     {

+ 13 - 22
src/com/kingdee/eas/custom/wamke/syncdata/SynRmAttFinalizationDataFacadeControllerBean.java

@@ -2,30 +2,18 @@ package com.kingdee.eas.custom.wamke.syncdata;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
-import javax.ejb.*;
-import java.rmi.RemoteException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
-
 import com.kingdee.bos.*;
-import com.kingdee.bos.util.BOSObjectType;
-import com.kingdee.bos.metadata.IMetaDataPK;
-import com.kingdee.bos.metadata.rule.RuleExecutor;
-import com.kingdee.bos.metadata.MetaDataPK;
-//import com.kingdee.bos.metadata.entity.EntityViewInfo;
-import com.kingdee.bos.framework.ejb.AbstractEntityControllerBean;
-import com.kingdee.bos.framework.ejb.AbstractBizControllerBean;
-//import com.kingdee.bos.dao.IObjectPK;
-import com.kingdee.bos.dao.IObjectValue;
-import com.kingdee.bos.dao.IObjectCollection;
-import com.kingdee.bos.service.ServiceContext;
-import com.kingdee.bos.service.IServiceContext;
-
 import java.lang.String;
+import java.util.List;
+
 import com.kingdee.eas.common.EASBizException;
 import com.kingdee.eas.custom.wamke.syncdata.utils.AttSalaryCalculator;
-import com.kingdee.eas.custom.wamke.syncdata.utils.SHRAttendanceSyncExample;
+import com.kingdee.eas.custom.wamke.syncdata.utils.SHRAttendanceSync;
 
 public class SynRmAttFinalizationDataFacadeControllerBean extends AbstractSynRmAttFinalizationDataFacadeControllerBean
 {
@@ -53,15 +41,18 @@ public class SynRmAttFinalizationDataFacadeControllerBean extends AbstractSynRmA
 				logger.error("ÈÕÆÚ¸ñʽ»¯Òì³£", e);
 			}
 		}
-    	
-      	SHRAttendanceSyncExample attendanceSyncExample = new SHRAttendanceSyncExample();
-    	attendanceSyncExample.manualPaginationExample(ctx, updateTime,null );
+    	List orgNumList = new ArrayList();
+    	if(StringUtils.isNotEmpty(orgNum)){
+    		String[] split = orgNum.split(",");
+			orgNumList.addAll(Arrays.asList(split));
+    	}
+      	SHRAttendanceSync  attendanceSync = new SHRAttendanceSync ();
+    	attendanceSync.manualPagination(ctx, updateTime, orgNumList) ;
     	//¼ÆËã
     	if(calSalary){
     	   	AttSalaryCalculator attSalaryCalculator = new AttSalaryCalculator();
-        	attSalaryCalculator.calculateSalaryItems(ctx,null);
+        	attSalaryCalculator.scheduledTask(ctx);
     	}
- 
     }
     
     

+ 25 - 25
src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingEditUI.java

@@ -50,12 +50,12 @@ public abstract class AbstractCompensationItemMappingEditUI extends com.kingdee.
     protected com.kingdee.bos.ctrl.swing.KDLabelContainer kDLabelContainer2;
     protected com.kingdee.bos.ctrl.swing.KDLabelContainer kDLabelContainer3;
     protected com.kingdee.bos.ctrl.swing.KDLabelContainer kDLabelContainer4;
-    protected com.kingdee.bos.ctrl.swing.KDLabelContainer contcomNum;
+    protected com.kingdee.bos.ctrl.swing.KDLabelContainer contattNum;
     protected com.kingdee.bos.ctrl.swing.KDTextField txtNumber;
     protected com.kingdee.bos.ctrl.extendcontrols.KDBizMultiLangBox txtName;
     protected com.kingdee.bos.ctrl.swing.KDTextField txtSimpleName;
     protected com.kingdee.bos.ctrl.extendcontrols.KDBizMultiLangBox txtDescription;
-    protected com.kingdee.bos.ctrl.swing.KDTextField txtcomNum;
+    protected com.kingdee.bos.ctrl.swing.KDTextField txtattNum;
     protected com.kingdee.eas.custom.wamke.syncdata.CompensationItemMappingInfo editData = null;
     /**
      * output class constructor
@@ -80,22 +80,22 @@ public abstract class AbstractCompensationItemMappingEditUI extends com.kingdee.
         this.kDLabelContainer2 = new com.kingdee.bos.ctrl.swing.KDLabelContainer();
         this.kDLabelContainer3 = new com.kingdee.bos.ctrl.swing.KDLabelContainer();
         this.kDLabelContainer4 = new com.kingdee.bos.ctrl.swing.KDLabelContainer();
-        this.contcomNum = new com.kingdee.bos.ctrl.swing.KDLabelContainer();
+        this.contattNum = new com.kingdee.bos.ctrl.swing.KDLabelContainer();
         this.txtNumber = new com.kingdee.bos.ctrl.swing.KDTextField();
         this.txtName = new com.kingdee.bos.ctrl.extendcontrols.KDBizMultiLangBox();
         this.txtSimpleName = new com.kingdee.bos.ctrl.swing.KDTextField();
         this.txtDescription = new com.kingdee.bos.ctrl.extendcontrols.KDBizMultiLangBox();
-        this.txtcomNum = new com.kingdee.bos.ctrl.swing.KDTextField();
+        this.txtattNum = new com.kingdee.bos.ctrl.swing.KDTextField();
         this.kDLabelContainer1.setName("kDLabelContainer1");
         this.kDLabelContainer2.setName("kDLabelContainer2");
         this.kDLabelContainer3.setName("kDLabelContainer3");
         this.kDLabelContainer4.setName("kDLabelContainer4");
-        this.contcomNum.setName("contcomNum");
+        this.contattNum.setName("contattNum");
         this.txtNumber.setName("txtNumber");
         this.txtName.setName("txtName");
         this.txtSimpleName.setName("txtSimpleName");
         this.txtDescription.setName("txtDescription");
-        this.txtcomNum.setName("txtcomNum");
+        this.txtattNum.setName("txtattNum");
         // CoreUI		
         this.btnPrint.setVisible(false);		
         this.btnPrintPreview.setVisible(false);		
@@ -119,23 +119,23 @@ public abstract class AbstractCompensationItemMappingEditUI extends com.kingdee.
         this.kDLabelContainer4.setBoundLabelUnderline(true);		
         this.kDLabelContainer4.setBoundLabelAlignment(7);		
         this.kDLabelContainer4.setVisible(true);
-        // contcomNum		
-        this.contcomNum.setBoundLabelText(resHelper.getString("contcomNum.boundLabelText"));		
-        this.contcomNum.setBoundLabelLength(100);		
-        this.contcomNum.setBoundLabelUnderline(true);		
-        this.contcomNum.setVisible(true);
+        // contattNum		
+        this.contattNum.setBoundLabelText(resHelper.getString("contattNum.boundLabelText"));		
+        this.contattNum.setBoundLabelLength(100);		
+        this.contattNum.setBoundLabelUnderline(true);		
+        this.contattNum.setVisible(true);
         // txtNumber		
         this.txtNumber.setMaxLength(80);
         // txtName
         // txtSimpleName		
         this.txtSimpleName.setMaxLength(80);
         // txtDescription
-        // txtcomNum		
-        this.txtcomNum.setVisible(true);		
-        this.txtcomNum.setHorizontalAlignment(2);		
-        this.txtcomNum.setMaxLength(20);		
-        this.txtcomNum.setRequired(false);
-        this.setFocusTraversalPolicy(new com.kingdee.bos.ui.UIFocusTraversalPolicy(new java.awt.Component[] {txtcomNum}));
+        // txtattNum		
+        this.txtattNum.setVisible(true);		
+        this.txtattNum.setHorizontalAlignment(2);		
+        this.txtattNum.setMaxLength(120);		
+        this.txtattNum.setRequired(false);
+        this.setFocusTraversalPolicy(new com.kingdee.bos.ui.UIFocusTraversalPolicy(new java.awt.Component[] {txtattNum}));
         this.setFocusCycleRoot(true);
 		//Register control's property binding
 		registerBindings();
@@ -171,8 +171,8 @@ public abstract class AbstractCompensationItemMappingEditUI extends com.kingdee.
         this.add(kDLabelContainer3, null);
         kDLabelContainer4.setBounds(new Rectangle(99, 214, 270, 19));
         this.add(kDLabelContainer4, null);
-        contcomNum.setBounds(new Rectangle(101, 84, 270, 19));
-        this.add(contcomNum, null);
+        contattNum.setBounds(new Rectangle(101, 90, 270, 19));
+        this.add(contattNum, null);
         //kDLabelContainer1
         kDLabelContainer1.setBoundEditor(txtNumber);
         //kDLabelContainer2
@@ -181,8 +181,8 @@ public abstract class AbstractCompensationItemMappingEditUI extends com.kingdee.
         kDLabelContainer3.setBoundEditor(txtSimpleName);
         //kDLabelContainer4
         kDLabelContainer4.setBoundEditor(txtDescription);
-        //contcomNum
-        contcomNum.setBoundEditor(txtcomNum);
+        //contattNum
+        contattNum.setBoundEditor(txtattNum);
 
     }
 
@@ -297,7 +297,7 @@ public abstract class AbstractCompensationItemMappingEditUI extends com.kingdee.
 		dataBinder.registerBinding("name", String.class, this.txtName, "_multiLangItem");
 		dataBinder.registerBinding("simpleName", String.class, this.txtSimpleName, "text");
 		dataBinder.registerBinding("description", String.class, this.txtDescription, "_multiLangItem");
-		dataBinder.registerBinding("comNum", String.class, this.txtcomNum, "text");		
+		dataBinder.registerBinding("attNum", String.class, this.txtattNum, "text");		
 	}
 	//Regiester UI State
 	private void registerUIState(){
@@ -341,7 +341,7 @@ public abstract class AbstractCompensationItemMappingEditUI extends com.kingdee.
     public void onShow() throws Exception
     {
         super.onShow();
-        this.txtcomNum.requestFocusInWindow();
+        this.txtattNum.requestFocusInWindow();
     }
 
 	
@@ -448,7 +448,7 @@ public abstract class AbstractCompensationItemMappingEditUI extends com.kingdee.
 		getValidateHelper().registerBindProperty("name", ValidateHelper.ON_SAVE);    
 		getValidateHelper().registerBindProperty("simpleName", ValidateHelper.ON_SAVE);    
 		getValidateHelper().registerBindProperty("description", ValidateHelper.ON_SAVE);    
-		getValidateHelper().registerBindProperty("comNum", ValidateHelper.ON_SAVE);    		
+		getValidateHelper().registerBindProperty("attNum", ValidateHelper.ON_SAVE);    		
 	}
 
 
@@ -491,7 +491,7 @@ public abstract class AbstractCompensationItemMappingEditUI extends com.kingdee.
         sic.add(new SelectorItemInfo("name"));
         sic.add(new SelectorItemInfo("simpleName"));
         sic.add(new SelectorItemInfo("description"));
-        sic.add(new SelectorItemInfo("comNum"));
+        sic.add(new SelectorItemInfo("attNum"));
         return sic;
     }        
 

+ 1 - 1
src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingEditUI.properties

@@ -3,4 +3,4 @@ kDLabelContainer1.boundLabelText=\u7F16\u7801\:
 kDLabelContainer2.boundLabelText=\u540D\u79F0\:
 kDLabelContainer3.boundLabelText=\u7B80\u79F0\:
 kDLabelContainer4.boundLabelText=\u63CF\u8FF0\:
-contcomNum.boundLabelText=\u85AA\u916C\u9879\u76EE\u7F16\u7801
+contattNum.boundLabelText=\u8003\u52E4\u9879\u7F16\u7801

+ 1 - 1
src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingEditUI_l1.properties

@@ -3,4 +3,4 @@ kDLabelContainer1.boundLabelText=
 kDLabelContainer2.boundLabelText=
 kDLabelContainer3.boundLabelText=
 kDLabelContainer4.boundLabelText=
-contcomNum.boundLabelText=
+contattNum.boundLabelText=

+ 1 - 1
src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingEditUI_l2.properties

@@ -3,4 +3,4 @@ kDLabelContainer1.boundLabelText=\u7F16\u7801\:
 kDLabelContainer2.boundLabelText=\u540D\u79F0\:
 kDLabelContainer3.boundLabelText=\u7B80\u79F0\:
 kDLabelContainer4.boundLabelText=\u63CF\u8FF0\:
-contcomNum.boundLabelText=\u85AA\u916C\u9879\u76EE\u7F16\u7801
+contattNum.boundLabelText=\u8003\u52E4\u9879\u7F16\u7801

+ 1 - 1
src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingEditUI_l3.properties

@@ -3,4 +3,4 @@ kDLabelContainer1.boundLabelText=\u7DE8\u78BC\:
 kDLabelContainer2.boundLabelText=\u540D\u7A31\:
 kDLabelContainer3.boundLabelText=\u7C21\u7A31\:
 kDLabelContainer4.boundLabelText=\u63CF\u8FF0\:
-contcomNum.boundLabelText=\u85AA\u916C\u9805\u76EE\u7DE8\u78BC
+contattNum.boundLabelText=\u8003\u52E4\u9805\u7DE8\u78BC

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingListUI.java


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingListUI.properties


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingListUI_l2.properties


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
src/com/kingdee/eas/custom/wamke/syncdata/client/AbstractCompensationItemMappingListUI_l3.properties


+ 99 - 37
src/com/kingdee/eas/custom/wamke/syncdata/utils/AttSalaryCalculator.java

@@ -1,10 +1,13 @@
 package com.kingdee.eas.custom.wamke.syncdata.utils;
 
+import java.math.BigDecimal;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
@@ -12,9 +15,19 @@ import com.kingdee.bos.BOSException;
 import com.kingdee.bos.Context;
 import com.kingdee.bos.metadata.bot.NumricRuleSegmentInfo;
 import com.kingdee.bos.openapi.third.exception.BizException;
+import com.kingdee.bos.util.backport.Arrays;
 import com.kingdee.eas.common.EASBizException;
+import com.kingdee.eas.util.ToolUtils;
 import com.kingdee.eas.util.app.DbUtil;
 import com.kingdee.jdbc.rowset.IRowSet;
+import com.kingdee.shr.compensation.CalSchemeCollection;
+import com.kingdee.shr.compensation.CalSchemeFactory;
+import com.kingdee.shr.compensation.CalSchemeInfo;
+import com.kingdee.shr.compensation.CalSchemeItemCollection;
+import com.kingdee.shr.compensation.CalSchemeItemFactory;
+import com.kingdee.shr.compensation.CalSchemeItemInfo;
+import com.kingdee.shr.compensation.ICalScheme;
+import com.kingdee.shr.compensation.ICalSchemeItem;
 import com.kingdee.util.NumericException;
 
 
@@ -26,16 +39,34 @@ public class AttSalaryCalculator {
     private static final Logger logger = Logger.getLogger(AttSalaryCalculator.class);
  
     
+    public void  scheduledTask(Context ctx) throws BOSException{
+    	ICalScheme calIns = CalSchemeFactory.getLocalInstance(ctx);
+    	CalSchemeCollection calSchemeCollection = calIns.getCalSchemeCollection(" where  state = 1 ") ;
+    	for(int i = 0; i< calSchemeCollection.size() ;i ++){
+    		CalSchemeInfo calSchemeInfo = calSchemeCollection.get(i);
+            calculateSalaryItems(ctx, null, calSchemeInfo.getId().toString());
+    	}
+    }
     
     /**
      * 使用单次查询和内存计算的高效方法
      * @throws BOSException 
      */
-    public int calculateSalaryItems (Context ctx,String filterSql) throws BOSException {
+    public int calculateSalaryItems (Context ctx,String filterSql,String calruleId ) throws BOSException {
         try {
+
+            Map<String, List<String>> cFeild_attNum = SalaryItemCalculatorUtils.getFeild_attMap(ctx, calruleId);
+            //获取cFeild_attNum中的value;
+            List<String>  attNumLists =  new ArrayList();
+            for(Map.Entry<String, List<String>> entry : cFeild_attNum.entrySet()){
+                attNumLists.addAll(entry.getValue());
+            }
+            if(attNumLists.size() == 0){
+                return 0 ;
+            }
             logger.info("开始高效计算工资项...");
             // 一次性查询所有需要的数据
-            StringBuilder sql = new StringBuilder(
+            StringBuilder dataSql = new StringBuilder(
                 "/*dialect*/ SELECT " +
                 "  calc.FPersonID, " +
                 "  calc.FPeriodYear, " +
@@ -47,22 +78,24 @@ public class AttSalaryCalculator {
                 " LEFT JOIN CT_SYN_AttFinalization att ON " +
                 "  att.CFPersonID = calc.FPersonID AND " +
                 "  att. CFAttendanceCycle = CONVERT(VARCHAR(6), calc.FPeriodYear * 100 + calc.FPeriodMonth) " +
-                "WHERE calc.fislockothersysdata = 0 " );
+                "WHERE calc.fislockothersysdata = 0  and att.CFSalaryCode IN ("+ ToolUtils.aryToStr(attNumLists,true)+")" );
             if(!StringUtils.isEmpty(filterSql)){
-            	sql.append( " AND calc.fid in ("+filterSql+") ");
-            	
+            	dataSql.append( " AND calc.fid in ("+filterSql+") ");
+            }
+            if(!StringUtils.isEmpty(calruleId)){
+                dataSql.append( " AND calc.FCalSchemeID = '"+calruleId+"' ");
             }
             
-            sql.append( "  GROUP BY calc.FPersonID, calc.FPeriodYear, calc.FPeriodMonth, att.CFSalaryCode " +
+            dataSql.append( "  GROUP BY calc.FPersonID, calc.FPeriodYear, calc.FPeriodMonth, att.CFSalaryCode " +
                 "ORDER BY calc.FPersonID, calc.FPeriodYear DESC, calc.FPeriodMonth DESC ");
             
-            	IRowSet results = DbUtil.executeQuery(ctx, sql.toString()) ;
+            	IRowSet results = DbUtil.executeQuery(ctx, dataSql.toString()) ;
             
             // 在内存中组织更新数据
-            Map<String, Map<String, Object>> updateData = organizeUpdateData(ctx,results);
+            Map<String, Map<String, Object>> updateData = organizeUpdateData(ctx,results,  cFeild_attNum);
             
             // 执行批量更新
-           return executeBatchUpdates(ctx,updateData);
+           return executeBatchUpdates(ctx,updateData , cFeild_attNum);
 //            logger.error("工资项计算完成,处理了 {} 条记录", results.size());
             
         } catch (Exception e) {
@@ -75,7 +108,7 @@ public class AttSalaryCalculator {
      * 更新数据
      * @throws SQLException 
      */
-    private Map<String, Map<String, Object>> organizeUpdateData(Context ctx,IRowSet results) throws SQLException {
+    private Map<String, Map<String, Object>> organizeUpdateData(Context ctx,IRowSet results,Map<String,List<String>> com_attNum) throws SQLException {
         Map<String, Map<String, Object>> updateMap = new HashMap<String, Map<String, Object>>();
         
         while(results.next()){
@@ -104,32 +137,65 @@ public class AttSalaryCalculator {
                 personData.put("FPeriodMonth", month);
                 updateMap.put(key, personData);
             }
-            
-            // 根据工资项编码设置对应的字段值
-            String fieldName = getFieldName(ctx,salaryCode);
-            if (fieldName != null) {
-                personData.put(fieldName, totalValue);
-            }
+            // 根据考勤编码设置对应的字段值
+            personData.put(salaryCode, totalValue);
+            //personData , key:value 考勤编码: 考勤值
         }
         
-        return updateMap;
+        //循环updateMap,整理personData中的数据,根据com_attNum整理拿到对应的考勤项
+        Map<String, Map<String, Object>> newUpdateMap = new HashMap<String, Map<String, Object>>();
+        for(Map.Entry<String, Map<String, Object>> entry : updateMap.entrySet()){
+            String key = entry.getKey();
+            Map<String, Object> personData = entry.getValue();
+            Map<String, Object> newPersonData = new HashMap<String, Object>();
+            // 保留基本信息
+            newPersonData.put("FPersonID", personData.get("FPersonID"));
+            newPersonData.put("FPeriodYear", personData.get("FPeriodYear"));
+            newPersonData.put("FPeriodMonth", personData.get("FPeriodMonth"));
+
+            // 处理考勤项
+            for(Map.Entry<String, List<String>> com_att : com_attNum.entrySet()){
+                BigDecimal value = calculateAttendanceValue(personData, com_att.getValue());
+                newPersonData.put(com_att.getKey(), value);
+            }
+            newUpdateMap.put(key, newPersonData);
+        }
+
+
+        return newUpdateMap;
     }
-    
-    
-    
+
+    // 提取的方法
+    private BigDecimal calculateAttendanceValue(Map<String, Object> personData, List<String> attNumList) {
+        BigDecimal result = BigDecimal.ZERO;
+        for(String attNum : attNumList) {
+            Object val = personData.get(attNum);
+            if(val != null) {
+                try {
+                    result = result.add(new BigDecimal(val.toString()));
+                } catch(NumberFormatException e) {
+                    // 忽略非数字值
+                    e.printStackTrace();
+                }
+            }
+        }
+        return result;
+    }
+
+
     /**
      * 批量更新方法
      * @throws SQLException 
      * @throws BOSException 
      */
-    private int executeBatchUpdates(Context ctx, Map<String, Map<String, Object>> updateData) throws BOSException, SQLException {
+    private int executeBatchUpdates(Context ctx, Map<String, Map<String, Object>> updateData, Map<String, List<String>> cFeild_attNum) throws BOSException, SQLException {
     	int allCount = 0;
         // 为每个工资项字段分别执行批量更新
     	//先更新
-    	SalaryItemCalculator.addSalaryCodeMapping(ctx);
-    	Map<String, String> salaryCodeMapping = SalaryItemCalculator.getSalaryCodeMapping();
-        for (Map.Entry<String, String> mapping : salaryCodeMapping.entrySet()) {
-            String fieldName = mapping.getValue();
+//    	SalaryItemCalculator.addSalaryCodeMapping(ctx);
+//    	Map<String, String> salaryCodeMapping = SalaryItemCalculator.getSalaryCodeMapping();
+        for (Map.Entry<String, List<String>> mapping : cFeild_attNum.entrySet()) {
+            String feildName = mapping.getKey();
             
             // 构建当前工资项的批量更新参数
             List<Object[]> batchParams = new ArrayList<Object[]>();
@@ -138,7 +204,12 @@ public class AttSalaryCalculator {
                 String personId = (String) personData.get("FPersonID");
                 Integer year = (Integer) personData.get("FPeriodYear");
                 Integer month = (Integer) personData.get("FPeriodMonth");
-                Object value = personData.get(fieldName);
+                Object value = personData.get(feildName);
+                //为0则清空
+                if (value == null || (value instanceof Number && ((Number) value).intValue() == 0)) {
+                    value = null;
+                }
+
                 //可以清空
 //                if (value != null) {
                 // 参数顺序: 字段值, 人员ID, 年度, 月份
@@ -150,7 +221,7 @@ public class AttSalaryCalculator {
             
             // 执行批量更新
             if (!batchParams.isEmpty()) {
-                String updateSql = "UPDATE T_HR_SCmpCalTable SET " + fieldName + " = ? " +
+                String updateSql = "UPDATE T_HR_SCmpCalTable SET " + feildName + " = ? " +
                                   "WHERE FPersonID = ? AND FPeriodYear = ? AND FPeriodMonth = ?";
                 
                 // 使用您现有的DBUtils批量更新方法
@@ -165,14 +236,5 @@ public class AttSalaryCalculator {
         return allCount;
     }
  
-    
-    /**
-     * 根据工资项编码获取字段名
-     */
-    private String getFieldName(Context ctx,String salaryCode) {
-        // 使用相同的映射配置
-    	SalaryItemCalculator.addSalaryCodeMapping(ctx);
-    	Map<String, String> salaryCodeMapping = SalaryItemCalculator.getSalaryCodeMapping();
-        return salaryCodeMapping.get(salaryCode);
-    }
+   
 }

+ 175 - 0
src/com/kingdee/eas/custom/wamke/syncdata/utils/SHRAttendanceSync.java

@@ -0,0 +1,175 @@
+package   com.kingdee.eas.custom.wamke.syncdata.utils;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.eas.basedata.org.AdminOrgUnitCollection;
+import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
+import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
+import com.kingdee.eas.basedata.org.IAdminOrgUnit;
+import com.kingdee.eas.basedata.person.IPerson;
+import com.kingdee.eas.basedata.person.PersonCollection;
+import com.kingdee.eas.basedata.person.PersonFactory;
+import com.kingdee.eas.basedata.person.PersonInfo;
+import com.kingdee.eas.common.EASBizException;
+import com.kingdee.eas.cp.wfs.utils.DateUtils;
+import com.kingdee.eas.custom.wamke.syncdata.AttFinalizationFactory;
+import com.kingdee.eas.custom.wamke.syncdata.AttFinalizationInfo;
+import com.kingdee.eas.custom.wamke.syncdata.FinalStatusEnum;
+import com.kingdee.eas.custom.wamke.syncdata.IAttFinalization;
+import com.kingdee.eas.custom.wamke.syncdata.model.SyncAttendanceRequest;
+import com.kingdee.eas.custom.wamke.syncdata.model.SyncAttendanceResponse;
+import com.kingdee.eas.framework.CoreBaseCollection;
+import com.kingdee.eas.util.app.DbUtil;
+
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * SHR考勤数据同步 
+ * coyle
+ * 202510
+ */
+public class SHRAttendanceSync {
+
+ 
+
+    /**
+     * 分页查询
+     */
+    public  void manualPagination(Context ctx,String updateTime,List deptNumbers) {
+
+        SHRAttendanceSyncClient client = new SHRAttendanceSyncClient("https://rmsit.vankeservice.com");
+        int currentPage = 1;
+        boolean hasMoreData = true;
+
+        while (hasMoreData) {
+            SyncAttendanceRequest request = new SyncAttendanceRequest(updateTime, currentPage, 200);
+            request.setDeptNumbers(deptNumbers);
+
+            SyncAttendanceResponse response = client.syncAttendanceData(request);
+
+            if (response.isSuccess() && response.getData() != null) {
+                int recordCount = response.getData().getRecords().size();
+                System.out.println("第 " + currentPage + " 页获取到 " + recordCount + " 条记录");
+                // 处理当前页数据
+                try {
+					processAttendanceData(ctx,response);
+				} catch (EASBizException e) {
+					e.printStackTrace();
+				} catch (BOSException e) {
+					e.printStackTrace();
+				} catch (ParseException e) {
+					e.printStackTrace();
+				}
+
+                // 检查是否有下一页
+                if (recordCount > 0) {
+                    currentPage++;
+                } else {
+                    // 当前页没有数据,停止查询
+                    hasMoreData = false;
+                    System.out.println("第 " + currentPage + " 页没有数据,查询结束");
+                }
+            } else {
+                System.out.println("第 " + currentPage + " 页查询失败: " + response.getErrorMessage());
+                hasMoreData = false;
+            }
+        }
+    }
+
+    
+
+
+
+    /**
+     * 处理考勤数据
+     * @throws ParseException 
+     * @throws EASBizException 
+     */
+    private static void processAttendanceData(Context ctx,SyncAttendanceResponse response) throws BOSException, ParseException, EASBizException {
+    	CoreBaseCollection coreBaseCollection = new  CoreBaseCollection();
+        if (response.getData() != null && response.getData().getRecords() != null) {
+            for (SyncAttendanceResponse.AttendanceRecord record : response.getData().getRecords()) {
+            	if (record.getDetails() != null) {
+            		System.out.println("部门: " + record.getDeptNumber() +
+            				", 考勤周期: " + record.getAttendanceCycle() +
+            				", 定案状态: " + record.getLockStatus());
+            		//部门
+            		IAdminOrgUnit orgIns = AdminOrgUnitFactory.getLocalInstance(ctx);
+            		AdminOrgUnitCollection orgCol = orgIns.getAdminOrgUnitCollection("where number='" + record.getDeptNumber() + "'");
+            		AdminOrgUnitInfo orgInfo = new AdminOrgUnitInfo();
+            		if(orgCol.size()>0){
+            			orgInfo = orgCol.get(0);
+            		}else{
+            			continue;
+            		}
+            		//考勤周期
+            		String attendanceCycle = record.getAttendanceCycle();
+            		//定案状态
+            		Integer lockStatus = record.getLockStatus();
+            		//
+            		String delSql = " delete  from  CT_SYN_AttFinalization  where " +
+            				" CFAttendanceCycle = '"+attendanceCycle+"' " +
+            				" and  CFAdminOrgUnitID = '"+orgInfo.getId().toString()+"'";
+            		DbUtil.execute(ctx, delSql);
+            		
+            		
+                    for (SyncAttendanceResponse.AttendanceDetail detail : record.getDetails()) {
+                        System.out.println("  用户: " + detail.getUserId() +
+                                ", 工资项: " + detail.getSalaryCode() +
+                                ", 数值: " + detail.getNumericalValue());
+                        AttFinalizationInfo attFinalInfo = new AttFinalizationInfo();
+                        IPerson personIns = PersonFactory.getLocalInstance(ctx);
+                        PersonCollection perCol = personIns.getPersonCollection("where number='" + detail.getUserId() + "'");
+                        if(perCol.size()>0){
+                        	PersonInfo personInfo = perCol.get(0);
+                        	attFinalInfo.setPerson(personInfo);
+                        }else{
+                        	continue;
+                        }
+                        
+                  
+                        attFinalInfo.setSalaryCode(detail.getSalaryCode());
+                        if(StringUtils.isNotEmpty(attendanceCycle)){
+                        	attFinalInfo.setAttendanceCycle(attendanceCycle);
+                        }
+                        attFinalInfo.setAdminOrgUnit(orgInfo);
+                        FinalStatusEnum  fstatus = lockStatus == 1 ? FinalStatusEnum.finalized : FinalStatusEnum.resolution;
+                        attFinalInfo.setLockStatus(fstatus);
+                        attFinalInfo.setBeginDate(DateUtils.formatDate(detail.getBeginDate(), "yyyyMMdd"));
+                        attFinalInfo.setEndDate(DateUtils.formatDate(detail.getEndDate(), "yyyyMMdd"));
+                        if(StringUtils.isNotEmpty(detail.getNumericalValue())){
+                        	 BigDecimal bigDecimal = new BigDecimal(detail.getNumericalValue());
+                        	 attFinalInfo.setNumValue(bigDecimal);
+                        }
+                        coreBaseCollection.add(attFinalInfo);
+                    }
+                }
+            }
+        }
+        // 定案
+//        IAttFinalization attfIns = AttFinalizationFactory.getLocalInstance(ctx);
+////        attfIns.addnew(coreBaseCollection);
+        
+        
+        
+        
+        
+        
+    }
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+}

+ 239 - 0
src/com/kingdee/eas/custom/wamke/syncdata/utils/SalaryItemCalculatorUtils.java

@@ -0,0 +1,239 @@
+package com.kingdee.eas.custom.wamke.syncdata.utils;
+
+ 
+
+import com.kingdee.bos.BOSException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.kingdee.bos.Context;
+import com.kingdee.eas.util.ToolUtils;
+import com.kingdee.eas.util.app.DbUtil;
+import com.kingdee.jdbc.rowset.IRowSet;
+
+import java.sql.SQLException;
+import java.util.*;
+
+/**
+ * 工资项计算工具类
+ * 一次性查询所有数据,在内存中进行分组计算,避免循环SQL
+ */
+public class SalaryItemCalculatorUtils {
+    
+    private static final Logger logger = LoggerFactory.getLogger(SalaryItemCalculatorUtils.class);
+    
+ 
+    
+ // 工资项编码与字段名的映射配置
+    private static Map<String, String> SALARY_CAL_MAPPING = new HashMap<String, String>();
+    
+    static {
+        // 初始化工资项映射配置
+    	SALARY_CAL_MAPPING.put("A2000", "A2000"); // 计薪时长
+    	SALARY_CAL_MAPPING.put("2150","2150"); // 工作日加班时长
+    	SALARY_CAL_MAPPING.put("2200","2200"); // 休息日加班时长
+    	SALARY_CAL_MAPPING.put("2300","2300"); // 时长
+        SALARY_CAL_MAPPING.put("2316","2316");  // 补签到扣款
+        SALARY_CAL_MAPPING.put("1120","1120"); // 迟到早退次数
+        SALARY_CAL_MAPPING.put("0090","0090"); // 年假
+        SALARY_CAL_MAPPING.put("0210","0210"); // 病假
+        SALARY_CAL_MAPPING.put("0500","0500"); // 婚假
+        SALARY_CAL_MAPPING.put("0600","0600"); // 丧假
+        SALARY_CAL_MAPPING.put("0700","0700"); // 产假
+        SALARY_CAL_MAPPING.put("0900","0900"); // 护理假
+        SALARY_CAL_MAPPING.put("0950","0950");  // 节育假
+        SALARY_CAL_MAPPING.put("1250","1250"); // 其他带薪假
+        SALARY_CAL_MAPPING.put("1400","1400");   // 事假
+        SALARY_CAL_MAPPING.put("A1500","A1500");  // 旷工
+        // 可以继续添加更多映射...
+    }
+
+    /**
+     * 添加新的工资项映射
+     * 需要动态的,已不适用
+     */
+    public static void addSalaryCodeMapping(String salaryCode, String fieldName) {
+        SALARY_CAL_MAPPING.put(salaryCode, fieldName);
+    }
+
+
+    /**
+     * 获取配置的工资项映射
+     * 需要动态的,已不适用
+     */
+    public static Map<String, String> getSalaryCodeMapping() {
+        return Collections.unmodifiableMap(SALARY_CAL_MAPPING);
+    }
+
+    
+    
+    
+  
+//
+//    /**
+//     * 从T_HR_SCmpItem表获取工资项字段映射
+//     * 返回: Map<工资项编码, FieldSn>
+//     */
+//    public static Map<String, String> getFieldMapping(Context ctx,List<String> codeNums) {
+//        Map<String, String> mapping = new HashMap ();
+//        String sql = "SELECT FieldSn, fnumber FROM T_HR_SCmpItem WHERE fnumber IN (" + ToolUtils.aryToStr(codeNums) + ")";
+//        try {
+//            IRowSet executeQuery = DbUtil.executeQuery (ctx, sql) ;
+//            while(executeQuery.next()){
+//                String fieldSn = executeQuery.getString("FieldSn");
+//                String fnumber = executeQuery.getString("fnumber");
+//                mapping.put(fnumber, "S"+fieldSn);
+//            }
+//            logger.info("从数据库获取工资项映射: {}", mapping);
+//        } catch (Exception e) {
+//            logger.error("查询工资项字段映射失败", e);
+//        }
+//
+//        return mapping;
+//    }
+
+    
+
+    
+    public static  Set<String>  getNeedComSet (Context ctx, String calruleId) throws SQLException, BOSException{
+    	Set<String> needComSet = new HashSet();
+     	Set<String> salaryCodeSet = SalaryItemCalculatorUtils.getSalaryCodeSet(ctx);
+    	String sql = " select sitem.fnumber sitemNum  from T_HR_SCalSchemeItem  srule " +
+    			"left join T_HR_SCmpItem sitem  " +
+    			"on srule.fcmpitemid = sitem.fid  " +
+    			"where sitem.fnumber in ("+ToolUtils.aryToStr(salaryCodeSet,true) +")  " +
+    			"and  srule. fcalschemeid = '"+calruleId+"'  " ;
+    	IRowSet executeQuery = DbUtil.executeQuery(ctx, sql);
+    	while(executeQuery.next()){
+    		String  string = executeQuery.getString("sitemNum");
+    		//得到此规则下的需要计算的薪酬项目
+    		needComSet.add(string);
+    	}
+		return needComSet;
+    }
+    
+
+	public static  Map<String, List<String>> getFeild_attMap (Context ctx, String calruleId) throws SQLException, BOSException{
+		//需要使用的薪酬项目; 根据启用的计算规则中,选出包含的薪酬项目
+		Set<String> needComSet =  SalaryItemCalculatorUtils.getNeedComSet(ctx,calruleId);
+		//从维护的考勤项映射表中拿到对应多有的考勤项; key:value 薪酬项目: 考勤项,考勤项
+		Map<String,List<String>> com_attNum = new  HashMap();
+		String getAttNum = " select fnumber number, cfattNum  attNum  from CT_SYN_CompensationItemMapping  where  fnumber in ("+ToolUtils.aryToStr(needComSet,true) +")       ";
+		IRowSet attNumQuery = DbUtil.executeQuery(ctx, getAttNum);
+		while(attNumQuery.next()){
+			String  number = attNumQuery.getString("number");
+			String  attNum = attNumQuery.getString("attNum");
+			//得到此规则下的需要计算的薪酬项目
+			com_attNum.put(number, Arrays.asList(attNum.split(",")));
+
+		}
+
+		Map<String, String> com2FieldMap = new HashMap ();
+		StringBuilder sqlBuilder = new StringBuilder();
+		sqlBuilder.append("SELECT FieldSn, fnumber FROM T_HR_SCmpItem WHERE fnumber IN (");
+		sqlBuilder.append( ToolUtils.aryToStr(needComSet) +")");
+		// 执行批量查询
+		IRowSet  fieldRt = DbUtil.executeQuery(ctx, sqlBuilder.toString());
+		// 创建临时映射表
+
+		while(fieldRt.next()){
+			String fieldSn = fieldRt.getString("FieldSn");
+			String fnumber = fieldRt.getString("fnumber");
+			com2FieldMap.put(fnumber, "S"+fieldSn);
+		}
+		//将com_attNum的key,对比拿到com2FieldMap的key,一致的,则将com_attNum的key替换成com2FieldMap的value,并新生成一个map
+		Map<String, List<String>> cFeild_attNum = new HashMap();
+		for(Map.Entry<String, List<String>> com_att : com_attNum.entrySet()) {
+			String comNum = com_att.getKey();
+			if(com2FieldMap.containsKey(comNum)){
+				String s = com2FieldMap.get(comNum);
+				cFeild_attNum.put(s, com_att.getValue());
+			}
+		}
+
+
+		return cFeild_attNum;
+	}
+
+    
+    public static Set<String>  getSalaryCodeSet(Context ctx){
+    	String checksql = " select fnumber number, cfattNum  attNum from CT_SYN_CompensationItemMapping ";
+    	Set<String> comNums = new HashSet();
+			try {
+				IRowSet iRowSet = DbUtil.executeQuery(ctx, checksql);
+				// 收集所有需要查询的comNum
+	    		while(iRowSet.next()){
+	    			String comNum = iRowSet.getString("number");
+	    			String attNum = iRowSet.getString("attNum");
+	    			comNums.add(comNum);
+	    		}
+			} catch (BOSException e) {
+				e.printStackTrace();
+			} catch (SQLException e) {
+				e.printStackTrace();
+			}
+    		
+    		return  comNums ;
+    }
+    
+
+    /**
+     * 添加新的工资项映射
+     * 使用映射表维护
+     * 已改需求,不使用 202510
+     */
+    public static void addSalaryCodeMapping(Context ctx)   {
+    	SALARY_CAL_MAPPING = new HashMap<String, String>();
+    	// 第一步:获取所有映射关系
+    	HashMap<String, String> att2ComMap = new HashMap();
+    	String checksql = " select fnumber number, cfattNum  attNum from CT_SYN_CompensationItemMapping ";
+    	try {
+    		IRowSet iRowSet;
+    		
+    		iRowSet = DbUtil.executeQuery(ctx, checksql);
+    		// 收集所有需要查询的comNum
+    		Set<String> comNums = new HashSet();
+    		while(iRowSet.next()){
+    			String comNum = iRowSet.getString("number");
+    			String cfattNum = iRowSet.getString("attNum");
+    			att2ComMap.put(comNum, cfattNum);
+    			comNums.add(cfattNum);
+    		}
+    		
+    		
+    		
+    		// 第二步:批量查询T_HR_SCmpItem表
+    		if(!comNums.isEmpty()){
+    			// 构建IN查询语句
+    			StringBuilder sqlBuilder = new StringBuilder();
+    			sqlBuilder.append("SELECT FieldSn, fnumber FROM T_HR_SCmpItem WHERE fnumber IN (");
+    			sqlBuilder.append( ToolUtils.aryToStr(comNums) +")");
+    			// 执行批量查询
+    			IRowSet executeQuery = DbUtil.executeQuery(ctx, sqlBuilder.toString());
+    			// 创建临时映射表
+    			Map<String, String> com2FieldMap = new HashMap ();
+    			while(executeQuery.next()){
+    				String fieldSn = executeQuery.getString("FieldSn");
+    				String fnumber = executeQuery.getString("fnumber");
+    				com2FieldMap.put(fnumber, "S"+fieldSn);
+    			}
+    			
+    			// 第三步:填充最终映射表
+    			for(Map.Entry<String, String> entry : att2ComMap.entrySet()){
+    				String salaryCode = entry.getKey();
+    				String comNum = entry.getValue();
+    				if(com2FieldMap.containsKey(comNum)){
+    					SALARY_CAL_MAPPING.put(salaryCode, com2FieldMap.get(comNum));
+    				}
+    			}
+    		}
+    	} catch (BOSException e) {
+    		e.printStackTrace();
+    	} catch (SQLException e) {
+    		e.printStackTrace();
+    	}
+    }
+
+
+
+
+}

+ 2 - 2
websrc/com/kingdee/shr/compensation/web/handler/CmpCalDynamicListHandlerEx.java

@@ -122,10 +122,10 @@ public class CmpCalDynamicListHandlerEx extends CmpCalDynamicListHandler {
 			synIns.synRmAttFinalizationData(startDate, null,false);
 			
 			AttSalaryCalculator attSalaryCalculator = new AttSalaryCalculator();
-	    	int calculateSalaryItems = attSalaryCalculator.calculateSalaryItems(ctx,filterSql);
+	    	int calculateSalaryItems = attSalaryCalculator.calculateSalaryItems(ctx,filterSql,cmpSchemeId);
 		 
 			Map res = new HashMap();
-			res.put("message", "获取成功,并更新"+calculateSalaryItems+"项数据!");
+			res.put("message", "获取成功,并更新"+calculateSalaryItems+"项定案数据!");
 			JSONUtils.SUCCESS(res);
 		} catch (Exception e) {
 			ExceptionHandle.handleException(e);

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff