InvInvoiceInfoServiceImpl.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package com.ydtech.modules.inv.service.impl;
  2. import cn.afterturn.easypoi.excel.entity.ExportParams;
  3. import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
  4. import cn.hutool.core.util.StrUtil;
  5. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import com.ydtech.constants.enums.dict.ApprovalStatusEnum;
  8. import com.ydtech.core.page.HttpResult;
  9. import com.ydtech.modules.admin.model.SysDict;
  10. import com.ydtech.modules.admin.service.SysDictService;
  11. import com.ydtech.modules.ins.utils.ExcelStyleUtil;
  12. import com.ydtech.modules.inv.dao.InvInvoiceInfoMapper;
  13. import com.ydtech.modules.inv.model.InvCompany;
  14. import com.ydtech.modules.inv.model.InvInvoiceInfo;
  15. import com.ydtech.modules.inv.model.InvInvoiceInfoInOut;
  16. import com.ydtech.modules.inv.model.dto.InvInvoiceInfoDto;
  17. import com.ydtech.modules.inv.service.InvCompanyService;
  18. import com.ydtech.modules.inv.service.InvInvoiceInfoInOutService;
  19. import com.ydtech.modules.inv.service.InvInvoiceInfoService;
  20. import com.ydtech.utils.StringUtils;
  21. import com.ydtech.utils.excel.ExcelEasypoiUtils;
  22. import com.ydtech.utils.excel.ExcelUtils2;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import org.springframework.web.multipart.MultipartFile;
  26. import javax.annotation.Resource;
  27. import javax.servlet.http.HttpServletRequest;
  28. import javax.servlet.http.HttpServletResponse;
  29. import java.io.IOException;
  30. import java.net.URLEncoder;
  31. import java.util.ArrayList;
  32. import java.util.List;
  33. import java.util.stream.Collectors;
  34. /**
  35. * @author Administrator
  36. * @description 针对表【inv_invoice_info(发票表- 信息)】的数据库操作Service实现
  37. * @createDate 2023-05-15 14:22:55
  38. */
  39. @Service
  40. public class InvInvoiceInfoServiceImpl extends ServiceImpl<InvInvoiceInfoMapper, InvInvoiceInfo>
  41. implements InvInvoiceInfoService {
  42. @Resource
  43. private InvCompanyService invCompanyService;
  44. @Resource
  45. private SysDictService sysDictService;
  46. @Resource
  47. private InvInvoiceInfoInOutService invInvoiceInfoInOutService;
  48. @Override
  49. public boolean approval(ApprovalStatusEnum approvalStatusEnum, List<String> ids) {
  50. LambdaUpdateWrapper<InvInvoiceInfo> luw = new LambdaUpdateWrapper();
  51. luw.set(InvInvoiceInfo::getApprovalStatus, approvalStatusEnum.getCode());
  52. luw.in(InvInvoiceInfo::getId, ids);
  53. return update(luw);
  54. }
  55. @Override
  56. public HttpResult importData(MultipartFile file) {
  57. List<InvInvoiceInfo> list = null;
  58. try {
  59. list = ExcelEasypoiUtils.importExcel(file, InvInvoiceInfo.class, null, null, null);
  60. } catch (IOException e) {
  61. return HttpResult.error("导入失败!" + e.getMessage());
  62. }
  63. list.remove(null);
  64. List<InvCompany> iCompanyList = invCompanyService.list();
  65. List<SysDict> subjectsList = sysDictService.findByLable("subjects");
  66. List<InvInvoiceInfo> finalList = new ArrayList<>();
  67. list.stream().forEach(a -> {
  68. if (StringUtils.isNullOrEmpty(a.getInvCompanyName())) return;
  69. a.setApprovalStatus(ApprovalStatusEnum.AS0.getCode());
  70. //获取ID
  71. if (StringUtils.isNotEmpty(a.getInvCompanyName())) {
  72. // iCompanyList.stream().filter(ic -> ic.getEnterpriseName().equals(a.getInvCompanyName())).collect(Collectors.toList());
  73. String eNameId = iCompanyList
  74. .stream()
  75. .filter(ic -> ic.getEnterpriseName().equals(a.getInvCompanyName()))
  76. // .sorted(Comparator.comparing(B::getSorted))
  77. .map(b -> b.getId())
  78. .collect(Collectors.joining(StrUtil.CRLF));
  79. // InvCompany ic = invCompanyService.gainIdByEnterpriseName(a.getInvCompanyName());
  80. if (StringUtils.isNotEmpty(eNameId)) {
  81. a.setInvCompanyId(eNameId);
  82. } else {
  83. return;
  84. }
  85. }
  86. if (null != a && StringUtils.isNotEmpty(a.getSubjects())) {
  87. String subjectsId = subjectsList
  88. .stream()
  89. .filter(sub -> sub.getLabel().equals(a.getSubjects()))
  90. // .sorted(Comparator.comparing(B::getSorted))
  91. .map(b -> b.getValue())
  92. .collect(Collectors.joining(StrUtil.CRLF));
  93. // List<SysDict> subjectsList = sysDictService.findByLable("subjects");
  94. if (StringUtils.isNotEmpty(subjectsId)) {
  95. a.setSubjectsId(subjectsId);
  96. } else {
  97. return;
  98. }
  99. }
  100. finalList.add(a);
  101. });
  102. if (finalList.size() > 0) {
  103. saveBatch(finalList);
  104. return HttpResult.ok("导入匹配[开票公司]的数据条数:" + finalList.size());
  105. } else {
  106. return HttpResult.error("导入匹配[开票公司]的数据条数:0");
  107. }
  108. }
  109. @Override
  110. public HttpResult exportData(List<String> ids, HttpServletRequest request, HttpServletResponse response) {
  111. List<InvInvoiceInfo> iiiList = listByIds(ids);
  112. // 导出
  113. ExportParams exportParams = new ExportParams(null, "Sheet1", ExcelType.HSSF);
  114. // ExportParams exportParams = new ExportParams();
  115. // 设置
  116. exportParams.setStyle(ExcelStyleUtil.class);
  117. try {
  118. String fileName = URLEncoder.encode("发票信息表", "UTF-8");
  119. ExcelUtils2.exportExcel(iiiList, InvInvoiceInfo.class, fileName, exportParams, request, response);
  120. // ExcelUtils2.exportExcel(iiiList, InvInvoiceInfo.class, "发票信息表", exportParams, request, response);
  121. } catch (IOException e) {
  122. throw new RuntimeException(e);
  123. }
  124. return HttpResult.ok("导出成功");
  125. }
  126. @Override
  127. public boolean saveInvoice(InvInvoiceInfoDto dto) {
  128. InvInvoiceInfo invInvoiceInfo = dto.getInvoiceInfo();
  129. invInvoiceInfo.setApprovalStatus(ApprovalStatusEnum.AS1.getCode());
  130. if(StringUtils.isNotEmpty(invInvoiceInfo.getId())){
  131. List<InvInvoiceInfoInOut> invoiceInfoInOutList = dto.getInvoiceInfoInOutList();
  132. if(null !=invoiceInfoInOutList && invoiceInfoInOutList.size()>0){
  133. invInvoiceInfoInOutService.removeById(invInvoiceInfo.getId());
  134. }
  135. invInvoiceInfoInOutService.saveBatch(invoiceInfoInOutList);
  136. }
  137. return saveOrUpdate(invInvoiceInfo);
  138. }
  139. }