Explorar el Código

08 16 update responsibility code

hr hace 4 años
padre
commit
23da0cc1ca

+ 1 - 1
src/main/java/com/imed/costaccount/CostAccountApplication.java

@@ -10,6 +10,6 @@ public class CostAccountApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(CostAccountApplication.class, args);
-        System.out.println("启动成功");
+        System.out.println("============================启动成功==========================================");
     }
 }

+ 5 - 4
src/main/java/com/imed/costaccount/model/Responsibility.java

@@ -38,10 +38,6 @@ public class Responsibility implements Serializable {
 	 * 责任中心代码
 	 */
 	private String responsibilityCode;
-	/**
-	 * 责任级别(第一级为1,以此类推)
-	 */
-	private Integer responsibilityLevel;
 	/**
 	 * 上级id
 	 */
@@ -58,6 +54,11 @@ public class Responsibility implements Serializable {
 	 * 责任类型 1. 收费中心,2.成本(费用)中心
 	 */
 	private Integer responsibilityType;
+
+	/**
+	 * 是否默认 0.不是,1.是
+	 */
+	private Integer isDefault;
 	/**
 	 * 分摊级别的Id
 	 */

+ 4 - 0
src/main/java/com/imed/costaccount/model/dto/ResponsibilityEditDTO.java

@@ -47,5 +47,9 @@ public class ResponsibilityEditDTO {
     @ApiModelProperty(name = "shareName",value = "分摊级别名称(分摊接口中获取,暂时可写死)")
     private String shareName;
 
+    @NotNull(message = "是否默认字段不为空")
+    @ApiModelProperty(value = "0.不是,1.是", name = "deptStatus")
+    private Integer isDefault;
+
 
 }

+ 13 - 13
src/main/java/com/imed/costaccount/model/dto/ResponsibilitySaveDTO.java

@@ -12,37 +12,37 @@ import javax.validation.constraints.NotNull;
 @ApiModel("责任中心新增实体类")
 public class ResponsibilitySaveDTO {
 
-    @ApiModelProperty(name = "ApiModelProperty",value = "责任级别id,新增一级不传,如果是添加二级责任中心,那么必传")
+    @ApiModelProperty(name = "ApiModelProperty", value = "责任级别id,新增一级不传,如果是添加二级责任中心,那么必传")
     private Long id;
 
-    @ApiModelProperty(name = "responsibilityCode",value = "责任中心代码(后台校验唯一性)")
+    @ApiModelProperty(name = "responsibilityCode", value = "责任中心代码(后台校验唯一性)")
     @NotBlank(message = "责任中心代码不能为空")
     private String responsibilityCode;
 
     @NotBlank(message = "责任中心名称不能为空")
-    @ApiModelProperty(name = "responsibilityName",value = "责任中心名称")
+    @ApiModelProperty(name = "responsibilityName", value = "责任中心名称")
     private String responsibilityName;
 
     @NotNull(message = "是否汇总中心不能为空")
-    @ApiModelProperty(name = "isGatherCenter",value = "是否汇总中心")
+    @ApiModelProperty(name = "isGatherCenter", value = "是否汇总中心")
     private Integer isGatherCenter;
 
     @NotNull(message = "收益类型 1. 收费中心,2.成本(费用)中心")
-    @ApiModelProperty(name = "responsibilityType",value = "收益类型 1. 收费中心,2.成本(费用)中心")
+    @ApiModelProperty(name = "responsibilityType", value = "收益类型 1. 收费中心,2.成本(费用)中心")
     private Integer responsibilityType;
 
-    @ApiModelProperty(name = "shareId",value = "分摊级别的Id")
+    @ApiModelProperty(name = "shareId", value = "分摊级别的Id")
     private Long shareId;
 
-//    @NotNull(message = "分摊级别不能为空")
-    @ApiModelProperty(name = "shareLevel",value = "分摊级别(分摊接口中获取,暂时可写死)")
+    //    @NotNull(message = "分摊级别不能为空")
+    @ApiModelProperty(name = "shareLevel", value = "分摊级别(分摊接口中获取,暂时可写死)")
     private Integer shareLevel;
 
-//    @NotNull(message = "分摊级别名称不能为空")
-    @ApiModelProperty(name = "shareName",value = "分摊级别名称(分摊接口中获取,暂时可写死)")
+    //    @NotNull(message = "分摊级别名称不能为空")
+    @ApiModelProperty(name = "shareName", value = "分摊级别名称(分摊接口中获取,暂时可写死)")
     private String shareName;
 
-
-
-
+    @NotNull(message = "是否默认字段不为空")
+    @ApiModelProperty(value = "0.不是,1.是", name = "isDefault")
+    private Integer isDefault;
 }

+ 3 - 0
src/main/java/com/imed/costaccount/model/vo/CostResponsibilityVO.java

@@ -39,6 +39,9 @@ public class CostResponsibilityVO{
     @ApiModelProperty(name = "shareName",value = "分摊级别名称")
     private String shareName;
 
+    @ApiModelProperty(name = "deptStatus",value = "责任中心状态,0.门诊,1.住院")
+    private Integer deptStatus;
+
     private Long parentId;
 
     /**

+ 75 - 87
src/main/java/com/imed/costaccount/service/impl/ResponsibilityServiceImpl.java

@@ -24,6 +24,8 @@ import org.springframework.util.CollectionUtils;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.imed.costaccount.common.constants.Constant.LIMIT;
+
 @Slf4j
 @Service("responsibilityService")
 public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper, Responsibility> implements ResponsibilityService {
@@ -44,6 +46,20 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
     @Override
     public List<CostResponsibilityVO> getList(User user) {
         // 1. 获取所有的列表然后组装
+        List<CostResponsibilityVO> costResponsibilityVOS = this.getCostResponsibilityVO(user);
+        List<CostResponsibilityVO> parentCostResponsibility = costResponsibilityVOS.stream()
+                .filter(i -> i.getParentId() == 0).collect(Collectors.toList());
+        // 多层结构
+        List<CostResponsibilityVO> all = new ArrayList<>();
+        // todo 试试多线程实现方式
+        for (CostResponsibilityVO parent : parentCostResponsibility) {
+            List<CostResponsibilityVO> children = this.getResponsibilityChildren(parent, costResponsibilityVOS);
+            all.addAll(children);
+        }
+        return all;
+    }
+
+    private List<CostResponsibilityVO> getCostResponsibilityVO(User user) {
         List<Responsibility> list = this.list(
                 new LambdaQueryWrapper<Responsibility>()
                         .eq(Responsibility::getHospId, user.getHospId())
@@ -54,23 +70,31 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
         }
         // 拷贝组合
         List<CostResponsibilityVO> costResponsibilityVOS = BeanUtil.convertList(list, CostResponsibilityVO.class);
-        List<CostResponsibilityVO> parentCostResponsibility = costResponsibilityVOS.stream()
-                .filter(i -> i.getResponsibilityLevel().equals(1)).collect(Collectors.toList());
+        return costResponsibilityVOS;
+    }
 
-        parentCostResponsibility.forEach(i -> costResponsibilityVOS.forEach(j -> {
-            if (j.getParentId().equals(i.getId())) {
-                if (i.getResponsibilityLevel() == 1) {
-                    i.setShareLevel(null);
-                }
-                List<CostResponsibilityVO> child = i.getChild();
+    /**
+     * 获取子层级
+     *
+     * @param parent                当前的
+     * @param costResponsibilityVOS 所有的
+     * @return
+     */
+    private List<CostResponsibilityVO> getResponsibilityChildren(CostResponsibilityVO parent, List<CostResponsibilityVO> costResponsibilityVOS) {
+        List<CostResponsibilityVO> list = new LinkedList<>();
+        list.add(parent);
+        for (CostResponsibilityVO costResponsibilityVO : costResponsibilityVOS) {
+            if (parent.getId().equals(costResponsibilityVO.getParentId())) {
+                List<CostResponsibilityVO> child = parent.getChild();
                 if (CollUtil.isEmpty(child)) {
                     child = new ArrayList<>();
                 }
-                child.add(j);
-                i.setChild(child);
+                child.add(costResponsibilityVO);
+                parent.setChild(child);
+                this.getResponsibilityChildren(costResponsibilityVO, costResponsibilityVOS);
             }
-        }));
-        return parentCostResponsibility;
+        }
+        return list;
     }
 
 
