浏览代码

Merge branch 'master' of http://39.108.216.210:3000/zhuwei/bladex

huangtf 7 月之前
父节点
当前提交
3db25dcefe
共有 23 个文件被更改,包括 332 次插入134 次删除
  1. 2 2
      blade-common/src/main/java/org/springblade/common/utils/AsyncConfigurer.java
  2. 2 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java
  3. 9 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TrialSelfDataRecordVO1.java
  4. 9 1
      blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java
  5. 7 1
      blade-service/blade-business/src/main/java/org/springblade/business/controller/EntrustInfoController.java
  6. 66 79
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  7. 3 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogMapper.xml
  8. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/IEntrustInfoService.java
  9. 19 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ContractLogServiceImpl.java
  10. 61 5
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/EntrustInfoServiceImpl.java
  11. 14 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  12. 6 6
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java
  13. 2 1
      blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java
  14. 24 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java
  15. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorInit.java
  16. 0 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaDao.java
  17. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsParamService.java
  18. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  19. 3 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaDaoImpl.java
  20. 5 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java
  21. 91 22
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java
  22. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialMeterFormMapper.xml
  23. 2 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.xml

+ 2 - 2
blade-common/src/main/java/org/springblade/common/utils/AsyncConfigurer.java

@@ -15,7 +15,7 @@ public class AsyncConfigurer {
     /**
      * cpu 核心数量
      */
-    public static final int cpuNum = 3 ;//Runtime.getRuntime().availableProcessors();
+    public static final int cpuNum = 2 ;//Runtime.getRuntime().availableProcessors();
 
     /**
      * 线程池配置
@@ -24,7 +24,7 @@ public class AsyncConfigurer {
     @Bean("taskExecutor1")
     public ThreadPoolExecutor getAsyncExecutor() {
         return new ThreadPoolMonitor(cpuNum
-                , 5
+                , 10
                 , 180
                 , TimeUnit.SECONDS
                 , new LinkedBlockingQueue<>(2000)

+ 2 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -217,7 +217,8 @@ public class FormData {
 
     private String getKt(Integer index, String msg) {
         if (this.code != null && this.code.matches(CODE_REG)) {
-            return this.code.split(StringPool.COLON)[index];
+            String s = this.code.split(StringPool.COLON)[index];
+            return s;
         } else {
             return msg;
         }

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

@@ -0,0 +1,9 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+@Data
+public class TrialSelfDataRecordVO1 {
+    private String pdfUrl;
+    private Integer tableType;
+}

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

@@ -12,6 +12,7 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
+import org.apache.http.client.methods.HttpGet;
 import org.springblade.business.entity.ContractLog;
 import org.springblade.business.entity.FixedFlowLink;
 import org.springblade.business.entity.InformationQuery;
@@ -21,12 +22,14 @@ import org.springblade.business.service.IFixedFlowService;
 import org.springblade.business.service.IInformationQueryService;
 import org.springblade.business.utils.PDFUtil;
 import org.springblade.business.vo.FixedFlowVO;
+import org.springblade.common.constant.CommonConstant;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.feign.*;
+import org.springblade.system.cache.ParamCache;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
@@ -868,7 +871,12 @@ public class EVisaTaskCheckController {
         ContractInfo contract = this.contractClient.getContractById(Func.toLong(contractId));
         if (contract != null) {
             boolean isOpen = new Integer("1").equals(contract.getIsElectronicSignature());
-            return R.data(isOpen, isOpen ? "当前合同段已经开启电签" : "当前合同段未开启电签,不允许上报,请联系维护人员处理");
+            String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
+            if("20".equals(sys_isonline)){
+                return R.data(isOpen, isOpen ? "当前合同段已经开启电签" : "电签服务已欠费,请联系信息化人员维护处理");
+            }else {
+                return R.data(isOpen, isOpen ? "当前合同段已经开启电签" : "当前合同段未开启电签,不允许上报,请联系维护人员处理");
+            }
         }
         return R.data(300, false, "未找到对应合同段");
     }

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

@@ -143,7 +143,7 @@ public class  EntrustInfoController extends BladeController {
 		return R.status(entrustInfoService.saveOrUpdate(entrustInfo));
 	}
 
-	
+
 	/**
 	 * 删除 委托单信息表
 	 */
@@ -154,6 +154,12 @@ public class  EntrustInfoController extends BladeController {
 		return  entrustInfoService.delEntrustInfo(ids);
 	}
 
+    @GetMapping("/annul")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "废除委托单(撤回上报)")
+    public R annul(@RequestParam String id){
+        return entrustInfoService.annul(id);
+    }
 	@PostMapping("/get-report-detail")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "获取报告详情", notes = "获取报告详情")

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

@@ -591,6 +591,7 @@ public class InformationWriteQueryController extends BladeController {
     public R<Object> abolishOne(@RequestParam String primaryKeyId, @RequestParam String classify, @RequestParam String projectId, @RequestParam String contractId) {
         //查询填报状态
         InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 1));
