From 0dc7652f2fce2d7963ba4e7f6a145918a0f0f462 Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Tue, 3 Dec 2024 09:13:29 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E9=94=80=E5=94=AE=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=B0=83=E6=95=B4:=20?= =?UTF-8?q?=E9=87=8D=E5=86=99=E5=AF=BC=E5=87=BA=E5=87=BA=E8=B4=A7=E5=8D=95?= =?UTF-8?q?1=E6=A8=A1=E6=9D=BF=E7=9A=84=E5=90=8E=E7=AB=AF=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20=E4=BF=AE=E6=94=B9=20=E5=AF=BC=E5=87=BA=E9=94=80?= =?UTF-8?q?=E5=94=AE=E5=87=BA=E8=B4=A7=E5=8D=95=E6=A8=A1=E6=9D=BF=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AE=9E=E4=BD=93=E7=B1=BB=20=E6=8C=89=E7=85=A7?= =?UTF-8?q?=E6=96=B0=E6=A8=A1=E6=9D=BF=E4=BF=AE=E6=94=B9=E5=87=BA=E8=B4=A7?= =?UTF-8?q?=E5=8D=951.xlsx=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/dto/ExportShippingOrderDto.java | 6 +- .../SysSalesShippingInformServiceImpl.java | 52 +++++++++++++----- .../static/attachments/销售出货单1.xlsx | Bin 19752 -> 19306 bytes 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java index 2ecd299e..59e52e87 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java @@ -13,9 +13,7 @@ public class ExportShippingOrderDto { private String materialName; - private String materialNo; - - private String materialDescribe; + private String materialModel; private String materialUnit; @@ -24,4 +22,6 @@ public class ExportShippingOrderDto { private String salesOrderNumber; private String remark; + + private String enterpriseMaterialNo; } 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 c21e726b..74b60134 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 @@ -624,6 +624,7 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor public void exportShippingOrderOne(String outOrderCode, HttpServletResponse response) { String fileName = "销售出货单1.xlsx"; + String shippingOrderCode = redisCache.generateBillNo("shd"); try { String fileAbsolutePath = FileDownloadUtils.getFileAbsolutePath(fileName); @@ -635,6 +636,21 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor SysSalesShippingInform salesShippingInform = sysSalesShippingInformMapper.selectSysSalesShippingInformByCode(outOrderCode); + String salesOrderCode = salesShippingInform.getSalesOrderCode(); + + List salesOrderCodes = new ArrayList<>(); + + if (StringUtils.isNotEmpty(salesOrderCode)){ + String[] splitSalesOrderCode = salesOrderCode.split(","); + salesOrderCodes = Arrays.asList(splitSalesOrderCode); + } + + + List sysSalesOrders = sysSalesOrderMapper.selectSysSalesOrderListByCodeList(salesOrderCodes); + HashMap salesOrderHashMap = new HashMap<>(); + for (SysSalesOrder sysSalesOrder : sysSalesOrders) { + salesOrderHashMap.put(sysSalesOrder.getSalesOrderCode(),sysSalesOrder); + } //销售出货单 String shippingInformationType = "2"; @@ -644,33 +660,40 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor List salesShippingInformDetails = shippingInformDetailMapper.selectSysSalesShippingInformDetailByCode(outOrderCode); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String deliverTime = dateFormat.format(salesShippingInform.getDeliverTime()); + + + String realFileName = salesShippingInform.getSalesOrderCode() +"-"+ fileName.substring(0, fileName.lastIndexOf("."))+ ".xlsx"; // 设置响应头,指定文件名和文件类型 response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8")); response.setContentType("application/octet-stream"); + List sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes); + + AtomicInteger index = new AtomicInteger(1); //处理物料数据 List exportShippingOrderDtos = new ArrayList<>(); - for (SysSalesShippingInformDetail salesShippingInformDetail : salesShippingInformDetails) { + for (SysSalesOrderChild sysSalesOrderChild : sysSalesOrderChildren) { + SysSalesOrder sysSalesOrder = salesOrderHashMap.get(sysSalesOrderChild.getQuoteId()); + ExportShippingOrderDto exportShippingOrderDto = new ExportShippingOrderDto(); exportShippingOrderDto.setIndex(index.getAndIncrement()); - exportShippingOrderDto.setMaterialName(salesShippingInformDetail.getMaterialName()); - exportShippingOrderDto.setMaterialNo(salesShippingInformDetail.getMaterialNo()); - exportShippingOrderDto.setMaterialDescribe(salesShippingInformDetail.getMaterialDescribe()); - exportShippingOrderDto.setMaterialUnit(salesShippingInformDetail.getMaterialUnit()); - exportShippingOrderDto.setMakeNum(salesShippingInformDetail.getMakeNum()); - exportShippingOrderDto.setSalesOrderNumber(salesShippingInform.getSalesOrderNumber()); - exportShippingOrderDto.setRemark(salesShippingInform.getRemark()); + exportShippingOrderDto.setMaterialName(sysSalesOrderChild.getMaterialName()); + exportShippingOrderDto.setMaterialModel(sysSalesOrderChild.getMaterialModel()); + exportShippingOrderDto.setMaterialUnit(sysSalesOrderChild.getUnit()); + exportShippingOrderDto.setMakeNum(sysSalesOrderChild.getMaterialNum()); + exportShippingOrderDto.setSalesOrderNumber(sysSalesOrder.getSalesOrderNumber()); + exportShippingOrderDto.setRemark(sysSalesOrder.getRemark()); + exportShippingOrderDto.setEnterpriseMaterialNo(sysSalesOrder.getEnterpriseMaterialNo()); exportShippingOrderDtos.add(exportShippingOrderDto); } + //totalMakeNum String totalMakeNum = String.valueOf(salesShippingInformDetails.stream().mapToInt(SysSalesShippingInformDetail::getMakeNum).sum()); @@ -681,11 +704,14 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String shippingDate = dateFormat.format(new Date()); + HashMap map = MapUtils.newHashMap(); map.put("customerId",salesShippingInform.getCustomerId()); - map.put("deliverTime",deliverTime); - map.put("businessMembers",salesShippingInform.getBusinessMembers()); + map.put("shippingDate",shippingDate); map.put("totalMakeNum",totalMakeNum); + map.put("shippingOrderCode",shippingOrderCode); // 写入数据 workBook.fill(map, sheet); @@ -744,8 +770,6 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor ExportShippingOrderDto exportShippingOrderDto = new ExportShippingOrderDto(); exportShippingOrderDto.setIndex(index.getAndIncrement()); exportShippingOrderDto.setMaterialName(salesShippingInformDetail.getMaterialName()); - exportShippingOrderDto.setMaterialNo(salesShippingInformDetail.getMaterialNo()); - exportShippingOrderDto.setMaterialDescribe(salesShippingInformDetail.getMaterialDescribe()); exportShippingOrderDto.setMaterialUnit(salesShippingInformDetail.getMaterialUnit()); exportShippingOrderDto.setMakeNum(salesShippingInformDetail.getMakeNum()); exportShippingOrderDto.setSalesOrderNumber(salesShippingInform.getSalesOrderNumber()); diff --git a/ruoyi-admin/src/main/resources/static/attachments/销售出货单1.xlsx b/ruoyi-admin/src/main/resources/static/attachments/销售出货单1.xlsx index 3fbb9f2f754f140c3dc30fbf8dc51f6f1cfd1633..f7f8a848852093e29fa67f8bbda9693f97000c00 100644 GIT binary patch delta 7849 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 T+68Y=qk!Y9lRqg1{e}Dw4+XV% delta 8299 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