Przeglądaj źródła

Merge branch 'master' into dev

ljx 4 lat temu
rodzic
commit
b6ea9a28c4
23 zmienionych plików z 864 dodań i 100 usunięć
  1. 16 0
      src/main/java/com/imed/costaccount/mapper/CostCostingCollectionMapper.java
  2. 81 1
      src/main/java/com/imed/costaccount/mapper/CostCostingGroupMapper.java
  3. 69 0
      src/main/java/com/imed/costaccount/model/AfterCostGroup.java
  4. 2 2
      src/main/java/com/imed/costaccount/model/AfterIncomeGroup.java
  5. 100 0
      src/main/java/com/imed/costaccount/model/CostCostingCollection.java
  6. 3 1
      src/main/java/com/imed/costaccount/model/CostCostingGroup.java
  7. 21 0
      src/main/java/com/imed/costaccount/model/dto/StartDTO.java
  8. 24 0
      src/main/java/com/imed/costaccount/model/vo/AllocationVO.java
  9. 56 0
      src/main/java/com/imed/costaccount/model/vo/CostingGroupStartVO.java
  10. 16 0
      src/main/java/com/imed/costaccount/service/CostCostingCollectionService.java
  11. 32 0
      src/main/java/com/imed/costaccount/service/CostCostingGroupService.java
  12. 5 4
      src/main/java/com/imed/costaccount/service/impl/AccountingProductServiceImpl.java
  13. 2 2
      src/main/java/com/imed/costaccount/service/impl/CostAccountShareServiceImpl.java
  14. 14 0
      src/main/java/com/imed/costaccount/service/impl/CostCostingCollectionServiceImpl.java
  15. 146 23
      src/main/java/com/imed/costaccount/service/impl/CostCostingGroupServiceImpl.java
  16. 3 4
      src/main/java/com/imed/costaccount/service/impl/CostIncomeGroupServiceImpl.java
  17. 1 3
      src/main/java/com/imed/costaccount/service/impl/IncomeCollectionServiceImpl.java
  18. 6 8
      src/main/java/com/imed/costaccount/service/impl/ShareParamValueServiceImpl.java
  19. 74 0
      src/main/java/com/imed/costaccount/web/CostCostingCollectionController.java
  20. 49 48
      src/main/java/com/imed/costaccount/web/CostCostingGroupController.java
  21. 5 2
      src/main/java/com/imed/costaccount/web/CostIncomeGroupSetController.java
  22. 28 0
      src/main/resources/mapper/CostCostingCollectionMapper.xml
  23. 111 2
      src/main/resources/mapper/CostCostingGroupMapper.xml

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

@@ -0,0 +1,16 @@
+package com.imed.costaccount.mapper;
+
+import com.imed.costaccount.model.CostCostingCollection;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 成本数据归集后列表
+ * 
+ * @author KCYG
+ * @date 2021-08-18 15:27:02
+ */
+@Mapper
+public interface CostCostingCollectionMapper extends BaseMapper<CostCostingCollection> {
+	
+}

+ 81 - 1
src/main/java/com/imed/costaccount/mapper/CostCostingGroupMapper.java

@@ -2,7 +2,13 @@ package com.imed.costaccount.mapper;
 
 import com.imed.costaccount.model.CostCostingGroup;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.imed.costaccount.model.vo.AllocationVO;
+import com.imed.costaccount.model.vo.CostingGroupStartVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 成本归集
@@ -12,5 +18,79 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface CostCostingGroupMapper extends BaseMapper<CostCostingGroup> {
-	
+
+
+    /**
+     * 成本分摊前查询列表
+     * @param startIndex 开始索引
+     * @param pageSize limit
+     * @param responsibilityCode 责任中心代码
+     * @param accountCode 会计中心代码
+     * @param year 年
+     * @param month 月
+     * @param hospId 医院
+     * @return {@link CostingGroupStartVO}
+     */
+    List<CostingGroupStartVO> queryStartAllocation(@Param("startIndex") Integer startIndex,
+                                                   @Param("pageSize") Integer pageSize,
+                                                   @Param("responsibilityCode") String responsibilityCode,
+                                                   @Param("accountCode") String accountCode,
+                                                   @Param("year") Integer year,
+                                                   @Param("month") Integer month,
+                                                   @Param("hospId") Long hospId);
+
+    /**
+     * 成本分摊前查询列表 总数
+     * @param responsibilityCode 责任中心代码
+     * @param accountCode 会计中心代码
+     * @param year 年
+     * @param month 月
+     * @param hospId 医院
+     * @return 总数
+     */
+    int queryStartAllocationCount(@Param("responsibilityCode") String responsibilityCode,
+                                  @Param("accountCode") String accountCode,
+                                  @Param("year") Integer year,
+                                  @Param("month") Integer month,
+                                  @Param("hospId") Long hospId);
+
+    /**
+     *成本分摊年月总金额
+     *
+     * @param responsibilityCode 责任中心代码
+     * @param accountCode 会计中心代码
+     * @param year 年
+     * @param month 月
+     * @param hospId 医院
+     * @return 总金额
+     */
+    BigDecimal queryStartAllocationTotalAmount(@Param("responsibilityCode") String responsibilityCode,
+                                               @Param("accountCode") String accountCode,
+                                               @Param("year") Integer year,
+                                               @Param("month") Integer month,
+                                               @Param("hospId") Long hospId);
+
+    /**
+     * 陈本分摊列表
+     * @param startIndex 开始索引
+     * @param pageSize 每页数据大小
+     * @param year 年
+     * @param month 月
+     * @param hospId 医院id
+     * @return 列表
+     */
+    List<AllocationVO> queryAllocation(@Param("startIndex") Integer startIndex,
+                                       @Param("pageSize") Integer pageSize,
+                                       @Param("year") Integer year,
+                                       @Param("month") Integer month,
+                                       @Param("hospId") Long hospId);
+
+    /**
+     * 同上
+     * @param year 年
+     * @param month 月
+     * @param hospId 医院id
+     * @return 总数
+     */
+    int queryAllocationCount(@Param("year") Integer year, @Param("month") Integer month, @Param("hospId") Long hospId);
 }

+ 69 - 0
src/main/java/com/imed/costaccount/model/AfterCostGroup.java