+        primaryKeyId=primaryKeyId+"*";
         if (businessData != null) {
             //使用批量废除接口
             return this.batchAbolish(businessData.getId().toString(), primaryKeyId, projectId, contractId);
@@ -1248,8 +1249,25 @@ public class InformationWriteQueryController extends BladeController {
                 //修改试验任务状态为未上报
 
                 //批量废除直接调的该接口,primaryKeyId为null,ids=当前试验记录的ids
-                 String sql = "update u_trial_self_inspection_record set task_status = '已废除' where id in(" + ids + ")";
+                String sql="";
+                String sql1="";
+                if(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;
+                }else {
+                    sql= "update u_trial_self_inspection_record set task_status = '未上报' where id in(" + ids + ")";
+                    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 in(" + ids + ")";
+                }
                 jdbcTemplate.execute(sql);
+                List<EntrustInfo> query = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(EntrustInfo.class));
+                if(!query.isEmpty()){
+                    String[] idss = query.stream()
+                        .map(item -> String.valueOf(item.getId()))
+                        .toArray(String[]::new);
+                    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) {
@@ -1502,8 +1520,8 @@ public class InformationWriteQueryController extends BladeController {
                 Map<Long, Long> oldToNewIdMap = new HashMap<>();
                 Map<String, WbsTreeContract> nodeMap = new HashMap<>();
                 nodeChildAll.forEach(node -> {
-                    oldToNewIdMap.put(node.getPKeyId(), SnowFlakeUtil.getId());
-                    nodeMap.put(node.getPKeyId().toString(), node);
+                    oldToNewIdMap.put(node.getId(), SnowFlakeUtil.getId());
+                    nodeMap.put(node.getId().toString(), node);
                 });
 
                 /*获取元素表数据*/
@@ -1556,9 +1574,7 @@ public class InformationWriteQueryController extends BladeController {
                     WbsTreeContract newData = new WbsTreeContract();
                     BeanUtils.copyProperties(nodeOld, newData);
 
-                    newData.setPKeyId(oldToNewIdMap.get(nodeOld.getPKeyId()));
-                    newData.setId(newData.getPKeyId());
-
+                    newData.setPKeyId(SnowFlakeUtil.getId());
                     if (nodeOld.getNodeType() != null && nodeOld.getNodeType() == 6) {
                         peerMap.put(newData.getPKeyId(), nodeOld.getPKeyId());
                     }
@@ -1568,20 +1584,17 @@ public class InformationWriteQueryController extends BladeController {
                     } else {
                         newData.setOldId(nodeOld.getId().toString());
                     }
+
                     if (new Integer("1").equals(nodeOld.getType())) {
-                       // newData.setId(oldToNewIdMap.containsKey(nodeOld.getPKeyId()) ? oldToNewIdMap.get(nodeOld.getPKeyId()) : SnowFlakeUtil.getId());
+                        newData.setId(oldToNewIdMap.containsKey(nodeOld.getId()) ? oldToNewIdMap.get(nodeOld.getId()) : SnowFlakeUtil.getId());
                         newData.setPartitionCode(StringUtils.isNotEmpty(vo.getPartitionCode()) ? vo.getPartitionCode() : null);
                     }
-                    //如果被复制的是节点,parendID等于父节点的PkeyID
                     if (vo.getNeedCopyPrimaryKeyId().equals(nodeOld.getPKeyId().toString())) {
-                        newData.setParentId(parent.getPKeyId());
-                        newData.setPId(parent.getPKeyId());
+                        newData.setParentId(parent.getId());
                         newData.setNodeName(vo.getNeedCopyNodeName());
                         newData.setFullName(vo.getNeedCopyNodeName());
                     } else {
-                        //如果是复制的表格,parentID 他父节点的pkeyId
-                        newData.setParentId(oldToNewIdMap.containsKey(nodeOld.getPId()) ? oldToNewIdMap.get(nodeOld.getPId()) : SnowFlakeUtil.getId());
-                        newData.setPId(oldToNewIdMap.containsKey(nodeOld.getPId()) ? oldToNewIdMap.get(nodeOld.getPId()) : SnowFlakeUtil.getId());
+                        newData.setParentId(oldToNewIdMap.containsKey(nodeOld.getParentId()) ? oldToNewIdMap.get(nodeOld.getParentId()) : SnowFlakeUtil.getId());
                     }
                     newData.setCreateTime(new Date());
                     newData.setUpdateTime(new Date());
@@ -1590,7 +1603,9 @@ public class InformationWriteQueryController extends BladeController {
                     newData.setPdfUrl(null);
                     newData.setCreateUser(AuthUtil.getUserId());
                     newData.setSort(ObjectUtil.isNotEmpty(nodeOld.getSort()) ? nodeOld.getSort() : 0);
+
                     this.restoreParent(newData, oldToNewIdMap);
+
                     saveList.add(newData);
 
                     /*生成工序节点施工日志*/
@@ -2080,15 +2095,15 @@ public class InformationWriteQueryController extends BladeController {
 
         Map<Long, WbsTreeContract> newMap = BeanUtil.copyProperties(result, WbsTreeContract.class).stream().collect(Collectors.toMap(WbsTreeContract::getId, Function.identity()));
         for (WbsTreeContract obj : sortedResult) {
-            if (obj != null && ObjectUtil.isNotEmpty(obj.getPId())) {
+            if (obj != null && ObjectUtil.isNotEmpty(obj.getParentId())) {
                 if (newMap.size() > 0) {
-                    WbsTreeContract parentObj = newMap.get(obj.getPId());
-                    if (parentObj != null && ObjectUtil.isNotEmpty(obj.getAncestors()) && ObjectUtil.isNotEmpty(obj.getPId()) && !obj.getAncestors().contains(obj.getPId().toString())) {
+                    WbsTreeContract parentObj = newMap.get(obj.getParentId());
+                    if (parentObj != null && ObjectUtil.isNotEmpty(obj.getAncestors()) && ObjectUtil.isNotEmpty(obj.getParentId()) && !obj.getAncestors().contains(obj.getParentId().toString())) {
                         String parentAncestors = parentObj.getAncestors();
-                        obj.setAncestors(parentAncestors + "," + obj.getPId());
+                        obj.setAncestors(parentAncestors + "," + obj.getParentId());
                     }
                 }
-                newMap.put(obj.getPKeyId(), obj);
+                newMap.put(obj.getId(), obj);
                 result.add(obj);
             }
         }
@@ -2367,18 +2382,14 @@ public class InformationWriteQueryController extends BladeController {
         } else { //多层级节点复制
             //根节点id
             Long needCopyNodeOldId = needCopyNode.getId();
-            Long needCopyNodeOldPKeyId = needCopyNode.getPKeyId();
+            needCopyNode.setId(SnowFlakeUtil.getId());
             needCopyNode.setPKeyId(SnowFlakeUtil.getId());
-            needCopyNode.setId(needCopyNode.getPKeyId());
-            needCopyNode.setPId(needCopyNodeOldPKeyId);
-
             needCopyNode.setNodeName(toCopyNode.getNodeName());
             needCopyNode.setFullName(toCopyNode.getNodeName());
             needCopyNode.setPartitionCode(toCopyNode.getPartitionCode());
             needCopyNode.setCreateTime(new Date());
 
             Map<Long, Long> parentIdToId = new HashMap<>();
-            Map<Long,Long>pidToPkeyId=new HashMap<>();
             Map<Long, List<WbsTreeContract>> tabMap = needTabs.stream().collect(Collectors.groupingBy(WbsTreeContract::getParentId));
 
             //获取节点下所有表的key
@@ -2392,7 +2403,6 @@ public class InformationWriteQueryController extends BladeController {
                 if (obj != null) {
                     //构造节点
                     Long newParentId;
-                    Long newPid;
                     if (parentIdToId.size() > 0) {
                         //去数据源节点获取父级id对应的新id,设置成重设后的新的父级id
                         newParentId = parentIdToId.get(node.getParentId());
@@ -2400,22 +2410,9 @@ public class InformationWriteQueryController extends BladeController {
                         //根节点
                         newParentId = needCopyNode.getId();
                     }
-                    if(pidToPkeyId.size()>0){
-                        //去数据源节点获取父级id对应的新id,设置成重设后的新的父级Pid
-                        newPid = pidToPkeyId.get(node.getPId());
-                    }else{
-                        //根节点
-                        newPid = needCopyNode.getPKeyId();
-                    }
-
                     if (ObjectUtils.isEmpty(newParentId)) {
                         newParentId = needCopyNode.getId();
                     }
-                    if(ObjectUtils.isEmpty(newPid)){
-                        newPid=needCopyNode.getPKeyId();
-                    }
-
-
                     obj.setPKeyId(SnowFlakeUtil.getId());
 
                     if (ObjectUtil.isNotEmpty(node.getOldId())) {
@@ -2427,10 +2424,8 @@ public class InformationWriteQueryController extends BladeController {
                     Long id = SnowFlakeUtil.getId();
                     //数据源节点的老id与新的id的Map,作为下一级的节点的父级id的替换
                     parentIdToId.put(node.getId(), id);
-                    pidToPkeyId.put(node.getPId(),newPid);
                     //重设Id
                     obj.setId(id);
-                    obj.setPId(newPid);
                     obj.setParentId(newParentId);
                     obj.setCreateTime(new Date());
                     //获取当前复制的节点的sort
@@ -2453,7 +2448,6 @@ public class InformationWriteQueryController extends BladeController {
                                 Long oldPKeyId = needTab.getPKeyId();
                                 String tableName = needTab.getInitTableName();
                                 Long tabId = SnowFlakeUtil.getId();
-                                objTab.setPId(obj.getPKeyId());
                                 objTab.setId(tabId);
                                 objTab.setParentId(id);
                                 objTab.setPKeyId(SnowFlakeUtil.getId());
@@ -2503,12 +2497,9 @@ public class InformationWriteQueryController extends BladeController {
             if (isSameNode == 1) {
                 //同节点
                 needCopyNode.setParentId(needCopyNode.getParentId());
-                needCopyNode.setPId(needCopyNode.getPId());
             } else {
                 //跨节点
                 needCopyNode.setParentId(toCopyNode.getId());
-                needCopyNode.setPId(toCopyNode.getPKeyId());
-                needCopyNode.setAncestors(toCopyNode.getAncestors()+","+needCopyNode.getPId());
             }
             addNodeList.add(0, needCopyNode);
         }
@@ -3061,8 +3052,8 @@ public class InformationWriteQueryController extends BladeController {
             Map<String, WbsTreePrivate> nodeMap = new HashMap<>();
             Map<String, WbsTreeContract> nodeMapContract = new HashMap<>();
             selectedNodeList.forEach(half -> {
-                OldIdToNewIdMap.put(half.getPKeyId(), SnowFlakeUtil.getId());
-                nodeMap.put(half.getPKeyId().toString(), half);
+                OldIdToNewIdMap.put(half.getId(), SnowFlakeUtil.getId());
+                nodeMap.put(half.getId().toString(), half);
 
                 WbsTreeContract wbsTreeContract = BeanUtil.copyProperties(half, WbsTreeContract.class);
                 nodeMapContract.put(half.getId().toString(), wbsTreeContract);
@@ -3075,28 +3066,25 @@ public class InformationWriteQueryController extends BladeController {
                 BeanUtils.copyProperties(half, newData);
 
                 //重塑pKeyId、id和parentId
-                newData.setPKeyId(OldIdToNewIdMap.get(half.getPKeyId()));
-                newData.setId(newData.getPKeyId());
+                newData.setPKeyId(SnowFlakeUtil.getId());
                 if (new Integer("1").equals(half.getType())) {
-                    newData.setPId(OldIdToNewIdMap.containsKey(half.getPId()) ? OldIdToNewIdMap.get(half.getPId()) : treeContract.getPKeyId());
+                    newData.setId(OldIdToNewIdMap.containsKey(half.getId()) ? OldIdToNewIdMap.get(half.getId()) : SnowFlakeUtil.getId());
                 }
 
                 //设置父级id
                 boolean var = true;
                 if ("1".equals(vo.getSaveType())) {
                     //当前节点及其子节点操作
-                    if (OldIdToNewIdMap.containsKey(half.getPId())) {
+                    if (OldIdToNewIdMap.containsKey(half.getParentId())) {
                         //跨节点
-                        WbsTreePrivate wbsTreePrivate = nodeMap.get(half.getPId() + "");
+                        WbsTreePrivate wbsTreePrivate = nodeMap.get(half.getParentId() + "");
                         if (treeContract.getNodeType().equals(wbsTreePrivate.getNodeType()) && treeContract.getNodeName().equals(wbsTreePrivate.getNodeName())) {
                             newData.setParentId(treeContract.getId());
-                            newData.setPId(treeContract.getPKeyId());
                             var = false;
 
                             //从复制or新增节点开始操作-》选择新增节点,根节点会走到这里
                         } else if (treeContract.getNodeType().equals(wbsTreePrivate.getNodeType()) && ObjectUtil.isNotEmpty(treeContract.getOldId()) && treeContract.getOldId().equals(wbsTreePrivate.getId().toString())) {
                             newData.setParentId(treeContract.getId());
-                            newData.setPId(treeContract.getPKeyId());
                             var = false;
                         }
                     }
@@ -3113,7 +3101,11 @@ public class InformationWriteQueryController extends BladeController {
                         } else {
                             //非自定义节点
                             //同节点
-                            newData.setPId(OldIdToNewIdMap.containsKey(half.getPId())?OldIdToNewIdMap.get(half.getPId()):treeContract.getPKeyId());
+                            newData.setParentId(OldIdToNewIdMap.containsKey(half.getParentId())
+                                ? OldIdToNewIdMap.get(half.getParentId()) : treeContract.getId().equals(half.getParentId())
+                                ||
+                                treeContract.getOldId().equals(half.getParentId().toString())
+                                ? treeContract.getId() : SnowFlakeUtil.getId());
                         }
                     }
 
@@ -3125,19 +3117,16 @@ public class InformationWriteQueryController extends BladeController {
                             if (("1").equals(node.getIsPeer())) {
                                 //同级
                                 newData.setParentId(treeContract.getParentId());
-                                newData.setPId(treeContract.getPKeyId());
 
                             } else if (("2").equals(node.getIsPeer())) {
                                 //下一级
                                 newData.setParentId(treeContract.getId());
-                                newData.setPId(treeContract.getPKeyId());
 
                             }
                         }
                     } else if (new Integer("2").equals(half.getType())) {
                         //表
                         newData.setParentId(OldIdToNewIdMap.containsKey(half.getParentId()) ? OldIdToNewIdMap.get(half.getParentId()) : treeContract.getId().equals(half.getParentId()) || treeContract.getOldId().equals(half.getParentId().toString()) ? treeContract.getId() : SnowFlakeUtil.getId());
-                        newData.setPId(OldIdToNewIdMap.containsKey(half.getPId())?OldIdToNewIdMap.get(half.getPId()):half.getPId());
                     }
                 }
 
@@ -3163,18 +3152,24 @@ public class InformationWriteQueryController extends BladeController {
                 //设置节点名称
                 newData.setFullName(ObjectUtil.isNotEmpty(idAndNodeNameMaps.get(half.getId())) ? idAndNodeNameMaps.get(half.getId()) : half.getFullName());
 
-                //重塑父节点关联关系
-                String sql="Select ancestors from m_wbs_tree_contract where p_key_id="+newData.getPId();
-                String ancestors = jdbcTemplate.query(sql, (rs, rowNum) -> rs.getString(1))
-                    .stream()
-                    .findFirst()
-                    .orElse(null);
+                /*//重塑父节点关联关系
+                String ancestors = newData.getAncestors();
                 if (StringUtils.isNotEmpty(ancestors)) {
+                    //重组后的链表
+                    StringBuilder stringBuilder = new StringBuilder();
+                    //拆分重组
+                    String[] ancestorsArray = ancestors.split(",");
+                    for (String oldParentId : ancestorsArray) {
+                        if (StringUtils.isNotEmpty(oldParentId)) {
+                            //获取新的
+                            Long newParentId = OldIdToNewIdMap.get(Long.parseLong(oldParentId));
+                            //如果新的id为空,说明不变
+                            stringBuilder.append(",").append(newParentId == null ? oldParentId : newParentId);
+                        }
+                    }
                     //将新链表设置进对象中
-                    newData.setAncestors(ancestors+","+newData.getPId());
-                }else {
-                    newData.setAncestors(null);
-                }
+                    newData.setAncestors(stringBuilder.substring(1));
+                }*/
 
                 //设置到保存集合中
                 saveList.add(newData);
@@ -3234,15 +3229,6 @@ public class InformationWriteQueryController extends BladeController {
                 }
             }
         }
-        //设置ancestors
-        for (WbsTreeContract wbsTreeContract : saveList) {
-            if(wbsTreeContract.getAncestors()==null){
-                WbsTreeContract wbsTreeContract1 = saveList.stream().filter(s -> s.getPKeyId().equals(wbsTreeContract.getPId())).findFirst().orElse(null);
-                if(wbsTreeContract1!=null&&wbsTreeContract1.getAncestors()!=null){
-                    wbsTreeContract.setAncestors(wbsTreeContract1.getAncestors()+","+wbsTreeContract.getPId());
-                }
-            }
-        }
         R<Boolean> booleanR = this.saveOrCopyNodeTree(saveList, saveLedger, 2, treeContract);
 
         List<WbsTreeContract> nowTabs = saveList.stream().filter(f -> new Integer(2).equals(f.getType())).collect(Collectors.toList());
@@ -4012,10 +3998,10 @@ public class InformationWriteQueryController extends BladeController {
             if (parentNode.getNodeType() < parentNode.getNodeType()) {
                 throw new ServiceException("当前新增选择的节点类型不能大于父级节点类型");
             }
+
             WbsTreeContract obj = new WbsTreeContract();
             obj.setPKeyId(SnowFlakeUtil.getId());
-            obj.setId(obj.getPKeyId());
-            obj.setPId(parentNode.getPKeyId());
+            obj.setId(SnowFlakeUtil.getId());
             obj.setProjectId(parentNode.getProjectId());
             obj.setContractId(parentNode.getContractId());
             obj.setContractType(ObjectUtil.isNotEmpty(parentNode.getContractType()) ? parentNode.getContractType() : null);
@@ -4025,7 +4011,7 @@ public class InformationWriteQueryController extends BladeController {
             obj.setFullName(dto.getNodeName());
 
             if (ObjectUtil.isNotEmpty(parentNode.getNodeType())) {
-                if (parentNode.getPId().equals(0L)) {
+                if (parentNode.getParentId().equals(0L)) {
                     obj.setNodeType(1);
                 } else {
                     obj.setNodeType(parentNode.getNodeType().equals(6) ? 6 : dto.getNodeType());
@@ -4033,7 +4019,7 @@ public class InformationWriteQueryController extends BladeController {
             }
             obj.setPartitionCode(dto.getPartitionCode());
             obj.setParentId(parentNode.getId());
-            obj.setAncestors(parentNode.getAncestors() + "," + parentNode.getPKeyId());
+            obj.setAncestors(parentNode.getAncestors() + "," + parentNode.getId());
             obj.setType(1);
             obj.setStatus(1);
             obj.setIsDeleted(0);
@@ -4071,6 +4057,7 @@ public class InformationWriteQueryController extends BladeController {
                         obj.setIsClassifition(dto.getIsClassifition());
                         obj.setExcellentNum(dto.getExcellentNum());
                         obj.setUnitNum(dto.getUnitNum());
+
                     } else {
                         throw new ServiceException("标准分类或单元名称选择有误");
                     }

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogMapper.xml

@@ -93,7 +93,10 @@
         record_number,
         project_pileno,
         project_part,
+        contract_id,
+        wbs_node_id,
         data_id,
+        create_user,
         create_user_name,
         file_name,
         status,

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IEntrustInfoService.java

@@ -75,4 +75,6 @@ public interface IEntrustInfoService extends BaseService<EntrustInfo> {
 	R delEntrustInfo(String ids);
 	//检查材料是否关联委托单
 	R checkSample(Long sampleId);
+
+    R annul(String id);
 }

+ 19 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ContractLogServiceImpl.java

@@ -18,6 +18,7 @@ package org.springblade.business.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.business.entity.ContractLog;
@@ -32,6 +33,8 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.manager.feign.ExcelTabClient;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
@@ -50,6 +53,10 @@ public class ContractLogServiceImpl extends BaseServiceImpl<ContractLogMapper, C
 
     private final JdbcTemplate jdbcTemplate;
 
+    @Autowired
+    private  ExcelTabClient excelTabClient;
+
+
     public ContractLogServiceImpl(JdbcTemplate jdbcTemplate) {
         this.jdbcTemplate = jdbcTemplate;
     }
@@ -98,10 +105,22 @@ public class ContractLogServiceImpl extends BaseServiceImpl<ContractLogMapper, C
         Integer count = this.baseMapper.selectPageCount(logVO);
         //分页信息
         List<ContractLog> result = this.baseMapper.constructionLogPage(current, logVO.getSize(), logVO, AuthUtil.getUserId());
+
         //没有数据
         if (result == null || result.size() == 0) {
             return Condition.getPage(query);
         }
+        //甬台温临时处理,在上面先查出所有的日志,将没有pdf的 让他重新生成
+//        try {
+//            for (ContractLog contractLog : result) {
+//                if(contractLog.getPdfUrl()==null){
+                        //pkeyID是日志表的private的pkeyid
+//                    excelTabClient.getTheContractLogBusinessData("1768465695416254470",contractLog.getWbsNodeId().toString(),contractLog.getRecordTime(),contractLog.getContractId().toString(),contractLog.getCreateUser());
+//                }
+//            }
+//        }catch (Exception e){
+//            e.printStackTrace();
+//        }
         //有数据,转换成VO
         List<ContractLogVO> deduplicatedList = JSONArray.parseArray(JSONObject.toJSONString(result), ContractLogVO.class);
 //        List<ContractLogVO> deduplicatedList = new ArrayList<>(voResult.stream()

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

@@ -21,26 +21,32 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
+import org.springblade.business.controller.EntrustInfoController;
 import org.springblade.business.entity.EntrustInfo;
+import org.springblade.business.entity.InformationQuery;
+import org.springblade.business.entity.Task;
 import org.springblade.business.mapper.EntrustInfoMapper;
 import org.springblade.business.service.IEntrustInfoService;
+import org.springblade.business.service.IInformationQueryService;
 import org.springblade.business.vo.EntrustDataInfoVO;
 import org.springblade.business.vo.EntrustInfoVO;
 import org.springblade.business.vo.LoadDataInfoVO;
 import org.springblade.business.vo.TrialSampleDataInfoVO;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.feign.ExcelTabClient;
 import org.springblade.manager.feign.WbsTreePrivateClient;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 委托单信息表 服务实现类
@@ -56,8 +62,9 @@ public class EntrustInfoServiceImpl extends BaseServiceImpl<EntrustInfoMapper, E
 	private final JdbcTemplate jdbcTemplate;
 	private final WbsTreePrivateClient wbsTreePrivateClient;
 	private final EntrustInfoMapper entrustInfoMapper;
+    private final IInformationQueryService informationQueryService;
 
-	@Override
+    @Override
 	public IPage<EntrustInfoVO> selectEntrustInfoPage(IPage<EntrustInfoVO> page, EntrustInfoVO entrustInfo) {
 		return page.setRecords(baseMapper.selectEntrustInfoPage(page, entrustInfo));
 	}
@@ -158,7 +165,10 @@ public class EntrustInfoServiceImpl extends BaseServiceImpl<EntrustInfoMapper, E
 			}
 		}
 		entrustInfo.setEntrustName(wbsTreePrivate.getNodeName());
-		this.saveOrUpdate(entrustInfo);
+        if(dataInfo.containsKey("id")){
+            entrustInfo.setId(Long.parseLong(dataInfo.get("id").toString()));
+        }
+        this.saveOrUpdate(entrustInfo);
 		dataInfo.put("groupId",entrustInfo.getId());
 		dataInfo.put("pkeyId", dataInfo.getString("nodeErTreeId"));
 		excelTabClient.saveEntrustTabData(dataInfo);
@@ -204,4 +214,50 @@ public class EntrustInfoServiceImpl extends BaseServiceImpl<EntrustInfoMapper, E
 		}
 		return R.success("操作成功");
 	}
+
+    @Override
+    public R annul(String id) {
+        if (ObjectUtil.isEmpty(SecureUtil.getUserId()) || SecureUtil.getUserId() == -1L) {
+            throw new ServiceException("未获取到当前用户信息");
+        }
+        String[] ids = id.split(",");
+        List<String>formDataIds=new ArrayList<>();
+        if(ids.length>0){
+            for (String i : ids) {
+                EntrustInfo entrustInfo = entrustInfoMapper.selectById(Long.parseLong(i));
+                if(entrustInfo.getStatus()!=2&&entrustInfo.getStatus()!=3){
+                    throw new ServiceException("该委托单不能废除"+entrustInfo.getEntrustNo());
+                }
+                entrustInfo.setEntrustEPdf(null);
+                entrustInfo.setStatus(1);
+                entrustInfoMapper.updateById(entrustInfo);
+            }
+            List<InformationQuery> queryList = this.informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getId, Arrays.asList(ids)));
+            if (queryList.size() == 0) {
+                //试验填报数据
+                queryList = new ArrayList<>(this.informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getWbsId, Arrays.asList(ids))));
+                //重新绑定trialSelfInspectionRecordId使用map
+                //试验记录 和 委托单 ids重新赋值映射为数据源ids
+                formDataIds = queryList.stream().map(InformationQuery::getId).map(String::valueOf).collect(Collectors.toList());
+            }
+            if(formDataIds.size()>0){
+                for (String formDataId : formDataIds) {
+                    String sql="Select * from u_task where form_data_id="+formDataId +" and status!=3 and is_deleted=0";
+                    Task task = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(Task.class));
+                    if(task!=null){
+                        String updateTaskParallel="update u_task_parallel set status=3 where process_instance_id='" + task.getProcessInstanceId() + "'";
+                        String updateTask="update u_task set status=3 where id="+task.getId()+" and status!=3 and is_deleted=0";
+                        String deleted="DELETE  u_task_batch WHERE JSON_EXTRACT(json_data,'$.taskId')="+task.getId();
+                        jdbcTemplate.update(updateTaskParallel);
+                        jdbcTemplate.update(updateTask);
+                        jdbcTemplate.execute(deleted);
+                    }
+                    String updateinformationQuery="update u_information_query set status=3,e_visa_pdf_url= null where id="+formDataId;
+                    jdbcTemplate.update(updateinformationQuery);
+                }
+            }
+
+        }
+        return R.success("操作成功");
+    }
 }

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

@@ -615,6 +615,20 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             taskBatch.setNickName(nickName);
             taskBatch.setCreateTime(new Date());
             taskList.add(taskBatch);
+            //设置委托单的状态
+            try {
+                String sql="SELECT uei.* FROM u_entrust_info uei JOIN u_trial_self_inspection_record utsr ON uei.id = utsr.entrust_id JOIN u_information_query uiq ON utsr.id = uiq.wbs_id WHERE uiq.id = "+taskApprovalVO.getFormDataId()+" and uiq.status !=3 and uiq.is_deleted=0";
+                List<EntrustInfo> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(EntrustInfo.class));
+                if(!query.isEmpty()){
+                    EntrustInfo entrustInfo = query.get(0);
+                    if(entrustInfo.getStatus()==3){
+                        String update="update u_entrust_info set status = 4 where id="+entrustInfo.getId();
+                        jdbcTemplate.execute(update);
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
         }
         this.taskBatchService.saveBatch(taskList);
     }

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

@@ -62,6 +62,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.SingleColumnRowMapper;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -282,7 +283,8 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             String sqlEntrust = "select entrust_id from u_trial_self_inspection_record where is_deleted = 0 and id = "+nodeId ;
             TrialSelfInspectionRecord record = jdbcTemplate.queryForObject(sqlEntrust, new BeanPropertyRowMapper<>(TrialSelfInspectionRecord.class));
             if(ObjectUtil.isNotEmpty(record) && ObjectUtil.isNotEmpty(record.getEntrustId()) && record.getEntrustId() != 0){
-                String sqlEntrustPdf = "select entrust_pdf from u_entrust_info where is_deleted = 0 and id = "+record.getEntrustId();
+                //优先查询带电签的,没有电签在查entrust_pdf
+                String sqlEntrustPdf = "SELECT COALESCE(entrust_e_pdf, entrust_pdf) AS pdf_url from u_entrust_info where is_deleted = 0 and id = "+record.getEntrustId();
                 try {
                     entrustPdfUrl = jdbcTemplate.queryForObject(sqlEntrustPdf, String.class);
                 } catch (DataAccessException e) {
@@ -1087,9 +1089,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             //------初始编号信息------
             this.initBuildNumber(dto);
         }
-        //------新增或编辑------
         this.saveOrUpdate(dto);
-
         if (ObjectUtil.isNotEmpty(dto.getId())) {
             //------获取最新试验记录------
             TrialSelfInspectionRecord obj = baseMapper.selectById(dto.getId());
@@ -1315,7 +1315,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
                 updateSql = getUpdateSql(dto, pdfURL, listPdf, snowId, "record_pdf_url", 2, "report_pdf_url");
             } else {
                 //一起保存的数据  只改变pdf_url
-                this.update(Wrappers.<TrialSelfInspectionRecord>lambdaUpdate().set(TrialSelfInspectionRecord::getPdfUrl, pdfURL).eq(TrialSelfInspectionRecord::getId, dto.getId()));
+                this.update(Wrappers.<TrialSelfInspectionRecord>lambdaUpdate().set(TrialSelfInspectionRecord::getPdfUrl, pdfURL).set(TrialSelfInspectionRecord::getTaskStatus,"未上报").eq(TrialSelfInspectionRecord::getId, dto.getId()));
             }
             if (ObjectUtil.isNotEmpty(updateSql)) {
                 jdbcTemplate.execute(updateSql);
@@ -1339,12 +1339,12 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             }
 
             BladeFile bladeFile = this.newIOSSClient.uploadFile(snowId + ".pdf", listPdf);
-            updateSql = "update u_trial_self_inspection_record set pdf_url = '" + bladeFile.getLink() + "',"+param2+ "= '"+ pdfURL + "' where id='" + dto.getId()+"'";
+            updateSql = "update u_trial_self_inspection_record set pdf_url = '" + bladeFile.getLink() + "',"+param2+ "= '"+ pdfURL + "' ,task_status='未上报' where id='" + dto.getId()+"'";
             //合并后更新queryInfo表的pdfurl
             String updateForQurtyInfo = "update u_information_query set pdf_url ='" + bladeFile.getLink() + "' where classify='" + dto.getType() + "' and  wbs_id='" + dto.getId() + "' and contract_id ='" + dto.getContractId() + "' ";
             jdbcTemplate.execute(updateForQurtyInfo);
         }else {
-            updateSql = "update u_trial_self_inspection_record set "+param2+" = '"+ pdfURL + "' where id='" + dto.getId()+"'";
+            updateSql = "update u_trial_self_inspection_record set "+param2+" = '"+ pdfURL + "' ,task_status='未上报' where id='" + dto.getId()+"'";
         }
         return updateSql;
     }

+ 2 - 1
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -1700,7 +1700,8 @@ public static Map<String,List<Long>> relatedPages(List<FormData> curFormDatas ,L
 
     public  static  String recovery(List<ElementData> dataList) {
         if (Func.isNotEmpty(dataList)) {
-            return dataList.stream().filter(e -> !e.isEmpty()).map(e -> e.stringValue() + "_^_" + e.getY() + "_" + e.getX()).collect(Collectors.joining("☆"));
+            String collect = dataList.stream().filter(e -> !e.isEmpty()).map(e -> e.stringValue() + "_^_" + e.getY() + "_" + e.getX()).collect(Collectors.joining("☆"));
+            return collect;
         }
         return "";
     }

+ 24 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java

@@ -34,6 +34,7 @@ import org.springblade.manager.service.IExcelTabService;
 import org.springblade.manager.service.IProjectInfoService;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.utils.FileUtils;
+import org.springblade.manager.vo.TrialSelfDataRecordVO1;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -102,12 +103,19 @@ public class ExcelTabClientImpl implements ExcelTabClient {
         try {
             if (isBatchSave == 0) {
                 //------单表PDF保存------
+                Integer type1 = Integer.parseInt(table.getString("type"));
                 TableInfo tableInfo = tableInfoList.stream().findAny().orElse(null);
                 if (tableInfo != null && tabIds.contains(tableInfo.getPkeyId())) {
                     String bussPDFTrial = excelTabService.getBussPDFTrial(Long.valueOf(tableInfo.getPkeyId()), contractId, id, 0, 0, dto);
                     if (StringUtils.isNotEmpty(bussPDFTrial)) {
-                        List<TrialSelfDataRecord> query = jdbcTemplate.query("select pdf_url from u_trial_self_data_record where record_id = " + id, new BeanPropertyRowMapper<>(TrialSelfDataRecord.class));
-                        List<String> pdfList = query.stream().map(TrialSelfDataRecord::getPdfUrl).collect(Collectors.toList());
+                        List<TrialSelfDataRecordVO1> query = jdbcTemplate.query("select t.pdf_url ,w.table_type from u_trial_self_data_record as t left join m_wbs_tree_private as w on t.tab_id=w.p_key_id where record_id = " + id+" ORDER BY w.table_type DESC, w.sort ASC", new BeanPropertyRowMapper<>(TrialSelfDataRecordVO1.class));
+                        List<String> pdfList = query.stream().map(TrialSelfDataRecordVO1::getPdfUrl).collect(Collectors.toList());
+                        List<String> pdfList1=new ArrayList<>();
+                        if(type1==1){
+                            pdfList1=query.stream().filter(f -> f.getTableType() == 9 || f.getTableType() == 1).map(TrialSelfDataRecordVO1::getPdfUrl).collect(Collectors.toList());
+                        }else {
+                            pdfList1=query.stream().filter(f -> f.getTableType() == 10 || f.getTableType() == 2).map(TrialSelfDataRecordVO1::getPdfUrl).collect(Collectors.toList());
+                        }
                         if (ObjectUtil.isNotEmpty(pdfList) && pdfList.size() > 0) {
                             String file_path = FileUtils.getSysLocalFileUrl();
                             String pdfPath = file_path + "/pdf//" + id + "_2.pdf";
@@ -124,7 +132,20 @@ public class ExcelTabClientImpl implements ExcelTabClient {
                                 } else {
                                     informationQueryClient.saveData(id.toString(), projectId, contractId, type.toString(), bladeFile.getLink(), (StringUtils.isNotEmpty(dto.getTrialProjectName()) ? dto.getTrialProjectName() : ""));
                                 }
-                                pdfUrl = bladeFile.getLink();
+                            }
+                        }
+
+                        if(ObjectUtil.isNotEmpty(pdfList1) && pdfList1.size() > 0){
+                            String file_path = FileUtils.getSysLocalFileUrl();
+                            String pdfPath = file_path + "/pdf//" + id + "_3.pdf";
+                            File tabPdf = ResourceUtil.getFile(pdfPath);
+                            if (tabPdf.exists()) {
+                                tabPdf.delete();
+                            }
+                            FileUtils.mergePdfPublicMethods(pdfList1, pdfPath);
+                            BladeFile bladeFile1 = newIOSSClient.uploadFile(id + "3.pdf", pdfPath);
+                            if(bladeFile1 != null){
+                                pdfUrl=bladeFile1.getLink();
                             }
                         }
                     }

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorInit.java

@@ -61,7 +61,7 @@ public class ExecutorInit extends FormulaExecutor {
         delay.add(addBaseInfo());
         /*计量期信息*/
         delay.add(addPeriodInfo());
-        MeterApproveOpinion approve=approveOpinionFc.apply(tec.getPeriodId());
+        MeterApproveOpinion approve= approveOpinionFc.apply(tec.getPeriodId());
         if(approve!=null) {
             tec.meterInfo.setApproveOpinion(approve);
             delay.add(approve);

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

@@ -1,13 +1,11 @@
 package org.springblade.manager.service;
 
-import org.springblade.manager.formula.impl.ExecutorMeter;
 import org.springblade.manager.vo.*;
 import org.springblade.meter.entity.ChangeTokenForm;
 import org.springblade.meter.entity.InterimPayCertificateItem;
 
 import java.util.List;
 import java.util.Map;
-import java.util.function.BiFunction;
 import java.util.function.Function;
 
 public interface IFormulaDao {

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

@@ -24,6 +24,7 @@ public interface IWbsParamService extends BaseService<WbsParam> {
      * @Author yangyj
      **/
     String createFileTitle(WbsTreeContract wbsTreeContract);
+
     String createFileTitle(Long pkeyId);
 
     /**

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

@@ -2822,7 +2822,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         if(ObjectUtil.isNotEmpty(jsonObject)){
             for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
                 if(entry.getKey().contains("key")){
-                    if(!reData.containsKey(entry.getKey())){
+                    if(!reData.containsKey(entry.getKey())||reData.get(entry.getKey())==null||reData.get(entry.getKey()).equals("")){
                         reData.put(entry.getKey(),entry.getValue());
                     }
                 }
@@ -2992,7 +2992,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 }
             }
         }
-
         // 移除Id 和 p_key_id
         reData.remove("id");
         reData.remove("p_key_id");
@@ -3002,6 +3001,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         reData.remove("projectId");
         list.add(reData);
 
+
         return list;
     }
 

+ 3 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaDaoImpl.java

@@ -127,8 +127,9 @@ public class FormulaDaoImpl implements IFormulaDao {
 
     @Override
     public Function<Long, List<Material>> getMaterialFormFc() {
-        return contractId->{
-            String sql="select a.certificate,a.material_arrive_number,a.contract_material_name  formMaterialName,b.material_name materialName,b.unit,a.price,b.price price_base,a.meter_amount meterAmount,meter_money sum,a.material_source source,material_conform  materialConform,a.storage_place storagePlace,a.storage_status storageStatus,a.storage_conform storageConform,a.remark,c.sort,c.id period_id from s_material_meter_form a left join s_contract_material b on a.contract_material_id = b.id join s_meter_period c  on a.meter_period_id=c.id where a.contract_id="+contractId+"  and a.is_deleted=0 ";
+        //and a.contract_id="+contractId+"
+        return periodId ->{
+            String sql="select a.certificate,a.material_arrive_number,a.contract_material_name  formMaterialName,b.material_name materialName,b.unit,a.price,b.price price_base,a.meter_amount meterAmount,meter_money sum,a.material_source source,material_conform  materialConform,a.storage_place storagePlace,a.storage_status storageStatus,a.storage_conform storageConform,a.remark,c.sort,c.id period_id from s_material_meter_form a left join s_contract_material b on a.contract_material_id = b.id join s_meter_period c  on a.meter_period_id=c.id where a.meter_period_id="+periodId+" and a.is_deleted=0 ";
             return  getEntityList(sql,Material.class);
         };
     }

+ 5 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -105,7 +105,7 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
 
     public WbsTreePrivate wtpId(Long pkeyId){
         WbsTreeContract wtc = this.treeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,pkeyId));
-        int loop=0;
+        /*int loop=0;
         while (wtc.getOldId()!=null&&loop<10){
             loop++;
             WbsTreeContract tmp = this.treeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getId,wtc.getOldId()).eq(WbsTreeContract::getProjectId,wtc.getProjectId()).last(" limit 1 "));
@@ -118,8 +118,10 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
             }else{
                 wtc=tmp;
             }
-        }
-        return this.wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId,wtc.getId()).eq(WbsTreePrivate::getProjectId,wtc.getProjectId()).last(" limit 1 "));
+        }*/
+        return this.wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId,wtc.getIsTypePrivatePid()));
+
+      //  return this.wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId,wtc.getId()).eq(WbsTreePrivate::getProjectId,wtc.getProjectId()).last(" limit 1 "));
     }
 
     @Override

+ 91 - 22
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -1040,7 +1040,7 @@ public class TaskController extends BladeController {
         int current = dto.getCurrent();
         int size = dto.getSize();
         List<Object> params = new ArrayList<>();
-        StringBuilder sqlString = new StringBuilder("SELECT * FROM u_task WHERE 1=1 AND is_deleted = 0 AND approval_type = 5"); //approval_type = 5 计量任务
+        StringBuilder sqlString = new StringBuilder("SELECT * FROM u_task WHERE 1=1 AND is_deleted = 0 AND approval_type in (5,6,7) "); //approval_type = 5 计量任务
 
         ContractInfo contractInfo = jdbcTemplate.queryForObject("select contract_type from m_contract_info where id = " + dto.getContractId(), new BeanPropertyRowMapper<>(ContractInfo.class));
         if (contractInfo != null && Arrays.asList(1, 4).contains(contractInfo.getContractType())) {
@@ -1064,7 +1064,7 @@ public class TaskController extends BladeController {
             params.add(dto.getTypeValue());
         }
         if (ObjectUtil.isNotEmpty(dto.getStatusValue())) {
-            if(dto.getStatusValue() .equals(4) ){//可审批----先查询出所有待审批的 然后根据条件进行过滤出任务已经到当前登陆人的任务为可审批
+            if(dto.getStatusValue() .equals(4) ){//----先查询出所有待审批的 然后根据条件进行过滤出任务已经到当前登陆人的任务为可审批
                 sqlString.append(" AND status = 1");
             }else {
                 sqlString.append(" AND status = ?");
@@ -2682,7 +2682,7 @@ public class TaskController extends BladeController {
 
             //单独保存意见单
             if (task.getMeterTaskType() != null && Arrays.asList(1, 2, 3).contains(task.getMeterTaskType())) {
-                this.saveOpinion(dto);
+                this.saveOpinion(dto,taskParallels.size());
             }
 
             //如果要生成审计意见单
@@ -2778,7 +2778,7 @@ public class TaskController extends BladeController {
             //
             if (reportId != null && StringUtils.isNotEmpty(reportId) && (task.getMeterTaskType() == 3 || task.getMeterTaskType() == 1 || task.getMeterTaskType() == 2)) {
                 // taskType 10 代表任务查看pdf
-                meterPdfInfo(reportId + "", task.getMeterTaskType() - 1, taskType);
+                meterPdfInfo22(reportId + "", task.getMeterTaskType() - 1, taskType);
             }
 
             taskMeterPdfInfo2(task.getId(),reportId,task.getMeterTaskType() - 1, taskType);
@@ -2866,13 +2866,17 @@ public class TaskController extends BladeController {
     }
 
 
-    private void saveOpinion(TaskApproveDTO dto) {
+    private void saveOpinion(TaskApproveDTO dto,int xcount) {
         MeterApproveOpinion opinion = dto.getMeterApproveOpinion();
         //获取最新的意见单
         MeterApproveOpinion oldOpinion = opinionMapper.selectById(opinion.getId());
-        if (opinion != null) {
+        if (opinion != null) { //董事长意见
             if (StringUtils.isBlank(opinion.getChiefExecutive())) {
-                opinion.setChiefExecutive(null);
+                if(xcount<=1){
+                    opinion.setChiefExecutive("同意");
+                }else{
+                    opinion.setChiefExecutive(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2888,7 +2892,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getContractDept())) {
-                opinion.setContractDept(null);
+                if(xcount<=1){ //合同部意见
+                    opinion.setContractDept("拟同意");
+                }else{
+                    opinion.setContractDept(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2904,7 +2912,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getProjectBuild())) {
-                opinion.setProjectBuild(null);
+                if(xcount<=1){ //工程建设意见
+                    opinion.setProjectBuild("拟同意");
+                }else{
+                    opinion.setProjectBuild(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2920,7 +2932,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getGeneralManager())) {
-                opinion.setGeneralManager(null);
+                if(xcount<=1){ //总经理意见
+                    opinion.setGeneralManager("拟同意");
+                }else{
+                    opinion.setGeneralManager(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2936,7 +2952,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getChiefSupervisor())) {
-                opinion.setChiefSupervisor(null);
+                if(xcount<=1){//总监理工程师意见
+                    opinion.setChiefSupervisor("拟同意");
+                }else{
+                    opinion.setChiefSupervisor(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2952,7 +2972,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getSafetyManager())) {
-                opinion.setSafetyManager(null);
+                if(xcount<=1){//安全管理部意见
+                    opinion.setSafetyManager("拟同意");
+                }else{
+                    opinion.setSafetyManager(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2968,7 +2992,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getContractDeptLeader())) {
-                opinion.setContractDeptLeader(null);
+                if(xcount<=1){ //合同部主管意见
+                    opinion.setContractDeptLeader("拟同意");
+                }else{
+                    opinion.setContractDeptLeader(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2984,7 +3012,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getProjectBuildLeader())) {
-                opinion.setProjectBuildLeader(null);
+                if(xcount<=1){//项目施工部主管意见
+                    opinion.setProjectBuildLeader("拟同意");
+                }else{
+                    opinion.setProjectBuildLeader(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3000,7 +3032,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getSafetyManagerLeader())) {
-                opinion.setSafetyManagerLeader(null);
+                if(xcount<=1){ //安全管理部主管意见
+                    opinion.setSafetyManagerLeader("拟同意");
+                }else{
+                    opinion.setSafetyManagerLeader(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3016,7 +3052,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getSupervisorAudit())) {
-                opinion.setSupervisorAudit(null);
+                if(xcount<=1){ //监理工程师意见
+                    opinion.setSupervisorAudit("拟同意");
+                }else{
+                    opinion.setSupervisorAudit(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3032,7 +3072,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getMeterEngineer())) {
-                opinion.setMeterEngineer(null);
+                if(xcount<=1){//计量工程师意见
+                    opinion.setMeterEngineer("拟同意");
+                }else{
+                    opinion.setMeterEngineer(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3048,7 +3092,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getProjectManager())) {
-                opinion.setProjectManager(null);
+                if(xcount<=1){ //项目经理意见
+                    opinion.setProjectManager("拟同意");
+                }else{
+                    opinion.setProjectManager(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3064,7 +3112,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getContractSupervisorEngineer())) {
-                opinion.setContractSupervisorEngineer(null);
+                if(xcount<=1){//合同监理工程师意见
+                    opinion.setContractSupervisorEngineer("拟同意");
+                }else{
+                    opinion.setContractSupervisorEngineer(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3080,7 +3132,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getOwnerDelegate())) {
-                opinion.setOwnerDelegate(null);
+                if(xcount<=1){ //业主代表意见
+                    opinion.setOwnerDelegate("拟同意");
+                }else{
+                    opinion.setOwnerDelegate(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3778,6 +3834,7 @@ public class TaskController extends BladeController {
     //
 
 
+    @Async
     public void taskMeterPdfInfo2(@RequestParam Long taskId, @RequestParam String reportId, @RequestParam Integer type, @RequestParam Integer taskType) {
         try {
             Task task = jdbcTemplate.query("SELECT * FROM u_task WHERE id = ?", new Object[]{taskId}, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
@@ -3797,7 +3854,7 @@ public class TaskController extends BladeController {
                 }
             } else {
                 if(Func.isEmpty(reportId) || reportId==null){
-                    sql = "select * from s_material_start_statement where is_deleted=0 and contract_period_id = "+task.getFormDataId()+"";
+                    sql = "select * from s_material_start_statement where is_deleted=0 and meter_period_id = "+task.getFormDataId()+"";
                 }else{
                     sql = "select * from s_material_start_statement where is_deleted=0 and id = "+reportId+"";
                 }
@@ -3888,6 +3945,18 @@ public class TaskController extends BladeController {
         return calculate(reportId, type, taskType);
     }
 
+    @Async
+    public R meterPdfInfo22(@RequestParam String reportId, @RequestParam Integer type, @RequestParam Integer taskType) {
+        /*加锁*/
+        String redisValue = bladeRedis.get("blade:meter::meterPdfInfo:reportId-" + reportId);
+        if (StringUtils.isNotBlank(redisValue) && redisValue.equals("1")) {
+            throw new ServiceException("重新计算中,请等待");
+        }
+        bladeRedis.set("blade:meter::meterPdfInfo:reportId-" + reportId, "1");
+        bladeRedis.expire("blade:meter::meterPdfInfo:reportId-" + reportId, 5);
+        return calculate(reportId, type, taskType);
+    }
+
     public R<String> calculate(String reportId, Integer type, Integer taskType) {
         try {
             if (BaseUtils.isNumber(reportId) && BaseUtils.isNumber(type)) {
@@ -4413,7 +4482,7 @@ public class TaskController extends BladeController {
             if(Func.isEmpty(mapList) || mapList.size()==0) {
                 // 修改个人电签状态
                 String UPSql = "update u_task_parallel a set a.e_visa_status=null,e_visa_content=null where a.process_instance_id = (select b.process_instance_id from u_task b where  b.`status` in(1,2) and b.form_data_id=" + report.getPeriodId() + ") ";
-                String UPSqlJL = " update u_task_parallel a set a.e_visa_status=1,e_visa_content='电签成功' where sort in( SELECT a.fixed_flow_branch_sort from u_task b,u_fixed_flow_link a where b.`status` in(1,2) and b.form_data_id='" + report.getPeriodId() + "' and a.fixed_flow_id=b.fixed_flow_id and a.flow_task_type=2 ) and a.process_instance_id in(SELECT process_instance_id from u_task b where b.`status` in(1,2) and b.form_data_id='" + report.getPeriodId() + "')";
+                String UPSqlJL = " update u_task_parallel a set a.e_visa_status=1,e_visa_content='电签成功',initiative=2 where sort in( SELECT a.fixed_flow_branch_sort from u_task b,u_fixed_flow_link a where b.`status` in(1,2) and b.form_data_id='" + report.getPeriodId() + "' and a.fixed_flow_id=b.fixed_flow_id and a.flow_task_type=2 ) and a.process_instance_id in(SELECT process_instance_id from u_task b where b.`status` in(1,2) and b.form_data_id='" + report.getPeriodId() + "')";
                 String DeSql = "delete from u_task_batch where task_parallel_id in(select b.process_instance_id from u_task b where b.`status` in(1,2) and b.form_data_id=" + report.getPeriodId() + ")";
                 //删除以前存在的电签
                 String sql = " insert INTO u_task_batch(id,task_parallel_id,json_data,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,nick_name,sign_format,sign_type) " + " SELECT a.id,a.process_instance_id,json_object('approvalFileList',json_array(),'approvalType',b.approval_type,'comment','','flag','OK','formDataId',b.form_data_id,'parallelProcessInstanceId',a.parallel_process_instance_id,'pass',true,'taskId',b.id) as  json_data,a.task_user,a.create_dept,a.create_time,a.update_user,a.update_time,1 as status,0 as is_deleted,a.task_user_name as nick_name ,1 as sign_format,1 as sign_type from u_task_parallel a,u_task b,u_fixed_flow_link c where b.`status` in(1,2) and  a.process_instance_id=b.process_instance_id and c.flow_task_type!=2 and a.sort = c.fixed_flow_branch_sort and c.fixed_flow_id=b.fixed_flow_id and b.form_data_id= '" + report.getPeriodId() + "'";

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialMeterFormMapper.xml

@@ -52,7 +52,7 @@
         ))
         when approve_status = 2 then '已审批'
         else '已废除' end as approveStatusName,
-        ( SELECT id FROM u_task c WHERE a.meter_period_id = c.form_data_id ) AS taskId
+        ( SELECT id FROM u_task c WHERE a.meter_period_id = c.form_data_id and c.`status` in(1,2) ) AS taskId
         from s_material_meter_form a
         where contract_id = #{contractId} and is_deleted = 0
         <if test="meterPeriodId!=null and meterPeriodId!=''">

+ 2 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.xml

@@ -22,10 +22,10 @@
         <result column="repayment_cause" property="repaymentCause"/>
         <result column="calculate_date" property="calculateDate"/>
         <result column="sort" property="sort"/>
-        <result column="raw_url" property="rawUrl"/>
+        <result column="pre_pdf_url" property="prePdfUrl"/>
     </resultMap>
     <select id="page2" resultType="org.springblade.meter.vo.MaterialStartStatementVO">
-        select *,
+        select IFNULL(pre_pdf_url,raw_url) as pre_pdf_url,mss.*,
                (select id from u_task where form_data_id = mss.meter_period_id and is_deleted = 0 and status in (1,2)) as taskId
         from s_material_start_statement mss
         where contract_id = #{statement.contractId} and type = #{statement.type} and is_deleted = 0