Переглянути джерело

1.调整差旅报销标准同步逻辑
2.调整人员职级备份表逻辑
3.调整报销工作台逻辑:已完成-去除借款预付类单据审核通过状态

lisheng 1 день тому
батько
коміт
e8ce7af4ab

+ 22 - 12
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/task/PersonJobPositionBakTask.java

@@ -15,6 +15,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.QueryServiceHelper;
 import kd.bos.servicehelper.operation.DeleteServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
+import kd.bos.util.CollectionUtils;
 import nckd.jimin.jyyy.fi.common.constant.BillTypeConstants;
 import nckd.jimin.jyyy.fi.common.constant.JobPositionBakBillConstant;
 import nckd.jimin.jyyy.fi.common.util.CommonUtils;
@@ -51,6 +52,7 @@ public class PersonJobPositionBakTask extends AbstractTask implements StopTask {
 
     protected List<DynamicObject> createNewJobPosotionBakBill(Map<String, DynamicObject> hisBakBillMap){
         List<DynamicObject> bakBillList = new ArrayList<>();
+        Date syncDate = new Date();
         // 查询当前生效的人员岗位信息
         DynamicObjectCollection positionCol = QueryServiceHelper.query(BillTypeConstants.HRPI_EMPPOSORGREL, "person.id,position.id,company.id", new QFilter[]{
                 new QFilter("businessstatus", QCP.equals, "1"),
@@ -72,6 +74,7 @@ public class PersonJobPositionBakTask extends AbstractTask implements StopTask {
             }
         }
 
+
         // 查询当前生效的人员职级信息
         Map<Long, Long> personJobMap = QueryServiceHelper.query(BillTypeConstants.HRPI_EMPJOBREL, "person.id,joblevel.id", new QFilter[]{
                 new QFilter("businessstatus", QCP.equals, "1"),
@@ -86,23 +89,30 @@ public class PersonJobPositionBakTask extends AbstractTask implements StopTask {
                 bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_USER, userInfo);
                 bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_ORG_NEW, position.getLong("company.id"));
                 bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_POSITION_NEW, position.getLong("position.id"));
-                bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_UPDATETIME, new Date());
+                bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_UPDATETIME, syncDate);
                 if(personJobMap.containsKey(personId)){
                     bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_NEW, personJobMap.get(personId));
                 }
                 bakBillList.add(bakBillInfo);
 
-                if(hisBakBillMap.containsKey(personId)){
-                    DynamicObject hisBakInfo = hisBakBillMap.get(personId);
-                    if(hisBakInfo != null){
-                        if(isOnlyUpdateNew){
-                            bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_ORG_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_ORG_OLD));
-                            bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_POSITION_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_POSITION_OLD));
-                            bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_OLD));
-                        }else{
-                            bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_ORG_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_ORG_NEW));
-                            bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_POSITION_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_POSITION_NEW));
-                            bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_NEW));
+                // 备份表数据为空,则新旧数据相同
+                if(CollectionUtils.isEmpty(newestBakBillCol)){
+                    bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_ORG_OLD, bakBillInfo.get(JobPositionBakBillConstant.KEY_NCKD_ORG_NEW));
+                    bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_POSITION_OLD, bakBillInfo.get(JobPositionBakBillConstant.KEY_NCKD_POSITION_NEW));
+                    bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_OLD, bakBillInfo.get(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_NEW));
+                }else{
+                    if(hisBakBillMap.containsKey(personId)){
+                        DynamicObject hisBakInfo = hisBakBillMap.get(personId);
+                        if(hisBakInfo != null){
+                            if(isOnlyUpdateNew){
+                                bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_ORG_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_ORG_OLD));
+                                bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_POSITION_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_POSITION_OLD));
+                                bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_OLD));
+                            }else{
+                                bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_ORG_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_ORG_NEW));
+                                bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_POSITION_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_POSITION_NEW));
+                                bakBillInfo.set(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_OLD, hisBakInfo.get(JobPositionBakBillConstant.KEY_NCKD_JOBLEVEL_NEW));
+                            }
                         }
                     }
                 }

+ 23 - 13
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/task/PersonReimLeverSyncTask.java