@@ -0,0 +1,69 @@
+package com.imed.costaccount.model;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author 李加喜
+ * @Package com.imed.costaccount.model
+ * @date 2021-08-18 9:14
+ */
+@Data
+@ApiModel("成本数据归集数据")
+public class AfterCostGroup implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 科室编码
+     */
+    private String departmentCode;
+    /**
+     * 科室比例
+     */
+    private String departmentName;
+
+    /**
+     * 其他责任中心代码
+     */
+    private String otherResponsibilityCode;
+    /**
+     * 其他责任中心名称
+     */
+    private String otherResponsibilityName;
+    /**
+     * 金额
+     */
+    private BigDecimal amount;
+    /**
+     * 责任中心代码
+     */
+    private String responsibilityCode;
+    /**
+     * 责任中心名称
+     */
+    private String responsibilityName;
+    /**
+     *  成本项目代码
+     */
+    private String productCode;
+    /**
+     *  成本项目名称
+     */
+    private String productName;
+    /**
+     * 会计科目代码
+     */
+    private String accountCode;
+    /**
+     * 会计科目名称
+     */
+    private String accountName;
+    /**
+     * 是直接还是间接 1直接 2 间接
+     */
+    private Integer directStatus = 1;
+}

+ 2 - 2
src/main/java/com/imed/costaccount/model/AfterIncomegroup.java → src/main/java/com/imed/costaccount/model/AfterIncomeGroup.java

@@ -12,8 +12,8 @@ import java.math.BigDecimal;
  * @date 2021-08-10 19:56
  */
 @Data
-@ApiModel("归集数据标记")
-public class AfterIncomegroup implements Serializable {
+@ApiModel("收入数据归集数据标记")
+public class AfterIncomeGroup implements Serializable {
 
     private static final long serialVersionUID = 1L;
 

+ 100 - 0
src/main/java/com/imed/costaccount/model/CostCostingCollection.java

@@ -0,0 +1,100 @@
+package com.imed.costaccount.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 成本数据归集后列表
+ * 
+ * @author KCYG
+ * @email KCYG@xinxicom
+ * @date 2021-08-18 15:27:02
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("cost_costing_collection")
+public class CostCostingCollection implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 年份
+	 */
+	private Integer year;
+	/**
+	 * 月份
+	 */
+	private Integer month;
+	/**
+	 * 科室代码
+	 */
+	private String departmentCode;
+	/**
+	 * 科室名称
+	 */
+	private String departmentName;
+	/**
+	 * 责任中心代码
+	 */
+	private String responsibilityCode;
+	/**
+	 * 责任中心名称
+	 */
+	private String responsibilityName;
+	/**
+	 * 分摊层级代码
+	 */
+	private Integer leverSort;
+	/**
+	 * 分摊层级名称
+	 */
+	private String shareLevelName;
+	/**
+	 * 成本项目代码
+	 */
+	private String productCode;
+	/**
+	 * 成本项目名称
+	 */
+	private String productName;
+	/**
+	 * 是否固定成本 0.不是,1.是
+	 */
+	private Integer isBaseCost;
+	/**
+	 * 金额
+	 */
+	private BigDecimal amount;
+	/**
+	 * 导入的文件id
+	 */
+	private Long fileId;
+	/**
+	 * 创建时间
+	 */
+	private Long createTime;
+	/**
+	 * 删除时间
+	 */
+	@TableLogic(value = "0",delval = "UNIX_TIMESTAMP(NOW()) * 1000")
+	private Long deleteTime;
+	/**
+	 * 医院id
+	 */
+	private Long hospId;
+
+}

+ 3 - 1
src/main/java/com/imed/costaccount/model/CostCostingGroup.java

@@ -1,6 +1,7 @@
 package com.imed.costaccount.model;
 
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -85,7 +86,7 @@ public class CostCostingGroup implements Serializable {
 	/**
 	 * 统计数据
 	 */
-	private String afterIncomeGroup;
+	private String afterCostGroup;
 	/**
 	 * 年份
 	 */
@@ -101,6 +102,7 @@ public class CostCostingGroup implements Serializable {
 	/**
 	 * 删除时间,如果存在表示已删除13位时间戳
 	 */
+	@TableLogic(value = "0",delval = "UNIX_TIMESTAMP(NOW()) * 1000")
 	private Long deleteTime;
 
 }

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

@@ -0,0 +1,21 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel("通用开始归集的入参")
+public class StartDTO {
+
+    @ApiModelProperty(name = "year",value = "年")
+    @NotNull(message = "年不能为为空")
+    private Integer year;
+
+    @ApiModelProperty(name = "month",value = "月")
+    @NotNull(message = "月不能为空")
+    private Integer month;
+
+}

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

@@ -0,0 +1,24 @@
+package com.imed.costaccount.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("归集查询视图对象")
+public class AllocationVO {
+
+    @ApiModelProperty(name = "year",value = "年")
+    private Integer year;
+
+    @ApiModelProperty(name = "month",value = "月")
+    private Integer month;
+
+    @ApiModelProperty(name = "amount",value = "金额")
+    private BigDecimal amount;
+
+    @ApiModelProperty(name = "isAllocation",value = "是否分摊")
+    private Boolean isAllocation;
+}

+ 56 - 0
src/main/java/com/imed/costaccount/model/vo/CostingGroupStartVO.java

@@ -0,0 +1,56 @@
+package com.imed.costaccount.model.vo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("成本分摊前查询列表")
+public class CostingGroupStartVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(name = "id",value = "id")
+    private Long id;
+
+    @ApiModelProperty(name = "year",value = "年")
+    private Integer year;
+
+    @ApiModelProperty(name = "month",value = "月")
+    private Integer month;
+
+    @ApiModelProperty(name = "amount",value = "金额")
+    private BigDecimal amount;
+
+    @ApiModelProperty(name = "departCode",value = "部门code")
+    private String departCode;
+
+    @ApiModelProperty(name = "departName",value = "部门名称")
+    private String departName;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心代码")
+    private String responsibilityCode;
+
+    @ApiModelProperty(name = "responsibilityName",value = "责任中心名称")
+    private String responsibilityName;
+
+    @ApiModelProperty(name = "accountCode",value = "会计中心code")
+    private String accountCode;
+
+    @ApiModelProperty(name = "accountName",value = "会计中心名称")
+    private String accountName;
+
+    @ApiModelProperty(name = "productCode",value = "成本项目code")
+    private String productCode;
+
+    @ApiModelProperty(name = "productName",value = "成本项目名称")
+    private String productName;
+
+    @ApiModelProperty(name = "fileId",value = "文件id")
+    private Long fileId;
+
+}

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

@@ -0,0 +1,16 @@
+package com.imed.costaccount.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.imed.costaccount.model.CostCostingCollection;
+
+/**
+ * 成本数据归集后列表
+ *
+ * @author KCYG
+ * @email KCYG@xinxicom
+ * @date 2021-08-18 15:27:02
+ */
+public interface CostCostingCollectionService extends IService<CostCostingCollection> {
+
+}
+

+ 32 - 0
src/main/java/com/imed/costaccount/service/CostCostingGroupService.java

@@ -1,9 +1,11 @@
 package com.imed.costaccount.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
 import com.imed.costaccount.model.CostCostingGroup;
 import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.StartDTO;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -26,5 +28,35 @@ public interface CostCostingGroupService extends IService<CostCostingGroup> {
      * @return
      */
     Result importCostingGroup(List<List<Object>> read, User user, MultipartFile file, String dateTime, Integer fileType);
+
+    /**
+     * 分摊前查询
+     *
+     * @param current 当前页
+     * @param pageSize 每页数据大小
+     * @param responsibilityCode 责任中心代码
+     * @param accountCode 会计中心代码
+     * @param date 日期 yyyy-MM-dd
+     * @param hospId 医院id
+     * @return 分摊前查询列表
+     */
+    PageUtils queryStartAllocation(Integer current, Integer pageSize, String responsibilityCode, String accountCode, String date, Long hospId);
+
+    /**
+     * 成本分摊列表
+     * @param current 当前页
+     * @param pageSize 每页数据大小
+     * @param date 日期 这里是 yyyy-MM-dd
+     * @param hospId 医院id
+     * @return 分页对象
+     */
+    PageUtils queryAllocation(Integer current, Integer pageSize, String date, Long hospId);
+
+    /**
+     * 开始归集代码
+     * @param startDTO {@link StartDTO}
+     * @param hospId 医院id
+     */
+    void startAllocation(StartDTO startDTO, Long hospId);
 }
 

+ 5 - 4
src/main/java/com/imed/costaccount/service/impl/AccountingProductServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.common.exception.CostException;
+import com.imed.costaccount.common.util.UserContext;
 import com.imed.costaccount.mapper.AccountingMapper;
 import com.imed.costaccount.mapper.AccountingProductMapper;
 import com.imed.costaccount.mapper.ProductMapper;
@@ -97,7 +98,8 @@ public class AccountingProductServiceImpl extends ServiceImpl<AccountingProductM
                 accountVO.setIsParent(true);
             }
             List<AccountingProduct> accountingProducts = baseMapper.selectList(
-                    new LambdaQueryWrapper<AccountingProduct>().select(AccountingProduct::getId, AccountingProduct::getProductId)
+                    new LambdaQueryWrapper<AccountingProduct>()
+                            .select(AccountingProduct::getId, AccountingProduct::getProductId)
                             .eq(AccountingProduct::getAccountingId, account.getId())
             );
             if (CollUtil.isNotEmpty(accountingProducts)) {
@@ -123,17 +125,16 @@ public class AccountingProductServiceImpl extends ServiceImpl<AccountingProductM
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public void saveAccountProduct(AccountProductSaveDTO accountProductSaveDTO, User user) {
-        // TODO: 2021/8/4  校验这个 会计科目是否能绑定数据
         Long accountId = accountProductSaveDTO.getId();
         // 删除所有原来的关系
         this.remove(new LambdaQueryWrapper<AccountingProduct>().eq(AccountingProduct::getAccountingId, accountId));
-
+        Long hospId = UserContext.getHospId();
         List<Long> products = accountProductSaveDTO.getProducts();
         List<AccountingProduct> accountingProducts = products.stream().map(i -> {
             AccountingProduct accountingProduct = new AccountingProduct();
             accountingProduct.setAccountingId(accountId)
                     .setProductId(i)
-                    .setHospId(user.getHospId())
+                    .setHospId(hospId)
                     .setCreateTime(System.currentTimeMillis());
             return accountingProduct;
         }).collect(Collectors.toList());

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

@@ -114,7 +114,7 @@ public class CostAccountShareServiceImpl extends ServiceImpl<CostAccountShareMap
     /**
      * 保存成本参数对应成本对照表
      *
-     * @param costAccountShareSaveDto
+     * @param costAccountShareSaveDto {@link CostAccountShareSaveDto}
      */
     @Override
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
@@ -180,7 +180,7 @@ public class CostAccountShareServiceImpl extends ServiceImpl<CostAccountShareMap
                 throw new CostException(500,"该责任中心合并计算已存在");
             }
             if (!NumberConstant.ONE.equals(costAccountShareSaveDto.getIsShareCost())){
-                throw new CostException(500,"合并计算责任中心必须要设置包含分摊参数");
+                throw new CostException(500,"合并计算责任中心必须要设置包含分摊参数");
             }
         }
         // 检验输入的这个责任中心是否允许输入会计科目

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

