Explorar o código

1.新增手动更新日志和项目组成员

WoNiu %!s(int64=5) %!d(string=hai) anos
pai
achega
c922447f30

+ 26 - 3
src/main/java/com/galaxis/manatee/controller/GetController.java

@@ -1,11 +1,10 @@
 package com.galaxis.manatee.controller;
 
+import com.galaxis.manatee.service.ChuanyunService;
 import com.galaxis.manatee.task.ChuanyunHumanResourceScheduledTask;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.net.http.HttpResponse;
-
 /**
  * 提供手工触发更新氚云数据的接口
  * @author zcj
@@ -16,9 +15,11 @@ import java.net.http.HttpResponse;
 public class GetController {
 
     private final ChuanyunHumanResourceScheduledTask chuanyunHumanResourceScheduledTask;
+    private final ChuanyunService chuanyunService;
 
-    public GetController(ChuanyunHumanResourceScheduledTask chuanyunHumanResourceScheduledTask) {
+    public GetController(ChuanyunHumanResourceScheduledTask chuanyunHumanResourceScheduledTask, ChuanyunService chuanyunService) {
         this.chuanyunHumanResourceScheduledTask = chuanyunHumanResourceScheduledTask;
+        this.chuanyunService = chuanyunService;
     }
 
     /**
@@ -30,4 +31,26 @@ public class GetController {
         chuanyunHumanResourceScheduledTask.getPayrollManually();
         return "开始更新薪资数据";
     }
+
+    /**
+     * 手动更新日志
+     * @return
+     */
+    @GetMapping("/test/getUpdateLog")
+    public String getUpdateLog() {
+        chuanyunHumanResourceScheduledTask.getUpdateLog();
+        return "开始更新日志";
+    }
+
+    /**
+     * 手动更新项目组成员
+     * @return
+     */
+    @GetMapping("/test/getProjectMember")
+    public String getProjectMember() {
+        chuanyunService.updateProjectMember();
+        return "开始更新项目组成员";
+    }
+
+
 }

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

@@ -0,0 +1,12 @@
+package com.galaxis.manatee.service;
+
+/**
+ * 氚云服务调用
+ */
+public interface ChuanyunService {
+
+    /**
+     * 更新项目组成员
+     */
+    void updateProjectMember();
+}

+ 92 - 0
src/main/java/com/galaxis/manatee/service/impl/ChuanyunServiceImpl.java

@@ -0,0 +1,92 @@
+package com.galaxis.manatee.service.impl;
+
+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;
+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.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@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;
+        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 {
+                //从氚云查询数据
+                var filter= Filter.instance(start,start+pageSize,true);
+                var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunGroupProjectDO.SCHEMA_CODE,filter);
+                if(chuanyunFindAllResponse.getReturnData()==null){
+                    flag=false;
+                    continue;
+                }
+                if(chuanyunFindAllResponse.getReturnData().getTotalCount()>=start+pageSize){
+                    start+=pageSize;
+                }else{
+                    flag=false;
+                }
+                //转化为POJO
+                List<ChuanyunGroupProjectDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                //获取项目总数
+                totalCount=chuanyunFindAllResponse.getReturnData().getTotalCount();
+                //保存
+                result.forEach(chuanyunGroupProjectDO ->  {
+
+                    //处理项目对象中的项目成员数据(改为手动调用处理)
+                    chuanyunBasicDataScheduledTask.projectMemberCheck(chuanyunGroupProjectDO);
+                    try {
+                        ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId(),objectMapper.writeValueAsString(chuanyunGroupProjectDO));
+                        if(chuanyunSaveDTO.getSuccessful()){
+                            log.info(chuanyunGroupProjectDO.getObjectId()+"更新项目经理成功");
+
+                        }else{
+                            log.warn(chuanyunGroupProjectDO.getObjectId()+"更新项目经理失败");
+                            log.warn(chuanyunGroupProjectDO+"");
+                            Thread.sleep(5000L);
+                        }
+                    } catch (BigSizeException e) {
+                        e.printStackTrace();
+                    } catch (JsonProcessingException e) {
+                        e.printStackTrace();
+                    } catch (InterruptedException e) {
+                        e.printStackTrace();
+                    }
+
+                });
+                chuanyunGroupProjectDao.saveAll(result);
+            }catch (Exception e){
+                log.error(e.getMessage());
+                e.printStackTrace();
+            }
+        }
+    }
+}

+ 3 - 10
src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java

@@ -146,8 +146,8 @@ public class ChuanyunBasicDataScheduledTask {
                         chuanyunGroupProjectDao.delete(tmpGroupProjectDO.get());
                     });
 
-                    //处理项目对象中的项目成员数据
-                    projectMemberCheck(chuanyunGroupProjectDO);
+                    //处理项目对象中的项目成员数据(改为手动调用处理)
+//                    projectMemberCheck(chuanyunGroupProjectDO);
                     //处理项目对象中的项目经理、项目负责人数据
                     projectManagerCheck(chuanyunGroupProjectDO);
                 });
@@ -215,7 +215,7 @@ public class ChuanyunBasicDataScheduledTask {
      * 如果没有项目组成员,判断是否是EBG的实施、研发二开、售后维保项目,如果是,则添加EBG全体成员
      * @param chuanyunGroupProjectDO    项目对象
      */
-    private void projectMemberCheck(ChuanyunGroupProjectDO chuanyunGroupProjectDO){
+    public void projectMemberCheck(ChuanyunGroupProjectDO chuanyunGroupProjectDO){
         if (chuanyunGroupProjectDO.getProjectMemberList() != null) {
             List<String> memberList = new ArrayList<>();
             var builder = new StringBuilder();
@@ -245,13 +245,6 @@ public class ChuanyunBasicDataScheduledTask {
                         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());

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

@@ -54,6 +54,11 @@ public class ChuanyunHumanResourceScheduledTask {
         this.getPayroll();
     }
 
+    @Async
+    public void getUpdateLog() {
+        this.updateLog();
+    }
+
     /**
      * 每天3点更新日志记录
      */