From fc3e06863aab19ba53fb22c8946443c738fced5c Mon Sep 17 00:00:00 2001 From: zhangke Date: Tue, 30 Sep 2025 17:00:12 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E7=89=A9=E6=96=99=E6=89=93=E5=8D=B0=E7=9A=84=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=9B=202=E3=80=81=E4=BF=AE=E6=94=B9=E7=94=9F=E6=88=90?= =?UTF-8?q?=E8=AE=A2=E5=8D=95PDA=E7=A1=AE=E8=AE=A4=E5=95=86=E5=AE=B6?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E4=BB=93=E5=82=A8=E4=B8=BA?= =?UTF-8?q?null=20=E6=97=B6=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BarcodePrintingController.java | 235 ++++++++++++++++++ .../controller/InProduceOrderController.java | 65 ++--- .../admin/controller/NormalPGIController.java | 2 +- .../main/resources/template/qrcode/Inv-1.html | 61 +++++ .../main/resources/template/qrcode/Inv-2.html | 79 ++++++ .../template/库存物料打印模版.xlsx | Bin 0 -> 10681 bytes .../pojo/dto/BarcodePrintingAddDTO.java | 20 ++ .../common/pojo/qo/BarcodePrintingAddQO.java | 59 +++++ .../common/pojo/qo/BarcodePrintingEditQO.java | 49 ++++ .../common/pojo/qo/BarcodePrintingIdsQO.java | 12 + .../wms/common/pojo/qo/BarcodePrintingQO.java | 26 ++ .../qo/InProduceOrderReceiveMaterialQO.java | 1 - .../wms/common/pojo/qo/NormalReceiveQO.java | 12 + .../nflg/wms/common/pojo/qo/ReceiveQO.java | 1 + .../wms/common/pojo/vo/BarcodePrintingVO.java | 68 +++++ .../entity/WmsInventoryBarcodePrinting.java | 92 +++++++ .../WmsInventoryBarcodePrintingMapper.java | 22 ++ .../IWmsInventoryBarcodePrintingService.java | 21 ++ ...msInventoryBarcodePrintingServiceImpl.java | 28 +++ .../WmsInventoryBarcodePrintingMapper.xml | 52 ++++ .../wms/repository/CodeGeneratorTest.java | 2 +- 21 files changed, 874 insertions(+), 33 deletions(-) create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BarcodePrintingController.java create mode 100644 nflg-wms-admin/src/main/resources/template/qrcode/Inv-1.html create mode 100644 nflg-wms-admin/src/main/resources/template/qrcode/Inv-2.html create mode 100644 nflg-wms-admin/src/main/resources/template/库存物料打印模版.xlsx create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BarcodePrintingAddDTO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingAddQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingEditQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingIdsQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NormalReceiveQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BarcodePrintingVO.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryBarcodePrinting.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryBarcodePrintingMapper.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryBarcodePrintingService.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryBarcodePrintingServiceImpl.java create mode 100644 nflg-wms-repository/src/main/resources/mapper/WmsInventoryBarcodePrintingMapper.xml diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BarcodePrintingController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BarcodePrintingController.java new file mode 100644 index 00000000..6b8930fb --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BarcodePrintingController.java @@ -0,0 +1,235 @@ +package com.nflg.wms.admin.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.wms.admin.util.PdfGeneratorUtil; +import com.nflg.wms.admin.util.QRCodeUtil; +import com.nflg.wms.admin.util.ThymeleafUtil; +import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.pojo.ApiResult; +import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.dto.BarcodePrintingAddDTO; +import com.nflg.wms.common.pojo.dto.DeliverNormalOrderItemDTO; +import com.nflg.wms.common.pojo.dto.GongZhuangTaiZhangExcelCheckDTO; +import com.nflg.wms.common.pojo.qo.BarcodePrintingEditQO; +import com.nflg.wms.common.pojo.qo.BarcodePrintingIdsQO; +import com.nflg.wms.common.pojo.qo.BarcodePrintingQO; +import com.nflg.wms.common.pojo.qo.SRMOrderSearchQO; +import com.nflg.wms.common.pojo.vo.BarcodePrintingVO; +import com.nflg.wms.common.pojo.vo.SrmOrderVO; +import com.nflg.wms.common.util.DateTimeUtil; +import com.nflg.wms.common.util.EecExcelUtil; +import com.nflg.wms.common.util.VUtil; +import com.nflg.wms.repository.entity.WmsInProduceOrder; +import com.nflg.wms.repository.entity.WmsInProduceOrderItem; +import com.nflg.wms.repository.entity.WmsInventoryBarcodePrinting; +import com.nflg.wms.repository.service.IWmsInventoryBarcodePrintingService; +import com.nflg.wms.starter.BaseController; +import com.nflg.wms.starter.annotation.ApiMark; +import com.nflg.wms.starter.service.FileUploadService; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.io.ClassPathResource; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.ttzero.excel.entity.ListSheet; +import org.ttzero.excel.entity.Workbook; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.net.URL; +import java.text.DecimalFormat; +import java.time.LocalDate; +import java.util.*; + +/** + * 库存物料条码打印 + * @author nflg + */ +@Slf4j +@RestController +@RequestMapping("/barcode") +public class BarcodePrintingController extends BaseController { + @Resource + private IWmsInventoryBarcodePrintingService printingService; + + @Resource + private FileUploadService fileUploadService; + + private static final DecimalFormat DF = new DecimalFormat("0.00"); + + /** + * 列表 + */ + @PostMapping("search") + @ApiMark(moduleName = "仓储物流打印", apiName = "打印记录") + public ApiResult> search(@Valid @RequestBody BarcodePrintingQO request) { + return ApiResult.success(printingService.search(request)); + } + + /** + * 批量获取编辑内容,可多选 + */ + @PostMapping("items") + @ApiMark(moduleName = "仓储物流打印", apiName = "获取编辑记录") + public ApiResult> getItems(@Valid @RequestBody BarcodePrintingIdsQO request) { + List items = printingService.listByIds(request.getIds()); + List vos = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(items)) { + vos = Convert.toList(BarcodePrintingVO.class, items); + } + return ApiResult.success(vos); + } + + /** + * 批量删除物料 + */ + @PostMapping("delete") + @ApiMark(moduleName = "仓储物流打印", apiName = "批量删除记录") + public ApiResult deleteBarcodes(@Valid @RequestBody BarcodePrintingIdsQO request) { + if (CollectionUtil.isEmpty(request.getIds())) { + VUtil.trueThrowBusinessError(true).throwMessage("没有需要删除的数据"); + } + printingService.removeByIds(request.getIds()); + return ApiResult.success(); + } + + /** + * 保存 + */ + @PostMapping("save") + @ApiMark(moduleName = "仓储物流打印", apiName = "保存记录") + public ApiResult saveBarcodes(@Valid @RequestBody List request) { + //修改 + if (CollectionUtil.isEmpty(request)) { + VUtil.trueThrowBusinessError(true).throwMessage("没有需要保存的数据"); + } + List items = Convert.toList(WmsInventoryBarcodePrinting.class, request); + printingService.saveOrUpdateBatch(items); + return ApiResult.success(); + } + + /** + * 导入物料清单 + * @param file 文件 + */ + @Transactional + @PostMapping("import") + public ApiResult importFromExcel(@RequestParam(value = "file") MultipartFile file) throws IOException { + List data = EecExcelUtil.getExcelContext(file.getInputStream(), BarcodePrintingAddDTO.class); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(data)).throwMessage("导入文件内容为空"); +// 检查 + List codes = new ArrayList<>(); + + for (BarcodePrintingAddDTO item : data) { + StringBuilder errorBuild = new StringBuilder(); + if (StrUtil.isBlank(item.getMaterialNo())) { + errorBuild.append("物料编号必填"); + } + if (StrUtil.isBlank(item.getMaterialDes())) { + errorBuild.append("物料描述必填"); + } + if (StrUtil.isBlank(item.getUnit())) { + errorBuild.append("单位必填"); + } + if (item.getQty() == null || item.getQty().compareTo(BigDecimal.ZERO) <= 0) { + errorBuild.append("数量必填"); + } + if (item.getPackingNum() == null || item.getPackingNum().compareTo(BigDecimal.ZERO) <= 0) { + errorBuild.append("最小包装量必填"); + } + if (errorBuild.length() > 0) { + item.setError(errorBuild.toString()); + } else { + codes.add(Convert.convert(WmsInventoryBarcodePrinting.class, item)); + } + } + if (data.stream().noneMatch(it -> StrUtil.isNotBlank(it.getError())) + && CollectionUtil.isNotEmpty(codes) + ) { + printingService.saveBatch(codes); + return ApiResult.success(); + } else { + try (ByteArrayOutputStream osOut = new ByteArrayOutputStream()) { + new Workbook() + .addSheet(new ListSheet<>(data)) + .writeTo(osOut); + try (ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) { + return ApiResult.error(STATE.DataNoCheckPass, "导入文件失败", fileUploadService.upload("temp/" + DateTimeUtil.format(LocalDate.now(), "yyyyMMdd") + "/" + IdUtil.fastUUID() + ".xlsx", isIn, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")); + } + } catch (Exception e) { + return ApiResult.error(STATE.BusinessError, "保存文件出错"); + } + } + } + + private String generateQRContent(DeliverNormalOrderItemDTO order, String indexNo) { + String content = StrUtil.format("{}${}${}${}${}${}${}${}" + , order.getPrintNo(), order.getExternalOrderNo(), order.getRowNo(), order.getMaterialNo(), order.getPrintNum() + , order.getMaterialDesc(), order.getBatchNo(), Optional.ofNullable(indexNo).orElse("")); + log.debug("二维码内容:" + content); + return content; + } + + /** + * 导出物料条码pdf(整张或者一张一个) + * @param request 打印IDs + * @param type 1:逐个,2:一页 + */ + @PostMapping("exportMaterialsPdf") + public void exportMaterials(HttpServletResponse response, @Valid @RequestParam @NotNull BarcodePrintingIdsQO request, @Valid @RequestParam @NotNull Integer type) throws Exception { + List codelist = printingService.listByIds(request.getIds()); + VUtil.trueThrowBusinessError(Objects.isNull(codelist)).throwMessage("订单不存在"); + List datas = new ArrayList<>(); + // Integer i = 1; + for (WmsInventoryBarcodePrinting item : codelist) { + DeliverNormalOrderItemDTO dto = new DeliverNormalOrderItemDTO(); + dto.setMaterialNo(item.getMaterialNo()); + dto.setMaterialDesc(item.getMaterialDes()); + dto.setBatchNo(StrUtil.isBlank(item.getBatchNumber()) ? "" : item.getBatchNumber()); + dto.setExternalOrderNo(""); + dto.setRowNo(""); + if (StrUtil.isNotBlank(item.getSerialNumbers())) { + List serialNumbers = StrUtil.split(item.getSerialNumbers(), ","); + for (String serialNumber : serialNumbers) { + dto.setPrintNo(IdUtil.getSnowflakeNextIdStr()); + dto.setPrintNum("1"); + String qCode = QRCodeUtil.generateQRCodeBase64(generateQRContent(dto, serialNumber), 100, 100); + dto.setQrCode(qCode); + //i += 1; + } + } else { + Integer codeNum = item.getQty().divide(item.getPackingNum(), 0, RoundingMode.UP).intValue(); + for (int j = 0; j < codeNum; j++) { + dto.setPrintNo(IdUtil.getSnowflakeNextIdStr()); + dto.setPrintNum(item.getPackingNum().toString()); + String qCode = QRCodeUtil.generateQRCodeBase64(generateQRContent(dto, ""), 100, 100); + dto.setQrCode(qCode); + } + + } + datas.add(dto); + } + Map variables = new HashMap<>(); + variables.put("list", datas); + if (Objects.equals(type, 1)) { + String html = ThymeleafUtil.generator("/template/qrcode/", "Inv-1", ".html", variables); + URL baseUrl = new ClassPathResource("template/qrcode/").getURL(); + PdfGeneratorUtil.generatePdf("库存物料条码(逐个)", html, baseUrl.toString(), response); + } else { + String html = ThymeleafUtil.generator("/template/qrcode/", "Inv-2", ".html", variables); + URL baseUrl = new ClassPathResource("template/qrcode/").getURL(); + PdfGeneratorUtil.generatePdf("库存物料条码(整张)", html, baseUrl.toString(), response); + } + } +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java index acce04c4..2126e921 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java @@ -100,7 +100,7 @@ public class InProduceOrderController extends BaseController { * @return 订单信息 */ @GetMapping("searchFromSAP") - public ApiResult searchFromSAP(@Valid @RequestParam @NotBlank String no){ + public ApiResult searchFromSAP(@Valid @RequestParam @NotBlank String no) { return ApiResult.success(sapService.zwm00Mb007(no)); // return ApiResult.success(new ZWM00MB007DTO() // .setAufnr(RandomUtil.randomNumbers(10)) @@ -153,8 +153,8 @@ public class InProduceOrderController extends BaseController { @Transactional @PostMapping("save") public ApiResult save(@Valid @RequestBody InProduceOrderSaveQO request) { - if (Objects.isNull(request.getId())){ - WmsInProduceOrder order=new WmsInProduceOrder() + if (Objects.isNull(request.getId())) { + WmsInProduceOrder order = new WmsInProduceOrder() .setNo(serialNumberControllerService.generateSerialNumber(8)) .setOrderNo(request.getAufnr()) .setList(request.getList()) @@ -162,17 +162,17 @@ public class InProduceOrderController extends BaseController { .setCreateTime(LocalDateTime.now()); produceOrderService.save(order); request.setId(order.getId()); - }else { - WmsInProduceOrder order=produceOrderService.getById(request.getId()); + } else { + WmsInProduceOrder order = produceOrderService.getById(request.getId()); VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); - VUtil.trueThrowBusinessError(!Objects.equals(order.getState(),(short)0)) - .throwMessage("保存失败:非待收货状态"); + VUtil.trueThrowBusinessError(!Objects.equals(order.getState(), (short) 0)) + .throwMessage("保存失败:非待收货状态"); order.setUpdateBy(UserUtil.getUserName()); order.setUpdateTime(LocalDateTime.now()); produceOrderService.updateById(order); produceOrderItemService.deleteByOrderId(order.getId()); } - WmsInProduceOrderItem parent=new WmsInProduceOrderItem() + WmsInProduceOrderItem parent = new WmsInProduceOrderItem() .setOrderId(request.getId()) .setParentId(0L) .setNum(request.getNum()) @@ -184,7 +184,7 @@ public class InProduceOrderController extends BaseController { .setOrderNum(request.getPsmng()); // .setBatchNo(NoUtil.getBatchNo("")); produceOrderItemService.save(parent); - if (request.getList()){ + if (request.getList()) { List children = bomService.getChildren(request.getMatnr()); VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(children)).throwMessage("请先添加齐套信息"); produceOrderItemService.saveBatch(children.stream().map(it -> new WmsInProduceOrderItem() @@ -210,7 +210,7 @@ public class InProduceOrderController extends BaseController { * @return 搜索结果 */ @PostMapping("search") - public ApiResult> search(@Valid @RequestBody InProduceOrderSearchQO request){ + public ApiResult> search(@Valid @RequestBody InProduceOrderSearchQO request) { return ApiResult.success(produceOrderService.search(request)); } @@ -220,9 +220,9 @@ public class InProduceOrderController extends BaseController { * @return 列表 */ @GetMapping("getList") - public ApiResult getList(@Valid @RequestParam @NotNull Long id){ - List list=produceOrderItemService.getByOrderId(id); - WmsInProduceOrderItem parent=list.stream().filter(item -> Objects.equals(item.getParentId(), 0L)).findFirst().get(); + public ApiResult getList(@Valid @RequestParam @NotNull Long id) { + List list = produceOrderItemService.getByOrderId(id); + WmsInProduceOrderItem parent = list.stream().filter(item -> Objects.equals(item.getParentId(), 0L)).findFirst().get(); InProduceOrderMaterialVO vo = Convert.convert(InProduceOrderMaterialVO.class, parent); vo.setChildren(list.stream() .filter(item -> Objects.equals(item.getParentId(), parent.getId())) @@ -238,10 +238,10 @@ public class InProduceOrderController extends BaseController { */ @Transactional @GetMapping("delete") - public ApiResult delete(@Valid @RequestParam @NotNull Long id){ - WmsInProduceOrder order=produceOrderService.getById(id); + public ApiResult delete(@Valid @RequestParam @NotNull Long id) { + WmsInProduceOrder order = produceOrderService.getById(id); VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); - VUtil.trueThrowBusinessError(!Objects.equals(order.getState(),(short)0)) + VUtil.trueThrowBusinessError(!Objects.equals(order.getState(), (short) 0)) .throwMessage("删除失败:非待收货状态"); produceOrderService.removeById(id); produceOrderItemService.deleteByOrderId(id); @@ -254,7 +254,7 @@ public class InProduceOrderController extends BaseController { * @param type 1:逐个,2:一页 */ @GetMapping("exportMaterialsPdf") - public void exportMaterials(HttpServletResponse response, @Valid @RequestParam @NotNull Long id,@Valid @RequestParam @NotNull Integer type) throws Exception { + public void exportMaterials(HttpServletResponse response, @Valid @RequestParam @NotNull Long id, @Valid @RequestParam @NotNull Integer type) throws Exception { WmsInProduceOrder order = produceOrderService.getById(id); VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); List list = produceOrderItemService.getByOrderId(id); @@ -284,22 +284,22 @@ public class InProduceOrderController extends BaseController { } Map variables = new HashMap<>(); variables.put("list", datas); - if (Objects.equals(type,1)) { + if (Objects.equals(type, 1)) { String html = ThymeleafUtil.generator("/template/qrcode/", "dp-1", ".html", variables); URL baseUrl = new ClassPathResource("template/qrcode/").getURL(); PdfGeneratorUtil.generatePdf("普通物料条码(逐个)", html, baseUrl.toString(), response); - }else { + } else { String html = ThymeleafUtil.generator("/template/qrcode/", "dp-2", ".html", variables); URL baseUrl = new ClassPathResource("template/qrcode/").getURL(); PdfGeneratorUtil.generatePdf("普通物料条码(整张)", html, baseUrl.toString(), response); } } - private String generateQRContent(DeliverNormalOrderItemDTO order,String indexNo){ - String content= StrUtil.format("{}${}${}${}${}${}${}${}" - , order.getPrintNo(), order.getExternalOrderNo(),order.getRowNo(),order.getMaterialNo(),order.getPrintNum() - ,order.getMaterialDesc(),order.getBatchNo(),Optional.ofNullable(indexNo).orElse("")); - log.debug("二维码内容:"+ content); + private String generateQRContent(DeliverNormalOrderItemDTO order, String indexNo) { + String content = StrUtil.format("{}${}${}${}${}${}${}${}" + , order.getPrintNo(), order.getExternalOrderNo(), order.getRowNo(), order.getMaterialNo(), order.getPrintNum() + , order.getMaterialDesc(), order.getBatchNo(), Optional.ofNullable(indexNo).orElse("")); + log.debug("二维码内容:" + content); return content; } @@ -371,10 +371,10 @@ public class InProduceOrderController extends BaseController { */ @Transactional @PostMapping("receive") - public ApiResult receive(@Valid @RequestBody InProduceOrderReceiveQO request){ + public ApiResult receive(@Valid @RequestBody InProduceOrderReceiveQO request) { WmsInProduceOrder order = produceOrderService.getByNo(request.getNo()); VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); - VUtil.trueThrowBusinessError(!Objects.equals(order.getState(), (short)0)) + VUtil.trueThrowBusinessError(!Objects.equals(order.getState(), (short) 0)) .throwMessage("该订单非待收货状态"); List list = produceOrderItemService.getVOByOrderId(order.getId()); if (order.getList()) { @@ -392,7 +392,7 @@ public class InProduceOrderController extends BaseController { List materialNos = new ArrayList<>(); List records = new ArrayList<>(); List input1 = new ArrayList<>(); - list.forEach(it->{ + list.forEach(it -> { BigDecimal num = BigDecimal.ZERO; InProduceOrderReceiveMaterialQO materialQO = request.getItems().stream().filter(q -> StrUtil.equals(q.getMaterialNo(), it.getMaterialNo())).findFirst().orElse(null); if (Objects.isNull(materialQO)) { @@ -433,11 +433,13 @@ public class InProduceOrderController extends BaseController { materialNos.add(it.getMaterialNo()); } //是否更改了储位 - syncStorage(it, StrUtil.split(materialQO.getBinNos(), "/")); + if (Objects.isNull(materialQO.getBinNos())) { + syncStorage(it, StrUtil.split(materialQO.getBinNos(), "/")); + } } }); VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(materialNos)) - .throwMessage("以下物料的扫码数量与收货数量不一致:"+StrUtil.join(",", materialNos)); + .throwMessage("以下物料的扫码数量与收货数量不一致:" + StrUtil.join(",", materialNos)); inventoryService.in(input1.stream().map(it -> new InventoryDTO() .setMaterialNo(request.getItems().get(0).getMaterialNo()) .setNum(it.getPSMNG()) @@ -450,7 +452,7 @@ public class InProduceOrderController extends BaseController { Zwm00Mb107DTO dto = sapService.zwm00_mb107(order.getOrderNo(), UserUtil.getUserName(), input1, null); order.setMblnr(dto.getE_MBLNR()); order.setMjahr(dto.getE_MJAHR()); - order.setState((short)1); + order.setState((short) 1); order.setUpdateBy(UserUtil.getUserName()); order.setUpdateTime(LocalDateTime.now()); produceOrderService.updateById(order); @@ -458,6 +460,9 @@ public class InProduceOrderController extends BaseController { } private void syncStorage(InProduceOrderItemVO it, Collection binNos) { + if(CollectionUtil.isEmpty(binNos)) + return; + produceOrderItemService.lambdaUpdate() .set(WmsInProduceOrderItem::getBinNos, StrUtil.join(",", binNos)) .eq(WmsInProduceOrderItem::getId, it.getId()) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java index 78912074..2b8a2a59 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java @@ -942,7 +942,7 @@ public class NormalPGIController extends BaseController { */ @PostMapping("unscan/task/confirm") @ApiMark(moduleName = "送货单管理", apiName = "普通物料任务上架确认") - public ApiResult takeDeliveryConfirm(@Valid @RequestBody ReceiveQO request) { + public ApiResult takeDeliveryConfirm(@Valid @RequestBody NormalReceiveQO request) { WmsPoReceipt wmsPoReceipt = wmsPoReceiptService.getById(request.getId()); VUtil.trueThrowBusinessError(Objects.isNull(wmsPoReceipt)).throwMessage("无此任务"); VUtil.trueThrowBusinessError(!wmsPoReceipt.getSourceType().equals(1)).throwMessage("不属于无码收货的采购单"); diff --git a/nflg-wms-admin/src/main/resources/template/qrcode/Inv-1.html b/nflg-wms-admin/src/main/resources/template/qrcode/Inv-1.html new file mode 100644 index 00000000..91afae03 --- /dev/null +++ b/nflg-wms-admin/src/main/resources/template/qrcode/Inv-1.html @@ -0,0 +1,61 @@ + + + + + 普通物料标签 + + + + + + + + + +
+ +
20250227100950-0
+
+
logo
+
SAP编码:
+
名称:
+
数量:
+
批次号:
+
+ + \ No newline at end of file diff --git a/nflg-wms-admin/src/main/resources/template/qrcode/Inv-2.html b/nflg-wms-admin/src/main/resources/template/qrcode/Inv-2.html new file mode 100644 index 00000000..6822d204 --- /dev/null +++ b/nflg-wms-admin/src/main/resources/template/qrcode/Inv-2.html @@ -0,0 +1,79 @@ + + + + + 普通物料标签 + + + + +
+
+ +
+
+
+ + + + + + + + + + + + + + + + +
+ +
20250227100950-0
+
SAP编码:
名称:
数量:
批次号:
+
+
+
+ + \ No newline at end of file diff --git a/nflg-wms-admin/src/main/resources/template/库存物料打印模版.xlsx b/nflg-wms-admin/src/main/resources/template/库存物料打印模版.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..04a0051d2826dabe957f503e72a09321e2f0bd7b GIT binary patch literal 10681 zcmeHtby$?$);H2fNQ`tzmvnb`4UM#fbazU3haf4^EmG1wbT=pc(Urg+bl^yNuotTs% zWB|ww#Gho93J0PpkD#C;p`oDA|0FZAw`X*>vCd2wmhEN+1cL(((W|q~eAP_M`ND)6 zFc1hoznWM~6Mh@C{(@I9k^m>bZe^ezc*G)4fXkOl;Ks#6z3B^1aGp_%m|AIO=Y9X) zL>kH5=y9@XJe5|Cc4a8+>M?uuvAuhDj>s4s0Hz5wkHz7|nx7al`3ph6`nfr%j6&)e zI$G`!+EaSkjN<}v$1jM=>r-l+G;(l3@w>t{T+w8SCP{<^Wp~UiuwNL>M)FTRUaZx? z`}blnk#t)2CNX>ptuvLhI-r=veNkWMzGZ1D(0ILe_Ty&%_;j1nR3z3-Z@&KA$|FvR zSB%Cr+D3RCv6FFCG#A=WZ{$;#!E0)tm6&H=B{R}Fpkgk)btV+?@19Fc+^T)ff?j?? zc779i@&JFBvlyZ){4xH--`LL4^xgnI@gj;{%;*we>7{2Uf*&%K)ygQ6p021a_Pz0Af$RLU3A525&^GPwWIVi+kh{c3C*aZ|1X=#O+AM~|^_)BVFd^8hdt{PT@4(*Ez@;THJhu_D@9 zh|3)P(3}VSRn>isI~9DE#OeTi4)&FL9Jq^h3JYbC7$>UULQRd^iqZ5f`?64U^*2*X zKeUS+f&To+4kx8>_9&hx2N?E-x?*2YcNUf&p-8ZwlCX$kC+{WJyJ87h)e zQE{P!hk7^OJW%Rww|-w~s9rfpZkP;hrRGy3bPMF{Io@3#pCJEz#rLo5SI|Nb$ABP? z^*6*_oSf}!?lI4gAC>E327nF&?!@{9hGQA^co)zXtx1Ui8BMYlljUPnlrn{4*UQ7H zs{HQbYim~*&7)pSdaY7ym1`jmN3ShA^&yfF)PUUaPmG-kmU6XxQAin7Wk zVF=soSB7*5mki>gE0kPan|NaMxs-%fK{-UavnDGFRVs)fczLCHL9mI?R6y3yRAYJM z7Zr)=(|m}%s%&unCGc&RpVwMIoT~c~#k=X{?8H9yk-pv^M%DprkC9MsP{r^u22{Qi z6>NPyQcB-?>7--p7xn7+F-UX>_L)2Ou<-~UHQWY}b|47pR({J)bj!K?lw2qkPTIGEB(E_twH? z;^x#|c|e?5l&@?pkma+_TeNQ?96fPcinT}mieLq!6`MAt&uq^hpDk>0fAL~80A<;0tr zpvpyI%9npcMbo5^Yy|4q3c)D|?b)y*alvhTjM-l;}B>p-!F&P0tX{9P4@4RbGBCEjdSk0ahf$I^@L`RJ=HA@&s}? zYk|1V#q%qS)Gi1(lJ!;{rT~@3mk!-~RG)&su&tbFH&@ z}WdbX1~mcyB${A+NsD(IU(58P)jw>Ie=khbg^>&c}aRS@Aisc_f2% zhk2ywT)-r@rV+A;j&A643Y%jV>-b4*t~c1UL!G8{hDgKm!P73y&V$nJFI z6d_B2q*!GWY4RF@^0>J0F(QU>xQCFDkb8Ouy5q4 zN`1iyC@3%>Qf6tCPY5DZ7kHy4)%Yfz?acNl(1G1?Ug#zPvMh=HmT^chUF|H0D41dg zB60ngZc5ph39l4B6(*xB3Xj;fn4e^_H3H9{;-Q%ODGERpSR~BxA!xvjg0WH6~)ox z#T^Ygt?TASOinG2l2DNctL(`F!YC51FwH(nxKX8RMiyFYX@vx1VTe=2FTG(-f8NSA z-~5)}w5yYqAtQ{GEPTB+Xxu z=X-DV8&G#5S}xyjfz|oMYZp3vU&XhJ9)gBTy=^{1Cg9JF1$-^JlBpTL4Kz7<&P2&*X1F)v8?=WH7* z$dQLL_Z#&ClfLiD0pr&?^-S_T!Vth{p*{QW$M+t2E1S!;4mggq&&<&*CSQZVpL?W6 zpk)@Nqp@XgVf~ji?3MxKmttFw!XyGvDG$S!qS4ACjA}isu1o{~AD?*U9 z^Rv?Zj}eKF$}8Z;%n*aj=w(hyq`B-jCDhsJ6df8pH{Lz}QTQ~rXX>`t5QUm0{lF{M zJr&>JZNerNBKy?jdRkOA!rbeb@XpRdtQ>C4(yx^ITTM03+_E^v21F*|&zPo_4Nf== zESK%CQA&1cE4EBsUDSB+A|f*PR!YBTR{L9+uNio_4yR=+<)x10?>v3wmB$@Pxw|GS zs+-K;v|c8WN9nQg1qL;SXS;p5ROlE^TzyMjx3$KJ(rv3>P9m`guTCy0HDZmt_!j#A z+TLvc-`@YP+xwp*mito_B&2aRH?=W+5XA>wUZGsTK|!@be87E7`4`zw;-7KKzV>h| z0SBOs{8%VzwD)-@CX`QPcgvKP})PuqMN>b zye3aD@{>7`ID>2fQ3M>8d3Fqg2M<6(BEdJx^IILcO(v>&gADv6GLx{oW5Do-2NvzEaP)0emaXnin>Bs?%F(w{YIPw8q_@-{yumj)s^#!5d|{!^ho&F+ zQg&h+pEqKlR*^#rCywQPsJ?rP>JD*@(*-7+HBC`|0q#dN&+wF-t0=eCQc)m<41S+S z2*@0<#^#wUd-BoQ9f{Wp0wJokdp3m@EZ32?eI(^dI$D$!5Ao4#;ua{38_9 z=|b%sD7ycenoMX-*?9ZuPuZMPP-)>WeNl{ zrNUSU=FKKGq7sHe_v6{?K9GdbDg)rC4h3#H6DqPG!${ecBvwQS`x?*6@}}yhD%)VP&^-h> zn=z@>9&i`ikZ=AW!T#;ScAW{)QDMJo1C!AAB8v(R;&AZWYJ5VN1<@pL6R@?X@X$Q7V0I z2HN_+VSIAz9u+!aR=|oSH|6ttTW z^Gp{Ur#Ng@N$opOE3Fpl_Cc}~mdLgA4p+N2kLHx~O6EQRTC7e-;MO&?k;T?}&Xqn& z+?5;N!L`GK-woER4!B6>GZP61p5MX#J$?v&WlVGm*&s|HG2?v_4zf`=nHxEpny5NE zTG+mFx{n=f#y-fxun@u@=^YV?QaxSBK%+~@3tYk4f(dGxL)J|=z2zAn&NuH!D1O=@ zkpUaJC=T?-ORTe7^`>GgP6gb zMpG7#k}cN`)7mKdh|sbL9(N>@9*pSE{^o`7a>_)Fqc#0=U4qhQ{?!R&fx5DV$koXd zi{i+p%(6B%gk5~N(~_A}j(5~fk0Vq;n`St&rpU1idx01HQH`Yz*O=J{i#&JrL7F5Lwzp6g244;S4id6c|H&_q?$ZP>?d+_6##U;2cInIjpX{2u*VkFN(&l0Sm0&9KN0Z9Nl8zWh3DDLyj&NS;B_6*d?8DzU6d+&y8}S_V`T|-8Az? z>RYdhz)=8uc0NO4Qvm`t?I41RaDE}7HV@Dv@bXyGBvJ zPjywbt}iwG0Fce|#EpdJl5_ZAFakSUPdhG!WW|@wVW}D@`KktH5}v#MtP5sxcp}NM z^+xC`mNzHQzD$g(KzRL=-Tg*tuy5_n8Q~cv)6A;lcy`;IHMUTFDak(8#bn6KR2~Lf zK98ka+KoG?zps?Qj|^*dkhttn7zzsYU$2w1hqdX?_ozpA-)^xN?@rM04yMEKidjD8 zB9}{31$z)%IS1}B1q{5kn6O-ud=!~L#N$0Qn2Cb4MKnBS6P>!;_C{>&bED%rTP?_r zd6y;~FLY)w=LCA=rN}E=BO%La2wWFv+uR2e#=1#yRb->sY{zUzGt62H3@FN^$QSOO zGrSs0@^dd$E$W}>>Hp2Y8tcn9ItNCgr9!)UEX<%j7^uE z`|8UFY3Cis($%QY%y&WwjR$kb>D9#92?6w#;FUZwIsZwUdIYnjlvZlJtJ_+u{KW~Y z^$Tja>-{DnlBQd$;FZ9-iw+wZM#&Q93f@=(M4!{MwH2sR?S`OQMqL!eJXX*^VzUjU$X)b)s8$t0+n-`&fAbYq-8loy~C?X&A7Y#b{bkU9lsi#BMmL0K)q=m9`rmE8$Bh10iHLY z&3HmKXPAJH^P6HJtWYLe{EOo1r0`CBnlfNf8G!Ma@rX(85Y2(x3N}qHD@FEA0;dP| zOh^$XRpr7nh$kqJC*IWOu>*74useIeCr*Y0;LYgu7VC7%mcMr?d5XDICQI618%Hhv zE`>x%nL#W#lVJKrr9h&!vkUE}pEXbJq@L%H(M3*L`>PybpixqS%|Z%IY5l5VoW)ZH zbq(6hL+#WG`EVvjI-M6|tDT6FR4Fzf7!?I_9SHAXQuX_;dxK^8!NpINVT?t>SElzJMKZNV1|wCi!P$js&}S z(D;O6t$yWfl5Dv~>F(QVj~ml5gIUY7h{tA0Cj~pXclbq>DTB4uDw-~ohm53CZO^y{ zPh2OXzS~g_OW$cs$Rh~+&~!2#w2-{4PcX~#qqnHo@E%3xi{453gNWMyq|z)^V0otn zZ+ltxZTxL{o`;wil$QCN<xYc#e#+2t;m9A$;CFrKs5ilWF>B10O~u5z4Cx*^x{h@c9H{%{zQcp))C zBW^ICvLLLWH4hkyD$||kwBLwm4N_Y2qWeMV_A#0Gxop{y70@u*EfUkh2Npp*E#@UR zyVs06E;Xw!72<>v_Xpl6O*M?!W<}zr?18Qi+F}GF1 zU{wmxWlUDd)4wV1k|#)Sl4DA5lP5Hk#R|Bgl#a5Hbjgzmi-4Qhr@ol5#I5774=I4z?I_sP(W`#D6kKUm1?xSL9XP%1>4nzd zoGIX?i;K993Ex;q=H=va|Eb#z|I$OlTDYqFh|mzjO$27G;<0xdgIj!UP!ErmoOA{Z z!w~zoN62ghqFU8vA0@3zauf_+7gj zggHZWw6So`9upokp6A*=(i++;uduLFc{DrItx#g<=%*Km_L$Cyh7UWG!=fMuKcsOG z4d*F~nzU;}(Nd0hb(h4Mq$LH3Ax*;GYaj*SV5W|dl9_oHT!tKFJmi9@4eiv@-Pq0z zNJ}AtAE`O8j}nn_b?$1n&mdxc47VpgjKn=TAofm~t(+ev!{Xa2?yDCbxR6_2@A_&^ znC%OaL&Y9}egF`)vLW=rDHh+1R^;iQ^k_B7etUYnB*lysKqb=WH27^(I4{wco9!hb z$zmZ_E)oXoRqIUZ6V&NXd&1%#$zIMD{#%JD>GtcMGmFf{fm9YMii_wv8bk1UpUb+_ z$lo$bqrd(5^;OwdXIT?uC)F%|FHWx$;)v1JxoV?l^wQ`t-oYJsAh^y`+D29KC*#iV{W%=O^0~eXmx(KY2A7dq>8_db~|Sj>Ow3Mb>#Vn&l1Ot8gf|TH8^|s->sh7b~0zcmqq6Lmu2& z7A)FckkkA$i#&qa<{dgaYOuQ}O=okk=omZT>ko`QwsfVLy`HZAn^dCp4h#t*N!wg& z|GxP*AF#79N|=EkPurS#{Q!|i8L!7vga^NWY?>4j%HqGcS-)-BrZ(uQ=4Vnf%7q?a z>YMPV8GJ)mw!PgpQs8!nQw-zQ@EVba!{eIYb`*?X5{H?{G_rQiPoVaUfbpR9>STUW zD`+!-ZoPB8lVfCi{t zr&3rah1K{Wn}8^C*crs7@LiQ};cz-ra8TjEaHFlbNCyUY9IMtX%=ev!?q4iKzfejB zceG=ayi$+{NmO(bJqhxMK|f(*p+gDTETdYteyN6wGODZ4x71z4jGOhTG42y|MYlj{ zuM@U@ehZ2wqC&(&M!N8dV^G=H4#9EoBgWPO(60y?7=S2Y9K#qFyxD?W-zr@kd1 zpM!zRo|yai_Jj%TyyWaAFy=*3^0_6P9@}8Br-xme^30;w)m5ga%=215q_k&uNQPkX z@yhc$pJM$oggXqVEQY5(ZYEuPKlHb(&94<)D`?*{`Tyv?Bugc_&Q}CT9sALl-;mq~ zc>kP#gNFoo29BoI4=aUU+^)@ckpGq;1zqI7Xc+G)%M(T+-3#cwhmh`tjaCJ>rx^3j zOk{fsCO)rIa!HYGzYi<1BC7RTw8%h z-tJnT1EkAZreQqP>^otbc1~Vi1qE*KCoM2i#OryhjIoCD(I#4qZ>uQ_XY+AL6!Hie zlLvCP*ecr&oJjU&6Duq5_k5uX^J;>3;0|v7VP{veJF+5>_Fin1jecD%KGVfI?rBt@ z_xrgv^fL)~c%D&57s0_pH`&m#aUGr2Bmp}D06r3C|E(=>nR?B90t;kC(ldW{%0)zmCO7mI3?V}T&^H6PC-f<_>e2) zi294{&okIhbXyWTEW4OdLJk941IK+F5^PPAcw3@GDs|4GsDNL`y3tbVIP8QHMbbt4 z8Q{&UH;U2!!DMIG_3Zy%Ps>QZk%CuIkD^E zoF&?uK6Zidm6tO9MhEpODn?b4fKS9WTWTY2Zv(&A?zuQjaSX7>a7`!)kT#tFLRI{Q zk_ga$jD@b>wdkpHz_m7hEfpK&BBMAS3qc6ey~5Y-$c}*~?^`?`jqD}Z|8Q+cQoxs= znzCt_l@hdCMcy3sGRcuYktgIV0Yzwpq@VO8cukj#$92Yuc{|f+f+ux-gn5&rzqBp& z=0R1!&I69j336a1f-KSd^skPXovpK}t+RoehrOwj-u&hWRAEGPe}<-D=Xm>lVRkG77TkM(3fB~X^_XDRd?IRF&!r<-x^sTkM>9;wZ&ijGiBUw#r(x!rd>-swQS&#BxXLl>tF{Vvvl3?u^$LgZDE z76c_~Or6Pb5A?^#uX9SBrM$e<(0cT*5KA93+LA_Oks>szwXfCB^1h~Vg1#`l*_&L@ zwwm)@Nb)R^uozhZJr`Z@DX~~StB7xGqgfi0y6g16o(ApvU9B8DkodwV%RPby{LHfa zYIS;OC5WM*9zl^pKCQ|B(PqB{{LjwlUcj%esb13GuIcYeA3CRdj$cZ5{^I%hGW|DY z_iyX3ao?hKKmO?E`n$e|{ap9Nzw}Z6$@Z`Au7?mk>_+;{T?kp;e<}TUZ_-2dhpjcg z+3_IGhZBA13w*T;W z59K^e=lzzG0`UX?l-zqL;b8{jw}fxlza;#X&-mXzyCftR0#W|&O4Z+2$irIIZ;dv8 zvi+`HJ)H8x^xSU&O^}o(MDL%l{kKWqw*dVb_ZCk2W#N0~zZ!!6KJ$kyLHE4Btk(V? zyuTZS9!~#Z$^N$#Gsp`1*Yy82gP)h51^oZL6b(oW@()semW7q&;O?Us$R>dWl?a(L JI_3SZ{{v|zbBX`} literal 0 HcmV?d00001 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BarcodePrintingAddDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BarcodePrintingAddDTO.java new file mode 100644 index 00000000..29760b8e --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BarcodePrintingAddDTO.java @@ -0,0 +1,20 @@ +package com.nflg.wms.common.pojo.dto; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nflg.wms.common.pojo.qo.BarcodePrintingAddQO; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.ttzero.excel.annotation.ExcelColumn; + +import java.math.BigDecimal; + +@Data +public class BarcodePrintingAddDTO extends BarcodePrintingAddQO { + /** + * 错误信息 + */ + @JsonIgnore + @ExcelColumn("错误信息") + private String error; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingAddQO.java new file mode 100644 index 00000000..feca6ca2 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingAddQO.java @@ -0,0 +1,59 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.ttzero.excel.annotation.ExcelColumn; + +import java.math.BigDecimal; + +@Data +public class BarcodePrintingAddQO { + + /** + * 物料编号 + */ + @NotBlank + @ExcelColumn("物料编号(*)") + private String materialNo; + + /** + * 物料描述 + */ + @NotBlank + @ExcelColumn("物料描述(*)") + private String materialDes; + + /** + * 单位 + */ + @NotBlank + @ExcelColumn("单位(*)") + private String unit; + + /** + * 数量 + */ + @NotNull + @ExcelColumn("数量(*)") + private BigDecimal qty; + + /** + * 批次号 + */ + @ExcelColumn("批次号") + private String batchNumber; + + /** + * 序列号,多个使用,号隔开 + */ + @ExcelColumn("序列号") + private String serialNumbers; + + /** + * 最小包装量 + */ + @NotNull + @ExcelColumn("最小包装量(*)") + private BigDecimal packingNum; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingEditQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingEditQO.java new file mode 100644 index 00000000..eb49965a --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingEditQO.java @@ -0,0 +1,49 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@Accessors(chain = true) +public class BarcodePrintingEditQO { + private Long id; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 物料描述 + */ + private String materialDes; + + /** + * 单位 + */ + private String unit; + + /** + * 数量 + */ + private BigDecimal qty; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 序列号,多个使用,号隔开 + */ + private String serialNumbers; + + /** + * 最小包装量 + */ + private BigDecimal packingNum; + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingIdsQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingIdsQO.java new file mode 100644 index 00000000..c6293b8f --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingIdsQO.java @@ -0,0 +1,12 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class BarcodePrintingIdsQO { + private List ids; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingQO.java new file mode 100644 index 00000000..643d2a9d --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodePrintingQO.java @@ -0,0 +1,26 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; + +@Data +public class BarcodePrintingQO extends SearchBaseQO { + /** + * 物料编号,多个用逗号隔开 + */ + private String materialNos; + + /** + * 物料描述 + */ + private String materialDes; + + /** + * 批次号 多个用逗号隔开 + */ + private String batchNumbers; + + /** + * 序列号,单个输入 + */ + private String serialNumber; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderReceiveMaterialQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderReceiveMaterialQO.java index a2865367..372f3bdc 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderReceiveMaterialQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderReceiveMaterialQO.java @@ -18,7 +18,6 @@ public class InProduceOrderReceiveMaterialQO { /** * 储位编号列表 */ - @NotBlank private String binNos; /** diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NormalReceiveQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NormalReceiveQO.java new file mode 100644 index 00000000..4ac43bae --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NormalReceiveQO.java @@ -0,0 +1,12 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +@Data +public class NormalReceiveQO { + @NotNull + private Long id; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ReceiveQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ReceiveQO.java index 636a4ffc..2ddd1a1f 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ReceiveQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ReceiveQO.java @@ -10,3 +10,4 @@ public class ReceiveQO { @NotNull private List ids; } + diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BarcodePrintingVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BarcodePrintingVO.java new file mode 100644 index 00000000..1dd8ddc4 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BarcodePrintingVO.java @@ -0,0 +1,68 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@Accessors(chain = true) +public class BarcodePrintingVO { + private Long id; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 物料描述 + */ + private String materialDes; + + /** + * 单位 + */ + private String unit; + + /** + * 数量 + */ + private BigDecimal qty; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 序列号,多个使用,号隔开 + */ + private String serialNumbers; + + /** + * 最小包装量 + */ + private BigDecimal packingNum; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 最后更新人 + */ + private String updateBy; + + /** + * 最后更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryBarcodePrinting.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryBarcodePrinting.java new file mode 100644 index 00000000..31fb84e2 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryBarcodePrinting.java @@ -0,0 +1,92 @@ +package com.nflg.wms.repository.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("wms_inventory_barcode_printing") +public class WmsInventoryBarcodePrinting implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 序号 + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 物料描述 + */ + private String materialDes; + + /** + * 单位 + */ + private String unit; + + /** + * 数量 + */ + private BigDecimal qty; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 序列号,多个使用,号隔开 + */ + private String serialNumbers; + + /** + * 最小包装量 + */ + private BigDecimal packingNum; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 最后更新人 + */ + private String updateBy; + + /** + * 最后更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryBarcodePrintingMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryBarcodePrintingMapper.java new file mode 100644 index 00000000..28351788 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryBarcodePrintingMapper.java @@ -0,0 +1,22 @@ +package com.nflg.wms.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.wms.common.pojo.qo.BarcodePrintingQO; +import com.nflg.wms.common.pojo.qo.SRMOrderSearchQO; +import com.nflg.wms.common.pojo.vo.BarcodePrintingVO; +import com.nflg.wms.common.pojo.vo.SrmOrderVO; +import com.nflg.wms.repository.entity.WmsInventoryBarcodePrinting; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface WmsInventoryBarcodePrintingMapper extends BaseMapper { + IPage search(BarcodePrintingQO request, Page objectPage); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryBarcodePrintingService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryBarcodePrintingService.java new file mode 100644 index 00000000..922ba3e3 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryBarcodePrintingService.java @@ -0,0 +1,21 @@ +package com.nflg.wms.repository.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.wms.common.pojo.qo.BarcodePrintingQO; +import com.nflg.wms.common.pojo.vo.BarcodePrintingVO; +import com.nflg.wms.repository.entity.WmsInventoryBarcodePrinting; +import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.validation.Valid; + +/** + *

