浏览代码

08 13 fix return

hr 4 年之前
父节点
当前提交
26dbd5bff0

+ 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;
+}

+ 20 - 10
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());

+ 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>