Browse Source

责任成本数据的添加操作

ljx 4 years ago
parent
commit
3536adc367
19 changed files with 781 additions and 9 deletions
  1. 5 1
      pom.xml
  2. 144 0
      src/main/java/com/imed/costaccount/common/util/JsonUtil.java
  3. 16 0
      src/main/java/com/imed/costaccount/mapper/CostAccountShareMapper.java
  4. 2 4
      src/main/java/com/imed/costaccount/model/Accounting.java
  5. 84 0
      src/main/java/com/imed/costaccount/model/CostAccountShare.java
  6. 43 0
      src/main/java/com/imed/costaccount/model/dto/CostAccountShareEditDto.java
  7. 42 0
      src/main/java/com/imed/costaccount/model/dto/CostAccountShareSaveDto.java
  8. 45 0
      src/main/java/com/imed/costaccount/model/vo/CostAccountShareVO.java
  9. 32 0
      src/main/java/com/imed/costaccount/model/vo/CostResponsibilityLevelVO.java
  10. 38 0
      src/main/java/com/imed/costaccount/service/CostAccountShareService.java
  11. 18 0
      src/main/java/com/imed/costaccount/service/CostShareParamService.java
  12. 8 0
      src/main/java/com/imed/costaccount/service/ResponsibilityService.java
  13. 116 0
      src/main/java/com/imed/costaccount/service/impl/CostAccountShareServiceImpl.java
  14. 1 1
      src/main/java/com/imed/costaccount/service/impl/CostShareLevelServiceImpl.java
  15. 31 0
      src/main/java/com/imed/costaccount/service/impl/CostShareParamServiceImpl.java
  16. 32 3
      src/main/java/com/imed/costaccount/service/impl/ResponsibilityServiceImpl.java
  17. 88 0
      src/main/java/com/imed/costaccount/web/CostAccountShareController.java
  18. 12 0
      src/main/java/com/imed/costaccount/web/ResponsibilityController.java
  19. 24 0
      src/main/resources/mapper/CostAccountShareMapper.xml

+ 5 - 1
pom.xml

@@ -106,7 +106,11 @@
             <version>5.1.17</version>
         </dependency>
 
-
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.7</version>
+        </dependency>
         <!--数据连接池-->
         <dependency>
             <groupId>com.alibaba</groupId>

+ 144 - 0
src/main/java/com/imed/costaccount/common/util/JsonUtil.java