+ * 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IWmsInventoryBarcodePrintingService extends IService { + + IPage search(@Valid BarcodePrintingQO request); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryBarcodePrintingServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryBarcodePrintingServiceImpl.java new file mode 100644 index 00000000..015b9bf9 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryBarcodePrintingServiceImpl.java @@ -0,0 +1,28 @@ +package com.nflg.wms.repository.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.wms.common.pojo.qo.BarcodePrintingQO; +import com.nflg.wms.common.pojo.vo.BarcodePrintingVO; +import com.nflg.wms.repository.entity.WmsInventoryBarcodePrinting; +import com.nflg.wms.repository.mapper.WmsInventoryBarcodePrintingMapper; +import com.nflg.wms.repository.service.IWmsInventoryBarcodePrintingService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class WmsInventoryBarcodePrintingServiceImpl extends ServiceImpl implements IWmsInventoryBarcodePrintingService { + + @Override + public IPage search(BarcodePrintingQO request) { + return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); + } +} diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsInventoryBarcodePrintingMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsInventoryBarcodePrintingMapper.xml new file mode 100644 index 00000000..75a305d7 --- /dev/null +++ b/nflg-wms-repository/src/main/resources/mapper/WmsInventoryBarcodePrintingMapper.xml @@ -0,0 +1,52 @@ + + + + + + diff --git a/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java b/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java index 2914428b..35eae3d8 100644 --- a/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java +++ b/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java @@ -33,7 +33,7 @@ public class CodeGeneratorTest { ) .strategyConfig(builder -> { builder - .addInclude("user_supplier") //只生成指定表 + .addInclude("wms_inventory_barcode_printing") //只生成指定表 .entityBuilder().idType(IdType.ASSIGN_ID) .enableLombok() .enableChainModel()