Forráskód Böngészése

合同计量单元增加工程编号唯一

qianxb 1 éve
szülő
commit
99b1c5cea6

+ 10 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterTreeController.java

@@ -1,6 +1,7 @@
 package org.springblade.meter.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -609,6 +610,15 @@ public class MeterTreeController extends BladeController {
     @ApiOperationSupport(order = 24)
     @ApiOperation(value = "合同段树节点修改", notes = "传入MeterTreeContractDTO")
     public R<Object> contractUpdate(@RequestBody MeterTreeContractDTO dto) {
+        //先校验节点编号是否唯一
+        if (StringUtils.isNotBlank(dto.getNodeCode())){
+            long count = meterTreeContractService.count(new LambdaUpdateWrapper<MeterTreeContract>()
+                    .eq(MeterTreeContract::getNodeCode, dto.getNodeCode())
+                    .ne(MeterTreeContract::getId, dto.getId()));
+            if (count > 0){
+                throw new ServiceException("修改失败,当前工程编号已经存在");
+            }
+        }
         if (ObjectUtil.isNotEmpty(dto.getDecompositionList()) && dto.getDecompositionList().size() > 0) {
             /*最底层节点修改*/
             dto.setUpdateStatus(1); //编辑

+ 6 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterTreeContractServiceImpl.java

@@ -996,7 +996,12 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
         //查询当前节点,有节点编号的所有子节点
         List<MeterTreeContract> rootNodeChild = baseMapper.selectList(Wrappers.<MeterTreeContract>lambdaQuery().like(MeterTreeContract::getAncestor, id).isNotNull(MeterTreeContract::getNodeCode));
         //通过节点编号分组
-        Map<String, MeterTreeContract> rootNodeChildMap = rootNodeChild.stream().collect(Collectors.toMap(MeterTreeContract::getNodeCode, Function.identity()));
+        Map<String, MeterTreeContract> rootNodeChildMap = new HashMap<>();
+        try {
+            rootNodeChildMap = rootNodeChild.stream().collect(Collectors.toMap(MeterTreeContract::getNodeCode, Function.identity()));
+        }catch (IllegalStateException e){
+            throw new ServiceException("树节点的工程编号存在重复,请检查后再重新导入");
+        }
         //获取所有子节点id
         List<Long> rootNodeChildIds = rootNodeChild.stream().map(MeterTreeContract::getId).collect(Collectors.toList());
         Map<Long, List<InventoryFormMeter>> inventoryFormMeterMapsGroupByContractMeterId = new HashMap<>();