Jelajahi Sumber

1.判断日志中所属人员部门是否正确

WoNiu 5 tahun lalu
induk
melakukan
5c451f6f50

+ 5 - 0
src/main/java/com/galaxis/manatee/constant/ChuanYunConstant.java

@@ -23,6 +23,11 @@ public class ChuanYunConstant {
      * 保存用户ID和工号的映射关系
      */
     public static Map<String,String> USER_EMPLOYEE_NUMBER=new HashMap<>(2048);
+
+    /**
+     * 保存用户id和所属部门id
+     */
+    public static Map<String,Object> USER_DEPARTMENT=new HashMap<>();
     /**
      * 调用地址
      */

+ 13 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunUserCompanyDO.java

@@ -59,4 +59,17 @@ public class ChuanyunUserCompanyDO extends BasicDO{
      */
     @JsonProperty("F0000017")
     private String costCode;
+
+    /**
+     * 人员所属部门
+     */
+    @JsonProperty("F0000007")
+    private String department;
+
+    /**
+     * 人员所属部门对象
+     */
+    @Transient
+    @JsonProperty("F0000007Object")
+    private ChuanyunObject departmentObject;
 }

+ 4 - 2
src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java

@@ -60,6 +60,8 @@ public class ChuanyunBasicDataScheduledTask {
     @Scheduled(fixedDelay = 360000L)
     private void getDataFromChuanyun() {
 
+        //获取人员-归属公司信息
+        getUserCompany();
         //支出档案类型
         getProjectType();
         //获取报销科目
@@ -74,8 +76,7 @@ public class ChuanyunBasicDataScheduledTask {
         getCompany();
         //获取供应商
         getSupplier();
-        //获取人员-归属公司信息
-        getUserCompany();
+
     }
 
     /**
@@ -393,6 +394,7 @@ public class ChuanyunBasicDataScheduledTask {
                         log.warn(chuanyunUserCompanyDO+"");
                         log.warn(exception.getMessage());
                     }
+                    ChuanYunConstant.USER_DEPARTMENT.put(chuanyunUserCompanyDO.getUserId(),chuanyunUserCompanyDO.getDepartmentObject().getObjectId());
                 });
                 chuanyunUserCompanyDao.saveAll(result);
             }catch (Exception e){

+ 33 - 4
src/main/java/com/galaxis/manatee/task/ChuanyunHumanResourceScheduledTask.java

@@ -2,12 +2,12 @@ package com.galaxis.manatee.task;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.galaxis.manatee.dao.ChuanyunGroupProjectDao;
-import com.galaxis.manatee.dao.ChuanyunHolidaySalaryRuleDao;
-import com.galaxis.manatee.dao.ChuanyunLogDao;
+import com.galaxis.manatee.constant.ChuanYunConstant;
+import com.galaxis.manatee.dao.*;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunGroupProjectDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunHolidaySalaryRuleDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunLogDO;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
 import com.galaxis.manatee.entity.chuanyun.dto.Filter;
 import com.galaxis.manatee.manager.ChuanYunManager;
 import lombok.extern.slf4j.Slf4j;
@@ -32,12 +32,16 @@ public class ChuanyunHumanResourceScheduledTask {
     private final ChuanyunLogDao chuanyunLogDao;
     private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
     private final ChuanyunHolidaySalaryRuleDao chuanyunHolidaySalaryRuleDao;
+    private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
+    private final ChuanyunCompanyDao chuanyunCompanyDao;
 
-    public ChuanyunHumanResourceScheduledTask(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunHolidaySalaryRuleDao chuanyunHolidaySalaryRuleDao) {
+    public ChuanyunHumanResourceScheduledTask(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunHolidaySalaryRuleDao chuanyunHolidaySalaryRuleDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunCompanyDao chuanyunCompanyDao) {
         this.chuanYunManager = chuanYunManager;
         this.chuanyunLogDao = chuanyunLogDao;
         this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
         this.chuanyunHolidaySalaryRuleDao = chuanyunHolidaySalaryRuleDao;
+        this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
+        this.chuanyunCompanyDao = chuanyunCompanyDao;
     }
 
     /**
@@ -45,6 +49,7 @@ public class ChuanyunHumanResourceScheduledTask {
      */
 //    @Scheduled(fixedDelay = 1000000000L)
     @Scheduled(cron = "0 0 3 * * *")
+//    @Scheduled(fixedDelay = 360000L)
     private void updateLog() {
         var objectMapper = new ObjectMapper();
         var start = 0;
@@ -95,6 +100,30 @@ public class ChuanyunHumanResourceScheduledTask {
                                 log.warn(chuanyunDayLog+"");
                             }
                         });
+                        //判断所属部门是否正确
+                        chuanyunUserCompanyDao.findById(chuanyunLogDO.getUserCompanyId()).ifPresent(chuanyunUserCompanyDO -> {
+                            String ownerDepartmentId = chuanyunUserCompanyDO.getDepartment();
+                            if (!chuanyunLogDO.getOwnerDepartmentId().equals(ownerDepartmentId)) {
+                                chuanyunLogDO.setOwnerDepartmentId(ChuanYunConstant.USER_DEPARTMENT.get(chuanyunUserCompanyDO.getUserId()).toString());
+                                boolean updateFlag=false;
+                                while (!updateFlag) {
+                                    try {
+                                        var groupProjectUpdateString = objectMapper.writeValueAsString(chuanyunLogDO);
+                                        ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.update(ChuanyunLogDO.SCHEMA_CODE, chuanyunLogDO.getObjectId(), groupProjectUpdateString);
+                                        if (chuanyunSaveDTO.getSuccessful()) {
+                                            log.info(chuanyunLogDO.getObjectId() + "更新人员所属部门成功" + groupProjectUpdateString);
+                                            updateFlag = true;
+                                        } else {
+                                            log.warn(chuanyunLogDO.getObjectId() + "更新人员所属部门失败" + groupProjectUpdateString);
+                                            log.warn(chuanyunLogDO + "");
+                                            Thread.sleep(5000L);
+                                        }
+                                    } catch (Exception e) {
+                                        e.printStackTrace();
+                                    }
+                                }
+                            }
+                        });
                     }
                     //处理项目userId
                     if(chuanyunLogDO.getUserObject()!=null){