Ver código fonte

Merge remote-tracking branch 'origin/master'

liuyc 1 ano atrás
pai
commit
05d242ecb7
21 arquivos alterados com 206 adições e 89 exclusões
  1. 2 2
      blade-common/src/main/java/org/springblade/common/utils/AsyncConfigurer.java
  2. 5 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormApply.java
  3. 5 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MiddleMeterApply.java
  4. 2 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractInventoryFormVO2.java
  5. 3 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InventoryFormDetailVO.java
  6. 4 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterInventoryDetailVO.java
  7. 2 2
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ZeroChangeVO.java
  8. 40 79
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVisaController.java
  9. 8 4
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractInventoryFormController.java
  10. 21 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InventoryFormMeterController.java
  11. 14 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MiddleMeterApplyController.java
  12. 4 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.java
  13. 13 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml
  14. 1 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormMeterMapper.java
  15. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.java
  16. 4 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml
  17. 5 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInventoryFormMeterService.java
  18. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMiddleMeterApplyService.java
  19. 27 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java
  20. 11 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InventoryFormMeterServiceImpl.java
  21. 31 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

+ 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 = 8;//Runtime.getRuntime().availableProcessors();
 
     /**
      * 线程池配置
@@ -25,7 +25,7 @@ public class AsyncConfigurer {
     @Bean("taskExecutor1")
     public ThreadPoolExecutor getAsyncExecutor() {
         return new ThreadPoolMonitor(cpuNum
-                , 6
+                , 20
                 , 60
                 , TimeUnit.SECONDS
                 , new LinkedBlockingQueue<>(2000)

+ 5 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormApply.java

@@ -59,6 +59,11 @@ public class InventoryFormApply extends BaseEntity {
      */
     @ApiModelProperty(value = "中间计量申请id")
     private Long middleMeterId;
+    /**
+     * 计量单编号
+     */
+    @ApiModelProperty(value = "计量单编号")
+    private String meterNumber;
     /**
      * 本期计量数量
      */

+ 5 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MiddleMeterApply.java

