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

Merge branch 'refs/heads/feature-lihb-20251013-testFrom' into dev

# Conflicts:
#	blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
#	blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
LHB 1 өдөр өмнө
parent
commit
751c73ce45

+ 3 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreePrivateClient.java

@@ -51,7 +51,7 @@ public interface WbsTreePrivateClient {
     List<WbsTreeContractTreeVOS> queryWbsTreePrivateByProjectIdAndId(@RequestParam String projectId, @RequestParam Long id);
     List<WbsTreeContractTreeVOS> queryWbsTreePrivateByProjectIdAndId(@RequestParam String projectId, @RequestParam Long id);
 
 
     @PostMapping(API_PREFIX + "/copyBussTab")
     @PostMapping(API_PREFIX + "/copyBussTab")
-    boolean copyBussTab(@RequestParam Long pKeyId, @RequestParam Long id, @RequestParam Long contractId);
+    Long copyBussTab(@RequestParam Long pKeyId, @RequestParam Long id, @RequestParam Long contractId, @RequestParam(required = false) String tableIds);
 
 
     @PostMapping(API_PREFIX + "/getRawMaterialTree")
     @PostMapping(API_PREFIX + "/getRawMaterialTree")
     List<WbsTreePrivateVO> getRawMaterialTree(@RequestParam Long pKeyId);
     List<WbsTreePrivateVO> getRawMaterialTree(@RequestParam Long pKeyId);
@@ -88,5 +88,6 @@ public interface WbsTreePrivateClient {
     @GetMapping(API_PREFIX +"/get-node-class")
     @GetMapping(API_PREFIX +"/get-node-class")
     WbsTreePrivate getNodeClass(@RequestParam Long isTypePrivatePid);
     WbsTreePrivate getNodeClass(@RequestParam Long isTypePrivatePid);
 
 
-
+    @PostMapping(API_PREFIX + "/testFormInit")
+    List<Long> testFormInit(@RequestParam Long projectId, @RequestParam Long contractId, @RequestParam String wbsId, @RequestParam Long id);
 }
 }

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

@@ -1,5 +1,6 @@
 package org.springblade.business.controller;
 package org.springblade.business.controller;
 
 
+import cn.hutool.core.stream.CollectorUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -10,6 +11,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
+import jodd.util.StringUtil;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
 import org.springblade.business.dto.*;
 import org.springblade.business.dto.*;
@@ -25,6 +27,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ResourceUtil;
 import org.springblade.core.tool.utils.ResourceUtil;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ContractInfo;
@@ -232,7 +235,23 @@ public class TrialDetectionController extends BladeController {
             }
             }
         } else {
         } else {
             //编辑复制 复制数据 附件文件
             //编辑复制 复制数据 附件文件
-            if (wbsTreePrivateClient.copyBussTab(pKeyId, id, contractId)) {
+            //获取复制表的pkid
+
+            TrialSelfInspectionRecord byId = iTrialSelfInspectionRecordService.getById(id);
+            Long copyId = wbsTreePrivateClient.copyBussTab(pKeyId, id, contractId, byId.getTableIds());
+            if (copyId != null) {
+                if(StringUtils.isEmpty(byId.getTableIds())){
+                    //绑定初始表单
+                    WbsTreePrivate nodeByPrimaryKeyId = wbsTreePrivateClient.getNodeByPrimaryKeyId(pKeyId.toString());
+                    List<Long> tableIds = wbsTreePrivateClient.testFormInit(Long.valueOf(nodeByPrimaryKeyId.getProjectId()), contractId, nodeByPrimaryKeyId.getWbsId(), nodeByPrimaryKeyId.getId());
+                    if(CollectionUtil.isNotEmpty(tableIds)){
+                        tableIds.add(copyId);
+                    }
+                    byId.setTableIds(StringUtil.join(tableIds, ","));
+                }else{
+                    byId.setTableIds(byId.getTableIds() + "," + copyId);
+                }
+                iTrialSelfInspectionRecordService.updateById(byId);
                 return R.success("复制成功");
                 return R.success("复制成功");
             }
             }
         }
         }

+ 6 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -2293,6 +2293,12 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             if (!b) {
             if (!b) {
                 throw new ServiceException("报告编号已存在");
                 throw new ServiceException("报告编号已存在");
             }
             }
