Browse Source

Merge branch 'master' of huangrui/CostAccount into dev

lijiaxi 4 năm trước cách đây
mục cha
commit
8add48bcc5
58 tập tin đã thay đổi với 1562 bổ sung187 xóa
  1. 16 0
      src/main/java/com/imed/costaccount/mapper/CostIncomeGroupMapper.java
  2. 16 0
      src/main/java/com/imed/costaccount/mapper/ReportFormMapper.java
  3. 36 0
      src/main/java/com/imed/costaccount/mapper/ReportRelationMapper.java
  4. 12 1
      src/main/java/com/imed/costaccount/mapper/RoleMenuMapper.java
  5. 6 1
      src/main/java/com/imed/costaccount/mapper/UserRoleMapper.java
  6. 88 0
      src/main/java/com/imed/costaccount/model/CostIncomeGroup.java
  7. 82 0
      src/main/java/com/imed/costaccount/model/ReportForm.java
  8. 61 0
      src/main/java/com/imed/costaccount/model/ReportRelation.java
  9. 1 1
      src/main/java/com/imed/costaccount/model/dto/CostAccountShareEditDto.java
  10. 4 0
      src/main/java/com/imed/costaccount/model/dto/DepartmentDto.java
  11. 4 0
      src/main/java/com/imed/costaccount/model/dto/DepartmentRequest.java
  12. 21 0
      src/main/java/com/imed/costaccount/model/dto/IncomeAccountDto.java
  13. 36 0
      src/main/java/com/imed/costaccount/model/dto/MenuEditDTO.java
  14. 11 0
      src/main/java/com/imed/costaccount/model/dto/ReportFormSaveDTO.java
  15. 22 0
      src/main/java/com/imed/costaccount/model/dto/RoleMenuDTO.java
  16. 19 0
      src/main/java/com/imed/costaccount/model/dto/RoleUserDTO.java
  17. 31 0
      src/main/java/com/imed/costaccount/model/vo/CommonSelectVO.java
  18. 4 0
      src/main/java/com/imed/costaccount/model/vo/CommonVO.java
  19. 4 0
      src/main/java/com/imed/costaccount/model/vo/CostDepartmentVO.java
  20. 5 0
      src/main/java/com/imed/costaccount/model/vo/CostShareLevelVO.java
  21. 1 0
      src/main/java/com/imed/costaccount/model/vo/CostShareParamStatusVO.java
  22. 5 0
      src/main/java/com/imed/costaccount/model/vo/DepartmentVO.java
  23. 19 0
      src/main/java/com/imed/costaccount/model/vo/RelationVO.java
  24. 43 0
      src/main/java/com/imed/costaccount/model/vo/ReportFormVO.java
  25. 0 3
      src/main/java/com/imed/costaccount/model/vo/RoleVO.java
  26. 16 0
      src/main/java/com/imed/costaccount/service/CostIncomeGroupService.java
  27. 3 2
      src/main/java/com/imed/costaccount/service/CostIncomeGroupSetService.java
  28. 1 1
      src/main/java/com/imed/costaccount/service/CostShareLevelService.java
  29. 8 0
      src/main/java/com/imed/costaccount/service/MenuService.java
  30. 28 0
      src/main/java/com/imed/costaccount/service/ReportFormService.java
  31. 36 0
      src/main/java/com/imed/costaccount/service/ReportRelationService.java
  32. 0 2
      src/main/java/com/imed/costaccount/service/ResponsibilityDepartmentService.java
  33. 27 1
      src/main/java/com/imed/costaccount/service/RoleMenuService.java
  34. 32 3
      src/main/java/com/imed/costaccount/service/UserRoleService.java
  35. 14 0
      src/main/java/com/imed/costaccount/service/impl/CostIncomeGroupServiceImpl.java
  36. 24 19
      src/main/java/com/imed/costaccount/service/impl/CostIncomeGroupSetServiceImpl.java
  37. 1 1
      src/main/java/com/imed/costaccount/service/impl/CostShareLevelServiceImpl.java
  38. 61 21
      src/main/java/com/imed/costaccount/service/impl/MenuServiceImpl.java
  39. 97 0
      src/main/java/com/imed/costaccount/service/impl/ReportFormServiceImpl.java
  40. 41 0
      src/main/java/com/imed/costaccount/service/impl/ReportRelationServiceImpl.java
  41. 117 0
      src/main/java/com/imed/costaccount/service/impl/RoleMenuServiceImpl.java
  42. 5 3
      src/main/java/com/imed/costaccount/service/impl/RoleServiceImpl.java
  43. 88 0
      src/main/java/com/imed/costaccount/service/impl/UserRoleServiceImpl.java
  44. 0 102
      src/main/java/com/imed/costaccount/utils/PageUtils.java
  45. 1 1
      src/main/java/com/imed/costaccount/web/AccountingController.java
  46. 78 0
      src/main/java/com/imed/costaccount/web/CostIncomeGroupController.java
  47. 5 5
      src/main/java/com/imed/costaccount/web/CostIncomeGroupSetController.java
  48. 1 1
      src/main/java/com/imed/costaccount/web/CostShareLevelController.java
  49. 6 4
      src/main/java/com/imed/costaccount/web/MenuController.java
  50. 74 0
      src/main/java/com/imed/costaccount/web/ReportFormController.java
  51. 79 0
      src/main/java/com/imed/costaccount/web/ReportRelationController.java
  52. 1 1
      src/main/java/com/imed/costaccount/web/ResponsibilityDepartmentController.java
  53. 64 12
      src/main/java/com/imed/costaccount/web/RoleController.java
  54. 25 0
      src/main/resources/mapper/CostIncomeGroupMapper.xml
  55. 23 0
      src/main/resources/mapper/ReportFormMapper.xml
  56. 40 0
      src/main/resources/mapper/ReportRelationMapper.xml
  57. 9 1
      src/main/resources/mapper/RoleMenuMapper.xml
  58. 10 1
      src/main/resources/mapper/UserRoleMapper.xml

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

@@ -0,0 +1,16 @@
+package com.imed.costaccount.mapper;
+
+import com.imed.costaccount.model.CostIncomeGroup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 收入归集
+ * 
+ * @author KCYG
+ * @date 2021-08-03 16:15:20
+ */
+@Mapper
+public interface CostIncomeGroupMapper extends BaseMapper<CostIncomeGroup> {
+	
+}

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

@@ -0,0 +1,16 @@
+package com.imed.costaccount.mapper;
+
+import com.imed.costaccount.model.ReportForm;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 报表项目
+ * 
+ * @author huangrui
+ * @date 2021-08-03 13:53:52
+ */
+@Mapper
+public interface ReportFormMapper extends BaseMapper<ReportForm> {
+	
+}

+ 36 - 0
src/main/java/com/imed/costaccount/mapper/ReportRelationMapper.java

@@ -0,0 +1,36 @@
+package com.imed.costaccount.mapper;
+
+import com.imed.costaccount.model.ReportRelation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.imed.costaccount.model.vo.RelationVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 报表对应项目设置关系
+ * 
+ * @author huangrui
+ * @date 2021-08-03 13:53:52
+ */
+@Mapper
+public interface ReportRelationMapper extends BaseMapper<ReportRelation> {
+
+    /**
+     * 报表项目关联的会计科目对象
+     *
+     * @param reportId 报表项目id
+     * @param hospId   医院id
+     * @return {@link RelationVO}
+     */
+    List<RelationVO> getAccountRelation(@Param("reportId") Long reportId, @Param("hospId") Long hospId);
+
+    /**
+     * 报表项目关联的分摊参数对象
+     * @param reportId 报表项目id
+     * @param hospId 医院id
+     * @return {@link RelationVO}
+     */
+    List<RelationVO> getShareParam(@Param("reportId") Long reportId, @Param("hospId") Long hospId);
+}

+ 12 - 1
src/main/java/com/imed/costaccount/mapper/RoleMenuMapper.java

@@ -2,7 +2,11 @@ package com.imed.costaccount.mapper;
 
 import com.imed.costaccount.model.RoleMenu;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.imed.costaccount.model.vo.CommonVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 角色与菜单对应关系
@@ -12,5 +16,12 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
-	
+
+    /**
+     * 通过roleid和hospId 获取role关联的menu信息
+     * @param roleId 角色id
+     * @param hospId 医院id
+     * @return id name
+     */
+    List<CommonVO> getUsersByRoleId(@Param("roleId") Long roleId, @Param("hospId") Long hospId);
 }

+ 6 - 1
src/main/java/com/imed/costaccount/mapper/UserRoleMapper.java

@@ -2,7 +2,11 @@ package com.imed.costaccount.mapper;
 
 import com.imed.costaccount.model.UserRole;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.imed.costaccount.model.vo.CommonVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 用户与角色对应关系
@@ -12,5 +16,6 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface UserRoleMapper extends BaseMapper<UserRole> {
-	
+
+    List<CommonVO> getUsersByRoleId(@Param("roleId") Long roleId, @Param("hospId") Long hospId);
 }

+ 88 - 0
src/main/java/com/imed/costaccount/model/CostIncomeGroup.java

@@ -0,0 +1,88 @@
+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;
+import java.math.BigDecimal;
+
+/**
+ * 收入归集
+ * 
+ * @author KCYG
+ * @email KCYG@xinxicom
+ * @date 2021-08-03 16:15:20
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("cost_income_group")
+public class CostIncomeGroup implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 收入归集的Id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 开单科室的Code
+	 */
+	private String openDepartmentCode;
+	/**
+	 * 开单责任中心的Code
+	 */
+	private String openResponsibilityCode;
+	/**
+	 * 执行科室的Code
+	 */
+	private String startDepartmentCode;
+	/**
+	 * 执行责任中心的Code
+	 */
+	private String startResponsibilityCode;
+	/**
+	 * 成本项目的Code
+	 */
+	private String productCode;
+	/**
+	 * 会计科目Code
+	 */
+	private String accountCode;
+	/**
+	 * 是否直接收入
+	 */
+	private Integer isIncome;
+	/**
+	 * 金额
+	 */
+	private BigDecimal amount;
+	/**
+	 * 归属医院id
+	 */
+	private Long hospId;
+	/**
+	 * 年份
+	 */
+	private Integer dateYear;
+	/**
+	 * 月份
+	 */
+	private Integer dateMonth;
+	/**
+	 * 创建时间13位时间戳
+	 */
+	private Long createTime;
+	/**
+	 * 删除时间,如果存在表示已删除13位时间戳
+	 */
+	@TableLogic(value = "0",delval = "UNIX_TIMESTAMP(NOW()) * 1000")
+	private Long deleteTime;
+
+}