@@ -60,6 +60,11 @@ public class MiddleMeterApply extends BaseEntity {
      */
     @ApiModelProperty(value = "合同计量期id")
     private Long contractPeriodId;
+    /**
+     * 合同计量期期号
+     */
+    @ApiModelProperty(value = "合同计量期期号")
+    private String periodNumber;
     /**
      * 计量单编号
      */

+ 2 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractInventoryFormVO2.java

@@ -37,4 +37,6 @@ public class ContractInventoryFormVO2 extends ContractInventoryForm {
 
 	@ApiModelProperty(value = "节点名称")
 	private String nodeName;
+
+
 }

+ 3 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InventoryFormDetailVO.java

@@ -44,4 +44,7 @@ public class InventoryFormDetailVO extends ContractInventoryForm {
 	@ApiModelProperty(value = "引用状态,0未引用,1引用")
 	private Integer citeStatus;
 
+	@ApiModelProperty(value = "是否专项暂定金")
+	private String isSpecialFund;
+
 }

+ 4 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterInventoryDetailVO.java

@@ -36,7 +36,7 @@ public class MeterInventoryDetailVO {
     @ApiModelProperty(value = "工程划分")
     private String engineerDivide;
 
-    @ApiModelProperty(value = "审核状态名称")
+    @ApiModelProperty(value = "清单名称")
     private String formName;
 
     @ApiModelProperty(value = "单价")
@@ -57,5 +57,8 @@ public class MeterInventoryDetailVO {
     @ApiModelProperty(value = "明细")
     private List<MeterInventoryDetailVO> detail;
 
+    @ApiModelProperty(value = "计量单编号")
+    private String meterNumber;
+
 
 }

+ 2 - 2
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ZeroChangeVO.java

@@ -51,7 +51,7 @@ public class ZeroChangeVO {
     @ApiModelProperty(value = "核实金额")
     private BigDecimal verifyMoney;
 
-    @ApiModelProperty(value = "状态")
-    private Integer statusName;
+    @ApiModelProperty(value = "状态名称")
+    private String statusName;
 
 }

+ 40 - 79
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVisaController.java

@@ -21,6 +21,7 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.*;
 
@@ -48,84 +49,44 @@ public class EVisaController {
     @Resource(name = "taskExecutor1")
     private ThreadPoolExecutor executor;
 
+
     // 电签主类
-//    @Scheduled(cron = "0 */1 * * * ?")
-//    public void SignInfo() {
-//        //执行代码
-//        log.info("扫描开始");
-//        String sql = "SELECT * from u_task_batch where is_deleted not in(2,4) LIMIT 100";
-//        List<TaskBatch> maps = jdbcTemplate.queryForList(sql,TaskBatch.class);
-//        if (maps != null && maps.size() >= 1) {
-//            for (TaskBatch dataInfo : maps) {
-//                String jsonData = dataInfo.getJsonData();
-//                TaskApprovalVO taskApprovalVO = JSON.parseObject(jsonData, TaskApprovalVO.class);
-//                String taskBatchId = dataInfo.getId().toString();
-//                Long userId = dataInfo.getCreateUser();
-//                String nickName = dataInfo.getNickName();
-//
-//                Boolean istrue = true;
-//                try {
-//                    Thread.sleep(500);
-//                } catch (InterruptedException e) {
-//                    throw new RuntimeException(e);
-//                }
-//
-//                Boolean aBoolean = RedisTemplate.hasKey("sign-" + taskApprovalVO.getFormDataId());
-//                System.out.println(taskApprovalVO.getFormDataId()+"---"+aBoolean);
-//                if (aBoolean) {
-//                    istrue = false;
-//                }
-//                if (istrue) {
-//                    int wtask = executor.getQueue().size();
-//                    if (wtask >= 200) {
-//                        break;
-//                    }
-//                    jdbcTemplate.execute("update u_task_batch set is_deleted=2 where id="+taskBatchId+"");
-//                    RedisTemplate.opsForValue().set("sign-" + taskApprovalVO.getFormDataId(), "1", 66, TimeUnit.SECONDS);
-//                    CompletableFuture<Void> runAsync = CompletableFuture.runAsync(() -> {
-//                        try {
-//                            this.checkIsExsitTaskBatch(taskApprovalVO, taskBatchId, userId, nickName);
-//                        } catch (FileNotFoundException e) {
-//                            e.printStackTrace();
-//                        }
-//                    }, executor);
-//                }
-//            }
-//        }
-//    }
-//
-//    private void checkIsExsitTaskBatch(TaskApprovalVO taskApprovalVO, String batchId, Long userId, String nickName) throws FileNotFoundException {
-//        log.info("【任务审核】当前批次开始电签。批次ID:" + batchId);
-//        taskApprovalVO.setId(batchId);
-//        taskApprovalVO.setUserId(userId);
-//        taskApprovalVO.setNickName(nickName);
-//        String pdfUrlEVisa = this.completeApprovalTask(taskApprovalVO);
-//
-//        System.out.println("电签操作成功buss-----" + pdfUrlEVisa + "---batchId=" + batchId);
-//        //TODO ============== 电签成功,修改试验状态,关联工程部位信息pdf(只有电签成功,才修改) liuYc 2023-03-16 ==============
-//        if ("OK".equals(taskApprovalVO.getFlag()) && StringUtils.isNotEmpty(pdfUrlEVisa)) {
-//            //已审批
-//            this.iTrialSelfInspectionRecordService.updateTrialSelfInspectionRecordStatus(pdfUrlEVisa, taskApprovalVO);
-//            //executor删除掉对应批次
-//            this.taskBatchService.deletedById(batchId);
-//        }
-//
-//        if (!"OK".equals(taskApprovalVO.getFlag())) {
-//            //已废除
-//            this.iTrialSelfInspectionRecordService.updateTrialSelfInspectionRecordStatusFC(taskApprovalVO);
-//            //executor删除掉对应批次
-//            this.taskBatchService.deletedById(batchId);
-//        }
-//        RedisTemplate.delete("sign-" + taskApprovalVO.getFormDataId());
-//    }
-//
-//    private String completeApprovalTask(TaskApprovalVO taskApprovalVO) {
-//        if ("OK".equals(taskApprovalVO.getFlag())) { // 电签流程
-//
-//        }else { //任务废除
-//
-//        }
-//
-//        return "";
-//    }
+    @Scheduled(cron = "0 */1 * * * ?")
+    public void SignInfo() {
+        //执行代码
+        log.info("扫描开始");
+        String sql = "SELECT * from u_task_batch where is_deleted =0 LIMIT 100";
+        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
+        if (maps != null && maps.size() >= 1) {
+            for (Map<String, Object> dataInfo : maps) {
+                String jsonData = dataInfo.get("json_data")+"";
+                TaskApprovalVO taskApprovalVO = JSON.parseObject(jsonData, TaskApprovalVO.class);
+                String taskBatchId = dataInfo.get("id").toString();
+                Long userId = Long.valueOf(dataInfo.get("create_user")+"");
+                String nickName = dataInfo.get("nick_name")+"";
+                String formDataId = taskApprovalVO.getFormDataId();
+
+                CompletableFuture<Void> runAsync = CompletableFuture.runAsync(() -> {
+                        try {
+                           this.checkIsExsitTaskBatch(taskApprovalVO, taskBatchId, userId, nickName);
+                        } catch (FileNotFoundException e) {
+                            e.printStackTrace();
+                        }
+                }, executor);
+            }
+        }
+    }
+
+    private void checkIsExsitTaskBatch(TaskApprovalVO taskApprovalVO, String batchId, Long userId, String nickName) throws FileNotFoundException {
+        synchronized (taskApprovalVO.getFormDataId()) {
+            try {
+                System.out.println(taskApprovalVO.getFormDataId());
+                Thread.sleep(8000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        System.out.println();
+    }
+
 }

+ 8 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractInventoryFormController.java

@@ -187,14 +187,18 @@ public class ContractInventoryFormController extends BladeController {
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "获取合同工程清单表", notes = "返回获取合同工程清单表列表")
 	@ApiImplicitParams(value = {
-			@ApiImplicitParam(name = "contractId", value = "", required = true),
-			@ApiImplicitParam(name = "formNum", value = "formNum", required = true)
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true),
+			@ApiImplicitParam(name = "formNum", value = "清单编号", required = false),
+			@ApiImplicitParam(name = "meterId", value = "计量单元Id", required = true)
 	})
-	public R<List<ContractFromVO>> getFormTree(Long contractId, String formNum){
+	public R<List<ContractFromVO>> getFormTree(Long contractId, String formNum,Long meterId){
 		if(contractId!=null && ObjectUtil.isEmpty(contractId)){
 			return R.fail("contractId不能为空");
 		}
-		List<ContractFromVO> treeAll = contractInventoryFormService.getContrFormAllByContrId(contractId,formNum,1,0L);
+		if(meterId!=null && ObjectUtil.isEmpty(meterId)){
+			return R.fail("meterId不能为空");
+		}
+		List<ContractFromVO> treeAll = contractInventoryFormService.getContrFormAllByContrId(contractId,formNum,1,meterId);
 		return R.data(treeAll);
 	}
 	

+ 21 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InventoryFormMeterController.java

@@ -132,4 +132,25 @@ public class InventoryFormMeterController extends BladeController {
 		}
 		return inventoryFormMeterService.inventoryFormMeterService(meterId,formIds);
 	}
+
+
+	/**
+	 * 删除 同合计量 清单
+	 */
+	@PostMapping("/removeInfo")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除同合计量", notes = "传入")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "meterId", value = "合同计量单元id", required = true),
+			@ApiImplicitParam(name = "formIds", value = "合同工程清单ids,多个以,分割", required = true)
+	})
+	public R delInMeterInfo(String meterId,String formIds) {
+		if(meterId==null & StringUtils.isEmpty(meterId)){
+			R.fail("计量单元meterId不能为null");
+		}
+		if(formIds!=null & StringUtils.isNotEmpty(formIds)){
+			R.fail("合同工程清单formIds不能为null");
+		}
+		return inventoryFormMeterService.delInMeterInfo(meterId,formIds);
+	}
 }

+ 14 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MiddleMeterApplyController.java

@@ -182,6 +182,20 @@ public class MiddleMeterApplyController extends BladeController {
 		return R.data(middleMeterApplyService.formDetail(middleMeterApply));
 	}
 
+	/**
+	 * 获取计量单编号
+	 */
+	@GetMapping("/getMeterNumber")
+	@ApiOperationSupport(order = 11)
+	@ApiOperation(value = "获取计量单编号", notes = "传入合同id,合同计量期id,返回值为计量单编号")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true),
+			@ApiImplicitParam(name = "contractPeriodId", value = "合同计量期id", required = true)
+	})
+	public R<String> getMeterNumber(MiddleMeterApply middleMeterApply) {
+		return R.data(middleMeterApplyService.getMeterNumber(middleMeterApply));
+	}
+
 
 	
 }

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.java

