Bladeren bron

Merge remote-tracking branch 'origin/dev' into dev

LHB 22 uur geleden
bovenliggende
commit
72fc6be8b0

+ 9 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/UpdateBatchUserRoleDto.java

@@ -0,0 +1,9 @@
+package org.springblade.manager.dto;
+
+import lombok.Data;
+
+@Data
+public class UpdateBatchUserRoleDto {
+    private Long id;
+    private Long roleId;
+}

+ 10 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/UpdateBatchUserRoleDto1.java

@@ -0,0 +1,10 @@
+package org.springblade.manager.dto;
+
+import lombok.Data;
+
+import java.util.List;
+@Data
+public class UpdateBatchUserRoleDto1 {
+    private List<UpdateBatchUserRoleDto> list;
+    private Long userId;
+}

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/SaveUserInfoByProjectVO2.java

@@ -39,4 +39,10 @@ public class SaveUserInfoByProjectVO2 implements Serializable {
     @JsonProperty(value = "roleType")
     private String roleType;
 
+    /**
+     * 角色id
+     */
+    @JsonProperty(value = "roleId")
+    private String roleId;
+
 }

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

@@ -92,6 +92,7 @@ import java.net.URLEncoder;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -3766,6 +3767,14 @@ public R<Boolean> updateContractNodeParameter(@RequestParam Long pKeyId, @Reques
 
     //更新redis
     this.informationQueryService.delAsyncWbsTree(queries.getContractId());
+    //判断是否更改了划分编号
+    if(!StringUtils.equals(partitionCode,nodee.getPartitionCode())){
+        // 获取当前时间并格式化
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String currentTime = sdf.format(new Date());
+        String insert="insert into update_partition_log (id,node_id,old_partition_code,new_partition_code,update_user_id,update_user_name,update_time) values(?,?,?,?,?,?,?)";
+        jdbcTemplate.update(insert, SnowFlakeUtil.getId(), pKeyId,nodee.getPartitionCode()==null?"":nodee.getPartitionCode(),partitionCode==null?"":partitionCode,AuthUtil.getUserId(),AuthUtil.getNickName(),currentTime);
+    }
 
     return R.data(aBoolean);
 }

+ 24 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java

@@ -22,12 +22,11 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.*;
-import org.springblade.manager.dto.FindAllUserByConditionDTO;
-import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
-import org.springblade.manager.dto.WbsTreeContractDTO;
+import org.springblade.manager.dto.*;
 import org.springblade.manager.entity.ContractRelationJlyz;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.ProjectInfo;
+import org.springblade.manager.feign.ProjectAssignmentUserClient;
 import org.springblade.manager.mapper.SaveUserInfoByProjectMapper;
 import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.service.SaveUserInfoByProjectService;
@@ -493,6 +492,28 @@ public class ContractInfoController extends BladeController {
         return R.fail("保存失败");
     }
 
+    @PostMapping("/update-batch-user-role")
+    @ApiOperation(value = "批量更新用户roleId")
+    @ApiOperationSupport(order = 13)
+    public R updateBatchUserRole(@RequestBody UpdateBatchUserRoleDto1 dtos){
+        if(!dtos.getList().isEmpty()){
+            for (UpdateBatchUserRoleDto dto : dtos.getList()) {
+                if(dto.getRoleId()!=null){
+                    String update="update m_project_assignment_user set role_id="+dto.getRoleId()+" where id="+dto.getId();
+                    jdbcTemplate.update(update);
+                }
+            }
+            String sql="select * from m_project_assignment_user where user_id="+dtos.getUserId()+" and is_deleted=0";
+            List<SaveUserInfoByProjectDTO> userRoleInfo = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(SaveUserInfoByProjectDTO.class));
+            if(!userRoleInfo.isEmpty()){
+                String roleId = userRoleInfo.stream().filter(u -> u.getRoleId() != null).map(u -> u.getRoleId()).distinct().collect(Collectors.joining(","));
+                String sql1="update blade_user set role_id='"+roleId+"' where id="+dtos.getUserId();
+                jdbcTemplate.update(sql1);
+            }
+        }
+        return R.success("更新成功");
+    }
+
     /**
      * 项目分配用户删除 - 全部删除 or 单删除
      */

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -519,6 +519,7 @@
              , ci.contract_name                                          as "contractName"
              , (SELECT role_name FROM blade_role WHERE id = r.parent_id) as "roleType"
              , r.role_name                                               as "roleName"
+             , mpau.role_id                                              as "roleId"
         FROM m_project_assignment_user mpau
                  INNER JOIN blade_role r ON r.id = mpau.role_id
                  INNER JOIN m_contract_info ci ON ci.id = mpau.contract_id

+ 92 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -1407,6 +1407,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     LinkedHashMap<String, String> dataMap2 = tableInfo.getDataMap();
                     /*检查发现有p_key_id缺失的情况,导致表单数据丢失,所以强制覆盖*/
                     dataMap2.put("p_key_id", tableInfo.getPkeyId());
+                    dataMap2=isPartition(wbsTreeContract,tabName,dataMap2);
                     sqlInfo = buildMTableInsertSql(tabName, dataMap2, SnowFlakeUtil.getId(), null, null).toString();
                     //统计保存的字段
 
@@ -1526,6 +1527,60 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
        return R.data(tableInfoList2);
        // return R.success(fileName1);
     }
