Browse Source

调整策略2

DESKTOP-2K9OVK9\siwei 1 month ago
parent
commit
becc00bf0e

+ 85 - 59
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/zrzysite/impl/ZrzysiteCommonServiceImpl.java

@@ -17,6 +17,7 @@ import com.siwei.apply.service.JsgcghxkService;
 import com.siwei.apply.service.NodeAttachmentService;
 import com.siwei.apply.service.zrzysite.IZrzysiteCommonService;
 import com.siwei.apply.utils.ServiceFileUtil;
+import com.siwei.common.core.exception.ServiceException;
 import com.siwei.common.core.utils.DateUtils;
 import com.siwei.common.core.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -43,7 +44,6 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
     private JsgcghxkMapper jsgcghxkMapper;
 
 
-
     @Autowired
     private JsgcghxkService jsgcghxkService;
 
@@ -71,18 +71,57 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
         return zrzysiteConstructMapper.selectCount(filterVo);
     }
 
+    private final SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.YYYY_MM_DD);
+
+
+    /**
+     * 手动同步当前环节数据
+     * @param projectId
+     * @param nodeTableName
+     */
+    @Override
+    public void syncCurrentNodeInfo(String projectId,String nodeTableName) {
+        Project project = projectMapper.get(projectId);
+        if(Objects.isNull(project) || StringUtils.isBlank(project.getCode())){
+            throw new ServiceException("当前项目不具备同步条件,请检查项目代码是否存在");
+        }
+
+        List<ZrzysiteConstruct> constructList = zrzysiteConstructMapper.selectByXmdmList(new ArrayList<>(Collections.singleton(project.getCode())));
+        if (CollectionUtils.isEmpty(constructList)) {
+            return;
+        }
+        List<Jsgcghxk> JsgcghxkList   = jsgcghxkMapper.get(projectId);
+        Map<String,String> resSourceIdMap = JsgcghxkList.stream().filter(obj -> StringUtils.isNotBlank(obj.getSourceId())).collect(Collectors.toMap(Jsgcghxk::getSourceId, BaseId::getId));
+        //找出需要更新的节点id
+        List<String>  needUpdateNodeIdList =  JsgcghxkList.stream().filter(s->StringUtils.isBlank(s.getSourceId())).map(BaseId::getId).collect(Collectors.toList());
+        String addNodeId = "";
+        for (ZrzysiteConstruct construct : constructList) {
+            String needUpdateNodeId  = "";
+            if(resSourceIdMap.containsKey(construct.getSqbh())){
+                needUpdateNodeId = resSourceIdMap.get(construct.getSqbh());
+            }else if (!needUpdateNodeIdList.isEmpty()) {  // 取出头部元素并从集合删除
+                needUpdateNodeId  = needUpdateNodeIdList.remove(0);
+            }
+            addOrUpdatToTable(construct,projectId,needUpdateNodeId);
+            //这里进行文件处理
+            getNodeAttachment(projectId,addNodeId,construct.getSqbh(),AloneWorkFlowEnum.NODE_5.getName());
+        }//end for
+    }
+
+
+
+
     /**
      * 同步工程建设数据
      * @param sqbh
+     *
+     * 1.查询所有的项目数据,及当前节点数据,(不存在的,未上链的。)
+     * 2.遍历这些数据,从Oracle中,根据项目号进行查询。
+     * 3.如果查到一条数据,然后进行入库一系列的操作。
+     * 4.不进行上链,上链操作,通过其他定时任务完成。
      */
     @Override
     public void syncConstructInfo(String sqbh) {
-        /**
-         * 1.查询所有的项目数据,及当前节点数据,不存在的,未上链的。
-         * 2.遍历这些数据,从Oracle中,根据项目号进行查询。
-         * 3.如果查到一条数据,然后进行入库一系列的操作。
-         * 4.不进行上链,上链操作,通过其他定时任务完成。
-         */
 
         // 批量查询所有  项目名称,项目代码,workflow表中是否存在。如果存在,则不处理,如果不存在则处理。
         List<Project> constructProjectList = projectMapper.getZrzysiteProjectList("t_jsgcghxk");
@@ -97,7 +136,6 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
             Map<String, List<ZrzysiteConstruct>> codeToConstructMap = constructList.stream()
                     .collect(Collectors.groupingBy(ZrzysiteConstruct::getXmdm));
 
-
             LinkedHashMap<Project, List<ZrzysiteConstruct>> zrzysiteConstructMap = new LinkedHashMap<>();
             for (Project project : constructProjectList) {
                 List<ZrzysiteConstruct> items = codeToConstructMap.getOrDefault(project.getCode(), new ArrayList<>());
@@ -105,10 +143,10 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
                     zrzysiteConstructMap.put(project, items);
                 }
             }
