Procházet zdrojové kódy

增加了工单信息
修改了数据造成的流程报错

verguenza před 5 roky
rodič
revize
cb6d7b24b7

+ 9 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunDayLog.java

@@ -53,6 +53,15 @@ public class ChuanyunDayLog extends BasicSubDO{
     @JsonProperty("factoryLocation")
     private String factoryLocationId;
     /**
+     * 订单号
+     */
+    @JsonProperty("F0000054")
+    private String ticketId;
+    /**
+     * 项目类日志的项目编号,工厂类项目的工厂编号
+     */
+    private String projectCode;
+    /**
      * 工时
      */
     private BigDecimal hoursWorked;

+ 58 - 21
src/main/java/com/galaxis/manatee/task/ChuanyunHumanResourceScheduledTask.java

@@ -2,14 +2,18 @@ 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.ChuanyunLogDao;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunGroupProjectDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunLogDO;
 import com.galaxis.manatee.entity.chuanyun.dto.Filter;
 import com.galaxis.manatee.manager.ChuanYunManager;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -21,47 +25,80 @@ import java.util.List;
 @Service
 public class ChuanyunHumanResourceScheduledTask {
 
-    private final Integer pageSize=100;
+    private final Integer pageSize = 100;
     private final ChuanYunManager chuanYunManager;
     private final ChuanyunLogDao chuanyunLogDao;
+    private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
 
-    public ChuanyunHumanResourceScheduledTask(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao) {
+    public ChuanyunHumanResourceScheduledTask(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao) {
         this.chuanYunManager = chuanYunManager;
         this.chuanyunLogDao = chuanyunLogDao;
+        this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
     }
 
-//    @Scheduled(cron = "0 0 3 * * *")
+    //    @Scheduled(cron = "0 0 3 * * *")
     @Scheduled(fixedDelay = 1000000000L)
-    private void updateLog(){
-        var objectMapper=new ObjectMapper();
-        var start=0;
-        var totalCount=0L;
-        var flag=true;
-        while (flag){
+    private void updateLog() {
+        var objectMapper = new ObjectMapper();
+        var start = 0;
+        var totalCount = 0L;
+        var flag = true;
+        List<String> matchersString=new ArrayList<>();
+        matchersString.add("Status_2,1");
+        while (flag) {
             try {
                 //从氚云查询数据
-                var filter= Filter.instance(start,start+pageSize,true);
-                var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunLogDO.SCHEMA_CODE,filter);
-                if(chuanyunFindAllResponse.getReturnData()==null){
-                    flag=false;
+                var filter= Filter.instance(start,start+pageSize,true,Filter.AND,matchersString);
+                var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunLogDO.SCHEMA_CODE, filter);
+                if (chuanyunFindAllResponse.getReturnData() == null) {
+                    flag = false;
                     continue;
                 }
-                if(chuanyunFindAllResponse.getReturnData().getTotalCount()>=start+pageSize){
-                    start+=pageSize;
-                }else{
-                    flag=false;
+                if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
+                    start += pageSize;
+                } else {
+                    flag = false;
                 }
                 //转化为POJO
-                List<ChuanyunLogDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                List<ChuanyunLogDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
+                });
+                result.forEach(chuanyunLogDO -> {
+                    if(chuanyunLogDO.getDayLogList()==null||chuanyunLogDO.getDayLogList().size()==0){
+                        chuanyunLogDO.setDayLogList(new ArrayList<>());
+                        log.warn(chuanyunLogDO+"");
+                        log.warn("异常数据");
+                    }else{
+                        //如果有重复就删除
+                        chuanyunLogDao.findById(chuanyunLogDO.getObjectId()).ifPresent(toDelete -> {
+                            log.info("删除" + toDelete.getObjectId());
+                            chuanyunLogDao.delete(toDelete);
+                        });
+                        //根据projectId获取code,如果是生产项目,则不用处理
+                        //针对前期测试数据,可能出现日志为空的情况,跳过不处理
+                        chuanyunLogDO.getDayLogList().forEach(chuanyunDayLog -> {
+                            try{
+                                if(!"生产项目".equals(chuanyunDayLog.getProjectType())&& StringUtils.isEmpty(chuanyunDayLog.getProjectId())){
+                                    log.info(chuanyunLogDO+"");
+                                }else if(!"生产项目".equals(chuanyunDayLog.getProjectType())){
+                                    ChuanyunGroupProjectDO chuanyunGroupProjectDO=chuanyunGroupProjectDao.findById(chuanyunDayLog.getProjectId()).orElseThrow();
+                                    chuanyunDayLog.setProjectCode(chuanyunGroupProjectDO.getProjectCode());
+                                }
+                            }catch (Exception e){
+                                e.printStackTrace();
+                                log.warn(chuanyunDayLog+"");
+                            }
+                        });
+                    }
+                });
                 //获取项目总数
-                totalCount=chuanyunFindAllResponse.getReturnData().getTotalCount();
+                totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
                 //保存
                 chuanyunLogDao.saveAll(result);
-            }catch (Exception e){
+            } catch (Exception e) {
                 log.error(e.getMessage());
                 e.printStackTrace();
             }
         }
-        log.info("日志信息保存"+totalCount);
+        log.info("日志信息保存" + totalCount);
     }
 }

+ 1 - 1
src/main/resources/application.yml

@@ -46,7 +46,7 @@ spring:
     password: ${PASSWORD}
   jpa:
     hibernate:
-      ddl-auto: none
+      ddl-auto: update
 claw:
   url: ${CLAW_URL}
 logging: