|
@@ -9,6 +9,8 @@ import com.imed.costaccount.common.exception.CostException;
|
|
|
import com.imed.costaccount.common.util.PageUtils;
|
|
|
import com.imed.costaccount.mapper.CostIncomeGroupMapper;
|
|
|
import com.imed.costaccount.model.CostIncomeGroup;
|
|
|
+import com.imed.costaccount.model.dto.CollectDTO;
|
|
|
+import com.imed.costaccount.model.vo.CollectedVO;
|
|
|
import com.imed.costaccount.model.vo.CollectionVO;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -20,6 +22,8 @@ import com.imed.costaccount.service.IncomeCollectionService;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.BigInteger;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -60,7 +64,7 @@ public class IncomeCollectionServiceImpl
|
|
|
IncomeCollection one = this.getOne(
|
|
|
new LambdaQueryWrapper<IncomeCollection>().select(IncomeCollection::getId)
|
|
|
.eq(IncomeCollection::getYear, i.getYear())
|
|
|
- .eq(IncomeCollection::getMonth,i.getMonth())
|
|
|
+ .eq(IncomeCollection::getMonth, i.getMonth())
|
|
|
.last(LIMIT)
|
|
|
);
|
|
|
if (Objects.isNull(one)) {
|
|
@@ -80,7 +84,7 @@ public class IncomeCollectionServiceImpl
|
|
|
* @param hospId 医院id
|
|
|
*/
|
|
|
@Override
|
|
|
- @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
public void collect(Integer year, Integer month, Long hospId) {
|
|
|
// 可能几十万次数据 需要分段异步多线程处理,分布式锁处理,
|
|
|
List<CostIncomeGroup> costIncomeGroups = incomeGroupMapper.selectList(
|
|
@@ -90,7 +94,7 @@ public class IncomeCollectionServiceImpl
|
|
|
.eq(CostIncomeGroup::getHospId, hospId)
|
|
|
);
|
|
|
if (costIncomeGroups.isEmpty()) {
|
|
|
- String format = StrUtil.format("{}年{}月数据不存在,请先导入数据",year,month);
|
|
|
+ String format = StrUtil.format("{}年{}月数据不存在,请先导入数据", year, month);
|
|
|
throw new CostException(format);
|
|
|
}
|
|
|
// 根据会计科目和成本项目归纳所有数据
|
|
@@ -112,6 +116,7 @@ public class IncomeCollectionServiceImpl
|
|
|
// todo 来源id暂时不确定
|
|
|
incomeCollection.setFileId(costIncomeGroup.getFileId());
|
|
|
incomeCollection.setCreateTime(System.currentTimeMillis());
|
|
|
+ // TODO: 2021/8/10 待确认是否收入中心
|
|
|
// 开单中心的数据
|
|
|
incomeCollection.setDepartmentCode(costIncomeGroup.getOpenDepartmentCode());
|
|
|
incomeCollection.setResponsibilityCode(costIncomeGroup.getOpenResponsibilityCode());
|
|
@@ -136,7 +141,7 @@ public class IncomeCollectionServiceImpl
|
|
|
* @param hospId 医院id
|
|
|
*/
|
|
|
@Override
|
|
|
- @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
public void cancelCollect(Integer year, Integer month, Long hospId) {
|
|
|
LambdaQueryWrapper<IncomeCollection> wrapper = new LambdaQueryWrapper<IncomeCollection>()
|
|
|
.eq(IncomeCollection::getYear, year)
|
|
@@ -144,4 +149,28 @@ public class IncomeCollectionServiceImpl
|
|
|
.eq(IncomeCollection::getHospId, hospId);
|
|
|
this.remove(wrapper);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 归集后数据分页列表
|
|
|
+ *
|
|
|
+ * @param collectDTO {@link CollectDTO} 查询相关参数
|
|
|
+ * @return {@link PageUtils}
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public PageUtils collectList(CollectDTO collectDTO) {
|
|
|
+ // 分页数据初始化
|
|
|
+ Integer current = collectDTO.getCurrent();
|
|
|
+ current = (Objects.isNull(current) || current == 0) ? 0 : current - 1;
|
|
|
+ Integer pageSize = collectDTO.getPageSize();
|
|
|
+ pageSize = Objects.isNull(pageSize) ? 10 : pageSize;
|
|
|
+ collectDTO.setCurrent(current * pageSize);
|
|
|
+ collectDTO.setPageSize(pageSize);
|
|
|
+
|
|
|
+ // 查询需要的数据 DB
|
|
|
+ List<CollectedVO> list = baseMapper.getCollectList(collectDTO);
|
|
|
+ int count = baseMapper.getCollectListCount(collectDTO);
|
|
|
+ BigDecimal totalAmount = baseMapper.getTotalAmount(collectDTO);
|
|
|
+
|
|
|
+ return new PageUtils(list, count, pageSize, current, totalAmount);
|
|
|
+ }
|
|
|
}
|