package com.ydtech.modules.inv.service.impl; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.constants.enums.dict.ApprovalStatusEnum; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.admin.model.SysDict; import com.ydtech.modules.admin.service.SysDictService; import com.ydtech.modules.ins.utils.ExcelStyleUtil; import com.ydtech.modules.inv.dao.InvInvoiceInfoMapper; import com.ydtech.modules.inv.model.InvCompany; import com.ydtech.modules.inv.model.InvInvoiceInfo; import com.ydtech.modules.inv.model.InvInvoiceInfoInOut; import com.ydtech.modules.inv.model.dto.InvInvoiceInfoDto; import com.ydtech.modules.inv.service.InvCompanyService; import com.ydtech.modules.inv.service.InvInvoiceInfoInOutService; import com.ydtech.modules.inv.service.InvInvoiceInfoService; import com.ydtech.utils.StringUtils; import com.ydtech.utils.excel.ExcelEasypoiUtils; import com.ydtech.utils.excel.ExcelUtils2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * @author Administrator * @description 针对表【inv_invoice_info(发票表- 信息)】的数据库操作Service实现 * @createDate 2023-05-15 14:22:55 */ @Service public class InvInvoiceInfoServiceImpl extends ServiceImpl implements InvInvoiceInfoService { @Resource private InvCompanyService invCompanyService; @Resource private SysDictService sysDictService; @Resource private InvInvoiceInfoInOutService invInvoiceInfoInOutService; @Override public boolean approval(ApprovalStatusEnum approvalStatusEnum, List ids) { LambdaUpdateWrapper luw = new LambdaUpdateWrapper(); luw.set(InvInvoiceInfo::getApprovalStatus, approvalStatusEnum.getCode()); luw.in(InvInvoiceInfo::getId, ids); return update(luw); } @Override public HttpResult importData(MultipartFile file) { List list = null; try { list = ExcelEasypoiUtils.importExcel(file, InvInvoiceInfo.class, null, null, null); } catch (IOException e) { return HttpResult.error("导入失败!" + e.getMessage()); } list.remove(null); List iCompanyList = invCompanyService.list(); List subjectsList = sysDictService.findByLable("subjects"); List finalList = new ArrayList<>(); list.stream().forEach(a -> { if (StringUtils.isNullOrEmpty(a.getInvCompanyName())) return; a.setApprovalStatus(ApprovalStatusEnum.AS0.getCode()); //获取ID if (StringUtils.isNotEmpty(a.getInvCompanyName())) { // iCompanyList.stream().filter(ic -> ic.getEnterpriseName().equals(a.getInvCompanyName())).collect(Collectors.toList()); String eNameId = iCompanyList .stream() .filter(ic -> ic.getEnterpriseName().equals(a.getInvCompanyName())) // .sorted(Comparator.comparing(B::getSorted)) .map(b -> b.getId()) .collect(Collectors.joining(StrUtil.CRLF)); // InvCompany ic = invCompanyService.gainIdByEnterpriseName(a.getInvCompanyName()); if (StringUtils.isNotEmpty(eNameId)) { a.setInvCompanyId(eNameId); } else { return; } } if (null != a && StringUtils.isNotEmpty(a.getSubjects())) { String subjectsId = subjectsList .stream() .filter(sub -> sub.getLabel().equals(a.getSubjects())) // .sorted(Comparator.comparing(B::getSorted)) .map(b -> b.getValue()) .collect(Collectors.joining(StrUtil.CRLF)); // List subjectsList = sysDictService.findByLable("subjects"); if (StringUtils.isNotEmpty(subjectsId)) { a.setSubjectsId(subjectsId); } else { return; } } finalList.add(a); }); if (finalList.size() > 0) { saveBatch(finalList); return HttpResult.ok("导入匹配[开票公司]的数据条数:" + finalList.size()); } else { return HttpResult.error("导入匹配[开票公司]的数据条数:0"); } } @Override public HttpResult exportData(List ids, HttpServletRequest request, HttpServletResponse response) { List iiiList = listByIds(ids); // 导出 ExportParams exportParams = new ExportParams(null, "Sheet1", ExcelType.HSSF); // ExportParams exportParams = new ExportParams(); // 设置 exportParams.setStyle(ExcelStyleUtil.class); try { String fileName = URLEncoder.encode("发票信息表", "UTF-8"); ExcelUtils2.exportExcel(iiiList, InvInvoiceInfo.class, fileName, exportParams, request, response); // ExcelUtils2.exportExcel(iiiList, InvInvoiceInfo.class, "发票信息表", exportParams, request, response); } catch (IOException e) { throw new RuntimeException(e); } return HttpResult.ok("导出成功"); } @Override public boolean saveInvoice(InvInvoiceInfoDto dto) { InvInvoiceInfo invInvoiceInfo = dto.getInvoiceInfo(); invInvoiceInfo.setApprovalStatus(ApprovalStatusEnum.AS1.getCode()); if(StringUtils.isNotEmpty(invInvoiceInfo.getId())){ List invoiceInfoInOutList = dto.getInvoiceInfoInOutList(); if(null !=invoiceInfoInOutList && invoiceInfoInOutList.size()>0){ invInvoiceInfoInOutService.removeById(invInvoiceInfo.getId()); } invInvoiceInfoInOutService.saveBatch(invoiceInfoInOutList); } return saveOrUpdate(invInvoiceInfo); } }