فهرست منبع

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

yangyj 2 سال پیش
والد
کامیت
bbeb41bb53

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

@@ -1,5 +1,6 @@
 package org.springblade.business.controller;
 
+import cn.hutool.core.lang.hash.Hash;
 import com.alibaba.excel.util.DateUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -1200,17 +1201,32 @@ public class InformationWriteQueryController extends BladeController {
 
                 //试验批量上报
                 String trialIds = "";
+                Map<Long, Long> mapKey = new HashMap<>();
                 if (queryList.size() == 0 && startTaskVO.getTrialSelfInspectionRecordId() == 1L) {
+                    //试验填报数据
                     queryList = new ArrayList<>(this.informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getWbsId, Arrays.asList(ids))));
-                    trialIds = startTaskVO.getIds();
+                    //重新绑定trialSelfInspectionRecordId使用map
+                    for (InformationQuery informationQuery : queryList) {
+                        mapKey.put(informationQuery.getId(), informationQuery.getWbsId());
+                    }
                     //试验记录ids重新赋值映射为数据源ids
                     ids = queryList.stream().map(InformationQuery::getId).map(String::valueOf).toArray(String[]::new);
+                    trialIds = startTaskVO.getIds();
                 }
 
                 Map<String, String> queryMap = new HashMap<>();
                 queryList.forEach(query -> queryMap.put(query.getId().toString(), query.getName()));
                 try {
                     for (String id : ids) {
+
+                        //试验-批量上报时,重新绑定当前试验记录id
+                        if (ObjectUtil.isNotEmpty(startTaskVO.getTrialSelfInspectionRecordId()) && startTaskVO.getTrialSelfInspectionRecordId() == 1L) {
+                            Long wbsId = mapKey.get(Long.parseLong(id));
+                            if (ObjectUtil.isNotEmpty(wbsId)) {
+                                startTaskVO.setTrialSelfInspectionRecordId(wbsId);
+                            }
+                        }
+
                         //生成任务实体
                         TaskVO taskVO = new TaskVO();
                         BeanUtils.copyProperties(startTaskVO, taskVO);

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

@@ -150,10 +150,10 @@ public class TrialDetectionController extends BladeController {
     public R<Object> selfRemove(@Valid @RequestParam String ids) {
         List<TrialSelfInspectionRecord> recordList = iTrialSelfInspectionRecordService.getBaseMapper().selectList(Wrappers.<TrialSelfInspectionRecord>lambdaQuery()
                 .select(TrialSelfInspectionRecord::getTaskStatus)
-                .ne(TrialSelfInspectionRecord::getTaskStatus, "未上报")
+                .and(obj -> obj.ne(TrialSelfInspectionRecord::getTaskStatus, "未上报").ne(TrialSelfInspectionRecord::getTaskStatus, "已废除"))
                 .in(TrialSelfInspectionRecord::getId, Func.toLongList(ids)));
         if (recordList.size() > 0) {
-            return R.fail("只能删除未上报记录信息,操作失败");
+            return R.fail("只能删除未上报或已废除的试验记录信息,操作失败");
         }
         //刪除按钮状态记录
         String sql1 = "delete from u_trial_self_data_record where record_id in(" + ids + ")";

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

@@ -71,8 +71,6 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
 
     List<WbsTreePrivate> selectNodeAndTable2(String wbsId, String referencePrivateWbsProjectId);
 
-    boolean updateBatchByPid(@Param("wbsTreePrivates") WbsTreePrivateDTO3 wbsTreePrivates);
-
     List<WbsTreePrivate> selectByIds(@Param("projectId") String projectId, @Param("ids") List<String> ids);
 
     void updateBatchByIds(@Param("wbsTree") WbsTree wbsTree, @Param("projectId") String projectId);

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

@@ -238,16 +238,6 @@
           AND is_deleted = 0
     </update>
 
-    <update id="updateBatchByPid">
-        UPDATE m_wbs_tree_private
-        SET node_name   = #{wbsTreePrivates.nodeName},
-            full_name   =#{wbsTreePrivates.nodeName},
-            table_type  = #{wbsTreePrivates.tableType},
-            table_owner = #{wbsTreePrivates.tableOwner},
-            fill_rate = #{wbsTreePrivates.fillRate}
-        WHERE p_key_id = #{wbsTreePrivates.pKeyId}
-    </update>
-
     <update id="updateBatchByIds">
         UPDATE m_wbs_tree_private
         SET node_name = #{wbsTree.nodeName},

+ 28 - 33
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -290,56 +290,51 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public boolean updateBatchByPid(List<WbsTreePrivateDTO3> wbsTreePrivates) {
         try {
             //修改当前私有项目元素表基础信息
             wbsTreePrivates.forEach(list -> {
-                baseMapper.updateBatchByPid(list);
+                this.update(Wrappers.<WbsTreePrivate>lambdaUpdate()
+                        .set(WbsTreePrivate::getNodeName, list.getNodeName())
+                        .set(WbsTreePrivate::getFullName, list.getNodeName())
+                        .set(WbsTreePrivate::getTableType, list.getTableType())
+                        .set(WbsTreePrivate::getTableOwner, list.getTableOwner())
+                        .set(WbsTreePrivate::getFillRate, list.getFillRate())
+                        .eq(WbsTreePrivate::getPKeyId, list.getPKeyId())
+                );
             });
 
+            //获取最新项目表信息
+            List<Long> pKeyIds = wbsTreePrivates.stream().map(WbsTreePrivateDTO3::getPKeyId).collect(Collectors.toList());
+            List<WbsTreePrivate> wbsTreePrivateNew = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                    .select(WbsTreePrivate::getNodeName, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getId, WbsTreePrivate::getSort, WbsTreePrivate::getProjectId)
+                    .in(WbsTreePrivate::getPKeyId, pKeyIds));
+            String projectId = wbsTreePrivateNew.stream().map(WbsTreePrivate::getProjectId).findAny().orElse(null);
+
             //修改当前项目下所有合同段中的元素表基础信息
-            String projectId = "";
-            String parentId = "";
-            List<WbsTreePrivate> wbsTreePrivateList = new ArrayList<>();
-            int number = 0;
-            for (WbsTreePrivateDTO3 wbsTreePrivate : wbsTreePrivates) {
-                WbsTreePrivate wbsTreePrivate1 = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getPKeyId()));
-                wbsTreePrivateList.add(wbsTreePrivate1);
-                if (number == 0) {
-                    projectId = wbsTreePrivate1.getProjectId();
-                    parentId = String.valueOf(wbsTreePrivate1.getParentId());
-                    number = 1;
-                }
-            }
-            if (StringUtils.isNotEmpty(projectId) && StringUtils.isNotEmpty(parentId) && wbsTreePrivateList.size() > 0) {
+            if (StringUtils.isNotEmpty(projectId) && wbsTreePrivateNew.size() > 0) {
                 //获取所有合同段ids
-                List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, projectId));
-                if (contractInfos.size() > 0) {
-                    List<Long> contractInfoIds = contractInfos.stream().map(ContractInfo::getId).collect(Collectors.toList());
-                    for (Long contractInfoId : contractInfoIds) {
-                        for (WbsTreePrivate wbsTreePrivate : wbsTreePrivateList) {
+                List<Long> contractInfoIds = contractInfoMapper.selectList(Wrappers.<ContractInfo>lambdaQuery().select(ContractInfo::getId).eq(ContractInfo::getPId, projectId)).stream().map(ContractInfo::getId).collect(Collectors.toList());
+                if (contractInfoIds.size() > 0) {
+                    for (Long contractId : contractInfoIds) {
+                        for (WbsTreePrivate wbsTreePrivate : wbsTreePrivateNew) {
                             //判断当前合同段是否存在该元素表、以及该元素表父级节点(包括新增、复制节点)
-                            List<WbsTreeContract> wbsTreeContract = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                                    .eq(WbsTreeContract::getContractId, contractInfoId)
-                                    .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
+                            long row = wbsTreeContractMapper.selectCount(Wrappers.<WbsTreeContract>lambdaQuery()
                                     .eq(WbsTreeContract::getStatus, 1)
-                                    .eq(WbsTreeContract::getId, wbsTreePrivate.getId())
-                                    .or()
-                                    .eq(WbsTreeContract::getParentId, wbsTreePrivate.getId())
-                                    .or()
-                                    .eq(WbsTreeContract::getOldId, wbsTreePrivate.getId())
+                                    .eq(WbsTreeContract::getContractId, contractId)
+                                    .eq(WbsTreeContract::getProjectId, projectId)
+                                    .and(obj -> obj.eq(WbsTreeContract::getId, wbsTreePrivate.getId()).or().eq(WbsTreeContract::getParentId, wbsTreePrivate.getId()).or().eq(WbsTreeContract::getOldId, wbsTreePrivate.getId()))
                             );
                             //修改原始、复制、新增节点下的元素表
-                            if (wbsTreeContract.size() > 0) {
-                                wbsTreeContractMapper.updateContractTablesInfo(contractInfoId, wbsTreePrivate);
+                            if (row > 0) {
+                                wbsTreeContractMapper.updateContractTablesInfo(contractId, wbsTreePrivate);
                             }
                         }
                     }
                 }
             }
         } catch (Exception e) {
-            throw new ServiceException("修改同步到合同段时异常 " + e.getMessage());
+            throw new ServiceException("修改同步到合同段时异常" + e.getMessage());
         }
         return true;
     }
@@ -1799,7 +1794,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             tableOwnerList = Func.toStrList(tableOwners);
         }
 
-        return baseMapper.selectWbsTreeTrialTabList(roleAndTabOwners, tableType, wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getId(), tableOwnerList,contractId);
+        return baseMapper.selectWbsTreeTrialTabList(roleAndTabOwners, tableType, wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getId(), tableOwnerList, contractId);
     }
 
     @Override

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -847,6 +847,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     //新增独立表单库数据
+    @Async
     private void insertDLTabAsync(WbsTreeContractDTO pawDTO) {
         //获取当前引用项目的独立表
         List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateService.getBaseMapper().selectList(Wrappers.<WbsTreePrivate>lambdaQuery()