|
@@ -1,8 +1,10 @@
|
|
|
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;
|
|
@@ -11,11 +13,11 @@ 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.ResponsibilityService;
|
|
|
+import com.imed.costaccount.service.*;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
@@ -39,14 +41,105 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
|
|
|
|
|
|
private final ResponsibilityService responsibilityService;
|
|
|
|
|
|
- public CostCostingGroupServiceImpl(CostIncomeGroupServiceImpl costIncomeGroupService, AccountingProductService accountingProductService, CostIncomeFileService costIncomeFileService, 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)
|
|
|
+// );
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 批量导入成本数据
|
|
|
*
|
|
@@ -140,6 +233,9 @@ public class CostCostingGroupServiceImpl extends ServiceImpl<CostCostingGroupMap
|
|
|
return Result.build(200, "数据未成功导入", null);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 检验成本数据
|
|
|
*
|
|
@@ -158,22 +254,22 @@ 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);
|
|
|
}
|
|
|
}
|