Sfoglia il codice sorgente

07 27 03 add 责任中心相关模块

hr 4 anni fa
parent
commit
d163ee0392

+ 26 - 0
src/main/java/com/imed/costaccount/mapper/ResponsibilityDepartmentMapper.java

@@ -0,0 +1,26 @@
+package com.imed.costaccount.mapper;
+
+import com.imed.costaccount.model.ResponsibilityDepartment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.imed.costaccount.model.vo.DepartVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 责任中心科室对照表
+ * 
+ * @author huangrui
+ * @date 2021-07-27 14:53:53
+ */
+@Mapper
+public interface ResponsibilityDepartmentMapper extends BaseMapper<ResponsibilityDepartment> {
+
+    /**
+     * 通过responsibilityId 获取部门和部门名称
+     * @param responsibilityId
+     * @return
+     */
+    List<DepartVO> getDepartByCenterId(@Param("responsibilityId") Integer responsibilityId);
+}

+ 57 - 0
src/main/java/com/imed/costaccount/model/ResponsibilityDepartment.java

@@ -0,0 +1,57 @@
+package com.imed.costaccount.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * 责任中心科室对照表
+ * 
+ * @author huangrui
+ * @email 
+ * @date 2021-07-27 14:53:53
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("cost_responsibility_department")
+public class ResponsibilityDepartment implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 责任中心Id
+	 */
+	private Integer responsibilityId;
+	/**
+	 * 科室名称Id
+	 */
+	private Integer departmentId;
+	/**
+	 * 医院Id
+	 */
+	private Integer hospId;
+	/**
+	 * 创建时间13位时间戳
+	 */
+	private Long createTime;
+	/**
+	 * 删除时间,如果存在表示已删除13位时间戳
+	 */
+	@TableLogic(value = "0",delval = "UNIX_TIMESTAMP(NOW()) * 1000")
+	private Long deleteTime;
+
+}

+ 25 - 0
src/main/java/com/imed/costaccount/model/vo/CenterDepartmentVO.java

@@ -0,0 +1,25 @@
+package com.imed.costaccount.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("责任中心对照视图对象")
+public class CenterDepartmentVO {
+
+//    private Integer id;
+
+    private Integer responsibilityId;
+
+    private String responsibilityName;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private List<DepartVO> departments;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private List<CenterDepartmentVO> child;
+}

+ 11 - 0
src/main/java/com/imed/costaccount/model/vo/DepartVO.java

@@ -0,0 +1,11 @@
+package com.imed.costaccount.model.vo;
+
+import lombok.Data;
+
+@Data
+public class DepartVO {
+
+    private Integer departmentId;
+
+    private String departmentName;
+}

+ 24 - 0
src/main/java/com/imed/costaccount/model/vo/test.json

@@ -0,0 +1,24 @@
+[
+  {
+    "id": 1,
+    "responsibilityId": 2,
+    "responsibilityName": "23423",
+    "child": [
+      {
+        "id": 1,
+        "responsibilityId": 3,
+        "responsibilityName": "234223",
+        "departments": [
+          {
+            "departmentId": 1,
+            "departmentName": "234234"
+          },
+          {
+            "departmentId": 1,
+            "departmentName": "234234"
+          }
+        ]
+      }
+    ]
+  }
+]

+ 28 - 0
src/main/java/com/imed/costaccount/service/ResponsibilityDepartmentService.java

@@ -0,0 +1,28 @@
+package com.imed.costaccount.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.vo.CenterDepartmentVO;
+import com.imed.costaccount.utils.PageUtils;
+import com.imed.costaccount.model.ResponsibilityDepartment;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 责任中心科室对照表
+ *
+ * @author huangrui
+ * @email 
+ * @date 2021-07-27 14:53:53
+ */
+public interface ResponsibilityDepartmentService extends IService<ResponsibilityDepartment> {
+
+    /**
+     * 获取责任中心对照列表
+     * @param user
+     * @return
+     */
+    List<CenterDepartmentVO> getCenterDepart(User user);
+}
+

+ 8 - 0
src/main/java/com/imed/costaccount/service/ResponsibilityService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.imed.costaccount.model.User;
 import com.imed.costaccount.model.dto.ResponsibilityEditDTO;
 import com.imed.costaccount.model.dto.ResponsibilitySaveDTO;
+import com.imed.costaccount.model.vo.CenterDepartmentVO;
 import com.imed.costaccount.model.vo.CostResponsibilityVO;
 import com.imed.costaccount.model.Responsibility;
 
@@ -44,5 +45,12 @@ public interface ResponsibilityService extends IService<Responsibility> {
      * @param id
      */
     void deleteCenter(Integer id);
+
+    /**
+     * 获取部门树列表
+     * @param user
+     * @return
+     */
+    List<CenterDepartmentVO> getParentSon(User user);
 }
 

+ 46 - 0
src/main/java/com/imed/costaccount/service/impl/ResponsibilityDepartmentServiceImpl.java