@@ -0,0 +1,144 @@
+package com.imed.costaccount.common.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializeConfig;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Auther: mukehua
+ * @Date: 2018/10/18 10:20
+ * @Description:
+ */
+public final class JsonUtil {
+
+    private static final SerializeConfig config;
+
+    static {
+        config = new SerializeConfig();
+//        config.put(java.util.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
+//        config.put(java.sql.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
+    }
+
+    private static final SerializerFeature[] features = {SerializerFeature.WriteMapNullValue, // 输出空置字段
+            SerializerFeature.WriteNullListAsEmpty, // list字段如果为null,输出为[],而不是null
+            SerializerFeature.WriteNullNumberAsZero, // 数值字段如果为null,输出为0,而不是null
+            SerializerFeature.WriteNullBooleanAsFalse, // Boolean字段如果为null,输出为false,而不是null
+            SerializerFeature.WriteNullStringAsEmpty // 字符类型字段如果为null,输出为"",而不是null
+    };
+
+    /**
+     * 将对象转为JSON字符串
+     * @param object
+     * @return
+     */
+    public static String toJSONString(Object object) {
+        return JSON.toJSONString(object, config, features);
+    }
+
+    public static String toJSONStringNoFeatures(Object object) {
+        return JSON.toJSONString(object, config);
+    }
+
+    public static Object toBean(String text) {
+        return JSON.parse(text);
+    }
+
+    /**
+     * 将字符串转成指定类型bean
+     * @param text
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public static <T> T toBean(String text, Class<T> clazz) {
+        return JSON.parseObject(text, clazz);
+    }
+
+    // 转换为数组
+    public static Object[] toArray(String text) {
+        return toArray(text, null);
+    }
+
+    /**
+     * 将字符串转成指定类型数组
+     * @param text
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public static <T> Object[] toArray(String text, Class<T> clazz) {
+        return JSON.parseArray(text, clazz).toArray();
+    }
+
+    /**
+     * 将字符串转成指定类型集合
+     * @param text
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public static <T> List<T> toList(String text, Class<T> clazz) {
+        return JSON.parseArray(text, clazz);
+    }
+
+//    /**
+//     * 将javabean转化为序列化的json字符串
+//     * @param keyvalue
+//     * @return
+//     */
+    /*public static Object beanToJson(KeyValue keyvalue) {
+        String textJson = JSON.toJSONString(keyvalue);
+        Object objectJson  = JSON.parse(textJson);
+        return objectJson;
+    }*/
+
+    /**
+     * 将string转化为序列化的json字符串
+     * @param text
+     * @return
+     */
+    public static Object textToJson(String text) {
+        Object objectJson  = JSON.parse(text);
+        return objectJson;
+    }
+
+    /**
+     * json字符串转化为map
+     * @param s
+     * @return
+     */
+    public static <K, V> Map<K, V>  stringToCollect(String s) {
+        Map<K, V> m = (Map<K, V>) JSONObject.parseObject(s);
+        return m;
+    }
+
+    /**
+     * 转换JSON字符串为对象
+     * @param jsonData
+     * @param clazz
+     * @return
+     */
+    public static Object convertJsonToObject(String jsonData, Class<?> clazz) {
+        return JSONObject.parseObject(jsonData, clazz);
+    }
+
+    public static Object convertJSONToObject(String content, Class<?> clazz) {
+        return JSONObject.parseObject(content, clazz);
+    }
+
+    /**
+     * 将map转化为string
+     * @param m
+     * @return
+     */
+    public static <K, V> String collectToString(Map<K, V> m) {
+        String s = JSONObject.toJSONString(m);
+        return s;
+    }
+}
+
+

+ 16 - 0
src/main/java/com/imed/costaccount/mapper/CostAccountShareMapper.java

@@ -0,0 +1,16 @@
+package com.imed.costaccount.mapper;
+
+import com.imed.costaccount.model.CostAccountShare;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 责任中心成本对照表
+ * 
+ * @author KCYG
+ * @date 2021-07-28 18:34:52
+ */
+@Mapper
+public interface CostAccountShareMapper extends BaseMapper<CostAccountShare> {
+	
+}

+ 2 - 4
src/main/java/com/imed/costaccount/model/Accounting.java

@@ -3,15 +3,13 @@ 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;
 
+import java.io.Serializable;
+
 /**
  * 会计科目管理表
  * 

+ 84 - 0
src/main/java/com/imed/costaccount/model/CostAccountShare.java

@@ -0,0 +1,84 @@
+package com.imed.costaccount.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 责任中心成本对照表
+ * 
+ * @author KCYG
+ * @email KCYG@xinxicom
+ * @date 2021-07-28 18:34:52
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("cost_account_share")
+public class CostAccountShare implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 责任中心Id
+	 */
+	private Integer responsibilityId;
+	/**
+	 * 责任中心分摊级别
+	 */
+	private Integer shareLevel;
+	/**
+	 * 责任中心代码
+	 */
+	private String responsibilityCode;
+	/**
+	 * 责任中心名称
+	 */
+	private String responsibilityName;
+	/**
+	 * 医院Id
+	 */
+	private Integer hospId;
+	/**
+	 * 成本项目Id
+	 *
+	 */
+	private Integer accountingId;
+	/**
+	 * 成本项目名称
+	 */
+	private String accountingName;
+	/**
+	 * 成本项目代码
+	 */
+	private String accountingCode;
+	/**
+	 * 分摊参数集合
+	 */
+	private String paramList;
+	/**
+	 * 备注
+	 */
+	private String costNode;
+	/**
+	 * 创建时间13位时间戳
+	 */
+	private Long createTime;
+	/**
+	 * 删除时间,如果存在表示已删除13位时间戳
+	 */
+	@TableLogic(value = "0",delval = "UNIX_TIMESTAMP(NOW()) * 1000")
+	private Long deleteTime;
+
+}

