浏览代码

成本1.0 迁入及bug修复

wangyongsheng 1 年之前
父节点
当前提交
bd283e80b5
共有 44 个文件被更改,包括 1055 次插入336 次删除
  1. 29 0
      src/main/java/com/kcim/common/util/excel/entity/ShareParamTemplateEntity.java
  2. 2 0
      src/main/java/com/kcim/dao/model/dto/ReportRelationDTO.java
  3. 100 0
      src/main/java/com/kcim/dao/model/dto/SysDepartment.java
  4. 26 0
      src/main/java/com/kcim/dao/repository/AccountingProductRepository.java
  5. 25 0
      src/main/java/com/kcim/dao/repository/CostResponsibilityDepartmentRepository.java
  6. 29 0
      src/main/java/com/kcim/dao/repository/ResponsibilityDepartmentRepository.java
  7. 0 1
      src/main/java/com/kcim/dao/repository/SpaceRepository.java
  8. 4 0
      src/main/java/com/kcim/endPoint/CenterEndPoint.java
  9. 3 0
      src/main/java/com/kcim/service/CenterService.java
  10. 2 1
      src/main/java/com/kcim/service/CostDepartmentProfitService.java
  11. 2 0
      src/main/java/com/kcim/service/DepartmentService.java
  12. 2 0
      src/main/java/com/kcim/service/ResponsibilityDepartmentService.java
  13. 9 4
      src/main/java/com/kcim/service/impl/AccountingItemMapServiceImpl.java
  14. 1 0
      src/main/java/com/kcim/service/impl/AccountingServiceImpl.java
  15. 7 0
      src/main/java/com/kcim/service/impl/CenterServiceImpl.java
  16. 62 18
      src/main/java/com/kcim/service/impl/ComputeClinicalPathwayCostServiceImpl.java
  17. 128 87
      src/main/java/com/kcim/service/impl/ComputeDiseaseCostServiceImpl.java
  18. 64 21
      src/main/java/com/kcim/service/impl/ComputeGroupCostServiceImpl.java
  19. 16 6
      src/main/java/com/kcim/service/impl/ComputeItemCostServiceImpl.java
  20. 26 19
      src/main/java/com/kcim/service/impl/ComputePatientCostServiceImpl.java
  21. 18 2
      src/main/java/com/kcim/service/impl/CostAccountShareServiceImpl.java
  22. 3 1
      src/main/java/com/kcim/service/impl/CostCostingGroupServiceImpl.java
  23. 60 4
      src/main/java/com/kcim/service/impl/CostDepartmentProfitServiceImpl.java
  24. 12 5
      src/main/java/com/kcim/service/impl/CostIncomeGroupServiceImpl.java
  25. 10 0
      src/main/java/com/kcim/service/impl/CostOtherPaymentsServiceImpl.java
  26. 26 1
      src/main/java/com/kcim/service/impl/CostResponsibilityDepartmentServiceImpl.java
  27. 23 13
      src/main/java/com/kcim/service/impl/DepartmentServiceImpl.java
  28. 7 0
      src/main/java/com/kcim/service/impl/EmpCostMapServiceImpl.java
  29. 67 3
      src/main/java/com/kcim/service/impl/HospProfitAndLossServiceImpl.java
  30. 52 75
      src/main/java/com/kcim/service/impl/IncomeCollectionServiceImpl.java
  31. 24 6
      src/main/java/com/kcim/service/impl/ProductServiceImpl.java
  32. 6 0
      src/main/java/com/kcim/service/impl/ReportFormServiceImpl.java
  33. 45 13
      src/main/java/com/kcim/service/impl/ReportRelationServiceImpl.java
  34. 5 0
      src/main/java/com/kcim/service/impl/ResponsibilityDepartmentServiceImpl.java
  35. 78 12
      src/main/java/com/kcim/service/impl/ResponsibilityServiceImpl.java
  36. 8 2
      src/main/java/com/kcim/service/impl/ShareParamValueServiceImpl.java
  37. 2 1
      src/main/java/com/kcim/vo/CostAccountShareVO.java
  38. 2 0
      src/main/java/com/kcim/vo/CostOtherPaymentsVO.java
  39. 1 1
      src/main/java/com/kcim/vo/RelationVO.java
  40. 4 1
      src/main/java/com/kcim/web/CostDepartmentProfitController.java
  41. 2 2
      src/main/java/com/kcim/web/CostIncomeFileController.java
  42. 60 34
      src/main/java/com/kcim/web/ExcelController.java
  43. 1 1
      src/main/resources/application-dev.yml
  44. 2 2
      src/main/resources/application.yml

+ 29 - 0
src/main/java/com/kcim/common/util/excel/entity/ShareParamTemplateEntity.java

@@ -0,0 +1,29 @@
+package com.kcim.common.util.excel.entity;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @program: CostAccount
+ * @description: 成本分摊参数导出模版
+ * @author: Wang.YS
+ * @create: 2023-12-11 10:43
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ExcelTarget("ShareParamTemplateEntity")
+public class ShareParamTemplateEntity {
+
+    @Excel(name="空间编码",width = 20)
+    private String shareParamCode;
+
+
+
+
+}

+ 2 - 0
src/main/java/com/kcim/dao/model/dto/ReportRelationDTO.java

@@ -24,4 +24,6 @@ public class ReportRelationDTO {
 
 
     private List<String> relationCodes;
     private List<String> relationCodes;
 
 
+    private Integer reportType;
+
 }
 }

+ 100 - 0
src/main/java/com/kcim/dao/model/dto/SysDepartment.java

@@ -0,0 +1,100 @@
+package com.kcim.dao.model.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 
+ * 
+ * @author wangyongsheng
+ * @email 
+ * @date 2022-07-15 16:57:32
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+
+public class SysDepartment implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	private Integer id;
+
+	/**
+	 * 院区id
+	 */
+	private Long hospId;
+
+	/**
+	 * 科室代码
+	 */
+	private String code;
+	/**
+	 * 科室名称
+	 */
+	private String name;
+	/**
+	 *  上级科室id
+	 */
+	private Integer parentId;
+	/**
+	 * 核算科室
+	 */
+	private Integer computeId;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 修改人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 修改时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 作废标志
+	 */
+	@JsonIgnore
+	private Integer delFlag;
+
+
+
+	private String type;
+
+
+	private String remark;
+
+}

+ 26 - 0
src/main/java/com/kcim/dao/repository/AccountingProductRepository.java

@@ -0,0 +1,26 @@
+package com.kcim.dao.repository;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.common.util.UserContext;
+import com.kcim.dao.mapper.AccountingProductMapper;
+import com.kcim.dao.model.AccountingProduct;
+import com.kcim.dao.model.CostResponsibilityDepartment;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @program: CostAccount
+ * @description:
+ * @author: Wang.YS
+ * @create: 2023-12-13 16:39
+ **/
+@Repository
+public class AccountingProductRepository extends ServiceImpl<AccountingProductMapper, AccountingProduct> {
+    public List<AccountingProduct> getList() {
+        LambdaQueryWrapper<AccountingProduct> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AccountingProduct::getHospId, UserContext.getHospId());
+        return this.list(queryWrapper);
+    }
+}

+ 25 - 0
src/main/java/com/kcim/dao/repository/CostResponsibilityDepartmentRepository.java

@@ -0,0 +1,25 @@
+package com.kcim.dao.repository;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.common.util.UserContext;
+import com.kcim.dao.mapper.CostResponsibilityDepartmentMapper;
+import com.kcim.dao.model.CostResponsibilityDepartment;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @program: CostAccount
+ * @description:
+ * @author: Wang.YS
+ * @create: 2023-12-13 16:22
+ **/
+@Repository
+public class CostResponsibilityDepartmentRepository extends ServiceImpl<CostResponsibilityDepartmentMapper, CostResponsibilityDepartment> {
+    public List<CostResponsibilityDepartment> getList() {
+        LambdaQueryWrapper<CostResponsibilityDepartment> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CostResponsibilityDepartment::getHospId, UserContext.getHospId());
+        return this.list(queryWrapper);
+    }
+}

+ 29 - 0
src/main/java/com/kcim/dao/repository/ResponsibilityDepartmentRepository.java

@@ -0,0 +1,29 @@
+package com.kcim.dao.repository;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.common.util.UserContext;
+import com.kcim.dao.mapper.ResponsibilityDepartmentMapper;
+import com.kcim.dao.model.ResponsibilityDepartment;
+import jdk.internal.dynalink.linker.LinkerServices;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @program: CostAccount
+ * @description:
+ * @author: Wang.YS
+ * @create: 2023-12-08 15:07
+ **/
+@Repository
+public class ResponsibilityDepartmentRepository extends ServiceImpl<ResponsibilityDepartmentMapper,ResponsibilityDepartment> {
+
+
+    public List<ResponsibilityDepartment> getResponsibilityDepartment() {
+        LambdaQueryWrapper<ResponsibilityDepartment> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ResponsibilityDepartment::getHospId, UserContext.getHospId());
+        return this.list(queryWrapper);
+
+    }
+}

+ 0 - 1
src/main/java/com/kcim/dao/repository/SpaceRepository.java

@@ -65,7 +65,6 @@ public class SpaceRepository extends ServiceImpl<SpaceMapper, Space> {
         LambdaQueryWrapper<Space> queryWrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<Space> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Space::getHospId, UserContext.getCurrentLoginHospId());
         queryWrapper.eq(Space::getHospId, UserContext.getCurrentLoginHospId());
         queryWrapper.eq(Space::getParentCode, NumberConstant.ZERO_S);
         queryWrapper.eq(Space::getParentCode, NumberConstant.ZERO_S);
-        queryWrapper.eq(Space::getType, NumberConstant.ZERO_S);
         return this.list(queryWrapper);
         return this.list(queryWrapper);
     }
     }
 
 

+ 4 - 0
src/main/java/com/kcim/endPoint/CenterEndPoint.java

@@ -37,6 +37,10 @@ public interface CenterEndPoint {
     @GetMapping("/api/getDepartment")
     @GetMapping("/api/getDepartment")
     Object getDepartment();
     Object getDepartment();
 
 
+    @GetMapping("/api/getDepartmentFilter")
+    Object getDepartmentFilter(@RequestParam(required = false,name = "departName") String departName);
+
+
     @GetMapping("/api/getParameter")
     @GetMapping("/api/getParameter")
     Object getParameter(@RequestParam(required = false,name = "systemId")Long systemId,
     Object getParameter(@RequestParam(required = false,name = "systemId")Long systemId,
                  @RequestParam(required = false,name="parameterCode") Long parameterCode);
                  @RequestParam(required = false,name="parameterCode") Long parameterCode);

+ 3 - 0
src/main/java/com/kcim/service/CenterService.java

@@ -1,5 +1,6 @@
 package com.kcim.service;
 package com.kcim.service;
 
 
+import com.kcim.dao.model.dto.SysDepartment;
 import com.kcim.vo.CommonParameterVo;
 import com.kcim.vo.CommonParameterVo;
 import com.kcim.vo.DictDataVo;
 import com.kcim.vo.DictDataVo;
 import com.kcim.vo.KCClassVo;
 import com.kcim.vo.KCClassVo;
@@ -27,6 +28,8 @@ public interface CenterService {
 
 
     Map<String, String> getDepartment();
     Map<String, String> getDepartment();
 
 
+    List<SysDepartment>  getDepartmentFilter(String departmentName);
+
     CommonParameterVo getParameter(Long parameterCode);
     CommonParameterVo getParameter(Long parameterCode);
 
 
     List<KCClassVo>  getKCClass();
     List<KCClassVo>  getKCClass();

+ 2 - 1
src/main/java/com/kcim/service/CostDepartmentProfitService.java

@@ -6,6 +6,7 @@ import com.kcim.common.util.PageUtils;
 import com.kcim.dao.model.CostDepartmentProfit;
 import com.kcim.dao.model.CostDepartmentProfit;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Sheet;
 
 
+import java.io.IOException;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -48,7 +49,7 @@ public interface CostDepartmentProfitService extends IService<CostDepartmentProf
      * @param hospId
      * @param hospId
      * @param reportType
      * @param reportType
      */
      */
-    void getDepartProfitReport(String date, Long hospId, Integer reportType);
+    void getDepartProfitReport(String date, Long hospId, Integer reportType) throws IOException;
 
 
     /**
     /**
      *  删除科室损益数据
      *  删除科室损益数据

+ 2 - 0
src/main/java/com/kcim/service/DepartmentService.java

@@ -61,5 +61,7 @@ public interface DepartmentService extends IService<Department> {
      * @param idList 科室Id集合
      * @param idList 科室Id集合
      */
      */
     void deleteByIds(List<Integer> idList);
     void deleteByIds(List<Integer> idList);
+
+    List<Department> getDepartments();
 }
 }
 
 

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

@@ -29,5 +29,7 @@ public interface ResponsibilityDepartmentService extends IService<Responsibility
      * @param departDTO
      * @param departDTO
      */
      */
     void saveCenterDepart(DepartDTO departDTO);
     void saveCenterDepart(DepartDTO departDTO);
+
+
 }
 }
 
 

+ 9 - 4
src/main/java/com/kcim/service/impl/AccountingItemMapServiceImpl.java

