Эх сурвалжийг харах

同步功能-多节点同步开发完成

LHB 2 сар өмнө
parent
commit
bec295c560

+ 7 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java

@@ -1,5 +1,8 @@
 package org.springblade.manager.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModelProperty;
@@ -23,8 +26,12 @@ public class WbsTreeContract extends BaseEntity {
      * 主键id
      */
     @ApiModelProperty(value = "主键id")
+    @TableId(value = "p_key_id", type = IdType.INPUT)
     private Long pKeyId;
 
+    @TableField
+    private Long id;
+
 
     @ApiModelProperty(value = "新节点Id")
     private Long pId;

+ 8 - 3
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeSynchronousRecord.java

@@ -1,11 +1,12 @@
 package org.springblade.manager.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.util.Date;
 import lombok.Data;
-import org.springblade.core.mp.base.BaseEntity;
+
+import java.util.Date;
 
 /**
  * WBS同步记录表
@@ -92,7 +93,11 @@ public class WbsTreeSynchronousRecord {
      * 状态(0-未同步,1-正在同步,2-已同步,3-同步失败)
      */
     private Integer status;
-
+    /**
+     * 错误信息
+     */
+    @TableField(updateStrategy = FieldStrategy.NOT_EMPTY)
+    private String errorMsg;
     /**
      * 创建时间
      */

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/enums/WbsSyncTypeEnum.java

@@ -31,7 +31,7 @@ public enum WbsSyncTypeEnum {
     /**
      * 编码
      */
-    private Integer code;
+    public Integer code;
 
     /**
      * 描述

+ 33 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousEViSaServiceImpl.java

@@ -0,0 +1,33 @@
+package org.springblade.manager.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.springblade.manager.entity.TextdictInfo;
+import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.mapper.TextdictInfoMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author LHB
+ */
+@Service
+public class WbsSynchronousEViSaServiceImpl {
+
+
+    //电签
+    @Autowired
+    private TextdictInfoMapper textdictInfoMapper;
+    @Transactional(rollbackFor = Exception.class)
+    public void updateTextDictInfo(Long projectId, List<Long> editPrivateIds, List<TextdictInfo> addData) {
+        //删除 需要新增的节点的电签和默认值
+        textdictInfoMapper.delete(Wrappers.<TextdictInfo>lambdaQuery()
+                .eq(TextdictInfo::getProjectId,projectId)
+                .in(TextdictInfo::getTabId,editPrivateIds));
+
+        textdictInfoMapper.insertBatchSomeColumn(addData);
+    }
+}

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 475 - 225
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousServiceImpl.java


+ 7 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1583,8 +1583,10 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 if (CollectionUtil.isEmpty(wbsTrees)) {
                     throw new ServiceException("模板节点未找到");
                 }
+                wbsTrees.add(wbsTreeTemplate);
                 templateNodes = BeanUtil.copyProperties(wbsTrees, WbsTreePrivate.class);
 
+
             } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
                 //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
                 WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()
@@ -1601,9 +1603,10 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         .eq(WbsTreePrivate::getIsDeleted, 0);
                 //判断如果为顶级顶级节点
                 if (wbsTreePrivate.getTreePId() != 0) {
-                    wrapperPrivate.apply("FIND_IN_SET({0},ancestors_p_id)", wbsTreePrivateRoot.getPId());
+                    wrapperPrivate.apply("FIND_IN_SET({0},ancestors_p_id)", wbsTreePrivateRoot.getPKeyId());
                 }
                 templateNodes = baseMapper.selectList(wrapperPrivate);
+                templateNodes.add(wbsTreePrivate);
             }
 
             if (CollectionUtil.isEmpty(templateNodes)) {
@@ -1616,10 +1619,10 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             wrapperPrivate.eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getIsDeleted, 0);
             //判断如果为顶级顶级节点
             if (wbsTreePrivate.getTreePId() != 0) {
-                wrapperPrivate.apply("FIND_IN_SET({0},ancestors_p_id)", wbsTreePrivate.getPId());
+                wrapperPrivate.apply("FIND_IN_SET({0},ancestors_p_id)", wbsTreePrivate.getPKeyId());
             }
             List<WbsTreePrivate> wbsTreePrivates = baseMapper.selectList(wrapperPrivate);
-
+            wbsTreePrivates.add(wbsTreePrivate);
             if (wbsTreePrivates.isEmpty()) {
                 throw new ServiceException("无法找到模板对应节点,请检查模板节点");
             }
@@ -1730,7 +1733,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     for (WbsTreePrivate tree : addData) {
                         if (org.apache.commons.lang3.StringUtils.isNotBlank(tree.getHtmlUrl())) {
                             String[] split = tree.getHtmlUrl().split("/");
-                            String htmlUrl = file_path + "privateUrlCopy/" + tree.getPdfUrl() + "/" + split[split.length - 1];
+                            String htmlUrl = file_path + "privateUrlCopy/" + projectInfo.getId() + "/" + split[split.length - 1];
                             if (!urls.contains(tree.getHtmlUrl())) {
                                 urls.add(tree.getHtmlUrl());
                                 File file_in = ResourceUtil.getFile(tree.getHtmlUrl());

+ 25 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeSynchronousRecordServiceImpl.java

@@ -1,11 +1,14 @@
 package org.springblade.manager.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.entity.WbsTreeSynchronousRecord;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
@@ -18,6 +21,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -42,7 +46,7 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
                 .select(WbsTreeSynchronousRecord::getNodeId)
                 .eq(WbsTreeSynchronousRecord::getProjectId, mWbsTreeSynchronousRecord.getProjectId())
                 .eq(WbsTreeSynchronousRecord::getIsDeleted, 0)
-                .in(WbsTreeSynchronousRecord::getStatus, 1, 2));
+                .in(WbsTreeSynchronousRecord::getStatus, 0, 1));
         List<String> nodeIds = wbsTreeSynchronousRecords.stream().map(WbsTreeSynchronousRecord::getNodeId).collect(Collectors.toList());
 
         //所有子节点集合
@@ -59,9 +63,17 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
                 );
                 privateIds.add(Long.valueOf(s));
                 privateIds.addAll(wbsTreePrivates.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList()));
+
+
+                //  //判断节点类型  如果是试验或计量则不允许添加合同合同段
+                WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectById(nodeId);
+                if (mWbsTreeSynchronousRecord.getRange() == 2 && wbsTreePrivate != null && !Objects.equals(wbsTreePrivate.getWbsType(), 1)) {
+                    throw new ServiceException(wbsTreePrivate.getNodeName() + " 节点不是质检类型,无法同步合同段");
+                }
             }
         }
 
+
         //记录选中节点下的表单数
         int count = 0;
         String[] newNodeIds = mWbsTreeSynchronousRecord.getNodeId().split(",");
@@ -94,29 +106,33 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
 
     /**
      * 同步节点表单
-     *  定时检查同步任务,状态为1的数据如果最后更新时间与当前时间超过10分钟,则修改状态为1
+     * 定时检查同步任务,状态为1的数据如果最后更新时间与当前时间超过10分钟,则修改状态为1
      */
     @Scheduled(fixedDelay = 10000)
     public void syncInit() {
         List<WbsTreeSynchronousRecord> wbsTreeSynchronousRecords = baseMapper.selectList(new QueryWrapper<WbsTreeSynchronousRecord>().lambda()
-                .in(WbsTreeSynchronousRecord::getStatus, 0,1)
+                .in(WbsTreeSynchronousRecord::getStatus, 0, 1)
                 .eq(WbsTreeSynchronousRecord::getIsDeleted, 0)
                 .orderByAsc(WbsTreeSynchronousRecord::getCreateTime)
                 .last("limit 10")
         );
 
         for (WbsTreeSynchronousRecord wbsTreeSynchronousRecord : wbsTreeSynchronousRecords) {
-            if(wbsTreeSynchronousRecord.getStatus() == 1){
+            if (wbsTreeSynchronousRecord.getStatus() == 1) {
                 if (wbsTreeSynchronousRecord.getUpdateTime().getTime() + 600000 < System.currentTimeMillis()) {
-                    wbsTreeSynchronousRecord.setStatus(0);
-                    baseMapper.updateById(wbsTreeSynchronousRecord);
+
+                    baseMapper.update(null, Wrappers.<WbsTreeSynchronousRecord>lambdaUpdate()
+                            .set(WbsTreeSynchronousRecord::getStatus, 0)
+                            .eq(WbsTreeSynchronousRecord::getId, wbsTreeSynchronousRecord.getId()));
                 }
-            }else{
+            } else {
                 //通过线程池执行同步任务
                 wbsSynchronousService.syncExecute(wbsTreeSynchronousRecord);
                 //修改数据状态为正在同步
-                wbsTreeSynchronousRecord.setStatus(1);
-                baseMapper.updateById(wbsTreeSynchronousRecord);
+                baseMapper.update(null, Wrappers.<WbsTreeSynchronousRecord>lambdaUpdate()
+                        .set(WbsTreeSynchronousRecord::getStatus, 1)
+                        .set(WbsTreeSynchronousRecord::getUpdateTime, DateTime.now())
+                        .eq(WbsTreeSynchronousRecord::getId, wbsTreeSynchronousRecord.getId()));
             }
 
 

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно