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

Merge branch 'dev' of http://219.151.181.73:3000/zhuwei/bladex into dev

lvy преди 1 седмица
родител
ревизия
5c7976bc10

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/RangeInfo.java

@@ -49,6 +49,8 @@ public class RangeInfo {
     private List<Integer> gPass;
     @ApiModelProperty("容量")
     private String capacity;
+    @ApiModelProperty("是否复制本表:true-复制,false-不复制")
+    private Boolean isCopyThisData = false;
     private List<Integer> gCapacity;
 
     public Boolean verify() {

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreeContractClient.java

@@ -208,7 +208,7 @@ public interface WbsTreeContractClient {
     void saveNameRuleByPkeyId(@RequestParam Long  pKeyId, @RequestParam String s,  @RequestParam Long projectId);
 
     @PostMapping(API_PREFIX + "/queryListByPIds")
-    List<WbsTreeContract> queryListByPIds(@RequestBody List<Long> pIds);
+    List<WbsTreeContract> queryListByPIds(@RequestBody List<Long> pIds,@RequestParam Integer classify);
 
     @PostMapping(API_PREFIX + "/findIsExistTreeNode")
     Integer findIsExistTreeNode(@RequestBody List<String> ids);

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1275,7 +1275,7 @@ public class InformationWriteQueryController extends BladeController {
         } else { //质检
             //记录选中节点的所有表单旧html
             List<Long> list = Arrays.stream(startTaskVO.getIds().split(",")).map(Long::parseLong).collect(Collectors.toList());
-            List<WbsTreeContract> wbsTreeContracts =  wbsTreeContractClient.queryListByPIds(list);
+            List<WbsTreeContract> wbsTreeContracts =  wbsTreeContractClient.queryListByPIds(list,startTaskVO.getClassify());
 
 
             businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, startTaskVO.getIds().replaceAll(",", "")).eq(InformationQuery::getClassify, startTaskVO.getClassify().toString()).eq(InformationQuery::getType, 1).last("order by id desc limit 1"));

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java

@@ -497,8 +497,8 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
 
 
     @Override
-    public List<WbsTreeContract> queryListByPIds(List<Long> pIds) {
-        return wbsTreeContractService.queryListByPIds(pIds);
+    public List<WbsTreeContract> queryListByPIds(List<Long> pIds, Integer classify) {
+        return wbsTreeContractService.queryListByPIds(pIds, classify);
     }
 
     @Override

+ 4 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java

@@ -61,7 +61,7 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
 
 
     List<ArchiveTreeContractVO2> lazyTree2(@Param("tenantId") String tenantId, @Param("parentId") Long parentId, @Param("projectId") Long projectId
-            , @Param("code") String code, @Param("contractId") String contractId);
+            , @Param("code") String code, @Param("contractId") String contractId, @Param("extType") Integer extType);
 
     /**
      * 归档树不带文件数量
@@ -187,4 +187,7 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
     List<ArchiveTreeContract> getOutNodes(@Param("projectId")Long projectId);
 
     List<ArchiveTreeContract> getOutNodesByOutIds(@Param("projectId")Long projectId,@Param("ids") List<String> outIds);
+
+    Integer selectExtTypeByParentId(@Param("projectId")Long projectId,
+                                    @Param("parentId") Long parentId);
 }

+ 44 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -172,9 +172,9 @@
         <result column="reviewer" property="reviewer"/>
         <result column="specification" property="specification"/>
         <result column="archive_name_suffix" property="archiveNameSuffix"/>
-        <!--        <result column="tree_number" property="treeNumber"/>-->
-        <association property="treeNumber" javaType="java.lang.Integer" select="selectFileNumber"
-                     column="{id=id,projectId=project_id,code=code,contractId=contract_id,extType=ext_type}"/>
+        <result column="tree_number" property="treeNumber"/>
+<!--        <association property="treeNumber" javaType="java.lang.Integer" select="selectFileNumber"-->
+<!--                     column="{id=id,projectId=project_id,code=code,contractId=contract_id,extType=ext_type}"/>-->
     </resultMap>
 
 
@@ -272,11 +272,45 @@
         d.specification,
         d.archive_name_suffix,
         d.contract_id,
-        d.project_id,
-        #{code} as code,
+        IFNULL(SUM(file_counts.count), 0) AS tree_number,
         (SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_archive_tree_contract WHERE parent_id = d.id and is_deleted = 0 and project_id = #{projectId}) AS "has_children"
         FROM
         m_archive_tree_contract d
+        LEFT JOIN (
+            -- 合并两个统计查询
+            SELECT
+                a.id,
+                a.ancestors,
+                SUM(b.count) AS count
+            FROM
+                m_archive_tree_contract a
+            INNER JOIN (
+                SELECT node_id AS id, COUNT(*) AS count
+                FROM u_archive_file
+                WHERE project_id = #{projectId}
+                AND is_deleted = 0
+                AND (is_auto_file IS NULL OR is_auto_file != 1)
+                GROUP BY node_id
+                <if test="extType > 0">
+                    UNION ALL
+
+                    SELECT node_ext_id AS id, COUNT(*) AS count
+                    FROM u_archive_file
+                    WHERE project_id = #{projectId}
+                    AND is_deleted = 0
+                    AND (is_auto_file IS NULL OR is_auto_file != 1)
+                    GROUP BY node_ext_id
+                </if>
+            ) b ON b.id = a.id
+            WHERE
+                a.is_deleted = 0
+                <if test="code!=null and code!=''">
+                    AND (a.tree_code = #{code} or a.tree_code = #{contractId} or a.parent_id = 0)
+                </if>
+            GROUP BY
+                a.id
+        ) file_counts ON file_counts.id = d.id
+        OR file_counts.ancestors like concat(d.ancestors,',',d.id,'%')
         WHERE
         d.parent_id = #{parentId} AND d.is_deleted = 0 and project_id = #{projectId}
         <if test="tenantId!=null and tenantId!=''">
@@ -285,6 +319,8 @@
         <if test="code!=null and code!=''">
             AND (d.tree_code = #{code} or d.tree_code = #{contractId} or d.parent_id = 0)
         </if>
+        GROUP BY
+        d.id
         ORDER BY d.tree_sort, d.sort
     </select>
     <!-- 归档数不带文件数量 -->
@@ -980,4 +1016,7 @@
             #{id}
         </foreach>
     </select>
+    <select id="selectExtTypeByParentId" resultType="java.lang.Integer">
+        select count(0) from m_archive_tree_contract where project_id = #{projectId} and ext_type = 2 and is_deleted = 0 and FIND_IN_SET(#{parentId},ancestors)
+    </select>
 </mapper>

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java

@@ -98,10 +98,10 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     Integer findIsExistTreeNode(List<String> ids);
 
-    List<WbsTreeContract> queryListByPIds(List<Long> pIds);
 
     List<APIWbsContractSubdivisionVo> getWbsContractSubdivision(String contractId);
 
+    List<WbsTreeContract> queryListByPIds(List<Long> pIds, Integer classify);
     ResponseEntity<Resource> exportTree(Long contractId, HttpServletResponse response) throws IOException, InvalidFormatException;
 
     R importPartitionCode(MultipartFile file);

+ 4 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -196,7 +196,10 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 			tenantId = StringPool.EMPTY;
 		}
 		if(type != null && type == 1){
-			return ForestNodeMergerEx.merge(baseMapper.lazyTree2(tenantId, parentId,projectId,getAuthCode(contractId),getAuthContractId(contractId)));
+			//当前节点子节点是否存在ext_type = 2 的数据
+			Integer extType = baseMapper.selectExtTypeByParentId(projectId,parentId);
+
+			return ForestNodeMergerEx.merge(baseMapper.lazyTree2(tenantId, parentId,projectId,getAuthCode(contractId),getAuthContractId(contractId), extType));
 		}
 		return ForestNodeMergerEx.merge(baseMapper.lazyTree3(tenantId, parentId,projectId,getAuthCode(contractId),getAuthContractId(contractId)));
 	}

+ 161 - 23
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -893,6 +893,72 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     public boolean addTabInfoByRan(RangeInfo info, List<Object> moreData, String[] excLenght) throws InterruptedException {
         WbsTreeContract wbsInfo = this.baseMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, info.getPkId()));
+        // ,key1=value1,key2=value2
+        StringBuilder update = new StringBuilder();
+        // ,key1,key2
+        StringBuilder insert = new StringBuilder();
+        // ,value1,value2
+        StringBuilder insertValue = new StringBuilder();
+        // ,value1,value2
+        StringBuilder key201Value = new StringBuilder();
+        //解析html
+//        if(info.getIsCopyThisData()){
+        List<String> keys = new ArrayList<>();
+        try {
+            String fileUrl = wbsInfo.getHtmlUrl();
+            InputStream fileInputStream = org.springblade.manager.utils.FileUtils.getInputStreamByUrl(fileUrl);
+
+            String htmlString = IoUtil.readToString(fileInputStream);
+            // 样式集合
+            Document doc = Jsoup.parse(htmlString);
+
+            //获取所有照片
+            Elements selectImgs = doc.select("hc-table-form-upload");
+            for (Element element : selectImgs) {
+                String keyname = element.attr("keyname");
+                keys.add(keyname);
+            }
+            //获取所有日期
+            Elements selectDates = doc.select("el-date-picker");
+            for (Element element : selectDates) {
+                String keyname = element.attr("keyname");
+                keys.add(keyname);
+            }
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+        String s1 = "select  * from " + wbsInfo.getInitTableName() + " where p_key_id= " + wbsInfo.getPKeyId();
+
+        //获取当前表数据
+        List<Map<String, Object>> list = jdbcTemplate.queryForList(s1);
+
+
+        if(CollectionUtil.isNotEmpty(keys) && CollectionUtil.isNotEmpty(list)){
+            Map<String, Object> jsonObject = list.get(0);
+
+            keys.forEach(f -> {
+                String s = f.split("__")[0];
+                String string = (String) jsonObject.get(s);
+
+                //判断当前字段是否超过80 超过就存在key_201中
+                if(isSaveKey201(s)){
+                    if(StringUtils.isNotEmpty(key201Value.toString())){
+                        key201Value.append("$$");
+                    }
+                    key201Value.append(s).append(":").append("'").append(string).append("'");
+                } else {
+                    update.append(",").append(s).append("=").append("'").append(string).append("'");
+                    insert.append(",").append(s);
+                    insertValue.append(",").append("'").append(string).append("'");
+                }
+
+            });
+        }
+
+//        }
+
 
         String cols = Arrays.stream(excLenght).collect(Collectors.joining(StringPool.COMMA));
         //查询复制表有多少张
@@ -932,24 +998,55 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             }
             boolean flag = isSaveKey201(info, wbsInfo, dataCol);
             if (!DataMap.isEmpty()) {
-                String updateSql = "update " + wbsInfo.getInitTableName() + " set " + info.getKey() + "=";
-                if (flag) {
-                    updateSql = "update " + wbsInfo.getInitTableName() + " set key_201 = concat(IFNULL(key_201,''),'$$'," + "'" + info.getKey() + ":" + dataCol + "') where p_key_id= " + wbsTreeContract.getPKeyId() + ";";
+                //是否同步数据
+                if(info.getIsCopyThisData()){
+                    //如果存在字段大于80的
+                    if(StringUtils.isNotEmpty(key201Value.toString())){
+                        String updateSql = "update " + wbsInfo.getInitTableName() + " set key_201 = concat(IFNULL(key_201,''),'$$'," + "'" + info.getKey() + ":" + dataCol + "','$$'," + key201Value + ") where p_key_id= " + wbsTreeContract.getPKeyId() + ";";
+                        addSql.append(updateSql);
+                    }
+                    //存在需要更新单独数据
+                    if(StringUtils.isNotEmpty(update.toString())){
+                        String updateSql = "update " + wbsInfo.getInitTableName() + " set " + info.getKey() + "=" + "'" + dataCol + "'" + update + " where p_key_id=" + wbsTreeContract.getPKeyId() + " ;";
+                        addSql.append(updateSql);
+                    }
+                    moreData = moreData.stream().skip(excLenght.length).map(com.mixsmart.utils.StringUtils::handleNull).collect(Collectors.toList());
                 } else {
-                    updateSql = updateSql + "'" + dataCol + "' where p_key_id=" + wbsTreeContract.getPKeyId() + " ;";
+
+                    String updateSql = "update " + wbsInfo.getInitTableName() + " set " + info.getKey() + "=";
+                    if (flag) {
+                        updateSql = "update " + wbsInfo.getInitTableName() + " set key_201 = concat(IFNULL(key_201,''),'$$'," + "'" + info.getKey() + ":" + dataCol + "') where p_key_id= " + wbsTreeContract.getPKeyId() + ";";
+                    } else {
+                        updateSql = updateSql + "'" + dataCol + "' where p_key_id=" + wbsTreeContract.getPKeyId() + " ;";
+                    }
+                    moreData = moreData.stream().skip(excLenght.length).map(com.mixsmart.utils.StringUtils::handleNull).collect(Collectors.toList());
+                    addSql.append(updateSql);
                 }
-                moreData = moreData.stream().skip(excLenght.length).map(com.mixsmart.utils.StringUtils::handleNull).collect(Collectors.toList());
-                addSql.append(updateSql);
             } else {
                 long dataId = SnowFlakeUtil.getId();
-                String insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id," + info.getKey() + ") VALUES (" + dataId + "," + wbsTreeContract.getPKeyId() + ",'";
-                if (flag) {
-                    insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id,key_201) values (" + dataId + "," + wbsTreeContract.getPKeyId() + ",'" + info.getKey() + ":" + dataCol + "');";
-                } else {
-                    insertSql = insertSql + dataCol + "');";
+                //是否同步数据
+                if(info.getIsCopyThisData()){
+                    //如果存在字段大于80的
+                    if(StringUtils.isNotEmpty(key201Value.toString())){
+                        String insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id,key_201) values (" + dataId + "," + wbsTreeContract.getPKeyId() + ",concat('" + info.getKey() + ":" + dataCol + "','$$'," + key201Value + "));";
+                        addSql.append(insertSql);
+                    }
+                    //存在需要更新单独数据
+                    if(StringUtils.isNotEmpty(insert.toString()) && StringUtils.isNotEmpty(insertValue.toString()) ){
+                        String insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id," + info.getKey() + insert + ") VALUES (" + dataId + "," + wbsTreeContract.getPKeyId() + ",'" + dataCol + "'" + insertValue + ");";
+                        addSql.append(insertSql);
+                    }
+                    moreData = moreData.stream().skip(excLenght.length).map(com.mixsmart.utils.StringUtils::handleNull).collect(Collectors.toList());
+                }else{
+                    String insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id," + info.getKey() + ") VALUES (" + dataId + "," + wbsTreeContract.getPKeyId() + ",'";
+                    if (flag) {
+                        insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id,key_201) values (" + dataId + "," + wbsTreeContract.getPKeyId() + ",'" + info.getKey() + ":" + dataCol + "');";
+                    } else {
+                        insertSql = insertSql + dataCol + "');";
+                    }
+                    moreData = moreData.stream().skip(excLenght.length).map(com.mixsmart.utils.StringUtils::handleNull).collect(Collectors.toList());
+                    addSql.append(insertSql);
                 }
-                moreData = moreData.stream().skip(excLenght.length).map(com.mixsmart.utils.StringUtils::handleNull).collect(Collectors.toList());
-                addSql.append(insertSql);
             }
         }
 
@@ -1003,7 +1100,6 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                     dataSize = moreData.size();
                 }
                 long dataId = SnowFlakeUtil.getId();
-                String insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id," + info.getKey() + ") VALUES (" + dataId + "," + wbsTreeContract.getPKeyId() + ",'";
                 String dataCol = "";
                 for (int j = 0; j < dataSize; j++) {
                     if (j == dataSize - 1) {
@@ -1012,13 +1108,30 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                         dataCol = dataCol + moreData.get(j) + "_^_" + excLenght[j] + "☆";
                     }
                 }
-                if (isSaveKey201(info, wbsInfo, dataCol)) {
-                    insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id,key_201) values (" + dataId + "," + wbsTreeContract.getPKeyId() + ",'" + info.getKey() + ":" + dataCol + "');";
-                } else {
-                    insertSql = insertSql + dataCol + "');";
+
+                //是否同步数据
+                if(info.getIsCopyThisData()){
+                    //如果存在字段大于80的
+                    if(StringUtils.isNotEmpty(key201Value.toString())){
+                        String insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id,key_201) values (" + dataId + "," + wbsTreeContract.getPKeyId() + ",concat('" + info.getKey() + ":" + dataCol + "','$$'," + key201Value + "));";
+                        addSql.append(insertSql);
+                    }
+                    //存在需要更新单独数据
+                    if(StringUtils.isNotEmpty(insert.toString()) && StringUtils.isNotEmpty(insertValue.toString()) ){
+                        String insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id," + info.getKey() + insert + ") VALUES (" + dataId + "," + wbsTreeContract.getPKeyId() + ",'" + dataCol + "'" + insertValue + ");";
+                        addSql.append(insertSql);
+                    }
+                    moreData = moreData.stream().skip(excLenght.length).map(com.mixsmart.utils.StringUtils::handleNull).collect(Collectors.toList());
+                }else{
+                    String insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id," + info.getKey() + ") VALUES (" + dataId + "," + wbsTreeContract.getPKeyId() + ",'";
+                    if (isSaveKey201(info, wbsInfo, dataCol)) {
+                        insertSql = "insert into " + wbsInfo.getInitTableName() + "(id,p_key_id,key_201) values (" + dataId + "," + wbsTreeContract.getPKeyId() + ",'" + info.getKey() + ":" + dataCol + "');";
+                    } else {
+                        insertSql = insertSql + dataCol + "');";
+                    }
+                    moreData = moreData.stream().skip(excLenght.length).map(com.mixsmart.utils.StringUtils::handleNull).collect(Collectors.toList());
+                    addSql.append(insertSql);
                 }
-                moreData = moreData.stream().skip(excLenght.length).map(com.mixsmart.utils.StringUtils::handleNull).collect(Collectors.toList());
-                addSql.append(insertSql);
             }
             // 插入数据
             this.baseMapper.insertBatchSomeColumn(addList);
@@ -1035,6 +1148,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return false;
     }
 
+
     private boolean isSaveKey201(RangeInfo info, WbsTreeContract wbsInfo, String dataCol) {
         boolean flag = false;
         try {
@@ -1060,6 +1174,22 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return flag;
     }
 
+    /**
+     * 判断字段是否超过80
+     * @param key
+     * @return
+     */
+    private boolean isSaveKey201(String key) {
+        boolean flag = false;
+        try {
+            String[] split = key.split("_");
+            flag = split.length > 1 && StringUtil.isNumeric(split[1]) && Integer.parseInt(split[1]) > 80;
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return flag;
+    }
     @Override
     public void syncCurrentFormToAllContract(WbsTreePrivate wbsTreePrivate) {
         baseMapper.syncCurrentFormToAllContract(wbsTreePrivate);
@@ -5622,9 +5752,17 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         }
     }
     @Override
-    public List<WbsTreeContract> queryListByPIds(List<Long> pIds) {
-        return baseMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
+    public List<WbsTreeContract> queryListByPIds(List<Long> pIds, Integer classify) {
+        LambdaQueryWrapper<WbsTreeContract> eq = Wrappers.<WbsTreeContract>lambdaQuery()
                 .in(WbsTreeContract::getPId, pIds)
-                .eq(WbsTreeContract::getIsDeleted, 0));
+                .isNotNull(WbsTreeContract::getHtmlUrl)
+                .eq(WbsTreeContract::getIsDeleted, 0);
+        if(Objects.equals(1,classify)){
+            eq.in(WbsTreeContract::getTableOwner, 1,2,3);
+        }
+        if(Objects.equals(2,classify)){
+            eq.in(WbsTreeContract::getTableOwner, 4,5,6);
+        }
+        return baseMapper.selectList(eq);
     }
 }