Selaa lähdekoodia

Merge branch 'dev' of http://219.151.181.73:3000/zhuwei/bladex into dev

LHB 3 kuukautta sitten
vanhempi
commit
2e89c50ac0
19 muutettua tiedostoa jossa 111 lisäystä ja 37 poistoa
  1. 3 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/TaskParallel.java
  2. 6 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/BusinessTaskFailedPageVO.java
  3. 2 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/feign/CertificateItemClient.java
  4. 1 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java
  5. 2 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java
  6. 31 10
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  7. 1 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  8. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  9. 4 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  10. 7 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  11. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaDaoImpl.java
  12. 16 6
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  13. 0 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/NodeBaseInfoServiceImpl.java
  14. 6 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java
  15. 2 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/feign/CertificateItemClientImpl.java
  16. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInterimPayCertificateItemService.java
  17. 12 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateItemServiceImpl.java
  18. 13 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java
  19. 1 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/TaskParallel.java

@@ -86,6 +86,9 @@ public class TaskParallel extends BaseEntity {
         this.setIsDeleted(0);
         this.setCreateUser(AuthUtil.getUserId());
         this.setCreateTime(new Date());
+        this.initiative = 1;
+        this.exeCount = 0;
+        this.setStatus(1);
     }
 
     public TaskParallel() {

+ 6 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/BusinessTaskFailedPageVO.java

@@ -46,4 +46,10 @@ public class BusinessTaskFailedPageVO implements Serializable {
     @ApiModelProperty(value = "电签PDF路径")
     private String sigPdf;
 
+    @ApiModelProperty(value = "审批类型")
+    // 1=填报数据(质量填报,试验上报) 2=工程文件(档案) 3=日志资料  4=档案数据   5=计量支付证书  6=计量 材料预付款  7= 计量 中间支付  8委托单
+    private Integer approvalType;
+
+
+
 }

+ 2 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/feign/CertificateItemClient.java

@@ -5,6 +5,7 @@ import org.springblade.meter.entity.InterimPayCertificateItem;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -19,5 +20,5 @@ public interface CertificateItemClient {
      * 保存中期证书项目详情
      */
     @PostMapping(API_PREFIX + "/saveOrUpdate")
-    void saveOrUpdate(@RequestBody List<InterimPayCertificateItem> items);
+    void saveOrUpdate(@RequestBody List<InterimPayCertificateItem> items,@RequestParam Long reportId);
 }

+ 1 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java

@@ -552,6 +552,7 @@ public class ContractLogController extends BladeController {
                     //生成任务实体
                     TaskVO taskVO = new TaskVO();
                     BeanUtils.copyProperties(startTaskVO, taskVO);
+                    taskVO.setApprovalType(3);
                     if (taskVO.getUserTasks() != null && taskVO.getUserTasks().size() > 0) {
                         //标记为自定义流程
                         taskVO.setFixedFlowId(Long.parseLong("0"));

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

@@ -97,7 +97,7 @@ public class EVisaTaskCheckController {
             InformationQuery node = informationQueryService.getOne(new LambdaQueryWrapper<InformationQuery>()
                     .eq(InformationQuery::getWbsId, json.getString("nodeId"))
                     .eq(InformationQuery::getContractId, json.getString("contractId"))
-                    .eq(InformationQuery::getClassify, tableOwner));
+                    .eq(InformationQuery::getClassify, tableOwner).last("order by id desc limit 1"));
 
             if (node == null || StringUtils.isBlank(node.getPdfUrl())) {
                 return R.fail(300, "当前节点还未生成PDF,不能上报");
@@ -365,7 +365,7 @@ public class EVisaTaskCheckController {
         InformationQuery node = informationQueryService.getOne(new LambdaQueryWrapper<InformationQuery>()
                 .eq(InformationQuery::getWbsId, json.getString("nodeId"))
                 .eq(InformationQuery::getContractId, contractId)
-                .eq(InformationQuery::getClassify, tableOwner));
+                .eq(InformationQuery::getClassify, tableOwner).last("ORDER BY id DESC limit 1"));
 
         if (node == null || StringUtils.isBlank(node.getPdfUrl())) {
             return R.fail(300, "当前节点还未生成PDF,不能上报");

+ 31 - 10
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -611,14 +611,16 @@ public class InformationWriteQueryController extends BladeController {
 //    @PushMessage(clientId = ClientIdConstant.BUSINESS_CLIENT_ID)
     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));
+        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getContractId, contractId)
+                .eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 1).ne(InformationQuery::getStatus, 3));
         primaryKeyId = primaryKeyId + "*";
         if (businessData != null) {
             //使用批量废除接口
             return this.batchAbolish(businessData.getId().toString(), primaryKeyId, projectId, contractId, "撤回成功");
         } else {
             //试验
-            InformationQuery businessDataTrial = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 2));
+            InformationQuery businessDataTrial = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getContractId, contractId)
+                    .eq(InformationQuery::getType, 2).ne(InformationQuery::getStatus, 3));
             if (businessDataTrial != null) {
                 //使用批量废除接口
                 return this.batchAbolish(businessDataTrial.getId().toString(), primaryKeyId, projectId, contractId, "撤回成功");
@@ -655,7 +657,7 @@ public class InformationWriteQueryController extends BladeController {
         //记录状态
         String status = "1";
         //查询填报状态,type=1资料填报
-        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 1).last("limit 1"));
+        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 1).last("order by id desc limit 1"));
         if (businessData != null) {
             switch (businessData.getStatus()) {
                 case 0:
@@ -717,7 +719,7 @@ public class InformationWriteQueryController extends BladeController {
         //记录状态
         String status = "1";
         //查询填报状态,type=1资料填报
-        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 1));
+        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, primaryKeyId).eq(InformationQuery::getClassify, classify).eq(InformationQuery::getType, 1).last("order by id desc limit 1"));
         if (businessData != null) {
             switch (businessData.getStatus()) {
                 case 0:
@@ -782,7 +784,7 @@ public class InformationWriteQueryController extends BladeController {
         //查询填报状态,type=3首件
         InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery()
                 .eq(InformationQuery::getId, id)
-                .eq(InformationQuery::getType, 3)
+                .eq(InformationQuery::getType, 3).last("order by id desc limit 1")
         );
         if (businessData != null) {
             switch (businessData.getStatus()) {
@@ -908,7 +910,7 @@ public class InformationWriteQueryController extends BladeController {
         //此时的ids是当前节点的primaryKeyId但并不是业务数据ID,需要根据ids和classify去查询具体的业务ID
         if (ObjectUtil.isNotEmpty(startTaskVO.getTrialSelfInspectionRecordId())) {
             //试验
-            businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, startTaskVO.getIds().replaceAll(",", "")).eq(InformationQuery::getClassify, startTaskVO.getClassify().toString()).eq(InformationQuery::getType, 2).eq(InformationQuery::getContractId,startTaskVO.getContractId()));
+            businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, startTaskVO.getIds().replaceAll(",", "")).eq(InformationQuery::getClassify, startTaskVO.getClassify().toString()).eq(InformationQuery::getType, 2).eq(InformationQuery::getContractId,startTaskVO.getContractId()).last("order by id desc limit 1"));
             if (businessData != null) {
                 //设置业务数据ID
                 startTaskVO.setIds(businessData.getWbsId().toString());
@@ -918,7 +920,7 @@ public class InformationWriteQueryController extends BladeController {
                 return R.data(300, false, "未查询到填报信息,上报失败");
             }
         } else { //质检
-            businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, startTaskVO.getIds().replaceAll(",", "")).eq(InformationQuery::getClassify, startTaskVO.getClassify().toString()).eq(InformationQuery::getType, 1));
+            businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getWbsId, startTaskVO.getIds().replaceAll(",", "")).eq(InformationQuery::getClassify, startTaskVO.getClassify().toString()).eq(InformationQuery::getType, 1).last("order by id desc limit 1"));
             if (businessData != null) {
                 //设置业务数据ID
                 startTaskVO.setIds(businessData.getId().toString());
@@ -1172,7 +1174,7 @@ public R<String> batchDownloadFileToZip(String ids, HttpServletResponse response
                         //已审批、已撤销的任务,修改业务数据的审批状态为未上报并撤签即可
                         LambdaUpdateWrapper<InformationQuery> wrapper = Wrappers.lambdaUpdate();
                         //更改状态为未上报
-                        wrapper.set(InformationQuery::getStatus, 0);
+                        wrapper.set(InformationQuery::getStatus, 3);
                         //将电签的pdf路径置空
                         wrapper.set(InformationQuery::getEVisaPdfUrl, null);
                         //将上报批次置空
@@ -1210,6 +1212,9 @@ public R<String> batchDownloadFileToZip(String ids, HttpServletResponse response
                         }
 
                         for (InformationQuery query : queries) {
+                            if (query.getStatus() != null && query.getStatus() != 3) {
+                                this.informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate().eq(InformationQuery::getId, query.getId()).set(InformationQuery::getStatus, 3));
+                            }
                             if (StringUtils.isNotEmpty(query.getFileUserIdAndName())) {
                                 String[] userArray = query.getFileUserIdAndName().split(",");
                                 for (String str : userArray) {
@@ -1355,7 +1360,7 @@ public R<String> batchDownloadFileToZip(String ids, HttpServletResponse response
 @ApiOperation(value = "批量上报")
 //    @PushMessage(clientId = ClientIdConstant.BUSINESS_CLIENT_ID)
 public R<Object> batchTask(@RequestBody StartTaskVO startTaskVO) {
-    // 1= 代表 试验 流程上报  2=试验 - 委托单上报   其他=质检或别的项目上报
+    // 1= 代表 试验 流程上报  2=试验 - 委托单上报 3=首件上报  其他=质检或别的项目上报
     Long appType = startTaskVO.getTrialSelfInspectionRecordId();
     if (ObjectUtil.isEmpty(SecureUtil.getUserId()) || SecureUtil.getUserId() == -1L) {
         throw new ServiceException("未获取到当前用户信息");
@@ -1383,7 +1388,19 @@ public R<Object> batchTask(@RequestBody StartTaskVO startTaskVO) {
             }
 
             Map<String, InformationQuery> queryMap = new HashMap<>();
-            queryList.forEach(query -> queryMap.put(query.getId().toString(), query));
+            List<InformationQuery> saveQueryList = new ArrayList<>();
+            queryList.forEach(query -> {
+                if (query.getStatus() != null && query.getStatus() == 3) {
+                    query.setId(SnowFlakeUtil.getId());
+                    query.setStatus(0);
+                    saveQueryList.add(query);
+                }
+                queryMap.put(query.getId().toString(), query);
+            });
+            if (!saveQueryList.isEmpty()) {
+                this.informationQueryService.saveBatch(saveQueryList);
+                ids = queryList.stream().map(InformationQuery::getId).map(String::valueOf).toArray(String[]::new);
+            }
             boolean var = false;
 
             try {
@@ -1415,6 +1432,10 @@ public R<Object> batchTask(@RequestBody StartTaskVO startTaskVO) {
                     //设置上报类型
                     if (appType != null && appType == 2L) {
                         taskVO.setApprovalType(8);
+                    } else if (appType != null && appType == 1L) {
+                        taskVO.setApprovalType(9);
+                    } else if (appType != null && appType == 3L) {
+                        taskVO.setApprovalType(10);
                     } else {
                         taskVO.setApprovalType(1);
                     }

+ 1 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -1954,6 +1954,7 @@ public class TaskController extends BladeController {
                     vo.setEVisaStatusName(eVisaStatus == 1 ? "电签失败" : "电签成功");
                     vo.setTaskReportUserName(nameMap.get(Long.parseLong(task.getReportUser())));
                     vo.setSigPdf(query.get(Long.parseLong(task.getFormDataId())));
+                    vo.setApprovalType(task.getApprovalType());
                     List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
                     if (taskParallelList != null && taskParallelList.size() > 0) {
                         //判断签字人的验证 2=绿色 3=黄色 999=红色 其他代表=灰色

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

@@ -1202,7 +1202,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                                 approvalVO.setTaskId(task.getId().toString());
                                 approvalVO.setFlag("OK");
                                 approvalVO.setComment("重新发起电签");
-                                approvalVO.setApprovalType(1);
+                                approvalVO.setApprovalType(9);
                                 approvalVO.setFormDataId(task.getFormDataId());
                                 approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
                                 approvalVO.setYsNickName(taskParallel.getTaskUserName());

+ 4 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -69,6 +69,7 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -4415,9 +4416,10 @@ public class ExcelTabController extends BladeController {
         }
     }
 
-    //@Scheduled(fixedDelay = 1000*60*60*24)
+    @Scheduled(cron = "0 01 15 * * ?")
     //检查excel路径有错的
     public void cheackExcel() throws IOException {
+        StringBuilder result=new StringBuilder("");
         String sql = "Select * from m_excel_tab where parent_id=0 and is_deleted=0";
         List<ExcelTab> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ExcelTab.class));
         for (ExcelTab excelTab : query) {
@@ -4433,14 +4435,13 @@ public class ExcelTabController extends BladeController {
                             long resourceLength = CommonUtil.getResourceLength(excelTab1.getFileUrl());
                             if (resourceLength <= 500) {
                                 names.add(excelTab1.getName());
-                                System.out.println(excelTab.getName() + "--" + tab.getName() + "--" + excelTab1.getName());
+                                result.append(excelTab.getName() + "--" + tab.getName() + "--" + excelTab1.getName()+"\n");
                             }
                         }
                     }
                 }
             }
         }
-        System.out.println("检查完毕");
     }
     @GetMapping("/checkParamElement")
     @ApiOperationSupport(order = 30)

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

@@ -1439,7 +1439,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
             Elements jltitle = doc.select("el-input[placeholder~=监理单位.*]");
 
-            //编号为父节点划分编号 “编号:”、“工程编号:”、“编号”、“分项工程编号”、“分部分项编号”
+            //编号为父节点划分编号 “编号:”、“工程编号:”、“编号”、“分项工程编号”、“分部分项编号”、“分项工程编号:”、“编 号”
             Elements bhtitle = doc.select("el-input[placeholder~=^编号]");
             if(Func.isNotEmpty(wbsTreeContract.getWbsType()) && wbsTreeContract.getWbsType()==1){
                 Elements bhtitle2 = doc.select("el-input[placeholder~=^工程编号]");
@@ -1447,7 +1447,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 Elements bhtitle4 = doc.select("el-input[placeholder~=^分部分项编号]");
                 Elements bhtitle5 = doc.select("el-input[placeholder~=^单元工程编码]");
                 Elements bhtitle6 = doc.select("el-input[placeholder~=^编 号]");
-                Elements bhtitle7 = doc.select("el-input[placeholder~=^分项工程编号]");
+                Elements bhtitle7 = doc.select("el-input[placeholder~=^分项工程编号:]");
                 bhtitle.addAll(bhtitle2);
                 bhtitle.addAll(bhtitle3);
                 bhtitle.addAll(bhtitle4);
@@ -2175,10 +2175,12 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                                 Object obj = DataInfo.get(val);
                                 if (obj instanceof String[]) {
                                     String[] dataDate = (String[]) obj;
+
                                     String HtmlEle = data.toString();
-                                    if (HtmlEle.indexOf("el-date-picker") >= 0) {//时间时间段处理格式
-                                        if ((dataDate[0].trim()).equals((dataDate[1].trim()))) {
-                                            myData = dataDate[0];
+                                    if (HtmlEle.indexOf("el-date-picker") >= 0) {
+                                        //时间时间段处理格式
+                                        if ((dataDate[0].replaceAll("\"", "").trim()).equals((dataDate[1].replaceAll("\"", "").trim()))) {
+                                            myData = dataDate[0].replaceAll("\"","");
                                         } else {
                                             myData = dataDate[0].replace("\"", "") + "-" + dataDate[1].trim().replace("\"", "");
                                         }

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

@@ -238,7 +238,7 @@ public class FormulaDaoImpl implements IFormulaDao {
     @Override
     public Function<String, List<InterimPayCertificateItem>> getInterimPayCertificateItemFc() {
         return  certificateIds->{
-            String sql="select * from s_interim_pay_certificate_item where certificate_id in ("+certificateIds+") order by sort";
+            String sql="select * from s_interim_pay_certificate_item where certificate_id in ("+certificateIds+") and is_deleted=0 order by sort";
             return getEntityList(sql,InterimPayCertificateItem.class);
         };
     }

+ 16 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -1182,7 +1182,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         }
         for (FormData fd : tec.formDataList) {
             if (fd.verify()) {
-                if(fd.getCode().equals("m_20240313110033_1767747549965320192:key_34")){
+                if(fd.getCode().equals("m_20220928143955_1575012411126054912:key_2")){
                     System.out.println("111");
                 }
                 Formula formula = fd.getFormula();
@@ -1242,9 +1242,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                 } catch (Exception ee) {
                                     ee.printStackTrace();
                                 }
-
-                                //临时处理这个公式,多出来的空数据会导致多出一张表格出来,所以当依赖元素超过表格的size,并且后面数据全为空,就截取掉后面的值
                                 if(ele.size()>0&&!ele.get(0).getCode().isEmpty()){
+                                    //临时处理这个公式,多出来的空数据会导致多出一张表格出来,所以当依赖元素超过表格的size,并且后面数据全为空,就截取掉后面的值
                                     //依赖的  C8.144钻(挖)孔灌注桩、地下连续墙钢筋安装检验记录表的设计和实测
                                     if(ele.get(0).getCode().equals("m_20230308150036_1633362063201927168:key_28")||ele.get(0).getCode().equals("m_20230308150036_1633362063201927168:key_24")){
                                         if(data!=null){
@@ -1260,6 +1259,17 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                             }
                                         }
                                     }
+                                    //ZJ401平整度,空值也会被拿到,导致多表,依赖的JL709路基平整度检验表
+                                    if(ele.get(0).getCode().equals("m_20220928101924_1574946848735494144:key_4")){
+                                        if(data!=null){
+                                            List<Object> list = (List<Object>)data;
+                                            //过滤掉空值或空字符串
+                                            data = list.stream()
+                                                .filter(obj -> obj != null && !"".equals(obj))
+                                                .collect(Collectors.toList());
+                                        }
+
+                                    }
                                 }
                                 //专门用来做试验的处理 水泥报告单的检测依据
                                 if(fd.getCode().equals("m_20240313110817_1767749493136031744:key_32")||fd.getCode().equals("m_20240313110033_1767747549965320192:key_34")){
@@ -5646,14 +5656,14 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         executionTime.info("公式计算");
         CompletableFuture.runAsync(() -> {
             /*支付项*/
-            saveInterimPayCertificateItems(tec.meterInfo.getInterimPayCertificateItems());
+            saveInterimPayCertificateItems(tec.meterInfo.getInterimPayCertificateItems(),tec.getReportId());
         });
         return tec.getReportResults();
     }
 
-    public void saveInterimPayCertificateItems(List<InterimPayCertificateItem> items) {
+    public void saveInterimPayCertificateItems(List<InterimPayCertificateItem> items,Long reportId) {
         if (items != null && items.size() > 0) {
-            this.certificateItemClient.saveOrUpdate(items);
+            this.certificateItemClient.saveOrUpdate(items,reportId);
         }
     }
 

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

@@ -235,7 +235,6 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
             try {
                 nodeBaseInfo = jdbcTemplate.queryForObject(nodeSql, new BeanPropertyRowMapper<>(NodeBaseInfo.class));
             }catch (Exception e){
-                e.printStackTrace();
                 return null;
             }
             List<WbsTreeContract> ancestorsNodes = iWbsTreeContractService.getBaseMapper().selectList(new QueryWrapper<WbsTreeContract>().in("p_key_id", Arrays.stream(wbsTreeContractNode.getAncestors().split(",")).toArray()).eq("contract_id", wbsTreeContractNode.getContractId()));

+ 6 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -672,7 +672,11 @@ public class TaskController extends BladeController {
 
             task.setType(1);
 
-            task.setApprovalType(meterTaskType+4); //计量
+            if (meterTaskType == 4) {
+                task.setApprovalType(11); //计量
+            } else {
+                task.setApprovalType(meterTaskType+4); //计量
+            }
             task.setFixedFlowId(ObjectUtil.isNotEmpty(approvalDTO.getFixedFlowId()) ? Long.parseLong(approvalDTO.getFixedFlowId()) : 0L);
             task.setStatus(1); //待审批
             task.setIsDeleted(0);
@@ -3960,7 +3964,7 @@ public class TaskController extends BladeController {
                 jdbcTemplate.execute(uptPeriod);
                 jdbcTemplate.execute(updta);
                 jdbcTemplate.execute(upData);
-                jdbcTemplate.execute("update s_contract_material_adjust set `status` = 0 where (contract_period_id = "+ periodId +"or meter_period_id = "+ periodId +") and is_deleted = 0;");
+                jdbcTemplate.execute("update s_contract_material_adjust set `status` = 0 where (contract_period_id = "+ periodId +" or meter_period_id = "+ periodId +") and is_deleted = 0;");
 
                 //同时删除映射task表数据
                 deleteMapTask1 = "DELETE from s_middle_meter_apply_task where task_id = "+task.getId();

+ 2 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/feign/CertificateItemClientImpl.java

@@ -18,7 +18,7 @@ public class CertificateItemClientImpl implements CertificateItemClient{
     private final IInterimPayCertificateItemService iInterimPayCertificateItemService;
 
     @Override
-    public void saveOrUpdate(List<InterimPayCertificateItem> items) {
-              this.iInterimPayCertificateItemService.saveOrUpdateBatch(items);
+    public void saveOrUpdate(List<InterimPayCertificateItem> items,Long reportId) {
+        this.iInterimPayCertificateItemService.saveOrUpdateBatchList(items,reportId);
     }
 }

+ 2 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInterimPayCertificateItemService.java

@@ -17,4 +17,6 @@ public interface IInterimPayCertificateItemService extends BaseService<InterimPa
 
     @Async
     void sendJLSmg(Long taskId);
+
+    void saveOrUpdateBatchList(List<InterimPayCertificateItem> items,Long reportId);
 }

+ 12 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateItemServiceImpl.java

@@ -124,4 +124,16 @@ public class InterimPayCertificateItemServiceImpl extends BaseServiceImpl<Interi
             }
         }
     }
+
+    @Override
+    public void saveOrUpdateBatchList(List<InterimPayCertificateItem> items,Long reportId) {
+        List<InterimPayCertificateItem> list = baseMapper.selectList(new QueryWrapper<InterimPayCertificateItem>().eq("certificate_id", reportId));
+        if(list.size()>0){
+            for (InterimPayCertificateItem item : items) {
+                baseMapper.updateById(item);
+            }
+        }else {
+            saveBatch(items);
+        }
+    }
 }

+ 13 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

@@ -264,7 +264,8 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
 //                        throw new ServiceException("计量量超出施工图数量,保存失败");
 //                    }
 //                }
-                if(l.getAllMeterTotal().compareTo(l.getContractChangeAllTotal())>0){
+
+                if(compare(l.getAllMeterTotal(),l.getContractChangeAllTotal())>0){
                     throw new ServiceException(l.getFormName()+"的累计计量量已超过清单数量,请申请变更流程");
                 }
                 InventoryFormApply formApply = new InventoryFormApply();
@@ -333,6 +334,16 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
 
     }
 
+    public static int compare(BigDecimal a, BigDecimal b) {
+          if(a==null){
+              a=BigDecimal.ZERO;
+          }
+          if(b==null){
+              b=BigDecimal.ZERO;
+          }
+        return a.compareTo(b);
+    }
+
     /**
      * 获取当前节点变更令
      */
@@ -460,7 +471,7 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
             //保存清单
             List<InventoryFormApply> formApplies = formList.stream().map(l -> {
                 //校验数据
-                if(l.getAllMeterTotal().compareTo(l.getContractChangeAllTotal())>0){
+                if(compare(l.getAllMeterTotal(),l.getContractChangeAllTotal())>0){
                     throw new ServiceException(l.getFormName()+"的累计计量量已超过清单数量,请申请变更流程");
                 }
                 InventoryFormApply formApply = new InventoryFormApply();

+ 1 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -1641,7 +1641,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
                 if (ObjectUtil.isNotEmpty(vor.getCreateTime())) {
                     vor.setStartTime(DateUtil.format(vor.getCreateTime(), "yyyy-MM-dd"));
                 }
-                vor.setTaskStatusStr(new Integer("0").equals(vor.getStatus()) ? "未上报" : new Integer("1").equals(vor.getStatus()) ? "待审批" : new Integer("2").equals(vor.getStatus()) ? "已审批" : "已废除");
+                vor.setTaskStatusStr(new Integer("0").equals(vor.getStatus()) ? "未上报" : new Integer("1").equals(vor.getStatus()) ? "待审批" : new Integer("2").equals(vor.getStatus()) ? "已审批" : "未上报");
                 try {
                     String fileUserIdAndName = vor.getFileUserIdAndName();
                     String[] fileUserIdAndNames = fileUserIdAndName.split(",");