From 3d84db44968c7e4a4cb4310f57657935f6723d5f Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Tue, 27 Aug 2024 14:56:21 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E9=94=80=E5=94=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E9=80=9A=E8=BF=87=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=8D=95=E5=8F=B7=E6=9F=A5=E8=AF=A2=E5=87=BA=E8=B4=A7=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=9A=84=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E7=94=B1=E5=8D=95=E4=B8=AA=E5=AE=9E=E4=BD=93=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E4=B8=BA=E5=A4=9A=E4=B8=AA=E5=AF=B9=E8=B1=A1=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20=E5=87=BA=E8=B4=A7=E5=8F=91=E7=A5=A8=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=A8=A1=E6=9D=BF=E7=B1=BB=20=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=87=BA=E8=B4=A7=E5=8F=91=E7=A5=A81?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=E5=92=8C?= =?UTF-8?q?=E5=85=B7=E4=BD=93=E5=AE=9E=E7=8E=B0=E7=B1=BB=20=E9=94=80?= =?UTF-8?q?=E5=94=AE=E5=87=BA=E8=B4=A7=E5=8F=91=E7=A5=A8=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E9=94=80=E5=94=AE=E5=87=BA=E8=B4=A7=E5=8F=91?= =?UTF-8?q?=E7=A5=A81=E5=89=8D=E7=AB=AF=E6=8C=89=E9=92=AE=E5=92=8Cjs?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=8C=E5=AF=BC=E5=87=BA=E5=89=8D=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E9=80=89=E6=8B=A9=E7=9A=84=E6=95=B0=E6=8D=AE=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=20=E4=BF=AE=E6=94=B9=20=E9=80=9A=E8=BF=87=E9=94=80?= =?UTF-8?q?=E5=94=AE=E8=AE=A2=E5=8D=95=E5=8F=B7=E6=9F=A5=E8=AF=A2=E9=94=80?= =?UTF-8?q?=E5=94=AE=E8=AE=A2=E5=8D=95=E5=AD=90=E8=A1=A8=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=9A=E6=96=B0=E5=A2=9E=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E5=8D=95=E4=BB=B7=E7=BE=8E=E5=85=83=E5=92=8C=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E4=BB=B7=E7=BE=8E=E5=85=83=E5=AD=97=E6=AE=B5=20?= =?UTF-8?q?=E9=99=84=E4=BB=B6=E7=9B=AE=E5=BD=95=E6=96=B0=E5=A2=9E=E9=94=80?= =?UTF-8?q?=E5=94=AE=E5=87=BA=E8=B4=A7=E5=8F=91=E7=A5=A81excel=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AfterSalesShippingDeviceMapper.java | 7 +- .../SysSalesShippingInformController.java | 14 +++ .../system/dto/ExportShippingInvoiceDto.java | 26 ++++++ .../ISysSalesShippingInformService.java | 4 + .../SysSalesShippingInformServiceImpl.java | 83 ++++++++++++++++++ .../system/SysSalesOrderChildMapper.xml | 2 +- .../attachments/销售出货发票1.xlsx | Bin 0 -> 89406 bytes .../salesShippingInform.html | 52 +++++++++++ 8 files changed, 186 insertions(+), 2 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInvoiceDto.java create mode 100644 ruoyi-admin/src/main/resources/static/attachments/销售出货发票1.xlsx diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java index 253806fa..a8a7b048 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java @@ -34,7 +34,12 @@ public interface AfterSalesShippingDeviceMapper * @param makeNo 关联生产订单号 * @return 选择设备信息 */ - public AfterSalesShippingDevice selectShippingDeviceByMakeNo(String makeNo); + public List selectShippingDeviceByMakeNo(String makeNo); + + + + + /** * 查询出货设备列表 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 766d5287..e8a90202 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 @@ -138,6 +138,20 @@ public class SysSalesShippingInformController extends BaseController } + + /** + * 导出出货发票1模板 + * */ + @RequiresPermissions("system:salesShippingInform:exportShippingInvoiceOne") + @Log(title = "销售出货单", businessType = BusinessType.EXPORT) + @GetMapping("/exportShippingInvoiceOne/{outOrderCode}") + public void exportShippingInvoiceOne(@PathVariable("outOrderCode") String outOrderCode,HttpServletResponse response) { + + sysSalesShippingInformService.exportShippingInvoiceOne(outOrderCode, response); + } + + + /** * 导出出货单通知单模板 * */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInvoiceDto.java b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInvoiceDto.java new file mode 100644 index 00000000..eed8c878 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInvoiceDto.java @@ -0,0 +1,26 @@ +package com.ruoyi.system.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +/** +* 出货发票导出模板类 +* */ + +@Data +public class ExportShippingInvoiceDto { + + private Integer index; + + private String materialName; + + private String makeNo; + + private Integer materialNum; + + private BigDecimal materialUsd; + + private BigDecimal materialUsdSum; + +} 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 20b00e61..ae03a86c 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 @@ -139,4 +139,8 @@ public interface ISysSalesShippingInformService * */ void exportShippingInformOrder(String outOrderCode, HttpServletResponse response); + /** + * 导出出货发票1模板 + * */ + void exportShippingInvoiceOne(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 981987e2..27028be2 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 @@ -22,6 +22,7 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileDownloadUtils; import com.ruoyi.system.domain.*; import com.ruoyi.system.dto.ExportShippingInformOrderDto; +import com.ruoyi.system.dto.ExportShippingInvoiceDto; import com.ruoyi.system.dto.ExportShippingOrderDto; import com.ruoyi.system.dto.ExportShippingPackingDto; import com.ruoyi.system.mapper.*; @@ -666,6 +667,88 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor } } + + /** + * 导出出货单发票1模板 + * */ + @Override + public void exportShippingInvoiceOne(String outOrderCode, HttpServletResponse response) { + String fileName = "销售出货发票1.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 9ad1878c..9882c470 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"