@@ -55,4 +55,8 @@ public interface ContractInventoryFormMapper extends BaseMapper<ContractInventor
      * @return
      */
     List<ContractFromVO> getContrFormAllByContrId(@Param("contractId") Long contractId, @Param("formNum") String formNum,@Param("type") int type,@Param("meterId") Long meterId);
+
+    void updateAllChildType(@Param("id") Long id,@Param("contractId") Long contractId,@Param("formType") Integer formType);
+
+    void updateAllChildChapterNumber(@Param("id") Long id,@Param("contractId") Long contractId,@Param("chapterNumber") String chapterNumber);
 }

+ 13 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml

@@ -43,6 +43,14 @@
         update s_contract_inventory_form set is_deleted = 1 where
             contract_id = #{contractId} and (id = #{id} or FIND_IN_SET(#{id},ancestors) > 0)
     </update>
+    <update id="updateAllChildType">
+        update s_contract_inventory_form set form_type = #{formType} where
+            contract_id = #{contractId} and (id = #{id} or FIND_IN_SET(#{id},ancestors) > 0)
+    </update>
+    <update id="updateAllChildChapterNumber">
+        update s_contract_inventory_form set chapter_number = #{chapterNumber} where
+            contract_id = #{contractId} and (id = #{id} or FIND_IN_SET(#{id},ancestors) > 0)
+    </update>
     <select id="getAllNode" resultType="org.springblade.meter.vo.FormTreeVO">
         select id,parent_id,is_lock,chapter_number,form_type,
                if(scif.is_supplement=0,concat(scif.form_number, scif.form_name),concat(scif.form_number, scif.form_name,'[增补]')) as form_name,
