Преглед на файлове

1.更新了异步调用的方法

verguenza преди 5 години
родител
ревизия
7de197696e

+ 7 - 11
src/main/java/com/galaxis/manatee/controller/GetController.java

@@ -2,6 +2,7 @@ package com.galaxis.manatee.controller;
 
 import com.galaxis.manatee.service.ChuanyunService;
 import com.galaxis.manatee.task.ChuanyunHumanResourceScheduledTask;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -24,33 +25,28 @@ public class GetController {
 
     /**
      * 手动更新chuanyunPayRoll
-     * @return  提示信息
      */
+    @Async
     @GetMapping("/test/getChuanyunPayroll")
-    public String getChuanyunPayroll(){
+    public void getChuanyunPayroll(){
         chuanyunHumanResourceScheduledTask.getPayrollManually();
-        return "开始更新薪资数据";
     }
 
     /**
      * 手动更新日志
-     * @return
      */
+    @Async
     @GetMapping("/test/getUpdateLog")
-    public String getUpdateLog() {
+    public void getUpdateLog() {
         chuanyunHumanResourceScheduledTask.getUpdateLog();
-        return "开始更新日志";
     }
 
     /**
      * 手动更新项目组成员
-     * @return
      */
+    @Async
     @GetMapping("/test/getProjectMember")
-    public String getProjectMember() {
+    public void getProjectMember() {
         chuanyunService.updateProjectMember();
-        return "开始更新项目组成员";
     }
-
-
 }

+ 2 - 0
src/main/java/com/galaxis/manatee/service/ChuanyunService.java

@@ -1,5 +1,7 @@
 package com.galaxis.manatee.service;
 
+import org.springframework.scheduling.annotation.Async;
+
 /**
  * 氚云服务调用
  */

+ 24 - 56
src/main/java/com/galaxis/manatee/service/impl/ChuanyunServiceImpl.java

@@ -4,7 +4,6 @@ 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.manatee.dao.ChuanyunGroupProjectDao;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunGroupProjectDO;
 import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
 import com.galaxis.manatee.entity.chuanyun.dto.Filter;
@@ -12,35 +11,33 @@ import com.galaxis.manatee.exception.BigSizeException;
 import com.galaxis.manatee.manager.ChuanYunManager;
 import com.galaxis.manatee.service.ChuanyunService;
 import com.galaxis.manatee.task.ChuanyunBasicDataScheduledTask;
-import com.galaxis.manatee.task.ChuanyunHumanResourceScheduledTask;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
 
+/**
+ * @author chongjiezhong
+ */
 @Slf4j
 @Service
 public class ChuanyunServiceImpl implements ChuanyunService {
 
     private final Integer pageSize=20;
-    private final ChuanyunHumanResourceScheduledTask chuanyunHumanResourceScheduledTask;
     private final ChuanyunBasicDataScheduledTask chuanyunBasicDataScheduledTask;
     private final ChuanYunManager chuanYunManager;
-    private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
 
-    public ChuanyunServiceImpl(ChuanyunHumanResourceScheduledTask chuanyunHumanResourceScheduledTask, ChuanyunBasicDataScheduledTask chuanyunBasicDataScheduledTask, ChuanYunManager chuanYunManager, ChuanyunGroupProjectDao chuanyunGroupProjectDao) {
-        this.chuanyunHumanResourceScheduledTask = chuanyunHumanResourceScheduledTask;
+    public ChuanyunServiceImpl(ChuanyunBasicDataScheduledTask chuanyunBasicDataScheduledTask, ChuanYunManager chuanYunManager) {
         this.chuanyunBasicDataScheduledTask = chuanyunBasicDataScheduledTask;
         this.chuanYunManager = chuanYunManager;
-        this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
     }
 
     @Override
     public void updateProjectMember() {
         var objectMapper=new ObjectMapper();
         var start=0;
-        var totalCount=0L;
         var flag=true;
         while (flag){
             try {
@@ -58,29 +55,31 @@ public class ChuanyunServiceImpl implements ChuanyunService {
                 }
                 //转化为POJO
                 List<ChuanyunGroupProjectDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
-                //获取项目总数
-                totalCount=chuanyunFindAllResponse.getReturnData().getTotalCount();
                 //保存
                 result.forEach(chuanyunGroupProjectDO ->  {
 
                     //处理项目对象中的项目成员数据(改为手动调用处理)
-                    GroupProjectUpdateDTO groupProjectUpdateDTO= new GroupProjectUpdateDTO();
                     chuanyunBasicDataScheduledTask.projectMemberCheck(chuanyunGroupProjectDO);
-                    try {
-                        groupProjectUpdateDTO=new GroupProjectUpdateDTO(chuanyunGroupProjectDO);
-                        var groupProjectUpdateString=objectMapper.writeValueAsString(groupProjectUpdateDTO);
-                        ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId(),groupProjectUpdateString);
-                        if(chuanyunSaveDTO.getSuccessful()){
-                            log.info(chuanyunGroupProjectDO.getObjectId()+"更新项目组成员成功");
+                    //只处理项目成员为空的情况
+                    boolean emptyFlag= chuanyunGroupProjectDO.getProjectMemberList()==null||chuanyunGroupProjectDO.getProjectMemberList().length==0;
+                    if(emptyFlag){
+                        GroupProjectUpdateDTO groupProjectUpdateDTO= new GroupProjectUpdateDTO(chuanyunGroupProjectDO);
+                        //生成更新数据后校验数据是否增加成功
+                        if(groupProjectUpdateDTO.getProjectMemberList()!=null&&groupProjectUpdateDTO.getProjectMemberList().length!=0){
+                            try {
+                                var groupProjectUpdateString=objectMapper.writeValueAsString(groupProjectUpdateDTO);
+                                ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId(),groupProjectUpdateString);
+                                if(chuanyunSaveDTO.getSuccessful()){
+                                    log.info(chuanyunGroupProjectDO.getObjectId()+"更新项目组成员成功");
 
-                        }else{
-                            log.warn(chuanyunGroupProjectDO.getObjectId()+"更新项目组成员失败");
-                            log.warn(chuanyunGroupProjectDO+"");
+                                }else{
+                                    log.warn(chuanyunGroupProjectDO.getObjectId()+"更新项目组成员失败");
+                                    log.warn(chuanyunGroupProjectDO+"");
+                                }
+                            } catch (BigSizeException | JsonProcessingException e) {
+                                e.printStackTrace();
+                            }
                         }
-                    } catch (BigSizeException e) {
-                        e.printStackTrace();
-                    } catch (JsonProcessingException e) {
-                        e.printStackTrace();
                     }
                 });
             }catch (Exception e){
@@ -94,25 +93,7 @@ public class ChuanyunServiceImpl implements ChuanyunService {
      * 用于刷新项目经理权限的对象
      */
     @Data
-    class GroupProjectUpdateDTO{
-//        /**
-//         * 项目总监
-//         * U9项目责任人
-//         */
-//        @JsonProperty(value = "F0000006")
-//        private String projectOwner;
-//
-//        /**
-//         * IBG项目经理
-//         */
-//        @JsonProperty("F0000012")
-//        private String ibgProjectManager;
-//
-//        /**
-//         * EBG项目经理
-//         */
-//        @JsonProperty("F0000011")
-//        private String ebgProjectManager;
+    static class GroupProjectUpdateDTO{
 
         /**
          * 项目组成员(前端传数据用)
@@ -120,21 +101,8 @@ public class ChuanyunServiceImpl implements ChuanyunService {
         @JsonProperty("F0000034")
         private String[] projectMemberList;
 
-
-        public GroupProjectUpdateDTO() {
-        }
-
         public GroupProjectUpdateDTO(ChuanyunGroupProjectDO chuanyunGroupProjectDO) {
             if(null!=chuanyunGroupProjectDO){
-//                if(null!=chuanyunGroupProjectDO.getProjectOwnerObject()){
-//                    this.projectOwner=chuanyunGroupProjectDO.getProjectOwnerObject().getObjectId();
-//                }
-//                if(null!=chuanyunGroupProjectDO.getIbgProjectManagerObject()){
-//                    this.ibgProjectManager=chuanyunGroupProjectDO.getIbgProjectManagerObject().getObjectId();
-//                }
-//                if(null!=chuanyunGroupProjectDO.getEbgProjectManagerObject()){
-//                    this.ebgProjectManager=chuanyunGroupProjectDO.getEbgProjectManagerObject().getObjectId();
-//                }
                 if(null!=chuanyunGroupProjectDO.getProjectMemberList()){
                     this.projectMemberList =chuanyunGroupProjectDO.getProjectMemberList();
                 }

+ 0 - 22
src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java

@@ -545,21 +545,6 @@ public class ChuanyunBasicDataScheduledTask {
         @JsonProperty("F0000011")
         private String ebgProjectManager;
 
-//        /**
-//         * 项目组成员(前端传数据用)
-//         */
-//        @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() {
         }
 
@@ -574,13 +559,6 @@ public class ChuanyunBasicDataScheduledTask {
                 if(null!=chuanyunGroupProjectDO.getEbgProjectManagerObject()){
                     this.ebgProjectManager=chuanyunGroupProjectDO.getEbgProjectManagerObject().getObjectId();
                 }
-                //TODO 更新项目经理时更新项目组织信息会是这两个业务流程耦合,不方便后续维护需要考虑单独一个DTO作为更新项目组织信息的对象
-//                if(null!=chuanyunGroupProjectDO.getProjectMemberList()){
-//                    this.projectMemberList =chuanyunGroupProjectDO.getProjectMemberList();
-//                }
-//                if(null!=chuanyunGroupProjectDO.getDetailList()){
-//                    this.detailList=chuanyunGroupProjectDO.getDetailList();
-//                }
             }
         }
     }

+ 1 - 1
src/main/java/com/galaxis/manatee/task/ChuanyunFinancialScheduledTask.java

@@ -51,7 +51,7 @@ public class ChuanyunFinancialScheduledTask {
     /**
      * 将报销信息从氚云中同步
      */
-    @Scheduled(fixedDelay = 3600000L,initialDelay = 10000L)
+    @Scheduled(cron = "0 0 2 * * *")
     private void reimbursementInformationSync(){
         getReimbursementFromChuanyun();
     }

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

@@ -49,12 +49,10 @@ public class ChuanyunHumanResourceScheduledTask {
     /**
      * 提供一个外部调用接口
      */
-    @Async
     public void getPayrollManually(){
         this.getPayroll();
     }
 
-    @Async
     public void getUpdateLog() {
         this.updateLog();
     }