Browse Source

更新了同步项目数据相关的代码

verguenza 5 years ago
parent
commit
971293e0dd

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

@@ -28,6 +28,12 @@ public class ChuanYunConstant {
      * 保存用户id和所属部门id
      */
     public static Map<String,Object> USER_DEPARTMENT=new HashMap<>();
+
+    /**
+     * 用户ID和BG关系
+     */
+    public static Map<String,String> USER_BUSINESS_GROUP=new HashMap<>();
+
     /**
      * 调用地址
      */

+ 3 - 6
src/main/java/com/galaxis/manatee/controller/ChuanyunTestController.java

@@ -6,6 +6,7 @@ import com.galaxis.manatee.entity.chuanyun.bo.MaterialResendBO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ProjectLogDO;
 import com.galaxis.manatee.entity.chuanyun.dto.*;
+import com.galaxis.manatee.exception.BigSizeException;
 import com.galaxis.manatee.manager.ChuanYunManager;
 import org.hibernate.Session;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -26,10 +27,6 @@ public class ChuanyunTestController {
 
     private final ChuanYunManager chuanYunManager;
     private final EntityManager entityManager;
-//    public ChuanyunTestController(ChuanYunManager chuanYunManager) {
-//        this.chuanYunManager = chuanYunManager;
-//    }
-
 
     public ChuanyunTestController(ChuanYunManager chuanYunManager, EntityManager entityManager) {
         this.chuanYunManager = chuanYunManager;
@@ -75,7 +72,7 @@ public class ChuanyunTestController {
      * @return  保存结果
      */
     @GetMapping("/chuanyunTest/testSave")
-    public String testSave() throws JsonProcessingException {
+    public String testSave() throws JsonProcessingException, BigSizeException {
         MaterialResendBO resendVO=new MaterialResendBO();
         resendVO.setRequestDate(LocalDate.now());
         resendVO.setRequestType("test");
@@ -90,7 +87,7 @@ public class ChuanyunTestController {
      * @throws JsonProcessingException  json处理异常
      */
     @GetMapping("/chuanyunTest/testSaveAll")
-    public String testSaveAll() throws JsonProcessingException {
+    public String testSaveAll() throws JsonProcessingException, BigSizeException {
         MaterialResendBO resend1=new MaterialResendBO();
         MaterialResendBO resend2=new MaterialResendBO();
         resend1.setRequestType("helloChuanyunSaveAll1");

+ 10 - 2
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunGroupProjectDO.java

@@ -5,7 +5,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.galaxis.capsule.bo.ChuanyunObject;
 import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
-import com.galaxis.manatee.util.StringArrayToStringDeserializer;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.extern.slf4j.Slf4j;
@@ -59,6 +58,14 @@ public class ChuanyunGroupProjectDO extends BasicDO {
      */
     @JsonProperty(value = "F0000033")
     private String businessGroup;
+    /**
+     * EBG
+     */
+    public static final String EBG="EBG";
+    /**
+     * IBG
+     */
+    public static final String IBG="IBG";
 
     /**
      * 氚云中项目立项时间
@@ -98,11 +105,12 @@ public class ChuanyunGroupProjectDO extends BasicDO {
      */
     @Transient
     @JsonProperty("F0000034")
-    private String[] projectMemberlist;
+    private String[] projectMemberList;
 
     /**
      * 项目组成员
      */
+    @Column(columnDefinition = "TEXT")
     private String projectMember;
 
     /**

+ 3 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunPayrollDO.java

@@ -15,6 +15,9 @@ import javax.persistence.Entity;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
+/**
+ * @author xuankechen
+ */
 @Slf4j
 @EqualsAndHashCode(callSuper = true)
 @Data

+ 4 - 0
src/main/java/com/galaxis/manatee/manager/ChuanYunManager.java

@@ -62,6 +62,7 @@ public interface ChuanYunManager {
      * @param isSubmit   是否为提交状态
      * @param schemaCode 表单编码
      * @param bizObject  数据字符串
+     * @throws BigSizeException 保存数据超长的异常
      * @return 保存结果
      */
     ChuanyunSaveDTO save(String schemaCode, String bizObject, Boolean isSubmit) throws BigSizeException;
@@ -71,6 +72,8 @@ public interface ChuanYunManager {
      * @param isSubmit       是否直接提交
      * @param schemaCode     表单编码
      * @param bizObjectArray 数据字符串
+     * @throws BigSizeException 保存数据超长的异常
+     * @throws JsonProcessingException  json转化异常
      * @return 保存结果
      */
     ChuanyunSaveAllDTO saveAll(String schemaCode, List<String> bizObjectArray, Boolean isSubmit) throws JsonProcessingException, BigSizeException;
@@ -81,6 +84,7 @@ public interface ChuanYunManager {
      * @param schemaCode 表单编码
      * @param bizObjectId   主键
      * @param bizObject  数据字符串
+     * @throws BigSizeException 保存数据超长的异常
      * @return 保存结果
      */
     ChuanyunSaveDTO update(String schemaCode,String bizObjectId, String bizObject) throws BigSizeException;

+ 2 - 2
src/main/java/com/galaxis/manatee/manager/impl/DefaultChuanyunManagerImpl.java

@@ -246,9 +246,9 @@ public class DefaultChuanyunManagerImpl implements ChuanYunManager {
         ChuanyunSaveDTO chuanyunSaveResponse =new ChuanyunSaveDTO();
         chuanyunSaveResponse = restTemplate.postForObject(ChuanYunConstant.CHUAN_YUN_INVOKE_URL,httpEntity, chuanyunSaveResponse.getClass());
         if (chuanyunSaveResponse!=null&&chuanyunSaveResponse.getSuccessful()) {
-            log.info("更新成功!");
+            log.info(bizObjectId+"更新成功!");
         }else {
-            log.info("更新失败!");
+            log.info(bizObjectId+"更新失败!"+bizObject);
         }
         return chuanyunSaveResponse;
     }

+ 144 - 105
src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java

@@ -1,11 +1,11 @@
 package com.galaxis.manatee.task;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.galaxis.capsule.bo.ChuanyunObject;
 import com.galaxis.manatee.constant.ChuanYunConstant;
+import com.galaxis.manatee.constant.StringConstant;
 import com.galaxis.manatee.dao.*;
 import com.galaxis.manatee.entity.chuanyun.data.object.*;
 import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
@@ -17,12 +17,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.CascadeType;
-import javax.persistence.FetchType;
-import javax.persistence.OneToMany;
-import javax.persistence.Transient;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -60,9 +55,8 @@ public class ChuanyunBasicDataScheduledTask {
     /**
      * 定时将氚云中的数据保存到manatee
      */
-    @Scheduled(fixedDelay = 360000L)
+    @Scheduled(fixedDelay = 3600000L)
     private void getDataFromChuanyun() {
-
         //获取人员-归属公司信息
         getUserCompany();
         //支出档案类型
@@ -140,85 +134,26 @@ public class ChuanyunBasicDataScheduledTask {
                         chuanyunGroupProjectDao.delete(tmpGroupProjectDO.get());
                     });
                     //新增项目组织信息
-                    if (chuanyunGroupProjectDO.getDetailList() == null || chuanyunGroupProjectDO.getDetailList().size() == 1) {
-                        List<ChuanyunGroupProjectDetailDO> detaillist = new ArrayList<>();
-                        for (ChuanyunCompanyDO chuanyunCompanyDO : chuanyunCompanyDao.findAll()) {
-                            if (!chuanyunCompanyDO.getCompanyName().equals("浙江凯乐士无锡分公司")&&!chuanyunCompanyDO.getCompanyName().equals("GALAXIS Automation management GmbH")) {
-                                ChuanyunGroupProjectDetailDO chuanyunGroupProjectDetailDO = new ChuanyunGroupProjectDetailDO();
-                                chuanyunGroupProjectDetailDO.setCompanyName(chuanyunCompanyDO.getCompanyName());
-                                chuanyunGroupProjectDetailDO.setType(chuanyunGroupProjectDO.getProjectType());
-                                chuanyunGroupProjectDetailDO.setParentObjectId(chuanyunGroupProjectDO.getObjectId());
-                                detaillist.add(chuanyunGroupProjectDetailDO);
-                            }
-                        }
-                        chuanyunGroupProjectDO.setDetailList(detaillist);
-                    }
-                    //将projectManger和projectOwner替换为主键
-                    if(!StringUtils.isEmpty(chuanyunGroupProjectDO.getProjectOwner())){
-                        chuanyunGroupProjectDO.setProjectOwner(chuanyunGroupProjectDO.getProjectOwnerObject().getObjectId());
-                    }
-                    //将项目组成员projectMember替换为主键
-                    if (chuanyunGroupProjectDO.getProjectMemberlist() != null) {
-                        var memberlist = new ArrayList<>();
-                        var builder = new StringBuilder();
-                        for (ChuanyunObject chuanyunObject: chuanyunGroupProjectDO.getProjectMemberObject()) {
-                            builder.append(chuanyunObject.getObjectId()).append(";");
-                            memberlist.add(chuanyunObject.getObjectId());
-                        }
-                        chuanyunGroupProjectDO.setProjectMember(builder.toString());
-                        //替换为主键后更新氚云数据表来增加权限
-                        chuanyunGroupProjectDO.setProjectMemberlist(memberlist.toArray(new String[0]));
-                    }
-                    //如果项目组成员为空,则自动为项目添加所有EBG成员作为项目组成员
-                    if ("EBG".equals(chuanyunGroupProjectDO.getBusinessGroup())&&chuanyunGroupProjectDO.getProjectMemberlist()==null&&
-                            ("实施".equals(chuanyunGroupProjectDO.getProjectType())||"维保".equals(chuanyunGroupProjectDO.getProjectType())||
-                                    "研发二开".equals(chuanyunGroupProjectDO.getProjectType())||"售后".equals(chuanyunGroupProjectDO.getProjectType()))) {
-                        var projectmember = new ArrayList<>();
-                        var builder = new StringBuilder();
-                        for (ChuanyunUserCompanyDO chuanyunUserCompanyDO : chuanyunUserCompanyDao.findAll()) {
-                            if (chuanyunCompanyDao.findByObjectId(chuanyunUserCompanyDO.getCompanyId()).getBusinessGroup().equals("EBG")) {
-                                builder.append(chuanyunUserCompanyDO.getUserId()+";");
-                                projectmember.add(chuanyunUserCompanyDO.getUserId());
-                            }
-                        }
-                        chuanyunGroupProjectDO.setProjectMember(builder.toString());
-                        chuanyunGroupProjectDO.setProjectMemberlist(projectmember.toArray(new String[projectmember.size()]));
-                        log.info("成员已更新");
-                    }
-
-                    //通过更新集团项目中的EBG项目经理、IBG项目经理
-                    //TODO 测试结束后需要扩大范围到所有项目
-                    GroupProjectUpdateDTO groupProjectUpdateDTO=new GroupProjectUpdateDTO();
-                    try {
-                        chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId(),objectMapper.writeValueAsString(groupProjectUpdateDTO));
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                    groupProjectUpdateDTO=new GroupProjectUpdateDTO(chuanyunGroupProjectDO);
-                    //保证项目经理信息更新成功
-                    boolean updateFlag=false;
-                    while (!updateFlag){
-                        try {
-                            var groupProjectUpdateString=objectMapper.writeValueAsString(groupProjectUpdateDTO);
-                            ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId(),groupProjectUpdateString);
-                            if(chuanyunSaveDTO.getSuccessful()){
-                                log.info(chuanyunGroupProjectDO.getObjectId()+"更新项目经理成功"+groupProjectUpdateString);
-                                updateFlag=true;
-                                //更新成功之后重新获取集团项目组信息,防止id为空
-                                var chuanyunFindResponse =  chuanYunManager.find(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId());
-                                ChuanyunGroupProjectDO chuanyunGroupProjectDO1 = objectMapper.convertValue(chuanyunFindResponse.getReturnData().getBizObject(), new TypeReference<>(){});
-                                chuanyunGroupProjectDO.setDetailList(chuanyunGroupProjectDO1.getDetailList());
-                            }else{
-                                log.warn(chuanyunGroupProjectDO.getObjectId()+"更新项目经理失败"+groupProjectUpdateString);
-                                log.warn(chuanyunGroupProjectDO+"");
-                                Thread.sleep(5000L);
-                            }
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                    }
+                    //TODO 这个地方不要做到定时更新的功能里,初始化组织信息只是独立一次的操作,初始化之后的数据维护会交给对应的项目经理。这个方法单独做一个controller来提供调用
+//                    if (chuanyunGroupProjectDO.getDetailList() == null || chuanyunGroupProjectDO.getDetailList().size() == 1) {
+//                        List<ChuanyunGroupProjectDetailDO> detailList = new ArrayList<>();
+//                        for (ChuanyunCompanyDO chuanyunCompanyDO : chuanyunCompanyDao.findAll()) {
+//                            if (!"浙江凯乐士无锡分公司".equals(chuanyunCompanyDO.getCompanyName())&&!"GALAXIS Automation management GmbH".equals(chuanyunCompanyDO.getCompanyName())) {
+//                                ChuanyunGroupProjectDetailDO chuanyunGroupProjectDetailDO = new ChuanyunGroupProjectDetailDO();
+//                                chuanyunGroupProjectDetailDO.setCompanyName(chuanyunCompanyDO.getCompanyName());
+//                                chuanyunGroupProjectDetailDO.setType(chuanyunGroupProjectDO.getProjectType());
+//                                chuanyunGroupProjectDetailDO.setParentObjectId(chuanyunGroupProjectDO.getObjectId());
+//                                detailList.add(chuanyunGroupProjectDetailDO);
+//                            }
+//                        }
+//                        chuanyunGroupProjectDO.setDetailList(detailList);
+//                    }
 
 
+                    //处理项目对象中的项目成员数据
+                    projectMemberCheck(chuanyunGroupProjectDO);
+                    //处理项目对象中的项目经理、项目负责人数据
+                    projectManagerCheck(chuanyunGroupProjectDO);
                 });
                 chuanyunGroupProjectDao.saveAll(result);
             }catch (Exception e){
@@ -230,6 +165,105 @@ public class ChuanyunBasicDataScheduledTask {
     }
 
     /**
+     * 通过更新集团项目中的项目负责人、EBG项目经理、IBG项目经理
+     * @param chuanyunGroupProjectDO    项目对象
+     */
+    private void projectManagerCheck(ChuanyunGroupProjectDO chuanyunGroupProjectDO){
+        //将projectManger和projectOwner替换为主键
+        if(!StringUtils.isEmpty(chuanyunGroupProjectDO.getProjectOwner())){
+            chuanyunGroupProjectDO.setProjectOwner(chuanyunGroupProjectDO.getProjectOwnerObject().getObjectId());
+        }
+        if (!StringUtils.isEmpty(chuanyunGroupProjectDO.getEbgProjectManager())){
+            chuanyunGroupProjectDO.setEbgProjectManager(chuanyunGroupProjectDO.getEbgProjectManagerObject().getObjectId());
+        }
+        if(!StringUtils.isEmpty(chuanyunGroupProjectDO.getIbgProjectManager())){
+            chuanyunGroupProjectDO.setIbgProjectManager(chuanyunGroupProjectDO.getIbgProjectManagerObject().getObjectId());
+        }
+        var objectMapper=new ObjectMapper();
+        //第一步,清除项目负责人、项目经理数据。保证能够触发权限修改流程
+        GroupProjectUpdateDTO groupProjectUpdateDTO=new GroupProjectUpdateDTO();
+        try {
+            chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId(),objectMapper.writeValueAsString(groupProjectUpdateDTO));
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.warn(chuanyunGroupProjectDO.getObjectId()+"更新项目经理失败"+e.getMessage());
+        }
+        groupProjectUpdateDTO=new GroupProjectUpdateDTO(chuanyunGroupProjectDO);
+        //保证项目经理信息更新成功
+        boolean updateFlag=false;
+        while (!updateFlag){
+            try {
+                var groupProjectUpdateString=objectMapper.writeValueAsString(groupProjectUpdateDTO);
+                ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId(),groupProjectUpdateString);
+                if(chuanyunSaveDTO.getSuccessful()){
+                    log.info(chuanyunGroupProjectDO.getObjectId()+"更新项目经理成功"+groupProjectUpdateString);
+                    updateFlag=true;
+                    //更新成功之后重新获取集团项目组信息,防止id为空
+                    var chuanyunFindResponse =  chuanYunManager.find(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId());
+                    ChuanyunGroupProjectDO tmpChuanyunGroupProjectDO = objectMapper.convertValue(chuanyunFindResponse.getReturnData().getBizObject(), new TypeReference<>(){});
+                    chuanyunGroupProjectDO.setDetailList(tmpChuanyunGroupProjectDO.getDetailList());
+                }else{
+                    log.warn(chuanyunGroupProjectDO.getObjectId()+"更新项目经理失败"+groupProjectUpdateString);
+                    log.warn(chuanyunGroupProjectDO+"");
+                    Thread.sleep(5000L);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.warn(chuanyunGroupProjectDO.getObjectId()+"更新项目经理失败"+e.getMessage());
+            }
+        }
+    }
+
+    /**
+     * 如果有项目组成员,将项目组成员projectMember替换为主键
+     * 如果没有项目组成员,判断是否是EBG的实施、研发二开、售后维保项目,如果是,则添加EBG全体成员
+     * @param chuanyunGroupProjectDO    项目对象
+     */
+    private void projectMemberCheck(ChuanyunGroupProjectDO chuanyunGroupProjectDO){
+        if (chuanyunGroupProjectDO.getProjectMemberList() != null) {
+            List<String> memberList = new ArrayList<>();
+            var builder = new StringBuilder();
+            for (ChuanyunObject chuanyunObject: chuanyunGroupProjectDO.getProjectMemberObject()) {
+                builder.append(chuanyunObject.getObjectId()).append(StringConstant.SEMICOLON);
+                memberList.add(chuanyunObject.getObjectId());
+            }
+            chuanyunGroupProjectDO.setProjectMember(builder.toString());
+            //替换为主键后更新氚云数据表来增加权限
+            chuanyunGroupProjectDO.setProjectMemberList(memberList.toArray(new String[0]));
+        }else {
+            //项目成员为空的情况判断
+            //判断项目BG是否为EBG
+            var specifiedBusinessGroupFlag=ChuanyunGroupProjectDO.EBG.equals(chuanyunGroupProjectDO.getBusinessGroup());
+            //判断项目类型是否为 下列项目类型中的一种
+            var specifiedProjectTypeFlag=("实施".equals(chuanyunGroupProjectDO.getProjectType())||
+                    "维保".equals(chuanyunGroupProjectDO.getProjectType())||
+                    "研发二开".equals(chuanyunGroupProjectDO.getProjectType())||
+                    "售后".equals(chuanyunGroupProjectDO.getProjectType()));
+            //如果项目组成员为空,则自动为项目添加所有EBG成员作为项目组成员
+            if (specifiedBusinessGroupFlag&&specifiedProjectTypeFlag) {
+                var projectMember = new ArrayList<String>();
+                var builder = new StringBuilder();
+                ChuanYunConstant.USER_BUSINESS_GROUP.forEach((k,v)->{
+                    if (ChuanyunGroupProjectDO.EBG.equals(v)&&null!=k){
+                        builder.append(k).append(StringConstant.SEMICOLON);
+                        projectMember.add(k);
+                    }
+                });
+                //TODO 这里可能存在chuanyunCompanyDO找不到的情况,防止NPE,我把下面的代码换成了上面的形式--钟崇杰
+//                for (ChuanyunUserCompanyDO chuanyunUserCompanyDO : chuanyunUserCompanyDao.findAll()) {
+//                    if ("EBG".equals(chuanyunCompanyDao.findByObjectId(chuanyunUserCompanyDO.getCompanyId()).getBusinessGroup())) {
+//                        builder.append(chuanyunUserCompanyDO.getUserId()).append(StringConstant.SEMICOLON);
+//                        projectMember.add(chuanyunUserCompanyDO.getUserId());
+//                    }
+//                }
+                chuanyunGroupProjectDO.setProjectMember(builder.toString());
+                chuanyunGroupProjectDO.setProjectMemberList(projectMember.toArray(new String[0]));
+                log.info("成员已更新"+chuanyunGroupProjectDO.getProjectCode()+chuanyunGroupProjectDO.getProjectType());
+            }
+        }
+    }
+
+    /**
      * 获取供应商信息
      */
     private void getSupplier(){
@@ -409,6 +443,11 @@ public class ChuanyunBasicDataScheduledTask {
                         log.warn(chuanyunUserCompanyDO+"");
                         log.warn(exception.getMessage());
                     }
+                    try{
+                        ChuanYunConstant.USER_BUSINESS_GROUP.put(chuanyunUserCompanyDO.getUserId(),chuanyunCompanyDao.findByObjectId(chuanyunUserCompanyDO.getCompanyId()).getBusinessGroup());
+                    }catch (Exception e){
+                        log.warn("更新用户BG信息时发生异常"+e.getMessage());
+                    }
                     ChuanYunConstant.USER_DEPARTMENT.put(chuanyunUserCompanyDO.getUserId(),chuanyunUserCompanyDO.getDepartmentObject().getObjectId());
                 });
                 chuanyunUserCompanyDao.saveAll(result);
@@ -480,21 +519,20 @@ public class ChuanyunBasicDataScheduledTask {
         @JsonProperty("F0000011")
         private String ebgProjectManager;
 
-        /**
-         * 项目组成员(前端传数据用)
-         */
-        @JsonProperty("F0000034")
-        private String[] projectMemberlist;
-
-        /**
-         * 项目组织信息
-         */
-        @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true,fetch = FetchType.EAGER)
-        @JsonProperty("D001789Fd992bf8fbe114c9babe0f98cf676f8a2")
-//        @JsonProperty("D001789Fvspc68z01idftf5nqt66pkuc0")
-        private List<ChuanyunGroupProjectDetailDO> detailList;
-
+//        /**
+//         * 项目组成员(前端传数据用)
+//         */
+//        @JsonProperty("F0000034")
+//        private String[] projectMemberList;
 
+//        /**
+//         * 项目组织信息
+//         * TODO 这个DTO是用于更新氚云数据的,不需要使用@OneToMany注解吧?使用目的是啥
+//         */
+//        @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true,fetch = FetchType.EAGER)
+//        @JsonProperty("D001789Fd992bf8fbe114c9babe0f98cf676f8a2")
+////        @JsonProperty("D001789Fvspc68z01idftf5nqt66pkuc0")
+//        private List<ChuanyunGroupProjectDetailDO> detailList;
 
         public GroupProjectUpdateDTO() {
         }
@@ -510,12 +548,13 @@ public class ChuanyunBasicDataScheduledTask {
                 if(null!=chuanyunGroupProjectDO.getEbgProjectManagerObject()){
                     this.ebgProjectManager=chuanyunGroupProjectDO.getEbgProjectManagerObject().getObjectId();
                 }
-                if(null!=chuanyunGroupProjectDO.getProjectMemberlist()){
-                    this.projectMemberlist=chuanyunGroupProjectDO.getProjectMemberlist();
-                }
-                if(null!=chuanyunGroupProjectDO.getDetailList()){
-                    this.detailList=chuanyunGroupProjectDO.getDetailList();
-                }
+                //TODO 更新项目经理时更新项目组织信息会是这两个业务流程耦合,不方便后续维护需要考虑单独一个DTO作为更新项目组织信息的对象
+//                if(null!=chuanyunGroupProjectDO.getProjectMemberList()){
+//                    this.projectMemberList =chuanyunGroupProjectDO.getProjectMemberList();
+//                }
+//                if(null!=chuanyunGroupProjectDO.getDetailList()){
+//                    this.detailList=chuanyunGroupProjectDO.getDetailList();
+//                }
             }
         }
     }

+ 36 - 25
src/main/java/com/galaxis/manatee/task/ChuanyunHumanResourceScheduledTask.java

@@ -102,29 +102,8 @@ public class ChuanyunHumanResourceScheduledTask {
                             }
                         });
                         //判断所属部门是否正确
-                        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();
-                                    }
-                                }
-                            }
-                        });
+                        //目前已经通过excel方式更新完成这个方法暂时不需要使用
+//                        checkDepartment(chuanyunLogDO);
                     }
                     //处理项目userId
                     if(chuanyunLogDO.getUserObject()!=null){
@@ -144,9 +123,41 @@ public class ChuanyunHumanResourceScheduledTask {
     }
 
     /**
+     * 检查日志中人员所属部门和日志所属部门是否一致,用于处理手工excel导入日志造成的日志部门不一致的情况
+     * @param chuanyunLogDO 日志对象
+     */
+    @Deprecated
+    private void checkDepartment(ChuanyunLogDO chuanyunLogDO){
+        var objectMapper=new ObjectMapper();
+        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();
+                    }
+                }
+            }
+        });
+    }
+
+    /**
      * 法定假日薪资规则同步
      */