@@ -64,7 +64,9 @@ public class AccountingItemMapServiceImpl implements AccountingItemMapService {
             Map<Long, Accounting> accountingMap = allIncome.stream().collect(Collectors.toMap(Accounting::getId, accounting -> accounting, (a, b) -> b));
             Map<Long, Accounting> accountingMap = allIncome.stream().collect(Collectors.toMap(Accounting::getId, accounting -> accounting, (a, b) -> b));
             List<Accounting> parentAccounting = new ArrayList<>();
             List<Accounting> parentAccounting = new ArrayList<>();
 
 
-            collect.forEach(accounting -> getParentAccount(accounting, accountingMap, parentAccounting));
+            for (Accounting accounting1 : collect) {
+                getParentAccount(accounting1, accountingMap, parentAccounting);
+            }
             if(!CollectionUtils.isEmpty(parentAccounting)){
             if(!CollectionUtils.isEmpty(parentAccounting)){
                 accountingList.addAll(parentAccounting);
                 accountingList.addAll(parentAccounting);
             }
             }
@@ -146,10 +148,13 @@ public class AccountingItemMapServiceImpl implements AccountingItemMapService {
      */
      */
     private void getParentAccount(Accounting accounting,Map<Long,Accounting> accountingMap,List<Accounting> parentAccounting ){
     private void getParentAccount(Accounting accounting,Map<Long,Accounting> accountingMap,List<Accounting> parentAccounting ){
         Accounting parentAccount = accountingMap.get(accounting.getParentId());
         Accounting parentAccount = accountingMap.get(accounting.getParentId());
-        parentAccounting.add(parentAccount);
-        if(!parentAccount.getParentId().equals(NumberConstant.ZERO_L)){
-            getParentAccount(parentAccount, accountingMap, parentAccounting );
+        if(Objects.nonNull(parentAccount)){
+            parentAccounting.add(parentAccount);
+            if(!parentAccount.getParentId().equals(NumberConstant.ZERO_L)){
+                getParentAccount(parentAccount, accountingMap, parentAccounting );
+            }
         }
         }
+
     }
     }
 
 
     private List<Accounting> getAccountTree(Accounting accountVO, List<Accounting> list) {
     private List<Accounting> getAccountTree(Accounting accountVO, List<Accounting> list) {

+ 1 - 0
src/main/java/com/kcim/service/impl/AccountingServiceImpl.java

@@ -127,6 +127,7 @@ public class AccountingServiceImpl extends ServiceImpl<AccountingMapper, Account
         accounting.setParentId(parentId);
         accounting.setParentId(parentId);
         accounting.setAllParentIds(allParentIds);
         accounting.setAllParentIds(allParentIds);
         accounting.setCreateTime(System.currentTimeMillis());
         accounting.setCreateTime(System.currentTimeMillis());
+        accounting.setId(null);
         // 如果是支出类型
         // 如果是支出类型
         if (accountingSaveDTO.getAccountingType().equals(2)) {
         if (accountingSaveDTO.getAccountingType().equals(2)) {
             Integer isBaseCode = accountingSaveDTO.getIsBaseCost();
             Integer isBaseCode = accountingSaveDTO.getIsBaseCost();

+ 7 - 0
src/main/java/com/kcim/service/impl/CenterServiceImpl.java

@@ -1,6 +1,7 @@
 package com.kcim.service.impl;
 package com.kcim.service.impl;
 
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSON;
+import com.kcim.dao.model.dto.SysDepartment;
 import com.kcim.endPoint.CenterEndPoint;
 import com.kcim.endPoint.CenterEndPoint;
 import com.kcim.service.CenterService;
 import com.kcim.service.CenterService;
 import com.kcim.vo.CommonParameterVo;
 import com.kcim.vo.CommonParameterVo;
@@ -64,6 +65,12 @@ public class CenterServiceImpl implements CenterService {
 
 
     }
     }
 
 
+    @Override
+    public List<SysDepartment> getDepartmentFilter(String departmentName) {
+        Object departmentFilter = endPoint.getDepartmentFilter(departmentName);
+        return JSON.parseArray(JSON.toJSONString(departmentFilter), SysDepartment.class);
+    }
+
     @Override
     @Override
     public CommonParameterVo getParameter(Long parameterCode) {
     public CommonParameterVo getParameter(Long parameterCode) {
         Object dict = endPoint.getParameter(LOCAL_SYSTEM_ID, parameterCode);
         Object dict = endPoint.getParameter(LOCAL_SYSTEM_ID, parameterCode);

+ 62 - 18
src/main/java/com/kcim/service/impl/ComputeClinicalPathwayCostServiceImpl.java

@@ -9,11 +9,9 @@ import com.kcim.common.util.PageUtils;
 import com.kcim.common.util.UserContext;
 import com.kcim.common.util.UserContext;
 import com.kcim.dao.model.*;
 import com.kcim.dao.model.*;
 import com.kcim.dao.model.dto.ComputeClinicalPathwayCostPageDto;
 import com.kcim.dao.model.dto.ComputeClinicalPathwayCostPageDto;
+import com.kcim.dao.model.dto.ComputeItemGroupByVisitNoDto;
 import com.kcim.dao.model.dto.ComputePatientCostGroupByDepartmentDto;
 import com.kcim.dao.model.dto.ComputePatientCostGroupByDepartmentDto;
-import com.kcim.dao.repository.ComputeClinicalPathwayCostDetailRepository;
-import com.kcim.dao.repository.ComputeClinicalPathwayCostRepository;
-import com.kcim.dao.repository.ComputePatientCostRepository;
-import com.kcim.dao.repository.ImportPatientInfoRepository;
+import com.kcim.dao.repository.*;
 import com.kcim.service.ComputeClinicalPathwayCostService;
 import com.kcim.service.ComputeClinicalPathwayCostService;
 import com.kcim.service.ComputeItemCostService;
 import com.kcim.service.ComputeItemCostService;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
@@ -58,7 +56,7 @@ public class ComputeClinicalPathwayCostServiceImpl implements ComputeClinicalPat
      * 病人成本计算
      * 病人成本计算
      */
      */
     ComputePatientCostRepository computePatientCostRepository;
     ComputePatientCostRepository computePatientCostRepository;
-
+    ComputeItemCostRepository computeItemCostRepository;
     ComputeItemCostService computeItemCostService;
     ComputeItemCostService computeItemCostService;
     /**
     /**
      * 临床路径分而查询
      * 临床路径分而查询
@@ -95,7 +93,15 @@ public class ComputeClinicalPathwayCostServiceImpl implements ComputeClinicalPat
         if(CollectionUtils.isEmpty(patientCostDepartmentGroup)){
         if(CollectionUtils.isEmpty(patientCostDepartmentGroup)){
             throw new CostException("当前核算年月【"+computeDate+"】未计算病人成本信息,请先计算病人成本信息,当前计算中止");
             throw new CostException("当前核算年月【"+computeDate+"】未计算病人成本信息,请先计算病人成本信息,当前计算中止");
         }
         }
-        Map<String, ComputePatientCostGroupByDepartmentDto> computeItemGroup = patientCostDepartmentGroup.stream().collect(Collectors.toMap(ComputePatientCostGroupByDepartmentDto::getDepartmentCode, dto -> dto, (a, b) -> b));
+
+        List<ComputeItemGroupByVisitNoDto> byComputeDateGroupByVisitNo = computeItemCostRepository.getByComputeDateGroupByVisitNo(computeDate);
+//            List<ComputePatientCostGroupByDepartmentDto> patientCostDepartmentGroup = computePatientCostRepository.getPatientCostDepartmentGroup(computeDate);
+        if(CollectionUtils.isEmpty(byComputeDateGroupByVisitNo)){
+            throw new CostException("当前核算年月【"+computeDate+"】未计算收费项目成本计算,请先计算收费项目成本,当前计算中止");
+        }
+        Map<String, ComputeItemGroupByVisitNoDto> computeItemGroup = byComputeDateGroupByVisitNo.stream().collect(Collectors.toMap(ComputeItemGroupByVisitNoDto::getVisitNo, dto -> dto, (a, b) -> b));
+
+//        Map<String, ComputePatientCostGroupByDepartmentDto> computeItemGroup = patientCostDepartmentGroup.stream().collect(Collectors.toMap(ComputePatientCostGroupByDepartmentDto::getDepartmentCode, dto -> dto, (a, b) -> b));
 
 
         //过滤掉分组为空的数据
         //过滤掉分组为空的数据
         List<ImportPatientInfo> patientInfoList = patientInfos.stream().filter(patientInfo -> !StringUtils.isEmpty(patientInfo.getClinicalPathwayCode())).collect(Collectors.toList());
         List<ImportPatientInfo> patientInfoList = patientInfos.stream().filter(patientInfo -> !StringUtils.isEmpty(patientInfo.getClinicalPathwayCode())).collect(Collectors.toList());
@@ -127,8 +133,10 @@ public class ComputeClinicalPathwayCostServiceImpl implements ComputeClinicalPat
                 groupCost.setDepartmentName(infos.get(0).getDepartmentName());
                 groupCost.setDepartmentName(infos.get(0).getDepartmentName());
                 groupCost.setPatientNum(infos.size());
                 groupCost.setPatientNum(infos.size());
                 groupCost.setIndex(index);
                 groupCost.setIndex(index);
-                ComputePatientCostGroupByDepartmentDto patientCost = computeItemGroup.get(departmentCode);
-                List<ComputeClinicalPathwayCostDetail> detail = getDetail(index, clinicalPathwayCostDetail, patientCost);
+                List<ComputeItemGroupByVisitNoDto> dtoList = infos.stream().map(info -> computeItemGroup.get(info.getVisitNo())).collect(Collectors.toList());
+
+//                ComputePatientCostGroupByDepartmentDto patientCost = computeItemGroup.get(departmentCode);
+                List<ComputeClinicalPathwayCostDetail> detail = getDetail(index, clinicalPathwayCostDetail, dtoList);
                 saveClinicalCost.add(groupCost);
                 saveClinicalCost.add(groupCost);
                 details.addAll(detail);
                 details.addAll(detail);
                 index++;
                 index++;
@@ -157,7 +165,7 @@ public class ComputeClinicalPathwayCostServiceImpl implements ComputeClinicalPat
         }
         }
     }
     }
 
 
-    private List<ComputeClinicalPathwayCostDetail> getDetail(int i, ComputeClinicalPathwayCostDetail costDetail, ComputePatientCostGroupByDepartmentDto dto) {
+    private List<ComputeClinicalPathwayCostDetail> getDetail(int i, ComputeClinicalPathwayCostDetail costDetail, List<ComputeItemGroupByVisitNoDto> dtoList) {
         List<String> itemTypeList = computeItemCostService.getItemTypeList();
         List<String> itemTypeList = computeItemCostService.getItemTypeList();
         List<ComputeClinicalPathwayCostDetail> details = new ArrayList<>();
         List<ComputeClinicalPathwayCostDetail> details = new ArrayList<>();
         for (String s : itemTypeList) {
         for (String s : itemTypeList) {
@@ -165,23 +173,59 @@ public class ComputeClinicalPathwayCostServiceImpl implements ComputeClinicalPat
             detail.setType(s);
             detail.setType(s);
             detail.setIndex(i);
             detail.setIndex(i);
             if(s.equals(ReportItemTypeEnum.DRUG_INCOME.getCode())){
             if(s.equals(ReportItemTypeEnum.DRUG_INCOME.getCode())){
-                detail.setComputeResult(dto.getDrugIncome());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getDrugIncome());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_INCOME.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_INCOME.getCode())) {
-                detail.setComputeResult(dto.getMaterialIncome());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getMaterialIncome());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.ITEM_INCOME.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.ITEM_INCOME.getCode())) {
-                detail.setComputeResult(dto.getItemIncome());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getItemIncome());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.DRUG_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.DRUG_COST.getCode())) {
-                detail.setComputeResult(dto.getDrugCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getDrugCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_COST.getCode())) {
-                detail.setComputeResult(dto.getMaterialCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getMaterialCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.ITEM_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.ITEM_COST.getCode())) {
-                detail.setComputeResult(dto.getItemCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getItemCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.EMP_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.EMP_COST.getCode())) {
-                detail.setComputeResult(dto.getEmpCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getEmpCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.EQUIPMENT_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.EQUIPMENT_COST.getCode())) {
-                detail.setComputeResult(dto.getEquipmentCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getEquipmentCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.SPACE_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.SPACE_COST.getCode())) {
-                detail.setComputeResult(dto.getSpaceCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getSpaceCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }  else {
             }  else {
                 detail.setComputeResult(BigDecimal.ZERO);
                 detail.setComputeResult(BigDecimal.ZERO);
             }
             }

+ 128 - 87
src/main/java/com/kcim/service/impl/ComputeDiseaseCostServiceImpl.java

@@ -9,6 +9,7 @@ import com.kcim.common.util.PageUtils;
 import com.kcim.common.util.UserContext;
 import com.kcim.common.util.UserContext;
 import com.kcim.dao.model.*;
 import com.kcim.dao.model.*;
 import com.kcim.dao.model.dto.ComputeDiseaseCostPageDto;
 import com.kcim.dao.model.dto.ComputeDiseaseCostPageDto;
+import com.kcim.dao.model.dto.ComputeItemGroupByVisitNoDto;
 import com.kcim.dao.model.dto.ComputePatientCostGroupByDepartmentDto;
 import com.kcim.dao.model.dto.ComputePatientCostGroupByDepartmentDto;
 import com.kcim.dao.repository.*;
 import com.kcim.dao.repository.*;
 import com.kcim.service.ComputeDiseaseCostService;
 import com.kcim.service.ComputeDiseaseCostService;
@@ -58,6 +59,8 @@ public class ComputeDiseaseCostServiceImpl implements ComputeDiseaseCostService
      */
      */
     ComputePatientCostRepository computePatientCostRepository;
     ComputePatientCostRepository computePatientCostRepository;
 
 
+    ComputeItemCostRepository computeItemCostRepository;
+
     ComputeItemCostService computeItemCostService;
     ComputeItemCostService computeItemCostService;
 
 
     DiseaseTypeDiagMapRepository diagMapRepository;
     DiseaseTypeDiagMapRepository diagMapRepository;
@@ -94,91 +97,93 @@ public class ComputeDiseaseCostServiceImpl implements ComputeDiseaseCostService
             1 获取所有病人信息导入数据
             1 获取所有病人信息导入数据
             2 过滤掉未对照病种为空的数据
             2 过滤掉未对照病种为空的数据
          */
          */
-            List<ImportPatientInfo> patientInfos = importPatientInfoRepository.getByComputeDate(computeDate);
-            if(CollectionUtils.isEmpty(patientInfos)){
-                log.error("未导入当前核算年月【"+computeDate+"】患者信息,计算中止");
-                throw new CostException("未导入当前核算年月【"+computeDate+"】患者信息,当前计算中止");
-            }
-            Map<String, String> diseaseNameMap = diseaseTypeRepository.getDiseaseNameMap();
-            if(CollectionUtils.isEmpty(diseaseNameMap)){
-                log.error("病种字典未导入/编护,计算中止");
-                throw new CostException("病种字典未导入/编护,计算中止");
-            }
-            //获取计算过的项目信息
-            List<ComputePatientCostGroupByDepartmentDto> patientCostDepartmentGroup = computePatientCostRepository.getPatientCostDepartmentGroup(computeDate);
-            if(CollectionUtils.isEmpty(patientCostDepartmentGroup)){
-                throw new CostException("当前核算年月【"+computeDate+"】未计算病人成本信息,请先计算病人成本信息,当前计算中止");
-            }
-            Map<String, ComputePatientCostGroupByDepartmentDto> computeItemGroup = patientCostDepartmentGroup.stream().collect(Collectors.toMap(ComputePatientCostGroupByDepartmentDto::getDepartmentCode, dto -> dto, (a, b) -> b));
-            Map<String, String> diagDiseaseMap = diagMapRepository.getDiagDiseaseMap();
+        List<ImportPatientInfo> patientInfos = importPatientInfoRepository.getByComputeDate(computeDate);
+        if(CollectionUtils.isEmpty(patientInfos)){
+            log.error("未导入当前核算年月【"+computeDate+"】患者信息,计算中止");
+            throw new CostException("未导入当前核算年月【"+computeDate+"】患者信息,当前计算中止");
+        }
+        Map<String, String> diseaseNameMap = diseaseTypeRepository.getDiseaseNameMap();
+        if(CollectionUtils.isEmpty(diseaseNameMap)){
+            log.error("病种字典未导入/编护,计算中止");
+            throw new CostException("病种字典未导入/编护,计算中止");
+        }
+        //获取计算过的项目信息
+        List<ComputeItemGroupByVisitNoDto> byComputeDateGroupByVisitNo = computeItemCostRepository.getByComputeDateGroupByVisitNo(computeDate);
+//            List<ComputePatientCostGroupByDepartmentDto> patientCostDepartmentGroup = computePatientCostRepository.getPatientCostDepartmentGroup(computeDate);
+        if(CollectionUtils.isEmpty(byComputeDateGroupByVisitNo)){
+            throw new CostException("当前核算年月【"+computeDate+"】未计算收费项目成本计算,请先计算收费项目成本,当前计算中止");
+        }
+        Map<String, ComputeItemGroupByVisitNoDto> computeItemGroup = byComputeDateGroupByVisitNo.stream().collect(Collectors.toMap(ComputeItemGroupByVisitNoDto::getVisitNo, dto -> dto, (a, b) -> b));
+        Map<String, String> diagDiseaseMap = diagMapRepository.getDiagDiseaseMap();
             //病种与诊断对照
             //病种与诊断对照
-            if(!CollectionUtils.isEmpty(diagDiseaseMap)){
-                for (ImportPatientInfo patientInfo : patientInfos) {
-                    if(!StringUtils.isEmpty(patientInfo.getPrimaryDiagCode())){
-                        String diseaseType = diagDiseaseMap.get(patientInfo.getPrimaryDiagCode());
-                        if(!StringUtils.isEmpty(diseaseType)){
-                            patientInfo.setDiseaseTypeCode(diseaseType);
-                        }
+        if(!CollectionUtils.isEmpty(diagDiseaseMap)){
+            for (ImportPatientInfo patientInfo : patientInfos) {
+                if(!StringUtils.isEmpty(patientInfo.getPrimaryDiagCode())){
+                    String diseaseType = diagDiseaseMap.get(patientInfo.getPrimaryDiagCode());
+                    if(!StringUtils.isEmpty(diseaseType)){
+                        patientInfo.setDiseaseTypeCode(diseaseType);
                     }
                     }
                 }
                 }
             }
             }
-            //过滤掉病种分类为空的数据
-            List<ImportPatientInfo> patientInfoList = patientInfos.stream().filter(patientInfo -> !StringUtils.isEmpty(patientInfo.getDiseaseTypeCode())).collect(Collectors.toList());
-            //按病种分类和科室进行分组
-            Map<String, List<ImportPatientInfo>> diseaseGroup = patientInfoList.stream().collect(Collectors.groupingBy(ImportPatientInfo::getDiseaseTypeCode));
-
-            ComputeDiseaseCost computeDiseaseCost = new ComputeDiseaseCost();
-            computeDiseaseCost.setComputeDate(computeDate);
-            computeDiseaseCost.setHospId(UserContext.getHospId());
-            computeDiseaseCost.setCreateUser(String.valueOf(UserContext.getCurrentUser().getId()));
-            computeDiseaseCost.setCreateTime(new Date());
-            ComputeDiseaseCostDetail diseaseCostDetail = new ComputeDiseaseCostDetail();
-            diseaseCostDetail.setHospId(UserContext.getHospId());
-            diseaseCostDetail.setCreateUser(String.valueOf(UserContext.getCurrentUser().getId()));
-            diseaseCostDetail.setCreateTime(new Date());
-            int index = 0;
-            List<ComputeDiseaseCost> savePatientCost = new ArrayList<>();
-            List<ComputeDiseaseCostDetail> details = new ArrayList<>();
-            for (String diseaseTypeCode : diseaseGroup.keySet()) {
-                List<ImportPatientInfo> groups = diseaseGroup.get(diseaseTypeCode);
-                Map<String, List<ImportPatientInfo>> departmentGroup = groups.stream().collect(Collectors.groupingBy(ImportPatientInfo::getDepartmentCode));
-                for (String departmentCode : departmentGroup.keySet()) {
-                    ComputeDiseaseCost diseaseCost = BeanUtil.convertObj(computeDiseaseCost, ComputeDiseaseCost.class);
-                    diseaseCost.setCode(diseaseTypeCode);
-                    diseaseCost.setName(diseaseNameMap.get(diseaseTypeCode));
-                    diseaseCost.setDepartmentCode(departmentCode);
-                    List<ImportPatientInfo> infos = departmentGroup.get(departmentCode);
-                    diseaseCost.setDepartmentName(infos.get(0).getDepartmentName());
-                    diseaseCost.setPatientNum(infos.size());
-                    diseaseCost.setIndex(index);
-                    ComputePatientCostGroupByDepartmentDto patientCost = computeItemGroup.get(departmentCode);
-                    List<ComputeDiseaseCostDetail> detail = getDetail(index, diseaseCostDetail, patientCost);
-                    savePatientCost.add(diseaseCost);
-                    details.addAll(detail);
-                    index++;
-                }
+        }
+        //过滤掉病种分类为空的数据
+        List<ImportPatientInfo> patientInfoList = patientInfos.stream().filter(patientInfo -> !StringUtils.isEmpty(patientInfo.getDiseaseTypeCode())).collect(Collectors.toList());
+        //按病种分类和科室进行分组
+        Map<String, List<ImportPatientInfo>> diseaseGroup = patientInfoList.stream().collect(Collectors.groupingBy(ImportPatientInfo::getDiseaseTypeCode));
+
+        ComputeDiseaseCost computeDiseaseCost = new ComputeDiseaseCost();
+        computeDiseaseCost.setComputeDate(computeDate);
+        computeDiseaseCost.setHospId(UserContext.getHospId());
+        computeDiseaseCost.setCreateUser(String.valueOf(UserContext.getCurrentUser().getId()));
+        computeDiseaseCost.setCreateTime(new Date());
+        ComputeDiseaseCostDetail diseaseCostDetail = new ComputeDiseaseCostDetail();
+        diseaseCostDetail.setHospId(UserContext.getHospId());
+        diseaseCostDetail.setCreateUser(String.valueOf(UserContext.getCurrentUser().getId()));
+        diseaseCostDetail.setCreateTime(new Date());
+        int index = 0;
+        List<ComputeDiseaseCost> savePatientCost = new ArrayList<>();
+        List<ComputeDiseaseCostDetail> details = new ArrayList<>();
+        for (String diseaseTypeCode : diseaseGroup.keySet()) {
+            List<ImportPatientInfo> groups = diseaseGroup.get(diseaseTypeCode);
+            Map<String, List<ImportPatientInfo>> departmentGroup = groups.stream().collect(Collectors.groupingBy(ImportPatientInfo::getDepartmentCode));
+            for (String departmentCode : departmentGroup.keySet()) {
+                ComputeDiseaseCost diseaseCost = BeanUtil.convertObj(computeDiseaseCost, ComputeDiseaseCost.class);
+                diseaseCost.setCode(diseaseTypeCode);
+                diseaseCost.setName(diseaseNameMap.get(diseaseTypeCode));
+                diseaseCost.setDepartmentCode(departmentCode);
+                List<ImportPatientInfo> infos = departmentGroup.get(departmentCode);
+                diseaseCost.setDepartmentName(infos.get(0).getDepartmentName());
+                diseaseCost.setPatientNum(infos.size());
+                diseaseCost.setIndex(index);
+                List<ComputeItemGroupByVisitNoDto> dtoList = infos.stream().map(info -> computeItemGroup.get(info.getVisitNo())).collect(Collectors.toList());
+//                ComputePatientCostGroupByDepartmentDto patientCost = computeItemGroup.get(departmentCode);
+                List<ComputeDiseaseCostDetail> detail = getDetail(index, diseaseCostDetail, dtoList);
+                savePatientCost.add(diseaseCost);
+                details.addAll(detail);
+                index++;
             }
             }
+        }
 
 
+        if(!CollectionUtils.isEmpty(savePatientCost)){
+            //作废当前核算年月已有数据
+            List<Integer> integers = repository.removeByComputeDate(computeDate);
+            if(!CollectionUtils.isEmpty(integers)){
+                detailRepository.removeByDiseaseCostId(integers);
+            }
+            repository.saveBatch(savePatientCost,100);
             if(!CollectionUtils.isEmpty(savePatientCost)){
             if(!CollectionUtils.isEmpty(savePatientCost)){
-                //作废当前核算年月已有数据
-                List<Integer> integers = repository.removeByComputeDate(computeDate);
-                if(!CollectionUtils.isEmpty(integers)){
-                    detailRepository.removeByDiseaseCostId(integers);
-                }
-                repository.saveBatch(savePatientCost,100);
-                if(!CollectionUtils.isEmpty(savePatientCost)){
-                    Map<Integer,Integer> indexId = savePatientCost.stream().collect(Collectors.toMap(ComputeDiseaseCost::getIndex, ComputeDiseaseCost::getId, (a, b) -> b));
-                    Map<Integer, List<ComputeDiseaseCostDetail>> collect = details.stream().collect(Collectors.groupingBy(ComputeDiseaseCostDetail::getIndex));
-                    List<ComputeDiseaseCostDetail> saveCostDetails = new ArrayList<>();
-                    collect.keySet().forEach(integer -> {
-                        Integer costId = indexId.get(integer);
-                        List<ComputeDiseaseCostDetail> detailList = collect.get(integer);
-                        detailList.forEach(detail -> detail.setDiseaseCostId(costId));
-                        saveCostDetails.addAll(detailList);
-                    });
-                    detailRepository.saveBatch(saveCostDetails,500);
-                }
+                Map<Integer,Integer> indexId = savePatientCost.stream().collect(Collectors.toMap(ComputeDiseaseCost::getIndex, ComputeDiseaseCost::getId, (a, b) -> b));
+                Map<Integer, List<ComputeDiseaseCostDetail>> collect = details.stream().collect(Collectors.groupingBy(ComputeDiseaseCostDetail::getIndex));
+                List<ComputeDiseaseCostDetail> saveCostDetails = new ArrayList<>();
+                collect.keySet().forEach(integer -> {
+                    Integer costId = indexId.get(integer);
+                    List<ComputeDiseaseCostDetail> detailList = collect.get(integer);
+                    detailList.forEach(detail -> detail.setDiseaseCostId(costId));
+                    saveCostDetails.addAll(detailList);
+                });
+                detailRepository.saveBatch(saveCostDetails,500);
             }
             }
+        }
 //        }catch (Exception e){
 //        }catch (Exception e){
 //            log.error(e.getMessage());
 //            log.error(e.getMessage());
 //            throw new CostException(e.getMessage());
 //            throw new CostException(e.getMessage());
@@ -189,7 +194,7 @@ public class ComputeDiseaseCostServiceImpl implements ComputeDiseaseCostService
 
 
     }
     }
 
 
-    private List<ComputeDiseaseCostDetail> getDetail(int i, ComputeDiseaseCostDetail costDetail, ComputePatientCostGroupByDepartmentDto dto) {
+    private List<ComputeDiseaseCostDetail> getDetail(int i, ComputeDiseaseCostDetail costDetail, List<ComputeItemGroupByVisitNoDto> dtoList) {
         List<String> itemTypeList = computeItemCostService.getItemTypeList();
         List<String> itemTypeList = computeItemCostService.getItemTypeList();
         List<ComputeDiseaseCostDetail> details = new ArrayList<>();
         List<ComputeDiseaseCostDetail> details = new ArrayList<>();
         for (String s : itemTypeList) {
         for (String s : itemTypeList) {
@@ -197,23 +202,59 @@ public class ComputeDiseaseCostServiceImpl implements ComputeDiseaseCostService
             detail.setType(s);
             detail.setType(s);
             detail.setIndex(i);
             detail.setIndex(i);
             if(s.equals(ReportItemTypeEnum.DRUG_INCOME.getCode())){
             if(s.equals(ReportItemTypeEnum.DRUG_INCOME.getCode())){
-                detail.setComputeResult(dto.getDrugIncome());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getDrugIncome());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_INCOME.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_INCOME.getCode())) {
-                detail.setComputeResult(dto.getMaterialIncome());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getMaterialIncome());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.ITEM_INCOME.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.ITEM_INCOME.getCode())) {
-                detail.setComputeResult(dto.getItemIncome());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getItemIncome());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.DRUG_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.DRUG_COST.getCode())) {
-                detail.setComputeResult(dto.getDrugCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getDrugCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_COST.getCode())) {
-                detail.setComputeResult(dto.getMaterialCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getMaterialCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.ITEM_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.ITEM_COST.getCode())) {
-                detail.setComputeResult(dto.getItemCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getItemCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.EMP_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.EMP_COST.getCode())) {
-                detail.setComputeResult(dto.getEmpCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getEmpCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.EQUIPMENT_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.EQUIPMENT_COST.getCode())) {
-                detail.setComputeResult(dto.getEquipmentCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getEquipmentCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.SPACE_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.SPACE_COST.getCode())) {
-                detail.setComputeResult(dto.getSpaceCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getSpaceCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }  else {
             }  else {
                 detail.setComputeResult(BigDecimal.ZERO);
                 detail.setComputeResult(BigDecimal.ZERO);
             }
             }

+ 64 - 21
src/main/java/com/kcim/service/impl/ComputeGroupCostServiceImpl.java

@@ -9,11 +9,9 @@ import com.kcim.common.util.PageUtils;
 import com.kcim.common.util.UserContext;
 import com.kcim.common.util.UserContext;
 import com.kcim.dao.model.*;
 import com.kcim.dao.model.*;
 import com.kcim.dao.model.dto.ComputeGroupCostPageDto;
 import com.kcim.dao.model.dto.ComputeGroupCostPageDto;
+import com.kcim.dao.model.dto.ComputeItemGroupByVisitNoDto;
 import com.kcim.dao.model.dto.ComputePatientCostGroupByDepartmentDto;
 import com.kcim.dao.model.dto.ComputePatientCostGroupByDepartmentDto;
-import com.kcim.dao.repository.ComputeGroupCostDetailRepository;
-import com.kcim.dao.repository.ComputeGroupCostRepository;
-import com.kcim.dao.repository.ComputePatientCostRepository;
-import com.kcim.dao.repository.ImportPatientInfoRepository;
+import com.kcim.dao.repository.*;
 import com.kcim.service.ComputeGroupCostService;
 import com.kcim.service.ComputeGroupCostService;
 import com.kcim.service.ComputeItemCostService;
 import com.kcim.service.ComputeItemCostService;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
@@ -58,7 +56,7 @@ public class ComputeGroupCostServiceImpl implements ComputeGroupCostService {
      * 病人成本计算
      * 病人成本计算
      */
      */
     ComputePatientCostRepository computePatientCostRepository;
     ComputePatientCostRepository computePatientCostRepository;
-
+    ComputeItemCostRepository computeItemCostRepository;
     ComputeItemCostService computeItemCostService;
     ComputeItemCostService computeItemCostService;
 
 
     /**
     /**
@@ -95,11 +93,17 @@ public class ComputeGroupCostServiceImpl implements ComputeGroupCostService {
             throw new CostException("未导入当前核算年月【"+computeDate+"】患者信息,当前计算中止");
             throw new CostException("未导入当前核算年月【"+computeDate+"】患者信息,当前计算中止");
         }
         }
 //获取计算过的项目信息
 //获取计算过的项目信息
-        List<ComputePatientCostGroupByDepartmentDto> patientCostDepartmentGroup = computePatientCostRepository.getPatientCostDepartmentGroup(computeDate);
-        if(CollectionUtils.isEmpty(patientCostDepartmentGroup)){
-            throw new CostException("当前核算年月【"+computeDate+"】未计算病人成本信息,请先计算病人成本信息,当前计算中止");
+//        List<ComputePatientCostGroupByDepartmentDto> patientCostDepartmentGroup = computePatientCostRepository.getPatientCostDepartmentGroup(computeDate);
+//        if(CollectionUtils.isEmpty(patientCostDepartmentGroup)){
+//            throw new CostException("当前核算年月【"+computeDate+"】未计算病人成本信息,请先计算病人成本信息,当前计算中止");
+//        }
+        List<ComputeItemGroupByVisitNoDto> byComputeDateGroupByVisitNo = computeItemCostRepository.getByComputeDateGroupByVisitNo(computeDate);
+        if(CollectionUtils.isEmpty(byComputeDateGroupByVisitNo)){
+            throw new CostException("当前核算年月【"+computeDate+"】未计算收费项目成本计算,请先计算收费项目成本,当前计算中止");
         }
         }
-        Map<String, ComputePatientCostGroupByDepartmentDto> computeItemGroup = patientCostDepartmentGroup.stream().collect(Collectors.toMap(ComputePatientCostGroupByDepartmentDto::getDepartmentCode, dto -> dto, (a, b) -> b));
+        Map<String, ComputeItemGroupByVisitNoDto> computeItemGroup = byComputeDateGroupByVisitNo.stream().collect(Collectors.toMap(ComputeItemGroupByVisitNoDto::getVisitNo, dto -> dto, (a, b) -> b));
+
+//        Map<String, ComputePatientCostGroupByDepartmentDto> computeItemGroup = patientCostDepartmentGroup.stream().collect(Collectors.toMap(ComputePatientCostGroupByDepartmentDto::getDepartmentCode, dto -> dto, (a, b) -> b));
 
 
         //过滤掉分组为空的数据
         //过滤掉分组为空的数据
         List<ImportPatientInfo> patientInfoList = patientInfos.stream().filter(patientInfo -> !StringUtils.isEmpty(patientInfo.getGroupCode())).collect(Collectors.toList());
         List<ImportPatientInfo> patientInfoList = patientInfos.stream().filter(patientInfo -> !StringUtils.isEmpty(patientInfo.getGroupCode())).collect(Collectors.toList());
@@ -131,8 +135,11 @@ public class ComputeGroupCostServiceImpl implements ComputeGroupCostService {
                 groupCost.setDepartmentName(infos.get(0).getDepartmentName());
                 groupCost.setDepartmentName(infos.get(0).getDepartmentName());
                 groupCost.setPatientNum(infos.size());
                 groupCost.setPatientNum(infos.size());
                 groupCost.setIndex(index);
                 groupCost.setIndex(index);
-                ComputePatientCostGroupByDepartmentDto patientCost = computeItemGroup.get(departmentCode);
-                List<ComputeGroupCostDetail> detail = getDetail(index, groupCostDetail, patientCost);
+                List<ComputeItemGroupByVisitNoDto> dtoList = infos.stream().map(info -> computeItemGroup.get(info.getVisitNo())).collect(Collectors.toList());
+//                ComputePatientCostGroupByDepartmentDto patientCost = computeItemGroup.get(departmentCode);
+//                List<ComputeDiseaseCostDetail> detail = getDetail(index, diseaseCostDetail, dtoList);
+//                ComputePatientCostGroupByDepartmentDto patientCost = computeItemGroup.get(departmentCode);
+                List<ComputeGroupCostDetail> detail = getDetail(index, groupCostDetail, dtoList);
                 saveGroupCost.add(groupCost);
                 saveGroupCost.add(groupCost);
                 details.addAll(detail);
                 details.addAll(detail);
                 index++;
                 index++;
@@ -162,7 +169,7 @@ public class ComputeGroupCostServiceImpl implements ComputeGroupCostService {
     }
     }
 
 
 
 
-    private List<ComputeGroupCostDetail> getDetail(int i, ComputeGroupCostDetail costDetail, ComputePatientCostGroupByDepartmentDto dto) {
+    private List<ComputeGroupCostDetail> getDetail(int i, ComputeGroupCostDetail costDetail, List<ComputeItemGroupByVisitNoDto> dtoList) {
         List<String> itemTypeList = computeItemCostService.getItemTypeList();
         List<String> itemTypeList = computeItemCostService.getItemTypeList();
         List<ComputeGroupCostDetail> details = new ArrayList<>();
         List<ComputeGroupCostDetail> details = new ArrayList<>();
         for (String s : itemTypeList) {
         for (String s : itemTypeList) {
@@ -170,23 +177,59 @@ public class ComputeGroupCostServiceImpl implements ComputeGroupCostService {
             detail.setType(s);
             detail.setType(s);
             detail.setIndex(i);
             detail.setIndex(i);
             if(s.equals(ReportItemTypeEnum.DRUG_INCOME.getCode())){
             if(s.equals(ReportItemTypeEnum.DRUG_INCOME.getCode())){
-                detail.setComputeResult(dto.getDrugIncome());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getDrugIncome());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_INCOME.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_INCOME.getCode())) {
-                detail.setComputeResult(dto.getMaterialIncome());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getMaterialIncome());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.ITEM_INCOME.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.ITEM_INCOME.getCode())) {
-                detail.setComputeResult(dto.getItemIncome());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getItemIncome());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.DRUG_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.DRUG_COST.getCode())) {
-                detail.setComputeResult(dto.getDrugCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getDrugCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.MATERIAL_COST.getCode())) {
-                detail.setComputeResult(dto.getMaterialCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getMaterialCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.ITEM_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.ITEM_COST.getCode())) {
-                detail.setComputeResult(dto.getItemCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getItemCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.EMP_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.EMP_COST.getCode())) {
-                detail.setComputeResult(dto.getEmpCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getEmpCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.EQUIPMENT_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.EQUIPMENT_COST.getCode())) {
-                detail.setComputeResult(dto.getEquipmentCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getEquipmentCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }else if (s.equals(ReportItemTypeEnum.SPACE_COST.getCode())) {
             }else if (s.equals(ReportItemTypeEnum.SPACE_COST.getCode())) {
-                detail.setComputeResult(dto.getSpaceCost());
+                BigDecimal bigDecimal = new BigDecimal("0.0000");
+                for (ComputeItemGroupByVisitNoDto dto : dtoList) {
+                    bigDecimal = bigDecimal.add(dto.getSpaceCost());
+                }
+                detail.setComputeResult(bigDecimal);
             }  else {
             }  else {
                 detail.setComputeResult(BigDecimal.ZERO);
                 detail.setComputeResult(BigDecimal.ZERO);
             }
             }

+ 16 - 6
src/main/java/com/kcim/service/impl/ComputeItemCostServiceImpl.java

@@ -118,7 +118,7 @@ public class ComputeItemCostServiceImpl implements ComputeItemCostService {
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
     @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
     public void itemCostCalculate(String computeDate) {
     public void itemCostCalculate(String computeDate) {
-        try {
+//        try {
             List<PatientItemVo> items = importPatientItemRepository.getAllGroupByCompute(computeDate);
             List<PatientItemVo> items = importPatientItemRepository.getAllGroupByCompute(computeDate);
             if(CollectionUtils.isEmpty(items)){
             if(CollectionUtils.isEmpty(items)){
                 throw new CostException("当前核算年月【"+computeDate+"】未导入收费项目数据,计算中止");
                 throw new CostException("当前核算年月【"+computeDate+"】未导入收费项目数据,计算中止");
@@ -196,10 +196,10 @@ public class ComputeItemCostServiceImpl implements ComputeItemCostService {
                     detailRepository.saveBatch(saveCostDetails,100);
                     detailRepository.saveBatch(saveCostDetails,100);
                 }
                 }
             }
             }
-        }catch (Exception e){
-            log.error(e.getMessage());
-            throw new CostException(e.getMessage());
-        }
+//        }catch (Exception e){
+//            log.error(e.getMessage());
+//            throw new CostException(e.getMessage());
+//        }
 
 
     }
     }
 
 
@@ -246,12 +246,16 @@ public class ComputeItemCostServiceImpl implements ComputeItemCostService {
             income.setType(ReportItemTypeEnum.ITEM_INCOME.getCode());
             income.setType(ReportItemTypeEnum.ITEM_INCOME.getCode());
             details.add(income);
             details.add(income);
             //当前项目的标准项目
             //当前项目的标准项目
+            BigDecimal num = item.getNum();
             StandItem standItem = standItemMap.get(item.getItemCode());
             StandItem standItem = standItemMap.get(item.getItemCode());
             if (Objects.nonNull(standItem)) {
             if (Objects.nonNull(standItem)) {
                 //人力成本
                 //人力成本
                 List<StandItemEmpMap> empMaps = standItem.getEmpMaps();
                 List<StandItemEmpMap> empMaps = standItem.getEmpMaps();
                 BigDecimal empCost = getEmpCost(empMaps, empComputeCostGroup, empCostType, item);
                 BigDecimal empCost = getEmpCost(empMaps, empComputeCostGroup, empCostType, item);
                 ComputeItemCostDetail empCostResult = BeanUtil.convertObj(costDetail, ComputeItemCostDetail.class);
                 ComputeItemCostDetail empCostResult = BeanUtil.convertObj(costDetail, ComputeItemCostDetail.class);
+                if(num != null){
+                    empCost = empCost.multiply(num);
+                }
                 empCostResult.setComputeResult(empCost);
                 empCostResult.setComputeResult(empCost);
                 empCostResult.setType(ReportItemTypeEnum.EMP_COST.getCode());
                 empCostResult.setType(ReportItemTypeEnum.EMP_COST.getCode());
                 details.add(empCostResult);
                 details.add(empCostResult);
@@ -259,6 +263,9 @@ public class ComputeItemCostServiceImpl implements ComputeItemCostService {
                 List<StandItemEquipmentMap> equipmentMaps = standItem.getEquipmentMaps();
                 List<StandItemEquipmentMap> equipmentMaps = standItem.getEquipmentMaps();
                 BigDecimal equipmentCost = getEquipmentCost(equipmentMaps, equipmentMinuteMap);
                 BigDecimal equipmentCost = getEquipmentCost(equipmentMaps, equipmentMinuteMap);
                 ComputeItemCostDetail equipmentCostResult = BeanUtil.convertObj(costDetail, ComputeItemCostDetail.class);
                 ComputeItemCostDetail equipmentCostResult = BeanUtil.convertObj(costDetail, ComputeItemCostDetail.class);
+                if(num != null){
+                    equipmentCost = equipmentCost.multiply(num);
+                }
                 equipmentCostResult.setComputeResult(equipmentCost);
                 equipmentCostResult.setComputeResult(equipmentCost);
                 equipmentCostResult.setType(ReportItemTypeEnum.EQUIPMENT_COST.getCode());
                 equipmentCostResult.setType(ReportItemTypeEnum.EQUIPMENT_COST.getCode());
                 details.add(equipmentCostResult);
                 details.add(equipmentCostResult);
@@ -266,6 +273,9 @@ public class ComputeItemCostServiceImpl implements ComputeItemCostService {
                 List<StandItemSpaceMap> spaceMaps = standItem.getSpaceMaps();
                 List<StandItemSpaceMap> spaceMaps = standItem.getSpaceMaps();
                 BigDecimal spaceCost = getSpaceCost(spaceMaps, spaceMinuteMap);
                 BigDecimal spaceCost = getSpaceCost(spaceMaps, spaceMinuteMap);
                 ComputeItemCostDetail spaceCostResult = BeanUtil.convertObj(costDetail, ComputeItemCostDetail.class);
                 ComputeItemCostDetail spaceCostResult = BeanUtil.convertObj(costDetail, ComputeItemCostDetail.class);
+                if(num != null){
+                    spaceCost = spaceCost.multiply(num);
+                }
                 spaceCostResult.setComputeResult(spaceCost);
                 spaceCostResult.setComputeResult(spaceCost);
                 spaceCostResult.setType(ReportItemTypeEnum.SPACE_COST.getCode());
                 spaceCostResult.setType(ReportItemTypeEnum.SPACE_COST.getCode());
                 details.add(spaceCostResult);
                 details.add(spaceCostResult);
@@ -469,7 +479,7 @@ public class ComputeItemCostServiceImpl implements ComputeItemCostService {
      */
      */
     private ComputeItemCostDetail getIncome(ComputeItemCostDetail detail, PatientItemVo item) {
     private ComputeItemCostDetail getIncome(ComputeItemCostDetail detail, PatientItemVo item) {
         ComputeItemCostDetail result = BeanUtil.convertObj(detail, ComputeItemCostDetail.class);
         ComputeItemCostDetail result = BeanUtil.convertObj(detail, ComputeItemCostDetail.class);
-        result.setComputeResult(item.getAmount().multiply(item.getNum()));
+        result.setComputeResult(item.getAmount());
         return result;
         return result;
     }
     }
 
 

+ 26 - 19
src/main/java/com/kcim/service/impl/ComputePatientCostServiceImpl.java

@@ -156,27 +156,34 @@ public class ComputePatientCostServiceImpl implements ComputePatientCostService
             ComputePatientCostDetail detail = BeanUtil.convertObj(patientCostDetail, ComputePatientCostDetail.class);
             ComputePatientCostDetail detail = BeanUtil.convertObj(patientCostDetail, ComputePatientCostDetail.class);
             detail.setType(s);
             detail.setType(s);
             detail.setIndex(i);
             detail.setIndex(i);
-            if(s.equals(ReportItemTypeEnum.DRUG_INCOME.getCode())){
-                detail.setComputeResult(dto.getDrugIncome());
-            }else if (s.equals(ReportItemTypeEnum.MATERIAL_INCOME.getCode())) {
-                detail.setComputeResult(dto.getMaterialIncome());
-            }else if (s.equals(ReportItemTypeEnum.ITEM_INCOME.getCode())) {
-                detail.setComputeResult(dto.getItemIncome());
-            }else if (s.equals(ReportItemTypeEnum.DRUG_COST.getCode())) {
-                detail.setComputeResult(dto.getDrugCost());
-            }else if (s.equals(ReportItemTypeEnum.MATERIAL_COST.getCode())) {
-                detail.setComputeResult(dto.getMaterialCost());
-            }else if (s.equals(ReportItemTypeEnum.ITEM_COST.getCode())) {
-                detail.setComputeResult(dto.getItemCost());
-            }else if (s.equals(ReportItemTypeEnum.EMP_COST.getCode())) {
-                detail.setComputeResult(dto.getEmpCost());
-            }else if (s.equals(ReportItemTypeEnum.EQUIPMENT_COST.getCode())) {
-                detail.setComputeResult(dto.getEquipmentCost());
-            }else if (s.equals(ReportItemTypeEnum.SPACE_COST.getCode())) {
-                detail.setComputeResult(dto.getSpaceCost());
-            }  else {
+            if(Objects.nonNull(dto)){
+                if(s.equals(ReportItemTypeEnum.DRUG_INCOME.getCode())){
+                    detail.setComputeResult(dto.getDrugIncome());
+                }else if (s.equals(ReportItemTypeEnum.MATERIAL_INCOME.getCode())) {
+                    detail.setComputeResult(dto.getMaterialIncome());
+                }else if (s.equals(ReportItemTypeEnum.ITEM_INCOME.getCode())) {
+                    detail.setComputeResult(dto.getItemIncome());
+                }else if (s.equals(ReportItemTypeEnum.DRUG_COST.getCode())) {
+                    detail.setComputeResult(dto.getDrugCost());
+                }else if (s.equals(ReportItemTypeEnum.MATERIAL_COST.getCode())) {
+                    detail.setComputeResult(dto.getMaterialCost());
+                }else if (s.equals(ReportItemTypeEnum.ITEM_COST.getCode())) {
+                    detail.setComputeResult(dto.getItemCost());
+                }else if (s.equals(ReportItemTypeEnum.EMP_COST.getCode())) {
+                    detail.setComputeResult(dto.getEmpCost());
+                }else if (s.equals(ReportItemTypeEnum.EQUIPMENT_COST.getCode())) {
+                    detail.setComputeResult(dto.getEquipmentCost());
+                }else if (s.equals(ReportItemTypeEnum.SPACE_COST.getCode())) {
+                    detail.setComputeResult(dto.getSpaceCost());
+                }  else {
+                    detail.setComputeResult(BigDecimal.ZERO);
+
+                }
+            }else {
                 detail.setComputeResult(BigDecimal.ZERO);
                 detail.setComputeResult(BigDecimal.ZERO);
+
             }
             }
+
             details.add(detail);
             details.add(detail);
         }
         }
         return details;
         return details;

+ 18 - 2
src/main/java/com/kcim/service/impl/CostAccountShareServiceImpl.java

@@ -74,8 +74,21 @@ public class CostAccountShareServiceImpl extends ServiceImpl<CostAccountShareMap
                 .orderByAsc(CostAccountShare::getShareLevel));
                 .orderByAsc(CostAccountShare::getShareLevel));
         List<CostAccountShare> costAccountShareList = pages.getRecords();
         List<CostAccountShare> costAccountShareList = pages.getRecords();
 
 
+
+        List<Responsibility> responsibilities = responsibilityService.list(
+                new LambdaQueryWrapper<Responsibility>()
+                        .eq(Responsibility::getHospId, UserContext.getHospId())
+                        .orderByDesc(Responsibility::getCreateTime)
+        );
+
+        Map<Long,String> map = new HashMap<>();
+        if(!CollectionUtils.isEmpty(responsibilities)){
+            map = responsibilities.stream().collect(Collectors.toMap(Responsibility::getId, Responsibility::getShareName, (a, b) -> b));
+
+        }
+
         List<CostAccountShareVO> costAccountShareVOList = BeanUtil.convertList(costAccountShareList, CostAccountShareVO.class);
         List<CostAccountShareVO> costAccountShareVOList = BeanUtil.convertList(costAccountShareList, CostAccountShareVO.class);
-        costAccountShareVOList.forEach(i -> {
+        for (CostAccountShareVO i : costAccountShareVOList) {
             String accountingIds = i.getAccountingIds();
             String accountingIds = i.getAccountingIds();
             if (StrUtil.isNotBlank(accountingIds)) {
             if (StrUtil.isNotBlank(accountingIds)) {
                 List<String> list = Arrays.asList(accountingIds.split(StrUtil.COMMA));
                 List<String> list = Arrays.asList(accountingIds.split(StrUtil.COMMA));
@@ -83,7 +96,10 @@ public class CostAccountShareServiceImpl extends ServiceImpl<CostAccountShareMap
             } else {
             } else {
                 i.setAccountingIdList(null);
                 i.setAccountingIdList(null);
             }
             }
-        });
+            if (!CollectionUtils.isEmpty(map)) {
+                i.setShareName(map.get(i.getResponsibilityId()));
+            }
+        }
 //        getMessage(hospId, costAccountShareVOList);
 //        getMessage(hospId, costAccountShareVOList);
         PageUtils pageUtils = new PageUtils(pages);
         PageUtils pageUtils = new PageUtils(pages);
         pageUtils.setList(costAccountShareVOList);
         pageUtils.setList(costAccountShareVOList);

+ 3 - 1
src/main/java/com/kcim/service/impl/CostCostingGroupServiceImpl.java

@@ -28,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.*;
+import java.util.regex.Pattern;
 
 
 
 
 @Service("costCostingGroupService")
 @Service("costCostingGroupService")
@@ -269,6 +270,7 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
      * @param costCostingGroupArrayList
      * @param costCostingGroupArrayList
      */
      */
     private void checkCostData(List<List<Object>> list, List<IncomeErrorMessage> incomeErrorMessageList, Map<String, Department> departmentMap, Map<String, Product> productMap, Map<Long, Responsibility> responsibilityMap, Map<Long, Accounting> accountingMap, Map<Long, Long> responsibilityDepMap, Map<Long, Long> accountProMap, List<CostCostingGroup> costCostingGroupArrayList, Integer year, Integer month) {
     private void checkCostData(List<List<Object>> list, List<IncomeErrorMessage> incomeErrorMessageList, Map<String, Department> departmentMap, Map<String, Product> productMap, Map<Long, Responsibility> responsibilityMap, Map<Long, Accounting> accountingMap, Map<Long, Long> responsibilityDepMap, Map<Long, Long> accountProMap, List<CostCostingGroup> costCostingGroupArrayList, Integer year, Integer month) {
+        Pattern pattern = Pattern.compile("^\\d+(\\.\\d+)?$");
         List<Object> departmentCodes = list.get(0);
         List<Object> departmentCodes = list.get(0);
         List<Object> departmentNames = list.get(1);
         List<Object> departmentNames = list.get(1);
         //检验数据是否准确
         //检验数据是否准确
@@ -280,7 +282,7 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
                 if (data.size() > j) {
                 if (data.size() > j) {
                     if (Objects.isNull(data.get(j))) {
                     if (Objects.isNull(data.get(j))) {
                         data.set(j, NumberConstant.ZERO);
                         data.set(j, NumberConstant.ZERO);
-                    } else if (data.get(j).toString().contains("-") || !StringUtils.isNumeric(data.get(j).toString())) {
+                    } else if (data.get(j).toString().contains("-") || !pattern.matcher(data.get(j).toString()).matches()) {//!StringUtils.isNumeric(data.get(j).toString())
                         IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
                         IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
                         incomeErrorMessage.setTotal(row);
                         incomeErrorMessage.setTotal(row);
                         incomeErrorMessage.setErrMessage("第" + row + "行 第" + column + "列数据不符合规范");
                         incomeErrorMessage.setErrMessage("第" + row + "行 第" + column + "列数据不符合规范");

+ 60 - 4
src/main/java/com/kcim/service/impl/CostDepartmentProfitServiceImpl.java

@@ -1,8 +1,10 @@
 package com.kcim.service.impl;
 package com.kcim.service.impl;
 
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
 import cn.hutool.poi.excel.ExcelWriter;
@@ -10,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kcim.common.enums.DateStyleEnum;
 import com.kcim.common.enums.DateStyleEnum;
+import com.kcim.common.enums.ErrorCodeEnum;
 import com.kcim.common.exception.CostException;
 import com.kcim.common.exception.CostException;
 import com.kcim.common.file.MinioConfig;
 import com.kcim.common.file.MinioConfig;
 import com.kcim.common.file.MinioFileUtil;
 import com.kcim.common.file.MinioFileUtil;
@@ -23,12 +26,21 @@ import com.kcim.dao.model.*;
 import com.kcim.vo.AllocationQueryReportVO;
 import com.kcim.vo.AllocationQueryReportVO;
 import com.kcim.vo.CostDepartmentProfitVO;
 import com.kcim.vo.CostDepartmentProfitVO;
 import com.kcim.service.*;
 import com.kcim.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.FileItemHeaders;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Sheet;
+
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
 
-import java.io.File;
+import javax.servlet.ServletOutputStream;
+import java.io.*;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.atomic.AtomicReference;
@@ -36,6 +48,7 @@ import java.util.stream.Collectors;
 
 
 
 
 @Service("costDepartmentProfitService")
 @Service("costDepartmentProfitService")
+@Slf4j
 public class CostDepartmentProfitServiceImpl extends ServiceImpl<CostDepartmentProfitMapper, CostDepartmentProfit> implements CostDepartmentProfitService {
 public class CostDepartmentProfitServiceImpl extends ServiceImpl<CostDepartmentProfitMapper, CostDepartmentProfit> implements CostDepartmentProfitService {
 
 
 //    @Value("${file.filelocal}")
 //    @Value("${file.filelocal}")
@@ -413,7 +426,7 @@ public class CostDepartmentProfitServiceImpl extends ServiceImpl<CostDepartmentP
      */
      */
     @Override
     @Override
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
-    public void getDepartProfitReport(String date, Long hospId, Integer reportType) {
+    public void getDepartProfitReport(String date, Long hospId, Integer reportType) throws IOException {
         DateTime dateTime = DateUtil.parse(date);
         DateTime dateTime = DateUtil.parse(date);
         int year = DateUtil.year(dateTime);
         int year = DateUtil.year(dateTime);
         int month = DateUtil.month(dateTime)+1;
         int month = DateUtil.month(dateTime)+1;
@@ -422,23 +435,66 @@ public class CostDepartmentProfitServiceImpl extends ServiceImpl<CostDepartmentP
         String time = DateUtil.format(DateUtil.date(), "yyyy年MM月dd日HH时mm分ss秒");
         String time = DateUtil.format(DateUtil.date(), "yyyy年MM月dd日HH时mm分ss秒");
 //        String bucketName = minioConfig.getBucketName();
 //        String bucketName = minioConfig.getBucketName();
 //        String uploadFileName = "file"+"/"+hospId + "/" + year + "/" + month + "/" + day + "/" + originalFilename;
 //        String uploadFileName = "file"+"/"+hospId + "/" + year + "/" + month + "/" + day + "/" + originalFilename;
+        FileItemFactory factory = new DiskFileItemFactory(5242880,null);
+
+        FileItem fileItem = factory.createItem("file", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8", true, "科室损益" + time + ".xlsx");
+        OutputStream outputStream = fileItem.getOutputStream();
 
 
-        String fileName = File.separator + hospId + File.separator + "hospReport" + File.separator + "科室损益" + time + ".xlsx";
+        String fileName = "科室损益" + time + ".xlsx";
         ExcelWriter writer = ExcelUtil.getWriter(fileName);
         ExcelWriter writer = ExcelUtil.getWriter(fileName);
+
         Sheet sheet = writer.getSheet();
         Sheet sheet = writer.getSheet();
         getDepartmentProfit(writer,sheet,date);
         getDepartmentProfit(writer,sheet,date);
+        writer.flush(outputStream,true);
+
+        MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
+        String file = uploadFile(multipartFile);
+
         FileRecord fileRecord = new FileRecord();
         FileRecord fileRecord = new FileRecord();
         fileRecord.setFileName("科室损益" + time + ".xlsx")
         fileRecord.setFileName("科室损益" + time + ".xlsx")
                 .setFileSource(reportType)
                 .setFileSource(reportType)
                 .setFileType("科室损益")
                 .setFileType("科室损益")
-                .setFileUrl( hospId + File.separator + "hospReport" + File.separator + "科室损益" + time + ".xlsx")
+                .setFileUrl( file)
                 .setHospId(hospId)
                 .setHospId(hospId)
                 .setDateYear(year).setDateMonth(month)
                 .setDateYear(year).setDateMonth(month)
                 .setCreateTime(System.currentTimeMillis());
                 .setCreateTime(System.currentTimeMillis());
         fileRecordService.save(fileRecord);
         fileRecordService.save(fileRecord);
         writer.close();
         writer.close();
+        fileItem.delete();
+    }
+
+
+    public String uploadFile(MultipartFile file) {
+        Long hospId = UserContext.getCurrentLoginHospId();
+        String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf(".")) + System.currentTimeMillis() + ".xlsx";
+        DateTime date = DateUtil.date();
+        int month = DateUtil.month(date) + 1;
+        int year = DateUtil.year(date);
+        int day = DateUtil.dayOfMonth(date);
+        String fileUrl="";
+        try {
+//            file.transferTo(new File(localFilePath));
+            String format = DateUtil.format(date, DatePattern.PURE_DATETIME_PATTERN);
+            String originalFilename = format + fileName;
+
+            String dataDirectory = minioConfig.getBucketName();
+            String uploadFileName = "departReport"+"/"+hospId + "/" + year + "/" + month + "/" + day + "/" + originalFilename;
+
+
+            InputStream inputStream = file.getInputStream();
+
+            minioFileUtil.putObject(dataDirectory, uploadFileName, inputStream);
+            fileUrl = minioFileUtil.getObjectUrl(dataDirectory, uploadFileName);
+
+        } catch (IOException e) {
+            log.error("【文件上传至服务器】失败,绝对路径:{}", e.getMessage());
+            throw new CostException(ErrorCodeEnum.FILE_UPLOAD_ERROR);
+        }
+        return fileUrl;
     }
     }
 
 
+
+
     /**
     /**
      * 删除科室损益数据
      * 删除科室损益数据
      *
      *

+ 12 - 5
src/main/java/com/kcim/service/impl/CostIncomeGroupServiceImpl.java

@@ -291,7 +291,9 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
      * @return
      * @return
      */
      */
     public Map<String, Department> getDepartmentByCodeNameMap(Long hospId) {
     public Map<String, Department> getDepartmentByCodeNameMap(Long hospId) {
-        return departmentService.list(new QueryWrapper<Department>().lambda().eq(Department::getHospId, hospId)).stream().collect(Collectors.toMap(k -> k.getDepartmentCode() + k.getDepartmentName(), synOe -> synOe));
+        List<Department> departments = departmentService.getDepartments();
+       return departments.stream().collect(Collectors.toMap(k -> k.getDepartmentCode() + k.getDepartmentName(), synOe -> synOe)) ;
+//        return departmentService.list(new QueryWrapper<Department>().lambda().eq(Department::getHospId, hospId)).stream().collect(Collectors.toMap(k -> k.getDepartmentCode() + k.getDepartmentName(), synOe -> synOe));
     }
     }
 
 
     /**
     /**
@@ -478,10 +480,15 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
                 costIncomeGroup.setStartResponsibilityCode(null);
                 costIncomeGroup.setStartResponsibilityCode(null);
                 costIncomeGroup.setStartResponsibilityName(null);
                 costIncomeGroup.setStartResponsibilityName(null);
             }
             }
-            costIncomeGroup.setDoctorNumber(StrUtil.isBlank(data.get(6).toString()) ? null : Long.parseLong(data.get(6).toString())).setDoctorName(data.get(7).toString())
-                    .setPatientId(StrUtil.isBlank(data.get(8).toString()) ? null : Long.parseLong(data.get(8).toString())).setOutpatientId(StrUtil.isBlank(data.get(9).toString()) ? null : Long.parseLong(data.get(9).toString()))
-                    .setPatientName(data.get(10).toString()).setPatientFee(data.get(11).toString()).setReceiptFee(data.get(12).toString())
-                    .setTotalNumber(StrUtil.isBlank(data.get(13).toString()) ? null : Integer.parseInt(data.get(13).toString())).setUnit(data.get(14).toString())
+            costIncomeGroup.setDoctorNumber(StrUtil.isBlank(data.get(6).toString()) ? null : Long.parseLong(data.get(6).toString()))
+                    .setDoctorName(data.get(7).toString())
+                    .setPatientId(StrUtil.isBlank(data.get(8).toString()) ? null : Long.parseLong(data.get(8).toString()))
+                    .setOutpatientId(StrUtil.isBlank(data.get(9).toString()) ? null : Long.parseLong(data.get(9).toString()))
+                    .setPatientName(data.get(10).toString())
+                    .setPatientFee(data.get(11).toString())
+                    .setReceiptFee(data.get(12).toString())
+                    .setTotalNumber(StrUtil.isBlank(data.get(13).toString()) ? null : Integer.parseInt(data.get(13).toString()))
+                    .setUnit(data.get(14).toString())
                     .setFeeDatetime(StrUtil.isBlank(data.get(16).toString()) ? null : DateUtils.StringToDate(data.get(16).toString(), DateStyleEnum.YYYY_MM_DD_HH_MM_SS));
                     .setFeeDatetime(StrUtil.isBlank(data.get(16).toString()) ? null : DateUtils.StringToDate(data.get(16).toString(), DateStyleEnum.YYYY_MM_DD_HH_MM_SS));
             costIncomeGroup.setHospId(hospId);
             costIncomeGroup.setHospId(hospId);
             costIncomeGroup.setCreateTime(System.currentTimeMillis());
             costIncomeGroup.setCreateTime(System.currentTimeMillis());

+ 10 - 0
src/main/java/com/kcim/service/impl/CostOtherPaymentsServiceImpl.java

@@ -3,6 +3,7 @@ package com.kcim.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.common.constants.NumberConstant;
 import com.kcim.common.exception.CostException;
 import com.kcim.common.exception.CostException;
 import com.kcim.common.util.BeanUtil;
 import com.kcim.common.util.BeanUtil;
 import com.kcim.common.util.PageUtils;
 import com.kcim.common.util.PageUtils;
@@ -41,6 +42,15 @@ public class CostOtherPaymentsServiceImpl extends ServiceImpl<CostOtherPaymentsM
         List<CostOtherPayments> records = pages.getRecords();
         List<CostOtherPayments> records = pages.getRecords();
         List<CostOtherPaymentsVO> costOtherPaymentsVOList = BeanUtil.convertList(records, CostOtherPaymentsVO.class);
         List<CostOtherPaymentsVO> costOtherPaymentsVOList = BeanUtil.convertList(records, CostOtherPaymentsVO.class);
         PageUtils pageUtils = new PageUtils(pages);
         PageUtils pageUtils = new PageUtils(pages);
+        for (CostOtherPaymentsVO vo : costOtherPaymentsVOList) {
+            if(vo.getPaymentsType().equals(NumberConstant.ONE)){
+                vo.setPaymentsTypeName("收入");
+            } else if (vo.getPaymentsType().equals(NumberConstant.TWO)) {
+                vo.setPaymentsTypeName("支出");
+            }else {
+                vo.setPaymentsTypeName("未知");
+            }
+        }
         pageUtils.setList(costOtherPaymentsVOList);
         pageUtils.setList(costOtherPaymentsVOList);
         return pageUtils;
         return pageUtils;
     }
     }

+ 26 - 1
src/main/java/com/kcim/service/impl/CostResponsibilityDepartmentServiceImpl.java

@@ -8,25 +8,30 @@ import com.kcim.common.constants.NumberConstant;
 import com.kcim.dao.mapper.CostResponsibilityDepartmentMapper;
 import com.kcim.dao.mapper.CostResponsibilityDepartmentMapper;
 import com.kcim.dao.model.CostResponsibilityDepartment;
 import com.kcim.dao.model.CostResponsibilityDepartment;
 import com.kcim.dao.model.Department;
 import com.kcim.dao.model.Department;
+import com.kcim.dao.repository.CostResponsibilityDepartmentRepository;
 import com.kcim.vo.CostDepartmentVO;
 import com.kcim.vo.CostDepartmentVO;
 import com.kcim.service.CostResponsibilityDepartmentService;
 import com.kcim.service.CostResponsibilityDepartmentService;
 import com.kcim.common.util.BeanUtil;
 import com.kcim.common.util.BeanUtil;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 
 
 @Service("/costResponsibilityDepartmentService")
 @Service("/costResponsibilityDepartmentService")
+@AllArgsConstructor
 public class CostResponsibilityDepartmentServiceImpl extends ServiceImpl<CostResponsibilityDepartmentMapper, CostResponsibilityDepartment> implements CostResponsibilityDepartmentService {
 public class CostResponsibilityDepartmentServiceImpl extends ServiceImpl<CostResponsibilityDepartmentMapper, CostResponsibilityDepartment> implements CostResponsibilityDepartmentService {
 
 
-    @Autowired
     private DepartmentServiceImpl departmentService;
     private DepartmentServiceImpl departmentService;
+
+    CostResponsibilityDepartmentRepository repository;
     /**
     /**
      * 根据责任中心的Id获取对应的科室信息的集合
      * 根据责任中心的Id获取对应的科室信息的集合
      *
      *
@@ -38,11 +43,31 @@ public class CostResponsibilityDepartmentServiceImpl extends ServiceImpl<CostRes
         if (responsibilityId<=0){
         if (responsibilityId<=0){
             throw new CostException("请选择责任中心数据");
             throw new CostException("请选择责任中心数据");
         }
         }
+
+        List<CostResponsibilityDepartment> list = repository.getList();
+
         // 当前医院责任中心所具有的的科室
         // 当前医院责任中心所具有的的科室
         List<CostResponsibilityDepartment> costResponsibilityDepartmentList = baseMapper.selectList(new QueryWrapper<CostResponsibilityDepartment>().lambda().eq(CostResponsibilityDepartment::getResponsibilityId, responsibilityId));
         List<CostResponsibilityDepartment> costResponsibilityDepartmentList = baseMapper.selectList(new QueryWrapper<CostResponsibilityDepartment>().lambda().eq(CostResponsibilityDepartment::getResponsibilityId, responsibilityId));
         Map<Long, List<CostResponsibilityDepartment>> costResponsibilityDepartmentMap = costResponsibilityDepartmentList.stream().distinct().collect(Collectors.groupingBy(CostResponsibilityDepartment::getDepartmentId));
         Map<Long, List<CostResponsibilityDepartment>> costResponsibilityDepartmentMap = costResponsibilityDepartmentList.stream().distinct().collect(Collectors.groupingBy(CostResponsibilityDepartment::getDepartmentId));
         // 所有科室
         // 所有科室
         List<Department> departmentList = departmentService.getByDepartment(null,null,null, UserContext.getHospId());
         List<Department> departmentList = departmentService.getByDepartment(null,null,null, UserContext.getHospId());
+        if(!CollectionUtils.isEmpty(list)){
+            //过滤出已对照过的科室
+            List<Long> collect = list.stream().map(CostResponsibilityDepartment::getDepartmentId).collect(Collectors.toList());
+            List<Department> removeList = new ArrayList<>();
+            for (Department department : departmentList) {
+                if(collect.contains(department.getId())){
+                    removeList.add(department);
+                }
+            }
+            if(!CollectionUtils.isEmpty(removeList)){
+                departmentList.removeAll(removeList);
+            }
+        }
+
+
+
+
         List<CostDepartmentVO> departVOList = BeanUtil.convertList(departmentList, CostDepartmentVO.class);
         List<CostDepartmentVO> departVOList = BeanUtil.convertList(departmentList, CostDepartmentVO.class);
         departVOList.forEach(i->{
         departVOList.forEach(i->{
             if (!CollectionUtils.isEmpty(costResponsibilityDepartmentMap.get(i.getId()))){
             if (!CollectionUtils.isEmpty(costResponsibilityDepartmentMap.get(i.getId()))){

+ 23 - 13
src/main/java/com/kcim/service/impl/DepartmentServiceImpl.java

@@ -17,6 +17,7 @@ import com.kcim.dao.mapper.DepartmentMapper;
 import com.kcim.dao.model.Department;
 import com.kcim.dao.model.Department;
 import com.kcim.dao.model.Hospital;
 import com.kcim.dao.model.Hospital;
 import com.kcim.dao.model.dto.DepartmentRequest;
 import com.kcim.dao.model.dto.DepartmentRequest;
+import com.kcim.dao.model.dto.SysDepartment;
 import com.kcim.service.CenterService;
 import com.kcim.service.CenterService;
 import com.kcim.vo.DepartmentVO;
 import com.kcim.vo.DepartmentVO;
 import com.kcim.service.DepartmentService;
 import com.kcim.service.DepartmentService;
@@ -87,24 +88,17 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
 //                .eq(!StringUtils.isEmpty(hospId), Department::getHospId, hospId)
 //                .eq(!StringUtils.isEmpty(hospId), Department::getHospId, hospId)
 //                .orderByDesc(Department::getCreateTime);
 //                .orderByDesc(Department::getCreateTime);
 //        List<Department> departmentList = baseMapper.selectList(wrapper);
 //        List<Department> departmentList = baseMapper.selectList(wrapper);
-        Map<String, String> department = centerService.getDepartment();
+        List<SysDepartment> departmentFilter = centerService.getDepartmentFilter(null);
         List<Department> departmentList = new ArrayList<>();
         List<Department> departmentList = new ArrayList<>();
-        if(!CollectionUtils.isEmpty(department)){
-            Long i = 1L;
-            for (String s : department.keySet()) {
+        if(!CollectionUtils.isEmpty(departmentFilter)){
+            for (SysDepartment sysDepartment : departmentFilter) {
                 Department depart = new Department();
                 Department depart = new Department();
-                depart.setId(i);
-                depart.setDepartmentCode(s);
-                depart.setDepartmentName(department.get(s));
+                depart.setId(Long.valueOf(sysDepartment.getId()));
+                depart.setDepartmentCode(sysDepartment.getCode());
+                depart.setDepartmentName(sysDepartment.getName());
                 departmentList.add(depart);
                 departmentList.add(depart);
-                i++;
             }
             }
-
         }
         }
-
-
-
-
         return departmentList;
         return departmentList;
     }
     }
 
 
@@ -251,4 +245,20 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
     public void deleteByIds(List<Integer> idList) {
     public void deleteByIds(List<Integer> idList) {
         this.removeByIds(idList);
         this.removeByIds(idList);
     }
     }
+
+    @Override
+    public List<Department> getDepartments() {
+        List<SysDepartment> departmentFilter = centerService.getDepartmentFilter(null);
+        List<Department> departmentList = new ArrayList<>();
+        if(!CollectionUtils.isEmpty(departmentFilter)){
+            for (SysDepartment sysDepartment : departmentFilter) {
+                Department depart = new Department();
+                depart.setId(Long.valueOf(sysDepartment.getId()));
+                depart.setDepartmentCode(sysDepartment.getCode());
+                depart.setDepartmentName(sysDepartment.getName());
+                departmentList.add(depart);
+            }
+        }
+        return departmentList;
+    }
 }
 }

+ 7 - 0
src/main/java/com/kcim/service/impl/EmpCostMapServiceImpl.java

@@ -7,6 +7,7 @@ import com.kcim.common.exception.CostException;
 import com.kcim.common.util.PageUtils;
 import com.kcim.common.util.PageUtils;
 import com.kcim.common.util.UserContext;
 import com.kcim.common.util.UserContext;
 import com.kcim.dao.model.EmpCostMap;
 import com.kcim.dao.model.EmpCostMap;
+import com.kcim.dao.model.dto.SysDepartment;
 import com.kcim.dao.repository.EmpCostMapRepository;
 import com.kcim.dao.repository.EmpCostMapRepository;
 import com.kcim.service.CenterService;
 import com.kcim.service.CenterService;
 import com.kcim.service.EmpCostMapService;
 import com.kcim.service.EmpCostMapService;
@@ -87,6 +88,12 @@ public class EmpCostMapServiceImpl implements EmpCostMapService {
         List<DictDataVo> dataVoList = centerDict.getDataVoList();
         List<DictDataVo> dataVoList = centerDict.getDataVoList();
         Map<String,String> positionMap = dataVoList.stream().collect(Collectors.toMap(DictDataVo::getCode, DictDataVo::getName, (a, b) -> b));
         Map<String,String> positionMap = dataVoList.stream().collect(Collectors.toMap(DictDataVo::getCode, DictDataVo::getName, (a, b) -> b));
         Map<Long,UserInfoVO> mapUser = userInfo.stream().collect(Collectors.toMap(UserInfoVO::getId, infoVO -> infoVO, (a, b) -> b));
         Map<Long,UserInfoVO> mapUser = userInfo.stream().collect(Collectors.toMap(UserInfoVO::getId, infoVO -> infoVO, (a, b) -> b));
+        List<SysDepartment> departmentFilter = centerService.getDepartmentFilter(null);
+        Map<Integer,String> departmentMap = new HashMap<>();
+        for (SysDepartment sysDepartment : departmentFilter) {
+            departmentMap.put(sysDepartment.getId(), sysDepartment.getCode());
+        }
+
         List<EmpCostMap> list = repository.getList();
         List<EmpCostMap> list = repository.getList();
         for (EmpCostMap empCostMap : list) {
         for (EmpCostMap empCostMap : list) {
             Long userId = empCostMap.getUserId();
             Long userId = empCostMap.getUserId();

+ 67 - 3
src/main/java/com/kcim/service/impl/HospProfitAndLossServiceImpl.java

@@ -1,6 +1,7 @@
 package com.kcim.service.impl;
 package com.kcim.service.impl;
 
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ReUtil;
 import cn.hutool.core.util.ReUtil;
@@ -11,9 +12,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kcim.common.enums.CalcTypeEnum;
 import com.kcim.common.enums.CalcTypeEnum;
+import com.kcim.common.enums.ErrorCodeEnum;
 import com.kcim.common.enums.ReportTypeEnum;
 import com.kcim.common.enums.ReportTypeEnum;
 import com.kcim.common.exception.CostException;
 import com.kcim.common.exception.CostException;
+import com.kcim.common.file.MinioConfig;
+import com.kcim.common.file.MinioFileUtil;
 import com.kcim.common.util.PageUtils;
 import com.kcim.common.util.PageUtils;
+import com.kcim.common.util.UserContext;
 import com.kcim.dao.mapper.HospProfitAndLossMapper;
 import com.kcim.dao.mapper.HospProfitAndLossMapper;
 import com.kcim.dao.model.*;
 import com.kcim.dao.model.*;
 import com.kcim.vo.RelationVO;
 import com.kcim.vo.RelationVO;
@@ -21,11 +26,19 @@ import com.kcim.vo.ReportFormVO;
 import com.kcim.common.constants.Constant;
 import com.kcim.common.constants.Constant;
 import com.kcim.service.*;
 import com.kcim.service.*;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
 
 import java.io.File;
 import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentHashMap;
@@ -53,6 +66,9 @@ public class HospProfitAndLossServiceImpl extends ServiceImpl<HospProfitAndLossM
     private final CostAccountShareService accountShareService;
     private final CostAccountShareService accountShareService;
     private final FileRecordService fileRecordService;
     private final FileRecordService fileRecordService;
 
 
+    private final MinioConfig minioConfig;
+
+    private final MinioFileUtil minioFileUtil;
     public HospProfitAndLossServiceImpl(ReportFormService reportFormService,
     public HospProfitAndLossServiceImpl(ReportFormService reportFormService,
                                         IncomeCollectionService collectionService,
                                         IncomeCollectionService collectionService,
                                         AllocationQueryService allocationQueryService,
                                         AllocationQueryService allocationQueryService,
@@ -60,7 +76,7 @@ public class HospProfitAndLossServiceImpl extends ServiceImpl<HospProfitAndLossM
                                         CostShareLevelService shareLevelService,
                                         CostShareLevelService shareLevelService,
                                         CostOtherPaymentsDataService otherPaymentsDataService,
                                         CostOtherPaymentsDataService otherPaymentsDataService,
                                         ResponsibilityService responsibilityService,
                                         ResponsibilityService responsibilityService,
-                                        CostAccountShareService accountShareService, FileRecordService fileRecordService) {
+                                        CostAccountShareService accountShareService, FileRecordService fileRecordService, MinioConfig minioConfig, MinioFileUtil minioFileUtil) {
         this.reportFormService = reportFormService;
         this.reportFormService = reportFormService;
         this.collectionService = collectionService;
         this.collectionService = collectionService;
         this.allocationQueryService = allocationQueryService;
         this.allocationQueryService = allocationQueryService;
@@ -70,6 +86,8 @@ public class HospProfitAndLossServiceImpl extends ServiceImpl<HospProfitAndLossM
         this.responsibilityService = responsibilityService;
         this.responsibilityService = responsibilityService;
         this.accountShareService = accountShareService;
         this.accountShareService = accountShareService;
         this.fileRecordService = fileRecordService;
         this.fileRecordService = fileRecordService;
+        this.minioConfig = minioConfig;
+        this.minioFileUtil = minioFileUtil;
     }
     }
 
 
 
 
@@ -420,7 +438,7 @@ public class HospProfitAndLossServiceImpl extends ServiceImpl<HospProfitAndLossM
 //        ExcelWriter writer = ExcelUtil.getWriter();
 //        ExcelWriter writer = ExcelUtil.getWriter();
         String time = DateUtil.format(DateUtil.date(), "yyyy年MM月dd日HH时mm分ss秒");
         String time = DateUtil.format(DateUtil.date(), "yyyy年MM月dd日HH时mm分ss秒");
         //todo:后面调整为上传到文件服务器,先启动确认环境
         //todo:后面调整为上传到文件服务器,先启动确认环境
-        String fileName =  File.separator + hospId + File.separator + "hospReport" + File.separator + "全院损益" + time + ".xlsx";
+        String fileName =   "全院损益" + time + ".xlsx";
         ExcelWriter writer = ExcelUtil.getWriter(fileName);
         ExcelWriter writer = ExcelUtil.getWriter(fileName);
 
 
         List<String> secondTitleListCode = leafResp.stream().map(Responsibility::getResponsibilityCode).collect(Collectors.toList());
         List<String> secondTitleListCode = leafResp.stream().map(Responsibility::getResponsibilityCode).collect(Collectors.toList());
@@ -534,14 +552,60 @@ public class HospProfitAndLossServiceImpl extends ServiceImpl<HospProfitAndLossM
             }
             }
             lastRow = lastRow + size;
             lastRow = lastRow + size;
         }
         }
+
+        FileItemFactory factory = new DiskFileItemFactory(5242880,null);
+
+        FileItem fileItem = factory.createItem("file", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8", true, "全院损益" + time + ".xlsx");
+        String file = "";
+        try {
+            OutputStream outputStream = fileItem.getOutputStream();
+            writer.flush(outputStream,true);
+            MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
+             file = uploadFile(multipartFile);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+
+
         FileRecord fileRecord = new FileRecord();
         FileRecord fileRecord = new FileRecord();
-        fileRecord.setFileName("全院损益" + time + ".xlsx").setFileSource(1).setFileType("全院损益").setFileUrl( hospId + File.separator + "hospReport" + File.separator + "全院损益" + time + ".xlsx").setHospId(hospId)
+        fileRecord.setFileName("全院损益" + time + ".xlsx")
+                .setFileSource(1)
+                .setFileType("全院损益")
+                .setFileUrl( file)
+                .setHospId(hospId)
                 .setDateYear(year).setDateMonth(month)
                 .setDateYear(year).setDateMonth(month)
                 .setCreateTime(System.currentTimeMillis());
                 .setCreateTime(System.currentTimeMillis());
         fileRecordService.save(fileRecord);
         fileRecordService.save(fileRecord);
         writer.close();
         writer.close();
     }
     }
+    public String uploadFile(MultipartFile file) {
+        Long hospId = UserContext.getCurrentLoginHospId();
+        String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf(".")) + System.currentTimeMillis() + ".xlsx";
+        DateTime date = DateUtil.date();
+        int month = DateUtil.month(date) + 1;
+        int year = DateUtil.year(date);
+        int day = DateUtil.dayOfMonth(date);
+        String fileUrl="";
+        try {
+//            file.transferTo(new File(localFilePath));
+            String format = DateUtil.format(date, DatePattern.PURE_DATETIME_PATTERN);
+            String originalFilename = format + fileName;
 
 
+            String dataDirectory = minioConfig.getBucketName();
+            String uploadFileName = "hospReport"+"/"+hospId + "/" + year + "/" + month + "/" + day + "/" + originalFilename;
+
+
+            InputStream inputStream = file.getInputStream();
+
+            minioFileUtil.putObject(dataDirectory, uploadFileName, inputStream);
+            fileUrl = minioFileUtil.getObjectUrl(dataDirectory, uploadFileName);
+
+        } catch (IOException e) {
+            log.error("【文件上传至服务器】失败,绝对路径:{}", e.getMessage());
+            throw new CostException(ErrorCodeEnum.FILE_UPLOAD_ERROR);
+        }
+        return fileUrl;
+    }
     @Override
     @Override
     public PageUtils hospProfitReports(Integer current, Integer pageSize, Long hospId, String date) {
     public PageUtils hospProfitReports(Integer current, Integer pageSize, Long hospId, String date) {
         DateTime parse = DateUtil.parse(date);
         DateTime parse = DateUtil.parse(date);

+ 52 - 75
src/main/java/com/kcim/service/impl/IncomeCollectionServiceImpl.java

@@ -156,47 +156,15 @@ public class IncomeCollectionServiceImpl
                         if (!sets.isEmpty()) {
                         if (!sets.isEmpty()) {
                             for (CostIncomeGroupSet set : sets) {
                             for (CostIncomeGroupSet set : sets) {
                                 String accountCode = set.getAccountCode();
                                 String accountCode = set.getAccountCode();
-                                if (StrUtil.isBlank(accountCode)) {
-                                    continue;
-                                }
-                                String[] split = accountCode.split(StrUtil.COMMA);
-                                boolean contains = CollUtil.newArrayList(split).contains(costIncomeGroup.getAccountCode());
-                                if (contains) {
-                                    // 钱全给执行科室
-                                    incomeCollection.setAmount(new BigDecimal("0.0000"));
-                                    incomeCollection.setDepartmentCode(afterIncomegroup.getOpenDepartmentCode());
-                                    incomeCollection.setDepartmentName(afterIncomegroup.getOpenDepartmentName());
-                                    incomeCollection.setResponsibilityCode(afterIncomegroup.getOpenResponsibilityCode());
-                                    incomeCollection.setResponsibilityName(afterIncomegroup.getOpenResponsibilityName());
-
-                                    list.add(incomeCollection);
-                                    // 执行科室数据
-
-                                    IncomeCollection startCollect = BeanUtil.convertObj(incomeCollection, IncomeCollection.class);
-                                    startCollect.setAmount(costIncomeGroup.getAmount());
-                                    startCollect.setDepartmentCode(afterIncomegroup.getStartDepartmentCode());
-                                    startCollect.setDepartmentName(afterIncomegroup.getStartDepartmentName());
-                                    startCollect.setResponsibilityCode(afterIncomegroup.getStartResponsibilityCode());
-                                    startCollect.setResponsibilityName(afterIncomegroup.getStartResponsibilityName());
-                                    log.info("start:{}", startCollect);
-                                    log.info("open:{}", incomeCollection);
-                                    list.add(startCollect);
-                                } else {
-                                    if (afterIncomegroup.getDirectStatus() == 2) {
-                                        afterIncomegroup.setDirectStatus(0);
-                                    }
-                                    incomeCollection.setIsDirectIncome(afterIncomegroup.getDirectStatus());
-                                    String responsibilityCode = afterIncomegroup.getResponsibilityCode();
-                                    if (StrUtil.isNotBlank(responsibilityCode)) {
-                                        incomeCollection.setDepartmentName(afterIncomegroup.getOpenDepartmentName() + "|" + afterIncomegroup.getStartDepartmentName());
-                                        incomeCollection.setDepartmentCode(afterIncomegroup.getOpenDepartmentCode() + "|" + afterIncomegroup.getStartDepartmentCode());
-                                        incomeCollection.setResponsibilityCode(responsibilityCode);
-                                        incomeCollection.setResponsibilityName(afterIncomegroup.getResponsibilityName());
-                                        incomeCollection.setAmount(afterIncomegroup.getOtherResponsibilityDecimal());
-                                        list.add(incomeCollection);
-                                    } else {
-                                        // 开单中心的数据
-                                        incomeCollection.setAmount(afterIncomegroup.getOpenDepartmentDecimal());
+//                                if (StrUtil.isBlank(accountCode)) {
+//                                    continue;
+//                                }
+                                if(StrUtil.isNotBlank(accountCode)){
+                                    String[] split = accountCode.split(StrUtil.COMMA);
+                                    boolean contains = CollUtil.newArrayList(split).contains(costIncomeGroup.getAccountCode());
+                                    if (contains) {
+                                        // 钱全给执行科室
+                                        incomeCollection.setAmount(new BigDecimal("0.0000"));
                                         incomeCollection.setDepartmentCode(afterIncomegroup.getOpenDepartmentCode());
                                         incomeCollection.setDepartmentCode(afterIncomegroup.getOpenDepartmentCode());
                                         incomeCollection.setDepartmentName(afterIncomegroup.getOpenDepartmentName());
                                         incomeCollection.setDepartmentName(afterIncomegroup.getOpenDepartmentName());
                                         incomeCollection.setResponsibilityCode(afterIncomegroup.getOpenResponsibilityCode());
                                         incomeCollection.setResponsibilityCode(afterIncomegroup.getOpenResponsibilityCode());
@@ -206,7 +174,7 @@ public class IncomeCollectionServiceImpl
                                         // 执行科室数据
                                         // 执行科室数据
 
 
                                         IncomeCollection startCollect = BeanUtil.convertObj(incomeCollection, IncomeCollection.class);
                                         IncomeCollection startCollect = BeanUtil.convertObj(incomeCollection, IncomeCollection.class);
-                                        startCollect.setAmount(afterIncomegroup.getStartDepartmentDecimal());
+                                        startCollect.setAmount(costIncomeGroup.getAmount());
                                         startCollect.setDepartmentCode(afterIncomegroup.getStartDepartmentCode());
                                         startCollect.setDepartmentCode(afterIncomegroup.getStartDepartmentCode());
                                         startCollect.setDepartmentName(afterIncomegroup.getStartDepartmentName());
                                         startCollect.setDepartmentName(afterIncomegroup.getStartDepartmentName());
                                         startCollect.setResponsibilityCode(afterIncomegroup.getStartResponsibilityCode());
                                         startCollect.setResponsibilityCode(afterIncomegroup.getStartResponsibilityCode());
@@ -214,45 +182,18 @@ public class IncomeCollectionServiceImpl
                                         log.info("start:{}", startCollect);
                                         log.info("start:{}", startCollect);
                                         log.info("open:{}", incomeCollection);
                                         log.info("open:{}", incomeCollection);
                                         list.add(startCollect);
                                         list.add(startCollect);
+                                    } else {
+                                        percentCollection(list, incomeCollection, afterIncomegroup);
                                     }
                                     }
+                                }else {
+                                    percentCollection(list, incomeCollection, afterIncomegroup);
                                 }
                                 }
+
                             }
                             }
                         }
                         }
                         return;
                         return;
                     }
                     }
-                    if (afterIncomegroup.getDirectStatus() == 2) {
-                        afterIncomegroup.setDirectStatus(0);
-                    }
-                    incomeCollection.setIsDirectIncome(afterIncomegroup.getDirectStatus());
-                    String responsibilityCode = afterIncomegroup.getResponsibilityCode();
-                    if (StrUtil.isNotBlank(responsibilityCode)) {
-                        incomeCollection.setDepartmentName(afterIncomegroup.getOpenDepartmentName() + "|" + afterIncomegroup.getStartDepartmentName());
-                        incomeCollection.setDepartmentCode(afterIncomegroup.getOpenDepartmentCode() + "|" + afterIncomegroup.getStartDepartmentCode());
-                        incomeCollection.setResponsibilityCode(responsibilityCode);
-                        incomeCollection.setResponsibilityName(afterIncomegroup.getResponsibilityName());
-                        incomeCollection.setAmount(afterIncomegroup.getOtherResponsibilityDecimal());
-                        list.add(incomeCollection);
-                    } else {
-                        // 开单中心的数据
-                        incomeCollection.setAmount(afterIncomegroup.getOpenDepartmentDecimal());
-                        incomeCollection.setDepartmentCode(afterIncomegroup.getOpenDepartmentCode());
-                        incomeCollection.setDepartmentName(afterIncomegroup.getOpenDepartmentName());
-                        incomeCollection.setResponsibilityCode(afterIncomegroup.getOpenResponsibilityCode());
-                        incomeCollection.setResponsibilityName(afterIncomegroup.getOpenResponsibilityName());
-
-                        list.add(incomeCollection);
-                        // 执行科室数据
-
-                        IncomeCollection startCollect = BeanUtil.convertObj(incomeCollection, IncomeCollection.class);
-                        startCollect.setAmount(afterIncomegroup.getStartDepartmentDecimal());
-                        startCollect.setDepartmentCode(afterIncomegroup.getStartDepartmentCode());
-                        startCollect.setDepartmentName(afterIncomegroup.getStartDepartmentName());
-                        startCollect.setResponsibilityCode(afterIncomegroup.getStartResponsibilityCode());
-                        startCollect.setResponsibilityName(afterIncomegroup.getStartResponsibilityName());
-                        log.info("start:{}", startCollect);
-                        log.info("open:{}", incomeCollection);
-                        list.add(startCollect);
-                    }
+                    percentCollection(list, incomeCollection, afterIncomegroup);
 
 
                 });
                 });
 
 
@@ -282,6 +223,42 @@ public class IncomeCollectionServiceImpl
 
 
     }
     }
 
 
+    private void percentCollection(List<IncomeCollection> list, IncomeCollection incomeCollection, AfterIncomeGroup afterIncomegroup) {
+        if (afterIncomegroup.getDirectStatus() == 2) {
+            afterIncomegroup.setDirectStatus(0);
+        }
+        incomeCollection.setIsDirectIncome(afterIncomegroup.getDirectStatus());
+        String responsibilityCode = afterIncomegroup.getResponsibilityCode();
+        if (StrUtil.isNotBlank(responsibilityCode)) {
+            incomeCollection.setDepartmentName(afterIncomegroup.getOpenDepartmentName() + "|" + afterIncomegroup.getStartDepartmentName());
+            incomeCollection.setDepartmentCode(afterIncomegroup.getOpenDepartmentCode() + "|" + afterIncomegroup.getStartDepartmentCode());
+            incomeCollection.setResponsibilityCode(responsibilityCode);
+            incomeCollection.setResponsibilityName(afterIncomegroup.getResponsibilityName());
+            incomeCollection.setAmount(afterIncomegroup.getOtherResponsibilityDecimal());
+            list.add(incomeCollection);
+        } else {
+            // 开单中心的数据
+            incomeCollection.setAmount(afterIncomegroup.getOpenDepartmentDecimal());
+            incomeCollection.setDepartmentCode(afterIncomegroup.getOpenDepartmentCode());
+            incomeCollection.setDepartmentName(afterIncomegroup.getOpenDepartmentName());
+            incomeCollection.setResponsibilityCode(afterIncomegroup.getOpenResponsibilityCode());
+            incomeCollection.setResponsibilityName(afterIncomegroup.getOpenResponsibilityName());
+
+            list.add(incomeCollection);
+            // 执行科室数据
+
+            IncomeCollection startCollect = BeanUtil.convertObj(incomeCollection, IncomeCollection.class);
+            startCollect.setAmount(afterIncomegroup.getStartDepartmentDecimal());
+            startCollect.setDepartmentCode(afterIncomegroup.getStartDepartmentCode());
+            startCollect.setDepartmentName(afterIncomegroup.getStartDepartmentName());
+            startCollect.setResponsibilityCode(afterIncomegroup.getStartResponsibilityCode());
+            startCollect.setResponsibilityName(afterIncomegroup.getStartResponsibilityName());
+            log.info("start:{}", startCollect);
+            log.info("open:{}", incomeCollection);
+            list.add(startCollect);
+        }
+    }
+
     /**
     /**
      * 按年月撤销归集
      * 按年月撤销归集
      *
      *

+ 24 - 6
src/main/java/com/kcim/service/impl/ProductServiceImpl.java

@@ -19,16 +19,16 @@ import com.kcim.common.util.excel.entity.PatientItemImportEntity;
 import com.kcim.common.util.excel.entity.ProductTemplateEntity;
 import com.kcim.common.util.excel.entity.ProductTemplateEntity;
 import com.kcim.common.util.excel.handler.ItemTypeHandler;
 import com.kcim.common.util.excel.handler.ItemTypeHandler;
 import com.kcim.dao.mapper.ProductMapper;
 import com.kcim.dao.mapper.ProductMapper;
-import com.kcim.dao.model.Hospital;
-import com.kcim.dao.model.ImportPatientItem;
-import com.kcim.dao.model.Product;
+import com.kcim.dao.model.*;
 import com.kcim.dao.model.dto.ProductDTO;
 import com.kcim.dao.model.dto.ProductDTO;
 import com.kcim.dao.model.dto.ProductEditDTO;
 import com.kcim.dao.model.dto.ProductEditDTO;
+import com.kcim.dao.repository.AccountingProductRepository;
 import com.kcim.vo.CommonVO;
 import com.kcim.vo.CommonVO;
 import com.kcim.vo.DictDataVo;
 import com.kcim.vo.DictDataVo;
 import com.kcim.vo.ProductVO;
 import com.kcim.vo.ProductVO;
 import com.kcim.service.ProductService;
 import com.kcim.service.ProductService;
 import com.kcim.common.util.BeanUtil;
 import com.kcim.common.util.BeanUtil;
+import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -47,11 +47,13 @@ import static com.kcim.common.constants.Constant.CHARGE_ITEM_TYPE;
 
 
 @Slf4j
 @Slf4j
 @Service("productService")
 @Service("productService")
+@AllArgsConstructor
 public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
 public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
 
 
-    @Autowired
     private HospitalServiceImpl hospitalService;
     private HospitalServiceImpl hospitalService;
 
 
+    AccountingProductRepository accountingProductRepository;
+
     /**
     /**
      * 分页查询
      * 分页查询
      *
      *
@@ -75,7 +77,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             return new PageUtils(new ArrayList<>(),NumberConstant.ZERO,pageSize,current);
             return new PageUtils(new ArrayList<>(),NumberConstant.ZERO,pageSize,current);
         }
         }
         List<ProductVO> list = BeanUtil.convertList(records, ProductVO.class);
         List<ProductVO> list = BeanUtil.convertList(records, ProductVO.class);
-        return new PageUtils(list,NumberConstant.ZERO,pageSize,current);
+        return new PageUtils(list, Math.toIntExact(pages.getTotal()),pageSize,current);
 
 
     }
     }
 
 
@@ -142,7 +144,23 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
         if (list.isEmpty()) {
         if (list.isEmpty()) {
             return Collections.emptyList();
             return Collections.emptyList();
         }
         }
-       return list.stream().map(i -> {
+
+        List<AccountingProduct> accountingProducts = accountingProductRepository.getList();
+        if(!CollectionUtils.isEmpty(accountingProducts)){
+            //过滤出已对照过的会计收入项目
+            List<Long> collect = accountingProducts.stream().map(AccountingProduct::getProductId).collect(Collectors.toList());
+            List<Product> removeList = new ArrayList<>();
+            for (Product product : list) {
+                if(collect.contains(product.getId())){
+                    removeList.add(product);
+                }
+            }
+            if(!CollectionUtils.isEmpty(removeList)){
+                list.removeAll(removeList);
+            }
+        }
+
+        return list.stream().map(i -> {
             CommonVO commonVO = new CommonVO();
             CommonVO commonVO = new CommonVO();
             commonVO.setId(i.getId());
             commonVO.setId(i.getId());
             commonVO.setName(i.getProductName() + "[" + i.getProductCode() + "]");
             commonVO.setName(i.getProductName() + "[" + i.getProductCode() + "]");

+ 6 - 0
src/main/java/com/kcim/service/impl/ReportFormServiceImpl.java

@@ -23,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 
 import java.util.*;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Matcher;
@@ -355,10 +356,15 @@ public class ReportFormServiceImpl extends ServiceImpl<ReportFormMapper, ReportF
         if (relations.isEmpty() || newSonForms.isEmpty()) {
         if (relations.isEmpty() || newSonForms.isEmpty()) {
             return;
             return;
         }
         }
+        if(!CollectionUtils.isEmpty(relations)){
+            relations.forEach(relation -> relation.setId(null));
+
+        }
         newSonForms.forEach(i -> {
         newSonForms.forEach(i -> {
             relations.forEach(j -> {
             relations.forEach(j -> {
                 if (i.getOldId() != 0 && i.getOldId().equals(j.getReportId())) {
                 if (i.getOldId() != 0 && i.getOldId().equals(j.getReportId())) {
                     j.setReportId(i.getId());
                     j.setReportId(i.getId());
+
                     reportRelationService.save(j);
                     reportRelationService.save(j);
                 }
                 }
             });
             });

+ 45 - 13
src/main/java/com/kcim/service/impl/ReportRelationServiceImpl.java

@@ -2,6 +2,7 @@ package com.kcim.service.impl;
 
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kcim.common.exception.CostException;
 import com.kcim.common.exception.CostException;
@@ -16,6 +17,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
@@ -54,7 +56,12 @@ public class ReportRelationServiceImpl extends ServiceImpl<ReportRelationMapper,
      */
      */
     @Override
     @Override
     public List<RelationVO> getShareLevel(Long reportId, Long hospId) {
     public List<RelationVO> getShareLevel(Long reportId, Long hospId) {
-        return baseMapper.getShareParam(reportId, hospId);
+        List<RelationVO> shareParam = baseMapper.getShareParam(reportId, hospId);
+        if(!CollectionUtils.isEmpty(shareParam)){
+            shareParam.forEach(relationVO -> relationVO.setId(relationVO.getCode()));
+
+        }
+        return shareParam;
     }
     }
 
 
     /**
     /**
@@ -114,6 +121,7 @@ public class ReportRelationServiceImpl extends ServiceImpl<ReportRelationMapper,
         Integer relation = reportRelationDTO.getRelation();
         Integer relation = reportRelationDTO.getRelation();
         List<String> relationCodes = reportRelationDTO.getRelationCodes();
         List<String> relationCodes = reportRelationDTO.getRelationCodes();
         Long reportId = reportRelationDTO.getReportId();
         Long reportId = reportRelationDTO.getReportId();
+        Integer reportType = reportRelationDTO.getReportType();
 
 
         // 校验这个report是否能绑定
         // 校验这个report是否能绑定
         ReportForm byId = reportFormMapper.selectById(reportId);
         ReportForm byId = reportFormMapper.selectById(reportId);
@@ -141,7 +149,7 @@ public class ReportRelationServiceImpl extends ServiceImpl<ReportRelationMapper,
             return reportRelation;
             return reportRelation;
         }).collect(Collectors.toList());
         }).collect(Collectors.toList());
         // 校验 关联关系的id 是否已绑定过其他的报表项目
         // 校验 关联关系的id 是否已绑定过其他的报表项目
-        checkIfExist(hospId, relation, relationCodes);
+        checkIfExist(hospId, relation, relationCodes,reportType);
         this.saveBatch(reportRelations);
         this.saveBatch(reportRelations);
     }
     }
 
 
@@ -151,18 +159,42 @@ public class ReportRelationServiceImpl extends ServiceImpl<ReportRelationMapper,
      * @param hospId        医院id
      * @param hospId        医院id
      * @param relation      关系
      * @param relation      关系
      * @param relationCodes 所有需要绑定的code 列表
      * @param relationCodes 所有需要绑定的code 列表
+     * @param reportType
      */
      */
-    private void checkIfExist(Long hospId, Integer relation, List<String> relationCodes) {
-        List<ReportRelation> relations = this.list(
-                new LambdaQueryWrapper<ReportRelation>().select(ReportRelation::getRelationCode)
-                        .in(ReportRelation::getRelationCode, relationCodes)
-                        .eq(ReportRelation::getRelation, relation)
-                        .eq(ReportRelation::getHospId, hospId)
-        );
-        if (CollUtil.isNotEmpty(relations)) {
-            throw new CostException(500, "编码为:" +
-                    StrUtil.join(StrUtil.COMMA, relations.stream().map(ReportRelation::getRelationCode).collect(Collectors.toList())) +
-                    "已被其他项目代码绑定");
+    private void checkIfExist(Long hospId, Integer relation, List<String> relationCodes, Integer reportType) {
+        LambdaQueryWrapper<ReportForm> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ReportForm::getHospId,hospId);
+        wrapper.eq(ReportForm::getReportType,reportType);
+        List<ReportForm> reportForms = reportFormMapper.selectList(wrapper);
+        if(!CollectionUtils.isEmpty(reportForms)){
+            List<Long> collect = reportForms.stream().map(ReportForm::getId).collect(Collectors.toList());
+            List<ReportRelation> relations = this.list(
+                    new LambdaQueryWrapper<ReportRelation>().select(ReportRelation::getRelationCode)
+                            .in(ReportRelation::getRelationCode, relationCodes)
+                            .eq(ReportRelation::getRelation, relation)
+                            .eq(ReportRelation::getHospId, hospId)
+                            .in(ReportRelation::getReportId,collect)
+            );
+            if (CollUtil.isNotEmpty(relations)) {
+                throw new CostException(500, "编码为:" +
+                        StrUtil.join(StrUtil.COMMA, relations.stream().map(ReportRelation::getRelationCode).collect(Collectors.toList())) +
+                        "已被其他项目代码绑定");
+            }
+        }else {
+            List<ReportRelation> relations = this.list(
+                    new LambdaQueryWrapper<ReportRelation>().select(ReportRelation::getRelationCode)
+                            .in(ReportRelation::getRelationCode, relationCodes)
+                            .eq(ReportRelation::getRelation, relation)
+                            .eq(ReportRelation::getHospId, hospId)
+            );
+            if (CollUtil.isNotEmpty(relations)) {
+                throw new CostException(500, "编码为:" +
+                        StrUtil.join(StrUtil.COMMA, relations.stream().map(ReportRelation::getRelationCode).collect(Collectors.toList())) +
+                        "已被其他项目代码绑定");
+            }
         }
         }
+
+
+
     }
     }
 }
 }

+ 5 - 0
src/main/java/com/kcim/service/impl/ResponsibilityDepartmentServiceImpl.java

@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -64,6 +65,8 @@ public class ResponsibilityDepartmentServiceImpl
         if (CollUtil.isEmpty(departmentIds)) {
         if (CollUtil.isEmpty(departmentIds)) {
             return ;
             return ;
         }
         }
+        List<Long> remove = departmentIds.stream().filter(Objects::isNull).collect(Collectors.toList());
+        departmentIds.removeAll(remove);
         Responsibility byId = responsibilityService.getById(responsibilityId);
         Responsibility byId = responsibilityService.getById(responsibilityId);
         if (Objects.isNull(byId)) {
         if (Objects.isNull(byId)) {
             throw new CostException(500, "责任中心不存在或已被移除");
             throw new CostException(500, "责任中心不存在或已被移除");
@@ -79,4 +82,6 @@ public class ResponsibilityDepartmentServiceImpl
 
 
         this.saveBatch(data);
         this.saveBatch(data);
     }
     }
+
+
 }
 }

+ 78 - 12
src/main/java/com/kcim/service/impl/ResponsibilityServiceImpl.java

@@ -12,8 +12,12 @@ import com.kcim.common.enums.ErrorCodeEnum;
 import com.kcim.dao.mapper.ResponsibilityDepartmentMapper;
 import com.kcim.dao.mapper.ResponsibilityDepartmentMapper;
 import com.kcim.dao.mapper.ResponsibilityMapper;
 import com.kcim.dao.mapper.ResponsibilityMapper;
 import com.kcim.dao.model.Responsibility;
 import com.kcim.dao.model.Responsibility;
+import com.kcim.dao.model.ResponsibilityDepartment;
 import com.kcim.dao.model.dto.ResponsibilityEditDTO;
 import com.kcim.dao.model.dto.ResponsibilityEditDTO;
 import com.kcim.dao.model.dto.ResponsibilitySaveDTO;
 import com.kcim.dao.model.dto.ResponsibilitySaveDTO;
+import com.kcim.dao.model.dto.SysDepartment;
+import com.kcim.dao.repository.ResponsibilityDepartmentRepository;
+import com.kcim.service.CenterService;
 import com.kcim.service.ResponsibilityService;
 import com.kcim.service.ResponsibilityService;
 import com.kcim.common.constants.Constant;
 import com.kcim.common.constants.Constant;
 import com.kcim.vo.*;
 import com.kcim.vo.*;
@@ -22,6 +26,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -33,10 +38,14 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
 
 
     private final CostShareLevelServiceImpl costShareLevelService;
     private final CostShareLevelServiceImpl costShareLevelService;
     private final ResponsibilityDepartmentMapper responsibilityDepartMapper;
     private final ResponsibilityDepartmentMapper responsibilityDepartMapper;
+    private final CenterService centerService;
 
 
-    public ResponsibilityServiceImpl(CostShareLevelServiceImpl costShareLevelService, ResponsibilityDepartmentMapper responsibilityDepartMapper) {
+    private final ResponsibilityDepartmentRepository responsibilityDepartmentRepository;
+    public ResponsibilityServiceImpl(CostShareLevelServiceImpl costShareLevelService, ResponsibilityDepartmentMapper responsibilityDepartMapper, CenterService centerService, ResponsibilityDepartmentRepository responsibilityDepartmentRepository) {
         this.costShareLevelService = costShareLevelService;
         this.costShareLevelService = costShareLevelService;
         this.responsibilityDepartMapper = responsibilityDepartMapper;
         this.responsibilityDepartMapper = responsibilityDepartMapper;
+        this.centerService = centerService;
+        this.responsibilityDepartmentRepository = responsibilityDepartmentRepository;
     }
     }
 
 
     /**
     /**
@@ -351,18 +360,75 @@ public class ResponsibilityServiceImpl extends ServiceImpl<ResponsibilityMapper,
             return vo;
             return vo;
         }).collect(Collectors.toList());
         }).collect(Collectors.toList());
 
 
-        return centerDepartmentVOS.stream().filter(i -> i.getParentId() == 0)
-                .peek(i -> {
-                    List<CenterDepartmentVO> responsibilityChildrenForRelation = this.getResponsibilityChildrenForRelation(i, centerDepartmentVOS);
-                    if (CollUtil.isEmpty(responsibilityChildrenForRelation)) {
-                        i.setDepartments(responsibilityDepartMapper.getDepartByCenterId(i.getResponsibilityId()));
-                        i.setIsParent(false);
-                        i.setDepartments(responsibilityDepartMapper.getDepartByCenterId(i.getResponsibilityId()));
+        List<SysDepartment> departmentFilter = centerService.getDepartmentFilter(null);
+        Map<Long,String> departmentMap = departmentFilter.stream().collect(Collectors.toMap(sysDepartment -> Long.valueOf(sysDepartment.getId()), SysDepartment::getName, (a, b) -> b));
+        Map<Long,String> departmentCodeMap = departmentFilter.stream().collect(Collectors.toMap(sysDepartment -> Long.valueOf(sysDepartment.getId()), SysDepartment::getCode, (a, b) -> b));
+
+        List<ResponsibilityDepartment> responsibilityDepartment = responsibilityDepartmentRepository.getResponsibilityDepartment();
+        if(!CollectionUtils.isEmpty(responsibilityDepartment)){
+            Map<Long, List<ResponsibilityDepartment>> collect = responsibilityDepartment.stream().collect(Collectors.groupingBy(ResponsibilityDepartment::getResponsibilityId));
+            //组装科室
+            Map<Long,List<DepartVO> > responsibilityDepartmentMap = new HashMap<>();
+            for (Long aLong : collect.keySet()) {
+                List<ResponsibilityDepartment> responsibilityDepartments = collect.get(aLong);
+                List<DepartVO> departVOS = new ArrayList<>();
+                for (ResponsibilityDepartment department : responsibilityDepartments) {
+                    DepartVO vo = new DepartVO();
+                    String departName = departmentMap.get(department.getDepartmentId());
+                    if(!StringUtils.isEmpty(departName)){
+                        vo.setDepartmentId(department.getDepartmentId());
+                        vo.setDepartmentName(departName +departmentCodeMap.get(department.getDepartmentId()));
                     }
                     }
-                    i.setChild(responsibilityChildrenForRelation);
-                    i.setIsParent(true);
-                })
-                .collect(Collectors.toList());
+                    departVOS.add(vo);
+                }
+                responsibilityDepartmentMap.put(aLong,departVOS);
+            }
+
+            centerDepartmentVOS.forEach(centerDepartmentVO -> centerDepartmentVO.setDepartments(responsibilityDepartmentMap.get(centerDepartmentVO.getResponsibilityId())));
+
+        }
+        //
+        Map<Long, List<CenterDepartmentVO>> collectParentGroup = centerDepartmentVOS.stream().collect(Collectors.groupingBy(CenterDepartmentVO::getParentId));
+        //获取父类
+        List<CenterDepartmentVO> voList = collectParentGroup.get(NumberConstant.ZERO_L);
+
+        for (CenterDepartmentVO centerDepartmentVO : voList) {
+            List<CenterDepartmentVO> departmentVOS = collectParentGroup.get(centerDepartmentVO.getId());
+            if(!CollectionUtils.isEmpty(departmentVOS)){
+                for (CenterDepartmentVO departmentVO : departmentVOS) {
+                    handleTree(departmentVO,collectParentGroup);
+                }
+            }
+
+            centerDepartmentVO.setIsParent(true);
+            centerDepartmentVO.setChild(departmentVOS);
+        }
+
+        return voList;//        return centerDepartmentVOS.stream().filter(i -> i.getParentId() == 0)
+//                .peek(i -> {
+//                    List<CenterDepartmentVO> responsibilityChildrenForRelation = this.getResponsibilityChildrenForRelation(i, centerDepartmentVOS);
+//                    if (CollUtil.isEmpty(responsibilityChildrenForRelation)) {
+//                        i.setDepartments(responsibilityDepartMapper.getDepartByCenterId(i.getResponsibilityId()));
+//                        i.setIsParent(false);
+//                        i.setDepartments(responsibilityDepartMapper.getDepartByCenterId(i.getResponsibilityId()));
+//                    }
+//                    i.setChild(responsibilityChildrenForRelation);
+//                    i.setIsParent(true);
+//                })
+//                .collect(Collectors.toList());
+
+    }
+    private void handleTree(CenterDepartmentVO vo,Map<Long, List<CenterDepartmentVO>> collectParentGroup){
+        List<CenterDepartmentVO> departmentVOS = collectParentGroup.get(vo.getId());
+        if(!CollectionUtils.isEmpty(departmentVOS)){
+            for (CenterDepartmentVO departmentVO : departmentVOS) {
+                handleTree(departmentVO,collectParentGroup);
+            }
+            vo.setIsParent(false);
+            vo.setChild(departmentVOS);
+        }
+
+
 
 
     }
     }
 
 

+ 8 - 2
src/main/java/com/kcim/service/impl/ShareParamValueServiceImpl.java

@@ -31,6 +31,8 @@ import org.springframework.web.multipart.MultipartFile;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 import static cn.hutool.core.date.DatePattern.PURE_DATE_PATTERN;
 import static cn.hutool.core.date.DatePattern.PURE_DATE_PATTERN;
@@ -323,6 +325,11 @@ public class ShareParamValueServiceImpl extends ServiceImpl<ShareParamValueMappe
                                           Map<Long, Responsibility> responsibilityMap, Map<Long, Long> responsibilityDepMap,
                                           Map<Long, Responsibility> responsibilityMap, Map<Long, Long> responsibilityDepMap,
                                           Map<String, CostShareParam> shareParamMap, List<ShareParamValue> shareParamValues,
                                           Map<String, CostShareParam> shareParamMap, List<ShareParamValue> shareParamValues,
                                           List<Object> departmentCodes, List<Object> departmentNames) {
                                           List<Object> departmentCodes, List<Object> departmentNames) {
+
+        Pattern pattern = Pattern.compile("^\\d+(\\.\\d+)?$");
+
+
+
         for (int i = 2; i < list.size(); i++) {
         for (int i = 2; i < list.size(); i++) {
             int row = i + 4;
             int row = i + 4;
             List<Object> data = list.get(i);
             List<Object> data = list.get(i);
@@ -344,7 +351,7 @@ public class ShareParamValueServiceImpl extends ServiceImpl<ShareParamValueMappe
                 if (data.size() > j) {
                 if (data.size() > j) {
                     if (Objects.isNull(data.get(j))) {
                     if (Objects.isNull(data.get(j))) {
                         data.set(j, NumberConstant.ZERO);
                         data.set(j, NumberConstant.ZERO);
-                    } else if (data.get(j).toString().contains("-") || !StringUtils.isNumeric(data.get(j).toString())) {
+                    } else if (data.get(j).toString().contains("-") || !pattern.matcher(data.get(j).toString()).matches()) {//!StringUtils.isNumeric(data.get(j).toString())
                         IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
                         IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
                         incomeErrorMessage.setTotal(row);
                         incomeErrorMessage.setTotal(row);
                         incomeErrorMessage.setErrMessage("第" + row + "行 第" + column + "列数据不符合规范");
                         incomeErrorMessage.setErrMessage("第" + row + "行 第" + column + "列数据不符合规范");
@@ -381,7 +388,6 @@ public class ShareParamValueServiceImpl extends ServiceImpl<ShareParamValueMappe
                                 Responsibility responsibility = responsibilityMap.get(responsibilityId);
                                 Responsibility responsibility = responsibilityMap.get(responsibilityId);
                                 if (Objects.nonNull(responsibility)) {
                                 if (Objects.nonNull(responsibility)) {
                                     shareParamValue.setResponsibilityCode(responsibility.getResponsibilityCode());
                                     shareParamValue.setResponsibilityCode(responsibility.getResponsibilityCode());
-
                                 } else {
                                 } else {
                                     IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
                                     IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
                                     incomeErrorMessage.setTotal(j);
                                     incomeErrorMessage.setTotal(j);

+ 2 - 1
src/main/java/com/kcim/vo/CostAccountShareVO.java

@@ -23,7 +23,8 @@ public class CostAccountShareVO {
 
 
     @ApiModelProperty(name = "shareLevel",value = "责任中心分摊层级")
     @ApiModelProperty(name = "shareLevel",value = "责任中心分摊层级")
     private Integer shareLevel;
     private Integer shareLevel;
-
+    @ApiModelProperty(name = "shareName", value = "分摊级别名称")
+    private String shareName;
     @ApiModelProperty(name = "responsibilityCode",value = "责任中心代码")
     @ApiModelProperty(name = "responsibilityCode",value = "责任中心代码")
     private String responsibilityCode;
     private String responsibilityCode;
 
 

+ 2 - 0
src/main/java/com/kcim/vo/CostOtherPaymentsVO.java

@@ -22,6 +22,8 @@ public class CostOtherPaymentsVO {
      */
      */
     @ApiModelProperty(name = "paymentsType",value = "收支类型 1收入 2支出")
     @ApiModelProperty(name = "paymentsType",value = "收支类型 1收入 2支出")
     private Integer paymentsType;
     private Integer paymentsType;
+
+    private String paymentsTypeName;
     /**
     /**
      * 收支名称
      * 收支名称
      */
      */

+ 1 - 1
src/main/java/com/kcim/vo/RelationVO.java

@@ -9,7 +9,7 @@ import lombok.Data;
 @Data
 @Data
 @ApiModel("成本项目关联视图对象")
 @ApiModel("成本项目关联视图对象")
 public class RelationVO {
 public class RelationVO {
-
+    private String id;
     @ApiModelProperty(name = "code",value = "关联关系的code")
     @ApiModelProperty(name = "code",value = "关联关系的code")
     private String code;
     private String code;
 
 

+ 4 - 1
src/main/java/com/kcim/web/CostDepartmentProfitController.java

@@ -7,6 +7,7 @@ import com.kcim.common.util.UserContext;
 import com.kcim.dao.model.CostDepartmentProfit;
 import com.kcim.dao.model.CostDepartmentProfit;
 import com.kcim.service.CostDepartmentProfitService;
 import com.kcim.service.CostDepartmentProfitService;
 import io.swagger.annotations.*;
 import io.swagger.annotations.*;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
@@ -22,6 +23,7 @@ import java.util.Arrays;
 @RestController
 @RestController
 @RequestMapping("costdepartmentprofit")
 @RequestMapping("costdepartmentprofit")
 @Api(tags = "科室损益计算")
 @Api(tags = "科室损益计算")
+@Slf4j
 public class CostDepartmentProfitController {
 public class CostDepartmentProfitController {
     @Autowired
     @Autowired
     private CostDepartmentProfitService costDepartmentProfitService;
     private CostDepartmentProfitService costDepartmentProfitService;
@@ -40,7 +42,7 @@ public class CostDepartmentProfitController {
     })
     })
     public Result list(@RequestParam(value = "current", defaultValue = "1") Integer current,
     public Result list(@RequestParam(value = "current", defaultValue = "1") Integer current,
                        @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
                        @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
-                       @RequestParam(value = "responsibilityCode") String responsibilityCode,
+                       @RequestParam(value = "responsibilityCode",required = false) String responsibilityCode,
                        @RequestParam(value = "date") String date){
                        @RequestParam(value = "date") String date){
         Long hospId = UserContext.getHospId();
         Long hospId = UserContext.getHospId();
         PageUtils pageUtils = costDepartmentProfitService.queryList(current,pageSize,responsibilityCode,date,hospId);
         PageUtils pageUtils = costDepartmentProfitService.queryList(current,pageSize,responsibilityCode,date,hospId);
@@ -57,6 +59,7 @@ public class CostDepartmentProfitController {
             Long hospId = UserContext.getHospId();
             Long hospId = UserContext.getHospId();
             costDepartmentProfitService.getDepartProfitReport(date,hospId,reportType);
             costDepartmentProfitService.getDepartProfitReport(date,hospId,reportType);
         } catch (Exception e) {
         } catch (Exception e) {
+            log.error(e.getMessage());
             throw new CostException(500,"生成错误");
             throw new CostException(500,"生成错误");
         }
         }
 
 

+ 2 - 2
src/main/java/com/kcim/web/CostIncomeFileController.java

@@ -37,9 +37,9 @@ public class CostIncomeFileController {
     public Result list(@RequestParam(value = "current", defaultValue = "1") Integer current,
     public Result list(@RequestParam(value = "current", defaultValue = "1") Integer current,
                        @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
                        @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
                        @RequestParam(value = "fileName",required = false) String fileName,
                        @RequestParam(value = "fileName",required = false) String fileName,
-                       @RequestParam(value = "dateTime",required = false) String dateTime){
+                       @RequestParam(value = "computeDate",required = false) String computeDate){
         Long hospId = UserContext.getHospId();
         Long hospId = UserContext.getHospId();
-        PageUtils pageUtils = costIncomeFileService.queryList(current,pageSize,fileName,dateTime,hospId);
+        PageUtils pageUtils = costIncomeFileService.queryList(current,pageSize,fileName,computeDate,hospId);
         return Result.ok(pageUtils);
         return Result.ok(pageUtils);
     }
     }
 
 

+ 60 - 34
src/main/java/com/kcim/web/ExcelController.java

@@ -15,14 +15,11 @@ import com.kcim.common.util.Result;
 import com.kcim.common.util.UserContext;
 import com.kcim.common.util.UserContext;
 import com.kcim.common.constants.NumberConstant;
 import com.kcim.common.constants.NumberConstant;
 import com.kcim.common.util.excel.ExcelStyleUtil;
 import com.kcim.common.util.excel.ExcelStyleUtil;
-import com.kcim.common.util.excel.entity.PatientItemImportEntity;
 import com.kcim.common.util.excel.entity.ProductTemplateEntity;
 import com.kcim.common.util.excel.entity.ProductTemplateEntity;
-import com.kcim.common.util.excel.handler.ItemTypeHandler;
 import com.kcim.dao.model.*;
 import com.kcim.dao.model.*;
 import com.kcim.service.impl.DepartmentServiceImpl;
 import com.kcim.service.impl.DepartmentServiceImpl;
 import com.kcim.service.impl.ProductServiceImpl;
 import com.kcim.service.impl.ProductServiceImpl;
 import com.kcim.service.*;
 import com.kcim.service.*;
-import com.kcim.vo.DictDataVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiImplicitParams;
@@ -41,8 +38,6 @@ import java.net.URLEncoder;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
-import static com.kcim.common.constants.Constant.CHARGE_ITEM_TYPE;
-
 /**
 /**
  * 相关导入导出操作
  * 相关导入导出操作
  */
  */
@@ -79,15 +74,19 @@ public class ExcelController extends AbstractController{
 
 
     private final CostCostingCollectionService costCostingCollectionService;
     private final CostCostingCollectionService costCostingCollectionService;
 
 
-    private final AllocationService allocationServicel;
+    private final AllocationService allocationService;
 
 
     private final CostDepartmentProfitService costDepartmentProfitService;
     private final CostDepartmentProfitService costDepartmentProfitService;
 
 
+    private final CostShareLevelService shareLevelService;
+
     public ExcelController(UserService userService, DepartmentServiceImpl departmentService, ProductServiceImpl productService,
     public ExcelController(UserService userService, DepartmentServiceImpl departmentService, ProductServiceImpl productService,
                            AccountingService accountingService, AccountingProductService accountingProductService,
                            AccountingService accountingService, AccountingProductService accountingProductService,
                            ResponsibilityDepartmentService responsibilityDepartmentService,
                            ResponsibilityDepartmentService responsibilityDepartmentService,
                            CostShareParamService costShareParamService, CostIncomeGroupService costIncomeGroupService,
                            CostShareParamService costShareParamService, CostIncomeGroupService costIncomeGroupService,
-                           CostCostingGroupService costCostingGroupService, ShareParamValueService shareParamValueService, CostCostingCollectionService costCostingCollectionService, AllocationService allocationServicel, CostDepartmentProfitService costDepartmentProfitService) {
+                           CostCostingGroupService costCostingGroupService, ShareParamValueService shareParamValueService,
+                           CostCostingCollectionService costCostingCollectionService, AllocationService allocationService,
+                           CostDepartmentProfitService costDepartmentProfitService, CostShareLevelService shareLevelService) {
         this.userService = userService;
         this.userService = userService;
         this.departmentService = departmentService;
         this.departmentService = departmentService;
         this.productService = productService;
         this.productService = productService;
@@ -99,8 +98,9 @@ public class ExcelController extends AbstractController{
         this.costCostingGroupService = costCostingGroupService;
         this.costCostingGroupService = costCostingGroupService;
         this.shareParamValueService = shareParamValueService;
         this.shareParamValueService = shareParamValueService;
         this.costCostingCollectionService = costCostingCollectionService;
         this.costCostingCollectionService = costCostingCollectionService;
-        this.allocationServicel = allocationServicel;
+        this.allocationService = allocationService;
         this.costDepartmentProfitService = costDepartmentProfitService;
         this.costDepartmentProfitService = costDepartmentProfitService;
+        this.shareLevelService = shareLevelService;
     }
     }
 
 
     @ApiOperation("用户导出模板设置")
     @ApiOperation("用户导出模板设置")
@@ -313,11 +313,11 @@ public class ExcelController extends AbstractController{
     @GetMapping("/getImportIncomeProductAccountTemplate")
     @GetMapping("/getImportIncomeProductAccountTemplate")
     public void getImportProductAccountTemplate(HttpServletResponse response,String token) throws IOException {
     public void getImportProductAccountTemplate(HttpServletResponse response,String token) throws IOException {
         Long hospId = UserContext.getHospId();
         Long hospId = UserContext.getHospId();
-        String uuid = UUID.randomUUID().toString();
-        String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls";
-        FileUtil.del(FileUtil.file(url));
+//        String uuid = UUID.randomUUID().toString();
+//        String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls";
+//        FileUtil.del(FileUtil.file(url));
 
 
-        ExcelWriter writer = new ExcelWriter(url);
+        ExcelWriter writer = new ExcelWriter();
         // 样式
         // 样式
         Sheet sheet = writer.getSheet();
         Sheet sheet = writer.getSheet();
         // 内容
         // 内容
@@ -332,9 +332,9 @@ public class ExcelController extends AbstractController{
                 "病人ID",	"住院号/门诊号",	"患者姓名",	"病人费别",	"收据费别",	"数量",	"单位",	"金额",	"费用发生时间"));
                 "病人ID",	"住院号/门诊号",	"患者姓名",	"病人费别",	"收据费别",	"数量",	"单位",	"金额",	"费用发生时间"));
         int accountType = NumberConstant.ONE;
         int accountType = NumberConstant.ONE;
         int column = NumberConstant.FOUR;
         int column = NumberConstant.FOUR;
-        FileOutputStream outputStream = new FileOutputStream("E:\\收入数据导出模板设置.xlsx");
+//        FileOutputStream outputStream = new FileOutputStream("E:\\收入数据导出模板设置.xlsx");
 
 
-        getProductByAccountType(hospId, writer, accountType, column);
+//        getProductByAccountType(hospId, writer, accountType, column);
         writer.setColumnWidth(0, 20);
         writer.setColumnWidth(0, 20);
         writer.setColumnWidth(1, 20);
         writer.setColumnWidth(1, 20);
         writer.setColumnWidth(2, 10);
         writer.setColumnWidth(2, 10);
@@ -352,8 +352,12 @@ public class ExcelController extends AbstractController{
         writer.setColumnWidth(14, 10);
         writer.setColumnWidth(14, 10);
         writer.setColumnWidth(15, 10);
         writer.setColumnWidth(15, 10);
         writer.setColumnWidth(16, 15);
         writer.setColumnWidth(16, 15);
-        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
-        response.setHeader("Content-Disposition", "attachment;filename=" + uuid + ".xls");
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("application/vnd.ms-excel");
+        String fileName ="收入数据导入模板";
+        response.setHeader("Content-Disposition",  URLEncoder.encode(fileName, "UTF-8"));
+//        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
+//        response.setHeader("Content-Disposition", "attachment;filename=" + uuid + ".xls");
         ServletOutputStream out = null;
         ServletOutputStream out = null;
         out = response.getOutputStream();
         out = response.getOutputStream();
         writer.flush(out, true);
         writer.flush(out, true);
@@ -372,11 +376,11 @@ public class ExcelController extends AbstractController{
 //            throw new CostException(500,"用户不存在");
 //            throw new CostException(500,"用户不存在");
 //        }
 //        }
         Long hospId = UserContext.getHospId();
         Long hospId = UserContext.getHospId();
-        String uuid = UUID.randomUUID().toString();
-        String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls";
-        FileUtil.del(FileUtil.file(url));
+//        String uuid = UUID.randomUUID().toString();
+//        String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls";
+//        FileUtil.del(FileUtil.file(url));
 
 
-        ExcelWriter writer = new ExcelWriter(url);
+        ExcelWriter writer = new ExcelWriter();
         // 样式
         // 样式
         // 所有科室里面对应存在责任中心对应的科室
         // 所有科室里面对应存在责任中心对应的科室
         List<Department> departmentLinkedList = getDepartments(hospId);
         List<Department> departmentLinkedList = getDepartments(hospId);
@@ -406,8 +410,12 @@ public class ExcelController extends AbstractController{
         getProductByAccountType(hospId, writer, accountType, column);
         getProductByAccountType(hospId, writer, accountType, column);
         writer.setColumnWidth(0, 15);
         writer.setColumnWidth(0, 15);
         writer.setColumnWidth(1, 15);
         writer.setColumnWidth(1, 15);
-        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
-        response.setHeader("Content-Disposition", "attachment;filename=" + uuid + ".xls");
+//        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
+//        response.setHeader("Content-Disposition", "attachment;filename=" + uuid + ".xls");
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("application/vnd.ms-excel");
+        String fileName ="成本数据导入模板";
+        response.setHeader("Content-Disposition",  URLEncoder.encode(fileName, "UTF-8"));
         ServletOutputStream out = null;
         ServletOutputStream out = null;
         out = response.getOutputStream();
         out = response.getOutputStream();
         writer.flush(out, true);
         writer.flush(out, true);
@@ -451,15 +459,21 @@ public class ExcelController extends AbstractController{
 //            throw new CostException(500,"用户不存在");
 //            throw new CostException(500,"用户不存在");
 //        }
 //        }
         Long hospId = UserContext.getHospId();
         Long hospId = UserContext.getHospId();
-        String uuid = UUID.randomUUID().toString();
-        String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls";
-        FileUtil.del(FileUtil.file(url));
-        ExcelWriter writer = new ExcelWriter(url);
+//        String uuid = UUID.randomUUID().toString();
+//        String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls";
+//        FileUtil.del(FileUtil.file(url));
+        ExcelWriter writer = new ExcelWriter();
         Sheet sheet = writer.getSheet();
         Sheet sheet = writer.getSheet();
-        // 第几次分摊
-        writer= allocationServicel.getShareReportTemplate(writer,levelSort,sheet,year,month,shareLevelId);
-        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
-        response.setHeader("Content-Disposition", "attachment;filename=" + uuid + ".xls");
+
+        CostShareLevel service = shareLevelService.getById(shareLevelId);        // 第几次分摊
+        writer= allocationService.getShareReportTemplate(writer,levelSort,sheet,year,month,shareLevelId);
+//        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
+//        response.setHeader("Content-Disposition", "attachment;filename=" + uuid + ".xls");
+
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("application/vnd.ms-excel");
+        String fileName = service.getShareName()+"分摊";
+        response.setHeader("Content-Disposition",  URLEncoder.encode(fileName, "UTF-8"));
         ServletOutputStream out = null;
         ServletOutputStream out = null;
         out = response.getOutputStream();
         out = response.getOutputStream();
         writer.flush(out, true);
         writer.flush(out, true);
@@ -561,7 +575,7 @@ public class ExcelController extends AbstractController{
         writer.passCurrentRow();
         writer.passCurrentRow();
         writer.merge(2, 2, 0, departmentCodeList.size()==0?3:departmentCodeList.size()+1, "医院成本分摊参数数据批量导入", false);
         writer.merge(2, 2, 0, departmentCodeList.size()==0?3:departmentCodeList.size()+1, "医院成本分摊参数数据批量导入", false);
         writer.passCurrentRow();
         writer.passCurrentRow();
-        writer.merge(3,3,2,departmentCodeList.size()==0?3:departmentCodeList.size()+1,"科室",false);
+        writer.merge(3,3,2,departmentCodeList.size()==0?3:departmentCodeList.size()+1,"科室",true);
         writer.passCurrentRow();
         writer.passCurrentRow();
         departmentCodeList.add(0, null);
         departmentCodeList.add(0, null);
         departmentCodeList.add(1, null);
         departmentCodeList.add(1, null);
@@ -579,17 +593,29 @@ public class ExcelController extends AbstractController{
         }
         }
         writer.setColumnWidth(0, 15);
         writer.setColumnWidth(0, 15);
         writer.setColumnWidth(1, 22);
         writer.setColumnWidth(1, 22);
-        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
-        response.setHeader("Content-Disposition", "attachment;filename=" + uuid + ".xls");
+//        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
+//        response.setHeader("Content-Disposition", "attachment;filename=" + "成本分摊参数值导出模板" + ".xls");
+
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("application/vnd.ms-excel");
+        String fileName ="成本分摊参数值导入模板";
+        response.setHeader("Content-Disposition",  URLEncoder.encode(fileName, "UTF-8"));
+
+
+
         ServletOutputStream out = null;
         ServletOutputStream out = null;
+//        FileOutputStream outputStream = new FileOutputStream("E:\\患者信息导入模版.xlsx");
         out = response.getOutputStream();
         out = response.getOutputStream();
         writer.flush(out, true);
         writer.flush(out, true);
         writer.close();
         writer.close();
         IoUtil.close(out);
         IoUtil.close(out);
     }
     }
     private List<Department> getDepartments(Long hospId) {
     private List<Department> getDepartments(Long hospId) {
+
+
         List<Department> departmentLinkedList = new LinkedList<>();
         List<Department> departmentLinkedList = new LinkedList<>();
-        List<Department> departmentList = departmentService.list(new QueryWrapper<Department>().lambda().eq(Department::getHospId, hospId).orderByDesc(Department::getCreateTime));
+        List<Department> departmentList = departmentService.getDepartments();
+//        List<Department> departmentList = departmentService.list(new QueryWrapper<Department>().lambda().eq(Department::getHospId, hospId).orderByDesc(Department::getCreateTime));
         List<ResponsibilityDepartment> responsibilityDepartmentList = responsibilityDepartmentService.list(new QueryWrapper<ResponsibilityDepartment>().lambda()
         List<ResponsibilityDepartment> responsibilityDepartmentList = responsibilityDepartmentService.list(new QueryWrapper<ResponsibilityDepartment>().lambda()
                 .eq(ResponsibilityDepartment::getHospId, hospId));
                 .eq(ResponsibilityDepartment::getHospId, hospId));
         Map<Long, List<ResponsibilityDepartment>> responsibilityDepartmentMap = responsibilityDepartmentList.stream().collect(Collectors.groupingBy(ResponsibilityDepartment::getDepartmentId));
         Map<Long, List<ResponsibilityDepartment>> responsibilityDepartmentMap = responsibilityDepartmentList.stream().collect(Collectors.groupingBy(ResponsibilityDepartment::getDepartmentId));

+ 1 - 1
src/main/resources/application-dev.yml

@@ -118,4 +118,4 @@ minio:
   port: 9000
   port: 9000
   access-key: UOxpxcO0loqZqKzH
   access-key: UOxpxcO0loqZqKzH
   secret-key: KfHhDLRWL0PtaWW0JTXqz6Gn685P2EWY
   secret-key: KfHhDLRWL0PtaWW0JTXqz6Gn685P2EWY
-  bucket-name: kcim-account
+  bucket-name: kcim-cost

+ 2 - 2
src/main/resources/application.yml

@@ -1,6 +1,6 @@
 spring:
 spring:
   profiles:
   profiles:
-    active: dev
+#    active: dev
 #    active: demonstrate
 #    active: demonstrate
-#    active: prod
+    active: prod