@@ -0,0 +1,46 @@
+package com.imed.costaccount.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.imed.costaccount.mapper.ResponsibilityDepartmentMapper;
+import com.imed.costaccount.model.Responsibility;
+import com.imed.costaccount.model.ResponsibilityDepartment;
+import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.vo.CenterDepartmentVO;
+import com.imed.costaccount.model.vo.DepartVO;
+import com.imed.costaccount.service.ResponsibilityDepartmentService;
+import com.imed.costaccount.service.ResponsibilityService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@Service("responsibilityDepartmentService")
+public class ResponsibilityDepartmentServiceImpl
+        extends ServiceImpl<ResponsibilityDepartmentMapper, ResponsibilityDepartment> implements ResponsibilityDepartmentService {
+
+    private ResponsibilityService responsibilityService;
+
+    public ResponsibilityDepartmentServiceImpl(ResponsibilityService responsibilityService) {
+        this.responsibilityService = responsibilityService;
+    }
+
+    /**
+     * 获取责任中心对照列表
+     *
+     * @param user 当前登录用户
+     * @return
+     */
+    @Override
+    public List<CenterDepartmentVO> getCenterDepart(User user) {
+        List<CenterDepartmentVO> list = responsibilityService.getParentSon(user);
+        for (CenterDepartmentVO centerDepartmentVO : list) {
+            for (CenterDepartmentVO departmentVO : centerDepartmentVO.getChild()) {
+                List<DepartVO> departVOS = baseMapper.getDepartByCenterId(departmentVO.getResponsibilityId());
+                departmentVO.setDepartments(departVOS);
+            }
+        }
+        return list;
+    }
+}

+ 42 - 0
src/main/java/com/imed/costaccount/service/impl/ResponsibilityServiceImpl.java

@@ -8,6 +8,7 @@ import com.imed.costaccount.enums.ErrorCodeEnum;
 import com.imed.costaccount.model.User;
 import com.imed.costaccount.model.dto.ResponsibilityEditDTO;
 import com.imed.costaccount.model.dto.ResponsibilitySaveDTO;
+import com.imed.costaccount.model.vo.CenterDepartmentVO;
 import com.imed.costaccount.model.vo.CostResponsibilityVO;
 import com.imed.costaccount.utils.BeanUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -21,6 +22,7 @@ import com.imed.costaccount.service.ResponsibilityService;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -180,4 +182,44 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
         this.remove(new LambdaQueryWrapper<Responsibility>().eq(Responsibility::getParentId, id));
     }
 
+    /**
+     * 获取部门树列表
+     *
+     * @param user
+     * @return
+     */
+    @Override
+    public List<CenterDepartmentVO> getParentSon(User user) {
+        // 1. 获取所有的列表然后组装
+        List<Responsibility> parentList = this.list(
+                new LambdaQueryWrapper<Responsibility>()
+                        .eq(Responsibility::getHospId, user.getHospId())
+                        .eq(Responsibility::getParentId, 0)
+        );
+        if (CollUtil.isEmpty(parentList)) {
+            throw new CostException(ErrorCodeEnum.DATA_NOT_EXIST);
+        }
+        List<Responsibility> sonList = this.list(
+                new LambdaQueryWrapper<Responsibility>()
+                        .eq(Responsibility::getHospId, user.getHospId())
+                        .ne(Responsibility::getParentId, 0)
+        );
+        List<CenterDepartmentVO> list = new ArrayList<>();
+        // 拷贝组合
+        for (Responsibility parent : parentList) {
+            CenterDepartmentVO centerDepartmentVO = new CenterDepartmentVO();
+            centerDepartmentVO.setResponsibilityId(parent.getId());
+            centerDepartmentVO.setResponsibilityName(parent.getResponsibilityName());
+            for (Responsibility son : sonList) {
+                CenterDepartmentVO sonVO = new CenterDepartmentVO();
+                if (parent.getId().equals(son.getParentId())) {
+                    sonVO.setResponsibilityId(son.getId());
+                    sonVO.setResponsibilityName(son.getResponsibilityName());
+                    centerDepartmentVO.getChild().add(sonVO);
+                }
+            }
+            list.add(centerDepartmentVO);
+        }
+        return list;
+    }
 }

+ 48 - 0
src/main/java/com/imed/costaccount/web/ResponsibilityDepartmentController.java

@@ -0,0 +1,48 @@
+package com.imed.costaccount.web;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.imed.costaccount.common.util.Result;
+import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.vo.CenterDepartmentVO;
+import org.apache.shiro.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.imed.costaccount.model.ResponsibilityDepartment;
+import com.imed.costaccount.service.ResponsibilityDepartmentService;
+import com.imed.costaccount.utils.PageUtils;
+
+
+/**
+ * 责任中心科室对照表
+ *
+ * @author huangrui
+ * @date 2021-07-27 14:53:53
+ */
+@RestController
+@RequestMapping("/costAccount/centerDepartment")
+public class ResponsibilityDepartmentController {
+    private ResponsibilityDepartmentService responsibilityDepartmentService;
+
+    public ResponsibilityDepartmentController(ResponsibilityDepartmentService responsibilityDepartmentService) {
+        this.responsibilityDepartmentService = responsibilityDepartmentService;
+    }
+
+    /**
+     * 分页查询列表
+     */
+    @RequestMapping("/list")
+    public Result list(){
+        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        List<CenterDepartmentVO> list = responsibilityDepartmentService.getCenterDepart(user);
+        return Result.ok(list);
+    }
+
+
+}

+ 24 - 0
src/main/resources/mapper/ResponsibilityDepartmentMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.imed.costaccount.mapper.ResponsibilityDepartmentMapper">
+
+	<!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.imed.costaccount.model.ResponsibilityDepartment" id="responsibilityDepartmentMap">
+        <result property="id" column="id"/>
+        <result property="responsibilityId" column="responsibility_id"/>
+        <result property="departmentId" column="department_id"/>
+        <result property="hospId" column="hosp_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="deleteTime" column="delete_time"/>
+    </resultMap>
+
+
+    <select id="getDepartByCenterId" resultType="com.imed.costaccount.model.vo.DepartVO">
+        select sd.id as departmentId,sd.department_name as departmentName
+            from cost_responsibility_department crd left join  sys_department sd on sd.id = crd.department_id
+        where crd.responsibility_id = #{responsibilityId}
+    </select>
+
+
+</mapper>