@@ -54,6 +62,7 @@
     </select>
     <select id="getById" resultType="org.springblade.meter.vo.InventoryFormDetailVO">
         select *,
+               if(scif.form_type=1,'否','是') as isSpecialFund,
                 if(scif.form_type=0,'',(select dict_value from blade_dict where is_deleted = 0 and code = 'meter_form_type' and dict_key = scif.form_type))  as formTypeName
         from s_contract_inventory_form scif where id = #{id}
     </select>
@@ -91,6 +100,10 @@
             <if test="formNum != null and formNum != '' and type==1">
                 and u.form_number like concat('%',#{formNum},'%')
             </if>
+            <if test="type==1">
+                and u.ID not in (select contract_form_id from s_inventory_form_meter where is_deleted=0 and contract_id = #{contractId} and contract_meter_id=#{meterId} )
+                and u.is_form_node =1
+            </if>
             <if test="type==2">
                 and u.ID in (select contract_form_id from s_inventory_form_meter where is_deleted=0 and contract_id = #{contractId} and contract_meter_id=#{meterId} )
             </if>

+ 1 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormMeterMapper.java

@@ -34,4 +34,5 @@ public interface InventoryFormMeterMapper extends BaseMapper<InventoryFormMeter>
 
     List<Long> getNodeAllForm(@Param("nodeId") Long nodeId);
     ContractInventoryForm dadainfo(@Param("forid") long forid);
+
 }

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

@@ -56,4 +56,6 @@ public interface MiddleMeterApplyMapper extends BaseMapper<MiddleMeterApply> {
     List<MeterInventoryVO> getForm(@Param("id") Long id,@Param("contractId") Long contractId);
 
     ChangeTokenForm getTokenById(@Param("id") Long id);
+
+    String getContractInfo(@Param("contractId") Long contractId);
 }

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

@@ -74,7 +74,7 @@
                   )
     </select>
     <select id="meterPeriodAllForm" resultType="org.springblade.meter.vo.MeterInventoryDetailVO">
-        SELECT cif.id,cif.form_number,cif.form_name,cif.current_price,cif.change_total,ifa.current_meter_total,ifa.current_meter_money,ifa.contract_form_id,
+        SELECT cif.id,ifa.meter_number,cif.form_number,cif.form_name,cif.current_price,cif.change_total,ifa.current_meter_total,ifa.current_meter_money,ifa.contract_form_id,
                (select period_number from s_contract_meter_period cmp where cmp.id = ifa.contract_period_id) as meterPeriodName,
                 (select engineer_divide from s_middle_meter_apply mma where mma.id = ifa.middle_meter_id) as engineerDivide,
                CASE when (select approve_status from s_middle_meter_apply mma where mma.id = ifa.middle_meter_id) = 0 then '未上报' when (select approve_status from s_middle_meter_apply mma where mma.id = ifa.middle_meter_id) = 1 then '待审批' when (select approve_status from s_middle_meter_apply mma where mma.id = ifa.middle_meter_id) = 2 then '已审批'
@@ -100,6 +100,9 @@
         select *
         from s_change_token_form where id = #{id}
     </select>
+    <select id="getContractInfo" resultType="java.lang.String">
+        select contract_number from m_contract_info where id = #{contractId}
+    </select>
 
 
 </mapper>

+ 5 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInventoryFormMeterService.java

@@ -42,4 +42,9 @@ public interface IInventoryFormMeterService extends BaseService<InventoryFormMet
 
     // 修改信息
     boolean updateInfo(List<ContractFromVO> dataInfo,Long meterId);
+
+    /**
+     * 删除 同合计量 清单
+     */
+    R delInMeterInfo(String meterId, String formIds);
 }

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