+ 43 - 0
src/main/java/com/imed/costaccount/model/dto/CostAccountShareEditDto.java

@@ -0,0 +1,43 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author 李加喜
+ * @Package com.imed.costaccount.model.dto
+ * @date 2021-07-28 19:44
+ */
+@Data
+public class CostAccountShareEditDto {
+
+    // 责任中心成本对照表的id
+    private Integer id;
+
+    @ApiModelProperty(name = "responsibilityId",value = "责任中心的Id")
+    @NotNull(message = "责任中心Id不能为空")
+    private Integer responsibilityId;
+
+    @ApiModelProperty(name = "shareLevel",value = "责任中心分摊层级")
+    private Integer shareLevel;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心代码")
+    private String responsibilityCode;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心名称")
+    private String responsibilityName;
+
+    @ApiModelProperty(name = "accountingId",value = "成本项目的Id")
+    private Integer accountingId;
+
+    @ApiModelProperty(name = "accountingName",value = "成本项目名称")
+    private String accountingName;
+
+    @ApiModelProperty(name = "accountingCode",value = "成本项目代码")
+    private String accountingCode;
+
+    @ApiModelProperty(name = "costNode",value = "备注")
+    private String costNode;
+}

+ 42 - 0
src/main/java/com/imed/costaccount/model/dto/CostAccountShareSaveDto.java

@@ -0,0 +1,42 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author 李加喜
+ * @Package com.imed.costaccount.model.dto
+ * @date 2021-07-28 19:01
+ */
+@Data
+@ApiModel
+public class CostAccountShareSaveDto {
+
+    @ApiModelProperty(name = "responsibilityId",value = "责任中心的Id")
+    @NotNull(message = "责任中心Id不能为空")
+    private Integer responsibilityId;
+
+    @ApiModelProperty(name = "shareLevel",value = "责任中心分摊层级")
+    private Integer shareLevel;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心代码")
+    private String responsibilityCode;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心名称")
+    private String responsibilityName;
+
+    @ApiModelProperty(name = "accountingId",value = "成本项目的Id")
+    private Integer accountingId;
+
+    @ApiModelProperty(name = "accountingName",value = "成本项目名称")
+    private String accountingName;
+
+    @ApiModelProperty(name = "accountingCode",value = "成本项目代码")
+    private String accountingCode;
+
+    @ApiModelProperty(name = "costNode",value = "备注")
+    private String costNode;
+}

+ 45 - 0
src/main/java/com/imed/costaccount/model/vo/CostAccountShareVO.java

@@ -0,0 +1,45 @@
+package com.imed.costaccount.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author 李加喜
+ * @Package com.imed.costaccount.model.vo
+ * @date 2021-07-28 18:51
+ */
+@Data
+@ApiModel
+public class CostAccountShareVO {
+
+    @ApiModelProperty(name = "id",value = "责任中心成本对照相关Id")
+    private Integer id;
+
+    @ApiModelProperty(name = "responsibilityId",value = "责任中心的Id")
+    private Integer responsibilityId;
+
+    @ApiModelProperty(name = "shareLevel",value = "责任中心分摊层级")
+    private Integer shareLevel;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心代码")
+    private String responsibilityCode;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心名称")
+    private String responsibilityName;
+
+    @ApiModelProperty(name = "accountingId",value = "成本项目的Id")
+    private Integer accountingId;
+
+    @ApiModelProperty(name = "accountingName",value = "成本项目名称")
+    private String accountingName;
+
+    @ApiModelProperty(name = "accountingCode",value = "成本项目代码")
+    private String accountingCode;
+
+    @ApiModelProperty(name = "shareparamId",value = "关联的分摊参数的Id集合")
+    private String shareparamId;
+
+    @ApiModelProperty(name = "costNode",value = "备注")
+    private String costNode;
+}