@@ -0,0 +1,14 @@
+package com.imed.costaccount.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.imed.costaccount.mapper.CostCostingCollectionMapper;
+import com.imed.costaccount.model.CostCostingCollection;
+import com.imed.costaccount.service.CostCostingCollectionService;
+import org.springframework.stereotype.Service;
+
+
+@Service("costCostingCollectionService")
+public class CostCostingCollectionServiceImpl extends ServiceImpl<CostCostingCollectionMapper, CostCostingCollection> implements CostCostingCollectionService {
+
+
+}

+ 146 - 23
src/main/java/com/imed/costaccount/service/impl/CostCostingGroupServiceImpl.java

@@ -1,23 +1,23 @@
 package com.imed.costaccount.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.druid.util.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.common.exception.CostException;
-import com.imed.costaccount.common.util.BeanUtil;
-import com.imed.costaccount.common.util.DateUtils;
-import com.imed.costaccount.common.util.Result;
-import com.imed.costaccount.common.util.UserContext;
+import com.imed.costaccount.common.util.*;
 import com.imed.costaccount.constants.NumberConstant;
 import com.imed.costaccount.enums.DateStyleEnum;
 import com.imed.costaccount.mapper.CostCostingGroupMapper;
 import com.imed.costaccount.model.*;
+import com.imed.costaccount.model.dto.StartDTO;
+import com.imed.costaccount.model.vo.AllocationVO;
+import com.imed.costaccount.model.vo.CostingGroupStartVO;
 import com.imed.costaccount.model.vo.IncomeErrorMessage;
