Преглед изворни кода

Merge branch 'master' of huangrui/CostAccount into dev

lijiaxi пре 4 година
родитељ
комит
566d653207

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

@@ -3,6 +3,7 @@ package com.imed.costaccount.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.imed.costaccount.model.CostIncomeGroup;
 import com.imed.costaccount.model.vo.CollectionVO;
+import com.imed.costaccount.model.vo.CostIncomeGroupAllAmountBO;
 import com.imed.costaccount.model.vo.CostIncomeGroupAllAmountVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -45,4 +46,7 @@ public interface CostIncomeGroupMapper extends BaseMapper<CostIncomeGroup> {
      * @return 获取收入归集分页列表的总数
      */
     int getCollectionCount(@Param("date") String date, @Param("hospId") Long hospId);
+
+    List<CostIncomeGroupAllAmountBO> selectListAndMoney(@Param("year") Integer year, @Param("month") Integer month, @Param("hospId") Long hospId);
+
 }

+ 9 - 0
src/main/java/com/imed/costaccount/model/vo/CostIncomeGroupAllAmountBO.java

@@ -0,0 +1,9 @@
+package com.imed.costaccount.model.vo;
+
+import com.imed.costaccount.model.CostIncomeGroup;
+import lombok.Data;
+
+@Data
+public class CostIncomeGroupAllAmountBO extends CostIncomeGroup {
+    private String allMoney;
+}

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

@@ -117,10 +117,10 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
             String allMoney = i.getAllMoney();
             if (StrUtil.isNotBlank(allMoney) && allMoney.contains(StrUtil.COMMA)) {
                 // 存在,在进行求和
-                double sum;
-                List<Double> list = Arrays.stream(allMoney.split(StrUtil.COMMA)).map(Double::valueOf).collect(Collectors.toList());
-                sum = list.stream().mapToDouble(m -> m).sum();
-                i.setAmount(BigDecimal.valueOf(sum));
+                BigDecimal sum;
+                List<BigDecimal> bigDecimals = Arrays.stream(allMoney.split(StrUtil.COMMA)).map(BigDecimal::new).collect(Collectors.toList());
+                sum = bigDecimals.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
+                i.setAmount(sum);
             }
             //TODO 统计总金额
             totalAmount.updateAndGet(v -> v.add(i.getAmount()));

+ 49 - 29
src/main/java/com/imed/costaccount/service/impl/IncomeCollectionServiceImpl.java

@@ -108,13 +108,14 @@ public class IncomeCollectionServiceImpl
         boolean lock = redisLock.lock(key, timestamp);
         try {
             if (lock) {
-                List<CostIncomeGroup> costIncomeGroups = incomeGroupMapper.selectList(
-                        new LambdaQueryWrapper<CostIncomeGroup>()
-                                .eq(CostIncomeGroup::getDateYear, year)
-                                .eq(CostIncomeGroup::getDateMonth, month)
-                                .eq(CostIncomeGroup::getHospId, hospId)
-                                .groupBy(CostIncomeGroup::getOpenDepartmentCode, CostIncomeGroup::getStartDepartmentCode, CostIncomeGroup::getProductCode)
-                );
+                List<CostIncomeGroupAllAmountBO> costIncomeGroups = incomeGroupMapper.selectListAndMoney(year,month,hospId);
+//                List<CostIncomeGroup> costIncomeGroups = incomeGroupMapper.selectList(
+//                        new LambdaQueryWrapper<CostIncomeGroup>()
+//                                .eq(CostIncomeGroup::getDateYear, year)
+//                                .eq(CostIncomeGroup::getDateMonth, month)
+//                                .eq(CostIncomeGroup::getHospId, hospId)
+//                                .groupBy(CostIncomeGroup::getOpenDepartmentCode, CostIncomeGroup::getStartDepartmentCode, CostIncomeGroup::getProductCode)
+//                );
 
                 if (costIncomeGroups.isEmpty()) {
                     String format = StrUtil.format("{}年{}月数据不存在,请先导入数据", year, month);
@@ -126,13 +127,22 @@ public class IncomeCollectionServiceImpl
                         new LambdaQueryWrapper<IncomeCollection>().eq(IncomeCollection::getYear, year).eq(IncomeCollection::getMonth, month).eq(IncomeCollection::getHospId, hospId)
                 );
                 // 根据会计科目和成本项目归纳所有数据
-                Map<String, List<CostIncomeGroup>> collectMap = costIncomeGroups.stream()
+                Map<String, List<CostIncomeGroupAllAmountBO>> collectMap = costIncomeGroups.stream()
                         .collect(Collectors.groupingBy(i -> i.getOpenDepartmentCode() + "cost" + i.getStartDepartmentCode() + "cost" + i.getProductCode()));
 
                 // 遍历map 组装成List保存
                 List<IncomeCollection> list = new LinkedList<>();
-                Set<Map.Entry<String, List<CostIncomeGroup>>> entries = collectMap.entrySet();
+                Set<Map.Entry<String, List<CostIncomeGroupAllAmountBO>>> entries = collectMap.entrySet();
                 entries.stream().map(Map.Entry::getValue).flatMap(Collection::stream).forEach(costIncomeGroup -> {
+                    String allMoney = costIncomeGroup.getAllMoney();
+                    if (StrUtil.isNotBlank(allMoney) && allMoney.contains(StrUtil.COMMA)) {
+                        // 存在,在进行求和
+                        BigDecimal sum;
+                        List<BigDecimal> bigDecimals = Arrays.stream(allMoney.split(StrUtil.COMMA)).map(BigDecimal::new).collect(Collectors.toList());
+                        sum = bigDecimals.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
+                        costIncomeGroup.setAmount(sum);
+                    }
+                    //TODO 统计总金额
                     IncomeCollection incomeCollection = new IncomeCollection();
                     incomeCollection.setYear(year);
                     incomeCollection.setMonth(month);
@@ -140,7 +150,7 @@ public class IncomeCollectionServiceImpl
                     incomeCollection.setAccountingName(costIncomeGroup.getAccountName());
                     incomeCollection.setProductName(costIncomeGroup.getProductName());
                     incomeCollection.setProductCode(costIncomeGroup.getProductCode());
-                    incomeCollection.setAmount(costIncomeGroup.getAmount());
+//                    incomeCollection.setAmount(costIncomeGroup.getAmount());
                     incomeCollection.setHospId(hospId);
                     // todo 来源id暂时不确定
                     incomeCollection.setFileId(costIncomeGroup.getFileId());
@@ -160,25 +170,35 @@ public class IncomeCollectionServiceImpl
 //                        responsibilityCode = "-";
 //                        afterIncomegroup.setResponsibilityName("-");
 //                    }
-                    // 开单中心的数据
-                    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);
+                    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);
+                    }
                 });
 
 

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

@@ -82,6 +82,16 @@
         group by date_month, date_year
         ) t
     </select>
+    <select id="selectListAndMoney" resultType="com.imed.costaccount.model.vo.CostIncomeGroupAllAmountBO">
+        select *   , group_concat(amount) as allMoney
+        from cost_income_group
+        where date_year = #{year}
+          and date_month = #{month}
+          and hosp_id = #{hospId}
+        and delete_time = 0
+        group by open_department_code, start_department_code, product_code
+
+    </select>
 
 
 </mapper>