diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index f1843fd9..6a938a7a 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java @@ -999,6 +999,9 @@ public interface ErrorCodeConstants { //报废出库记录ErrorCode ErrorCode SCRAP_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_151_000, "报废出库记录主不存在"); ErrorCode SCRAP_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_151_001, "报废出库记录子不存在"); + + + //盘点计划ErrorCode ErrorCode COUNT_PLAN_MAIN_NOT_EXISTS = new ErrorCode(1_000_152_000, "盘点计划主不存在"); ErrorCode COUNT_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_000_152_001, "盘点计划子不存在"); @@ -1067,6 +1070,13 @@ public interface ErrorCodeConstants { ErrorCode SWITCH_NOT_EXISTS = new ErrorCode(1_000_166_000, "单据开关不存在"); //企业ErrorCode ErrorCode ENTERPRISE_NOT_EXISTS = new ErrorCode(1_000_167_000, "企业不存在"); + + // 器具绑定记录 + ErrorCode CONTAINER_BIND_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_168_000, "器具绑定记录主不存在"); + ErrorCode CONTAINER_BIND_RECORD_MAIN_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_168_001, "器具绑定导出主列表不存在"); + ErrorCode CONTAINER_BIND_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_168_002, "器具绑定记录子不存在"); + ErrorCode CONTAINER_BIND_RECORD_DETAIL_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_168_003, "器具绑定导出子列表不存在"); + //UOM ErrorCode ErrorCode BATCH_EXCEPTION = new ErrorCode(1_000_400_000, "批次问题:【{}】"); ErrorCode UOM_EXCEPTION = new ErrorCode(1_000_401_000, "单位问题:【{}】"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/ContainerBindRecordDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/ContainerBindRecordDetailController.java new file mode 100644 index 00000000..0d6efa12 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/ContainerBindRecordDetailController.java @@ -0,0 +1,135 @@ +package com.win.module.wms.controller.containerbindrecord; + +import com.win.framework.common.pojo.CommonResult; +import com.win.framework.common.pojo.PageResult; +import com.win.framework.excel.core.util.ExcelUtils; +import com.win.framework.operatelog.core.annotations.OperateLog; +import com.win.module.wms.controller.containerbindrecord.vo.*; +import com.win.module.wms.convert.containerbindrecord.ContainerBindRecordDetailConvert; +import com.win.module.wms.dal.dataobject.containerbindrecord.ContainerBindRecordDetailDO; +import com.win.module.wms.service.containerbindrecord.ContainerBindRecordDetailService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.*; + +import static com.win.framework.common.pojo.CommonResult.success; +import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Tag(name = "管理后台 - 器具绑定记录子") +@RestController +@RequestMapping("/wms/container-bind-record-detail") +@Validated +public class ContainerBindRecordDetailController { + + @Resource + private ContainerBindRecordDetailService containerBindRecordDetailService; + + @PostMapping("/create") + @Operation(summary = "创建器具绑定记录子") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-detail:create')") + public CommonResult createContainerBindRecordDetail(@Valid @RequestBody ContainerBindRecordDetailCreateReqVO createReqVO) { + return success(containerBindRecordDetailService.createContainerBindRecordDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新器具绑定记录子") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-detail:update')") + public CommonResult updateContainerBindRecordDetail(@Valid @RequestBody ContainerBindRecordDetailUpdateReqVO updateReqVO) { + int result = containerBindRecordDetailService.updateContainerBindRecordDetail(updateReqVO); + return success(result > 0); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除器具绑定记录子") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-detail:delete')") + public CommonResult deleteContainerBindRecordDetail(@RequestParam("id") Long id) { + int result = containerBindRecordDetailService.deleteContainerBindRecordDetail(id); + return success(result > 0); + } + + @GetMapping("/get") + @Operation(summary = "获得器具绑定记录子") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-detail:query')") + public CommonResult getContainerBindRecordDetail(@RequestParam("id") Long id) { + ContainerBindRecordDetailDO containerBindRecordDetail = containerBindRecordDetailService.getContainerBindRecordDetail(id); + return success(ContainerBindRecordDetailConvert.INSTANCE.convert(containerBindRecordDetail)); + } + + @GetMapping("/list") + @Operation(summary = "获得器具绑定记录子列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-detail:query')") + public CommonResult> getContainerBindRecordDetailList(@RequestParam("ids") Collection ids) { + List list = containerBindRecordDetailService.getContainerBindRecordDetailList(ids); + return success(ContainerBindRecordDetailConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得器具绑定记录子分页") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-detail:query')") + public CommonResult> getContainerBindRecordDetailPage(@Valid ContainerBindRecordDetailPageReqVO pageVO) { + PageResult pageResult = containerBindRecordDetailService.getContainerBindRecordDetailPage(pageVO); + return success(ContainerBindRecordDetailConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出器具绑定记录子 Excel") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-detail:export')") + @OperateLog(type = EXPORT) + public void exportContainerBindRecordDetailExcel(@Valid ContainerBindRecordDetailExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = containerBindRecordDetailService.getContainerBindRecordDetailList(exportReqVO); + // 导出 Excel + List datas = ContainerBindRecordDetailConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "器具绑定记录子.xls", "数据", ContainerBindRecordDetailExcelVO.class, datas); + } + + @GetMapping("/get-import-template") + @Operation(summary = "获得导入器具绑定记录子模板") + public void importTemplate(HttpServletResponse response) throws IOException { + List list = Arrays.asList(); + // 输出 + ExcelUtils.write(response, "器具绑定记录子基本信息导入模板.xls", "器具绑定记录子基本信息列表", ContainerBindRecordDetailExcelVO.class, list); + } + + @PostMapping("/import") + @Operation(summary = "导入器具绑定记录子基本信息") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-detail:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + + List list = ExcelUtils.read(file, ContainerBindRecordDetailExcelVO.class); + List errorList = containerBindRecordDetailService.importContainerBindRecordDetailList(list, mode, updatePart); + + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("器具绑定记录子基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + returnMap.put("errorFile", url); + } + + return success(returnMap); + } +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/ContainerBindRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/ContainerBindRecordMainController.java new file mode 100644 index 00000000..aae20879 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/ContainerBindRecordMainController.java @@ -0,0 +1,135 @@ +package com.win.module.wms.controller.containerbindrecord; + +import com.win.framework.common.pojo.CommonResult; +import com.win.framework.common.pojo.PageResult; +import com.win.framework.excel.core.util.ExcelUtils; +import com.win.framework.operatelog.core.annotations.OperateLog; +import com.win.module.wms.controller.containerbindrecord.vo.*; +import com.win.module.wms.convert.containerbindrecord.ContainerBindRecordMainConvert; +import com.win.module.wms.dal.dataobject.containerbindrecord.ContainerBindRecordMainDO; +import com.win.module.wms.service.containerbindrecord.ContainerBindRecordMainService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.*; + +import static com.win.framework.common.pojo.CommonResult.success; +import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Tag(name = "管理后台 - 器具绑定记录主") +@RestController +@RequestMapping("/wms/container-bind-record-main") +@Validated +public class ContainerBindRecordMainController { + + @Resource + private ContainerBindRecordMainService containerBindRecordMainService; + + @PostMapping("/create") + @Operation(summary = "创建器具绑定记录主") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-main:create')") + public CommonResult createContainerBindRecordMain(@Valid @RequestBody ContainerBindRecordMainCreateReqVO createReqVO) { + return success(containerBindRecordMainService.createContainerBindRecordMain(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新器具绑定记录主") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-main:update')") + public CommonResult updateContainerBindRecordMain(@Valid @RequestBody ContainerBindRecordMainUpdateReqVO updateReqVO) { + int result = containerBindRecordMainService.updateContainerBindRecordMain(updateReqVO); + return success(result > 0); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除器具绑定记录主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-main:delete')") + public CommonResult deleteContainerBindRecordMain(@RequestParam("id") Long id) { + int result = containerBindRecordMainService.deleteContainerBindRecordMain(id); + return success(result > 0); + } + + @GetMapping("/get") + @Operation(summary = "获得器具绑定记录主") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-main:query')") + public CommonResult getContainerBindRecordMain(@RequestParam("id") Long id) { + ContainerBindRecordMainDO containerBindRecordMain = containerBindRecordMainService.getContainerBindRecordMain(id); + return success(ContainerBindRecordMainConvert.INSTANCE.convert(containerBindRecordMain)); + } + + @GetMapping("/list") + @Operation(summary = "获得器具绑定记录主列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-main:query')") + public CommonResult> getContainerBindRecordMainList(@RequestParam("ids") Collection ids) { + List list = containerBindRecordMainService.getContainerBindRecordMainList(ids); + return success(ContainerBindRecordMainConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得器具绑定记录主分页") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-main:query')") + public CommonResult> getContainerBindRecordMainPage(@Valid ContainerBindRecordMainPageReqVO pageVO) { + PageResult pageResult = containerBindRecordMainService.getContainerBindRecordMainPage(pageVO); + return success(ContainerBindRecordMainConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出器具绑定记录主 Excel") + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-main:export')") + @OperateLog(type = EXPORT) + public void exportContainerBindRecordMainExcel(@Valid ContainerBindRecordMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = containerBindRecordMainService.getContainerBindRecordMainList(exportReqVO); + // 导出 Excel + List datas = ContainerBindRecordMainConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "器具绑定记录主.xls", "数据", ContainerBindRecordMainExcelVO.class, datas); + } + + @GetMapping("/get-import-template") + @Operation(summary = "获得导入器具绑定记录主模板") + public void importTemplate(HttpServletResponse response) throws IOException { + List list = Arrays.asList(); + // 输出 + ExcelUtils.write(response, "器具绑定记录主基本信息导入模板.xls", "器具绑定记录主基本信息列表", ContainerBindRecordMainExcelVO.class, list); + } + + @PostMapping("/import") + @Operation(summary = "导入器具绑定记录主基本信息") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:container-bind-record-main:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + + List list = ExcelUtils.read(file, ContainerBindRecordMainExcelVO.class); + List errorList = containerBindRecordMainService.importContainerBindRecordMainList(list, mode, updatePart); + + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("器具绑定记录主基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + returnMap.put("errorFile", url); + } + + return success(returnMap); + } +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailBaseVO.java new file mode 100644 index 00000000..391fd6f9 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailBaseVO.java @@ -0,0 +1,63 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 器具绑定记录子 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class ContainerBindRecordDetailBaseVO { + + @Schema(description = "单据号") + private String number; + + @Schema(description = "主表ID", example = "3678") + private Long masterId; + + @Schema(description = "包装号") + private String packingNumber; + + @Schema(description = "器具号") + private String containerNumber; + + @Schema(description = "批次") + private String batch; + + @Schema(description = "物品代码") + private String itemCode; + + @Schema(description = "物品名称", example = "王五") + private String itemName; + + @Schema(description = "物品描述1") + private String itemDesc1; + + @Schema(description = "物品描述2") + private String itemDesc2; + + @Schema(description = "项目代码") + private String projectCode; + + @Schema(description = "数量") + private BigDecimal qty; + + @Schema(description = "计量单位") + private String uom; + + @Schema(description = "接口类型", example = "1") + private String interfaceType; + + @Schema(description = "代码") + private String code; + + @Schema(description = "地点ID", example = "地点ID") + private String siteId; + + @Schema(description = "备注", example = "备注") + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailCreateReqVO.java new file mode 100644 index 00000000..71bcf05d --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailCreateReqVO.java @@ -0,0 +1,14 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - 器具绑定记录子创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ContainerBindRecordDetailCreateReqVO extends ContainerBindRecordDetailBaseVO { + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailExcelVO.java new file mode 100644 index 00000000..7eb910b1 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailExcelVO.java @@ -0,0 +1,71 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 器具绑定记录子 Excel VO + * + * @author 超级管理员 + */ +@Data +public class ContainerBindRecordDetailExcelVO { + + @ExcelProperty("id") + private Long id; + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("主表ID") + private Long masterId; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty("计量单位") + private String uom; + + @ExcelProperty("接口类型") + private String interfaceType; + + @ExcelProperty("代码") + private String code; + + @ExcelProperty("地点ID") + private String siteId; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @ExcelProperty("备注") + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailExportReqVO.java new file mode 100644 index 00000000..47721e21 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailExportReqVO.java @@ -0,0 +1,22 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 器具绑定记录子 Excel 导出 Request VO,参数和 ContainerBindRecordDetailPageReqVO 是一致的") +@Data +public class ContainerBindRecordDetailExportReqVO { + + @Schema(description = "单据号") + private String number; + + @Schema(description = "包装号") + private String packingNumber; + + @Schema(description = "器具号") + private String containerNumber; + + @Schema(description = "备注", example = "你说的对") + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailPageReqVO.java new file mode 100644 index 00000000..e01cbf38 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailPageReqVO.java @@ -0,0 +1,27 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import com.win.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - 器具绑定记录子分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ContainerBindRecordDetailPageReqVO extends PageParam { + + @Schema(description = "单据号") + private String number; + + @Schema(description = "包装号") + private String packingNumber; + + @Schema(description = "器具号") + private String containerNumber; + + @Schema(description = "备注", example = "你说的对") + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailRespVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailRespVO.java new file mode 100644 index 00000000..e73f58e7 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailRespVO.java @@ -0,0 +1,22 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 器具绑定记录子 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ContainerBindRecordDetailRespVO extends ContainerBindRecordDetailBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29158") + private Long id; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailUpdateReqVO.java new file mode 100644 index 00000000..eb2c75d3 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordDetailUpdateReqVO.java @@ -0,0 +1,20 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 器具绑定记录子更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ContainerBindRecordDetailUpdateReqVO extends ContainerBindRecordDetailBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29158") + @NotNull(message = "id不能为空") + private Long id; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainBaseVO.java new file mode 100644 index 00000000..cd99ea2f --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainBaseVO.java @@ -0,0 +1,84 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 器具绑定记录主 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class ContainerBindRecordMainBaseVO { + + @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "单据号不能为空") + private String number; + + @Schema(description = "申请单号") + private String requestNumber; + + @Schema(description = "器具号") + private String containerNumber; + + @Schema(description = "从库位代码") + private String fromLocationCode; + + @Schema(description = "绑定类型", example = "1") + private String bindType; + + @Schema(description = "执行时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime executeTime; + + @Schema(description = "生效日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime activeDate; + + @Schema(description = "是否可用") + private String available; + + @Schema(description = "申请时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime requestTime; + + @Schema(description = "截止时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime dueTime; + + @Schema(description = "业务类型", example = "1") + private String businessType; + + @Schema(description = "接口类型", example = "2") + private String interfaceType; + + @Schema(description = "出库事务类型", example = "2") + private String outTransactionType; + + @Schema(description = "入库事务类型", example = "1") + private String inTransactionType; + + @Schema(description = "扩展属性") + private String extraProperties; + + @Schema(description = "地点ID", example = "12246") + private String siteId; + + @Schema(description = "代码") + private String code; + + @Schema(description = "用户组") + private String userGroupCode; + + @Schema(description = "部门") + private String departmentCode; + + @Schema(description = "备注", example = "你说的对") + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainCreateReqVO.java new file mode 100644 index 00000000..176bc4b6 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainCreateReqVO.java @@ -0,0 +1,14 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - 器具绑定记录主创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ContainerBindRecordMainCreateReqVO extends ContainerBindRecordMainBaseVO { + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainExcelVO.java new file mode 100644 index 00000000..8f8ee028 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainExcelVO.java @@ -0,0 +1,97 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 器具绑定记录主 Excel VO + * + * @author 超级管理员 + */ +@Data +public class ContainerBindRecordMainExcelVO { + + @ExcelProperty("id") + private Long id; + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("申请单号") + private String requestNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("绑定类型") + private String bindType; + + @ExcelProperty("执行时间") + private LocalDateTime executeTime; + + @ExcelProperty("生效日期") + private LocalDateTime activeDate; + + @ExcelProperty("是否可用") + private String available; + + @ExcelProperty("申请时间") + private LocalDateTime requestTime; + + @ExcelProperty("截止时间") + private LocalDateTime dueTime; + + @ExcelProperty("业务类型") + private String businessType; + + @ExcelProperty("接口类型") + private String interfaceType; + + @ExcelProperty("出库事务类型") + private String outTransactionType; + + @ExcelProperty("入库事务类型") + private String inTransactionType; + + @ExcelProperty("扩展属性") + private String extraProperties; + + @ExcelProperty("地点ID") + private String siteId; + + @ExcelProperty("代码") + private String code; + + @ExcelProperty("用户组") + private String userGroupCode; + + @ExcelProperty("部门") + private String departmentCode; + + @ExcelProperty("租户编号") + private Long tenantId; + + @ExcelProperty("创建者Id") + private String creator; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @ExcelProperty("最后更新者用户名") + private String updater; + + @ExcelProperty("最后更新时间") + private LocalDateTime updateTime; + + @ExcelProperty("是否删除") + private Boolean deleted; + + @ExcelProperty("备注") + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainExportReqVO.java new file mode 100644 index 00000000..756d7168 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainExportReqVO.java @@ -0,0 +1,19 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 器具绑定记录主 Excel 导出 Request VO,参数和 ContainerBindRecordMainPageReqVO 是一致的") +@Data +public class ContainerBindRecordMainExportReqVO { + + @Schema(description = "单据号") + private String number; + + @Schema(description = "器具号") + private String containerNumber; + + @Schema(description = "备注", example = "你说的对") + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainPageReqVO.java new file mode 100644 index 00000000..57f876ef --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainPageReqVO.java @@ -0,0 +1,24 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import com.win.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - 器具绑定记录主分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ContainerBindRecordMainPageReqVO extends PageParam { + + @Schema(description = "单据号") + private String number; + + @Schema(description = "器具号") + private String containerNumber; + + @Schema(description = "备注", example = "你说的对") + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainRespVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainRespVO.java new file mode 100644 index 00000000..089f1208 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainRespVO.java @@ -0,0 +1,37 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 器具绑定记录主 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ContainerBindRecordMainRespVO extends ContainerBindRecordMainBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25654") + private Long id; + + @Schema(description = "租户编号", example = "622") + private Long tenantId; + + @Schema(description = "创建者Id") + private String creator; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "最后更新者用户名") + private String updater; + + @Schema(description = "最后更新时间") + private LocalDateTime updateTime; + + @Schema(description = "是否删除") + private Boolean deleted; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainUpdateReqVO.java new file mode 100644 index 00000000..f3ab46a4 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/containerbindrecord/vo/ContainerBindRecordMainUpdateReqVO.java @@ -0,0 +1,20 @@ +package com.win.module.wms.controller.containerbindrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 器具绑定记录主更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ContainerBindRecordMainUpdateReqVO extends ContainerBindRecordMainBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25654") + @NotNull(message = "id不能为空") + private Long id; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/RuleController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/RuleController.java index 3bf3efa3..058282c4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/RuleController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/RuleController.java @@ -3,19 +3,13 @@ package com.win.module.wms.controller.rule; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; -import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO; -import com.win.module.wms.controller.itembasic.vo.ItembasicExportReqVO; import com.win.module.wms.controller.rule.vo.*; -import com.win.module.wms.convert.itembasic.ItembasicConvert; import com.win.module.wms.convert.rule.RuleConvert; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.rule.RuleDO; -import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.rule.RuleService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -27,7 +21,6 @@ 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.util.HashMap; import java.util.List; @@ -80,6 +73,7 @@ public class RuleController { RuleDO rule = ruleService.getRule(id); return success(RuleConvert.INSTANCE.convert(rule)); } + @PostMapping("/senior") @Operation(summary = "高级搜索获得物品基本信息分页") @PreAuthorize("@ss.hasPermission('wms:rule:query')") @@ -109,17 +103,26 @@ public class RuleController { List> list = ruleService.getPrecisionStrategyByItemCodes(reqVO); return success(list); } + + @PostMapping("/getPrecisionStrategy") + @Operation(summary = "根据零件号和库位号查询管理精度策略") + @PreAuthorize("@ss.hasPermission('wms:rule:query')") + public CommonResult getPrecisionStrategy(@Valid @RequestBody List reqVO2List) { + List> list = ruleService.getPrecisionStrategy(reqVO2List); + return success(list); + } + @GetMapping("/export-excel") @Operation(summary = "导出规则配置 Excel") @PreAuthorize("@ss.hasPermission('wms:rule:export')") @OperateLog(type = EXPORT) - public void exportRuleExcel(@Valid RuleExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { + public void exportRuleExcel(@Valid RuleExportReqVO exportReqVO, HttpServletResponse response) throws IOException { List list =ruleService.getRuleList(exportReqVO); Map mapDropDown = new HashMap<>(); List resultList = this.getExcelVo(list, mapDropDown); ExcelUtils.write(response, "物品基本信息.xlsx", "数据", RuleExcelVO.class, resultList, mapDropDown); } + @PostMapping("/export-excel-senior") @Operation(summary = "导出规则配置 Excel") @PreAuthorize("@ss.hasPermission('wms:rule:export')") @@ -130,8 +133,8 @@ public class RuleController { List resultList = this.getExcelVo(list, mapDropDown); ExcelUtils.write(response, "物品基本信息.xlsx", "数据", RuleExcelVO.class, resultList, mapDropDown); } - private List getExcelVo(List list, Map mapDropDown) { + private List getExcelVo(List list, Map mapDropDown) { // 导出 Excel List resultList = RuleConvert.INSTANCE.convertList02(list); for(RuleExcelVO vo : resultList) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/vo/PrecisionStrategyReqVO2.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/vo/PrecisionStrategyReqVO2.java new file mode 100644 index 00000000..fc7a27b1 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/vo/PrecisionStrategyReqVO2.java @@ -0,0 +1,19 @@ +package com.win.module.wms.controller.rule.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Schema(description = "APP管理精度策略") +@Data +public class PrecisionStrategyReqVO2 { + + @Schema(description = "物品代码") + @NotBlank(message = "物品代码不能为空") + private String itemCode; + + @Schema(description = "库位代码") + @NotBlank(message = "库位代码不能为空") + private String locationCode; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/containerbindrecord/ContainerBindRecordDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/containerbindrecord/ContainerBindRecordDetailConvert.java new file mode 100644 index 00000000..0d2bde6b --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/containerbindrecord/ContainerBindRecordDetailConvert.java @@ -0,0 +1,38 @@ +package com.win.module.wms.convert.containerbindrecord; + + +import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordDetailCreateReqVO; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordDetailExcelVO; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordDetailRespVO; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.containerbindrecord.ContainerBindRecordDetailDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + + +/** + * 器具绑定记录子 Convert + * + * @author 超级管理员 + */ +@Mapper +public interface ContainerBindRecordDetailConvert { + + ContainerBindRecordDetailConvert INSTANCE = Mappers.getMapper(ContainerBindRecordDetailConvert.class); + + ContainerBindRecordDetailDO convert(ContainerBindRecordDetailCreateReqVO bean); + + ContainerBindRecordDetailDO convert(ContainerBindRecordDetailUpdateReqVO bean); + + ContainerBindRecordDetailRespVO convert(ContainerBindRecordDetailDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/containerbindrecord/ContainerBindRecordMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/containerbindrecord/ContainerBindRecordMainConvert.java new file mode 100644 index 00000000..f4307683 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/containerbindrecord/ContainerBindRecordMainConvert.java @@ -0,0 +1,37 @@ +package com.win.module.wms.convert.containerbindrecord; + +import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordMainCreateReqVO; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordMainExcelVO; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordMainRespVO; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.containerbindrecord.ContainerBindRecordMainDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + + +/** + * 器具绑定记录主 Convert + * + * @author 超级管理员 + */ +@Mapper +public interface ContainerBindRecordMainConvert { + + ContainerBindRecordMainConvert INSTANCE = Mappers.getMapper(ContainerBindRecordMainConvert.class); + + ContainerBindRecordMainDO convert(ContainerBindRecordMainCreateReqVO bean); + + ContainerBindRecordMainDO convert(ContainerBindRecordMainUpdateReqVO bean); + + ContainerBindRecordMainRespVO convert(ContainerBindRecordMainDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/containerbindrecord/ContainerBindRecordDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/containerbindrecord/ContainerBindRecordDetailDO.java new file mode 100644 index 00000000..40321238 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/containerbindrecord/ContainerBindRecordDetailDO.java @@ -0,0 +1,94 @@ +package com.win.module.wms.dal.dataobject.containerbindrecord; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.win.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; + +import java.math.BigDecimal; + +/** + * 器具绑定记录子 DO + * + * @author 超级管理员 + */ +@TableName("record_container_bind_detail") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ContainerBindRecordDetailDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 单据号 + */ + private String number; + /** + * 主表ID + */ + private Long masterId; + /** + * 包装号 + */ + private String packingNumber; + /** + * 器具号 + */ + private String containerNumber; + /** + * 批次 + */ + private String batch; + /** + * 物品代码 + */ + private String itemCode; + /** + * 物品名称 + */ + private String itemName; + /** + * 物品描述1 + */ + private String itemDesc1; + /** + * 物品描述2 + */ + private String itemDesc2; + /** + * 项目代码 + */ + private String projectCode; + /** + * 数量 + */ + private BigDecimal qty; + /** + * 计量单位 + */ + private String uom; + /** + * 接口类型 + */ + private String interfaceType; + /** + * 代码 + */ + private String code; + /** + * 地点ID + */ + private String siteId; + /** + * 备注 + */ + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/containerbindrecord/ContainerBindRecordMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/containerbindrecord/ContainerBindRecordMainDO.java new file mode 100644 index 00000000..82b05b72 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/containerbindrecord/ContainerBindRecordMainDO.java @@ -0,0 +1,110 @@ +package com.win.module.wms.dal.dataobject.containerbindrecord; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.win.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; + +import java.time.LocalDateTime; + +/** + * 器具绑定记录主 DO + * + * @author 超级管理员 + */ +@TableName("record_container_bind_main") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ContainerBindRecordMainDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 单据号 + */ + private String number; + /** + * 申请单号 + */ + private String requestNumber; + /** + * 器具号 + */ + private String containerNumber; + /** + * 从库位代码 + */ + private String fromLocationCode; + /** + * 绑定类型 + */ + private String bindType; + /** + * 执行时间 + */ + private LocalDateTime executeTime; + /** + * 生效日期 + */ + private LocalDateTime activeDate; + /** + * 是否可用 + */ + private String available; + /** + * 申请时间 + */ + private LocalDateTime requestTime; + /** + * 截止时间 + */ + private LocalDateTime dueTime; + /** + * 业务类型 + */ + private String businessType; + /** + * 接口类型 + */ + private String interfaceType; + /** + * 出库事务类型 + */ + private String outTransactionType; + /** + * 入库事务类型 + */ + private String inTransactionType; + /** + * 扩展属性 + */ + private String extraProperties; + /** + * 地点ID + */ + private String siteId; + /** + * 代码 + */ + private String code; + /** + * 用户组 + */ + private String userGroupCode; + /** + * 部门 + */ + private String departmentCode; + /** + * 备注 + */ + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/containerbindrecord/ContainerBindRecordDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/containerbindrecord/ContainerBindRecordDetailMapper.java new file mode 100644 index 00000000..55c036e4 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/containerbindrecord/ContainerBindRecordDetailMapper.java @@ -0,0 +1,39 @@ +package com.win.module.wms.dal.mysql.containerbindrecord; + +import com.win.framework.common.pojo.PageResult; +import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordDetailExportReqVO; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordDetailPageReqVO; +import com.win.module.wms.dal.dataobject.containerbindrecord.ContainerBindRecordDetailDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 器具绑定记录子 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface ContainerBindRecordDetailMapper extends BaseMapperX { + + default PageResult selectPage(ContainerBindRecordDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ContainerBindRecordDetailDO::getNumber, reqVO.getNumber()) + .eqIfPresent(ContainerBindRecordDetailDO::getPackingNumber, reqVO.getPackingNumber()) + .eqIfPresent(ContainerBindRecordDetailDO::getContainerNumber, reqVO.getContainerNumber()) + .eqIfPresent(ContainerBindRecordDetailDO::getRemark, reqVO.getRemark()) + .orderByDesc(ContainerBindRecordDetailDO::getId)); + } + + default List selectList(ContainerBindRecordDetailExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ContainerBindRecordDetailDO::getNumber, reqVO.getNumber()) + .eqIfPresent(ContainerBindRecordDetailDO::getPackingNumber, reqVO.getPackingNumber()) + .eqIfPresent(ContainerBindRecordDetailDO::getContainerNumber, reqVO.getContainerNumber()) + .eqIfPresent(ContainerBindRecordDetailDO::getRemark, reqVO.getRemark()) + .orderByDesc(ContainerBindRecordDetailDO::getId)); + } + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/containerbindrecord/ContainerBindRecordMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/containerbindrecord/ContainerBindRecordMainMapper.java new file mode 100644 index 00000000..012e63c1 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/containerbindrecord/ContainerBindRecordMainMapper.java @@ -0,0 +1,37 @@ +package com.win.module.wms.dal.mysql.containerbindrecord; + +import com.win.framework.common.pojo.PageResult; +import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordMainExportReqVO; +import com.win.module.wms.controller.containerbindrecord.vo.ContainerBindRecordMainPageReqVO; +import com.win.module.wms.dal.dataobject.containerbindrecord.ContainerBindRecordMainDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 器具绑定记录主 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface ContainerBindRecordMainMapper extends BaseMapperX { + + default PageResult selectPage(ContainerBindRecordMainPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ContainerBindRecordMainDO::getNumber, reqVO.getNumber()) + .eqIfPresent(ContainerBindRecordMainDO::getContainerNumber, reqVO.getContainerNumber()) + .eqIfPresent(ContainerBindRecordMainDO::getRemark, reqVO.getRemark()) + .orderByDesc(ContainerBindRecordMainDO::getId)); + } + + default List selectList(ContainerBindRecordMainExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ContainerBindRecordMainDO::getNumber, reqVO.getNumber()) + .eqIfPresent(ContainerBindRecordMainDO::getContainerNumber, reqVO.getContainerNumber()) + .eqIfPresent(ContainerBindRecordMainDO::getRemark, reqVO.getRemark()) + .orderByDesc(ContainerBindRecordMainDO::getId)); + } + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordDetailService.java new file mode 100644 index 00000000..fba3ef72 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordDetailService.java @@ -0,0 +1,81 @@ +package com.win.module.wms.service.containerbindrecord; + +import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.containerbindrecord.vo.*; +import com.win.module.wms.dal.dataobject.containerbindrecord.ContainerBindRecordDetailDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; + +/** + * 器具绑定记录子 Service 接口 + * + * @author 超级管理员 + */ +public interface ContainerBindRecordDetailService { + + /** + * 创建器具绑定记录子 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createContainerBindRecordDetail(@Valid ContainerBindRecordDetailCreateReqVO createReqVO); + + /** + * 更新器具绑定记录子 + * + * @param updateReqVO 更新信息 + */ + Integer updateContainerBindRecordDetail(@Valid ContainerBindRecordDetailUpdateReqVO updateReqVO); + + /** + * 删除器具绑定记录子 + * + * @param id 编号 + */ + Integer deleteContainerBindRecordDetail(Long id); + + /** + * 获得器具绑定记录子 + * + * @param id 编号 + * @return 器具绑定记录子 + */ + ContainerBindRecordDetailDO getContainerBindRecordDetail(Long id); + + /** + * 获得器具绑定记录子列表 + * + * @param ids 编号 + * @return 器具绑定记录子列表 + */ + List getContainerBindRecordDetailList(Collection ids); + + /** + * 获得器具绑定记录子分页 + * + * @param pageReqVO 分页查询 + * @return 器具绑定记录子分页 + */ + PageResult getContainerBindRecordDetailPage(ContainerBindRecordDetailPageReqVO pageReqVO); + + /** + * 获得器具绑定记录子列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 器具绑定记录子列表 + */ + List getContainerBindRecordDetailList(ContainerBindRecordDetailExportReqVO exportReqVO); + + /** + * 导入器具绑定记录子主信息 + * + * @param datas 导入器具绑定记录子主信息列表 + * @param mode 导入模式1更新2追加3覆盖 + * @param updatePart 是否支持更新 + * @return 导入结果 + */ + public List importContainerBindRecordDetailList(List datas, Integer mode, boolean updatePart); +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordDetailServiceImpl.java new file mode 100644 index 00000000..92eb0f54 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordDetailServiceImpl.java @@ -0,0 +1,109 @@ +package com.win.module.wms.service.containerbindrecord; + +import cn.hutool.core.collection.CollUtil; +import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.containerbindrecord.vo.*; +import com.win.module.wms.convert.containerbindrecord.ContainerBindRecordDetailConvert; +import com.win.module.wms.dal.dataobject.containerbindrecord.ContainerBindRecordDetailDO; +import com.win.module.wms.dal.mysql.containerbindrecord.ContainerBindRecordDetailMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.module.wms.enums.ErrorCodeConstants.CONTAINER_BIND_RECORD_DETAIL_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.CONTAINER_BIND_RECORD_DETAIL_NOT_EXISTS; + +/** + * 器具绑定记录子 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class ContainerBindRecordDetailServiceImpl implements ContainerBindRecordDetailService { + + @Resource + private ContainerBindRecordDetailMapper containerBindRecordDetailMapper; + + @Override + public Long createContainerBindRecordDetail(ContainerBindRecordDetailCreateReqVO createReqVO) { + // 插入 + ContainerBindRecordDetailDO containerBindRecordDetail = ContainerBindRecordDetailConvert.INSTANCE.convert(createReqVO); + containerBindRecordDetailMapper.insert(containerBindRecordDetail); + // 返回 + return containerBindRecordDetail.getId(); + } + + @Override + public Integer updateContainerBindRecordDetail(ContainerBindRecordDetailUpdateReqVO updateReqVO) { + // 校验存在 + validateContainerBindRecordDetailExists(updateReqVO.getId()); + // 更新 + ContainerBindRecordDetailDO updateObj = ContainerBindRecordDetailConvert.INSTANCE.convert(updateReqVO); + return containerBindRecordDetailMapper.updateById(updateObj); + } + + @Override + public Integer deleteContainerBindRecordDetail(Long id) { + // 校验存在 + validateContainerBindRecordDetailExists(id); + // 删除 + return containerBindRecordDetailMapper.deleteById(id); + } + + private void validateContainerBindRecordDetailExists(Long id) { + if (containerBindRecordDetailMapper.selectById(id) == null) { + throw exception(CONTAINER_BIND_RECORD_DETAIL_NOT_EXISTS); + } + } + + @Override + public ContainerBindRecordDetailDO getContainerBindRecordDetail(Long id) { + return containerBindRecordDetailMapper.selectById(id); + } + + @Override + public List getContainerBindRecordDetailList(Collection ids) { + return containerBindRecordDetailMapper.selectBatchIds(ids); + } + + @Override + public PageResult getContainerBindRecordDetailPage(ContainerBindRecordDetailPageReqVO pageReqVO) { + return containerBindRecordDetailMapper.selectPage(pageReqVO); + } + + @Override + public List getContainerBindRecordDetailList(ContainerBindRecordDetailExportReqVO exportReqVO) { + return containerBindRecordDetailMapper.selectList(exportReqVO); + } + + @Override + public List importContainerBindRecordDetailList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(CONTAINER_BIND_RECORD_DETAIL_IMPORT_LIST_IS_EMPTY); + } + + List errorList = new ArrayList<>(); +// datas.forEach(item -> { +// if(errorList == null){ +// // 判断如果不存在,在进行插入 +// ContainerBindRecordDetailDO obj = containerBindRecordDetailMapper.selectByCode(item.getCode()); +// if (obj == null&& mode != 3) { +// containerBindRecordDetailMapper.insert(ContainerBindRecordDetailConvert.INSTANCE.convert(item)); +// } +// else if (obj != null && mode != 2) {// 如果存在,判断是否允许更新 +// ContainerBindRecordDetailDO containerBindRecordDetailDO = ContainerBindRecordDetailConvert.INSTANCE.convert(item); +// containerBindRecordDetailDO.setId(obj.getId()); +// containerBindRecordDetailMapper.updateById(obj); +// } +// } +// }); + + return errorList; + } +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordMainService.java new file mode 100644 index 00000000..6e1a61da --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordMainService.java @@ -0,0 +1,81 @@ +package com.win.module.wms.service.containerbindrecord; + +import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.containerbindrecord.vo.*; +import com.win.module.wms.dal.dataobject.containerbindrecord.ContainerBindRecordMainDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; + +/** + * 器具绑定记录主 Service 接口 + * + * @author 超级管理员 + */ +public interface ContainerBindRecordMainService { + + /** + * 创建器具绑定记录主 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createContainerBindRecordMain(@Valid ContainerBindRecordMainCreateReqVO createReqVO); + + /** + * 更新器具绑定记录主 + * + * @param updateReqVO 更新信息 + */ + Integer updateContainerBindRecordMain(@Valid ContainerBindRecordMainUpdateReqVO updateReqVO); + + /** + * 删除器具绑定记录主 + * + * @param id 编号 + */ + Integer deleteContainerBindRecordMain(Long id); + + /** + * 获得器具绑定记录主 + * + * @param id 编号 + * @return 器具绑定记录主 + */ + ContainerBindRecordMainDO getContainerBindRecordMain(Long id); + + /** + * 获得器具绑定记录主列表 + * + * @param ids 编号 + * @return 器具绑定记录主列表 + */ + List getContainerBindRecordMainList(Collection ids); + + /** + * 获得器具绑定记录主分页 + * + * @param pageReqVO 分页查询 + * @return 器具绑定记录主分页 + */ + PageResult getContainerBindRecordMainPage(ContainerBindRecordMainPageReqVO pageReqVO); + + /** + * 获得器具绑定记录主列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 器具绑定记录主列表 + */ + List getContainerBindRecordMainList(ContainerBindRecordMainExportReqVO exportReqVO); + + /** + * 导入器具绑定记录主主信息 + * + * @param datas 导入器具绑定记录主主信息列表 + * @param mode 导入模式1更新2追加3覆盖 + * @param updatePart 是否支持更新 + * @return 导入结果 + */ + List importContainerBindRecordMainList(List datas, Integer mode, boolean updatePart); +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordMainServiceImpl.java new file mode 100644 index 00000000..d323015b --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/containerbindrecord/ContainerBindRecordMainServiceImpl.java @@ -0,0 +1,109 @@ +package com.win.module.wms.service.containerbindrecord; + +import cn.hutool.core.collection.CollUtil; +import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.containerbindrecord.vo.*; +import com.win.module.wms.convert.containerbindrecord.ContainerBindRecordMainConvert; +import com.win.module.wms.dal.dataobject.containerbindrecord.ContainerBindRecordMainDO; +import com.win.module.wms.dal.mysql.containerbindrecord.ContainerBindRecordMainMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.module.wms.enums.ErrorCodeConstants.CONTAINER_BIND_RECORD_MAIN_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.CONTAINER_BIND_RECORD_MAIN_NOT_EXISTS; + +/** + * 器具绑定记录主 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class ContainerBindRecordMainServiceImpl implements ContainerBindRecordMainService { + + @Resource + private ContainerBindRecordMainMapper containerBindRecordMainMapper; + + @Override + public Long createContainerBindRecordMain(ContainerBindRecordMainCreateReqVO createReqVO) { + // 插入 + ContainerBindRecordMainDO containerBindRecordMain = ContainerBindRecordMainConvert.INSTANCE.convert(createReqVO); + containerBindRecordMainMapper.insert(containerBindRecordMain); + // 返回 + return containerBindRecordMain.getId(); + } + + @Override + public Integer updateContainerBindRecordMain(ContainerBindRecordMainUpdateReqVO updateReqVO) { + // 校验存在 + validateContainerBindRecordMainExists(updateReqVO.getId()); + // 更新 + ContainerBindRecordMainDO updateObj = ContainerBindRecordMainConvert.INSTANCE.convert(updateReqVO); + return containerBindRecordMainMapper.updateById(updateObj); + } + + @Override + public Integer deleteContainerBindRecordMain(Long id) { + // 校验存在 + validateContainerBindRecordMainExists(id); + // 删除 + return containerBindRecordMainMapper.deleteById(id); + } + + private void validateContainerBindRecordMainExists(Long id) { + if (containerBindRecordMainMapper.selectById(id) == null) { + throw exception(CONTAINER_BIND_RECORD_MAIN_NOT_EXISTS); + } + } + + @Override + public ContainerBindRecordMainDO getContainerBindRecordMain(Long id) { + return containerBindRecordMainMapper.selectById(id); + } + + @Override + public List getContainerBindRecordMainList(Collection ids) { + return containerBindRecordMainMapper.selectBatchIds(ids); + } + + @Override + public PageResult getContainerBindRecordMainPage(ContainerBindRecordMainPageReqVO pageReqVO) { + return containerBindRecordMainMapper.selectPage(pageReqVO); + } + + @Override + public List getContainerBindRecordMainList(ContainerBindRecordMainExportReqVO exportReqVO) { + return containerBindRecordMainMapper.selectList(exportReqVO); + } + + @Override + public List importContainerBindRecordMainList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(CONTAINER_BIND_RECORD_MAIN_IMPORT_LIST_IS_EMPTY); + } + + List errorList = new ArrayList<>(); +// datas.forEach(item -> { +// if(errorList == null){ +// // 判断如果不存在,在进行插入 +// ContainerBindRecordMainDO obj = containerBindRecordMainMapper.selectByCode(item.getCode()); +// if (obj == null&& mode != 3) { +// containerBindRecordMainMapper.insert(ContainerBindRecordMainConvert.INSTANCE.convert(item)); +// } +// else if (obj != null && mode != 2) {// 如果存在,判断是否允许更新 +// ContainerBindRecordMainDO containerBindRecordMainDO = ContainerBindRecordMainConvert.INSTANCE.convert(item); +// containerBindRecordMainDO.setId(obj.getId()); +// containerBindRecordMainMapper.updateById(obj); +// } +// } +// }); + + return errorList; + } +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainServiceImpl.java index 070340de..120ec098 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainServiceImpl.java @@ -251,7 +251,7 @@ public class ProductdismantleRequestMainServiceImpl implements ProductdismantleR // 校验--工位基础信息 if(StringUtils.isNotEmpty(detailDo.getWorkStationCode())){ WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode()); - detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); + detailDo.setFromLocationCode(workstationDO.getFgLocationCode()); } // 校验--库存余额 TB——>TB1 validateBalance(detailDo,mainDO); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java index eb69ebfa..a17bf363 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java @@ -133,11 +133,12 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque private TrendsApi trendsApi; @Override + @Transactional public Long createProductputawayRequestMain(ProductputawayRequestMainCreateReqVO createReqVO) { ProductputawayRequestMainDO productputawayRequestMainDO = validatorToCreate(createReqVO); //调用自动执行方法 if(RequestStatusEnum.HANDLING.getCode().equals(productputawayRequestMainDO.getStatus())) { - + this.generateJob(productputawayRequestMainDO, productputawayRequestDetailMapper.selectList(productputawayRequestMainDO.getId())); } trendsApi.createTrends(productputawayRequestMainDO.getId(), "ProductputawayRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE); return productputawayRequestMainDO.getId(); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java index a215a7ab..49abd357 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.web.core.util.WebFrameworkUtils; import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.serialnumber.SerialNumberApi; @@ -11,6 +12,9 @@ import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.issueJob.vo.IssueJobDetailUpdateReqVO; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailCreateReqVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailCreateReqVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; import com.win.module.wms.controller.productreceiptJob.vo.*; import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.convert.productreceiptJob.ProductreceiptJobMainConvert; @@ -46,6 +50,7 @@ import com.win.module.wms.dal.mysql.productreceiptRecord.BackflushRecordDetailbM import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordDetailMapper; import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordMainMapper; import com.win.module.wms.enums.job.JobStatusState; +import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.backflushRequest.BackflushRequestDetailbService; import com.win.module.wms.service.balance.BalanceService; import com.win.module.wms.service.businesstype.BusinesstypeService; @@ -55,6 +60,7 @@ import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.offlinesettlementRecord.OfflinesettlementRecordMainService; import com.win.module.wms.service.production.ProductionMainService; +import com.win.module.wms.service.productputawayRequest.ProductputawayRequestMainService; import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestDetailService; import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestMainService; import com.win.module.wms.service.recordsetting.RecordsettingService; @@ -87,6 +93,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainService { + @Resource + private ProductputawayRequestMainService productputawayRequestMainService; @Resource private OfflinesettlementRecordDetailMapper offlinesettlementRecordDetailMapper; @Resource @@ -399,12 +407,32 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe // 根据单据开关判断是否创建 制品上架申请 SwitchDO switchDO = switchService.selectSwitchExist("CreateProductputawayRequestAfterProductreceiptRecordCreated"); if (switchDO.getEffectiveSetValue().equals("TRUE")) { - // TODO: 创建 制品上架申请 - + generateProductputawayRequest(productreceiptRecordMainDO, productreceiptRecordDetailDOList); } return number; } + /** + * 创建 制品上架申请 + * @param productreceiptRecordMainDO + * @param productreceiptRecordDetailDOList + */ + private void generateProductputawayRequest(ProductreceiptRecordMainDO productreceiptRecordMainDO, List productreceiptRecordDetailDOList) { + ProductputawayRequestMainCreateReqVO productputawayRequestMainCreateReqVO = new ProductputawayRequestMainCreateReqVO(); + productputawayRequestMainCreateReqVO.setStatus(RequestStatusEnum.NEW.getCode()); + productputawayRequestMainCreateReqVO.setDepartmentCode(String.valueOf(userApi.getUser(WebFrameworkUtils.getLoginUserId()).getDeptId())); + List subList = new ArrayList<>(); + productreceiptRecordDetailDOList.forEach(itemDetailDO -> { + ProductputawayRequestDetailCreateReqVO productputawayRequestDetailCreateReqVO = new ProductputawayRequestDetailCreateReqVO(); + productputawayRequestDetailCreateReqVO.setItemCode(itemDetailDO.getItemCode()); + productputawayRequestDetailCreateReqVO.setQty(itemDetailDO.getQty()); + productputawayRequestDetailCreateReqVO.setInventoryStatus(itemDetailDO.getInventoryStatus()); + subList.add(productputawayRequestDetailCreateReqVO); + }); + productputawayRequestMainCreateReqVO.setSubList(subList); + productputawayRequestMainService.createProductputawayRequestMain(productputawayRequestMainCreateReqVO); + } + /** * 创建 回冲记录 * @param productreceiptRecordMainDO @@ -437,6 +465,7 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe WorkstationDO workstationDO = workstationService.selectWorkstationExist(productreceiptRecordDetailDO.getWorkStationCode(),productreceiptRecordMainDO.getWorkshopCode(),productreceiptRecordDetailDO.getProductionlineCode()); backflushRecordDetailbDO.setFromLocationCode(workstationDO.getRawLocationCode()); // 根据 from_location_code 查询库存余额 +// TODO: 如果按批次 查询批次获取库存余额 排序批次 如果第一条批次不够数量 需要扣除第二条余额 库存事务出的动作要存2条 List inventoryStatus = new ArrayList(); inventoryStatus.add("OK"); List balanceDOList = balanceService.selectNumber(backflushRequestDetailbDO.getItemCode(),inventoryStatus,workstationDO.getRawLocationCode()); @@ -445,6 +474,9 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe backflushRecordDetailbDO.setInventoryStatus("OK"); backflushRecordDetailbDO.setFromAreaCode(balanceDOList.get(0).getAreaCode()); backflushRecordDetailbDO.setFromLocationGroupCode(balanceDOList.get(0).getLocationGroupCode()); + // 消耗数量 = 成品数量 * bom数量 + BigDecimal qty = productreceiptRecordDetailDO.getQty().multiply(backflushRecordDetailbDO.getQty()); + backflushRecordDetailbDO.setQty(qty); backflushRecordDetailbDOList.add(backflushRecordDetailbDO); //添加库存事务list // 出动作 @@ -465,6 +497,7 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe transactionCreateReqVO.setAmount(BigDecimal.ZERO); transactionCreateReqVO.setWarehouseCode(""); transactionCreateReqVO.setLocationCode(backflushRecordDetailbDO.getFromLocationCode()); + transactionCreateReqVO.setQty(qty); transactionCreateReqVOList.add(transactionCreateReqVO); // 判断 物品 是否为 下线结算物品 创建 下线结算记录 if (itembasicService.isOfflines(backflushRecordDetailbDO.getItemCode())) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java index aa8f2963..93ae05ac 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java @@ -210,4 +210,11 @@ public interface RuleService { */ List> getPrecisionStrategyByItemCodes(PrecisionStrategyReqVO reqVO); + /** + * 获取根据物品代码以及库位代码管理精度策略 + * + * @param reqVO2List + * @return + */ + List> getPrecisionStrategy(List reqVO2List); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java index f233c3df..b2cf71bd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java @@ -513,6 +513,20 @@ public class RuleServiceImpl implements RuleService { return list; } + @Override + public List> getPrecisionStrategy(List reqVO2List) { + List> list = new ArrayList<>(); + for (PrecisionStrategyReqVO2 reqVO2 : reqVO2List) { + HashMap map = new HashMap<>(); + RuleRespVO RespVO = management(null, null, reqVO2.getItemCode(), reqVO2.getLocationCode(), null, null); + JSONObject entries = JSONUtil.parseObj(RespVO.getConfiguration()); + map.put("ManagementPrecision", entries.get("ManagementPrecision")); + map.put("itemCode", reqVO2.getItemCode()); + list.add(map); + } + return list; + } + /** * 循环校验参数 * diff --git a/win-module-wms/win-module-wms-biz/src/main/resources/mapper/containerbindrecord/ContainerBindRecordDetailMapper.xml b/win-module-wms/win-module-wms-biz/src/main/resources/mapper/containerbindrecord/ContainerBindRecordDetailMapper.xml new file mode 100644 index 00000000..06b3007e --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/resources/mapper/containerbindrecord/ContainerBindRecordDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/win-module-wms/win-module-wms-biz/src/main/resources/mapper/containerbindrecord/ContainerBindRecordMainMapper.xml b/win-module-wms/win-module-wms-biz/src/main/resources/mapper/containerbindrecord/ContainerBindRecordMainMapper.xml new file mode 100644 index 00000000..623d3fbb --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/resources/mapper/containerbindrecord/ContainerBindRecordMainMapper.xml @@ -0,0 +1,12 @@ + + + + + + +