CostIncomeFileServiceImpl.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package com.imed.costaccount.service.impl;
  2. import cn.hutool.core.date.DateUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.alibaba.fastjson.JSON;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.imed.costaccount.common.exception.CostException;
  9. import com.imed.costaccount.common.util.BeanUtil;
  10. import com.imed.costaccount.common.util.JsonUtil;
  11. import com.imed.costaccount.common.util.PageUtils;
  12. import com.imed.costaccount.constants.NumberConstant;
  13. import com.imed.costaccount.mapper.CostIncomeFileMapper;
  14. import com.imed.costaccount.mapper.CostIncomeGroupMapper;
  15. import com.imed.costaccount.model.CostIncomeFile;
  16. import com.imed.costaccount.model.CostIncomeGroup;
  17. import com.imed.costaccount.model.User;
  18. import com.imed.costaccount.model.vo.CostIncomeFileVO;
  19. import com.imed.costaccount.model.vo.IncomeErrorMessage;
  20. import com.imed.costaccount.service.CostIncomeFileService;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Propagation;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import org.springframework.util.CollectionUtils;
  26. import org.springframework.web.multipart.MultipartFile;
  27. import java.util.List;
  28. import java.util.Objects;
  29. import java.util.stream.Collectors;
  30. @Service("costIncomeFileService")
  31. public class CostIncomeFileServiceImpl extends ServiceImpl<CostIncomeFileMapper, CostIncomeFile> implements CostIncomeFileService {
  32. @Autowired
  33. private CostIncomeGroupMapper costIncomeGroupMapper;
  34. /**
  35. * 保存文件上传记录
  36. * @param list 文件数据
  37. * @param user 当前用户
  38. * @param file 上传文件
  39. * @param hospId 医院Id
  40. * @param incomeErrorMessageList 错误信息
  41. * @param uploadFile 文件路径
  42. * @return
  43. */
  44. @Override
  45. public CostIncomeFile saveCostIncomeFile(List<List<Object>> list, User user, MultipartFile file, Long hospId, List<IncomeErrorMessage> incomeErrorMessageList, String uploadFile,Integer fileType) {
  46. CostIncomeFile costIncomeFile = new CostIncomeFile();
  47. String substring = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf("."))+System.currentTimeMillis()+".xsl";
  48. costIncomeFile.setFileName(substring);
  49. costIncomeFile.setFileUrl(uploadFile);
  50. costIncomeFile.setTotalAmount(list.size());
  51. if (!CollectionUtils.isEmpty(incomeErrorMessageList)) {
  52. costIncomeFile.setSuccessAmount(NumberConstant.ZERO);
  53. costIncomeFile.setErrorList(JSON.toJSONString(incomeErrorMessageList));
  54. }else {
  55. costIncomeFile.setSuccessAmount(list.size());
  56. }
  57. if (NumberConstant.ONE.equals(fileType)){
  58. costIncomeFile.setFileType("成本分摊参数值");
  59. }else if (NumberConstant.TWO.equals(fileType)){
  60. costIncomeFile.setFileType("收入数据");
  61. }else if (NumberConstant.THREE.equals(fileType)){
  62. costIncomeFile.setFileType("成本数据");
  63. }else {
  64. costIncomeFile.setFileType(file.getContentType());
  65. }
  66. costIncomeFile.setHospId(hospId);
  67. costIncomeFile.setUserName(user.getName());
  68. costIncomeFile.setUserId(user.getId());
  69. costIncomeFile.setCreateTime(System.currentTimeMillis());
  70. this.save(costIncomeFile);
  71. return costIncomeFile;
  72. }
  73. /**
  74. * 分页查询查询记录数据
  75. *
  76. * @param current
  77. * @param pageSize
  78. * @param name
  79. * @param hospId
  80. * @return
  81. */
  82. @Override
  83. public PageUtils queryList(Integer current, Integer pageSize, String name, Long hospId) {
  84. Page<CostIncomeFile> costIncomeFilePage = new Page<>(current, pageSize);
  85. Page<CostIncomeFile> page = this.page(costIncomeFilePage, new QueryWrapper<CostIncomeFile>().lambda()
  86. .eq(CostIncomeFile::getHospId, hospId).like(StrUtil.isNotBlank(name), CostIncomeFile::getFileName, name).orderByDesc(CostIncomeFile::getCreateTime));
  87. List<CostIncomeFile> records = page.getRecords();
  88. List<CostIncomeFileVO> costIncomeFileVOList = BeanUtil.convertList(records, CostIncomeFileVO.class);
  89. costIncomeFileVOList.forEach(i->{
  90. String errorList = i.getErrorList();
  91. if (StrUtil.isNotBlank(errorList)){
  92. i.setErrStatus(NumberConstant.ONE);
  93. }
  94. i.setDateTime(DateUtil.format(DateUtil.date(i.getCreateTime()),"yyyy-MM-dd"));
  95. });
  96. PageUtils pageUtils = new PageUtils(page);
  97. pageUtils.setList(costIncomeFileVOList);
  98. return pageUtils;
  99. }
  100. /**
  101. * 撤销导入
  102. *
  103. * @param id
  104. * @param hospId
  105. */
  106. @Override
  107. @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
  108. public void deleteImport(Long id, Long hospId) {
  109. CostIncomeFile costIncomeFile = this.getById(id);
  110. if (Objects.isNull(costIncomeFile)){
  111. throw new CostException(500,"文件记录不存在");
  112. }
  113. // 根据文件的Id 和 医院Id获取数据
  114. List<CostIncomeGroup> costIncomeGroupList = costIncomeGroupMapper.selectList(new QueryWrapper<CostIncomeGroup>().lambda()
  115. .eq(CostIncomeGroup::getHospId, hospId).eq(CostIncomeGroup::getFileId, id));
  116. if (CollectionUtils.isEmpty(costIncomeGroupList)){
  117. throw new CostException(410,"数据已撤销");
  118. }
  119. List<Long> list = costIncomeGroupList.stream().map(CostIncomeGroup::getId).collect(Collectors.toList());
  120. costIncomeGroupMapper.deleteBatchIds(list);
  121. }
  122. /**
  123. * 错误详情
  124. *
  125. * @param id
  126. * @param hospId
  127. * @return
  128. */
  129. @Override
  130. public List<IncomeErrorMessage> getErrorList(Long id, Long hospId) {
  131. CostIncomeFile costIncomeFile = this.getById(id);
  132. if (Objects.isNull(costIncomeFile)){
  133. throw new CostException(500,"文件记录不存在");
  134. }
  135. String errorList = costIncomeFile.getErrorList();
  136. if (StrUtil.isBlank(errorList)){
  137. return null;
  138. }
  139. List<IncomeErrorMessage> incomeErrorMessageList = JsonUtil.toList(errorList, IncomeErrorMessage.class);
  140. return incomeErrorMessageList;
  141. }
  142. }