Quellcode durchsuchen

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

# Conflicts:
#	blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
lvy vor 3 Monaten
Ursprung
Commit
a87060f51f
19 geänderte Dateien mit 193 neuen und 134 gelöschten Zeilen
  1. 6 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/BusinessTaskFailedPageVO.java
  2. 2 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/feign/CertificateItemClient.java
  3. 9 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java
  4. 19 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml
  5. 5 30
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  6. 1 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  7. 22 82
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java
  8. 21 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java
  9. 50 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml
  10. 4 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  11. 7 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  12. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaDaoImpl.java
  13. 16 6
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  14. 0 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/NodeBaseInfoServiceImpl.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

+ 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);
 }

+ 9 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java

@@ -32,6 +32,7 @@ import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.user.entity.User;
 
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -215,4 +216,12 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 	List<ArchiveFile> getOutArchiveFilesByOutIds(@Param("projectId")Long projectId,@Param("ids") List<String> outIds);
 
 	List<Map<String, Object>> getMetadaFileByFileIds(@Param("fileIds") List<Long> fileIds);
+
+	/**
+	 * 档案统计-案卷统计-已组/销毁 案卷优化
+	 * @param projectId
+	 * @param typ
+	 * @return
+	 */
+	Map<String, BigDecimal> getAllArchiveByContractTypeSummary(@Param("projectId") Long projectId,@Param("type") String typ);
 }

+ 19 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -1376,6 +1376,25 @@
         </foreach>
         ORDER BY file_id, create_time DESC
     </select>
+    <select id="getAllArchiveByContractTypeSummary" resultType="java.util.Map">
+        select sum(a.key1 + a.key11) key1,sum(a.key2 + a.key12) key2,sum(a.key3 +a.key13) key3  from (
+         SELECT
+             sum( matc.tree_code IS NULL ) key3,
+             sum( matc.tree_code = 'S' ) key2,
+             sum( matc.tree_code = 'C' ) key1,
+             sum( mci.contract_type = 1 ) key11,
+             sum( mci.contract_type = 2 ) key12,
+             sum( mci.contract_type NOT IN ( 1, 2 )) key13
+         FROM
+             m_archive_tree_contract matc
+                 LEFT JOIN u_archives_auto uaa ON uaa.node_id = matc.id
+                 LEFT JOIN m_contract_info mci ON matc.tree_code = mci.id  and mci.is_deleted = 0
+         WHERE
+             uaa.project_id = #{projectId}
+           AND uaa.is_deleted = #{type}
+           AND uaa.is_destroy = #{type}
+        )a
+    </select>
 
 
 </mapper>