+ 32 - 0
src/main/java/com/imed/costaccount/model/vo/CostResponsibilityLevelVO.java

@@ -0,0 +1,32 @@
+package com.imed.costaccount.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author 李加喜
+ * @Package com.imed.costaccount.model.vo
+ * @date 2021-07-28 20:58
+ */
+@Data
+@ApiModel
+public class CostResponsibilityLevelVO {
+    @ApiModelProperty(name = "id",value = "主键")
+    private Integer id;
+
+    @ApiModelProperty(name = "responsibilityName",value = "名称")
+    private String responsibilityName;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心代码")
+    private String responsibilityCode;
+
+    @ApiModelProperty(name = "shareLevel",value = "分摊级别 如果是顶层默认为0")
+    private Integer shareLevel;
+
+    @ApiModelProperty(name = "shareName",value = "分摊级别名称")
+    private String shareName;
+
+    // 设置设置当前责任中心的分摊层级的计算方式
+    private Integer calcType;
+}

+ 38 - 0
src/main/java/com/imed/costaccount/service/CostAccountShareService.java

@@ -0,0 +1,38 @@
+package com.imed.costaccount.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.imed.costaccount.common.util.PageUtils;
+import com.imed.costaccount.model.CostAccountShare;
+import com.imed.costaccount.model.dto.CostAccountShareEditDto;
+import com.imed.costaccount.model.dto.CostAccountShareSaveDto;
+
+/**
+ * 责任中心成本对照表
+ *
+ * @author KCYG
+ * @email KCYG@xinxicom
+ * @date 2021-07-28 18:34:52
+ */
+public interface CostAccountShareService extends IService<CostAccountShare> {
+    /**
+     * 分页查询责任中心成本对照相关数据
+     * @param page
+     * @param pageSize
+     * @param name
+     * @return
+     */
+    PageUtils queryList(Integer page, Integer pageSize, String name,Integer hospId);
+
+    /**
+     * 保存责任中心成本对照表
+     * @param costAccountShareSaveDto
+     */
+    void addCostAccountShare(CostAccountShareSaveDto costAccountShareSaveDto);
+
+    /**
+     * 修改成本中心责任对照表
+     * @param costAccountShareEditDto
+     */
+    void updateByCostAccountShare(CostAccountShareEditDto costAccountShareEditDto);
+}
+

+ 18 - 0
src/main/java/com/imed/costaccount/service/CostShareParamService.java

@@ -6,6 +6,9 @@ import com.imed.costaccount.model.CostShareParam;
 import com.imed.costaccount.model.dto.CostShareParamAccountDto;
 import com.imed.costaccount.model.dto.CostShareParamEditDto;
 import com.imed.costaccount.model.dto.CostShareParamSaveDto;
+import com.imed.costaccount.model.vo.CostShareParamVO;
+
+import java.util.List;
 
 /**
  * 分摊参数对照表
@@ -42,5 +45,20 @@ public interface CostShareParamService extends IService<CostShareParam> {
      * @return
      */
     CostShareParam updateCostShareParamByAccountId(CostShareParamAccountDto costShareParamAccountDto);
+
+    /**
+     * 获取所有分摊参数的集合信息
+     * @param hospId
+     * @return
+     */
+    List<CostShareParamVO> getAll(Integer hospId);
+
+    /**
+     * 根据医院的Id分摊参数的ID获取对应的分摊参数的数据
+     * @param id
+     * @param hospId
+     * @return
+     */
+    CostShareParamVO getByHospIdAndAPramId(Integer id, Integer hospId);
 }
 

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

@@ -6,6 +6,7 @@ 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.CommonVO;
+import com.imed.costaccount.model.vo.CostResponsibilityLevelVO;
 import com.imed.costaccount.model.vo.CostResponsibilityVO;
 import com.imed.costaccount.model.Responsibility;
 