@@ -88,13 +112,11 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
         if (Objects.isNull(id)) {
             id = 0L;
         }
+        // 校验责任中心代码code是否唯一
         checkCode(responsibilitySaveDTO.getResponsibilityCode(), user.getHospId());
 
         Responsibility center = BeanUtil.convertObj(responsibilitySaveDTO, Responsibility.class);
-        center.setCreateTime(System.currentTimeMillis()).setId(null).setParentId(id).setHospId(user.getHospId()).setResponsibilityLevel(2);
-        if (id == 0) {
-            center.setResponsibilityLevel(1);
-        }
+        center.setCreateTime(System.currentTimeMillis()).setId(null).setParentId(id).setHospId(user.getHospId());
 
         // 如果是汇总中心,那么不存在分摊级别
         Integer isGatherCenter = responsibilitySaveDTO.getIsGatherCenter();
@@ -105,15 +127,32 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
         // 父节点不允许为非汇总中心
         Responsibility byId = this.getById(id);
         if (Objects.nonNull(byId) && (byId.getIsGatherCenter() == 2)) {
-            throw new CostException(500, "非汇总中心不允许添加");
+            throw new CostException(500, "非汇总中心不允许添加下属层级");
         }
 
         if (responsibilitySaveDTO.getIsGatherCenter() == 1) {
             throw new CostException(500, "子层级暂不允许为非汇总中心");
         }
+
+        // 只允许存在一个汇总中心
+        if (responsibilitySaveDTO.getIsDefault() == 1) {
+            this.checkIsDefault(user.getHospId());
+        }
         this.save(center);
     }
 
+    private void checkIsDefault(Long hospId) {
+        Responsibility one = this.getOne(
+                new LambdaQueryWrapper<Responsibility>()
+                        .eq(Responsibility::getHospId, hospId)
+                        .eq(Responsibility::getIsDefault, 1)
+                        .last(LIMIT)
+        );
+        if (Objects.nonNull(one)) {
+            throw new CostException("责任中心只能拥有一个默认责任中心");
+        }
+    }
+
     private void checkCode(String code, Long hospId) {
         // 校验责任代码唯一性
         Responsibility one = this.getOne(
@@ -151,55 +190,14 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
         // 如果不存在子节点 ,修改它本身
         if (list.isEmpty()) {
             this.updateCurResp(center, responsibilityEditDTO, user);
-            return ;
+            return;
         }
 
         this.updateParent(responsibilityEditDTO, center, user.getHospId());
-//        // 不管是哪个绑定到父级目录下
-////        if (responsibilityEditDTO.getParentId() == 0) {
-////
-////        }
-////
-////
-////        // 如果修改父节点节点(只有两层的情况)
-//        if (center.getResponsibilityLevel() == 1) {
-//            this.updateParent(responsibilityEditDTO, center, user.getHospId());
-//            return;
-//        }
-
-//        this.updateCurrent(responsibilityEditDTO, center, user.getHospId());
     }
 
-    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
-    public void updateAllResp(Responsibility center, ResponsibilityEditDTO dto, User user, List<Responsibility> list) {
-        // 删除原有的父节点数据
-        Long id = dto.getId();
-        this.removeById(id);
-        this.checkCode(dto.getResponsibilityCode(), user.getHospId());
-        // 新增父节点数据
-        Responsibility newResponsibility = BeanUtil.convertObj(dto, Responsibility.class);
-        newResponsibility.setId(null).setHospId(user.getHospId()).setCreateTime(new Date().getTime()).setResponsibilityLevel(2);
-        // 相关校验
-        if (dto.getParentId() == 0) {
-            newResponsibility.setResponsibilityLevel(1);
-        }
-
-        // 如果是汇总中心,那么不存在分摊级别
-        Integer isGatherCenter = newResponsibility.getIsGatherCenter();
-        if (isGatherCenter == 1) {
-            newResponsibility.setShareId(null);
-            newResponsibility.setShareLevel(0);
-            newResponsibility.setShareName("");
-        }
-
-        if (Objects.nonNull(center) && (center.getIsGatherCenter() == 2)) {
-            throw new CostException(500, "非汇总中心不允许添加");
-        }
-
 
-    }
-
-    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
     public void updateCurResp(Responsibility center, ResponsibilityEditDTO dto, User user) {
         // 删除
         Long id = dto.getId();
@@ -211,21 +209,23 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
         newResponsibility.setId(null)
                 .setHospId(user.getHospId())
                 .setCreateTime(System.currentTimeMillis())
-                .setParentId(dto.getParentId())
-                .setResponsibilityLevel(2);
+                .setParentId(dto.getParentId());
         // 如果变成了汇总中心,那么变成第一层
         if (dto.getIsGatherCenter() == 1) {
             newResponsibility.setShareId(null)
                     .setShareLevel(0)
                     .setShareName(null)
-                    .setParentId(0L)
-                    .setResponsibilityLevel(1);
+                    .setParentId(0L);
         }
         if (dto.getParentId() == 0) {
-            newResponsibility.setResponsibilityLevel(1);
             // 永远为2的情况
             newResponsibility.setIsGatherCenter(2);
         }
+        // 校验默认
+        if (dto.getIsDefault() == 1) {
+            this.checkIsDefault(user.getHospId());
+        }
+
         this.save(newResponsibility);
     }
 
@@ -252,11 +252,7 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
         this.checkCode(dto.getResponsibilityCode(), hospId);
         // 新增父节点数据
         Responsibility newResponsibility = BeanUtil.convertObj(dto, Responsibility.class);
-        newResponsibility.setId(null).setHospId(responsibility.getHospId()).setCreateTime(new Date().getTime()).setResponsibilityLevel(2);
-        // 相关校验
-        if (dto.getParentId() == 0) {
-            newResponsibility.setResponsibilityLevel(1);
-        }
+        newResponsibility.setId(null).setHospId(responsibility.getHospId()).setCreateTime(new Date().getTime());
 
         // 如果是汇总中心,那么不存在分摊级别
         Integer isGatherCenter = newResponsibility.getIsGatherCenter();
@@ -270,6 +266,9 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
         if (Objects.nonNull(byId) && (byId.getIsGatherCenter() == 2)) {
             throw new CostException(500, "非汇总中心不允许添加");
         }
+        if (dto.getIsDefault() == 1) {
+            this.checkIsDefault(hospId);
+        }
 
         this.save(newResponsibility);
 
@@ -301,15 +300,13 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
         newResponsibility.setId(null)
                 .setHospId(responsibility.getHospId())
                 .setCreateTime(System.currentTimeMillis())
-                .setParentId(dto.getParentId())
-                .setResponsibilityLevel(2);
+                .setParentId(dto.getParentId());
         // 暂时先这样处理
         if (dto.getIsGatherCenter() == 1) {
             newResponsibility.setShareId(null)
                     .setShareLevel(0)
                     .setShareName(null)
-                    .setParentId(0L)
-                    .setResponsibilityLevel(1);
+                    .setParentId(0L);
         }
         this.save(newResponsibility);
     }
