Переглянути джерело

修改系统,项目,合同的计量单元树节点类型,新增修改时不能高于父级,并且详情要显示

qianxb 11 місяців тому
батько
коміт
b98e1d9e6a

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

@@ -24,4 +24,7 @@ public class MeterTreeContractVO extends MeterTreeContract {
     @ApiModelProperty(value = "是否已经计量:0否1是")
     private Integer isMeter;
 
+    @ApiModelProperty(value = "是否已经计量:0否1是")
+    private String nodeTypeName;
+
 }

+ 26 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterTreeController.java

@@ -166,6 +166,10 @@ public class MeterTreeController extends BladeController {
         Integer maxSort = meterTreeSystemService.selectMaxSort(obj.getParentId());
         obj.setSort(ObjectUtils.defaultIfNull(maxSort, 0) + 1);
 
+        if (parentNode.getNodeType() != null && obj.getNodeType() < parentNode.getNodeType()){
+            throw new ServiceException("节点类型不能大于父节点");
+        }
+
         return R.data(meterTreeSystemService.save(obj));
     }
 
@@ -206,7 +210,8 @@ public class MeterTreeController extends BladeController {
     @ApiOperationSupport(order = 7)
     @ApiOperation(value = "系统树节点修改", notes = "传入MeterTreeSystem")
     public R<Object> systemUpdate(@RequestBody MeterTreeSystem obj) {
-        return R.data(meterTreeSystemService.updateById(obj));
+        meterTreeSystemService.systemUpdate(obj);
+        return R.success("修改成功");
     }
 
     @GetMapping("/system/remove")
@@ -373,6 +378,10 @@ public class MeterTreeController extends BladeController {
         }
         obj.setAncestor(parentNode.getAncestor() + "," + parentNode.getId());
 
+        if (parentNode.getNodeType() != null && obj.getNodeType() < parentNode.getNodeType()){
+            throw new ServiceException("节点类型不能大于父节点");
+        }
+
         /*获取最大sort*/
         Integer maxSort = meterTreeProjectService.selectMaxSort(obj.getParentId());
         obj.setSort(ObjectUtils.defaultIfNull(maxSort, 0) + 1);
@@ -426,7 +435,8 @@ public class MeterTreeController extends BladeController {
     @ApiOperation(value = "项目树节点修改", notes = "传入MeterTreeProject")
     public R<Object> projectUpdate(@RequestBody MeterTreeProject obj) {
         obj.setUpdateStatus(1); //编辑
-        return R.data(meterTreeProjectService.updateById(obj));
+        meterTreeProjectService.projectUpdate(obj);
+        return R.success("修改成功");
     }
 
     @GetMapping("/project/remove")
@@ -643,6 +653,14 @@ public class MeterTreeController extends BladeController {
         } else if (ObjectUtil.isEmpty(dto.getDecompositionList()) || dto.getDecompositionList().size() == 0) {
             /*非最底层节点修改*/
             dto.setUpdateStatus(1); //编辑
+            //校验是否大于父节点类型
+            MeterTreeContract treeContract = meterTreeContractService.getById(dto.getParentId());
+            if (treeContract == null){
+                throw new ServiceException("未找到父节点信息");
+            }
+            if (treeContract.getNodeType() != null && dto.getNodeType() < treeContract.getNodeType()){
+                throw new ServiceException("节点类型不能大于父节点");
+            }
             if (meterTreeContractService.updateById(dto)) {
                 return R.success("操作成功");
             }
@@ -696,6 +714,12 @@ public class MeterTreeController extends BladeController {
                     vo.setStakeTypeName(dict.getDictValue());
                 }
             }
+            if (basicInfo.getNodeType() != null){
+                Dict dict = jdbcTemplate.query("SELECT dict_value FROM blade_dict_biz WHERE is_deleted = 0 AND code = 'meter_unit_type' AND dict_key = " + basicInfo.getNodeType(), new BeanPropertyRowMapper<>(Dict.class)).stream().findAny().orElse(null);
+                if (dict != null) {
+                    vo.setNodeTypeName(dict.getDictValue());
+                }
+            }
             //判断是否为最底层节点,如果为最底层节点则直接查询清单,不为最底层节点则汇总子节点总和
             long count = meterTreeContractService.count(new LambdaQueryWrapper<MeterTreeContract>()
                     .eq(MeterTreeContract::getContractId, basicInfo.getContractId())

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

@@ -10,4 +10,5 @@ public interface MeterTreeProjectService extends BaseService<MeterTreeProject> {
 
     R<Object> projectTreeInitOrSync(Long meterTemplateId, Long projectId);
 
+    void projectUpdate(MeterTreeProject obj);
 }

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

@@ -7,4 +7,5 @@ public interface MeterTreeSystemService extends BaseService<MeterTreeSystem> {
 
     Integer selectMaxSort(Long parentId);
 
+    void systemUpdate(MeterTreeSystem obj);
 }

+ 14 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterTreeContractServiceImpl.java

@@ -448,6 +448,9 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
                         cObj.setParentId(dto.getContractNodeId());
                         /*ancestor*/
                         cObj.setAncestor(meterTreeContractNode.getAncestor() + "," + cObj.getParentId());
+                        if (meterTreeContractNode.getNodeType() != null) {
+                            cObj.setNodeType(meterTreeContractNode.getNodeType()+1);
+                        }
 
                         cObj.setNodeCode(null);
 
@@ -507,6 +510,9 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
                             cObj.setParentId(parentId);
                             cObj.setAncestor(null); //后面重新计算子级ancestor
                         }
+                        if (meterTreeContractNode.getNodeType() != null) {
+                            cObj.setNodeType(meterTreeContractNode.getNodeType()+1);
+                        }
 
                         cObj.setNodeCode(null);
 
@@ -2135,6 +2141,14 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
     @Override
     @Transactional
     public boolean contractUpdate(MeterTreeContractDTO dto) {
+        //校验是否大于父节点类型
+        MeterTreeContract treeContract = this.getById(dto.getParentId());
+        if (treeContract == null){
+            throw new ServiceException("未找到父节点信息");
+        }
+        if (treeContract.getNodeType() != null && dto.getNodeType() < treeContract.getNodeType()){
+            throw new ServiceException("节点类型不能大于父节点");
+        }
         //先校验节点编号是否唯一
         if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(dto.getNodeCode())){
             long count = this.count(new LambdaUpdateWrapper<MeterTreeContract>()

+ 13 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterTreeProjectServiceImpl.java

@@ -275,6 +275,19 @@ public class MeterTreeProjectServiceImpl extends BaseServiceImpl<MeterTreeProjec
         }
     }
 
+    @Override
+    public void projectUpdate(MeterTreeProject obj) {
+        //校验是否大于父节点类型
+        MeterTreeProject treeProject = this.getById(obj.getParentId());
+        if (treeProject == null){
+            throw new ServiceException("未找到父节点信息");
+        }
+        if (treeProject.getNodeType() != null && obj.getNodeType() < treeProject.getNodeType()){
+            throw new ServiceException("节点类型不能大于父节点");
+        }
+        this.updateById(obj);
+    }
+
     /**
      * 获取对应的父级的ancestor字段
      *

+ 15 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterTreeSystemServiceImpl.java

@@ -1,5 +1,7 @@
 package org.springblade.meter.service.impl;
 
+import org.apache.commons.lang.StringUtils;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.meter.entity.MeterTreeSystem;
 import org.springblade.meter.mapper.MeterTreeSystemMapper;
@@ -14,4 +16,17 @@ public class MeterTreeSystemServiceImpl extends BaseServiceImpl<MeterTreeSystemM
         return baseMapper.selectMaxSort(parentId);
     }
 
+    @Override
+    public void systemUpdate(MeterTreeSystem obj) {
+        //校验是否大于父节点类型
+        MeterTreeSystem system = this.getById(obj.getParentId());
+        if (system == null){
+            throw new ServiceException("未找到父节点信息");
+        }
+        if (system.getNodeType() != null && obj.getNodeType() < system.getNodeType()){
+            throw new ServiceException("节点类型不能大于父节点");
+        }
+        this.updateById(obj);
+    }
+
 }