@@ -55,5 +56,12 @@ public interface ResponsibilityService extends IService<Responsibility> {
     List<CenterDepartmentVO> getParentSon(User user);
 
     List<CommonVO> getParentList(User user);
+
+    /**
+     * 获取第二级别的责任中心的代码
+     * @param hospId
+     * @return
+     */
+    List<CostResponsibilityLevelVO> getLevelTwo(Integer hospId);
 }
 

+ 116 - 0
src/main/java/com/imed/costaccount/service/impl/CostAccountShareServiceImpl.java

@@ -0,0 +1,116 @@
+package com.imed.costaccount.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.imed.costaccount.common.exception.CostException;
+import com.imed.costaccount.common.util.PageUtils;
+import com.imed.costaccount.mapper.CostAccountShareMapper;
+import com.imed.costaccount.model.CostAccountShare;
+import com.imed.costaccount.model.Responsibility;
+import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.CostAccountShareEditDto;
+import com.imed.costaccount.model.dto.CostAccountShareSaveDto;
+import com.imed.costaccount.model.vo.CostAccountShareVO;
+import com.imed.costaccount.service.CostAccountShareService;
+import com.imed.costaccount.utils.BeanUtil;
+import org.apache.shiro.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+
+@Service("costAccountShareService")
+public class CostAccountShareServiceImpl extends ServiceImpl<CostAccountShareMapper, CostAccountShare> implements CostAccountShareService {
+
+    @Autowired
+    private ResponsibilityServiceImpl responsibilityService;
+
+    /**
+     * 分页查询责任中心成本对照相关数据
+     *
+     * @param page
+     * @param pageSize
+     * @param name
+     * @return
+     */
+    @Override
+    public PageUtils queryList(Integer page, Integer pageSize, String name, Integer hospId) {
+        Page<CostAccountShare> costAccountSharePage = new Page<>(page, pageSize);
+        Page<CostAccountShare> pages = this.page(costAccountSharePage, new QueryWrapper<CostAccountShare>().lambda()
+                .eq(!StringUtils.isEmpty(hospId), CostAccountShare::getHospId, hospId)
+                .like(!StringUtils.isEmpty(name), CostAccountShare::getAccountingName, name)
+                .orderByAsc(CostAccountShare::getShareLevel));
+        List<CostAccountShare> costAccountShareList = pages.getRecords();
+        List<CostAccountShareVO> costAccountShareVOList = BeanUtil.convertList(costAccountShareList, CostAccountShareVO.class);
+        PageUtils pageUtils = new PageUtils(pages);
+        pageUtils.setList(costAccountShareVOList);
+        return pageUtils;
+    }
+
+    /**
+     * 保存责任中心成本对照表
+     *
+     * @param costAccountShareSaveDto
+     */
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
+    public void addCostAccountShare(CostAccountShareSaveDto costAccountShareSaveDto) {
+        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        Integer hospId = user.getHospId();
+        // 检验输入的责任中心是否存在
+        Integer responsibilityId = costAccountShareSaveDto.getResponsibilityId();
+        Responsibility responsibility = responsibilityService.getOne(new QueryWrapper<Responsibility>().lambda().eq(Responsibility::getId, responsibilityId));
+        if (Objects.isNull(responsibility)){
+            throw new CostException(500,"输入的责任不存在");
+        }
+        if (costAccountShareSaveDto.getAccountingId() > 0){
+            throw new CostException(500,"输入的成本科目不存在");
+        }
+        // 检验输入的责任中心与匹配的成本科目是否存在
+        List<CostAccountShare> costAccountShareList = baseMapper.selectList(new QueryWrapper<CostAccountShare>().lambda().eq(CostAccountShare::getHospId,hospId));
+        Map<String, List<CostAccountShare>> costAccountMap = costAccountShareList.stream().collect(Collectors.groupingBy(CostAccountShare::getResponsibilityCode));
+        List<CostAccountShare> list = costAccountMap.get(costAccountShareSaveDto.getResponsibilityCode());
+        if (!CollectionUtils.isEmpty(list)){
+            String accountingCode = list.get(0).getAccountingCode();
+            if (accountingCode.equals(costAccountShareSaveDto.getAccountingCode())){
+                throw new CostException(500,"输入的责任中心对应的成本科目已存在");
+            }
+        }
+        CostAccountShare costAccountShareRequest = BeanUtil.convertObj(costAccountShareSaveDto, CostAccountShare.class);
+        costAccountShareRequest.setHospId(hospId);
+        costAccountShareRequest.setCreateTime(System.currentTimeMillis());
+        baseMapper.insert(costAccountShareRequest);
+    }
+
+    /**
+     * 修改成本中心责任对照表
+     *
+     * @param costAccountShareEditDto
+     */
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
+    public void updateByCostAccountShare(CostAccountShareEditDto costAccountShareEditDto) {
+        Integer id = costAccountShareEditDto.getId();
+        CostAccountShare costAccountShare = baseMapper.selectById(id);
+        if (Objects.isNull(costAccountShare)){
+            throw new CostException(500,"责任中心成本数据不存在");
+        }
+        baseMapper.deleteById(id);
+        // 新增责任中心成本对照数据
+        CostAccountShare costAccountShareRequest = BeanUtil.convertObj(costAccountShareEditDto, CostAccountShare.class);
+        costAccountShareRequest.setId(null);
+        costAccountShareRequest.setParamList(costAccountShare.getParamList());
+        costAccountShareRequest.setCreateTime(System.currentTimeMillis());
+        baseMapper.insert(costAccountShareRequest);
+    }
+
+}

