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 ee5210a9..70f31264 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 @@ -111,6 +111,20 @@ public class SysSalesShippingInformController extends BaseController } + + /** + * 导出出货单通知单模板 + * */ + @RequiresPermissions("system:salesShippingInform:exportShippingInformOrder") + @Log(title = "采购订单", businessType = BusinessType.EXPORT) + @GetMapping("/exportShippingInformOrder/{outOrderCode}") + public void exportShippingInformOrder(@PathVariable("outOrderCode") String outOrderCode,HttpServletResponse response) { + + sysSalesShippingInformService.exportShippingInformOrder(outOrderCode, response); + } + + + /** * 新增销售出货通知 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInformOrderDto.java b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInformOrderDto.java new file mode 100644 index 00000000..7339dcf1 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInformOrderDto.java @@ -0,0 +1,17 @@ +package com.ruoyi.system.dto; + +import lombok.Data; + +/** +* 销售出货通知单导出模板 +* */ +@Data +public class ExportShippingInformOrderDto { + + + private String materialName; + + private String deviceModelCode; + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportSalesShippingInformDto.java b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java similarity index 89% rename from ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportSalesShippingInformDto.java rename to ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java index 3ec3af12..2ecd299e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportSalesShippingInformDto.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java @@ -6,7 +6,7 @@ import lombok.Data; * 导出销售出货单模板数据 * */ @Data -public class ExportSalesShippingInformDto { +public class ExportShippingOrderDto { private Integer index; 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 382b66e7..798067c7 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 @@ -120,4 +120,9 @@ public interface ISysSalesShippingInformService * 导出出货单2模板 * */ void exportShippingOrderTwo(String outOrderCode, HttpServletResponse response); + + /** + * 导出出货通知单模板 + * */ + void exportShippingInformOrder(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 57602f22..302bdbb2 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 @@ -10,9 +10,10 @@ import java.util.concurrent.atomic.AtomicInteger; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.util.MapUtils; -import com.alibaba.excel.write.builder.ExcelWriterBuilder; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.fill.FillConfig; +import com.ruoyi.aftersales.domain.AfterSalesShippingDevice; +import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.BusinessException; import com.ruoyi.common.utils.DateUtils; @@ -20,22 +21,18 @@ import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileDownloadUtils; import com.ruoyi.system.domain.*; -import com.ruoyi.system.dto.ExportSalesShippingInformDto; -import com.ruoyi.system.mapper.SysSalesOrderChildMapper; -import com.ruoyi.system.mapper.SysSalesOrderMapper; -import com.ruoyi.system.mapper.SysSalesShippingInformDetailMapper; +import com.ruoyi.system.dto.ExportShippingInformOrderDto; +import com.ruoyi.system.dto.ExportShippingOrderDto; +import com.ruoyi.system.mapper.*; import com.ruoyi.warehouse.domain.WarehouseOutOrder; import com.ruoyi.warehouse.mapper.WarehouseOutOrderMapper; -import com.ruoyi.warehouse.mapper.WarehouseStorageOrderMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.ruoyi.system.mapper.SysSalesShippingInformMapper; import com.ruoyi.system.service.ISysSalesShippingInformService; import com.ruoyi.common.core.text.Convert; import org.springframework.transaction.annotation.Transactional; -import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; /** @@ -65,6 +62,13 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor @Autowired private SysSalesOrderChildMapper salesOrderChildMapper; + + @Autowired + private SysMakeOrderMapper sysMakeOrderMapper; + + @Autowired + private AfterSalesShippingDeviceMapper salesShippingDeviceMapper; + /** * 查询销售出货通知 * @@ -401,19 +405,19 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor AtomicInteger index = new AtomicInteger(1); //处理物料数据 - List exportSalesShippingInformDtos = new ArrayList<>(); + List exportShippingOrderDtos = new ArrayList<>(); for (SysSalesShippingInformDetail salesShippingInformDetail : salesShippingInformDetails) { - ExportSalesShippingInformDto exportSalesShippingInformDto = new ExportSalesShippingInformDto(); - exportSalesShippingInformDto.setIndex(index.getAndIncrement()); - exportSalesShippingInformDto.setMaterialName(salesShippingInformDetail.getMaterialName()); - exportSalesShippingInformDto.setMaterialNo(salesShippingInformDetail.getMaterialNo()); - exportSalesShippingInformDto.setMaterialDescribe(salesShippingInformDetail.getMaterialDescribe()); - exportSalesShippingInformDto.setMaterialUnit(salesShippingInformDetail.getMaterialUnit()); - exportSalesShippingInformDto.setMakeNum(salesShippingInformDetail.getMakeNum()); - exportSalesShippingInformDto.setSalesOrderNumber(salesShippingInform.getSalesOrderNumber()); - exportSalesShippingInformDto.setRemark(salesShippingInform.getRemark()); - exportSalesShippingInformDtos.add(exportSalesShippingInformDto); + 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()); + exportShippingOrderDtos.add(exportShippingOrderDto); } @@ -435,7 +439,7 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor // 写入数据 workBook.fill(map, sheet); - workBook.fill(exportSalesShippingInformDtos, fillConfig, sheet); + workBook.fill(exportShippingOrderDtos, fillConfig, sheet); workBook.finish(); } catch (IOException e) { @@ -470,19 +474,19 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor AtomicInteger index = new AtomicInteger(1); //处理物料数据 - List exportSalesShippingInformDtos = new ArrayList<>(); + List exportShippingOrderDtos = new ArrayList<>(); for (SysSalesShippingInformDetail salesShippingInformDetail : salesShippingInformDetails) { - ExportSalesShippingInformDto exportSalesShippingInformDto = new ExportSalesShippingInformDto(); - exportSalesShippingInformDto.setIndex(index.getAndIncrement()); - exportSalesShippingInformDto.setMaterialName(salesShippingInformDetail.getMaterialName()); - exportSalesShippingInformDto.setMaterialNo(salesShippingInformDetail.getMaterialNo()); - exportSalesShippingInformDto.setMaterialDescribe(salesShippingInformDetail.getMaterialDescribe()); - exportSalesShippingInformDto.setMaterialUnit(salesShippingInformDetail.getMaterialUnit()); - exportSalesShippingInformDto.setMakeNum(salesShippingInformDetail.getMakeNum()); - exportSalesShippingInformDto.setSalesOrderNumber(salesShippingInform.getSalesOrderNumber()); - exportSalesShippingInformDto.setRemark(salesShippingInform.getRemark()); - exportSalesShippingInformDtos.add(exportSalesShippingInformDto); + 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()); + exportShippingOrderDtos.add(exportShippingOrderDto); } @@ -504,11 +508,71 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor // 写入数据 workBook.fill(map, sheet); - workBook.fill(exportSalesShippingInformDtos, fillConfig, sheet); + workBook.fill(exportShippingOrderDtos, fillConfig, sheet); + workBook.finish(); + + } catch (IOException e) { + throw new RuntimeException("文件处理失败",e); + } + } + + + /** + * 导出出货通知单模板 + * */ + @Override + public void exportShippingInformOrder(String outOrderCode, HttpServletResponse response) { + + String fileName = "出货通知单.xlsx"; + FileDownloadUtils fileDownloadUtils = new FileDownloadUtils(); + try { + String fileRelativePath = fileDownloadUtils.getFileRelativePath(fileName); + + SysSalesShippingInform sysSalesShippingInform = sysSalesShippingInformMapper.selectSysSalesShippingInformByCode(outOrderCode); + String salesOrderCode = sysSalesShippingInform.getSalesOrderCode(); + SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(salesOrderCode); + + + String realFileName = sysSalesShippingInform.getSalesOrderCode() +"-"+ fileName.substring(0, fileName.lastIndexOf("."))+ ".xlsx"; + // 设置响应头,指定文件名和文件类型 + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8")); + response.setContentType("application/octet-stream"); + + List salesShippingDeviceList = salesShippingDeviceMapper.selectShippingDeviceBySalesOrderCode(salesOrderCode); + + ArrayList shippingInformOrderDtos = new ArrayList<>(); + for (AfterSalesShippingDevice afterSalesShippingDevice : salesShippingDeviceList) { + ExportShippingInformOrderDto shippingInformOrderDto = new ExportShippingInformOrderDto(); + shippingInformOrderDto.setDeviceModelCode(afterSalesShippingDevice.getDeviceModelCode()); + shippingInformOrderDto.setMaterialName(afterSalesShippingDevice.getMaterialName()); + shippingInformOrderDtos.add(shippingInformOrderDto); + } + + + HashMap map = new HashMap<>(); + + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String shippingDate = dateFormat.format(new Date()); + map.put("makeNo",sysMakeOrder.getMakeNo()); + map.put("salesOrderNumber",sysSalesShippingInform.getSalesOrderNumber()); + map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress()); + map.put("shippingDate",shippingDate); + map.put("customerName",sysSalesShippingInform.getCustomerName()); + map.put("businessMembers",sysSalesShippingInform.getBusinessMembers()); + + 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(shippingInformOrderDtos, fillConfig, sheet); workBook.finish(); } catch (IOException e) { throw new RuntimeException("文件处理失败",e); } + } } diff --git a/ruoyi-admin/src/main/resources/attachments/出货通知单.xlsx b/ruoyi-admin/src/main/resources/attachments/出货通知单.xlsx new file mode 100644 index 00000000..5fa20c7e Binary files /dev/null and b/ruoyi-admin/src/main/resources/attachments/出货通知单.xlsx differ diff --git a/ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html b/ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html index c776ae82..1efec8c4 100644 --- a/ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html +++ b/ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html @@ -350,12 +350,12 @@ if(row.auditStatus=="1" && row.useStatus=="1" && !row.cancelInstanceId) { // 作废 actions.push(' 作废'); - // 编辑 - actions.push(' 编辑 '); + // 已作废 - }else{ - actions.push(' 编辑 '); } + // }else{ + // actions.push(' 编辑 '); + // } // 有流程实例id if(row.useStatus=="2" && !row.restoreInstanceId){ // 恢复 diff --git a/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html b/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html index 4b669e1a..0c7e5e77 100644 --- a/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html +++ b/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html @@ -56,6 +56,10 @@ 导出销售出货单2 + + 导出销售出货通知单 + +
@@ -356,6 +360,28 @@ } + + //导出通知单 + function exportShippingInformOrder() { + // 获取选中的行 + const selectedRows = $("#bootstrap-table").bootstrapTable('getSelections'); + + if (selectedRows.length !== 1) { + showWarning("请先选择一条销售出货通知单"); + return; + } + + const row = selectedRows[0]; + + // 使用 $.modal.confirm 显示确认对话框 + $.modal.confirm("确定导出这条数据的出货通知单吗?", function() { + // 如果用户点击确定,继续导出 + var outOrderCode = row.outOrderCode; + window.location.href = prefix + "/exportShippingInformOrder/" + outOrderCode; + $('#bootstrap-table').bootstrapTable('refresh'); // 刷新表格 + }); + } + \ No newline at end of file