+            WbsTreePrivate nodeByPrimaryKeyId = wbsTreePrivateClient.getNodeByPrimaryKeyId(String.valueOf(dto.getNodeId()));
+            //初始化 table_ids
+            List<Long> tableIds = wbsTreePrivateClient.testFormInit(dto.getProjectId(),dto.getContractId(),nodeByPrimaryKeyId.getWbsId(),nodeByPrimaryKeyId.getId());
+            if(CollectionUtil.isNotEmpty(tableIds)){
+                record.setTableIds(StringUtil.join(tableIds, ","));
+            }
             this.save(record);
             this.save(record);
         } else {
         } else {
             this.updateById(record);
             this.updateById(record);

+ 40 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.controller;
 package org.springblade.manager.controller;
 
 
+import cn.hutool.core.stream.CollectorUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -18,6 +19,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.core.tool.utils.StringUtil;
@@ -754,11 +756,48 @@ public class WbsTreePrivateController extends BladeController {
        // 获取试验记录信息实体 从而获取委托单编号
        // 获取试验记录信息实体 从而获取委托单编号
         TrialSelfInspectionRecord trialSelfInspectionRecord = null;
         TrialSelfInspectionRecord trialSelfInspectionRecord = null;
         if(ObjectUtil.isNotEmpty(id)){
         if(ObjectUtil.isNotEmpty(id)){
-            String sqlForInspectionRecord = "select entrust_id from u_trial_self_inspection_record  where id=" + id;
+            String sqlForInspectionRecord = "select table_ids, entrust_id from u_trial_self_inspection_record  where id=" + id;
             trialSelfInspectionRecord = jdbcTemplate.queryForObject(sqlForInspectionRecord, new BeanPropertyRowMapper<>(TrialSelfInspectionRecord.class));
             trialSelfInspectionRecord = jdbcTemplate.queryForObject(sqlForInspectionRecord, new BeanPropertyRowMapper<>(TrialSelfInspectionRecord.class));
         }
         }
 
 
         List<WbsTreePrivateVO4> wbsTreePrivateVO4s = wbsTreePrivateService.searchNodeAllTable(primaryKeyId, type, tableType, contractId, projectId, isAdd, id);
         List<WbsTreePrivateVO4> wbsTreePrivateVO4s = wbsTreePrivateService.searchNodeAllTable(primaryKeyId, type, tableType, contractId, projectId, isAdd, id);
+        if(trialSelfInspectionRecord != null && StringUtil.isNotBlank(trialSelfInspectionRecord.getTableIds())){
+            //根据表单类型分组
+            Map<Integer, List<WbsTreePrivateVO4>> collect = wbsTreePrivateVO4s.stream().collect(Collectors.groupingBy(WbsTreePrivateVO4::getTableType));
+            List<Long> list = Arrays.asList(trialSelfInspectionRecord.getTableIds().split(",")).stream().map(Long::parseLong).collect(Collectors.toList());
+
+            //判断是否存在记录表的数据
+            if("1".equals(tableType)){
+                //报告表
+                List<WbsTreePrivateVO4> wbsTreePrivateVO4s1 = collect.get(1);
+                if(CollectionUtil.isNotEmpty(wbsTreePrivateVO4s1)){
+                    List<Long> collect1 = wbsTreePrivateVO4s1.stream().map(WbsTreePrivateVO4::getPKeyId).collect(Collectors.toList());
+                    if(list.stream().anyMatch(collect1::contains)){
+                        wbsTreePrivateVO4s = wbsTreePrivateVO4s.stream().filter(f -> list.contains(f.getPKeyId())).collect(Collectors.toList());
+                    } else {
+                        //如果id为空 就不查询复制表
+                        wbsTreePrivateVO4s = wbsTreePrivateVO4s.stream().filter(f -> f.getIsCopyTab() == 0).collect(Collectors.toList());
+                    }
+                }
+            }
+            //判断是否存在报告单的数据
+            if("2".equals(tableType)){
+                //记录表
+                List<WbsTreePrivateVO4> wbsTreePrivateVO4s2 = collect.get(2);
+                if(CollectionUtil.isNotEmpty(wbsTreePrivateVO4s2)){
+                    List<Long> collect2 = wbsTreePrivateVO4s2.stream().map(WbsTreePrivateVO4::getPKeyId).collect(Collectors.toList());
+                    if(list.stream().anyMatch(collect2::contains)){
+                        wbsTreePrivateVO4s = wbsTreePrivateVO4s.stream().filter(f -> list.contains(f.getPKeyId())).collect(Collectors.toList());
+                    } else {
+                        //如果id为空 就不查询复制表
+                        wbsTreePrivateVO4s = wbsTreePrivateVO4s.stream().filter(f -> f.getIsCopyTab() == 0).collect(Collectors.toList());
+                    }
+                }
+            }
+        }else{
+            //如果id为空 就不查询复制表
+            wbsTreePrivateVO4s = wbsTreePrivateVO4s.stream().filter(f -> f.getIsCopyTab() == 0).collect(Collectors.toList());
+        }
         for (WbsTreePrivateVO4 treePrivate : wbsTreePrivateVO4s) {
         for (WbsTreePrivateVO4 treePrivate : wbsTreePrivateVO4s) {
             //试验新增
             //试验新增
             if ((new Integer(1).equals(isAdd)) && ObjectUtil.isEmpty(id)) {
             if ((new Integer(1).equals(isAdd)) && ObjectUtil.isEmpty(id)) {

+ 17 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreePrivateClientImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.mixsmart.utils.StringUtils;
 import com.mixsmart.utils.StringUtils;
+import jodd.util.StringUtil;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springblade.business.entity.TrialSelfInspectionRecord;
 import org.springblade.business.entity.TrialSelfInspectionRecord;
@@ -81,12 +82,19 @@ public class WbsTreePrivateClientImpl implements WbsTreePrivateClient {
     }
     }
 
 
     @Override
     @Override
-    public boolean copyBussTab(Long pKeyId, Long id, Long contractId) {
+    public Long copyBussTab(Long pKeyId, Long id, Long contractId, String tableIds) {
         if (ObjectUtils.isNotEmpty(id)) {
         if (ObjectUtils.isNotEmpty(id)) {
             //编辑复制 复制数据 附件文件
             //编辑复制 复制数据 附件文件
             WbsTreePrivate wbsTreePrivate = wbsTreePrivateService.getBaseMapper().selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, pKeyId));
             WbsTreePrivate wbsTreePrivate = wbsTreePrivateService.getBaseMapper().selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, pKeyId));
             List<WbsTreePrivate> wbsTreePrivateList = wbsTreePrivateService.getBaseMapper().selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getId, wbsTreePrivate.getId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getWbsType, wbsTreePrivate.getWbsType()).eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getParentId, wbsTreePrivate.getParentId()));
             List<WbsTreePrivate> wbsTreePrivateList = wbsTreePrivateService.getBaseMapper().selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getId, wbsTreePrivate.getId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getWbsType, wbsTreePrivate.getWbsType()).eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getParentId, wbsTreePrivate.getParentId()));
             List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateList.stream().sorted(Comparator.comparing(WbsTreePrivate::getCreateTime).reversed()).collect(Collectors.toList());
             List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateList.stream().sorted(Comparator.comparing(WbsTreePrivate::getCreateTime).reversed()).collect(Collectors.toList());