+ 1 - 1
src/main/java/com/imed/costaccount/service/impl/CostShareLevelServiceImpl.java

@@ -42,7 +42,7 @@ public class CostShareLevelServiceImpl extends ServiceImpl<CostShareLevelMapper,
         Page<CostShareLevel> pages = this.page(costShareLevelPage, new QueryWrapper<CostShareLevel>().lambda()
                 .eq(!StringUtils.isEmpty(hospId), CostShareLevel::getHospId, hospId)
                 .like(!StringUtils.isEmpty(name), CostShareLevel::getShareName, name)
-                .orderByDesc(CostShareLevel::getLeverSort));
+                .orderByAsc(CostShareLevel::getLeverSort));
         List<CostShareLevel> costShareLevelList = pages.getRecords();
         List<CostShareLevelVO> costShareLevelVOList = BeanUtil.convertList(costShareLevelList, CostShareLevelVO.class);
         PageUtils pageUtils = new PageUtils(pages);

+ 31 - 0
src/main/java/com/imed/costaccount/service/impl/CostShareParamServiceImpl.java

@@ -103,6 +103,7 @@ public class CostShareParamServiceImpl extends ServiceImpl<CostShareParamMapper,
             throw new CostException(500,"对不起分摊参数代码已存在");
         }
         CostShareParam costShareParamRequest = BeanUtil.convertObj(costShareParamEditDto, CostShareParam.class);
+        costShareParamRequest.setId(null);
         costShareParamRequest.setCreateTime(System.currentTimeMillis());
         if (NumberConstant.TWO.equals( costShareParamEditDto.getShareParamCode()) && NumberConstant.TWO.equals(costShareParamEditDto.getShareParamCode())){
             costShareParamRequest.setAccountingId(costShareParam.getAccountingId());
@@ -135,4 +136,34 @@ public class CostShareParamServiceImpl extends ServiceImpl<CostShareParamMapper,
         }
         return null;
     }