+    public LinkedHashMap<String ,String> isPartition(WbsTreeContract wbsTreeContract,String tabName,LinkedHashMap<String, String> dataMap2){
+        //判断是否需要移除编号 当工序 子分项 分项的划分编码有一个不为null就移除编号
+        String sqlContractInfo="select * from m_contract_info where id="+wbsTreeContract.getContractId();
+        ContractInfo contractInfo=jdbcTemplate.queryForObject(sqlContractInfo,new BeanPropertyRowMapper<>(ContractInfo.class));
+        if (contractInfo != null && contractInfo.getIsReferenceNumber() == 2) {
+            Boolean b = isPartition1(wbsTreeContract);
+            if(b){
+                String sqlElement = "select e.* from m_wbs_form_element e left join m_table_info t on e.f_id=t.id where t.tab_en_name='" + tabName+"'";
+                List<WbsFormElement> elements = jdbcTemplate.query(sqlElement, new BeanPropertyRowMapper<>(WbsFormElement.class));
+                if (!elements.isEmpty()) {
+                    Map<String, String> bh=new HashMap<>();
+                    bh.put("编号","编号");
+                    bh.put("编号:","编号");
+                    bh.put("编号:","编号");
+                    bh.put("工程编号","编号");
+                    bh.put("分项工程编号","编号");
+                    bh.put("单元工程编码","编号");
+                    bh.put("编 号","编号");
+                    bh.put("分项工程编号:","编号");
+                    bh.put("分项工程编号:","编号");
+                    for (WbsFormElement element : elements) {
+                        if(bh.containsKey(element.getEName())){
+                            dataMap2.remove(element.getEKey());
+                        }
+                    }
+                    return dataMap2;
+                }
+            }
+
+        }
+        return dataMap2;
+    }
+    public Boolean isPartition1(WbsTreeContract wbsTreeContract){
+        if(StringUtils.isNotEmpty(wbsTreeContract.getAncestorsPId())){
+            List<WbsTreeContract> list = wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>query().lambda().in(WbsTreeContract::getPKeyId, Func.toLongList(",", wbsTreeContract.getAncestorsPId())).in(WbsTreeContract::getNodeType, Arrays.asList(4,5,6)));
+            if(!list.isEmpty()){
+                // 获取第一个节点类型为6的元素
+                WbsTreeContract result1 = list.stream().filter(item -> item.getNodeType() == 6).findFirst().orElse(null);
+                if(result1!=null&&StringUtils.isNotEmpty(result1.getPartitionCode())){
+                    return  true;
+                }
+                // 获取第一个节点类型为5的元素
+                WbsTreeContract result2 = list.stream().filter(item -> item.getNodeType() == 5).findFirst().orElse(null);
+                if(result2!=null&&StringUtils.isNotEmpty(result2.getPartitionCode())){
+                    return true;
+                }
+                WbsTreeContract result3 = list.stream().filter(item -> item.getNodeType() == 4).findFirst().orElse(null);
+                if(result3!=null&&StringUtils.isNotEmpty(result3.getPartitionCode())){
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
     public String reason(String log) {
         /*保存的时候错误提示例如:字段过短提示 yangyj*/
         StringBuilder sb = new StringBuilder();
@@ -1704,6 +1759,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         /*需要加载表单公式的时候isFormLoading==true*/
         Document document = null;
         Map<String, Object> reData = new HashMap<>();
+        //编号
+        Map<String, Object> bhData = new HashMap<>();
 
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
@@ -1862,7 +1919,38 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     int trindex = Integer.parseInt(element.attr("trindex"));
                     if (trindex <= 10) {
                         if (StringUtils.isNotBlank(node.getPartitionCode())) {
-                            reData.put(element.attr("keyName"), node.getPartitionCode());
+                            bhData.put(element.attr("keyName"), node.getPartitionCode());
+                        }
+                    }
+                }
+            }
+            // 编号 //编号为父节点划分编号 “编号:”、“工程编号:”、“编号”、“分项工程编号”、“分部分项编号” 优先使用自己节点,没有编码找寻父级子分项或分项节点
+            if (bhtitle.size() >= 1 && contractInfo.getIsReferenceNumber() == 2) {
+                String nodePartitionCode = "";
+                if(StringUtils.isNotEmpty(node.getPartitionCode())){
+                    nodePartitionCode=node.getPartitionCode();
+                }else {
+                    if(StringUtils.isNotEmpty(node.getAncestorsPId())){
+                        List<WbsTreeContract> list = wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>query().lambda().in(WbsTreeContract::getPKeyId, Func.toLongList(",", node.getAncestorsPId())).in(WbsTreeContract::getNodeType, Arrays.asList(4, 5)));
+                        if(!list.isEmpty()){
+                            // 获取第一个节点类型为5的元素
+                            WbsTreeContract result = list.stream().filter(item -> item.getNodeType() == 5).findFirst().orElse(null);
+                            if(result!=null&&StringUtils.isNotEmpty(result.getPartitionCode())){
+                                nodePartitionCode=result.getPartitionCode();
+                            }else {
+                                WbsTreeContract result2 = list.stream().filter(item -> item.getNodeType() == 4).findFirst().orElse(null);
+                                if(result2!=null&&StringUtils.isNotEmpty(result2.getPartitionCode())){
+                                    nodePartitionCode=result2.getPartitionCode();
+                                }
+                            }
+                        }
+                    }
+                }
+                for (Element element : bhtitle) {
+                    int trindex = Integer.parseInt(element.attr("trindex"));
+                    if (trindex <= 10) {
+                        if (StringUtils.isNotEmpty(nodePartitionCode)) {
+                            bhData.put(element.attr("keyName"), nodePartitionCode);
                         }
                     }
                 }
@@ -2036,6 +2124,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 }
             }
         }
+        if(bhData!=null){
+            reData.putAll(bhData);
+        }
 //        if(reData.size()>0){
 //            //处理key重复导致pdf数据错位
 //            for (Iterator<Map.Entry<String, Object>> iterator = reData.entrySet().iterator(); iterator.hasNext(); ) {