Explorar el Código

上报选择委托人,试验任务查看拼接委托单

chenr hace 4 meses
padre
commit
417d9366db
Se han modificado 14 ficheros con 306 adiciones y 57 borrados
  1. 4 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ContractClient.java
  2. 12 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoleSignPfxUserVO1.java
  3. 9 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoleSignPfxUserVO2.java
  4. 12 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoleSignPfxUserVO3.java
  5. 51 12
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  6. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/EntrustInfoServiceImpl.java
  7. 30 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  8. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ContractClientImpl.java
  9. 5 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java
  10. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java
  11. 37 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml
  12. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java
  13. 56 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  14. 77 42
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/NodeBaseInfoServiceImpl.java

+ 4 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ContractClient.java

@@ -4,6 +4,7 @@ package org.springblade.manager.feign;
 import org.springblade.core.tool.api.R;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
 import org.springblade.manager.entity.ContractInfo;
+import org.springblade.manager.vo.RoleSignPfxUserVO3;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -76,4 +77,7 @@ public interface ContractClient {
     @GetMapping(API_PREFIX + "/getContractByProjectIdAndType")
     List<ContractInfo> getContractByProjectIdAndType(@RequestParam Long projectId,@RequestParam Integer contractType);
 
+    @GetMapping(API_PREFIX+"/findAllUserAndRoleList")
+    RoleSignPfxUserVO3 findAllUserAndRoleList(@RequestParam Long contractId, @RequestParam(required = false) Long roleId);
+
 }

+ 12 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoleSignPfxUserVO1.java

@@ -0,0 +1,12 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class RoleSignPfxUserVO1 {
+    public String roleId;
+    public String roleName;
+}

+ 9 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoleSignPfxUserVO2.java

@@ -0,0 +1,9 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+@Data
+public class RoleSignPfxUserVO2 {
+    private Long certificateUserId;
+    private String certificateUserName;
+}

+ 12 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoleSignPfxUserVO3.java

@@ -0,0 +1,12 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class RoleSignPfxUserVO3 {
+    private List<RoleSignPfxUserVO1> roleList=new ArrayList<>();
+    private List<RoleSignPfxUserVO2> userList=new ArrayList<>();
+}

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