@@ -10,7 +10,9 @@ import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.schedule.api.StopTask;
 import kd.bos.schedule.executor.AbstractTask;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.QueryServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
 import nckd.jimin.jyyy.fi.common.constant.BillTypeConstants;
 import nckd.jimin.jyyy.fi.common.util.CommonUtils;
 import nckd.jimin.jyyy.fi.plugin.operate.Helper.PersonReimQuotaHelper;
@@ -37,34 +39,42 @@ public class PersonReimLeverSyncTask extends AbstractTask implements StopTask {
     public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
         log.info("-------- PersonReimLeverSyncTask 启动同步人员报销级别任务 --------");
 
+        // 查询所有人员的报销级别设置
+        DynamicObject[] reimburseSettingArray = BusinessDataServiceHelper.load("er_reimbursesetting_rel", "user.id,user.number,reimburselevel.id,company.id", QFilter.isNotNull("user.id").toArray());
         // 查询当前生效的人员岗位信息
-        DynamicObjectCollection positionCol = QueryServiceHelper.query(BillTypeConstants.HRPI_EMPPOSORGREL, "person.id,position.id,company.id", new QFilter[]{
+        DynamicObjectCollection positionCol = QueryServiceHelper.query(BillTypeConstants.HRPI_EMPPOSORGREL, "person.number,company.id", new QFilter[]{
                 new QFilter("businessstatus", QCP.equals, "1"),
                 new QFilter("iscurrentversion", QCP.equals, "1"),
                 new QFilter("datastatus", QCP.equals, "1"),
                 new QFilter("isprimary", QCP.equals, "1")
         });
-        Map<Long, Long> personCompanyMap = positionCol.stream().collect(Collectors.toMap(r -> r.getLong("person.id"), r -> r.getLong("company.id"), (k1, k2) -> k1));
+        Map<String, Long> personCompanyMap = positionCol.stream().collect(Collectors.toMap(r -> r.getString("person.number"), r -> r.getLong("company.id"), (k1, k2) -> k1));
         // 获取所有人员最新的职级
-        Map<Long, Long> personJobMap = QueryServiceHelper.query(BillTypeConstants.HRPI_EMPJOBREL, "person.id,joblevel.id", new QFilter[]{
+        Map<String, Long> personJobMap = QueryServiceHelper.query(BillTypeConstants.HRPI_EMPJOBREL, "person.number,joblevel.id", new QFilter[]{
                 new QFilter("businessstatus", QCP.equals, "1"),
                 new QFilter("datastatus", QCP.equals, "1"),
                 new QFilter("iscurrentversion", QCP.equals, "1")
-        }).stream().collect(Collectors.toMap(r -> r.getLong("person.id"), r -> r.getLong("joblevel.id"), (k1, k2) -> k1));
-
+        }).stream().collect(Collectors.toMap(r -> r.getString("person.number"), r -> r.getLong("joblevel.id"), (k1, k2) -> k1));
         // 获取人员最新的报销级别
         PersonReimQuotaHelper helper = getPersonReimQuotaHelper();
+        // 默认职级
+        DynamicObject defultReimLever = helper.getDefultReimLever();
+        // 通过公司查询共享策略查询报销级别;没有查到就取默认
+        for(DynamicObject reimburseSetting : reimburseSettingArray){
+            String userNumber = reimburseSetting.getString("user.number");
+            Long companyId = reimburseSetting.getLong("company.id");
+            Long personCompanyId = personCompanyMap.get(userNumber);
+            DynamicObject reimLever = null;
+            if(personCompanyId != null && companyId != null && personCompanyId.equals(companyId)) {
+                reimLever = helper.getReimLever(personJobMap.get(userNumber), personCompanyId);
+            }
 
-        for(Map.Entry<Long, Long> entryRow : personJobMap.entrySet()){
-            Long personId = entryRow.getKey();
-            Long jobLeverId = entryRow.getValue();
-            if(personJobMap.containsKey(personId)){
-                DynamicObject userInfo = CommonUtils.getUserByHrPersonId(personId);
-                helper.syncReimLever(userInfo.getLong("id"),personCompanyMap.get(personId),jobLeverId);
+            if (reimLever == null) {
+                reimLever = defultReimLever;
             }
+            reimburseSetting.set("reimburselevel", reimLever.getLong("id"));
         }
-
-
+        SaveServiceHelper.save(reimburseSettingArray);
         log.info("-------- PersonReimLeverSyncTask 同步人员报销级别任务结束 --------");
     }
 }