+            //根据试验表单,只查询自身所属的复制表单
+            if(StringUtil.isBlank(tableIds)){
+                return null;
+            }
+            List<String> list = Arrays.asList(tableIds.split(","));
+            wbsTreePrivates = wbsTreePrivates.stream().filter(f -> list.contains(f.getPKeyId().toString())).collect(Collectors.toList());
+
             long newPkId = SnowFlakeUtil.getId();
             long newPkId = SnowFlakeUtil.getId();
             wbsTreePrivate.setPKeyId(newPkId);
             wbsTreePrivate.setPKeyId(newPkId);
             wbsTreePrivate.setCreateTime(new Date());
             wbsTreePrivate.setCreateTime(new Date());
@@ -165,10 +173,10 @@ public class WbsTreePrivateClientImpl implements WbsTreePrivateClient {
             }
             }
             if (ObjectUtils.isNotEmpty(wbsTreePrivate)) {
             if (ObjectUtils.isNotEmpty(wbsTreePrivate)) {
                 wbsTreePrivateService.save(wbsTreePrivate);
                 wbsTreePrivateService.save(wbsTreePrivate);
-                return true;
+                return newPkId;
             }
             }
         }
         }
-        return false;
+        return null;
     }
     }
 
 
     @Override
     @Override
@@ -361,4 +369,10 @@ public class WbsTreePrivateClientImpl implements WbsTreePrivateClient {
         Set<Long> set = privateMapper.getAllPrivateTableByIds(projectId, ids);
         Set<Long> set = privateMapper.getAllPrivateTableByIds(projectId, ids);
         return set;
         return set;
     }
     }
+
+    @Override
+    public List<Long> testFormInit(Long projectId, Long contractId, String wbsId, Long id) {
+        List<Long> ids =  privateMapper.testFormInit(projectId,contractId,wbsId,id);
+        return ids;
+    }
 }
 }

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -158,4 +158,9 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
     List<Long> getContractAllLogWbsNodeIds(@Param("contractId") Long contractId);
     List<Long> getContractAllLogWbsNodeIds(@Param("contractId") Long contractId);
 
 
     List<WbsTreePrivate> selectAllChildNode(List<String> leftIds);
     List<WbsTreePrivate> selectAllChildNode(List<String> leftIds);
+
+    List<Long> testFormInit(@Param("projectId") Long projectId,
+                            @Param("contractId") Long contractId,
+                            @Param("wbsId") String wbsId,
+                            @Param("id") Long id);
 }
 }

+ 24 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -1075,4 +1075,28 @@
             contract_id = #{contractId}
             contract_id = #{contractId}
     </select>
     </select>
     <select id="selectAllChildNode" resultType="org.springblade.manager.entity.WbsTreePrivate"></select>
     <select id="selectAllChildNode" resultType="org.springblade.manager.entity.WbsTreePrivate"></select>
+    <select id="testFormInit" resultType="java.lang.Long">
+        SELECT
+            p_key_id
+        FROM
+            m_wbs_tree_private
+        WHERE
+            project_id = #{projectId}
+            AND wbs_id = #{wbsId}
+            AND parent_id = #{id}
+            AND type = 2
+            AND STATUS = 1
+            AND is_deleted = 0
+            AND table_owner = 7
+            AND locate( '__', node_name ) = 0
+            /*解决不同合同段中复制表问题*/
+            <if test="contractId == null">
+                -- 后管加载原始表
+                AND trial_tab_contract_id is null
+            </if>
+            <if test="contractId != null and contractId != ''">
+                -- 客户端加载当前合同段表+原始表
+                AND (trial_tab_contract_id is null OR (trial_tab_contract_id = #{contractId}))
+            </if>
+    </select>
 </mapper>
 </mapper>