diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSalesShippingInformController.java b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSalesShippingInformController.java index e8a90202..944b0c33 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSalesShippingInformController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSalesShippingInformController.java @@ -151,6 +151,17 @@ public class SysSalesShippingInformController extends BaseController } + /** + * 导出出货发票2模板 + * */ + @RequiresPermissions("system:salesShippingInform:exportShippingInvoiceTwo") + @Log(title = "销售出货单", businessType = BusinessType.EXPORT) + @GetMapping("/exportShippingInvoiceTwo/{outOrderCode}") + public void exportShippingInvoiceTwo(@PathVariable("outOrderCode") String outOrderCode,HttpServletResponse response) { + + sysSalesShippingInformService.exportShippingInvoiceTwo(outOrderCode, response); + } + /** * 导出出货单通知单模板 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesShippingInformService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesShippingInformService.java index ae03a86c..75e213db 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesShippingInformService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesShippingInformService.java @@ -143,4 +143,9 @@ public interface ISysSalesShippingInformService * 导出出货发票1模板 * */ void exportShippingInvoiceOne(String outOrderCode, HttpServletResponse response); + + /** + * 导出出货发票2模板 + * */ + void exportShippingInvoiceTwo(String outOrderCode, HttpServletResponse response); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java index 27028be2..ba3741de 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java @@ -749,6 +749,88 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor } } + + /** + * 导出出货单发票2模板 + * */ + @Override + public void exportShippingInvoiceTwo(String outOrderCode, HttpServletResponse response) { + String fileName = "销售出货发票2.xlsx"; + FileDownloadUtils fileDownloadUtils = new FileDownloadUtils(); + try { + String fileRelativePath = fileDownloadUtils.getFileRelativePath(fileName); + if (StringUtils.isEmpty(outOrderCode)){ + log.warn("出货单号为空,请检查:{}", outOrderCode); + throw new RuntimeException("出货单号为空,请检查"); + } + + String realFileName = outOrderCode + "-" + fileName.substring(0, fileName.lastIndexOf(".")) + ".xlsx"; + + //设置响应头,指定文件和文件类型 + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8")); + response.setContentType("application/octet-stream"); + + + SysSalesShippingInform sysSalesShippingInform = sysSalesShippingInformMapper.selectSysSalesShippingInformByCode(outOrderCode); + String salesOrderCode = sysSalesShippingInform.getSalesOrderCode(); + SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(salesOrderCode); + + List sysSalesOrderChildren = salesOrderChildMapper.selectOrderChildListBySalesOrderCode(salesOrderCode); + + String makeNo = sysMakeOrder.getMakeNo(); + if (!StringUtils.isEmpty(makeNo)){ + List afterSalesShippingDevices = salesShippingDeviceMapper.selectShippingDeviceByMakeNo(makeNo); + } + + Map map = new HashMap<>(); + map.put("customerContact",sysSalesShippingInform.getCustomerContact()); + map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress()); + map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto()); + map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto()); + + + ArrayList exportShippingInvoiceDtos = new ArrayList<>(); + + AtomicInteger index = new AtomicInteger(1); + + for (SysSalesOrderChild sysSalesOrderChild : sysSalesOrderChildren) { + ExportShippingInvoiceDto exportShippingInvoiceDto = new ExportShippingInvoiceDto(); + exportShippingInvoiceDto.setIndex(index.getAndIncrement()); + exportShippingInvoiceDto.setMaterialName(sysSalesOrderChild.getMaterialName()); + exportShippingInvoiceDto.setMaterialNum(1); + + if (sysSalesOrderChild.getMaterialUsd() != null) { + exportShippingInvoiceDto.setMaterialUsd(new BigDecimal(sysSalesOrderChild.getMaterialUsd())); + } else { + // 如果 materialUsd 为 null,可以设置为默认值或者保持不变 + exportShippingInvoiceDto.setMaterialUsd(BigDecimal.ZERO); // 示例: 设置为0 + } + + if (sysSalesOrderChild.getMaterialUsdSum() != null) { + exportShippingInvoiceDto.setMaterialUsdSum(new BigDecimal(sysSalesOrderChild.getMaterialUsdSum())); + } else { + // 如果 materialUsdSum 为 null,可以设置为默认值或者保持不变 + exportShippingInvoiceDto.setMaterialUsdSum(BigDecimal.ZERO); // 示例: 设置为0 + } + exportShippingInvoiceDto.setMakeNo(makeNo); + // to do 缺少物料型号 + exportShippingInvoiceDtos.add(exportShippingInvoiceDto); + } + + + ExcelWriter workBook = EasyExcel.write(response.getOutputStream()).withTemplate(fileRelativePath).build(); + WriteSheet sheet = EasyExcel.writerSheet().build(); + FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build(); + workBook.fill(map, sheet); + workBook.fill(exportShippingInvoiceDtos, fillConfig, sheet); + workBook.finish(); + + + } catch (IOException e) { + throw new RuntimeException("文件处理失败",e); + } + } + /** * 导出出货通知单模板 * */ diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysSalesOrderChildMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysSalesOrderChildMapper.xml index 9882c470..c6a1c319 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/SysSalesOrderChildMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/SysSalesOrderChildMapper.xml @@ -106,7 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"