+ 82 - 0
src/main/java/com/imed/costaccount/model/ReportForm.java

@@ -0,0 +1,82 @@
+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-08-03 13:53:52
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("cost_report_form")
+public class ReportForm implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 报表项目编号(最大值不能超过127)一个医院中必须唯一
+	 */
+	private Integer num;
+	/**
+	 * 报表名称
+	 */
+	private String reportName;
+	/**
+	 * 父级id
+	 */
+	private Long parentId;
+	/**
+	 * 计算类型 0.不设置,1.对应会计科目,2.对应分摊层级,3.小计,4.计算公式
+	 */
+	private Integer calcType;
+	/**
+	 * 报表类型:0.损益表、1.完全成本法表、2.变动成本表、3.全院损益表、4.全成本报表
+
+	 */
+	private Integer reportType;
+	/**
+	 * 计算公式,当计算类型为计算公式的时候必传
+	 */
+	private String calcFormula;
+	/**
+	 * 排序字段
+	 */
+	private Integer sort;
+	/**
+	 * 比率基数,默认100%,后续再进行修改
+	 */
+	private String ratioBase;
+	/**
+	 * 医院id
+	 */
+	private Long hospId;
+	/**
+	 * 创建时间
+	 */
+	private Long createTime;
+	/**
+	 * 删除时间
+	 */
+	@TableLogic(value = "0",delval = "UNIX_TIMESTAMP(NOW()) * 1000")
+	private Long deleteTime;
+
+}

+ 61 - 0
src/main/java/com/imed/costaccount/model/ReportRelation.java

@@ -0,0 +1,61 @@
+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-08-03 13:53:52
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("cost_report_relation")
+public class ReportRelation implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 报表项目id
+	 */
+	private Long reportId;
+	/**
+	 * 对应关系的唯一code码
+	 */
+	private Long relationCode;
+	/**
+	 * 医院id
+	 */
+	private Long hospId;
+	/**
+	 * 1.会计科目,2.成本分摊参数
+	 */
+	private Integer relation;
+	/**
+	 * 创建时间
+	 */
+	private Long createTime;
+	/**
+	 * 删除时间
+	 */
+	@TableLogic(value = "0",delval = "UNIX_TIMESTAMP(NOW()) * 1000")
+	private Long deleteTime;
+
+}

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