+
+    /**
+     * 获取所有分摊参数的集合信息
+     *
+     * @param hospId
+     * @return
+     */
+    @Override
+    public List<CostShareParamVO> getAll(Integer hospId) {
+        List<CostShareParam> costShareParamList = baseMapper.selectList(new QueryWrapper<CostShareParam>().lambda()
+                .eq(CostShareParam::getHospId, hospId));
+        List<CostShareParamVO> costShareParamVOList = BeanUtil.convertList(costShareParamList, CostShareParamVO.class);
+        return costShareParamVOList;
+    }
+
+    /**
+     * 根据医院的Id分摊参数的ID获取对应的分摊参数的数据
+     *
+     * @param id
+     * @param hospId
+     * @return
+     */
+    @Override
+    public CostShareParamVO getByHospIdAndAPramId(Integer id, Integer hospId) {
+        CostShareParam costShareParam = baseMapper.selectOne(new QueryWrapper<CostShareParam>().lambda()
+                .eq(CostShareParam::getHospId, hospId)
+                .eq(CostShareParam::getId, id));
+        CostShareParamVO costShareParamVO = BeanUtil.convertObj(costShareParam, CostShareParamVO.class);
+        return costShareParamVO;
+    }
 }

+ 32 - 3
src/main/java/com/imed/costaccount/service/impl/ResponsibilityServiceImpl.java

@@ -12,15 +12,15 @@ import com.imed.costaccount.model.Responsibility;
 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.CommonVO;
-import com.imed.costaccount.model.vo.CostResponsibilityVO;
+import com.imed.costaccount.model.vo.*;
 import com.imed.costaccount.service.ResponsibilityService;
 import com.imed.costaccount.utils.BeanUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -30,6 +30,9 @@ import java.util.stream.Collectors;
 public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper, Responsibility> implements ResponsibilityService {
 
 
+    @Autowired
+    private CostShareLevelServiceImpl costShareLevelService;
+
     /**
      * 责任中心列表不分页
      *
@@ -101,6 +104,7 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
             center.setShareLevel(0);
             center.setShareName("");
         }
+
         this.save(center);
     }
 
@@ -260,4 +264,29 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
             return commonVO;
         }).collect(Collectors.toList());
     }
+
+    /**
+     * 获取第二级别的责任中心的数据
+     *
+     * @param hospId
+     * @return
+     */
+    @Override
+    public List<CostResponsibilityLevelVO> getLevelTwo(Integer hospId) {
+        List<Responsibility> responsibilities = baseMapper.selectList(new QueryWrapper<Responsibility>().lambda()
+                .eq(Responsibility::getHospId, hospId)
+                .eq(Responsibility::getResponsibilityLevel, NumberConstant.TWO));
+        List<CostResponsibilityLevelVO> costResponsibilityLevelVOS = BeanUtil.convertList(responsibilities, CostResponsibilityLevelVO.class);
+        List<CostShareLevelVO> costShareLevelServiceAll = costShareLevelService.getAll(hospId);
+        Map<Integer, List<CostShareLevelVO>> listMap = costShareLevelServiceAll.stream().collect(Collectors.groupingBy(CostShareLevelVO::getId));
+        // 设置责任中心的计算方式
+        costResponsibilityLevelVOS.forEach(i->{
+            Integer shareLevel = i.getShareLevel();
+            List<CostShareLevelVO> costShareLevelVOList = listMap.get(shareLevel);
+            if (!CollectionUtils.isEmpty(costShareLevelVOList)){
+                i.setCalcType(costShareLevelVOList.get(0).getCalcType());
+            }
+        });
+        return costResponsibilityLevelVOS;
+    }
 }

+ 88 - 0
src/main/java/com/imed/costaccount/web/CostAccountShareController.java

