From 545ac4478e27aa363e21f5dd160da236cad7a505 Mon Sep 17 00:00:00 2001 From: zxy Date: Tue, 31 Mar 2026 14:54:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(heli):=20=E5=BA=93=E5=AD=98=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 辑 --- .../module/heli/enums/ErrorCodeConstants.java | 4 +- .../wmsstorage/WmsStorageController.java | 238 +++++++++++++----- .../wmsstorage/vo/WmsStorageInExcelVO.java | 16 +- .../wmsstorage/vo/WmsStorageOutExcelVO.java | 14 +- .../wmsstoragedetail/vo/DetailInExcelVO.java | 12 +- .../wmsstoragedetail/vo/DetailOutExcelVO.java | 10 +- .../service/wmsstorage/WmsStorageService.java | 5 +- .../wmsstorage/WmsStorageServiceImpl.java | 49 ++-- .../resources/template/wms-storage-in.xls | Bin 0 -> 25600 bytes .../resources/template/wms-storage-out.xls | Bin 0 -> 19968 bytes .../src/api/heli/wmsstorage/index.ts | 2 +- .../src/views/heli/wmsstorage/index.vue | 52 ++-- 12 files changed, 261 insertions(+), 141 deletions(-) create mode 100644 mes-server/src/main/resources/template/wms-storage-in.xls create mode 100644 mes-server/src/main/resources/template/wms-storage-out.xls diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java index 9f7f9e51..5ffb8627 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java @@ -183,8 +183,8 @@ public interface ErrorCodeConstants { ErrorCode MAT_CAT_CODE_ERROR = new ErrorCode(1_014_004, "该物料大类编码不正确,请检查!"); ErrorCode WMS_STORAGE_NOT_EXISTS = new ErrorCode(1_015_001, "当前数据不存在"); - ErrorCode WMS_STORAGE_IS_EXPORT = new ErrorCode(1_015_002, "存在已导出的数据,请刷新界面。"); - ErrorCode WMS_STORAGE_NOT_EXPORT = new ErrorCode(1_015_003, "当前数据不能删除!"); + ErrorCode WMS_STORAGE_IS_EXPORT = new ErrorCode(1_015_002, "当前数据已导出,请刷新界面。"); + ErrorCode WMS_STORAGE_NOT_DELETE = new ErrorCode(1_015_003, "存在已导出的数据,请刷新界面。!"); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/WmsStorageController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/WmsStorageController.java index 1bdc7aa1..7546b137 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/WmsStorageController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/WmsStorageController.java @@ -3,6 +3,7 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.converters.longconverter.LongStringConverter; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.chanko.yunxi.mes.framework.common.exception.ServiceException; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; @@ -16,18 +17,31 @@ import com.chanko.yunxi.mes.module.heli.service.wmsstorage.WmsStorageService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.core.io.ClassPathResource; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import reactor.util.function.Tuple2; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.net.URLEncoder; +import java.sql.Date; +import java.time.LocalDate; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -85,6 +99,118 @@ public class WmsStorageController { return success(BeanUtils.toBean(pageResult, WmsStorageRespVO.class)); } + @GetMapping("/export") + @Operation(summary = "导出新中大入/出库主 Excel(使用模板)") + @PreAuthorize("@ss.hasPermission('heli:wms-storage:export')") + @OperateLog(type = EXPORT) + @Transactional(rollbackFor = Exception.class) + public void export(@RequestParam("stockType") Integer stockType, + @RequestParam("ids") String ids, + HttpServletResponse response) throws IOException { + // 处理数据,更新导出状态 + Tuple2> objects = wmsStorageService.processWsmStorage(ids); + List list = objects.getT2(); + if (!objects.getT1()) { + // list 统计单据编号,用,分割 + String stockNoList = list.stream().map(WmsStorageDO::getStockNo).collect(Collectors.joining(",")); + throw new ServiceException(1010, "单据编号{" + stockNoList + "}存在已导出的数据,请刷新界面。"); + } + + // 判断入库还是出库 + boolean isInbound = stockType == 1; + String typeName = isInbound ? "入库" : "出库"; + + // 设置响应头 + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.setCharacterEncoding("UTF-8"); + String fileName = URLEncoder.encode("新中大" + typeName + "单数据").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xls"); + + // 加载模板文件 + String templatePath = "template/wms-storage-" + (isInbound ? "in" : "out") + ".xls"; + ClassPathResource resource = new ClassPathResource(templatePath); + if (!resource.exists()) { + throw new RuntimeException("模板文件不存在: " + templatePath); + } + + InputStream inputStream = resource.getInputStream(); + Workbook workbook = new HSSFWorkbook(new POIFSFileSystem(inputStream)); + + // 处理第一个sheet - 主表数据 + Sheet sheet0 = workbook.getSheetAt(0); + int rowIndex = 1; // 从第二行开始写入 + for (WmsStorageDO wmsStorage : list) { + Row row = sheet0.createRow(rowIndex++); + if (isInbound) { + // 入库数据 + setCellValue(row.createCell(0), wmsStorage.getStockNo()); + setCellValue(row.createCell(1), wmsStorage.getBusiType()); + setCellValue(row.createCell(2), wmsStorage.getWhName()); + setCellValue(row.createCell(3), wmsStorage.getBusiDate().toString()); + setCellValue(row.createCell(4), wmsStorage.getSupplierName()); + setCellValue(row.createCell(5), wmsStorage.getPriceType()); + setCellValue(row.createCell(6), wmsStorage.getDeptName()); + } else { + // 出库数据 + setCellValue(row.createCell(0), wmsStorage.getStockNo()); + setCellValue(row.createCell(1), wmsStorage.getWhName()); + setCellValue(row.createCell(2), wmsStorage.getBusiDate().toString()); + setCellValue(row.createCell(3), wmsStorage.getDeptName()); + setCellValue(row.createCell(4), wmsStorage.getBusiType()); + setCellValue(row.createCell(5), wmsStorage.getAuItem()); + } + } + + // 处理第二个sheet - 明细数据 + Sheet sheet1 = workbook.getSheetAt(1); + rowIndex = 1; // 从第二行开始写入 + for (WmsStorageDO wmsStorage : list) { + if (wmsStorage.getDetailList() != null) { + for (WmsStorageDetailDO detail : wmsStorage.getDetailList()) { + Row row = sheet1.createRow(rowIndex++); + setCellValue(row.createCell(0), detail.getStockNo()); + setCellValue(row.createCell(1), detail.getMatCode()); + setCellValue(row.createCell(2), detail.getRgName()); + setCellValue(row.createCell(3), detail.getStockNum()); + if (isInbound) { + setCellValue(row.createCell(4), detail.getPrice()); + } + } + } + } + + // 写入输出流 + OutputStream outputStream = response.getOutputStream(); + workbook.write(outputStream); + workbook.close(); + outputStream.flush(); + outputStream.close(); + inputStream.close(); + } + + /** + * 设置单元格值 + */ + private void setCellValue(Cell cell, Object value) { + if (value == null) { + cell.setBlank(); + return; + } + if (value instanceof String) { + cell.setCellValue((String) value); + } else if (value instanceof Number) { + cell.setCellValue(((Number) value).doubleValue()); + } else if (value instanceof Boolean) { + cell.setCellValue((Boolean) value); + } else if (value instanceof LocalDate) { + cell.setCellValue(Date.valueOf((LocalDate) value)); + } else if (value instanceof Date) { + cell.setCellValue((Date) value); + } else { + cell.setCellValue(value.toString()); + } + } + @GetMapping("/export-excel") @Operation(summary = "导出新中大入/出库主 Excel") @PreAuthorize("@ss.hasPermission('heli:wms-storage:export')") @@ -93,72 +219,66 @@ public class WmsStorageController { public void exportWmsStorageExcel(@RequestParam("stockType") Integer stockType, @RequestParam("ids") String ids, HttpServletResponse response) throws IOException { - List list = wmsStorageService.processWsmStorage(ids); + Tuple2> objects = wmsStorageService.processWsmStorage(ids); + List list = objects.getT2(); // 导出 Excel - 两个sheet - try { - // 设置响应头 - response.setContentType("application/vnd.ms-excel;charset=UTF-8"); - response.setCharacterEncoding("UTF-8"); - // 判断入库还是出库,确定文件名和VO类型 - boolean isInbound = stockType == 1; - String typeName = isInbound ? "入库" : "出库"; - String fileName = URLEncoder.encode("新中大" + typeName + "单导出").replaceAll("\\+", "%20"); - response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + // 设置响应头 + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.setCharacterEncoding("UTF-8"); - // 创建ExcelWriter - com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()) - .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) - .registerConverter(new LongStringConverter()) - .build(); + // 判断入库还是出库,确定文件名和VO类型 + boolean isInbound = stockType == 1; + String typeName = isInbound ? "入库" : "出库"; + String fileName = URLEncoder.encode("新中大" + typeName + "单导出").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); - // 写入第一个sheet - 主表数据(根据stockType选择不同的VO) - com.alibaba.excel.write.metadata.WriteSheet writeSheet1; - if (isInbound) { - // 入库:使用InExcelVO - List mainData = BeanUtils.toBean(list, WmsStorageInExcelVO.class); - writeSheet1 = EasyExcel.writerSheet(0, typeName + "表头") - .head(WmsStorageInExcelVO.class).build(); - excelWriter.write(mainData, writeSheet1); - } else { - // 出库:使用OutExcelVO - List mainData = BeanUtils.toBean(list, WmsStorageOutExcelVO.class); - writeSheet1 = EasyExcel.writerSheet(0, typeName + "表头") - .head(WmsStorageOutExcelVO.class).build(); - excelWriter.write(mainData, writeSheet1); - } + // 创建ExcelWriter + com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .registerConverter(new LongStringConverter()) + .build(); - // 写入第二个sheet - 明细数据(根据stockType选择不同的VO) - List detailList = new ArrayList<>(); - for (WmsStorageDO wmsStorage : list) { - if (wmsStorage.getDetailList() != null) { - detailList.addAll(wmsStorage.getDetailList()); - } - } - com.alibaba.excel.write.metadata.WriteSheet writeSheet2; - if (isInbound) { - // 入库明细:包含单价 - List detailData = BeanUtils.toBean(detailList, DetailInExcelVO.class); - writeSheet2 = EasyExcel.writerSheet(1, typeName + "表体") - .head(DetailInExcelVO.class).build(); - excelWriter.write(detailData, writeSheet2); - } else { - // 出库明细:不包含单价 - List detailData = BeanUtils.toBean(detailList, DetailOutExcelVO.class); - writeSheet2 = EasyExcel.writerSheet(1, typeName + "表体") - .head(DetailOutExcelVO.class).build(); - excelWriter.write(detailData, writeSheet2); - } - - - // 关闭writer - excelWriter.finish(); - } catch (Exception e) { - response.reset(); - response.setContentType("application/json;charset=UTF-8"); - response.getWriter().println("{\"code\":500,\"msg\":\"导出Excel失败: " + e.getMessage() + "\"}"); + // 写入第一个sheet - 主表数据(根据stockType选择不同的VO) + com.alibaba.excel.write.metadata.WriteSheet writeSheet1; + if (isInbound) { + // 入库:使用InExcelVO + List mainData = BeanUtils.toBean(list, WmsStorageInExcelVO.class); + writeSheet1 = EasyExcel.writerSheet(0, typeName + "表头") + .head(WmsStorageInExcelVO.class).build(); + excelWriter.write(mainData, writeSheet1); + } else { + // 出库:使用OutExcelVO + List mainData = BeanUtils.toBean(list, WmsStorageOutExcelVO.class); + writeSheet1 = EasyExcel.writerSheet(0, typeName + "表头") + .head(WmsStorageOutExcelVO.class).build(); + excelWriter.write(mainData, writeSheet1); } + + // 写入第二个sheet - 明细数据(根据stockType选择不同的VO) + List detailList = new ArrayList<>(); + for (WmsStorageDO wmsStorage : list) { + if (wmsStorage.getDetailList() != null) { + detailList.addAll(wmsStorage.getDetailList()); + } + } + com.alibaba.excel.write.metadata.WriteSheet writeSheet2; + if (isInbound) { + // 入库明细:包含单价 + List detailData = BeanUtils.toBean(detailList, DetailInExcelVO.class); + writeSheet2 = EasyExcel.writerSheet(1, typeName + "表体") + .head(DetailInExcelVO.class).build(); + excelWriter.write(detailData, writeSheet2); + } else { + // 出库明细:不包含单价 + List detailData = BeanUtils.toBean(detailList, DetailOutExcelVO.class); + writeSheet2 = EasyExcel.writerSheet(1, typeName + "表体") + .head(DetailOutExcelVO.class).build(); + excelWriter.write(detailData, writeSheet2); + } + // 关闭writer + excelWriter.finish(); } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageInExcelVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageInExcelVO.java index 9626f064..7eb87fc8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageInExcelVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageInExcelVO.java @@ -16,25 +16,25 @@ import java.time.LocalDate; @Data @ExcelIgnoreUnannotated public class WmsStorageInExcelVO { - @ExcelProperty("系统编号") - private Long id = 1L; + @ExcelProperty(value = "系统编号", index = 0) + private String stock_no; - @ExcelProperty("业务类型") + @ExcelProperty(value = "业务类型", index = 1) private String busiType; - @ExcelProperty("仓库") + @ExcelProperty(value = "仓库", index = 2) private String whName; - @ExcelProperty("业务日期") + @ExcelProperty(value = "业务日期", index = 3) private LocalDate busiDate; - @ExcelProperty("供应商名称") + @ExcelProperty(value = "供应商名称", index = 4) private String supplierName; - @ExcelProperty("价格类型") + @ExcelProperty(value = "价格类型", index = 5) private String priceType; - @ExcelProperty("部门") + @ExcelProperty(value = "部门", index = 6) private String deptName; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageOutExcelVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageOutExcelVO.java index 576f72ad..4bff1d6d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageOutExcelVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageOutExcelVO.java @@ -16,22 +16,22 @@ import java.time.LocalDate; @Data @ExcelIgnoreUnannotated public class WmsStorageOutExcelVO { - @ExcelProperty("系统编号") - private Long id = 1L; + @ExcelProperty("系统编号(*)") + private String stock_no; - @ExcelProperty("仓库") + @ExcelProperty("仓库(*)") private String whName; - @ExcelProperty("业务日期") + @ExcelProperty("业务日期(*)") private LocalDate busiDate; - @ExcelProperty("部门") + @ExcelProperty("部门(*)") private String deptName; - @ExcelProperty("业务类型") + @ExcelProperty("业务类型(*)") private String busiType; - @ExcelProperty("辅助项") + @ExcelProperty("辅助项(*)") private String auItem; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/DetailInExcelVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/DetailInExcelVO.java index 63abe02d..25ac4d65 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/DetailInExcelVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/DetailInExcelVO.java @@ -11,19 +11,19 @@ import java.math.BigDecimal; @Data @ExcelIgnoreUnannotated public class DetailInExcelVO { - @ExcelProperty("系统编号") - private Long id = 1L; + @ExcelProperty(value = "系统编号(*)", index = 0) + private String stock_no; - @ExcelProperty("物料编码") + @ExcelProperty(value = "物料编码(*)", index = 1) private String matCode; - @ExcelProperty("库位") + @ExcelProperty(value = "库位(*)", index = 2) private String rgName; - @ExcelProperty("数量") + @ExcelProperty(value = "数量(*)", index = 3) private BigDecimal stockNum; - @ExcelProperty("单价") + @ExcelProperty(value = "单价(*)", index = 4) private BigDecimal price; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/DetailOutExcelVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/DetailOutExcelVO.java index bd03ad28..5a3ba87b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/DetailOutExcelVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/DetailOutExcelVO.java @@ -12,16 +12,16 @@ import java.math.BigDecimal; @ExcelIgnoreUnannotated public class DetailOutExcelVO { - @ExcelProperty("系统编号") - private Long id = 1L; + @ExcelProperty("系统编号(*)") + private String stock_no; - @ExcelProperty("物料编码") + @ExcelProperty("物料编码(*)") private String matCode; - @ExcelProperty("库位") + @ExcelProperty("库位(*)") private String rgName; - @ExcelProperty("数量") + @ExcelProperty("数量(*)") private BigDecimal stockNum; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/wmsstorage/WmsStorageService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/wmsstorage/WmsStorageService.java index 7be9a933..3e142c1a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/wmsstorage/WmsStorageService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/wmsstorage/WmsStorageService.java @@ -4,6 +4,7 @@ import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage.vo.WmsStoragePageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage.vo.WmsStorageSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstorage.WmsStorageDO; +import reactor.util.function.Tuple2; import javax.validation.Valid; import java.util.List; @@ -53,5 +54,7 @@ public interface WmsStorageService { */ PageResult getWmsStoragePage(WmsStoragePageReqVO pageReqVO); - List processWsmStorage(String ids); + // 返回两个结果 + Tuple2> processWsmStorage(String ids); + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/wmsstorage/WmsStorageServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/wmsstorage/WmsStorageServiceImpl.java index 903590e9..fa673b9b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/wmsstorage/WmsStorageServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/wmsstorage/WmsStorageServiceImpl.java @@ -11,21 +11,23 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstoragedetail.WmsStora import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.wmsstorage.WmsStorageMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.wmsstoragedetail.WmsStorageDetailMapper; -import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; -import com.chanko.yunxi.mes.module.system.service.user.AdminUserService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import reactor.util.function.Tuple2; +import reactor.util.function.Tuples; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.WMS_STORAGE_IS_EXPORT; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.WMS_STORAGE_NOT_EXISTS; /** * 新中大入/出库主 Service 实现类 @@ -41,11 +43,8 @@ public class WmsStorageServiceImpl implements WmsStorageService { private final WmsStorageDetailMapper wmsStorageDetailMapper; - private final AdminUserService userService; - private final StorageLogMapper storageLogMapper; - @Override public Long createWmsStorage(WmsStorageSaveReqVO createReqVO) { // 插入 @@ -65,14 +64,13 @@ public class WmsStorageServiceImpl implements WmsStorageService { } @Override - @Transactional(rollbackFor = Exception.class) public void deleteWmsStorage(Long id) { // 校验存在 validateWmsStorageExists(id); // 校验状态 WmsStorageDO wmsStorage = wmsStorageMapper.selectById(id); - if (wmsStorage.getStatus() == 1) { - throw exception(WMS_STORAGE_NOT_EXPORT); + if (wmsStorage.getStatus() == 2) { + throw exception(WMS_STORAGE_IS_EXPORT); } // 删除 wmsStorageMapper.deleteById(id); @@ -80,7 +78,7 @@ public class WmsStorageServiceImpl implements WmsStorageService { // storageLogService StorageLogDO storageLogDO = storageLogMapper.selectOne(StorageLogDO::getXzdStockId, wmsStorage.getId()); - if (storageLogDO != null){ + if (storageLogDO != null) { storageLogDO.setIsExport(0); storageLogDO.setUpdater(""); storageLogDO.setUpdateTime(LocalDateTime.now()); @@ -99,18 +97,13 @@ public class WmsStorageServiceImpl implements WmsStorageService { @Override public WmsStorageDO getWmsStorage(Long id) { - WmsStorageDO wmsStorage = wmsStorageMapper.selectById(id); - if (wmsStorage != null) { + WmsStorageDO wmsStorageDO = wmsStorageMapper.selectById(id); + if (wmsStorageDO != null) { List detailList = wmsStorageDetailMapper.selectList( - WmsStorageDetailDO::getXzdWmsId, wmsStorage.getId()); - wmsStorage.setDetailList(detailList); - // 查询用户信息 - AdminUserDO user = userService.getUser(wmsStorage.getExportEmp()); - if (user != null){ - wmsStorage.setExportEmpName(user.getNickname()); - } + WmsStorageDetailDO::getXzdWmsId, wmsStorageDO.getId()); + wmsStorageDO.setDetailList(detailList); } - return wmsStorage; + return wmsStorageDO; } @Override @@ -120,17 +113,23 @@ public class WmsStorageServiceImpl implements WmsStorageService { @Transactional @Override - public List processWsmStorage(String ids) { + public Tuple2> processWsmStorage(String ids) { // 分割并转换为 Long 类型 List idList = Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList()); if (!idList.isEmpty()) { // 根据ID查询出所有数据,批量更新导出人,导出状态 List wmsStorageDOS = wmsStorageMapper.selectList(WmsStorageDO::getId, idList); - // 如果状态为已导出,则remove + List errWmsStorageDOS = new ArrayList<>(); for (WmsStorageDO wmsStorageDO : wmsStorageDOS) { if (wmsStorageDO.getStatus() == 2) { - throw exception(WMS_STORAGE_IS_EXPORT); + errWmsStorageDOS.add(wmsStorageDO); } + } + if (!errWmsStorageDOS.isEmpty()) { + return Tuples.of(false, errWmsStorageDOS); + } + // 如果状态为已导出,则remove + for (WmsStorageDO wmsStorageDO : wmsStorageDOS) { // 获取当前用户信息 Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); wmsStorageDO.setExportEmp(loginUserId); @@ -140,8 +139,8 @@ public class WmsStorageServiceImpl implements WmsStorageService { List wmsStorageDetailDOS = wmsStorageDetailMapper.selectList(WmsStorageDetailDO::getXzdWmsId, wmsStorageDO.getId()); wmsStorageDO.setDetailList(wmsStorageDetailDOS); } - return wmsStorageDOS; + return Tuples.of(true, wmsStorageDOS); } - return Collections.emptyList(); + return Tuples.of(false, Collections.emptyList()); } } diff --git a/mes-server/src/main/resources/template/wms-storage-in.xls b/mes-server/src/main/resources/template/wms-storage-in.xls new file mode 100644 index 0000000000000000000000000000000000000000..871afc3398fcf16c46dac73573e2400857f00fe7 GIT binary patch literal 25600 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 literal 0 HcmV?d00001 diff --git a/mes-server/src/main/resources/template/wms-storage-out.xls b/mes-server/src/main/resources/template/wms-storage-out.xls new file mode 100644 index 0000000000000000000000000000000000000000..d5ac77aa21326db701df9419076c89325f813a2d GIT binary patch literal 19968 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 { // 导出新中大入/出库主 Excel export const exportWmsStorage = async (stockType: Number, ids: String) => { return await request.download({ - url: `/heli/wms-storage/export-excel`, + url: `/heli/wms-storage/export`, params: { stockType, ids } }) } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/wmsstorage/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/wmsstorage/index.vue index 4b52efeb..9959572a 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/wmsstorage/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/wmsstorage/index.vue @@ -18,16 +18,6 @@ class="!w-260px" /> - - - - - + + + + + + 搜索 重置 @@ -61,13 +62,9 @@ + v-loading="loading" :data="list" class="hl-table" + ref="multipleTableRef" + @selection-change="handleSelectionChange" :row-class-name="tableRowClassName"> - - + + - + - - + + - - - + + + - +