-
             log.info("到这里来了");
             addConstructInfoToDataBase(zrzysiteConstructMap);
         }
+        log.info("当前批次执行完毕");
     }
 
 
@@ -118,7 +156,6 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
      * @param zrzysiteConstructMap
      */
     public void addConstructInfoToDataBase(Map<Project, List<ZrzysiteConstruct>> zrzysiteConstructMap) {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         for (Map.Entry<Project, List<ZrzysiteConstruct>> entry : zrzysiteConstructMap.entrySet()) {
             Project project = entry.getKey();
             List<ZrzysiteConstruct> constructList = entry.getValue();
@@ -128,7 +165,10 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
             String projectId = project.getId();
             //来源类型。1.节点不存在的项目。2.节点存在的项目
             String sourceType = project.getCreatorId();
-            if("2".equals(sourceType)){ //修改和新增的情况
+
+            String addNodeId = "";
+            if("2".equals(sourceType)){
+                //修改和新增的情况
                 List<Jsgcghxk> JsgcghxkList   = jsgcghxkMapper.get(projectId);
                 //1.如果有一个节点已经上链,直接外层跳过
                 Optional<Jsgcghxk> hasOnchainRes = JsgcghxkList.stream().filter(Jsgcghxk::getHasOnchain).findFirst();
@@ -152,7 +192,6 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
                 //找出需要更新的节点id
                 List<String>  needUpdateNodeIdList =  JsgcghxkList.stream().filter(s->StringUtils.isBlank(s.getSourceId())).map(BaseId::getId).collect(Collectors.toList());
 
-                String addNodeId = "";
                 for (ZrzysiteConstruct construct : constructList) {
                     String needUpdateNodeId  = "";
                     // 取出头部元素并从集合删除
@@ -160,63 +199,53 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
                         needUpdateNodeId  = needUpdateNodeIdList.remove(0);
                     }
 
-                    if(StringUtils.isNotBlank(needUpdateNodeId)){
-                        JsgcghxkUpdateVo jsgcghxkUpdateVo = new JsgcghxkUpdateVo();
-                        jsgcghxkUpdateVo.setId(needUpdateNodeId);
-                        jsgcghxkUpdateVo.setProjectId(projectId);
-                        jsgcghxkUpdateVo.setYddw(construct.getYdwz());
-                        jsgcghxkUpdateVo.setYddw(construct.getXddw());
-                        jsgcghxkUpdateVo.setJsgm(construct.getJsgm());
-                        jsgcghxkUpdateVo.setZsbh(construct.getZsbh());
-                        jsgcghxkUpdateVo.setFzjg(construct.getFadw());
-                        jsgcghxkUpdateVo.setSourceId(construct.getSqbh());
-                        jsgcghxkService.update(jsgcghxkUpdateVo);
-                        addNodeId = needUpdateNodeId;
-                    }else {
-                        JsgcghxkVo vo = new JsgcghxkVo();
-                        vo.setProjectId(projectId);
-                        vo.setYdwz(construct.getYdwz());
-                        vo.setYddw(construct.getXddw());
-                        vo.setJsgm(construct.getJsgm());
-                        vo.setZsbh(construct.getZsbh());
-                        vo.setFzjg(construct.getFadw());
-                        vo.setSourceId(construct.getSqbh());
-                        if (construct.getFzrq() != null) {
-                            vo.setFzDate(sdf.format(construct.getFzrq()));
-                        }
-                        addNodeId = jsgcghxkService.add(vo);
-                    }
+                    addNodeId = addOrUpdatToTable(construct,projectId,needUpdateNodeId);
                     //这里进行文件处理
                     getNodeAttachment(projectId,addNodeId,construct.getSqbh(),AloneWorkFlowEnum.NODE_5.getName());
                 }//end for
-
             }else if("1".equals(sourceType)){ //只存在新增情况
                 for (ZrzysiteConstruct construct : constructList) {
-                    JsgcghxkVo vo = new JsgcghxkVo();
-                    vo.setProjectId(projectId);
-                    vo.setYdwz(construct.getYdwz());
-                    vo.setYddw(construct.getXddw());
-                    vo.setJsgm(construct.getJsgm());
-                    vo.setZsbh(construct.getZsbh());
-                    vo.setFzjg(construct.getFadw());
-                    vo.setSourceId(construct.getSqbh());
-                    if (construct.getFzrq() != null) {
-                        vo.setFzDate(sdf.format(construct.getFzrq()));
-                    }
-                    String addNodeId = jsgcghxkService.add(vo);
+                    addNodeId = addOrUpdatToTable(construct,projectId,"");
                     //这里进行文件处理
                     getNodeAttachment(projectId,addNodeId,construct.getSqbh(),AloneWorkFlowEnum.NODE_5.getName());
                 }
-            }
 
+            }
         }// end for