@@ -0,0 +1,88 @@
+package com.imed.costaccount.web;
+
+import com.imed.costaccount.common.util.PageUtils;
+import com.imed.costaccount.common.util.Result;
+import com.imed.costaccount.model.CostAccountShare;
+import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.CostAccountShareEditDto;
+import com.imed.costaccount.model.dto.CostAccountShareSaveDto;
+import com.imed.costaccount.service.CostAccountShareService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Arrays;
+
+
+/**
+ * 责任中心成本对照表
+ *
+ * @author KCYG
+ * @date 2021-07-28 18:34:52
+ */
+@RestController
+@RequestMapping("/costAccount/costaccountshare")
+@Api(tags = "责任中心成本相关操作")
+public class CostAccountShareController {
+    @Autowired
+    private CostAccountShareService costAccountShareService;
+
+    /**
+     * 分页查询列表
+     */
+    @GetMapping("/list")
+    @ApiOperation("分页获取责任中心成本数据")
+    public Result list(@RequestParam(defaultValue = "1", value = "page") Integer page,
+                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+                       @RequestParam(value = "name", required = false) String name){
+        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        Integer hospId = user.getHospId();
+        PageUtils pageUtils = costAccountShareService.queryList(page,pageSize,name,hospId);
+        return Result.ok(pageUtils);
+    }
+
+
+    /**
+     * 获取相关的责任中心成本对照表数据
+     */
+    @GetMapping("/getCostAccountShare")
+    @ApiOperation("根据责任中心成本对照表的Id获取")
+    public Result getCostAccountShare(Integer id){
+		CostAccountShare costAccountShare = costAccountShareService.getById(id);
+        return Result.ok(costAccountShare);
+    }
+
+    /**
+     * 保存
+     */
+    @PostMapping("/save")
+    @ApiOperation("保存责任中心成本对照数据")
+    public Result save(@RequestBody @Valid CostAccountShareSaveDto costAccountShareSaveDto){
+		costAccountShareService.addCostAccountShare(costAccountShareSaveDto);
+        return Result.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @PostMapping("/update")
+    @ApiOperation("修改责任中心成本数据")
+    public Result update(@RequestBody CostAccountShareEditDto costAccountShareEditDto){
+		costAccountShareService.updateByCostAccountShare(costAccountShareEditDto);
+        return Result.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/delete")
+    @ApiOperation("删除责任中心成本数据")
+    public Result delete(@RequestBody Integer[] ids){
+		costAccountShareService.removeByIds(Arrays.asList(ids));
+        return Result.ok();
+    }
+
+}

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

@@ -6,6 +6,7 @@ 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.CommonVO;
+import com.imed.costaccount.model.vo.CostResponsibilityLevelVO;
 import com.imed.costaccount.model.vo.CostResponsibilityVO;
 import com.imed.costaccount.service.ResponsibilityService;
 import io.swagger.annotations.Api;
@@ -39,6 +40,17 @@ public class ResponsibilityController {
         return Result.ok(pageUtils);
     }
 
+    @GetMapping("/getLevelTwo")
+    @ApiOperation("获取第二级的责任中心的数据")
+    public Result getLevelTwo(){
+        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        Integer hospId = user.getHospId();
+        List<CostResponsibilityLevelVO> costResponsibilityLevelVOList= responsibilityService.getLevelTwo(hospId);
+        return Result.ok(costResponsibilityLevelVOList);
+    }
+
+
+
     @ApiOperation("新增责任中心")
     @PostMapping("/save")
     public Result save(@RequestBody @Valid ResponsibilitySaveDTO responsibilitySaveDTO) {

+ 24 - 0
src/main/resources/mapper/CostAccountShareMapper.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.CostAccountShareMapper">
+
+	<!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.imed.costaccount.model.CostAccountShare" id="costAccountShareMap">
+        <result property="id" column="id"/>
+        <result property="responsibilityId" column="responsibility_id"/>
+        <result property="shareLevel" column="share_level"/>
+        <result property="responsibilityCode" column="responsibility_code"/>
+        <result property="responsibilityName" column="responsibility_name"/>
+        <result property="hospId" column="hosp_id"/>
+        <result property="accountingId" column="accounting_id"/>
+        <result property="accountingName" column="accounting_name"/>
+        <result property="accountingCode" column="accounting_code"/>
+        <result property="paramList" column="param_list"/>
+        <result property="costNode" column="cost_node"/>
+        <result property="createTime" column="create_time"/>
+        <result property="deleteTime" column="delete_time"/>
+    </resultMap>
+
+
+</mapper>