@@ -18,7 +18,7 @@ public class CostAccountShareEditDto {
 
     @ApiModelProperty(name = "responsibilityId",value = "责任中心的Id")
     @NotNull(message = "责任中心Id不能为空")
-    private Integer responsibilityId;
+    private Long responsibilityId;
 
     @ApiModelProperty(name = "shareLevel",value = "责任中心分摊层级")
     private Integer shareLevel;

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

@@ -12,12 +12,16 @@ import lombok.Data;
 @Data
 @ApiModel("科室信息dto参数")
 public class DepartmentDto {
+
     @ApiModelProperty(name = "id",value = "科室的Id")
     private Long id;
+
     @ApiModelProperty(name = "departmentName",value = "科室的名称")
     private String departmentName;
+
     @ApiModelProperty(name = "departmentCode",value = "科室的Id")
     private String departmentCode;
+
     @ApiModelProperty(name = "hospId",value = "医院的Id")
     private Long hospId;
 }

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

@@ -14,14 +14,18 @@ import javax.validation.constraints.NotNull;
 @Data
 @ApiModel("科室信息保存request参数")
 public class DepartmentRequest {
+
     @ApiModelProperty(name = "id",value = "科室的Id")
     private Long id;
+
     @ApiModelProperty(name = "departmentName",value = "科室的名称")
     @NotNull(message = "科室名称不能为空")
     private String departmentName;
+
     @ApiModelProperty(name = "departmentCode",value = "科室的代码")
     @NotNull(message = "科室代码不能为空")
     private String departmentCode;
+
     @ApiModelProperty(name = "hospId",value = "医院的Id")
     private Long hospId;
 }

+ 21 - 0
src/main/java/com/imed/costaccount/model/dto/IncomeAccountDto.java

@@ -0,0 +1,21 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author 李加喜
+ * @Package com.imed.costaccount.model.dto
+ * @date 2021-08-03 15:14
+ */
+@Data
+@Api("为收入归集设置添加会计科目实体类")
+public class IncomeAccountDto {
+
+    @ApiModelProperty("收入归集设置的Id")
+    public Long id;
+
+    @ApiModelProperty("会计科目的代码集合")
+    public String[] accountCodes;
+}

+ 36 - 0
src/main/java/com/imed/costaccount/model/dto/MenuEditDTO.java

@@ -0,0 +1,36 @@
+package com.imed.costaccount.model.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class MenuEditDTO {
+
+    @NotNull(message = "id不能为空")
+    private Long id;
+
+    @NotNull(message = "父级id不能为空")
+    private Long parentId;
+
+    @NotBlank(message = "菜单名称不能为空")
+    private String name;
+
+    @NotBlank(message = "菜单路径不能为空")
+    private String path;
+
+    private String url;
+
+    private String perms;
+
+    @NotNull(message = "菜单类型不能为空")
+    private Integer type;
+
+    @NotBlank(message = "菜单图标不能为空")
+    private String icon;
+
+    private Integer orderNum;
+
+
+}

+ 11 - 0
src/main/java/com/imed/costaccount/model/dto/ReportFormSaveDTO.java

@@ -0,0 +1,11 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel
+public class ReportFormSaveDTO {
+
+
+}

+ 22 - 0
src/main/java/com/imed/costaccount/model/dto/RoleMenuDTO.java

@@ -0,0 +1,22 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+@ApiModel("角色菜单绑定关系")
+public class RoleMenuDTO {
+
+    @NotNull(message = "角色id不能为空")
+    @ApiModelProperty(name = "roleId",value = "角色id")
+    private Long roleId;
+
+    private List<Long> menuIds;
+
+
+
+}

+ 19 - 0
src/main/java/com/imed/costaccount/model/dto/RoleUserDTO.java

@@ -0,0 +1,19 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+@ApiModel("角色绑定A用户关系")
+public class RoleUserDTO {
+
+    @NotNull(message = "角色id不能为空")
+    @ApiModelProperty(name = "roleId",value = "角色id")
+    private Long roleId;
+
+    private List<Long> userIds;
+}

+ 31 - 0
src/main/java/com/imed/costaccount/model/vo/CommonSelectVO.java

@@ -0,0 +1,31 @@
+package com.imed.costaccount.model.vo;
+
+import cn.hutool.core.lang.Assert;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@ApiModel("通用是否选择视图对象")
+public class CommonSelectVO extends CommonVO {
+
+    @ApiModelProperty(name = "isSelect",value = "是否选中,true选中")
+    private Boolean isSelect;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private List<CommonSelectVO> children;
+
+    @JsonIgnore
+    private Long parentId;
+
+    public CommonSelectVO(CommonVO commonVO,Boolean isSelect) {
+        Assert.notNull(commonVO,"父类不能为空");
+        this.isSelect = isSelect;
+    }
+}

+ 4 - 0
src/main/java/com/imed/costaccount/model/vo/CommonVO.java

@@ -1,6 +1,8 @@
 package com.imed.costaccount.model.vo;
 
+import lombok.AllArgsConstructor;
 import lombok.Getter;
+import lombok.NoArgsConstructor;
 import lombok.Setter;
 
 /**
@@ -8,6 +10,8 @@ import lombok.Setter;
  */
 @Getter
 @Setter
+@AllArgsConstructor
+@NoArgsConstructor
 public class CommonVO {
 
     private Long id;

+ 4 - 0
src/main/java/com/imed/costaccount/model/vo/CostDepartmentVO.java

@@ -16,12 +16,16 @@ import lombok.*;
 @Builder
 @ApiModel
 public class CostDepartmentVO {
+
     @ApiModelProperty(name = "departmentName",value = "科室Id")
     private Long id;
+
     @ApiModelProperty(name = "departmentName",value = "科室的名称")
     private String departmentName;
+
     @ApiModelProperty(name = "departmentCode",value = "科室的Id")
     private String departmentCode;
+
     @ApiModelProperty(name = "departmentStatus",value = "科室是否选中的状态")
     private Integer departmentStatus;
 }

+ 5 - 0
src/main/java/com/imed/costaccount/model/vo/CostShareLevelVO.java

@@ -16,14 +16,19 @@ import lombok.*;
 @Builder
 @ApiModel
 public class CostShareLevelVO {
+
     @ApiModelProperty(name = "id",value = "分摊层级的Id")
     private Long id;
+
     @ApiModelProperty(name = "shareName",value = "分摊层级数名称")
     private String shareName;
+
     @ApiModelProperty(name = "leverSort",value = "分摊层级序号")
     private Integer leverSort;
+
     @ApiModelProperty(name = "targetLevel",value = "目标层级")
     private Integer targetLevel;
+
     @ApiModelProperty(name = "calcType",value = "计算方式  0合并计算  1 分开计算")
     private Integer calcType;
 }

+ 1 - 0
src/main/java/com/imed/costaccount/model/vo/CostShareParamStatusVO.java

@@ -24,6 +24,7 @@ public class CostShareParamStatusVO {
     @ApiModelProperty(name = "calcType",value = "分摊参数的计算方式")
     private Integer calcType;
     // 显示当前分摊参数是否被选中 选中1  未选中0  默认没有选中
+
     private Integer shareParamStatus=0;
 
 }

+ 5 - 0
src/main/java/com/imed/costaccount/model/vo/DepartmentVO.java

@@ -16,14 +16,19 @@ import lombok.*;
 @Builder
 @ApiModel
 public class DepartmentVO {
+
     @ApiModelProperty(name = "id",value = "科室的Id")
     private Long id;
+
     @ApiModelProperty(name = "departmentName",value = "科室的名称")
     private String departmentName;
+
     @ApiModelProperty(name = "departmentCode",value = "科室的Id")
     private String departmentCode;
+
     @ApiModelProperty(name = "hospId",value = "医院的Id")
     private Long hospId;
+
     @ApiModelProperty(name = "createTime",value = "创建时间时间戳")
     private Long createTime;
 

+ 19 - 0
src/main/java/com/imed/costaccount/model/vo/RelationVO.java

@@ -0,0 +1,19 @@
+package com.imed.costaccount.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("成本项目关联视图对象")
+public class RelationVO {
+
+    @ApiModelProperty(name = "code",value = "关联关系的code")
+    private String code;
+
+    @ApiModelProperty(name = "name",value = "关联关系名称")
+    private String name;
+
+    @ApiModelProperty(name = "relation",value = "关联关系:1.关系为会计科目,2.关系为分摊参数")
+    private Integer relation;
+}

+ 43 - 0
src/main/java/com/imed/costaccount/model/vo/ReportFormVO.java

@@ -0,0 +1,43 @@
+package com.imed.costaccount.model.vo;
+
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("报表项目视图对象")
+public class ReportFormVO {
+
+    private Long id;
+
+    private Integer num;
+
+    private String reportName;
+
+    private Long parentId;
+
+    private Integer calcType;
+
+    private Integer reportType;
+
+    private String calcFormula;
+
+    private Integer sort;
+
+    private String ratioBase;
+
+    private Long hospId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private Integer showAddRelation;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private List<ReportFormVO> children;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private List<RelationVO> reportRelations;
+
+}

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

@@ -21,7 +21,4 @@ public class RoleVO {
 
     private String remark;
 
-    private List<CommonVO> users;
-
-    private List<CommonVO> menus;
 }

+ 16 - 0
src/main/java/com/imed/costaccount/service/CostIncomeGroupService.java

@@ -0,0 +1,16 @@
+package com.imed.costaccount.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.imed.costaccount.model.CostIncomeGroup;
+
+/**
+ * 收入归集
+ *
+ * @author KCYG
+ * @email KCYG@xinxicom
+ * @date 2021-08-03 16:15:20
+ */
+public interface CostIncomeGroupService extends IService<CostIncomeGroup> {
+
+}
+

+ 3 - 2
src/main/java/com/imed/costaccount/service/CostIncomeGroupSetService.java

@@ -5,6 +5,7 @@ import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.model.CostIncomeGroupSet;
 import com.imed.costaccount.model.dto.CostIncomeGroupSetEditDto;
 import com.imed.costaccount.model.dto.CostIncomeGroupSetSaveDto;
+import com.imed.costaccount.model.dto.IncomeAccountDto;
 import com.imed.costaccount.model.vo.CostIncomeGroupSetVO;
 
 import java.util.List;
@@ -55,8 +56,8 @@ public interface CostIncomeGroupSetService extends IService<CostIncomeGroupSet>
 
     /**
      * 设置对应的排除成本科目
-     * @param accountList
+     * @param incomeAccountDto
      */
-    void updateAccountCode(Integer id,List<String> accountList);
+    void updateAccountCode(IncomeAccountDto incomeAccountDto);
 }
 

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

@@ -1,11 +1,11 @@
 package com.imed.costaccount.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.model.CostShareLevel;
 import com.imed.costaccount.model.dto.CostShareLevelEditDto;
 import com.imed.costaccount.model.dto.CostShareLevelSaveDto;
 import com.imed.costaccount.model.vo.CostShareLevelVO;
-import com.imed.costaccount.utils.PageUtils;
 
 import java.util.List;
 

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

@@ -3,6 +3,7 @@ package com.imed.costaccount.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.MenuEditDTO;
 import com.imed.costaccount.model.dto.MenuSaveDTO;
 import com.imed.costaccount.model.Menu;
 
@@ -32,5 +33,12 @@ public interface MenuService extends IService<Menu> {
      * @return 菜单分页列表
      */
     PageUtils selectList(Integer page, Integer pageSize, User user);
+
+    /**
+     * 编辑某个菜单
+     * @param menuDTO
+     * @param user
+     */
+    void updateMenu(MenuEditDTO menuDTO, User user);
 }
 

+ 28 - 0
src/main/java/com/imed/costaccount/service/ReportFormService.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.ReportFormVO;
+import com.imed.costaccount.model.ReportForm;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 报表项目
+ *
+ * @author huangrui
+ * @email 
+ * @date 2021-08-03 13:53:52
+ */
+public interface ReportFormService extends IService<ReportForm> {
+
+    /**
+     * 报表项目列表(必定只有两层)
+     * @param reportType
+     * @param user
+     * @return
+     */
+    List<ReportFormVO> selectList(Integer reportType, User user);
+}
+

+ 36 - 0
src/main/java/com/imed/costaccount/service/ReportRelationService.java

@@ -0,0 +1,36 @@
+package com.imed.costaccount.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.imed.costaccount.model.vo.RelationVO;
+import com.imed.costaccount.model.ReportRelation;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 报表对应项目设置关系
+ *
+ * @author huangrui
+ * @email 
+ * @date 2021-08-03 13:53:52
+ */
+public interface ReportRelationService extends IService<ReportRelation> {
+
+    /**
+     * 报表项目关联的会计科目对象
+     * @param reportId 报表项目id
+     * @param hospId 医院id
+     * @return {@link RelationVO}
+     */
+    List<RelationVO> getAccountRelation(Long reportId, Long hospId);
+
+    /**
+     * 报表项目关联的分摊参数对象
+     * @param reportId 报表项目id
+     * @param hospId 医院id
+     * @return {@link RelationVO}
+     */
+    List<RelationVO> getShareParam(Long reportId, Long hospId);
+
+}
+

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

@@ -4,11 +4,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.imed.costaccount.model.User;
 import com.imed.costaccount.model.dto.DepartDTO;
 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;
 
 /**
  * 责任中心科室对照表

+ 27 - 1
src/main/java/com/imed/costaccount/service/RoleMenuService.java

@@ -1,9 +1,12 @@
 package com.imed.costaccount.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.imed.costaccount.utils.PageUtils;
+import com.imed.costaccount.model.dto.RoleMenuDTO;
+import com.imed.costaccount.model.vo.CommonSelectVO;
+import com.imed.costaccount.model.vo.CommonVO;
 import com.imed.costaccount.model.RoleMenu;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -15,5 +18,28 @@ import java.util.Map;
  */
 public interface RoleMenuService extends IService<RoleMenu> {
 
+    /**
+     * 通过roleId 获取对应的菜单列表
+     * @param roleId
+     * @param hospId
+     * @return
+     */
+    List<CommonVO> getMenuByRoleId(Long roleId, Long hospId);
+
+
+    /**
+     * 绑定角色和菜单关系时选择列表可回显
+     * @param roleId 角色id
+     * @return CommonSelectVO
+     */
+    List<CommonSelectVO> roleMenuList(Long roleId, Long hospId);
+
+    /**
+     * 编辑角色和菜单关系
+     *
+     * @param roleMenuDTO {@link RoleMenuDTO}
+     * @param hospId      医院id
+     */
+    void saveRoleMenu(RoleMenuDTO roleMenuDTO, Long hospId);
 }
 

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

@@ -1,19 +1,48 @@
 package com.imed.costaccount.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.imed.costaccount.utils.PageUtils;
+import com.imed.costaccount.common.util.PageUtils;
+import com.imed.costaccount.model.dto.RoleMenuDTO;
+import com.imed.costaccount.model.dto.RoleUserDTO;
+import com.imed.costaccount.model.vo.CommonVO;
 import com.imed.costaccount.model.UserRole;
 
-import java.util.Map;
+import java.util.List;
 
 /**
  * 用户与角色对应关系
  *
  * @author huangrui
- * @email 
+ * @email
  * @date 2021-08-03 08:56:22
  */
 public interface UserRoleService extends IService<UserRole> {
 
+    /**
+     * 通过roleId获取对应的关联人员
+     *
+     * @param roleId 角色id
+     * @param hospId 医院id
+     * @return {"id":1,"username":"tom"}
+     */
+    List<CommonVO> getUsersByRoleId(Long roleId, Long hospId);
+
+    /**
+     * 绑定角色和人员关系时选择列表(可回显)
+     * @param roleId 角色id
+     * @param hospId 医院id
+     * @param page
+     * @param pageSize
+     * @return {"id":1,"username":"tom","isSelect": true}
+     */
+    PageUtils roleUserList(Long roleId, Long hospId, Integer page, Integer pageSize);
+
+    /**
+     * 编辑角色和人员关系
+     * @param roleUserDTO {@link RoleUserDTO}
+     * @param hospId 医院id
+     */
+    void saveRoleUser(RoleUserDTO roleUserDTO, Long hospId);
+
 }
 

+ 14 - 0
src/main/java/com/imed/costaccount/service/impl/CostIncomeGroupServiceImpl.java

@@ -0,0 +1,14 @@
+package com.imed.costaccount.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.imed.costaccount.mapper.CostIncomeGroupMapper;
+import com.imed.costaccount.model.CostIncomeGroup;
+import com.imed.costaccount.service.CostIncomeGroupService;
+import org.springframework.stereotype.Service;
+
+
+@Service("costIncomeGroupService")
+public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMapper, CostIncomeGroup> implements CostIncomeGroupService {
+
+
+}

+ 24 - 19
src/main/java/com/imed/costaccount/service/impl/CostIncomeGroupSetServiceImpl.java

@@ -14,6 +14,7 @@ import com.imed.costaccount.model.CostIncomeGroupSet;
 import com.imed.costaccount.model.Responsibility;
 import com.imed.costaccount.model.dto.CostIncomeGroupSetEditDto;
 import com.imed.costaccount.model.dto.CostIncomeGroupSetSaveDto;
+import com.imed.costaccount.model.dto.IncomeAccountDto;
 import com.imed.costaccount.model.vo.CostIncomeGroupSetVO;
 import com.imed.costaccount.service.CostIncomeGroupSetService;
 import com.imed.costaccount.service.ResponsibilityService;
@@ -39,10 +40,10 @@ public class CostIncomeGroupSetServiceImpl extends ServiceImpl<CostIncomeGroupSe
     /**
      * 分页查询
      *
-     * @param current
-     * @param pageSize
-     * @param hospId
-     * @return
+     * @param current 当前页
+     * @param pageSize 每一页大小
+     * @param hospId 医院Id
+     * @return PageUtils
      */
     @Override
     public PageUtils queryList(Integer current, Integer pageSize, Long hospId) {
@@ -74,8 +75,9 @@ public class CostIncomeGroupSetServiceImpl extends ServiceImpl<CostIncomeGroupSe
     /**
      * 根据Id获取对应的收入归集设置的数据
      *
-     * @param id
-     * @return
+     * @param id 收入归集设置的Id
+     * @param hospId 医院的Id
+     * @return CostIncomeGroupSetVO
      */
     @Override
     public CostIncomeGroupSetVO getByIncomeGroupId(Long id, Long hospId) {
@@ -117,8 +119,8 @@ public class CostIncomeGroupSetServiceImpl extends ServiceImpl<CostIncomeGroupSe
 
     /**
      * 检验输入的数据是否符合要求
-     * @param costIncomeGroupSetSaveDto
-     * @param hospId
+     * @param costIncomeGroupSetSaveDto 需要保存的收入归集设置的数据
+     * @param hospId 医院Id
      */
     private void checkIncomeGroupSet(CostIncomeGroupSetSaveDto costIncomeGroupSetSaveDto, Long hospId) {
         Integer sum = costIncomeGroupSetSaveDto.getOpenDepartmentProportion() + costIncomeGroupSetSaveDto.getStartDepartmentProportion();
@@ -165,8 +167,8 @@ public class CostIncomeGroupSetServiceImpl extends ServiceImpl<CostIncomeGroupSe
     /**
      * 修改收入归集设置的数据
      *
-     * @param costIncomeGroupSetEditDto
-     * @param hospId
+     * @param costIncomeGroupSetEditDto 需要修改的收入归集设置的数据
+     * @param hospId 医院Id
      */
     @Override
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
@@ -191,8 +193,8 @@ public class CostIncomeGroupSetServiceImpl extends ServiceImpl<CostIncomeGroupSe
     /**
      * 查询当前收入归集设置里面对应的会计科目的Id集合
      *
-     * @param incomeGroutSetId
-     * @return
+     * @param incomeGroutSetId 收入归集设置的Id
+     * @return List<String>
      */
     @Override
     public List<String> selectIsSelect(Integer incomeGroutSetId) {
@@ -202,8 +204,7 @@ public class CostIncomeGroupSetServiceImpl extends ServiceImpl<CostIncomeGroupSe
         }
         String accountCode = incomeGroupSet.getAccountCode();
         if (!StringUtils.isEmpty(accountCode)){
-            List<String> collect = Arrays.stream(accountCode.split(StrUtil.COMMA)).map(String::valueOf).collect(Collectors.toList());
-            return collect;
+            return Arrays.stream(accountCode.split(StrUtil.COMMA)).map(String::valueOf).collect(Collectors.toList());
         }else {
             return Collections.emptyList();
         }
@@ -211,18 +212,22 @@ public class CostIncomeGroupSetServiceImpl extends ServiceImpl<CostIncomeGroupSe
 
     /**
      * 设置对应的排除成本科目
-     * @param id  收入归集设置的Id
-     * @param accountList 对应科目的Code集合
+     * @param incomeAccountDto 需要排除的会计科目数据对象
      */
     @Override
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
-    public void updateAccountCode(Integer id,List<String> accountList) {
+    public void updateAccountCode(IncomeAccountDto incomeAccountDto) {
+        Long id = incomeAccountDto.getId();
+        List<String> accountCodeList = Arrays.asList(incomeAccountDto.getAccountCodes());
         CostIncomeGroupSet incomeGroupSet = this.getById(id);
         if (Objects.isNull(incomeGroupSet)){
             throw new CostException(500,"收入归集设置不存在");
         }
-        if(CollUtil.isNotEmpty(accountList)){
-            String accountCodes = accountList.stream().map(String::valueOf).collect(Collectors.joining(StrUtil.COMMA));
+        if (NumberConstant.TWO.equals(incomeGroupSet.getOpenDepartmentStatus())|| NumberConstant.TWO.equals(incomeGroupSet.getStartDepartmentStatus())){
+            throw new CostException(500,"存在成本中心 不允许设置排除的会计科目");
+        }
+        if(CollUtil.isNotEmpty(accountCodeList)){
+            String accountCodes = accountCodeList.stream().map(String::valueOf).collect(Collectors.joining(StrUtil.COMMA));
             incomeGroupSet.setAccountCode(accountCodes);
         }else{
             incomeGroupSet.setAccountCode(null);

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

@@ -4,6 +4,7 @@ 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.CostShareLevelMapper;
 import com.imed.costaccount.model.CostShareLevel;
 import com.imed.costaccount.model.User;
@@ -12,7 +13,6 @@ import com.imed.costaccount.model.dto.CostShareLevelSaveDto;
 import com.imed.costaccount.model.vo.CostShareLevelVO;
 import com.imed.costaccount.service.CostShareLevelService;
 import com.imed.costaccount.utils.BeanUtil;
-import com.imed.costaccount.utils.PageUtils;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;

+ 61 - 21
src/main/java/com/imed/costaccount/service/impl/MenuServiceImpl.java

@@ -1,6 +1,7 @@
 package com.imed.costaccount.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.common.constants.Constant;
@@ -9,22 +10,31 @@ import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.mapper.MenuMapper;
 import com.imed.costaccount.model.Menu;
 import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.MenuEditDTO;
 import com.imed.costaccount.model.dto.MenuSaveDTO;
 import com.imed.costaccount.model.vo.MenuVO;
 import com.imed.costaccount.service.MenuService;
+import com.imed.costaccount.service.UserService;
 import com.imed.costaccount.utils.BeanUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
-
+@Slf4j
 @Service("menuService")
 public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements MenuService {
 
+    private final UserService userService;
+
+    public MenuServiceImpl(UserService userService) {
+        this.userService = userService;
+    }
 
     /**
      * 保存菜单
@@ -36,7 +46,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public void saveMenu(MenuSaveDTO menuSaveDTO, User user) {
         // 校验
-        this.check(menuSaveDTO);
+        this.check(menuSaveDTO.getType(), menuSaveDTO.getParentId());
 
         Menu menu = BeanUtil.convertObj(menuSaveDTO, Menu.class);
         menu.setHospId(user.getHospId())
@@ -60,7 +70,14 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
         List<Menu> list = this.list(
                 new LambdaQueryWrapper<Menu>().eq(Menu::getHospId, user.getHospId()).orderByAsc(Menu::getOrderNum)
         );
-        List<MenuVO> menuVOS = BeanUtil.convertList(list, MenuVO.class);
+
+        List<MenuVO> menuVOS = list.stream().map(i -> {
+            MenuVO menuVO = BeanUtil.convertObj(i, MenuVO.class);
+            menuVO.setModifyTime(DateUtil.formatDateTime(DateUtil.date(i.getModifyTime())));
+            menuVO.setModifyUserName(userService.getUsernameByIdAndHospId(user.getId(), user.getHospId()));
+            return menuVO;
+        }).collect(Collectors.toList());
+
         List<MenuVO> roots = menuVOS.stream().filter(i -> i.getParentId() == 0).collect(Collectors.toList());
         List<MenuVO> treeVOs = new ArrayList<>();
         for (MenuVO i : roots) {
@@ -68,11 +85,32 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
             treeVOs.addAll(menus);
 
         }
-        return new PageUtils(list,0,0,0);
+        return new PageUtils(treeVOs, 0, 0, 0);
+    }
+
+    /**
+     * 编辑某个菜单
+     *
+     * @param menuDTO {@link MenuEditDTO}
+     * @param user    {@link User}
+     */
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public void updateMenu(MenuEditDTO menuDTO, User user) {
+        this.check(menuDTO.getType(), menuDTO.getParentId());
+
+        Menu byId = this.getById(menuDTO.getId());
+        if (Objects.isNull(byId)) {
+            throw new CostException(500, "选择的菜单已被移除");
+        }
+        BeanUtil.convertObj(menuDTO, byId);
+        log.info("byId:{}", byId);
+        this.updateById(byId);
     }
 
     /**
      * 递归遍历
+     *
      * @param menuVO
      * @param menuVOS
      * @return
@@ -80,35 +118,38 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
     private List<MenuVO> getMenuTree(MenuVO menuVO, List<MenuVO> menuVOS) {
         List<MenuVO> list = new ArrayList<>();
         list.add(menuVO);
-        List<MenuVO> children = menuVO.getChildren();
-        if (CollUtil.isEmpty(children)) {
-            children = new ArrayList<>();
-        }
-        for (MenuVO j : menuVOS) {
-            if (j.getParentId().equals(menuVO.getMenuId())) {
-                children.add(j);
+        for (MenuVO vo : menuVOS) {
+            if (vo.getParentId().equals(menuVO.getMenuId())) {
+                List<MenuVO> children = menuVO.getChildren();
+                if (CollUtil.isEmpty(children)) {
+                    children = new ArrayList<>();
+                }
+                children.add(vo);
+                menuVO.setChildren(children);
+                this.getMenuTree(vo, menuVOS);
             }
-            menuVO.setChildren(children);
-            this.getMenuTree(j, menuVOS);
         }
+
         return list;
     }
 
     /**
      * 校验相关 菜单格式
-     * @param menuSaveDTO
+     *
+     * @param parentId 父级id
+     * @param type     菜单类型
      */
-    private void check(MenuSaveDTO menuSaveDTO) {
+    private void check(Integer type, Long parentId) {
         //上级菜单类型
         int parentType = Constant.MenuType.CATALOG.getValue();
-        if (menuSaveDTO.getParentId() != 0) {
-            Menu parentMenu = this.getById(menuSaveDTO.getParentId());
+        if (parentId != 0L) {
+            Menu parentMenu = this.getById(parentId);
             parentType = parentMenu.getType();
         }
 
         // 如果当前是 目录、菜单
-        if (menuSaveDTO.getType() == Constant.MenuType.CATALOG.getValue() ||
-                menuSaveDTO.getType() == Constant.MenuType.MENU.getValue()) {
+        if (type == Constant.MenuType.CATALOG.getValue() ||
+                type == Constant.MenuType.MENU.getValue()) {
             if (parentType != Constant.MenuType.CATALOG.getValue()) {
                 throw new CostException("上级菜单只能为目录类型");
             }
@@ -116,11 +157,10 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
         }
 
         // 如果当前是按钮
-        if (menuSaveDTO.getType() == Constant.MenuType.BUTTON.getValue()) {
+        if (type == Constant.MenuType.BUTTON.getValue()) {
             if (parentType != Constant.MenuType.MENU.getValue()) {
                 throw new CostException("上级菜单只能为菜单类型");
             }
-            return;
         }
     }
 }

+ 97 - 0
src/main/java/com/imed/costaccount/service/impl/ReportFormServiceImpl.java

@@ -0,0 +1,97 @@
+package com.imed.costaccount.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.imed.costaccount.mapper.ReportFormMapper;
+import com.imed.costaccount.model.ReportForm;
+import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.vo.RelationVO;
+import com.imed.costaccount.model.vo.ReportFormVO;
+import com.imed.costaccount.service.ReportFormService;
+import com.imed.costaccount.service.ReportRelationService;
+import com.imed.costaccount.utils.BeanUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service("reportFormService")
+public class ReportFormServiceImpl extends ServiceImpl<ReportFormMapper, ReportForm> implements ReportFormService {
+
+    private final ReportRelationService reportRelationService;
+
+    public ReportFormServiceImpl(ReportRelationService reportRelationService) {
+        this.reportRelationService = reportRelationService;
+    }
+
+    /**
+     * 报表项目列表(必定只有两层)
+     *
+     * @param reportType 报表类型
+     * @param user       当前登录用户
+     * @return {@link ReportFormVO}
+     */
+    @Override
+    public List<ReportFormVO> selectList(Integer reportType, User user) {
+        List<ReportForm> list = this.list(
+                new LambdaQueryWrapper<ReportForm>().eq(ReportForm::getReportType, reportType).eq(ReportForm::getHospId, user.getHospId())
+        );
+        if (CollUtil.isEmpty(list)) {
+            return Collections.emptyList();
+        }
+        List<ReportFormVO> reportFormVOS = list.stream().map(i -> {
+            ReportFormVO reportFormVO = BeanUtil.convertObj(i, ReportFormVO.class);
+            if (i.getCalcType() == 1) {
+                reportFormVO.setShowAddRelation(1);
+            } else if (i.getCalcType() == 2) {
+                reportFormVO.setShowAddRelation(2);
+            }
+            return reportFormVO;
+        }).collect(Collectors.toList());
+
+        List<ReportFormVO> roots = reportFormVOS.stream().filter(i -> i.getParentId() == 0L).collect(Collectors.toList());
+        for (ReportFormVO root : roots) {
+            List<ReportFormVO> children = root.getChildren();
+            if (CollUtil.isEmpty(children)) {
+                children = new ArrayList<>();
+            }
+            for (ReportFormVO reportFormVO : reportFormVOS) {
+                if (reportFormVO.getParentId().equals(root.getId())) {
+                    children.add(reportFormVO);
+                    this.setRelation(reportFormVO,user.getHospId());
+                }
+            }
+            root.setChildren(children);
+        }
+        return roots;
+    }
+
+    /**
+     * 填充对应的关联关系
+     * @param reportFormVO {@link ReportFormVO}
+     * @param hospId
+     */
+    private void setRelation(ReportFormVO reportFormVO, Long hospId) {
+        Integer showAddRelation = reportFormVO.getShowAddRelation();
+        if (Objects.isNull(showAddRelation)) {
+            return;
+        }
+        if (showAddRelation == 1) {
+            List<RelationVO> list = reportRelationService.getAccountRelation(reportFormVO.getId(), hospId);
+            reportFormVO.setReportRelations(list);
+            return;
+        } else if (showAddRelation == 2) {
+            List<RelationVO> list = reportRelationService.getShareParam(reportFormVO.getId(), hospId);
+            reportFormVO.setReportRelations(list);
+            return;
+        }
+
+    }
+}

+ 41 - 0
src/main/java/com/imed/costaccount/service/impl/ReportRelationServiceImpl.java

@@ -0,0 +1,41 @@
+package com.imed.costaccount.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.imed.costaccount.mapper.ReportRelationMapper;
+import com.imed.costaccount.model.ReportRelation;
+import com.imed.costaccount.model.vo.RelationVO;
+import com.imed.costaccount.service.ReportRelationService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+@Slf4j
+@Service("reportRelationService")
+public class ReportRelationServiceImpl extends ServiceImpl<ReportRelationMapper, ReportRelation> implements ReportRelationService {
+
+    /**
+     * 报表项目关联的会计科目对象
+     *
+     * @param reportId 报表项目id
+     * @param hospId   医院id
+     * @return {@link RelationVO}
+     */
+    @Override
+    public List<RelationVO> getAccountRelation(Long reportId, Long hospId) {
+        return baseMapper.getAccountRelation(reportId, hospId);
+    }
+
+    /**
+     * 报表项目关联的分摊参数对象
+     *
+     * @param reportId 报表项目id
+     * @param hospId   医院id
+     * @return {@link RelationVO}
+     */
+    @Override
+    public List<RelationVO> getShareParam(Long reportId, Long hospId) {
+        return baseMapper.getShareParam(reportId, hospId);
+    }
+}

+ 117 - 0
src/main/java/com/imed/costaccount/service/impl/RoleMenuServiceImpl.java

@@ -1,14 +1,131 @@
 package com.imed.costaccount.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.mapper.RoleMenuMapper;
+import com.imed.costaccount.model.Menu;
 import com.imed.costaccount.model.RoleMenu;
+import com.imed.costaccount.model.UserRole;
+import com.imed.costaccount.model.dto.RoleMenuDTO;
+import com.imed.costaccount.model.vo.CommonSelectVO;
+import com.imed.costaccount.model.vo.CommonVO;
+import com.imed.costaccount.model.vo.MenuVO;
+import com.imed.costaccount.service.MenuService;
 import com.imed.costaccount.service.RoleMenuService;
+import com.imed.costaccount.utils.BeanUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
 
 
 @Service("roleMenuService")
 public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService {
 
+    private final MenuService menuService;
+
+    public RoleMenuServiceImpl(MenuService menuService) {
+        this.menuService = menuService;
+    }
+
+    /**
+     * 通过roleId 获取对应的菜单列表
+     *
+     * @param roleId
+     * @param hospId
+     * @return
+     */
+    @Override
+    public List<CommonVO> getMenuByRoleId(Long roleId, Long hospId) {
+        return baseMapper.getUsersByRoleId(roleId, hospId);
+    }
+
+
+    /**
+     * 绑定角色和菜单关系时选择列表可回显
+     *
+     * @param roleId 角色id
+     * @param hospId
+     * @return CommonSelectVO
+     */
+    @Override
+    public List<CommonSelectVO> roleMenuList(Long roleId, Long hospId) {
+        List<Menu> list = menuService.list(
+                new LambdaQueryWrapper<Menu>().eq(Menu::getHospId, hospId)
+        );
+        if (CollUtil.isEmpty(list)) {
+            return Collections.emptyList();
+        }
+        List<CommonSelectVO> all = list.stream().map(i -> {
+            CommonSelectVO commonSelectVO = new CommonSelectVO();
+            commonSelectVO.setIsSelect(false);
+            commonSelectVO.setParentId(i.getParentId());
+            commonSelectVO.setId(i.getMenuId());
+            commonSelectVO.setName(i.getName());
+            return commonSelectVO;
+        }).collect(Collectors.toList());
+
+        List<RoleMenu> roleMenus = this.list(
+                new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, roleId)
+        );
+        for (CommonSelectVO commonSelectVO : all) {
+            for (RoleMenu roleMenu : roleMenus) {
+                if (roleMenu.getMenuId().equals(commonSelectVO.getId())) {
+                    commonSelectVO.setIsSelect(true);
+                }
+            }
+        }
+        List<CommonSelectVO> roots = all.stream().filter(i -> i.getParentId() == 0).collect(Collectors.toList());
+        List<CommonSelectVO> vos = new ArrayList<>();
+        for (CommonSelectVO root : roots) {
+            vos.addAll(this.getMenuVO(root, all));
+        }
+        return vos;
+    }
+
+    private List<CommonSelectVO> getMenuVO(CommonSelectVO root, List<CommonSelectVO> all) {
+        List<CommonSelectVO> list = new ArrayList<>();
+        list.add(root);
+        for (CommonSelectVO j : all) {
+            if (j.getParentId().equals(root.getId())) {
+                List<CommonSelectVO> children = root.getChildren();
+                if (CollUtil.isEmpty(children)) {
+                    children = new ArrayList<>();
+                }
+                children.add(j);
+                root.setChildren(children);
+                this.getMenuVO(j, all);
+            }
+        }
+
+        return list;
+    }
 
+    /**
+     * 编辑角色和菜单关系
+     *
+     * @param roleMenuDTO {@link RoleMenuDTO}
+     * @param hospId      医院id
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+    public void saveRoleMenu(RoleMenuDTO roleMenuDTO, Long hospId) {
+        Long roleId = roleMenuDTO.getRoleId();
+        this.removeById(roleId);
+        List<Long> menuIds = roleMenuDTO.getMenuIds();
+        if (CollUtil.isNotEmpty(menuIds)) {
+            List<RoleMenu> roleMenus = menuIds.stream().map(i -> {
+                RoleMenu roleMenu = new RoleMenu();
+                roleMenu.setRoleId(roleId).setMenuId(i).setHospId(hospId);
+                return roleMenu;
+            }).collect(Collectors.toList());
+            this.saveBatch(roleMenus);
+        }
+    }
 }

+ 5 - 3
src/main/java/com/imed/costaccount/service/impl/RoleServiceImpl.java

@@ -12,9 +12,9 @@ import com.imed.costaccount.model.Role;
 import com.imed.costaccount.model.User;
 import com.imed.costaccount.model.dto.RoleEditDTO;
 import com.imed.costaccount.model.dto.RoleSaveDTO;
+import com.imed.costaccount.model.vo.CommonVO;
 import com.imed.costaccount.model.vo.RoleVO;
-import com.imed.costaccount.service.RoleService;
-import com.imed.costaccount.service.UserService;
+import com.imed.costaccount.service.*;
 import com.imed.costaccount.utils.BeanUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -32,6 +32,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
 
     private final UserService userService;
 
+
     public RoleServiceImpl(UserService userService) {
         this.userService = userService;
     }
@@ -76,7 +77,8 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
             RoleVO roleVO = BeanUtil.convertObj(i, RoleVO.class);
             roleVO.setModifyUserName(userService.getUsernameByIdAndHospId(i.getCreateUserId(), user.getHospId()));
             roleVO.setModifyTime(DateUtil.formatDateTime(DateUtil.date(i.getCreateTime())));
-            // todo 相关user 菜单等绑定信息
+//            List<CommonVO> users = userRoleService.getUsersByRoleId(i.getRoleId(), user.getHospId());
+//            roleVO.setUsers(users);
             return roleVO;
         }).collect(Collectors.toList());
 

+ 88 - 0
src/main/java/com/imed/costaccount/service/impl/UserRoleServiceImpl.java

@@ -1,14 +1,102 @@
 package com.imed.costaccount.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.mapper.UserRoleMapper;
 import com.imed.costaccount.model.UserRole;
+import com.imed.costaccount.model.dto.RoleMenuDTO;
+import com.imed.costaccount.model.dto.RoleUserDTO;
+import com.imed.costaccount.model.vo.CommonSelectVO;
+import com.imed.costaccount.model.vo.CommonVO;
+import com.imed.costaccount.model.vo.UserVO;
 import com.imed.costaccount.service.UserRoleService;
+import com.imed.costaccount.service.UserService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
 
 
 @Service("userRoleService")
 public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements UserRoleService {
 
+    private final UserService userService;
+
+    public UserRoleServiceImpl(UserService userService) {
+        this.userService = userService;
+    }
+
+    /**
+     * 通过roleId获取对应的关联人员
+     *
+     * @param roleId 角色id
+     * @param hospId 医院id
+     * @return {"id":1,"username":"tom"}
+     */
+    @Override
+    public List<CommonVO> getUsersByRoleId(Long roleId, Long hospId) {
+        return baseMapper.getUsersByRoleId(roleId, hospId);
+    }
+
+    /**
+     * 绑定角色和人员关系时选择列表(可回显)
+     *
+     * @param roleId 角色id
+     * @param hospId 医院id
+     * @param page
+     * @param pageSize
+     * @return {"id":1,"username":"tom","isSelect": true}
+     */
+    @Override
+    public PageUtils roleUserList(Long roleId, Long hospId, Integer page, Integer pageSize) {
+        // 得到这个角色下所有人员
+        List<CommonVO> users = this.getUsersByRoleId(roleId, hospId);
+        if (CollUtil.isEmpty(users)) {
+            return new PageUtils(Collections.emptyList(), 0, 0, 0);
+        }
+
+        PageUtils userPages = userService.queryList(page, pageSize, hospId, null);
+        List<UserVO> list = (List<UserVO>) userPages.getList();
+        List<Long> userIds = list.stream().map(UserVO::getId).collect(Collectors.toList());
+
+        List<CommonSelectVO> commonSelectVOS = new ArrayList<>();
+        for (Long userId : userIds) {
+            for (CommonVO user : users) {
+                CommonSelectVO commonSelectVO = new CommonSelectVO(user, false);
+                if (userId.equals(user.getId())) {
+                    commonSelectVO.setIsSelect(true);
+                }
+                commonSelectVOS.add(commonSelectVO);
+            }
+        }
+        return new PageUtils(commonSelectVOS, userPages.getTotalCount(), pageSize, page);
+    }
+
+    /**
+     * 编辑角色和人员关系
+     *
+     * @param roleUserDTO {@link RoleUserDTO}
+     * @param hospId      医院id
+     */
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Throwable.class)
+    public void saveRoleUser(RoleUserDTO roleUserDTO, Long hospId) {
+        Long roleId = roleUserDTO.getRoleId();
+        this.removeById(roleId);
+        List<Long> userIds = roleUserDTO.getUserIds();
+        if (CollUtil.isNotEmpty(userIds)) {
+            List<UserRole> userRoles = userIds.stream().map(i -> {
+                UserRole userRole = new UserRole();
+                userRole.setRoleId(roleId).setUserId(i).setHospId(hospId);
+                return userRole;
+            }).collect(Collectors.toList());
+            this.saveBatch(userRoles);
+        }
+    }
 
 }

+ 0 - 102
src/main/java/com/imed/costaccount/utils/PageUtils.java

@@ -1,102 +0,0 @@
-package com.imed.costaccount.utils;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * 分页工具类
- *
- * @author Mark sunlightcs@gmail.com
- */
-public class PageUtils implements Serializable {
-	private static final long serialVersionUID = 1L;
-	/**
-	 * 总记录数
-	 */
-	private int totalCount;
-	/**
-	 * 每页记录数
-	 */
-	private int pageSize;
-	/**
-	 * 总页数
-	 */
-	private int totalPage;
-	/**
-	 * 当前页数
-	 */
-	private int currPage;
-	/**
-	 * 列表数据
-	 */
-	private List<?> list;
-	
-	/**
-	 * 分页
-	 * @param list        列表数据
-	 * @param totalCount  总记录数
-	 * @param pageSize    每页记录数
-	 * @param currPage    当前页数
-	 */
-	public PageUtils(List<?> list, int totalCount, int pageSize, int currPage) {
-		this.list = list;
-		this.totalCount = totalCount;
-		this.pageSize = pageSize;
-		this.currPage = currPage ;
-		this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
-	}
-
-	/**
-	 * 分页
-	 */
-	public PageUtils(IPage<?> page) {
-		this.list = page.getRecords();
-		this.totalCount = (int)page.getTotal();
-		this.pageSize = (int)page.getSize();
-		this.currPage = (int)page.getCurrent();
-		this.totalPage = (int)page.getPages();
-	}
-
-	public int getTotalCount() {
-		return totalCount;
-	}
-
-	public void setTotalCount(int totalCount) {
-		this.totalCount = totalCount;
-	}
-
-	public int getPageSize() {
-		return pageSize;
-	}
-
-	public void setPageSize(int pageSize) {
-		this.pageSize = pageSize;
-	}
-
-	public int getTotalPage() {
-		return totalPage;
-	}
-
-	public void setTotalPage(int totalPage) {
-		this.totalPage = totalPage;
-	}
-
-	public int getCurrPage() {
-		return currPage;
-	}
-
-	public void setCurrPage(int currPage) {
-		this.currPage = currPage;
-	}
-
-	public List<?> getList() {
-		return list;
-	}
-
-	public void setList(List<?> list) {
-		this.list = list;
-	}
-	
-}

+ 1 - 1
src/main/java/com/imed/costaccount/web/AccountingController.java

@@ -1,5 +1,6 @@
 package com.imed.costaccount.web;
 
+import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
 import com.imed.costaccount.model.User;
 import com.imed.costaccount.model.dto.AccountingEditDTO;
@@ -7,7 +8,6 @@ import com.imed.costaccount.model.dto.AccountingSaveDTO;
 import com.imed.costaccount.model.vo.AccountVO;
 import com.imed.costaccount.model.vo.SelectAccountingVO;
 import com.imed.costaccount.service.AccountingService;
-import com.imed.costaccount.utils.PageUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;

+ 78 - 0
src/main/java/com/imed/costaccount/web/CostIncomeGroupController.java

@@ -0,0 +1,78 @@
+package com.imed.costaccount.web;
+
+import com.imed.costaccount.common.util.Result;
+import com.imed.costaccount.common.util.UserContext;
+import com.imed.costaccount.model.CostIncomeGroup;
+import com.imed.costaccount.service.CostIncomeGroupService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+
+
+/**
+ * 收入归集
+ *
+ * @author KCYG
+ * @date 2021-08-03 16:15:20
+ */
+@RestController
+@RequestMapping("/costincomegroup")
+public class CostIncomeGroupController {
+    @Autowired
+    private CostIncomeGroupService costIncomeGroupService;
+
+    /**
+     * 分页查询列表
+     */
+    @GetMapping("/list")
+    @ApiOperation("分页获取收入归集前数据")
+    public Result list(@RequestParam(defaultValue = "1", value = "current") Integer current,
+                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+                       @RequestParam(value = "dateTime",required = false) String dateTime,
+                       @RequestParam(value = "responsibilityCode",required = false) String responsibilityCode,
+                       @RequestParam(value = "accountCode",required = false) String accountCode){
+        Long hospId = UserContext.getHospId();
+
+        return Result.ok();
+    }
+
+
+    /**
+     * 信息
+     */
+    @GetMapping("/info/{id}")
+    public Result info(@PathVariable("id") Long id){
+		CostIncomeGroup costIncomeGroup = costIncomeGroupService.getById(id);
+        return Result.ok(costIncomeGroup);
+    }
+
+    /**
+     * 保存
+     */
+    @PostMapping("/save")
+    public Result save(@RequestBody CostIncomeGroup costIncomeGroup){
+		costIncomeGroupService.save(costIncomeGroup);
+        return Result.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @PostMapping("/update")
+    public Result update(@RequestBody CostIncomeGroup costIncomeGroup){
+		costIncomeGroupService.updateById(costIncomeGroup);
+        return Result.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/delete")
+    public Result delete(@RequestBody Long[] ids){
+		costIncomeGroupService.removeByIds(Arrays.asList(ids));
+        return Result.ok();
+    }
+
+}

+ 5 - 5
src/main/java/com/imed/costaccount/web/CostIncomeGroupSetController.java

@@ -5,6 +5,7 @@ import com.imed.costaccount.common.util.Result;
 import com.imed.costaccount.common.util.UserContext;
 import com.imed.costaccount.model.dto.CostIncomeGroupSetEditDto;
 import com.imed.costaccount.model.dto.CostIncomeGroupSetSaveDto;
+import com.imed.costaccount.model.dto.IncomeAccountDto;
 import com.imed.costaccount.model.vo.CostIncomeGroupSetVO;
 import com.imed.costaccount.service.CostIncomeGroupSetService;
 import com.imed.costaccount.service.impl.AccountingServiceImpl;
@@ -15,7 +16,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.util.Arrays;
-import java.util.List;
 
 
 /**
@@ -84,7 +84,7 @@ public class CostIncomeGroupSetController{
      * 删除
      */
     @PostMapping("/delete")
-    @ApiOperation("删除收入归集设置数据")
+    @ApiOperation("删除收入归集设置数据")
     public Result delete(@RequestBody Long[] ids){
 		costIncomeGroupSetService.removeByIds(Arrays.asList(ids));
         return Result.ok();
@@ -95,9 +95,9 @@ public class CostIncomeGroupSetController{
      */
     @PostMapping("/addIncomeAccount")
     @ApiOperation("添加需要排除的成本科目")
-    public Result addIncomeAccount(Integer id,String[] accountCode){
-        List<String> accountList = Arrays.asList(accountCode);
-        costIncomeGroupSetService.updateAccountCode(id,accountList);
+    public Result addIncomeAccount(@RequestBody IncomeAccountDto incomeAccountDto){
+
+        costIncomeGroupSetService.updateAccountCode(incomeAccountDto);
         return Result.ok();
     }
 

+ 1 - 1
src/main/java/com/imed/costaccount/web/CostShareLevelController.java

@@ -1,12 +1,12 @@
 package com.imed.costaccount.web;
 
+import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
 import com.imed.costaccount.model.User;
 import com.imed.costaccount.model.dto.CostShareLevelEditDto;
 import com.imed.costaccount.model.dto.CostShareLevelSaveDto;
 import com.imed.costaccount.model.vo.CostShareLevelVO;
 import com.imed.costaccount.service.CostShareLevelService;
-import com.imed.costaccount.utils.PageUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.shiro.SecurityUtils;

+ 6 - 4
src/main/java/com/imed/costaccount/web/MenuController.java

@@ -3,6 +3,7 @@ package com.imed.costaccount.web;
 import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
 import com.imed.costaccount.model.Menu;
+import com.imed.costaccount.model.dto.MenuEditDTO;
 import com.imed.costaccount.model.dto.MenuSaveDTO;
 import com.imed.costaccount.service.MenuService;
 import io.swagger.annotations.Api;
@@ -47,20 +48,21 @@ public class MenuController extends AbstractController {
     public Result list(@RequestParam(defaultValue = "1", value = "current") Integer page,
                        @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
         PageUtils pageUtils = menuService.selectList(page, pageSize, getUser());
-        return Result.ok();
+        return Result.ok(pageUtils);
     }
 
     @ApiOperation("编辑某个菜单")
     @PostMapping("/edit")
-    public Result update(@RequestBody @Valid Menu menu) {
-        menuService.updateById(menu);
+    public Result update(@RequestBody @Valid MenuEditDTO menuDTO) {
+        menuService.updateMenu(menuDTO,getUser());
         return Result.ok();
     }
 
     /**
      * 删除
      */
-    @RequestMapping("/delete")
+    @ApiOperation("删除某个菜单")
+    @PostMapping("/delete")
     public Result delete(@RequestBody Long[] menuIds) {
         menuService.removeByIds(Arrays.asList(menuIds));
         return Result.ok();

+ 74 - 0
src/main/java/com/imed/costaccount/web/ReportFormController.java

@@ -0,0 +1,74 @@
+package com.imed.costaccount.web;
+
+import com.imed.costaccount.common.util.PageUtils;
+import com.imed.costaccount.common.util.Result;
+import com.imed.costaccount.model.ReportForm;
+import com.imed.costaccount.model.dto.ReportFormSaveDTO;
+import com.imed.costaccount.model.vo.ReportFormVO;
+import com.imed.costaccount.service.ReportFormService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 报表项目
+ *
+ * @author huangrui
+ * @date 2021-08-03 13:53:52
+ */
+@Api(tags="报表项目")
+@RestController
+@RequestMapping("/costAccount/reportForm/")
+public class ReportFormController extends AbstractController{
+
+    private final ReportFormService reportFormService;
+
+    public ReportFormController(ReportFormService reportFormService) {
+        this.reportFormService = reportFormService;
+    }
+
+    /**
+     * 按报表类型查询报表项目
+     */
+    @ApiOperation("按报表类型查询报表项目列表")
+    @GetMapping("/list")
+    public Result list(@RequestParam Integer reportType) {
+        List<ReportFormVO> list = reportFormService.selectList(reportType, getUser());
+        PageUtils pageUtils = new PageUtils(list, 0, 0, 0);
+        return Result.ok(pageUtils);
+    }
+
+    /**
+     * 保存
+     */
+    @ApiOperation("保存报表项目")
+    @PostMapping("/save")
+    public Result save(@RequestBody @Valid ReportFormSaveDTO reportFormDTO){
+//		reportFormService.save(reportForm);
+        return Result.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    public Result update(@RequestBody ReportForm reportForm){
+		reportFormService.updateById(reportForm);
+        return Result.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    public Result delete(@RequestBody Long[] ids){
+		reportFormService.removeByIds(Arrays.asList(ids));
+        return Result.ok();
+    }
+
+}

+ 79 - 0
src/main/java/com/imed/costaccount/web/ReportRelationController.java

@@ -0,0 +1,79 @@
+package com.imed.costaccount.web;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import com.imed.costaccount.common.util.Result;
+import com.imed.costaccount.model.User;
+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.ReportRelation;
+import com.imed.costaccount.service.ReportRelationService;
+
+
+/**
+ * 报表对应项目设置关系
+ *
+ * @author huangrui
+ * @date 2021-08-03 13:53:52
+ */
+@RestController
+@RequestMapping("/reportrelation")
+public class ReportRelationController {
+    @Autowired
+    private ReportRelationService reportRelationService;
+
+    /**
+     * 分页查询列表
+     */
+    @RequestMapping("/list")
+    public Result list(@RequestParam(defaultValue = "1", value = "page") Integer page,
+                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize){
+        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        return Result.ok();
+    }
+
+
+    /**
+     * 信息
+     */
+    @RequestMapping("/info/{id}")
+    public Result info(@PathVariable("id") Long id){
+		ReportRelation reportRelation = reportRelationService.getById(id);
+        return Result.ok(reportRelation);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    public Result save(@RequestBody ReportRelation reportRelation){
+		reportRelationService.save(reportRelation);
+        return Result.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    public Result update(@RequestBody ReportRelation reportRelation){
+		reportRelationService.updateById(reportRelation);
+        return Result.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    public Result delete(@RequestBody Long[] ids){
+		reportRelationService.removeByIds(Arrays.asList(ids));
+        return Result.ok();
+    }
+
+}

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

@@ -1,11 +1,11 @@
 package com.imed.costaccount.web;
 
+import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
 import com.imed.costaccount.model.User;
 import com.imed.costaccount.model.dto.DepartDTO;
 import com.imed.costaccount.model.vo.CenterDepartmentVO;
 import com.imed.costaccount.service.ResponsibilityDepartmentService;
-import com.imed.costaccount.utils.PageUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.shiro.SecurityUtils;

+ 64 - 12
src/main/java/com/imed/costaccount/web/RoleController.java

@@ -2,35 +2,44 @@ package com.imed.costaccount.web;
 
 import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
-import com.imed.costaccount.model.Role;
 import com.imed.costaccount.model.dto.RoleEditDTO;
+import com.imed.costaccount.model.dto.RoleMenuDTO;
 import com.imed.costaccount.model.dto.RoleSaveDTO;
+import com.imed.costaccount.model.dto.RoleUserDTO;
+import com.imed.costaccount.model.vo.CommonSelectVO;
+import com.imed.costaccount.model.vo.CommonVO;
+import com.imed.costaccount.service.RoleMenuService;
 import com.imed.costaccount.service.RoleService;
+import com.imed.costaccount.service.UserRoleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.util.Arrays;
+import java.util.List;
 
 
-@Api(tags="角色管理相关")
+@Api(tags = "角色管理相关")
 @RestController
 @RequestMapping("/costAccount/role/")
-public class RoleController extends AbstractController{
+public class RoleController extends AbstractController {
 
     private final RoleService roleService;
+    private final RoleMenuService roleMenuService;
+    private final UserRoleService userRoleService;
 
-    public RoleController(RoleService roleService) {
+    public RoleController(RoleService roleService, RoleMenuService roleMenuService, UserRoleService userRoleService) {
         this.roleService = roleService;
+        this.roleMenuService = roleMenuService;
+        this.userRoleService = userRoleService;
     }
 
 
     @ApiOperation("新增一个角色")
     @PostMapping("/save")
-    public Result save(@RequestBody @Valid RoleSaveDTO roleSaveDTO){
-        roleService.saveRole(roleSaveDTO,getUser());
+    public Result save(@RequestBody @Valid RoleSaveDTO roleSaveDTO) {
+        roleService.saveRole(roleSaveDTO, getUser());
         return Result.ok();
     }
 
@@ -39,23 +48,66 @@ public class RoleController extends AbstractController{
     @GetMapping("/list")
     public Result list(@RequestParam(defaultValue = "1", value = "current") Integer page,
                        @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
-                       @RequestParam(value = "keyword",required = false) String keyword){
+                       @RequestParam(value = "keyword", required = false) String keyword) {
         PageUtils pageUtils = roleService.selectList(page, pageSize, keyword, getUser());
         return Result.ok(pageUtils);
     }
 
     @ApiOperation("编辑某个角色")
     @PostMapping("/edit")
-    public Result update(@RequestBody @Valid RoleEditDTO roleEditDTO){
-		roleService.updateRole(roleEditDTO,getUserId());
+    public Result update(@RequestBody @Valid RoleEditDTO roleEditDTO) {
+        roleService.updateRole(roleEditDTO, getUserId());
         return Result.ok();
     }
 
     @ApiOperation("删除")
     @PostMapping("/delete")
-    public Result delete(@RequestBody Long[] roleIds){
-		roleService.removeByIds(Arrays.asList(roleIds));
+    public Result delete(@RequestBody Long[] roleIds) {
+        roleService.removeByIds(Arrays.asList(roleIds));
         return Result.ok();
     }
 
+    @ApiOperation("角色对应的人员列表")
+    @GetMapping("/roleUsers")
+    public Result roleUsers(@RequestParam Long roleId) {
+        List<CommonVO> roleUsers = userRoleService.getUsersByRoleId(roleId, getHospId());
+        return Result.ok(roleUsers);
+    }
+
+    @ApiOperation("角色对应的菜单列表")
+    @GetMapping("/roleMenus")
+    public Result roleMenus(@RequestParam Long roleId) {
+        List<CommonVO> roleUsers = roleMenuService.getMenuByRoleId(roleId, getUser().getHospId());
+        return Result.ok(roleUsers);
+    }
+
+    @ApiOperation("绑定角色和人员关系时选择列表(可回显)")
+    @GetMapping("/roleUserList")
+    public Result roleUserList(@RequestParam Long roleId,
+                               @RequestParam(defaultValue = "1", value = "current") Integer page,
+                               @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+        PageUtils list = userRoleService.roleUserList(roleId, getUser().getHospId(),page,pageSize);
+        return Result.ok(list);
+    }
+
+    @ApiOperation("编辑角色和人员关系")
+    @PostMapping("/saveRoleUser")
+    public Result saveRoleUser(@RequestBody @Valid RoleUserDTO roleUserDTO) {
+        userRoleService.saveRoleUser(roleUserDTO, getUser().getHospId());
+        return Result.ok();
+    }
+
+    @ApiOperation("绑定角色和菜单关系时选择列表可回显")
+    @GetMapping("/roleMenuList")
+    public Result roleMenuList(@RequestParam Long roleId) {
+        List<CommonSelectVO> list = roleMenuService.roleMenuList(roleId, getUser().getHospId());
+        return Result.ok(list);
+    }
+
+    @ApiOperation("编辑角色和菜单关系")
+    @PostMapping("/saveRoleMenu")
+    public Result saveRoleMenu(@RequestBody @Valid RoleMenuDTO roleMenuDTO) {
+        roleMenuService.saveRoleMenu(roleMenuDTO, getUser().getHospId());
+        return Result.ok();
+    }
 }

+ 25 - 0
src/main/resources/mapper/CostIncomeGroupMapper.xml

@@ -0,0 +1,25 @@
+<?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.CostIncomeGroupMapper">
+
+	<!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.imed.costaccount.model.CostIncomeGroup" id="costIncomeGroupMap">
+        <result property="id" column="id"/>
+        <result property="openDepartmentCode" column="open_department_code"/>
+        <result property="openResponsibilityCode" column="open_responsibility_code"/>
+        <result property="startDepartmentCode" column="start_department_code"/>
+        <result property="startResponsibilityCode" column="start_responsibility_code"/>
+        <result property="productCode" column="product_code"/>
+        <result property="accountCode" column="account_code"/>
+        <result property="isIncome" column="is_income"/>
+        <result property="amount" column="amount"/>
+        <result property="hospId" column="hosp_id"/>
+        <result property="dateYear" column="date_year"/>
+        <result property="dateMonth" column="date_month"/>
+        <result property="createTime" column="create_time"/>
+        <result property="deleteTime" column="delete_time"/>
+    </resultMap>
+
+
+</mapper>

+ 23 - 0
src/main/resources/mapper/ReportFormMapper.xml

@@ -0,0 +1,23 @@
+<?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.ReportFormMapper">
+
+	<!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.imed.costaccount.model.ReportForm" id="reportFormMap">
+        <result property="id" column="id"/>
+        <result property="num" column="num"/>
+        <result property="reportName" column="report_name"/>
+        <result property="parentId" column="parent_id"/>
+        <result property="calcType" column="calc_type"/>
+        <result property="reportType" column="report_type"/>
+        <result property="calcFormula" column="calc_formula"/>
+        <result property="sort" column="sort"/>
+        <result property="ratioBase" column="ratio_base"/>
+        <result property="hospId" column="hosp_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="deleteTime" column="delete_time"/>
+    </resultMap>
+
+
+</mapper>

+ 40 - 0
src/main/resources/mapper/ReportRelationMapper.xml

@@ -0,0 +1,40 @@
+<?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.ReportRelationMapper">
+
+    <!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.imed.costaccount.model.ReportRelation" id="reportRelationMap">
+        <result property="id" column="id"/>
+        <result property="reportId" column="report_id"/>
+        <result property="relationCode" column="relation_code"/>
+        <result property="hospId" column="hosp_id"/>
+        <result property="relation" column="relation"/>
+        <result property="createTime" column="create_time"/>
+        <result property="deleteTime" column="delete_time"/>
+    </resultMap>
+    <select id="getAccountRelation" resultType="com.imed.costaccount.model.vo.RelationVO">
+        select ca.accounting_code as code, ca.accounting_name as name, 1 as relation
+        from cost_report_relation crr
+                 left join cost_accounting ca on crr.relation_code = ca.accounting_code
+        where crr.delete_time = 0
+          and ca.delete_time = 0
+          and crr.hosp_id = #{hospId}
+          and ca.hosp_id = #{hospId}
+          and crr.report_id = #{reportId}
+    </select>
+
+    <select id="getShareParam" resultType="com.imed.costaccount.model.vo.RelationVO">
+        select chp.share_param_code as code, chp.share_param_name as name, 2 as relation
+        from cost_report_relation crr
+                 left join cost_share_param chp on crr.relation_code = chp.share_param_code
+        where crr.delete_time = 0
+          and chp.delete_time = 0
+          and crr.hosp_id = #{hospId}
+          and chp.hosp_id = #{hospId}
+          and crr.report_id = #{reportId}
+
+    </select>
+
+
+</mapper>

+ 9 - 1
src/main/resources/mapper/RoleMenuMapper.xml

@@ -3,13 +3,21 @@
 
 <mapper namespace="com.imed.costaccount.mapper.RoleMenuMapper">
 
-	<!-- 可根据自己的需求,是否要使用 -->
+    <!-- 可根据自己的需求,是否要使用 -->
     <resultMap type="com.imed.costaccount.model.RoleMenu" id="roleMenuMap">
         <result property="id" column="id"/>
         <result property="roleId" column="role_id"/>
         <result property="menuId" column="menu_id"/>
         <result property="hospId" column="hosp_id"/>
     </resultMap>
+    <select id="getUsersByRoleId" resultType="com.imed.costaccount.model.vo.CommonVO">
+        select sm.menu_id as id, sm.name as name
+        from sys_role_menu srm left join sys_menu sm
+        on sm.menu_id = srm.menu_id
+        where srm.role_id = #{roleId}
+          and srm.hosp_id = #{hospId}
+          and sm.hosp_id = #{hospId}
+    </select>
 
 
 </mapper>

+ 10 - 1
src/main/resources/mapper/UserRoleMapper.xml

@@ -3,13 +3,22 @@
 
 <mapper namespace="com.imed.costaccount.mapper.UserRoleMapper">
 
-	<!-- 可根据自己的需求,是否要使用 -->
+    <!-- 可根据自己的需求,是否要使用 -->
     <resultMap type="com.imed.costaccount.model.UserRole" id="userRoleMap">
         <result property="id" column="id"/>
         <result property="userId" column="user_id"/>
         <result property="roleId" column="role_id"/>
         <result property="hospId" column="hosp_id"/>
     </resultMap>
+    <select id="getUsersByRoleId" resultType="com.imed.costaccount.model.vo.CommonVO">
+        select su.id as id, su.name as name
+        from sys_user_role sur left join sys_user su
+        on su.id = sur.user_id
+        where su.delete_time = 0
+          and sur.role_id = #{roleId}
+          and sur.hosp_id = #{hospId}
+          and su.hosp_id = #{hospId}
+    </select>
 
 
 </mapper>