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 0be8de08..9f7f9e51 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 @@ -182,4 +182,9 @@ public interface ErrorCodeConstants { ErrorCode MAT_CAT_CODE_DISABLED = new ErrorCode(1_014_003, "该物料大类没有维护物料大类编码,请维护!"); 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, "当前数据不能删除!"); + + } 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 new file mode 100644 index 00000000..1bdc7aa1 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/WmsStorageController.java @@ -0,0 +1,164 @@ +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.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage.vo.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.wmsstoragedetail.vo.DetailInExcelVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.wmsstoragedetail.vo.DetailOutExcelVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstorage.WmsStorageDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstoragedetail.WmsStorageDetailDO; +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.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; + +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Tag(name = "管理后台 - 新中大入/出库主") +@RestController +@RequestMapping("/heli/wms-storage") +@Validated +public class WmsStorageController { + + @Resource + private WmsStorageService wmsStorageService; + + @Resource + private com.chanko.yunxi.mes.module.heli.dal.mysql.wmsstoragedetail.WmsStorageDetailMapper wmsStorageDetailMapper; + + @PostMapping("/create") + @Operation(summary = "创建新中大入/出库主") + @PreAuthorize("@ss.hasPermission('heli:wms-storage:create')") + public CommonResult createWmsStorage(@Valid @RequestBody WmsStorageSaveReqVO createReqVO) { + return success(wmsStorageService.createWmsStorage(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新新中大入/出库主") + @PreAuthorize("@ss.hasPermission('heli:wms-storage:update')") + public CommonResult updateWmsStorage(@Valid @RequestBody WmsStorageSaveReqVO updateReqVO) { + wmsStorageService.updateWmsStorage(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除新中大入/出库主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:wms-storage:delete')") + public CommonResult deleteWmsStorage(@RequestParam("id") Long id) { + wmsStorageService.deleteWmsStorage(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得新中大入/出库主") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:wms-storage:query')") + public CommonResult getWmsStorage(@RequestParam("id") Long id) { + WmsStorageDO wmsStorage = wmsStorageService.getWmsStorage(id); + return success(BeanUtils.toBean(wmsStorage, WmsStorageRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得新中大入/出库主分页") + @PreAuthorize("@ss.hasPermission('heli:wms-storage:query')") + public CommonResult> getWmsStoragePage(@Valid WmsStoragePageReqVO pageReqVO) { + PageResult pageResult = wmsStorageService.getWmsStoragePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, WmsStorageRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出新中大入/出库主 Excel") + @PreAuthorize("@ss.hasPermission('heli:wms-storage:export')") + @OperateLog(type = EXPORT) + @Transactional(rollbackFor = Exception.class) + public void exportWmsStorageExcel(@RequestParam("stockType") Integer stockType, + @RequestParam("ids") String ids, + HttpServletResponse response) throws IOException { + List list = wmsStorageService.processWsmStorage(ids); + + // 导出 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"); + + // 创建ExcelWriter + com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .registerConverter(new LongStringConverter()) + .build(); + + // 写入第一个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(); + } catch (Exception e) { + response.reset(); + response.setContentType("application/json;charset=UTF-8"); + response.getWriter().println("{\"code\":500,\"msg\":\"导出Excel失败: " + e.getMessage() + "\"}"); + } + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageInDetailExcelVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageInDetailExcelVO.java new file mode 100644 index 00000000..303d216a --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageInDetailExcelVO.java @@ -0,0 +1,32 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage.vo; + + +import com.alibaba.excel.annotation.ExcelProperty; + +import java.time.LocalDate; + +/** + * @author: zhoupeng + * @date: 2026/3/30 + */ +public class WmsStorageInDetailExcelVO { + @ExcelProperty("系统编号") + private Long id = 1L; + + @ExcelProperty("仓库") + private String whName; + + @ExcelProperty("业务日期") + private LocalDate busiDate; + + @ExcelProperty("部门") + private String deptName; + + @ExcelProperty("业务类型") + private String busiType; + + @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/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 new file mode 100644 index 00000000..a752106a --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageInExcelVO.java @@ -0,0 +1,41 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage.vo; + + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; + +/** + * @author: zhoupeng + * @date: 2026/3/30 + */ +@Schema(description = "管理后台 - 新中大入出库单子 Response VO") +@Data +@ExcelIgnoreUnannotated +public class WmsStorageInExcelVO { + @ExcelProperty("系统编号") + private Long systemID = 1L; + + @ExcelProperty("业务类型") + private String busiType; + + @ExcelProperty("仓库") + private String whName; + + @ExcelProperty("业务日期") + private LocalDate busiDate; + + @ExcelProperty("供应商名称") + private String supplierName; + + @ExcelProperty("价格类型") + private String priceType; + + @ExcelProperty("部门") + 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 new file mode 100644 index 00000000..13af615f --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageOutExcelVO.java @@ -0,0 +1,38 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage.vo; + + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; + +/** + * @author: zhoupeng + * @date: 2026/3/30 + */ +@Schema(description = "管理后台 - 新中大入出库单子 Response VO") +@Data +@ExcelIgnoreUnannotated +public class WmsStorageOutExcelVO { + @ExcelProperty("系统编号") + private Long systemID = 1L; + + @ExcelProperty("仓库") + private String whName; + + @ExcelProperty("业务日期") + private LocalDate busiDate; + + @ExcelProperty("部门") + private String deptName; + + @ExcelProperty("业务类型") + private String busiType; + + @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/wmsstorage/vo/WmsStoragePageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStoragePageReqVO.java new file mode 100644 index 00000000..69d94d4d --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStoragePageReqVO.java @@ -0,0 +1,33 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage.vo; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; + +@Schema(description = "管理后台 - 新中大入/出库主分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class WmsStoragePageReqVO extends PageParam { + + @Schema(description = "业务类型", example = "1") + private String busiType; + + @Schema(description = "业务日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDate[] busiDate; + + @Schema(description = "状态:1 未导出;2 已导出", example = "2") + private Integer status; + + @Schema(description = "单据类型:1为入库,2为出库", example = "1") + private Integer stockType; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageRespVO.java new file mode 100644 index 00000000..3b22f084 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageRespVO.java @@ -0,0 +1,91 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.chanko.yunxi.mes.module.heli.controller.admin.wmsstoragedetail.vo.WmsStorageDetailRespVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 新中大入/出库主 Response VO") +@Data +@ExcelIgnoreUnannotated +public class WmsStorageRespVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30772") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "入/出库单号") + @ExcelProperty("单据编号") + private String stockNo; + + @Schema(description = "业务类型", example = "1") + @ExcelProperty("业务类型") + private String busiType; + + @Schema(description = "仓库", example = "赵六") + @ExcelProperty("仓库") + private String whName; + + @Schema(description = "业务日期") + @ExcelProperty("业务日期") + private LocalDate busiDate; + + @Schema(description = "供应商名称", example = "张三") + @ExcelProperty("供应商名称") + private String supplierName; + + @Schema(description = "价格类型", example = "1") + @ExcelProperty("价格类型") + private String priceType; + + @Schema(description = "部门", example = "张三") + @ExcelProperty("部门") + private String deptName; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String description; + + @Schema(description = "状态:1 未导出;2 已导出", example = "2") + @ExcelProperty("单据状态") + private Integer status; + + @Schema(description = "单据类型:1为入库,2为出库", example = "1") + @ExcelProperty("单据类型") + private Integer stockType; + + @Schema(description = "辅助项") + @ExcelProperty("辅助项") + private String auItem; + + @Schema(description = "发票编码") + @ExcelProperty("发票编码") + private String incoiceCode; + + @Schema(description = "生成人,对应员工表中的 Id") + @ExcelProperty("生成人,对应员工表中的 Id") + private String stockEmp; + + @Schema(description = "生成时间") + @ExcelProperty("生成时间") + private LocalDateTime stockTime; + + @Schema(description = "导出人,对应员工表中的 Id") + @ExcelProperty("导出人,对应员工表中的 Id") + private Long exportEmp; + + private String exportEmpName; + + @Schema(description = "导出时间") + @ExcelProperty("导出时间") + private LocalDateTime exprotTime; + + @TableField(exist = false) + private List detailList; +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageSaveReqVO.java new file mode 100644 index 00000000..41936a74 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstorage/vo/WmsStorageSaveReqVO.java @@ -0,0 +1,64 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 新中大入/出库主新增/修改 Request VO") +@Data +public class WmsStorageSaveReqVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30772") + private Long id; + + @Schema(description = "入/出库单号") + private String stockNo; + + @Schema(description = "业务类型", example = "1") + private String busiType; + + @Schema(description = "仓库", example = "赵六") + private String whName; + + @Schema(description = "业务日期") + private LocalDate busiDate; + + @Schema(description = "供应商名称", example = "张三") + private String supplierName; + + @Schema(description = "价格类型", example = "1") + private String priceType; + + @Schema(description = "部门", example = "张三") + private String deptName; + + @Schema(description = "备注", example = "随便") + private String description; + + @Schema(description = "状态:1 未导出;2 已导出", example = "2") + private Boolean status; + + @Schema(description = "单据类型:1为入库,2为出库", example = "1") + private Boolean stockType; + + @Schema(description = "辅助项") + private String auItem; + + @Schema(description = "发票编码") + private String incoiceCode; + + @Schema(description = "生成人,对应员工表中的 Id") + private String stockEmp; + + @Schema(description = "生成时间") + private LocalDateTime stockTime; + + @Schema(description = "导出人,对应员工表中的 Id") + private String exportEmp; + + @Schema(description = "导出时间") + private LocalDateTime exprotTime; + +} 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 new file mode 100644 index 00000000..00ac76f6 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/DetailInExcelVO.java @@ -0,0 +1,29 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstoragedetail.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 新中大入出库单子 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DetailInExcelVO { + @ExcelProperty("系统编号") + private Long systemID = 1L; + + @ExcelProperty("物料编码") + private String matCode; + + @ExcelProperty("库位") + private String rgName; + + @ExcelProperty("数量") + private BigDecimal stockNum; + + @ExcelProperty("单价") + 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 new file mode 100644 index 00000000..adf7a0cf --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/DetailOutExcelVO.java @@ -0,0 +1,28 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstoragedetail.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 新中大入出库单子 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DetailOutExcelVO { + + @ExcelProperty("系统编号") + private Long systemID = 1L; + + @ExcelProperty("物料编码") + private String matCode; + + @ExcelProperty("库位") + private String rgName; + + @ExcelProperty("数量") + private BigDecimal stockNum; + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/WmsStorageDetailPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/WmsStorageDetailPageReqVO.java new file mode 100644 index 00000000..5bc15211 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/WmsStorageDetailPageReqVO.java @@ -0,0 +1,44 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstoragedetail.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 新中大入出库单子分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class WmsStorageDetailPageReqVO extends PageParam { + + @Schema(description = "新中大入出单主表", example = "13239") + private Long xzdWmsId; + + @Schema(description = "入/出库单号") + private String stockNo; + + @Schema(description = "物料编码") + private String matCode; + + @Schema(description = "库位", example = "李四") + private String rgName; + + @Schema(description = "备注", example = "你说的对") + private String description; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "数量") + private BigDecimal stockNum; + + @Schema(description = "单价", example = "32559") + 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/WmsStorageDetailRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/WmsStorageDetailRespVO.java new file mode 100644 index 00000000..c2ca3b51 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/WmsStorageDetailRespVO.java @@ -0,0 +1,53 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstoragedetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 新中大入出库单子 Response VO") +@Data +@ExcelIgnoreUnannotated +public class WmsStorageDetailRespVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "18059") + @ExcelProperty("主键id") + private Long id; + + @Schema(description = "新中大入出单主表", requiredMode = Schema.RequiredMode.REQUIRED, example = "13239") + @ExcelProperty("新中大入出单主表") + private Long xzdWmsId; + + @Schema(description = "入/出库单号") + @ExcelProperty("入/出库单号") + private String stockNo; + + @Schema(description = "物料编码") + @ExcelProperty("物料编码") + private String matCode; + + @Schema(description = "库位", example = "李四") + @ExcelProperty("库位") + private String rgName; + + @Schema(description = "备注", example = "你说的对") + @ExcelProperty("备注") + private String description; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "数量") + @ExcelProperty("数量") + private BigDecimal stockNum; + + @Schema(description = "单价", example = "32559") + @ExcelProperty("单价") + 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/WmsStorageDetailSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/WmsStorageDetailSaveReqVO.java new file mode 100644 index 00000000..eaf357a7 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/wmsstoragedetail/vo/WmsStorageDetailSaveReqVO.java @@ -0,0 +1,39 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstoragedetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 新中大入出库单子新增/修改 Request VO") +@Data +public class WmsStorageDetailSaveReqVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "18059") + private Long id; + + @Schema(description = "新中大入出单主表", requiredMode = Schema.RequiredMode.REQUIRED, example = "13239") + @NotNull(message = "新中大入出单主表不能为空") + private Long xzdWmsId; + + @Schema(description = "入/出库单号") + private String stockNo; + + @Schema(description = "物料编码") + private String matCode; + + @Schema(description = "库位", example = "李四") + private String rgName; + + @Schema(description = "备注", example = "你说的对") + private String description; + + @Schema(description = "数量") + private BigDecimal stockNum; + + @Schema(description = "单价", example = "32559") + private BigDecimal price; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelog/StorageLogDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelog/StorageLogDO.java index ca2bd3d0..bf31b95b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelog/StorageLogDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelog/StorageLogDO.java @@ -1,13 +1,15 @@ package com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import lombok.*; -import java.util.*; + import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; +import java.util.List; /** * 入/出库日志 DO @@ -95,4 +97,8 @@ public class StorageLogDO extends BaseDO { @TableField(exist = false) private List materialDOList; -} \ No newline at end of file + private Long xzdStockId; + private String xzdStockNo; + private String incoiceCode; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/wmsstorage/WmsStorageDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/wmsstorage/WmsStorageDO.java new file mode 100644 index 00000000..75fd2c52 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/wmsstorage/WmsStorageDO.java @@ -0,0 +1,108 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstorage; + +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstoragedetail.WmsStorageDetailDO; +import lombok.*; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 新中大入/出库主 DO + * + * @author 管理员 + */ +@TableName("xzd_wms_storage") +@KeySequence("xzd_wms_storage_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WmsStorageDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 入/出库单号 + */ + private String stockNo; + /** + * 业务类型 + */ + private String busiType; + /** + * 仓库 + */ + private String whName; + /** + * 业务日期 + */ + private LocalDate busiDate; + /** + * 供应商名称 + */ + private String supplierName; + /** + * 价格类型 + */ + private String priceType; + /** + * 部门 + */ + private String deptName; + /** + * 备注 + */ + private String description; + /** + * 状态:1 未导出;2 已导出 + */ + private Integer status; + /** + * 单据类型:1为入库,2为出库 + */ + private Integer stockType; + /** + * 辅助项 + */ + private String auItem; + /** + * 发票编码 + */ + private String incoiceCode; + /** + * 生成人,对应员工表中的 Id + */ + private String stockEmp; + /** + * 生成时间 + */ + private LocalDateTime stockTime; + /** + * 导出人,对应员工表中的 Id + */ + private Long exportEmp; + /** + * 导出时间 + */ + private LocalDateTime exprotTime; + + + // 明细,冗余字段 + @TableField(exist = false) + private String exportEmpName; + + @TableField(exist = false) + private List detailList; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/wmsstoragedetail/WmsStorageDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/wmsstoragedetail/WmsStorageDetailDO.java new file mode 100644 index 00000000..b9c6acf9 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/wmsstoragedetail/WmsStorageDetailDO.java @@ -0,0 +1,61 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstoragedetail; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.math.BigDecimal; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 新中大入出库单子 DO + * + * @author 管理员 + */ +@TableName("xzd_wms_storage_detail") +@KeySequence("xzd_wms_storage_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WmsStorageDetailDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 新中大入出单主表 + */ + private Long xzdWmsId; + /** + * 入/出库单号 + */ + private String stockNo; + /** + * 物料编码 + */ + private String matCode; + /** + * 库位 + */ + private String rgName; + /** + * 备注 + */ + private String description; + /** + * 数量 + */ + private BigDecimal stockNum; + /** + * 单价 + */ + private BigDecimal price; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/wmsstorage/WmsStorageMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/wmsstorage/WmsStorageMapper.java new file mode 100644 index 00000000..3319e2a5 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/wmsstorage/WmsStorageMapper.java @@ -0,0 +1,26 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.wmsstorage; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.module.heli.controller.admin.wmsstorage.vo.WmsStoragePageReqVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstorage.WmsStorageDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 新中大入/出库主 Mapper + * + * @author 管理员 + */ +@Mapper +public interface WmsStorageMapper extends BaseMapperX { + + default PageResult selectPage(WmsStoragePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(WmsStorageDO::getBusiType, reqVO.getBusiType()) + .betweenIfPresent(WmsStorageDO::getBusiDate, reqVO.getBusiDate()) + .eqIfPresent(WmsStorageDO::getStatus, reqVO.getStatus()) + .eqIfPresent(WmsStorageDO::getStockType, reqVO.getStockType()) + .orderByDesc(WmsStorageDO::getId)); + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/wmsstoragedetail/WmsStorageDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/wmsstoragedetail/WmsStorageDetailMapper.java new file mode 100644 index 00000000..9c60b91d --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/wmsstoragedetail/WmsStorageDetailMapper.java @@ -0,0 +1,31 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.wmsstoragedetail; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.module.heli.controller.admin.wmsstoragedetail.vo.WmsStorageDetailPageReqVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstoragedetail.WmsStorageDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 新中大入出库单子 Mapper + * + * @author 管理员 + */ +@Mapper +public interface WmsStorageDetailMapper extends BaseMapperX { + + default PageResult selectPage(WmsStorageDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(WmsStorageDetailDO::getXzdWmsId, reqVO.getXzdWmsId()) + .eqIfPresent(WmsStorageDetailDO::getStockNo, reqVO.getStockNo()) + .eqIfPresent(WmsStorageDetailDO::getMatCode, reqVO.getMatCode()) + .likeIfPresent(WmsStorageDetailDO::getRgName, reqVO.getRgName()) + .eqIfPresent(WmsStorageDetailDO::getDescription, reqVO.getDescription()) + .betweenIfPresent(WmsStorageDetailDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(WmsStorageDetailDO::getStockNum, reqVO.getStockNum()) + .eqIfPresent(WmsStorageDetailDO::getPrice, reqVO.getPrice()) + .orderByDesc(WmsStorageDetailDO::getId)); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/dataacquisition/DataAcquisitionServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/dataacquisition/DataAcquisitionServiceImpl.java index 2db54037..46f3c738 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/dataacquisition/DataAcquisitionServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/dataacquisition/DataAcquisitionServiceImpl.java @@ -171,9 +171,6 @@ public class DataAcquisitionServiceImpl implements DataAcquisitionService { private static String getString(String runningDuration) { // 2. 解析时间 28863H41M32S Matcher matcher = TIME_PATTERN.matcher(runningDuration); - if (!matcher.matches()) { - return runningDuration; - } int hour = Integer.parseInt(matcher.group(1)); int min = Integer.parseInt(matcher.group(2)); int sec = Integer.parseInt(matcher.group(3)); 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 new file mode 100644 index 00000000..7be9a933 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/wmsstorage/WmsStorageService.java @@ -0,0 +1,57 @@ +package com.chanko.yunxi.mes.module.heli.service.wmsstorage; + +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 javax.validation.Valid; +import java.util.List; + +/** + * 新中大入/出库主 Service 接口 + * + * @author 管理员 + */ +public interface WmsStorageService { + + /** + * 创建新中大入/出库主 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createWmsStorage(@Valid WmsStorageSaveReqVO createReqVO); + + /** + * 更新新中大入/出库主 + * + * @param updateReqVO 更新信息 + */ + void updateWmsStorage(@Valid WmsStorageSaveReqVO updateReqVO); + + /** + * 删除新中大入/出库主 + * + * @param id 编号 + */ + void deleteWmsStorage(Long id); + + /** + * 获得新中大入/出库主 + * + * @param id 编号 + * @return 新中大入/出库主 + */ + WmsStorageDO getWmsStorage(Long id); + + /** + * 获得新中大入/出库主分页 + * + * @param pageReqVO 分页查询 + * @return 新中大入/出库主分页 + */ + PageResult getWmsStoragePage(WmsStoragePageReqVO pageReqVO); + + List 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 new file mode 100644 index 00000000..903590e9 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/wmsstorage/WmsStorageServiceImpl.java @@ -0,0 +1,147 @@ +package com.chanko.yunxi.mes.module.heli.service.wmsstorage; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; +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.storagelog.StorageLogDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstorage.WmsStorageDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstoragedetail.WmsStorageDetailDO; +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 java.time.LocalDateTime; +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.*; + +/** + * 新中大入/出库主 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +@RequiredArgsConstructor +public class WmsStorageServiceImpl implements WmsStorageService { + + private final WmsStorageMapper wmsStorageMapper; + + private final WmsStorageDetailMapper wmsStorageDetailMapper; + + private final AdminUserService userService; + + private final StorageLogMapper storageLogMapper; + + + @Override + public Long createWmsStorage(WmsStorageSaveReqVO createReqVO) { + // 插入 + WmsStorageDO wmsStorage = BeanUtils.toBean(createReqVO, WmsStorageDO.class); + wmsStorageMapper.insert(wmsStorage); + // 返回 + return wmsStorage.getId(); + } + + @Override + public void updateWmsStorage(WmsStorageSaveReqVO updateReqVO) { + // 校验存在 + validateWmsStorageExists(updateReqVO.getId()); + // 更新 + WmsStorageDO updateObj = BeanUtils.toBean(updateReqVO, WmsStorageDO.class); + wmsStorageMapper.updateById(updateObj); + } + + @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); + } + // 删除 + wmsStorageMapper.deleteById(id); + wmsStorageDetailMapper.delete(WmsStorageDetailDO::getXzdWmsId, id); + + // storageLogService + StorageLogDO storageLogDO = storageLogMapper.selectOne(StorageLogDO::getXzdStockId, wmsStorage.getId()); + if (storageLogDO != null){ + storageLogDO.setIsExport(0); + storageLogDO.setUpdater(""); + storageLogDO.setUpdateTime(LocalDateTime.now()); + storageLogDO.setXzdStockId(null); + storageLogDO.setXzdStockNo(null); + storageLogDO.setIncoiceCode(null); + storageLogMapper.updateById(storageLogDO); + } + } + + private void validateWmsStorageExists(Long id) { + if (wmsStorageMapper.selectById(id) == null) { + throw exception(WMS_STORAGE_NOT_EXISTS); + } + } + + @Override + public WmsStorageDO getWmsStorage(Long id) { + WmsStorageDO wmsStorage = wmsStorageMapper.selectById(id); + if (wmsStorage != 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()); + } + } + return wmsStorage; + } + + @Override + public PageResult getWmsStoragePage(WmsStoragePageReqVO pageReqVO) { + return wmsStorageMapper.selectPage(pageReqVO); + } + + @Transactional + @Override + public List 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 + for (WmsStorageDO wmsStorageDO : wmsStorageDOS) { + if (wmsStorageDO.getStatus() == 2) { + throw exception(WMS_STORAGE_IS_EXPORT); + } + // 获取当前用户信息 + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + wmsStorageDO.setExportEmp(loginUserId); + wmsStorageDO.setExprotTime(LocalDateTime.now()); + wmsStorageDO.setStatus(2); + wmsStorageMapper.updateById(wmsStorageDO); + List wmsStorageDetailDOS = wmsStorageDetailMapper.selectList(WmsStorageDetailDO::getXzdWmsId, wmsStorageDO.getId()); + wmsStorageDO.setDetailList(wmsStorageDetailDOS); + } + return wmsStorageDOS; + } + return Collections.emptyList(); + } +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/wmsstorage/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/wmsstorage/index.ts new file mode 100644 index 00000000..a69720d3 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/wmsstorage/index.ts @@ -0,0 +1,101 @@ +import request from '@/config/axios' + +export interface WmsStorageDetailVO { + id: number + xzdWmsId: number + stockNo: string + matCode: string + rgName: string + description: string + createTime: number + stockNum: number + price: number +} + +export interface WmsStorageVO { + id: number + stockNo: string + busiType: string + whName: string + busiDate: localdate + supplierName: string + priceType: string + deptName: string + description: string + status: boolean + stockType: boolean + auItem: string + incoiceCode: string + stockEmp: string + stockTime: Date + exportEmp: string + exprotTime: Date + exportEmpName: string + detailList?: WmsStorageDetailVO[] +} + +// 查询新中大入/出库主分页 +export const getWmsStoragePage = async (params) => { + return await request.get({ url: `/heli/wms-storage/page`, params }) +} + +// 查询新中大入/出库主详情 +export const getWmsStorage = async (id: number) => { + return await request.get({ url: `/heli/wms-storage/get?id=` + id }) +} + +// 新增新中大入/出库主 +export const createWmsStorage = async (data: WmsStorageVO) => { + return await request.post({ url: `/heli/wms-storage/create`, data }) +} + +// 修改新中大入/出库主 +export const updateWmsStorage = async (data: WmsStorageVO) => { + return await request.put({ url: `/heli/wms-storage/update`, data }) +} + +// 删除新中大入/出库主 +export const deleteWmsStorage = async (id: number) => { + return await request.delete({ url: `/heli/wms-storage/delete?id=` + id }) +} + +// 导出新中大入/出库主 Excel +export const exportWmsStorage = async (stockType: Number, ids: String) => { + return await request.download({ + url: `/heli/wms-storage/export-excel`, + params: { stockType, ids } + }) +} + + +/** + * 入库库存业务类型 + */ +export const HeliStockTypeDict = [ + { label: '入库', value: 1 }, + { label: '出库', value: 2 } +] + +/** + * 单据状态 + */ +export const HeliStorageStatusDict = [ + { label: '未导出', value: 1 }, + { label: '已导出', value: 2 } +] + +/** + * 根据值获取库存业务类型标签 + */ +export const getHeliStockTypeLabel = (value: number): string => { + const item = HeliStockTypeDict.find((item) => item.value === value) + return item?.label || '' +} + +/** + * 根据值获取单据状态标签 + */ +export const getHeliStorageStatusLabel = (value: number): string => { + const item = HeliStorageStatusDict.find((item) => item.value === value) + return item?.label || '' +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/wmsstorage/WmsStorageForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/wmsstorage/WmsStorageForm.vue new file mode 100644 index 00000000..23e617ac --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/wmsstorage/WmsStorageForm.vue @@ -0,0 +1,134 @@ + + 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 new file mode 100644 index 00000000..487ba9c7 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/wmsstorage/index.vue @@ -0,0 +1,270 @@ + + +