@@ -56,4 +56,6 @@ public interface IMiddleMeterApplyService extends BaseService<MiddleMeterApply>
     List<MeterInventoryDetailVO> formDetail(MiddleMeterApply middleMeterApply);
 
     MiddleMeterApplyVO detail(Long id);
+
+    String getMeterNumber(MiddleMeterApply middleMeterApply);
 }

+ 27 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java

@@ -110,6 +110,10 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
                 if (StringUtils.isBlank(excel.getImportNumber()) || StringUtils.isBlank(excel.getFormNumber() ) || StringUtils.isBlank(excel.getFormName())){
                     throw new ServiceException("excel中有必填项未填写,请检查后重新导入");
                 }
+                //校验清单类型是否填写,未填写默认为1
+                if (excel.getFormType() == null){
+                    excel.setFormType(1);
+                }
                 excel.setProjectId(projectId);
                 excel.setContractId(contractId);
                 //判断是否已经存在于合同段
@@ -261,6 +265,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
             info.setFormNumber("");
             info.setFormName("合同工程清单");
             info.setIsFormNode(0);
+            info.setNodeTier(-1);
             baseMapper.insert(info);
             vos = baseMapper.getAllNode(projectId, contractId);
             return vos;
@@ -357,6 +362,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
                 throw new ServiceException("子节点的清单类型,必须与父节点的清单类型相同");
             }
         }
+        form.setNodeTier(parentNode.getNodeTier() + 1);
         //设置祖级节点
         form.setAncestors(parentNode.getAncestors()+","+parentNode.getId());
         //如果不是根节点则设置层级
@@ -374,6 +380,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
      * 修改 合同工程清单表
      */
     @Override
+    @Transactional
     public void updateForm(ContractInventoryForm form) {
         //获取当前节点信息
         ContractInventoryForm nodeInfo = this.getById(form.getId());
@@ -424,6 +431,25 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
                 form.setChangeMoney(null);
             }
         }
+        //当前节点的清单类型是否被修改了,
+        if (nodeInfo.getFormType() != form.getFormType()){
+            //校验是否为二级节点,
+            if (nodeInfo.getNodeTier() != 0){
+                throw new ServiceException("非根节点不能修改清单类型");
+            }
+            //修改所有子节点的清单类型
+            baseMapper.updateAllChildType(form.getId(),form.getContractId(),form.getFormType());
+
+        }
+        //当前节点的章编号是否被修改了,
+        if (StringUtils.isNotBlank(form.getChapterNumber()) && !form.getChapterNumber().equals(nodeInfo.getChapterNumber())){
+            //校验是否为二级节点,
+            if (nodeInfo.getNodeTier() != 0){
+                throw new ServiceException("非根节点不能修改章编号");
+            }
+            //修改所有子节点的章编号
+            baseMapper.updateAllChildChapterNumber(form.getId(),form.getContractId(),form.getChapterNumber());
+        }
         this.updateById(form);
     }
 