-    @Scheduled(fixedDelay = 1000000000L)
+    @Scheduled(fixedDelay = 86400000L)
     private void getHolidaySalaryRule() {
         var objectMapper = new ObjectMapper();
         var start = 0;
@@ -183,7 +194,7 @@ public class ChuanyunHumanResourceScheduledTask {
     /**
      * 凯乐士薪酬项同步
      */
-    @Scheduled(fixedDelay = 1000000000L)
+    @Scheduled(fixedDelay = 86400000L)
     private void getPayroll() {
         var objectMapper = new ObjectMapper();
         var start = 0;

+ 0 - 2
src/main/java/com/galaxis/manatee/task/ChuanyunScheduledTask.java

@@ -54,7 +54,6 @@ public class ChuanyunScheduledTask {
     /**
      * 定时将氚云中的数据保存到manatee
      */
-//    @Scheduled(fixedDelay = 43200000L)
     private void getDataFromChuanyun(){
         //获取项目数据
         getProjectInformationFromChuanyun();
@@ -63,7 +62,6 @@ public class ChuanyunScheduledTask {
     /**
      * 定时将物料信息从氚云中同步
      */
-//    @Scheduled(fixedDelay = 27600000L,initialDelay = 3600000L)
     public void materialInformationSync(){
         var pageSize=100;
         var start=0;

+ 3 - 5
src/main/java/com/galaxis/manatee/task/FixService.java

@@ -44,7 +44,6 @@ public class FixService {
     /**
      * 修复修改obejctId的问题,日志和报销
      */
-//    @Scheduled(fixedDelay = 999999999L)
     private void fixProject(){
 
         projectSwitchDao.findAll().forEach(projectSwitch -> {
@@ -88,7 +87,7 @@ public class FixService {
                             String bizObjectString=objectMapper.writeValueAsString(reimbursementDTO);
                             ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunReimbursementDO.SCHEMA_CODE,chuanyunReimbursementDO.getObjectId(),bizObjectString);
                             log.info(chuanyunSaveDTO+"");
-                        } catch (JsonProcessingException e) {
+                        } catch (Exception e) {
                             e.printStackTrace();
                         }
                     });
@@ -181,7 +180,7 @@ public class FixService {
                             try {
                                 ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunLogDO.SCHEMA_CODE,chuanyunLogDO.getObjectId(),objectMapper.writeValueAsString(logDTO));
                                 log.info(chuanyunSaveDTO+"");
-                            } catch (JsonProcessingException e) {
+                            } catch (Exception e) {
                                 e.printStackTrace();
                             }
                         });
@@ -342,10 +341,9 @@ public class FixService {
                             String bizObjectString=objectMapper.writeValueAsString(logDTO);
                             ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunLogDO.SCHEMA_CODE,chuanyunLogDO.getObjectId(),bizObjectString);
                             log.info(chuanyunSaveDTO+"");
-                        } catch (JsonProcessingException e) {
+                        } catch (Exception e) {
                             e.printStackTrace();
                         }
-
                     }
                     if(chuanyunDayLogList.size()>0){
                          try {

+ 4 - 3
src/main/java/com/galaxis/manatee/task/U9ScheduledTask.java

@@ -10,7 +10,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.http.HttpStatus;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -36,16 +35,18 @@ public class U9ScheduledTask {
 
     /**
      * 定时将manatee中的信息同步到claw中
+     * @deprecated U9自动从mysql中读取,不需要写到claw服务了
      */
-//    @Scheduled(fixedDelay = 600000L,initialDelay = 10000L)
+    @Deprecated
     private void projectInformationSync(){
         putProjectToClaw();
     }
 
     /**
      *
+     * @deprecated U9自动从mysql中读取,不需要写到claw服务了
      */
-//    @Scheduled(fixedDelay = 43200000L)
+    @Deprecated
     private void reimbursementInformationSync(){
         putReimbursementToClaw();
     }