-
     }
 
 
 
-
-
+    public String  addOrUpdatToTable(ZrzysiteConstruct construct,String projectId,String needUpdateNodeId) {
+        String addNodeId = "";
+        if(StringUtils.isNotBlank(needUpdateNodeId)){
+            JsgcghxkUpdateVo jsgcghxkUpdateVo = new JsgcghxkUpdateVo();
+            jsgcghxkUpdateVo.setId(needUpdateNodeId);
+            jsgcghxkUpdateVo.setProjectId(projectId);
+            jsgcghxkUpdateVo.setYddw(construct.getYdwz());
+            jsgcghxkUpdateVo.setYddw(construct.getXddw());
+            jsgcghxkUpdateVo.setJsgm(construct.getJsgm());
+            jsgcghxkUpdateVo.setZsbh(construct.getZsbh());
+            jsgcghxkUpdateVo.setFzjg(construct.getFadw());
+            jsgcghxkUpdateVo.setSourceId(construct.getSqbh());
+            jsgcghxkService.update(jsgcghxkUpdateVo);
+            addNodeId = needUpdateNodeId;
+        }else {
+            JsgcghxkVo vo = new JsgcghxkVo();
+            vo.setProjectId(projectId);
+            vo.setYdwz(construct.getYdwz());
+            vo.setYddw(construct.getXddw());
+            vo.setJsgm(construct.getJsgm());
+            vo.setZsbh(construct.getZsbh());
+            vo.setFzjg(construct.getFadw());
+            vo.setSourceId(construct.getSqbh());
+            if (construct.getFzrq() != null) {
+                vo.setFzDate(sdf.format(construct.getFzrq()));
+            }
+            addNodeId = jsgcghxkService.add(vo);
+        }
+        return addNodeId;
+    }
 
 
 
@@ -240,11 +269,8 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
             List<ZrzysiteAttachment> zrzysiteAttachmentList = zrzysiteAttachmentMapper.selectByApplyinstId(sourceId);
             //这里增加一个方法,把文件下载下来
 
-            //先创建一个跟路径
-            //fileDownLoadPath = ServiceFileUtil.createDirectory(nodeName);
-
             if (CollectionUtils.isNotEmpty(zrzysiteAttachmentList)) {
-                String[] subDirectoryNameArr =  zrzysiteAttachmentList.stream().map(s->s.getClmc()).collect(Collectors.toSet()).toArray(new String[0]);
+                String[] subDirectoryNameArr = zrzysiteAttachmentList.stream().map(ZrzysiteAttachment::getClmc).distinct().toArray(String[]::new);
                 //先删除相关目录
                 for(String subDirectoryName : subDirectoryNameArr){
                     ServiceFileUtil.deleteDirectory(subDirectoryName);