@@ -466,6 +492,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
             info.setFormNumber("");
             info.setFormName("合同工程清单");
             info.setIsFormNode(0);
+            info.setNodeTier(-1);
             baseMapper.insert(info);
             vos = baseMapper.getChildNode(contractId,0L);
             return vos;

+ 11 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InventoryFormMeterServiceImpl.java

@@ -81,4 +81,15 @@ public class InventoryFormMeterServiceImpl extends BaseServiceImpl<InventoryForm
         }
         return true;
     }
+
+    @Override
+    public R delInMeterInfo(String meterId, String formIds) {
+        List<Long> longList = Func.toLongList(formIds);
+        for(Long forid:longList) {
+            baseMapper.delete(Wrappers.<InventoryFormMeter>query().lambda()
+                    .eq(InventoryFormMeter::getContractMeterId, meterId)
+                    .eq(InventoryFormMeter::getContractFormId, forid));
+        }
+        return R.success("成功");
+    }
 }

+ 31 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

@@ -62,6 +62,9 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
 
     private final IAttachmentFormService attachmentFormService;
 
+    //合同计量期
+    private final IContractMeterPeriodService contractMeterPeriodService;
+
     
 
     /**
@@ -126,6 +129,7 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
                 formApply.setContractFormId(l.getId());
                 formApply.setMiddleMeterId(id);
                 formApply.setContractPeriodId(dto.getContractPeriodId());
+                formApply.setMeterNumber(dto.getMeterNumber());
                 if (l.getCurrentMeterTotal() != null && l.getCurrentPrice() != null) {
                     formApply.setCurrentMeterTotal(l.getCurrentMeterTotal());
                     formApply.setCurrentMeterMoney(l.getCurrentPrice().multiply(new BigDecimal(l.getCurrentMeterTotal())));
@@ -219,6 +223,7 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
                 formApply.setContractFormId(l.getId());
                 formApply.setMiddleMeterId(dto.getId());
                 formApply.setContractPeriodId(dto.getContractPeriodId());
+                formApply.setMeterNumber(dto.getMeterNumber());
                 if (l.getCurrentMeterTotal() != null && l.getCurrentPrice() != null) {
                     formApply.setCurrentMeterTotal(l.getCurrentMeterTotal());
                     formApply.setCurrentMeterMoney(l.getCurrentPrice().multiply(new BigDecimal(l.getCurrentMeterTotal())));
@@ -327,4 +332,30 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
         vo.setFileList(list);
         return vo;
     }
+
+    /**
+     * 获取计量单编号
+     */
+    @Override
+    public String getMeterNumber(MiddleMeterApply apply) {
+        StringBuilder str = new StringBuilder();
+        //获取合同信息
+        String contractNumber = baseMapper.getContractInfo(apply.getContractId());
+        if (StringUtils.isBlank(contractNumber)){
+            throw new ServiceException("未获取到当前合同段编号信息");
+        }
+        str.append(contractNumber+"-");
+        //获取计量期信息
+        ContractMeterPeriod contractMeterPeriod = contractMeterPeriodService.getById(apply.getContractPeriodId());
+        if (contractMeterPeriod == null || StringUtils.isBlank(contractMeterPeriod.getPeriodNumber())){
+            throw new ServiceException("未获取到计量期期号信息");
+        }
+        str.append(contractMeterPeriod.getPeriodNumber()+"-");
+        //获取流水号:当前合同段存在的所有合同计量申请的数量+1
+        long count = this.count(new LambdaQueryWrapper<MiddleMeterApply>()
+                .eq(MiddleMeterApply::getContractId, apply.getContractId())
+                .eq(MiddleMeterApply::getContractPeriodId,apply.getContractPeriodId()));
+        str.append(count+1);
+        return str.toString();
+    }
 }