+ 5 - 30
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -575,38 +575,13 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 	@Override
 	public Map<String, Integer> getAllArchiveByContractType(Long projectId, String typ) {
-		List<ArchivesAutoVO> list = baseMapper.getAllArchiveByContractType(projectId, typ);
-		List<ContractInfo> infos = contractClient.queryContractListByIds(Arrays.asList(projectId));
+		Map<String,BigDecimal> archivveMap = baseMapper.getAllArchiveByContractTypeSummary(projectId, typ);
 		int key1 = 0, key2 = 0, key3 = 0;
 		//判断案卷属于1施工,2监理,还是3业主
-		for (ArchivesAutoVO l : list) {
-			String type = l.getContractType();
-			if (StringUtils.isBlank(type)) {
-				//业主
-				key3++;
-			} else if ("S".equals(type)) {
-				//监理
-				key2++;
-			} else if ("C".equals(type)) {
-				//施工
-				key1++;
-			} else if (type.length() > 10) {
-				for (ContractInfo info : infos) {
-					if (type.equals(info.getId() + "")) {
-						Integer t = info.getContractType();
-						if (t == 1) {
-							key1++;
-						} else if (t == 2) {
-							key2++;
-						} else {
-							key3++;
-						}
-						break;
-					}
-				}
-			} else {
-				System.out.println(type);
-			}
+		if(archivveMap != null){
+			key1 += archivveMap.get("key1") != null ? archivveMap.get("key1").intValue() : 0;
+			key2 += archivveMap.get("key2") != null ? archivveMap.get("key2").intValue() : 0;
+			key3 += archivveMap.get("key3") != null ? archivveMap.get("key3").intValue() : 0;
 		}
 		Map<String, Integer> map = new HashMap<>();
 		map.put("key1", key1);

+ 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=红色 其他代表=灰色

+ 22 - 82
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -22,6 +22,7 @@ import org.springblade.manager.feign.ContractClient;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -130,99 +131,38 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
 
     @Override
     public List<Map<String, Object>> getAllArchiveFileByContractType(Long projectId) {
-        List<ArchiveFileVO> list = fileMapper.getAllArchiveFileByContractType(projectId);
-        List<ContractInfo> infos = contractClient.queryContractListByIds(Arrays.asList(projectId));
+        Integer count = fileMapper.getAllArchiveFileByContractTypeCount(projectId);
+        Map<String, BigDecimal> mapSummary = fileMapper.getAllArchiveFileByContractTypeSummary(projectId);
         int key1 = 0, key2 = 0, key3 = 0;
         int key4 = 0, key5 = 0, key6 = 0;
-        //判断文件属于1施工,2监理,还是3业主
-        if (list != null && list.size() > 0) {
-            for (ArchiveFileVO l : list) {
-                String type = l.getContractType();
-                if (StringUtils.isBlank(type)) {
-                    //业主
-                    if (l.getSourceType() != null && l.getSourceType() == 1){
-                        key4++;
-                    }else {
-                        key3++;
-                    }
-                } else if ("S".equals(type)) {
-                    //监理
-                    if (l.getSourceType() != null && l.getSourceType() == 1){
-                        key5++;
-                    }else {
-                        key2++;
-                    }
-
-                } else if ("C".equals(type)) {
-                    //施工
-                    if (l.getSourceType() != null && l.getSourceType() == 1){
-                        key6++;
-                    }else {
-                        key1++;
-                    }
-                } else if (type.length() > 10) {
-                    for (ContractInfo info : infos) {
-                        if (type.equals(info.getId() + "")) {
-                            Integer t = info.getContractType();
-                            if (t == 1) {
-                                key1++;
-                            } else if (t == 2) {
-                                key2++;
-                            } else {
-                                key3++;
-                            }
-                            break;
-                        }
-                    }
-                } else {
-                    System.out.println(type);
-                }
-            }
-        }else {
-            List<ArchivesAutoVO> autos = fileMapper.getAllArchiveAutoByContractType(projectId);
-            for (ArchivesAutoVO l : autos) {
-                String type = l.getContractType();
-                if (StringUtils.isBlank(type)) {
-                    //业主
-                    key3++;
-                } else if ("S".equals(type)) {
-                    //监理
-                    key2++;
-                } else if ("C".equals(type)) {
-                    //施工
-                    key1++;
-                } else if (type.length() > 10) {
-                    for (ContractInfo info : infos) {
-                        if (type.equals(info.getId() + "")) {
-                            Integer t = info.getContractType();
-                            if (t == 1) {
-                                key1++;
-                            } else if (t == 2) {
-                                key2++;
-                            } else {
-                                key3++;
-                            }
-                            break;
-                        }
-                    }
-                } else {
-                    System.out.println(type);
-                }
+        if(count> 0 && mapSummary != null){
+            key1 += mapSummary.get("key1") != null ? mapSummary.get("key1").intValue() : 0;
+            key2 += mapSummary.get("key2") != null ? mapSummary.get("key2").intValue() : 0;
+            key3 += mapSummary.get("key3") != null ? mapSummary.get("key3").intValue() : 0;
+            key4 += mapSummary.get("key4") != null ? mapSummary.get("key4").intValue() : 0;
+            key5 += mapSummary.get("key5") != null ? mapSummary.get("key5").intValue() : 0;
+            key6 += mapSummary.get("key6") != null ? mapSummary.get("key6").intValue() : 0;
+        } else {
+            Map<String,BigDecimal>  mapAutoSummary = fileMapper.getAllArchiveAutoByContractTypeSummary(projectId);
+            if(mapAutoSummary != null){
+                key1 += mapAutoSummary.get("key1") != null ? mapAutoSummary.get("key1").intValue() : 0;
+                key2 += mapAutoSummary.get("key2") != null ? mapAutoSummary.get("key2").intValue() : 0;
+                key3 += mapAutoSummary.get("key3") != null ? mapAutoSummary.get("key3").intValue() : 0;
             }
         }
         List<Map<String, Object>> mapList = new ArrayList<>();
         Map<String, Object> map = new HashMap<>();
         map.put("title", "施工");
-        map.put("key1", key6);
-        map.put("key2", key1);
+        map.put("key1", key6);//原生
+        map.put("key2", key1);//数据化
         Map<String, Object> map2 = new HashMap<>();
         map2.put("title", "监理");
-        map2.put("key1", key5);
-        map2.put("key2", key2);
+        map2.put("key1", key5);//原生
+        map2.put("key2", key2);//数据化
         Map<String, Object> map3 = new HashMap<>();
         map3.put("title", "业主");
-        map3.put("key1", key4);
-        map3.put("key2", key3);
+        map3.put("key1", key4);//原生
+        map3.put("key2", key3);//数据化
         mapList.add(map);
         mapList.add(map2);
         mapList.add(map3);

+ 21 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java

@@ -24,6 +24,7 @@ import org.springblade.business.vo.ArchiveFileVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -99,4 +100,24 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
 
 
     List<ArchivesAutoVO> getAllArchiveAutoByContractType(@Param("projectId") Long projectId);
+
+    /**
+     * 档案统计-案卷统计-原生、数字化文件数量(份)
+     * @param projectId
+     * @return
+     */
+    Map<String, BigDecimal> getAllArchiveFileByContractTypeSummary(@Param("projectId") Long projectId);
+
+    /**
+     * 统计
+     * @param projectId
+     * @return
+     */
+    Integer getAllArchiveFileByContractTypeCount(Long projectId);
+    /**
+     * 档案统计-案卷统计-原生、数字化文件数量(份)
+     * @param projectId
+     * @return
+     */
+    Map<String, BigDecimal> getAllArchiveAutoByContractTypeSummary(@Param("projectId") Long projectId);
 }

+ 50 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -473,4 +473,54 @@
                  left join m_archive_tree_contract matc on uaa.node_id = matc.id
         WHERE uaa.project_id = #{projectId} and uaa.is_deleted = 0
     </select>
+    <select id="getAllArchiveFileByContractTypeSummary" resultType="java.util.Map">
+        select sum(a.key1 + a.key11) key1,sum(a.key2 + a.key12) key2,sum(a.key3 +a.key13) key3 ,a.key4,a.key5,a.key6 from (
+          SELECT
+              sum(uaf.source_type = 1 and matc.tree_code is null) key4,
+              sum((uaf.source_type != 1 or uaf.source_type is null ) and matc.tree_code is null) key3,
+              sum(uaf.source_type = 1 and matc.tree_code = 'S') key5,
+              sum((uaf.source_type != 1 or uaf.source_type is null ) and matc.tree_code = 'S') key2,
+              sum(uaf.source_type = 1 and matc.tree_code = 'C') key6,
+              sum((uaf.source_type != 1 or uaf.source_type is null ) and matc.tree_code = 'C') key1,
+              sum(mci.id is not null and mci.contract_type = 1) key11,
+              sum(mci.id is not null and mci.contract_type = 2) key12,
+              sum(mci.id is not null and mci.contract_type not in(1,2)) key13
+
+          FROM
+              u_archive_file uaf
+                  LEFT JOIN m_archive_tree_contract matc ON uaf.node_id = matc.id
+                  left join m_contract_info mci on matc.tree_code = mci.id and mci.is_deleted = 0
+          WHERE
+              uaf.project_id = #{projectId}
+            AND matc.is_deleted = 0
+            AND uaf.is_deleted = 0
+            AND ( uaf.is_auto_file IS NULL OR uaf.is_auto_file != 1 )
+      ) a
+    </select>
+    <select id="getAllArchiveFileByContractTypeCount" resultType="java.lang.Integer">
+        SELECT count(0) `count`
+        FROM u_archive_file uaf
+                 left join m_archive_tree_contract matc on uaf.node_id = matc.id
+        WHERE uaf.project_id = #{projectId} and matc.is_deleted = 0  and uaf.is_deleted = 0
+          and (uaf.is_auto_file is null or uaf.is_auto_file != 1);
+    </select>
+    <select id="getAllArchiveAutoByContractTypeSummary" resultType="java.util.Map">
+
+        select sum(a.key1 + a.key11) key1,sum(a.key2 + a.key12) key2,sum(a.key3 +a.key13) key3 ,a.key4,a.key5,a.key6 from (
+          SELECT
+
+              sum(matc.tree_code is null) key3,
+              sum(matc.tree_code = 'S') key2,
+              sum(matc.tree_code = 'C') key1,
+              sum(mci.contract_type = 1) key11,
+              sum(mci.contract_type = 2) key12,
+              sum(mci.contract_type not in(1,2)) key13
+
+          FROM u_archives_auto uaa
+                   left join m_archive_tree_contract matc on uaa.node_id = matc.id
+                   left join m_contract_info mci on matc.tree_code = mci.id and mci.is_deleted = 0
+          WHERE uaa.project_id = #{projectId} and uaa.is_deleted = 0
+      ) a
+
+    </select>
 </mapper>

+ 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()));

+ 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(",");