@@ -359,7 +356,7 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
                 new LambdaQueryWrapper<Responsibility>()
                         .eq(Responsibility::getHospId, user.getHospId())
                         .eq(Responsibility::getParentId, 0)
-                .orderByDesc(Responsibility::getCreateTime)
+                        .orderByDesc(Responsibility::getCreateTime)
         );
         if (CollUtil.isEmpty(parentList)) {
             return Collections.emptyList();
@@ -402,7 +399,7 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
     public List<CommonVO> getParentList(User user) {
         List<Responsibility> list = this.list(
                 new LambdaQueryWrapper<Responsibility>().select(Responsibility::getId, Responsibility::getResponsibilityName)
-                        .eq(Responsibility::getResponsibilityLevel, 1)
+                        .eq(Responsibility::getParentId, 0)
                         .eq(Responsibility::getHospId, user.getHospId())
         );
         return list.stream().map(i -> {
@@ -448,16 +445,7 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
     @Override
     public List<CostResponsibilityVO> responsibilityList(User user) {
         // 1. 获取所有的列表然后组装
-        List<Responsibility> list = this.list(
-                new LambdaQueryWrapper<Responsibility>()
-                        .eq(Responsibility::getHospId, user.getHospId())
-                        .orderByDesc(Responsibility::getCreateTime)
-        );
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 拷贝组合
-        List<CostResponsibilityVO> costResponsibilityVOS = BeanUtil.convertList(list, CostResponsibilityVO.class);
+        List<CostResponsibilityVO> costResponsibilityVOS = this.getCostResponsibilityVO(user);
         List<CostResponsibilityVO> parentCostResponsibility = costResponsibilityVOS.stream()
                 .filter(i -> i.getResponsibilityLevel().equals(1)).collect(Collectors.toList());
 
@@ -470,7 +458,7 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
                 if (CollUtil.isEmpty(child)) {
                     child = new ArrayList<>();
                 }
-                j.setResponsibilityName(i.getResponsibilityName()+"/"+j.getResponsibilityName());
+                j.setResponsibilityName(i.getResponsibilityName() + "/" + j.getResponsibilityName());
                 child.add(j);
                 i.setChild(child);
             }

+ 3 - 0
src/main/java/com/imed/costaccount/test.json

@@ -0,0 +1,3 @@
+{
+  ""
+}

+ 7 - 7
src/main/java/com/imed/costaccount/web/ResponsibilityController.java

@@ -22,7 +22,7 @@ import java.util.List;
 @Slf4j
 @RestController
 @RequestMapping("/costAccount/responsibility")
-public class ResponsibilityController {
+public class ResponsibilityController extends AbstractController{
 
     private final ResponsibilityService responsibilityService;
 
@@ -33,7 +33,7 @@ public class ResponsibilityController {
     @ApiOperation("责任中心列表")
     @GetMapping("/list")
     public Result list() {
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        User user = getUser();
         List<CostResponsibilityVO> list = responsibilityService.getList(user);
         PageUtils pageUtils = new PageUtils(list,0,0,0);
         return Result.ok(pageUtils);
@@ -42,7 +42,7 @@ public class ResponsibilityController {
     @ApiOperation("收入归集设置需要的责任中心列表")
     @GetMapping("/responsibilityList")
     public Result responsibilityList() {
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        User user = getUser();
         List<CostResponsibilityVO> list = responsibilityService.responsibilityList(user);
         PageUtils pageUtils = new PageUtils(list,0,0,0);
         return Result.ok(pageUtils);
@@ -51,7 +51,7 @@ public class ResponsibilityController {
     @GetMapping("/getLevelTwo")
     @ApiOperation("获取可不是汇总中心列表")
     public Result getLevelTwo(){
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        User user = getUser();
         Long hospId = user.getHospId();
         List<CostResponsibilityLevelVO> costResponsibilityLevelVOList= responsibilityService.getLevelTwo(hospId);
         return Result.ok(costResponsibilityLevelVOList);
@@ -62,7 +62,7 @@ public class ResponsibilityController {
     @ApiOperation("新增责任中心")
     @PostMapping("/save")
     public Result save(@RequestBody @Valid ResponsibilitySaveDTO responsibilitySaveDTO) {
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        User user = getUser();
         responsibilityService.addResponsibilityCenter(responsibilitySaveDTO, user);
         return Result.ok();
     }
@@ -70,7 +70,7 @@ public class ResponsibilityController {
     @ApiOperation("编辑责任中心")
     @PostMapping("/edit")
     public Result edit(@RequestBody @Valid ResponsibilityEditDTO responsibilityEditDTO) {
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        User user = getUser();
         responsibilityService.editResponsibility(responsibilityEditDTO, user);
         return Result.ok();
     }
@@ -86,7 +86,7 @@ public class ResponsibilityController {
     @ApiOperation("所有第一层父节点")
     @GetMapping("/getParentList")
     public Result getParentList() {
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        User user = getUser();
         List<CommonVO> list = responsibilityService.getParentList(user);
         return Result.ok(list);
     }

+ 1 - 1
src/main/resources/mapper/ResponsibilityMapper.xml

@@ -8,12 +8,12 @@
         <result property="id" column="id"/>
         <result property="responsibilityName" column="responsibility_name"/>
         <result property="responsibilityCode" column="responsibility_code"/>
-        <result property="responsibilityLevel" column="responsibility_level"/>
         <result property="parentId" column="parent_id"/>
         <result property="hospId" column="hosp_id"/>
         <result property="isGatherCenter" column="is_gather_center"/>
         <result property="responsibilityType" column="responsibility_type"/>
         <result property="shareId" column="share_id"/>
+        <result property="isDefault" column="is_default" />
         <result property="shareLevel" column="share_level"/>
         <result property="shareName" column="share_name"/>
         <result property="createTime" column="create_time"/>