-import com.imed.costaccount.service.AccountingProductService;
-import com.imed.costaccount.service.CostCostingGroupService;
-import com.imed.costaccount.service.CostIncomeFileService;
+import com.imed.costaccount.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -39,13 +39,107 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
 
     private final CostIncomeFileService costIncomeFileService;
 
-    public CostCostingGroupServiceImpl(CostIncomeGroupServiceImpl costIncomeGroupService, AccountingProductService accountingProductService, CostIncomeFileService costIncomeFileService) {
+    private final ResponsibilityService responsibilityService;
+
+    private final CostCostingCollectionService costingCollectionService;
+
+    public CostCostingGroupServiceImpl(CostIncomeGroupServiceImpl costIncomeGroupService,
+                                       AccountingProductService accountingProductService,
+                                       CostIncomeFileService costIncomeFileService,
+                                       ResponsibilityService responsibilityService,
+                                       CostCostingCollectionService costingCollectionService) {
         this.costIncomeGroupService = costIncomeGroupService;
         this.accountingProductService = accountingProductService;
         this.costIncomeFileService = costIncomeFileService;
+        this.responsibilityService = responsibilityService;
+        this.costingCollectionService = costingCollectionService;
+    }
+
+    /**
+     * 分摊前查询
+     *
+     * @param current            当前页
+     * @param pageSize           每页数据大小
+     * @param responsibilityCode 责任中心代码
+     * @param accountCode        会计中心代码
+     * @param date               日期 yyyy-MM-dd
+     * @param hospId             医院id
+     * @return 分摊前查询列表
+     */
+    @Override
+    public PageUtils queryStartAllocation(Integer current, Integer pageSize, String responsibilityCode, String accountCode, String date, Long hospId) {
+        Integer startIndex = (current - 1) * pageSize;
+        DateTime dateTime = DateUtil.parseDate(date);
+        Integer year = DateUtil.year(dateTime);
+        Integer month = DateUtil.month(dateTime) + 1;
+        List<CostingGroupStartVO> list = baseMapper.queryStartAllocation(startIndex, pageSize, responsibilityCode, accountCode, year, month, hospId);
+        int count = baseMapper.queryStartAllocationCount(responsibilityCode, accountCode, year, month, hospId);
+        BigDecimal totalAmount = baseMapper.queryStartAllocationTotalAmount(responsibilityCode, accountCode, year, month, hospId);
+
+        return new PageUtils(list, count, pageSize, current, totalAmount);
     }
 
 
+    /**
+     * 成本分摊列表
+     *
+     * @param current  当前页
+     * @param pageSize 每页数据大小
+     * @param date     日期 这里是 yyyy-MM-dd
+     * @param hospId
+     * @return 分页对象
+     */
+    @Override
+    public PageUtils queryAllocation(Integer current, Integer pageSize, String date, Long hospId) {
+        Integer year = null;
+        Integer month = null;
+        if (StrUtil.isNotBlank(date)) {
+            DateTime dateTime = DateUtil.parseDate(date);
+            year = DateUtil.year(dateTime);
+            month = DateUtil.month(dateTime) + 1;
+        }
+        Integer startIndex = (current - 1) * pageSize;
+
+        List<AllocationVO> list = baseMapper.queryAllocation(startIndex, pageSize, year, month, hospId);
+        list.forEach(i -> {
+            List<CostCostingCollection> collections = costingCollectionService.list(new LambdaQueryWrapper<CostCostingCollection>().eq(CostCostingCollection::getYear, i.getYear())
+                    .eq(CostCostingCollection::getMonth, i.getMonth())
+                    .eq(CostCostingCollection::getHospId, hospId)
+            );
+            if (!collections.isEmpty()) {
+                i.setIsAllocation(true);
+            }
+        });
+        int count = baseMapper.queryAllocationCount(year, month, hospId);
+        return new PageUtils(list, count, pageSize, current);
+    }
+
+    /**
+     * 开始归集代码
+     *
+     * @param startDTO {@link StartDTO}
+     * @param hospId   医院id
+     */
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public void startAllocation(StartDTO startDTO, Long hospId) {
+//        // 先拿到这个月数据 如果数据量很大 优化处理
+//        List<CostCostingGroup> list = this.list(
+//                new LambdaQueryWrapper<CostCostingGroup>()
+//                        .eq(CostCostingGroup::getDateYear, startDTO.getYear())
+//                        .eq(CostCostingGroup::getDateMonth, startDTO.getMonth())
+//                        .eq(CostCostingGroup::getHospId, hospId)
+//        );
+//
+//        // 删除该年月已经归集过的数据
+//        costingCollectionService.remove(
+//                new LambdaQueryWrapper<CostCostingCollection>()
+//                        .eq(CostCostingCollection::getYear, startDTO.getYear())
+//                        .eq(CostCostingCollection::getMonth, startDTO.getMonth())
+//                        .eq(CostCostingCollection::getHospId, hospId)
+//        );
+    }
+
     /**
      * 批量导入成本数据
      *
@@ -139,6 +233,9 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
             return Result.build(200, "数据未成功导入", null);
         }
     }
+
+
+
     /**
      * 检验成本数据
      *
@@ -157,27 +254,28 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
         List<Object> departmentNames = list.get(1);
         //检验数据是否准确
         for (int i = 2; i < list.size(); i++) {
-            int row=i+5;
+            int row = i + 5;
             List<Object> data = list.get(i);
             for (int j = 2; j < departmentCodes.size(); j++) {
-                int column=j+1;
-                if (data.size() > j ) {
-                    if (Objects.isNull(data.get(j))){
+                int column = j + 1;
+                if (data.size() > j) {
+                    if (Objects.isNull(data.get(j))) {
                         data.set(j, NumberConstant.ZERO);
-                    }else if ( data.get(j).toString().contains("-") || !StringUtils.isNumber(data.get(j).toString())){
+                    } else if (data.get(j).toString().contains("-") || !StringUtils.isNumber(data.get(j).toString())) {
                         IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
                         incomeErrorMessage.setTotal(row);
-                        incomeErrorMessage.setErrMessage("第"+row+"行 第"+column+"列数据不符合规范");
+                        incomeErrorMessage.setErrMessage("第" + row + "行 第" + column + "列数据不符合规范");
                         incomeErrorMessageList.add(incomeErrorMessage);
-                    }else {
+                    } else {
                         data.set(j, Double.parseDouble(data.get(j).toString()));
                     }
-                }else {
+                } else {
                     data.add(NumberConstant.ZERO);
                 }
             }
             if (CollectionUtils.isEmpty(incomeErrorMessageList)){
-                Integer emptyStatus = 0;
+                incomeErrorMessageList=new ArrayList<>();
+                int emptyStatus = 0;
                 for (int j = 2; j < data.size()-1 ; j++) {
                     BigDecimal parseInt = new BigDecimal (data.get(j).toString());
                     if (!BigDecimal.ZERO.equals(parseInt)) {
@@ -190,16 +288,22 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
                 String productCode = data.get(0).toString();
                 String productName = data.get(1).toString();
                 Product product = productMap.get(productCode + productName);
+                AfterCostGroup afterCostGroupRequest = new AfterCostGroup();
                 if (Objects.nonNull(product)) {
                     Long id = product.getId();
                     Long accountTingId = accountProMap.get(id);
                     if (Objects.nonNull(accountTingId)) {
                         Accounting accounting = accountingMap.get(accountTingId);
                         if (Objects.nonNull(accounting)) {
+
                             costCostingGroupRequest.setProductCode(productCode);
                             costCostingGroupRequest.setProductName(productName);
                             costCostingGroupRequest.setAccountCode(accounting.getAccountingCode());
                             costCostingGroupRequest.setAccountName(accounting.getAccountingName());
+                            afterCostGroupRequest.setProductCode(productCode);
+                            afterCostGroupRequest.setProductName(productName);
+                            afterCostGroupRequest.setAccountCode(accounting.getAccountingCode());
+                            afterCostGroupRequest.setAccountName(accounting.getAccountingName());
                         } else {
                             IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
                             incomeErrorMessage.setTotal(1);
@@ -221,22 +325,35 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
                 // 0表示全为0 1表示不全为0
 
                 BigDecimal combined = new BigDecimal (data.get(data.size() - 1).toString());
-                if (NumberConstant.ZERO.equals(emptyStatus) &&BigDecimal.ZERO.equals(combined)) {
-                    // 全为0
-                } else if (!BigDecimal.ZERO.equals(combined) && NumberConstant.ZERO.equals(emptyStatus)) {
+                if (!BigDecimal.ZERO.equals(combined) && NumberConstant.ZERO.equals(emptyStatus)) {
                     // 这条数据是保存到其他责任中心的
                     CostCostingGroup costCostingGroup = costCostingGroupRequest;
+                    AfterCostGroup afterCostGroup = BeanUtil.convertObj(afterCostGroupRequest,AfterCostGroup.class);
                     // TODO 设置其他责任中心
-                    costCostingGroup.setResponsibilityCode("其他责任中心的Code");
-                    costCostingGroup.setResponsibilityName("其他责任中心的Name");
+                    Responsibility responsibilityServiceOne = responsibilityService.getOne(new QueryWrapper<Responsibility>().lambda().eq(Responsibility::getHospId, UserContext.getHospId()).eq(Responsibility::getIsDefault, NumberConstant.ONE));
+                    if (Objects.nonNull(responsibilityServiceOne)){
+                        costCostingGroup.setResponsibilityCode(responsibilityServiceOne.getResponsibilityCode());
+                        costCostingGroup.setResponsibilityName(responsibilityServiceOne.getResponsibilityName());
+                        // 设置统计数据
+                        afterCostGroup.setOtherResponsibilityCode(responsibilityServiceOne.getResponsibilityCode());
+                        afterCostGroup.setOtherResponsibilityName(responsibilityServiceOne.getResponsibilityName());
+                    }
+                    costCostingGroup.setProductCode(costCostingGroupRequest.getProductCode());
+                    costCostingGroup.setProductName(costCostingGroupRequest.getProductName());
+                    costCostingGroup.setAccountCode(costCostingGroupRequest.getAccountCode());
+                    costCostingGroup.setAccountName(costCostingGroupRequest.getAccountName());
                     costCostingGroup.setAmount(combined);
                     costCostingGroup.setHospId(UserContext.getHospId());
                     costCostingGroup.setCreateTime(System.currentTimeMillis());
                     costCostingGroup.setDateYear(year);
                     costCostingGroup.setDateMonth(month);
+                    afterCostGroup.setAmount(combined);
+                    String s = JsonUtil.toJSONString(afterCostGroup);
+                    costCostingGroup.setAfterCostGroup(s);
                     costCostingGroupArrayList.add(costCostingGroup);
                 } else {
                     for (int j = 2; j < data.size() - 1; j++) {
+                        AfterCostGroup afterCostGroup = BeanUtil.convertObj(afterCostGroupRequest,AfterCostGroup.class);
                         CostCostingGroup costCostingGroup = BeanUtil.convertObj(costCostingGroupRequest,CostCostingGroup.class);
                         // 检验科室信息是否准确
                         String departmentCode = departmentCodes.get(j).toString();
@@ -253,7 +370,10 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
                                     costCostingGroup.setDepartmentName(departmentName);
                                     costCostingGroup.setResponsibilityCode(responsibility.getResponsibilityCode());
                                     costCostingGroup.setResponsibilityName(responsibility.getResponsibilityName());
-
+                                    afterCostGroup.setResponsibilityCode(responsibility.getResponsibilityCode());
+                                    afterCostGroup.setResponsibilityName(responsibility.getResponsibilityName());
+                                    afterCostGroup.setDepartmentCode(departmentCode);
+                                    afterCostGroup.setDepartmentName(departmentName);
                                 } else {
                                     IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
                                     incomeErrorMessage.setTotal(j);
@@ -277,6 +397,9 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
                         costCostingGroup.setCreateTime(System.currentTimeMillis());
                         costCostingGroup.setDateYear(year);
                         costCostingGroup.setDateMonth(month);
+                        afterCostGroup.setAmount(new BigDecimal((Objects.isNull(data.get(j)) || "0".equals(data.get(j).toString())) ? "0.00" : data.get(j).toString()));
+                        String s = JsonUtil.toJSONString(afterCostGroup);
+                        costCostingGroup.setAfterCostGroup(s);
                         costCostingGroupArrayList.add(costCostingGroup);
                     }
                 }

+ 3 - 4
src/main/java/com/imed/costaccount/service/impl/CostIncomeGroupServiceImpl.java

@@ -103,7 +103,7 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
         if (CollectionUtils.isEmpty(costIncomeGroupBeforeVOList)) {
             PageUtils pageUtils = new PageUtils(pages);
             pageUtils.setList(null);
-            pageUtils.setTotalAmount(new BigDecimal(0.0000));
+            pageUtils.setTotalAmount(new BigDecimal("0.0000"));
             return pageUtils;
         }
         // 进行金额合并
@@ -122,7 +122,6 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
                 sum = bigDecimals.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
                 i.setAmount(sum);
             }
-            //TODO 统计总金额
             totalAmount.updateAndGet(v -> v.add(i.getAmount()));
         });
         PageUtils pageUtils = new PageUtils(pages);
@@ -316,7 +315,7 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
         for (int i = 0; i < list.size(); i++) {
             int row = i + 5;
             CostIncomeGroup costIncomeGroup = new CostIncomeGroup();
-            AfterIncomegroup afterIncomegroup = new AfterIncomegroup();
+            AfterIncomeGroup afterIncomegroup = new AfterIncomeGroup();
             // 用来检验数据合理性的循环
 
             List<Object> data = list.get(i);
@@ -474,7 +473,7 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
      * @param afterIncomegroup
      * @param beforeMoney
      */
-    private void getAfterData(Long hospId, CostIncomeGroup costIncomeGroup, AfterIncomegroup afterIncomegroup, BigDecimal beforeMoney) {
+    private void getAfterData(Long hospId, CostIncomeGroup costIncomeGroup, AfterIncomeGroup afterIncomegroup, BigDecimal beforeMoney) {
         Integer openDepartmentStatus = afterIncomegroup.getOpenDepartmentStatus();
         Integer startDepartmentStatus = afterIncomegroup.getStartDepartmentStatus();
         if (Objects.nonNull(openDepartmentStatus) && Objects.nonNull(startDepartmentStatus)) {

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

@@ -5,7 +5,6 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.common.exception.CostException;
 import com.imed.costaccount.common.util.BeanUtil;
@@ -26,7 +25,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 import static com.imed.costaccount.common.constants.Constant.LIMIT;
 
@@ -138,7 +136,7 @@ public class IncomeCollectionServiceImpl
                     incomeCollection.setFileId(costIncomeGroup.getFileId());
                     incomeCollection.setCreateTime(System.currentTimeMillis());
                     String afterIncomeGroupStr = costIncomeGroup.getAfterIncomeGroup();
-                    AfterIncomegroup afterIncomegroup = JSONUtil.toBean(afterIncomeGroupStr, AfterIncomegroup.class);
+                    AfterIncomeGroup afterIncomegroup = JSONUtil.toBean(afterIncomeGroupStr, AfterIncomeGroup.class);
                     if (Objects.isNull(afterIncomegroup)) {
                         throw new CostException("未能正确归集对应的....");
                     }

+ 6 - 8
src/main/java/com/imed/costaccount/service/impl/ShareParamValueServiceImpl.java

@@ -2,15 +2,12 @@ package com.imed.costaccount.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.druid.util.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.common.exception.CostException;
 import com.imed.costaccount.common.util.*;
 import com.imed.costaccount.constants.NumberConstant;
@@ -163,7 +160,7 @@ public class ShareParamValueServiceImpl extends ServiceImpl<ShareParamValueMappe
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
     public void copyData(CopyShareParamValueDTO copyShareParamValueDTO, Long hospId) {
-        // 复制数据 多个医院同时使用的情况下启用线程池处理
+        // TODO 复制数据 多个医院同时使用的情况下启用线程池处理
         String fromDate = copyShareParamValueDTO.getFromDate();
         String toDate = copyShareParamValueDTO.getToDate();
         Integer dataSourceType = copyShareParamValueDTO.getDataSourceType();
@@ -330,14 +327,14 @@ public class ShareParamValueServiceImpl extends ServiceImpl<ShareParamValueMappe
             List<Object> data = list.get(i);
             // 检验成本分摊参数是否正确
             ShareParamValue shareParamValueRequest = new ShareParamValue();
-            String shareParamCode = data.get(0).toString();
-            String shareParamName = data.get(1).toString();
+            String shareParamCode = data.get(0).toString().trim();
+            String shareParamName = data.get(1).toString().trim();
             CostShareParam costShareParam = shareParamMap.get(shareParamCode + shareParamName);
             if (Objects.nonNull(costShareParam)) {
                 shareParamValueRequest.setShareParamCode(shareParamCode);
             } else {
                 IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
-                incomeErrorMessage.setTotal(1);
+                incomeErrorMessage.setTotal(i);
                 incomeErrorMessage.setErrMessage("成本分摊代码:" + shareParamCode + " 名称" + shareParamName + "不存在");
                 incomeErrorMessageList.add(incomeErrorMessage);
             }
@@ -359,8 +356,9 @@ public class ShareParamValueServiceImpl extends ServiceImpl<ShareParamValueMappe
                 }
             }
             if (CollectionUtils.isEmpty(incomeErrorMessageList)) {
+                incomeErrorMessageList=new ArrayList<>();
                 // 检验数据是否全为0
-                Integer zeroStatus = 0;
+                int zeroStatus = 0;
                 for (int j = 2; j < data.size(); j++) {
                     if (!NumberConstant.ZERO.equals(data.get(j))) {
                         zeroStatus = 1;

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

@@ -0,0 +1,74 @@
+package com.imed.costaccount.web;
+
+import com.imed.costaccount.common.util.Result;
+import com.imed.costaccount.model.CostCostingCollection;
+import com.imed.costaccount.model.User;
+import com.imed.costaccount.service.CostCostingCollectionService;
+import org.apache.shiro.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+
+
+/**
+ * 成本数据归集后列表
+ *
+ * @author KCYG
+ * @date 2021-08-18 15:27:02
+ */
+@RestController
+@RequestMapping("/costAccount/costcostingcollection")
+public class CostCostingCollectionController {
+    @Autowired
+    private CostCostingCollectionService costCostingCollectionService;
+
+    /**
+     * 分页查询列表
+     * 查询的是
+     */
+    @RequestMapping("/list")
+    public Result list(@RequestParam(value = "current", defaultValue = "1") Integer current,
+                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize){
+        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        return Result.ok();
+    }
+
+
+    /**
+     * 信息
+     */
+    @RequestMapping("/info/{id}")
+    public Result info(@PathVariable("id") Long id){
+		CostCostingCollection costCostingCollection = costCostingCollectionService.getById(id);
+        return Result.ok(costCostingCollection);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    public Result save(@RequestBody CostCostingCollection costCostingCollection){
+		costCostingCollectionService.save(costCostingCollection);
+        return Result.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    public Result update(@RequestBody CostCostingCollection costCostingCollection){
+		costCostingCollectionService.updateById(costCostingCollection);
+        return Result.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    public Result delete(@RequestBody Long[] ids){
+		costCostingCollectionService.removeByIds(Arrays.asList(ids));
+        return Result.ok();
+    }
+
+}

+ 49 - 48
src/main/java/com/imed/costaccount/web/CostCostingGroupController.java

@@ -1,14 +1,17 @@
 package com.imed.costaccount.web;
 
+import com.imed.costaccount.common.exception.CostException;
+import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
-import com.imed.costaccount.model.CostCostingGroup;
-import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.StartDTO;
 import com.imed.costaccount.service.CostCostingGroupService;
-import org.apache.shiro.SecurityUtils;
-import org.springframework.beans.factory.annotation.Autowired;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Arrays;
+import javax.validation.Valid;
 
 
 /**
@@ -17,58 +20,56 @@ import java.util.Arrays;
  * @author KCYG
  * @date 2021-08-12 11:00:23
  */
+@Api(tags = "成本分摊")
 @RestController
 @RequestMapping("/costAccount/costcostinggroup")
-public class CostCostingGroupController {
-    @Autowired
-    private CostCostingGroupService costCostingGroupService;
+public class CostCostingGroupController extends AbstractController {
+    private final CostCostingGroupService costCostingGroupService;
 
-    /**
-     * 分页查询列表
-     * 查询的是
-     */
-    @RequestMapping("/list")
-    public Result list(@RequestParam(value = "current", defaultValue = "1") Integer current,
-                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize){
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
-        return Result.ok();
+    public CostCostingGroupController(CostCostingGroupService costCostingGroupService) {
+        this.costCostingGroupService = costCostingGroupService;
     }
 
-
-    /**
-     * 信息
-     */
-    @RequestMapping("/info/{id}")
-    public Result info(@PathVariable("id") Long id){
-		CostCostingGroup costCostingGroup = costCostingGroupService.getById(id);
-        return Result.ok(costCostingGroup);
+    @ApiOperation("成本分摊前数据列表")
+    @GetMapping("/queryStartAllocation")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "current", value = "当前页", required = true),
+            @ApiImplicitParam(name = "pageSize", value = "当前页大小", required = true),
+            @ApiImplicitParam(name = "responsibilityCode", value = "责任中心代码", required = false),
+            @ApiImplicitParam(name = "accountCode", value = "会计中心代码"),
+            @ApiImplicitParam(name = "date", value = "年月yyyy-MM-dd")}
+    )
+    public Result queryStartAllocation(@RequestParam(value = "current", defaultValue = "1") Integer current,
+                                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+                                       @RequestParam(value = "responsibilityCode", required = false) String responsibilityCode,
+                                       @RequestParam(value = "accountCode", required = false) String accountCode,
+                                       @RequestParam(value = "date") String date) {
+        // 简单校验时间格式 这里要求的是yyyy-MM-dd
+        if (date.length() != 10) {
+            throw new CostException("时间格式不正确,这里要求yyyy-MM-dd 格式");
+        }
+        PageUtils pageUtils = costCostingGroupService.queryStartAllocation(current, pageSize, responsibilityCode, accountCode, date, getHospId());
+        return Result.ok(pageUtils);
     }
 
-    /**
-     * 保存
-     */
-    @RequestMapping("/save")
-    public Result save(@RequestBody CostCostingGroup costCostingGroup){
-		costCostingGroupService.save(costCostingGroup);
-        return Result.ok();
+    @ApiOperation("成本分摊列表")
+    @GetMapping("/allocationList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "current", value = "当前页", required = true),
+            @ApiImplicitParam(name = "pageSize", value = "当前页大小", required = true),
+            @ApiImplicitParam(name = "date", value = "年月yyyy-MM-dd", required = true)
+    })
+    public Result allocationList(@RequestParam(value = "current", defaultValue = "1", required = false) Integer current,
+                                 @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+                                 @RequestParam(value = "date", required = false) String date) {
+        PageUtils pageUtils = costCostingGroupService.queryAllocation(current, pageSize, date, getHospId());
+        return Result.ok(pageUtils);
     }
 
-    /**
-     * 修改
-     */
-    @RequestMapping("/update")
-    public Result update(@RequestBody CostCostingGroup costCostingGroup){
-		costCostingGroupService.updateById(costCostingGroup);
+    @ApiOperation("开始归集")
+    @PostMapping("/startAllocation")
+    public Result startAllocation(@RequestBody @Valid StartDTO startDTO) {
+        costCostingGroupService.startAllocation(startDTO, getHospId());
         return Result.ok();
     }
-
-    /**
-     * 删除
-     */
-    @RequestMapping("/delete")
-    public Result delete(@RequestBody Long[] ids){
-		costCostingGroupService.removeByIds(Arrays.asList(ids));
-        return Result.ok();
-    }
-
 }

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

@@ -29,8 +29,11 @@ import java.util.List;
 @RequestMapping("/costAccount/costincomegroupset")
 @Api(tags = "收入归集设置操作")
 public class CostIncomeGroupSetController{
-    @Autowired
-    private CostIncomeGroupSetService costIncomeGroupSetService;
+    private final CostIncomeGroupSetService costIncomeGroupSetService;
+
+    public CostIncomeGroupSetController(CostIncomeGroupSetService costIncomeGroupSetService) {
+        this.costIncomeGroupSetService = costIncomeGroupSetService;
+    }
 
     /**
      * 分页查询列表

+ 28 - 0
src/main/resources/mapper/CostCostingCollectionMapper.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.imed.costaccount.mapper.CostCostingCollectionMapper">
+
+	<!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.imed.costaccount.model.CostCostingCollection" id="costCostingCollectionMap">
+        <result property="id" column="id"/>
+        <result property="year" column="year"/>
+        <result property="month" column="month"/>
+        <result property="departmentCode" column="department_code"/>
+        <result property="departmentName" column="department_name"/>
+        <result property="responsibilityCode" column="responsibility_code"/>
+        <result property="responsibilityName" column="responsibility_name"/>
+        <result property="leverSort" column="lever_sort"/>
+        <result property="shareLevelName" column="share_level_name"/>
+        <result property="productCode" column="product_code"/>
+        <result property="productName" column="product_name"/>
+        <result property="isBaseCost" column="is_base_cost"/>
+        <result property="amount" column="amount"/>
+        <result property="fileId" column="file_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="deleteTime" column="delete_time"/>
+        <result property="hospId" column="hosp_id"/>
+    </resultMap>
+
+
+</mapper>

+ 111 - 2
src/main/resources/mapper/CostCostingGroupMapper.xml

@@ -3,7 +3,7 @@
 
 <mapper namespace="com.imed.costaccount.mapper.CostCostingGroupMapper">
 
-	<!-- 可根据自己的需求,是否要使用 -->
+    <!-- 可根据自己的需求,是否要使用 -->
     <resultMap type="com.imed.costaccount.model.CostCostingGroup" id="costCostingGroupMap">
         <result property="id" column="id"/>
         <result property="departmentCode" column="department_code"/>
@@ -19,12 +19,121 @@
         <result property="amount" column="amount"/>
         <result property="hospId" column="hosp_id"/>
         <result property="fileId" column="file_id"/>
-        <result property="afterIncomeGroup" column="after_income_group"/>
+        <result property="afterCostGroup" column="after_cost_group"/>
         <result property="dateYear" column="date_year"/>
         <result property="dateMonth" column="date_month"/>
         <result property="createTime" column="create_time"/>
         <result property="deleteTime" column="delete_time"/>
     </resultMap>
+    <select id="queryStartAllocation" resultType="com.imed.costaccount.model.vo.CostingGroupStartVO">
+        select
+        ccg.id as id,
+        ccg.date_year as year,
+        ccg.date_month as month,
+        ccg.amount as amount,
+        ccg.department_code as departCode,
+        sd.department_name as departName,
+        ccg.responsibility_code as responsibilityCode,
+        cr.responsibility_name as responsibilityName,
+        ccg.account_code as accountCode,
+        ccg.account_name as accountName,
+        ccg.product_code as productCode,
+        cp.product_name as productName,
+        ccg.file_id as fileId
+        from cost_costing_group ccg
+        left join sys_department sd
+        on ccg.hosp_id = sd.hosp_id and ccg.department_code = sd.department_code
+        left join cost_responsibility cr
+        on ccg.responsibility_code = cr.responsibility_code and ccg.hosp_id = cr.hosp_id
+        left join cost_accounting ca on ccg.account_code = ca.accounting_code and ccg.hosp_id = ca.hosp_id
+        left join cost_product cp
+        on cp.delete_time = 0 and ccg.product_code = cp.product_code and ccg.hosp_id = cp.hosp_id
+        where ccg.delete_time = 0
+        and ccg.date_year = #{year}
+        and ccg.date_month = #{month}
+        and ccg.hosp_id = #{hospId}
+        <if test="responsibilityCode != null and responsibilityCode != ''">
+            and responsibility_code = #{responsibilityCode}
+        </if>
+        <if test="accountCode != null and accountCode != ''">
+            and account_code #{accountCode}
+        </if>
+        and sd.delete_time = 0
+        and cr.delete_time = 0
+        and ca.delete_time = 0
+        limit #{startIndex},#{pageSize}
+    </select>
+    <select id="queryStartAllocationCount" resultType="java.lang.Integer">
+        select
+        count(*)
+        from cost_costing_group ccg
+        left join sys_department sd
+        on ccg.hosp_id = sd.hosp_id and ccg.department_code = sd.department_code
+        left join cost_responsibility cr
+        on ccg.responsibility_code = cr.responsibility_code and ccg.hosp_id = cr.hosp_id
+        left join cost_accounting ca on ccg.account_code = ca.accounting_code and ccg.hosp_id = ca.hosp_id
+        left join cost_product cp
+        on cp.delete_time = 0 and ccg.product_code = cp.product_code and ccg.hosp_id = cp.hosp_id
+        where ccg.delete_time = 0
+        and ccg.date_year = #{year}
+        and ccg.date_month = #{month}
+        and ccg.hosp_id = #{hospId}
+        <if test="responsibilityCode != null and responsibilityCode != ''">
+            and responsibility_code = #{responsibilityCode}
+        </if>
+        <if test="accountCode != null and accountCode != ''">
+            and account_code #{accountCode}
+        </if>
+        and sd.delete_time = 0
+        and cr.delete_time = 0
+        and ca.delete_time = 0
+    </select>
+    <select id="queryStartAllocationTotalAmount" resultType="java.math.BigDecimal">
+        select
+        sum(ccg.amount)
+        from cost_costing_group ccg
+        left join sys_department sd
+        on ccg.hosp_id = sd.hosp_id and ccg.department_code = sd.department_code
+        left join cost_responsibility cr
+        on ccg.responsibility_code = cr.responsibility_code and ccg.hosp_id = cr.hosp_id
+        left join cost_accounting ca on ccg.account_code = ca.accounting_code and ccg.hosp_id = ca.hosp_id
+        left join cost_product cp
+        on cp.delete_time = 0 and ccg.product_code = cp.product_code and ccg.hosp_id = cp.hosp_id
+        where ccg.delete_time = 0
+        and ccg.date_year = #{year}
+        and ccg.date_month = #{month}
+        and ccg.hosp_id = #{hospId}
+        <if test="responsibilityCode != null and responsibilityCode != ''">
+            and responsibility_code = #{responsibilityCode}
+        </if>
+        <if test="accountCode != null and accountCode != ''">
+            and account_code #{accountCode}
+        </if>
+        and sd.delete_time = 0
+        and cr.delete_time = 0
+        and ca.delete_time = 0
+    </select>
+    <select id="queryAllocation" resultType="com.imed.costaccount.model.vo.AllocationVO">
+        select date_year as year,date_month as month,IFNULL(sum(amount),0) as amount,false as isAllocation
+        from cost_costing_group
+        where delete_time = 0
+        <if test="year != null">
+            and date_year = #{year}
+            and date_month = #{month}
+        </if>
+        and hosp_id = #{hospId} group by date_year,date_month
+        limit #{startIndex},#{pageSize}
+    </select>
+    <select id="queryAllocationCount" resultType="java.lang.Integer">
+        select count(*) from (select count(*)
+        from cost_costing_group
+        where delete_time = 0
+        <if test="year != null">
+            and date_year = #{year}
+            and date_month = #{month}
+        </if>
+        and hosp_id = #{hospId} group by date_year,date_month) t
+    </select>
 
 
 </mapper>