@@ -1307,7 +1307,7 @@ public R<Object> batchAbolish(@RequestParam String ids, String primaryKeyId, @Re
             //批量废除直接调的该接口,primaryKeyId为null,ids=当前试验记录的ids
             String sql = "";
             String sql1 = "";
-            if (primaryKeyId.indexOf("*") > 0) {
+            if (primaryKeyId!=null&&primaryKeyId.indexOf("*") > 0) {
                 primaryKeyId = primaryKeyId.substring(0, primaryKeyId.length() - 1);
                 sql = "update u_trial_self_inspection_record set task_status = '未上报' where id=" + primaryKeyId;
                 sql1 = "SELECT e.* from u_entrust_info e left join u_trial_self_inspection_record t on t.entrust_id=e.id where t.id=" + primaryKeyId;
@@ -1324,8 +1324,6 @@ public R<Object> batchAbolish(@RequestParam String ids, String primaryKeyId, @Re
                 String update = "update u_entrust_info set status=3 where id in(" + String.join(",", idss) + ")";
                 jdbcTemplate.execute(update);
             }
-            return R.data(200, aopParamsSet, "废除成功");
-
         } catch (Exception e) {
             e.printStackTrace();
             return R.data(300, false, "废除失败");
@@ -2018,7 +2016,7 @@ private Map<String, String> reviseValue(WbsTreeContract wtc, WbsTreeContract par
                     parent = this.wbsTreeContractClient.getContractWbsTreeByContractIdAndId(wtc.getParentId(), Long.parseLong(wtc.getContractId()));
                 }
                 /*凡是关联了节点参数公式的元素都不复制数据*/
-                List<Map<String, Object>> paramKey = this.jdbcTemplate.queryForList("select DISTINCT b.e_key ek from m_table_info a  join m_wbs_form_element b on a.id=b.f_id  join m_element_formula_mapping c on b.id = c.element_id where a.tab_en_name='" + tableName + "' and b.is_deleted=0 and c.scope=35 ");
+                List<Map<String, Object>> paramKey = this.jdbcTemplate.queryForList("select DISTINCT b.e_key ek from m_table_info a  join m_wbs_form_element b on a.id=b.f_id  join m_element_formula_mapping c on b.id = c.element_id where a.tab_en_name='" + tableName + "' and b.is_deleted=0 and c.scope=35 and c.is_deleted=0");
                 if (paramKey.size() > 0) {
                     map.putAll(paramKey.stream().map(m -> m.get("ek").toString()).collect(Collectors.toMap(s -> s, s -> StringPool.NULL)));
                 }
@@ -2751,6 +2749,7 @@ public R<List<WbsTreeContractTreeVOS>> queryMappingStructureTree(@RequestParam S
 })
 public R<Boolean> updateContractNodeParameter(@RequestParam Long pKeyId, @RequestParam String
         nodeName, @RequestParam String partitionCode, @RequestParam(required = false) Integer className,
+                                              @RequestParam Integer nodeType,
                                               @RequestParam(required = false) Integer unitName, @RequestParam(required = false) Integer excellentNum,
                                               @RequestParam(required = false) Integer unitNum, @RequestParam(required = false) String digitizeTime, @RequestParam(required = false) Integer majorDataType) {
     WbsTreeContract node = new WbsTreeContract();
@@ -2762,7 +2761,32 @@ public R<Boolean> updateContractNodeParameter(@RequestParam Long pKeyId, @Reques
     if (StringUtils.isEmpty(node.getNodeName()) || "null".equals(String.valueOf(node.getPKeyId())) || StringUtils.isEmpty(String.valueOf(node.getPKeyId()))) {
         return R.data(-1, false, "缺少参数");
     }
-
+    WbsTreeContract nodee = wbsTreeContractClient.getContractNodeByPrimaryKeyId(pKeyId+"");
+    String sql="Select * from m_wbs_tree_contract where id="+nodee.getParentId()+" and contract_id="+nodee.getContractId()+" and wbs_id="+nodee.getWbsId()+" and is_deleted=0";
+    WbsTreeContract parentNode=jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<>(WbsTreeContract.class));
+    if (parentNode != null) {
+        Integer targetType;//当前节点
+        Integer sourceType;//当前节点的父节点
+        if (parentNode.getNodeType() != 1) {
+            sourceType = parentNode.getNodeType() + 1;
+        } else {
+            sourceType = parentNode.getNodeType();
+        }
+        if (parentNode.getNodeType() == 18) {
+            sourceType = 2;
+        }
+        if (nodeType != 1) {
+            targetType = nodeType + 1;
+        } else {
+            targetType = nodeType;
+        }
+        if (nodeType == 18) {
+            targetType = 2;
+        }
+        if (sourceType > targetType) {
+            throw new ServiceException("当前节点类型不能大于父级节点类型");
+        }
+    }
     WbsTreeContract queries = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(pKeyId);
     if (ObjectUtil.isNotEmpty(className) || ObjectUtil.isNotEmpty(unitName)) {
         //查询当前节点的是否是子节点,以及当前节点父节点是否包含单元评定
@@ -3041,7 +3065,7 @@ public R<Boolean> saveContractTreeNode(@RequestBody AddContractTreeNodeVO vo) {
     List<WbsTreePrivateAddVO> selectedNodeList = new ArrayList<>();
 
     //检查新增类型
-    if ("1".equals(vo.getSaveType())) {
+    if ("1".equals(vo.getSaveType())||"3".equals(vo.getSaveType())) {
         //todo 当前及父节点
         //当前及父节点时,半选说明其下的子节点并不是全部选中的,所以这时候只需要根据全选的查询其全部子节点即可
         if (allSelectedNodeList.size() > 0) {
@@ -3097,8 +3121,6 @@ public R<Boolean> saveContractTreeNode(@RequestBody AddContractTreeNodeVO vo) {
                     ArrayList::new
             ));
         }
-    }else if("3".equals(vo.getSaveType())){
-        //todo 当前及子节点
     }
 
 
@@ -3149,7 +3171,7 @@ public R<Boolean> saveContractTreeNode(@RequestBody AddContractTreeNodeVO vo) {
 
             //设置父级id
             boolean var = true;
-            if ("1".equals(vo.getSaveType())) {
+            if ("1".equals(vo.getSaveType())||"3".equals(vo.getSaveType())) {
                 //当前节点及其子节点操作
                 if (OldIdToNewIdMap.containsKey(half.getParentId())) {
                     //跨节点
@@ -3412,7 +3434,7 @@ private List<WbsTreePrivateAddVO> unifiedCode
         queryResultP.addAll(query);
 
         //剔除与当前操作节点相同的ID,(如果saveType=1,表示当前及子级节点,那么就要剔除自己本身,否则视为仅当前节点操作,会存在自己本身)
-        if ("1".equals(saveType)) {
+        if ("1".equals(saveType)||"3".equals(saveType)) {
             query.removeIf(wbsTreePrivate -> {
                     /*Long id = wbsTreePrivate.getId();
                     return treeContract.getId() != null && treeContract.getId().equals(id);*/
@@ -4072,10 +4094,27 @@ public R<Object> customAddContractNode(@RequestBody CustomAddContractNodeDTO dto
     }
     WbsTreeContract parentNode = wbsTreeContractClient.getContractNodeByPrimaryKeyId(dto.getPrimaryKeyId());
     if (parentNode != null) {
-        if (parentNode.getNodeType() < parentNode.getNodeType()) {
+        Integer targetType;//当前节点类型
+        Integer sourceType;//父节点类型
+        if(parentNode.getNodeType()!=1){
+            sourceType=parentNode.getNodeType()+1;
+        }else {
+            sourceType=parentNode.getNodeType();
+        }
+        if(parentNode.getNodeType()==18){
+            sourceType=2;
+        }
+        if(dto.getNodeType()!=1){
+            targetType=dto.getNodeType()+1;
+        }else {
+            targetType=dto.getNodeType();
+        }
+        if(dto.getNodeType()==18){
+            targetType=2;
+        }
+        if(sourceType>targetType){
             throw new ServiceException("当前新增选择的节点类型不能大于父级节点类型");
         }
-
         WbsTreeContract obj = new WbsTreeContract();
         obj.setPKeyId(SnowFlakeUtil.getId());
         obj.setId(SnowFlakeUtil.getId());

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/EntrustInfoServiceImpl.java

@@ -120,7 +120,7 @@ public class EntrustInfoServiceImpl extends BaseServiceImpl<EntrustInfoMapper, E
 		String contractId = "";
         String sqlNodeName="select node_name from m_wbs_tree_private where p_key_id="+dataInfo.getString("nodeId");
         String nodeName = jdbcTemplate.queryForObject(sqlNodeName, new SingleColumnRowMapper<>(String.class));
-        if(!nodeName.equals("回弹法检测混凝土抗压强度")&&!nodeName.equals("路基压实度")&&!nodeName.equals("地基承载力")&&!nodeName.equals("路基路面弯沉")){
+        if(!nodeName.equals("回弹法检测混凝土抗压强度")&&!nodeName.equals("路基压实度")&&!nodeName.equals("地基承载力")&&!nodeName.equals("路基路面弯沉")&&!nodeName.equals("锚杆")){
             // 创建 委托单信息
             if(!dataInfo.containsKey("sampleId")){
                 return R.fail("取样信息为sampleId不存在");

+ 30 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -3,6 +3,7 @@ package org.springblade.business.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -20,6 +21,7 @@ import org.springblade.business.entity.*;
 import org.springblade.business.mapper.TaskMapper;
 import org.springblade.business.mapper.TrialSelfInspectionRecordMapper;
 import org.springblade.business.service.*;
+import org.springblade.business.utils.FileUtils;
 import org.springblade.business.vo.*;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.CommonUtil;
@@ -323,6 +325,34 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
                     //试验原始pdf
                     String approvalPdf = StringUtils.isNotEmpty(query.getEVisaPdfUrl()) ? query.getEVisaPdfUrl() : query.getPdfUrl();
+                    try {
+                        String sql="Select * from u_trial_self_inspection_record where id="+query.getWbsId();
+                        TrialSelfInspectionRecord record = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(TrialSelfInspectionRecord.class));
+                        String sql1="select * from u_entrust_info where id="+record.getEntrustId();
+                        EntrustInfo entrustInfo = jdbcTemplate.queryForObject(sql1, new BeanPropertyRowMapper<>(EntrustInfo.class));
+                        List<String> pdfList = new ArrayList<>();
+                        if(entrustInfo!=null){
+                            pdfList.add(approvalPdf);
+                            pdfList.add(entrustInfo.getEntrustEPdf()!=null?entrustInfo.getEntrustEPdf():entrustInfo.getEntrustPdf());
+                            if (pdfList.size() > 0) {
+                                String file_path = FileUtils.getSysLocalFileUrl();
+                                Long id = SnowFlakeUtil.getId();
+                                String trialPdf = file_path + "/pdf/" + id + ".pdf";
+                                File trialPdf2 = ResourceUtil.getFile(trialPdf);
+                                if (trialPdf2.exists()) {
+                                    trialPdf2.delete();
+                                }
+                                //合并当前所有选择的试验pdf
+                                FileUtils.mergePdfPublicMethods(pdfList, trialPdf);
+                                BladeFile bladeFile = this.newIOSSClient.uploadFile(id + ".pdf", trialPdf);
+                                if (bladeFile != null && ObjectUtils.isNotEmpty(bladeFile.getLink())) {
+                                    approvalPdf = bladeFile.getLink();
+                                }
+                            }
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
                     vo.setApprovalFileList(query.getName(), getHppsToHttp(approvalPdf));
 
                     //试验关联的原材料检测报告合并pdf (wbsId=试验记录id)

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ContractClientImpl.java

@@ -11,6 +11,7 @@ import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.mapper.SaveUserInfoByProjectMapper;
 import org.springblade.manager.service.IContractInfoService;
 import org.springblade.manager.service.impl.SaveUserInfoByProjectServiceImpl;
+import org.springblade.manager.vo.RoleSignPfxUserVO3;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -101,5 +102,10 @@ public class ContractClientImpl implements ContractClient {
                             .eq(ContractInfo::getContractType,contractType));
     }
 
+    @Override
+    public RoleSignPfxUserVO3 findAllUserAndRoleList(Long contractId, Long roleId) {
+        return contractInfoService.findAllUserAndRoleList(contractId,roleId);
+    }
+
 
 }

+ 5 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java

@@ -99,7 +99,11 @@ public class ExcelTabClientImpl implements ExcelTabClient {
         try {
             //------试验填报数据保存,当前记录id作为groupId------
             this.excelTabService.saveOrUpdateInfoTrial(tableInfoList, id);
-        } catch (Exception e) {
+        } catch (RuntimeException e){
+            e.printStackTrace();
+            throw new RuntimeException("字段过长,操作失败");
+        }
+        catch (Exception e) {
             e.printStackTrace();
             throw new RuntimeException("试验填报数据保存异常,操作失败");
         }

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java

@@ -73,4 +73,8 @@ public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
     List<WbsTreeContractVO2> getAllContractByType(@Param("projectId") String projectId,@Param("contractType") Integer contractType);
 
     List<ContractInfo> getContractInfoByContractId(@Param("contractId") String contractId);
+
+    List<RoleSignPfxUserVO1> findAllUserAndRoleList1(Long contractId, Long roleId);
+
+    List<RoleSignPfxUserVO2> findAllUserAndRoleList2(Long contractId, Long roleId);
 }

+ 37 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml

@@ -191,6 +191,10 @@
         </if>
     </select>
 
+
+
+
+
     <select id="findUserListByCondition" resultType="org.springblade.system.user.vo.UserVO3">
         SELECT
         mpau.id,
@@ -415,7 +419,7 @@
             AND contract_id = #{contractId}
         </if>
         <if test="parentId != null and parentId != ''">
-            AND (FIND_IN_SET(#{parentId},ancestors) OR id = #{parentId})
+            AND (FIND_IN_SET(#{parentId},ancestors) OR p_key_id = #{parentId})
         </if>
         ORDER BY d.create_time,d.sort
     </select>
@@ -546,4 +550,36 @@
     <select id="getContractInfoByContractId" resultType="org.springblade.manager.entity.ContractInfo">
         SELECT distinct * from m_contract_info where id in(SELECT contract_id_sg from m_contract_relation_jlyz where contract_id_jlyz=#{contractId}) or id=#{contractId}
     </select>
+    <select id="findAllUserAndRoleList1" resultType="org.springblade.manager.vo.RoleSignPfxUserVO1">
+        SELECT
+        r.id as roleId,r.role_name as roleName FROM
+        blade_role r
+        INNER JOIN m_project_assignment_user mpau ON r.id = mpau.role_id
+        INNER JOIN m_contract_info ci ON ci.id = mpau.contract_id
+        WHERE mpau.is_deleted = 0 AND mpau.`status` = 1
+        AND ci.id=#{contractId}
+        <if test="roleId == null">
+            And r.parent_id!=0
+        </if>
+        <if test="roleId!=null">
+          And r.parent_id=#{roleId}
+        </if>
+    </select>
+
+
+    <select id="findAllUserAndRoleList2" resultType="org.springblade.manager.vo.RoleSignPfxUserVO2">
+        SELECT
+        u.id as certificateUserId, u.`name` as certificateUserName
+        FROM
+        blade_user u
+        INNER JOIN m_project_assignment_user mpau ON u.id = mpau.user_id
+        INNER JOIN m_contract_info ci ON ci.id = mpau.contract_id
+        INNER JOIN blade_role r ON r.id = mpau.role_id
+        WHERE mpau.is_deleted = 0 AND mpau.`status` = 1
+        AND ci.id=#{contractId}
+        <if test="roleId != null">
+            And r.id=#{roleId}
+        </if>
+    </select>
+
 </mapper>

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java

@@ -29,6 +29,8 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
     IPage<UserVO2> findAllUserByCondition(IPage<UserVO2> page, FindAllUserByConditionDTO values);
 
+    RoleSignPfxUserVO3 findAllUserAndRoleList(Long contractId,Long roleId);
+
     IPage<User> findUserListByCondition(IPage<User> page, FindAllUserByConditionDTO values);
 
     List<User> findUserInfoByCondition(String rId, String pId, String userName);

+ 56 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -102,6 +102,28 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         return page.setRecords(list);
     }
 
+    @Override
+    public RoleSignPfxUserVO3 findAllUserAndRoleList(Long contractId, Long roleId) {
+        List<RoleSignPfxUserVO1> list1;
+        List<RoleSignPfxUserVO2> list2;
+        if(roleId==null){
+            //查询所有的岗位
+             list1=contractInfoMapper.findAllUserAndRoleList1(contractId,null);
+            //查询所有的用户
+             list2=contractInfoMapper.findAllUserAndRoleList2(contractId,null);
+        }else {
+            //根据角色Id查询所有的岗位
+            list1=contractInfoMapper.findAllUserAndRoleList1(contractId,roleId);
+            //根据角色Id查询所有的用户
+            list2=contractInfoMapper.findAllUserAndRoleList2(contractId,roleId);
+        }
+        RoleSignPfxUserVO3 vo3 = new RoleSignPfxUserVO3();
+        vo3.setRoleList(list1);
+        vo3.setUserList(list2);
+        return vo3;
+    }
+
+
     @Override
     public IPage<User> findUserListByCondition(IPage<User> page, FindAllUserByConditionDTO values) {
         List<User> userListByCondition = contractInfoMapper.findUserListByCondition(page, values);
@@ -827,6 +849,40 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
 //                meterContractInfoClient.saveOrUpdate(meterContractInfo);
 //            }
             //}
+            //如果是底层节点在创建时自动生成最顶层的根节点
+            if(contractInfo.getTemplateType()!=null&&contractInfo.getTemplateType().equals(2)){
+                String sql="select * from m_wbs_tree_private where  project_id="+contractInfo.getPId()+" and parent_id=0 and is_deleted=0 and wbs_type=1 limit 1";
+                WbsTreePrivate wbsTreePrivate = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
+                if(wbsTreePrivate!=null){
+                    WbsTreeContract wbsTreeContract=new WbsTreeContract();
+                    wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
+                    wbsTreeContract.setId(wbsTreePrivate.getId());
+                    wbsTreeContract.setTableOwner(wbsTreePrivate.getTableOwner());
+                    wbsTreeContract.setWbsId(wbsTreePrivate.getWbsId()+"");
+                    wbsTreeContract.setWbsType(Integer.valueOf(wbsTreePrivate.getWbsType()));
+                    wbsTreeContract.setProjectId(wbsTreePrivate.getProjectId());
+                    wbsTreeContract.setContractId(contractInfo.getId()+"");
+                    wbsTreeContract.setTenantId(wbsTreePrivate.getTenantId());
+                    wbsTreeContract.setParentId(0L);
+                    wbsTreeContract.setAncestors("0");
+                    wbsTreeContract.setNodeType(wbsTreePrivate.getNodeType());
+                    wbsTreeContract.setNodeName(wbsTreePrivate.getNodeName());
+                    wbsTreeContract.setFullName(wbsTreePrivate.getFullName());
+                    wbsTreeContract.setStatus(1);
+                    wbsTreeContract.setType(1);
+                    wbsTreeContract.setIsBussShow(1);
+                    wbsTreeContract.setTabFileType(1);
+                    wbsTreeContract.setIsTabPdf(1);
+                    wbsTreeContract.setIsTypePrivatePid(wbsTreePrivate.getPKeyId());
+                    wbsTreeContract.setImportMatchingInfo(wbsTreePrivate.getNodeName());
+                    wbsTreeContract.setIsConcealedWorksNode(0);
+                    wbsTreeContract.setTreeCode("0");
+                    wbsTreeContract.setRealFillRate(0);
+                    wbsTreeContract.setIsUseSort(0);
+                    wbsTreeContract.setNodeClass(1);
+                    wbsTreeContractMapper.insert(wbsTreeContract);
+                }
+            }
 
             return this.submitContractRelevantInfo(row, contractInfo);
 

+ 77 - 42
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/NodeBaseInfoServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
@@ -23,6 +24,7 @@ import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.tool.utils.IoUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.manager.entity.NodeBaseInfo;
 import org.springblade.manager.entity.Parameter;
@@ -34,6 +36,7 @@ import org.springblade.manager.vo.NodeBaseInfoVO;
 import org.springblade.manager.mapper.NodeBaseInfoMapper;
 import org.springblade.manager.service.INodeBaseInfoService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -67,12 +70,8 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
 
     @Override
     public NodeBaseInfo getOrSaveNodeBaseInfo(Long pKeyId) {
-        NodeBaseInfo nodeBaseInfo = baseMapper.selectOne(new QueryWrapper<NodeBaseInfo>().eq("node_id", pKeyId));
-        if(nodeBaseInfo!=null){
-            return nodeBaseInfo;
-        }
         //查出当前节点的所有父节点
-        WbsTreeContract wbsTreeContract = iWbsTreeContractService.getBaseMapper().selectById(pKeyId);
+        WbsTreeContract wbsTreeContract = iWbsTreeContractService.getBaseMapper().selectOne(new LambdaQueryWrapper<>(WbsTreeContract.class).eq(WbsTreeContract::getPKeyId,pKeyId));
         if(wbsTreeContract!=null&&wbsTreeContract.getAncestors()!=null){
             String ancestors = wbsTreeContract.getAncestors();
             String[] nodeIds = ancestors.split(",");
@@ -80,12 +79,11 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
             QueryWrapper<WbsTreeContract> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("project_id",wbsTreeContract.getProjectId());
             queryWrapper.eq("contract_id",wbsTreeContract.getContractId());
-            queryWrapper.in("id", Arrays.asList(nodeIds));
+            queryWrapper.in("p_key_id", Arrays.asList(nodeIds));
             List<WbsTreeContract> wbsTreeContracts = iWbsTreeContractService.getBaseMapper().selectList(queryWrapper);
             if(wbsTreeContracts.size()>0){
                 NodeBaseInfo info = new NodeBaseInfo();
-                info.setId(SnowFlakeUtil.getId());
-                info.setNodeId(pKeyId);
+
                 for (WbsTreeContract contract : wbsTreeContracts) {
                     if(contract.getNodeType()==1){
                         info.setUnit(contract.getNodeName());
@@ -115,6 +113,41 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
                         info.setProcesses(contract.getNodeName());
                     }
                 }
+                if(wbsTreeContract.getNodeType()==1){
+                    info.setUnit(wbsTreeContract.getNodeName());
+                }
+                else  if(wbsTreeContract.getNodeType()==18){
+                    info.setSubUnit(wbsTreeContract.getNodeName());
+                }
+                else  if(wbsTreeContract.getNodeType()==2){
+                    info.setDivision(wbsTreeContract.getNodeName());
+                }
+                else if(wbsTreeContract.getNodeType()==3){
+                    info.setSubDivision(wbsTreeContract.getNodeName());
+                }
+                else  if(wbsTreeContract.getNodeType()==4){
+                    info.setItem(wbsTreeContract.getNodeName());
+                }
+                else  if(wbsTreeContract.getNodeType()==5){
+                    info.setSubItem(wbsTreeContract.getNodeName());
+                }
+                else  if(wbsTreeContract.getNodeType()==6){
+                    info.setProcesses(wbsTreeContract.getNodeName());
+                }
+                NodeBaseInfo nodeBaseInfo = baseMapper.selectOne(new QueryWrapper<NodeBaseInfo>().eq("node_id", pKeyId));
+                if(nodeBaseInfo!=null){
+                    if(StringUtil.equals(nodeBaseInfo.getUnit(),info.getUnit())&&StringUtil.equals(nodeBaseInfo.getSubUnit(),info.getSubUnit())&&StringUtil.equals(nodeBaseInfo.getDivision(),info.getDivision())
+                        &&StringUtil.equals(nodeBaseInfo.getSubDivision(),info.getSubDivision())&&StringUtil.equals(nodeBaseInfo.getItem(),info.getItem())&&StringUtil.equals(nodeBaseInfo.getSubItem(),info.getSubItem())
+                    &&StringUtil.equals(nodeBaseInfo.getProcesses(),info.getProcesses())){
+                        return nodeBaseInfo;
+                    }else {
+                        BeanUtils.copyProperties(info,nodeBaseInfo);
+                        baseMapper.updateById(nodeBaseInfo);
+                        return nodeBaseInfo;
+                    }
+                }
+                info.setId(SnowFlakeUtil.getId());
+                info.setNodeId(pKeyId);
                 baseMapper.insert(info);
                 return info;
             }
@@ -183,13 +216,13 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
             htmlString = htmlString.replaceAll("placeholder", "placeholderxx");
             Document doc = Jsoup.parse(htmlString);
             //拿到参数库所有元素与参数库的元素比较
-            String sql="select * from m_parameter_element where is_deleted !=0";
+            String sql="select * from m_parameter_element where is_deleted =0";
             List<ParameterElement> ParameterElementList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ParameterElement.class));
-            List<WbsTreeContract> ancestorsNodes = iWbsTreeContractService.getBaseMapper().selectList(new QueryWrapper<WbsTreeContract>().in("id", Arrays.stream(wbsTreeContractNode.getAncestors().split(",")).toArray()).eq("contract_id", wbsTreeContractNode.getContractId()));
+            List<WbsTreeContract> ancestorsNodes = iWbsTreeContractService.getBaseMapper().selectList(new QueryWrapper<WbsTreeContract>().in("p_key_id", Arrays.stream(wbsTreeContractNode.getAncestors().split(",")).toArray()).eq("contract_id", wbsTreeContractNode.getContractId()));
             for (ParameterElement parameterElement : ParameterElementList) {
-                Elements select = doc.select("[placeholderxx='" + parameterElement.getElementName() + "']");
+                Elements selects = doc.select("[placeholderxx='" + parameterElement.getElementName() + "']");
                 //元素库里存在表单的元素
-                if(select.size()>0){
+                if(selects.size()>0){
                     //用元素查出参数库
                     String sql1="Select * from m_parameter where id="+parameterElement.getParameterId();
                     Parameter parameter = jdbcTemplate.queryForObject(sql1, new BeanPropertyRowMapper<>(Parameter.class));
@@ -214,70 +247,72 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
                     //拿到参数库的类型
                     String paramType = parameter.getParamType();
                     String[] paramTypes = paramType.split(",");
-                    StringBuilder result=new StringBuilder();
                     //根据参数的类型值,来获取不同的值 1-7是获取单位工程名称这些 8是获取划分编号 9是获取范围随机数
-                    for (String type : paramTypes) {
-                        if(type.equals("1")){
-                            String s=ancestorsNodes.stream()
-                                    .filter(m -> m.getNodeType() == 1)
+                    for (Element select : selects) {
+                        StringBuilder result=new StringBuilder();
+                        for (String type : paramTypes) {
+                            if(type.equals("1")){
+                                String s=ancestorsNodes.stream()
+                                    .filter(m -> m.getNodeType() == 1&&m.getParentId()!=0)
                                     .map(WbsTreeContract::getNodeName)
                                     .findFirst()
                                     .orElse("");
-                            result.append(s);
-                        } else if (type.equals("2")) {
-                            String s=ancestorsNodes.stream()
+                                result.append(s);
+                            } else if (type.equals("2")) {
+                                String s=ancestorsNodes.stream()
                                     .filter(m -> m.getNodeType() == 18)
                                     .map(WbsTreeContract::getNodeName)
                                     .findFirst()
                                     .orElse("");
-                            result.append(s);
-                        } else if (type.equals("3")) {
-                            String s=ancestorsNodes.stream()
+                                result.append(s);
+                            } else if (type.equals("3")) {
+                                String s=ancestorsNodes.stream()
                                     .filter(m -> m.getNodeType() == 2)
                                     .map(WbsTreeContract::getNodeName)
                                     .findFirst()
                                     .orElse("");
-                            result.append(s);
-                        }else if (type.equals("4")) {
-                            String s=ancestorsNodes.stream()
+                                result.append(s);
+                            }else if (type.equals("4")) {
+                                String s=ancestorsNodes.stream()
                                     .filter(m -> m.getNodeType() == 3)
                                     .map(WbsTreeContract::getNodeName)
                                     .findFirst()
                                     .orElse("");
-                            result.append(s);
-                        }else if (type.equals("5")) {
-                            String s=ancestorsNodes.stream()
+                                result.append(s);
+                            }else if (type.equals("5")) {
+                                String s=ancestorsNodes.stream()
                                     .filter(m -> m.getNodeType() == 4)
                                     .map(WbsTreeContract::getNodeName)
                                     .findFirst()
                                     .orElse("");
-                            result.append(s);
-                        }else if (type.equals("6")) {
-                            String s=ancestorsNodes.stream()
+                                result.append(s);
+                            }else if (type.equals("6")) {
+                                String s=ancestorsNodes.stream()
                                     .filter(m -> m.getNodeType() == 5)
                                     .map(WbsTreeContract::getNodeName)
                                     .findFirst()
                                     .orElse("");
-                            result.append(s);
-                        }else if (type.equals("7")) {
-                            String s=ancestorsNodes.stream()
+                                result.append(s);
+                            }else if (type.equals("7")) {
+                                String s=ancestorsNodes.stream()
                                     .filter(m -> m.getNodeType() == 6)
                                     .map(WbsTreeContract::getNodeName)
                                     .findFirst()
                                     .orElse("");
-                            result.append(s);
-                        }else if (type.equals("8")) {
-                            String  s= ancestorsNodes.stream()
+                                result.append(s);
+                            }else if (type.equals("8")) {
+                                String  s= ancestorsNodes.stream()
                                     .map(WbsTreeContract::getPartitionCode) // 获取 partitionCode
                                     .filter(partitionCode -> partitionCode != null && !partitionCode.isEmpty()) // 过滤掉空值
                                     .collect(Collectors.joining());
-                            if(wbsTreeContract.getPartitionCode()!=null){
-                                s=s+wbsTreeContract.getPartitionCode();
+                                if(wbsTreeContract.getPartitionCode()!=null){
+                                    s=s+wbsTreeContract.getPartitionCode();
+                                }
+                                result.append(s);
                             }
-                            result.append(s);
                         }
+                        map.put(select.attr("keyname"),result.toString());
                     }
-                    map.put(select.attr("keyname"),result.toString());
                 }
             }
         }