diff --git a/.gitignore b/.gitignore index 10e01c72..92bca8b4 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ build/ ### VS Code ### .vscode/ /dev_jco_rfc.log +logs 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 381ad80a..314ecb20 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 @@ -2,27 +2,84 @@ package com.nflg.wms.admin.controller; /* * 普通物料收货单*/ +import com.nflg.wms.admin.service.NormalPGIControllerService; +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.qo.SRMOrderSearchQO; +import com.nflg.wms.common.pojo.qo.SrmMaterialReceiptQO; +import com.nflg.wms.common.pojo.vo.*; +import com.nflg.wms.common.util.UserUtil; +import com.nflg.wms.repository.entity.WmsSrmMaterialReceiptItem; +import com.nflg.wms.repository.service.IWmsSrmMaterialReceiptItemService; +import com.nflg.wms.repository.service.IWmsSrmOrderItemService; +import com.nflg.wms.repository.service.IWmsSrmOrderService; import com.nflg.wms.starter.BaseController; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.nflg.wms.starter.annotation.ApiMark; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController @RequestMapping("/pgi/normal") public class NormalPGIController extends BaseController { + @Resource + private IWmsSrmOrderService wmsSrmOrderService; + + @Resource + private IWmsSrmOrderItemService wmsSrmOrderItemService; + + @Resource + private NormalPGIControllerService normalPGIControllerService; + + @Resource + private IWmsSrmMaterialReceiptItemService wmsSrmMaterialReceiptItemService; - // @RequestMapping("search") //收货单分页 + @PostMapping("search") + @ApiMark(moduleName = "送货单管理", apiName = "送货单列表") + public ApiResult> search(@Valid @RequestBody SRMOrderSearchQO request) { + return ApiResult.success(wmsSrmOrderService.search(request)); + } //收货单详情 + @GetMapping("getOrderItem") + @ApiMark(moduleName = "送货单管理", apiName = "获取送货单详情") + public ApiResult getOrderItem(@RequestParam Long orderId) { + return ApiResult.success(wmsSrmOrderItemService.getOrderItem(orderId)); + } - //一键收货 - //PDA 扫码收货 + //PDA 扫码获取收货信息 + @GetMapping("getOrderItemByOrderNo") + @ApiMark(moduleName = "送货单管理", apiName = "PDA扫描送货单号获取送货单详情") + public ApiResult getOrderItemByOrderNo(@RequestParam String orderNo) { + try { + PDAOrderVO pdaOrderVO = normalPGIControllerService.getOrderItemByOrderNo(orderNo); + return ApiResult.success(pdaOrderVO); + } catch (Exception e) { + return ApiResult.error(STATE.NoOrderData, "获取送货单详情失败", null); + } + } + // 查看扫码记录 + @GetMapping("getScanCodes") + @ApiMark(moduleName = "送货单管理", apiName = "获取扫码的详情信息") + public ApiResult> getScanCodes(@RequestParam String orderItemId) { + return ApiResult.success(wmsSrmMaterialReceiptItemService.lambdaQuery().eq(WmsSrmMaterialReceiptItem::getOrderItemId, orderItemId).list()); + } //收货确认 + @PostMapping("takeDelivery") + @ApiMark(moduleName = "送货单管理", apiName = "收货确认") + public ApiResult takeDelivery(@Valid @RequestBody SrmMaterialReceiptQO request) { + //UserUtil + // return ApiResult.success(wmsSrmMaterialReceiptService.takeDelivery(request)); + } - + //一键收货 } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/SRMController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/SRMController.java index 87b7d9da..bd0e6c69 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/SRMController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/SRMController.java @@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -57,6 +58,8 @@ public class SRMController extends BaseController { srmOrderService.removeById(order); srmOrderItemService.remove(new LambdaQueryWrapper().eq(WmsSrmOrderItem::getOrderId, order.getId())); } else { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime deliveryDate = LocalDateTime.parse(request.getDeliveryNoteDate(), formatter); order = new WmsSrmOrder() .setId(IdUtil.getSnowflakeNextId()) .setIuCode(request.getIuCode()) @@ -65,6 +68,8 @@ public class SRMController extends BaseController { .setNoteNum(request.getNoteNum()) .setWaybillNum(request.getWaybillNum()) .setPurchaseGroup(request.getPurchaseGroup()) + .setOuCode(request.getOuCode()) + .setDeliveryNoteDate(deliveryDate) .setCreateTime(LocalDateTime.now()); srmOrderService.save(order); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/dto/SAPMaterialInfoInOrderDTO.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/dto/SAPMaterialInfoInOrderDTO.java index 3848c4a7..fdfe5760 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/dto/SAPMaterialInfoInOrderDTO.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/dto/SAPMaterialInfoInOrderDTO.java @@ -18,4 +18,95 @@ public class SAPMaterialInfoInOrderDTO { * 仓库编号 */ private String warehouseNo; + + + /** + * 采购凭证号 + */ + private String ebeln; + /** + * 采购凭证行项目 + */ + private String ebelp; + + /** + * 物料号 + */ + private String matnr; + + /** + * 物料描述 + */ + private String maktx; + + /** + * 标志:关键部件 + */ + private String kzkri; + + /** + * 采购订单数量 + */ + private BigDecimal menge; + + /** + * 收货数量 + */ + + private BigDecimal wemng; + + /** + * 单位 + */ + private String meins; + + + + /** + * 物料组 + */ + private String matkl; + + /** + * 物料描述描述 + */ + private String wgbez; + + /** + * 工厂 + */ + private String werks; + + /** + * 标识:基于收获的发票验证 + */ + private String webre; + + /** + * 打印参数 + */ + private String lbprt; + + /** + * 特性值 + */ + private String atwrt; + + /** + * 采购组 + */ + private String ekgrp; + + /** + * 订单类型 + */ + private String bsart; + + /** + * 供应商账号 + */ + private String lifnr; + + + } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java new file mode 100644 index 00000000..4cc5e815 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java @@ -0,0 +1,127 @@ +package com.nflg.wms.admin.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO; +import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.pojo.ApiResult; +import com.nflg.wms.common.pojo.dto.SAPSyncParamsDTO; +import com.nflg.wms.common.pojo.qo.SrmMaterialReceiptQO; +import com.nflg.wms.common.pojo.vo.PDAOrderItemVO; +import com.nflg.wms.common.pojo.vo.PDAOrderVO; +import com.nflg.wms.common.pojo.vo.SRMOrderItemVO; +import com.nflg.wms.common.util.VUtil; +import com.nflg.wms.repository.entity.WmsSrmOrder; +import com.nflg.wms.repository.entity.WmsSrmOrderItem; +import com.nflg.wms.repository.service.IWmsSrmOrderItemService; +import com.nflg.wms.repository.service.IWmsSrmOrderService; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.apache.poi.ss.formula.functions.Forecast; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class NormalPGIControllerService { + + @Resource + private IWmsSrmOrderItemService wmsSrmOrderItemService; + @Resource + private IWmsSrmOrderService wmsSrmOrderService; + + @Resource + private SAPCommonService sapCommonService; + + @Resource + private SapService sapService; + + public PDAOrderVO getOrderItemByOrderNo(@RequestParam String orderNo) throws Exception { + //return ApiResult.success(wmsSrmOrderItemService.getOrderItem(orderId)); + PDAOrderVO pdaOrderVO = null; + + WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, orderNo).one(); + if (Objects.isNull(order)) + return null; + + pdaOrderVO.setNoteNum(order.getNoteNum()); + pdaOrderVO.setSupplierNum(order.getSupplierNum()); + pdaOrderVO.setSupplierName(order.getSupplierName()); + + List orderItemList = wmsSrmOrderItemService.lambdaQuery().eq(WmsSrmOrderItem::getOrderId, order.getId()).list(); + if (CollectionUtil.isNotEmpty(orderItemList)) { + List orderItemVOList = new ArrayList<>(); + + for (WmsSrmOrderItem item : orderItemList) { + PDAOrderItemVO itemVO = new PDAOrderItemVO(); + itemVO.setId(item.getId()); + itemVO.setPoLineNumber(item.getPoLineNumber()); + itemVO.setPoNum(item.getPoNum()); + itemVO.setItemCode(item.getItemCode()); + itemVO.setItemName(item.getItemName()); + itemVO.setIsQuality(item.getIsQuality()); + itemVO.setOrderQty(item.getOrderQty()); + itemVO.setUomCode(item.getUomCode()); + itemVO.setDeliveryQty(item.getDeliveryQty()); + + + SAPSyncParamsDTO syncParamsDTO = sapCommonService.getMaterialInfoInOrder(item.getPoNum(), order.getSupplierNum(), item.getItemCode()); + if (Objects.nonNull(syncParamsDTO)) { + itemVO.setItemName(syncParamsDTO.getMaktx()); + itemVO.setUomCode(syncParamsDTO.getMeins()); + itemVO.setOrderQty(syncParamsDTO.getMenge()); + itemVO.setReceivedWarehouse(syncParamsDTO.getWarehouseNo()); + itemVO.setBinNos(syncParamsDTO.getBinNos()); + itemVO.setLbprt(syncParamsDTO.getLbprt()); + itemVO.setTransportNum(syncParamsDTO.getTransportNum()); + boolean isQuality = false; + if (syncParamsDTO.getKzkri().equals("0")) + isQuality = true; + else + isQuality = false; + + itemVO.setIsQuality(isQuality); + + orderItemVOList.add(itemVO); + } + + } + + pdaOrderVO.setOrderItemVOList(orderItemVOList); + } + return pdaOrderVO; + } + + @Transactional + public void takeDelivery(List request) { + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("收货参数为空"); + request.forEach(item -> { + SAPMaterialInfoInOrderDTO materialInfoInOrder = sapService.getMaterialInfoInOrder(item.getPoNum(), item.getSupplierNum(), item.getItemCode()); + VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("无法获取到有效订单信息" + item.getPoNum()); + //判断收货数量是否大于了未收数量 + VUtil.trueThrowBusinessError(item.getReceiptNum().add(item.getCrossNumber()).compareTo(materialInfoInOrder.getTransportNum()) > 0).throwMessage("无法获取到有效订单信息" + item.getPoNum()); + //判断序列号、批次号是否规范 + // 1 - 批次号为空,序列号为空 + // 2 - 批次号必填,序列号为空 + // 3 - 批次号为空,序列号必填 + // 4 - 批次号必填,序列号必填 + + //批次號必填 + if (materialInfoInOrder.getLbprt().equals("2") || materialInfoInOrder.getLbprt().equals("4")) { + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes()) || item.getScanCodes().stream().anyMatch(code -> StrUtil.isBlank(code.getBatchNumber()))).throwMessage("此物料[" + item.getItemCode() + "]必须填写批次号" + item.getPoNum()); + } + + //序列號必填 + if (materialInfoInOrder.getLbprt().equals("3") || materialInfoInOrder.getLbprt().equals("4")) { + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes()) || item.getScanCodes().stream().anyMatch(code -> StrUtil.isBlank(code.getSerialNumber()))).throwMessage("此物料[" + item.getItemCode() + "]必须填写序列号" + item.getPoNum()); + } +// 保存收货信息 + //质检物料发送到质检单 + //生成上架任务 + }); + } + +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java new file mode 100644 index 00000000..f7899224 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java @@ -0,0 +1,60 @@ +package com.nflg.wms.admin.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO; +import com.nflg.wms.common.pojo.dto.SAPSyncFromDTO; +import com.nflg.wms.common.pojo.dto.SAPSyncParamsDTO; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@Slf4j +@Component +public class SAPCommonService { + + @Resource + private SapService sapService; + + public SAPSyncParamsDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo) throws Exception { + //获取订单信息 + SAPMaterialInfoInOrderDTO materialInfoInOrder = sapService.getMaterialInfoInOrder(orderNo, supplierNo, materialNo); + if (Objects.isNull(materialInfoInOrder)) + throw (new Exception("无法获取到有效订单信息" + orderNo)); + + SAPSyncParamsDTO syncParams = new SAPSyncParamsDTO(); + syncParams.setMaktx(materialInfoInOrder.getMaktx()); + syncParams.setEbelp(materialInfoInOrder.getEbelp()); + syncParams.setMatnr(materialInfoInOrder.getMatnr()); + syncParams.setMenge(materialInfoInOrder.getMenge()); + syncParams.setWemng(materialInfoInOrder.getWemng()); + syncParams.setMeins(materialInfoInOrder.getMeins()); + syncParams.setEbeln(materialInfoInOrder.getEbeln()); + syncParams.setTransportNum(materialInfoInOrder.getTransportNum()); + syncParams.setMatkl(materialInfoInOrder.getMatkl()); + syncParams.setWgbez(materialInfoInOrder.getWgbez()); + syncParams.setWerks(materialInfoInOrder.getWerks()); + syncParams.setLbprt(materialInfoInOrder.getLbprt()); + syncParams.setKzkri(materialInfoInOrder.getKzkri()); + + //获取仓库信息 + List warehouseNos = new ArrayList<>(); + warehouseNos.add(materialInfoInOrder.getWarehouseNo()); + List materialNos=new ArrayList<>(); + materialNos.add(materialInfoInOrder.getMatnr()); + List list = sapService.getStorage(materialInfoInOrder.getWerks(), warehouseNos, materialNos, null, null); + if (!CollectionUtil.isEmpty(list)) { + //同步仓库信息 + SAPSyncFromDTO dbWarehouse = list.get(0); + syncParams.setWarehouseNo(dbWarehouse.getWarehouseNo()); + syncParams.setBinNos(dbWarehouse.getBinNos()); + } + + return syncParams; + } + +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java index 14d0ba8b..82efc8c8 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java @@ -26,12 +26,13 @@ public class SapService { /** * 获取库存信息 - * @param factory 工厂编号 + * + * @param factory 工厂编号 * @param warehouseNos 仓库编号列表 - * @param beginTime 开始时间,格式yyyyMMdd - * @param endTime 结束时间,格式yyyyMMdd + * @param beginTime 开始时间,格式yyyyMMdd + * @param endTime 结束时间,格式yyyyMMdd */ - public List getStorage(String factory, List warehouseNos,List materialNos, String beginTime, String endTime) { + public List getStorage(String factory, List warehouseNos, List materialNos, String beginTime, String endTime) { Map parameters = new HashMap<>(); parameters.put("I_WERKS", factory); parameters.put("I_TYPE", Objects.nonNull(beginTime) || Objects.nonNull(endTime) ? "I" : "A"); @@ -74,11 +75,12 @@ public class SapService { /** * 获取订单中物料的信息 - * @param orderNo 采购单号 + * + * @param orderNo 采购单号 * @param supplierNo 供应商编号 * @param materialNo 物料编号 */ - public SAPMaterialInfoInOrderDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo){ + public SAPMaterialInfoInOrderDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo) { Map parameters = new HashMap<>(); parameters.put("I_EBELN", orderNo); parameters.put("I_LIFNR", supplierNo); @@ -89,19 +91,37 @@ public class SapService { tOut.setRow(0); return new SAPMaterialInfoInOrderDTO() .setTransportNum(tOut.getBigDecimal("WSHSL")) - .setWarehouseNo(tOut.getString("LGORT")); + .setWarehouseNo(tOut.getString("LGORT")) + .setAtwrt(tOut.getString("ATWRT")) + .setBsart(tOut.getString("BSART")) + .setEbeln(tOut.getString("EBELN")) + .setEbelp(tOut.getString("EBELP")) + .setMatnr(tOut.getString("MATNR")) + .setMaktx(tOut.getString("MAKTX")) + .setKzkri(tOut.getString("KZKRI")) + .setMeins(tOut.getString("MEINS")) + .setMenge(tOut.getBigDecimal("MENGE")) + .setMatkl(tOut.getString("MATKL")) + .setWgbez(tOut.getString("WGBEZ")) + .setWerks(tOut.getString("WERKS")) + .setWebre(tOut.getString("WEBRE")) + .setLbprt(tOut.getString("LBPRZ")) + .setEkgrp(tOut.getString("EKGRP")) + .setBsart(tOut.getString("BSART")) + .setLifnr(tOut.getString("LIFNR")) + ; } /** * 搜索订单 + * * @param supplierNo 供应商编码 */ public List searchOrder(String supplierNo) { Map parameters = new HashMap<>(); parameters.put("I_LIFNR", supplierNo); - JCoTable tOut = exec("ZRFC_MM_SMXT", parameters,null,"T_SMXTOUT"); - + JCoTable tOut = exec("ZRFC_MM_SMXT", parameters, null, "T_SMXTOUT"); List result = new ArrayList<>(); for (int i = 0; i < tOut.getNumRows(); i++) { tOut.setRow(i); @@ -121,16 +141,16 @@ public class SapService { } private JCoTable exec(String functionName, Map parameters) { - return exec(functionName, parameters, null,"T_OUT"); + return exec(functionName, parameters, null, "T_OUT"); } private JCoTable exec(String functionName, Map parameters, Map>> tables) { - return exec(functionName, parameters, tables,"T_OUT"); + return exec(functionName, parameters, tables, "T_OUT"); } - private JCoTable exec(String functionName, Map parameters, Map>> tables,String outName) { + private JCoTable exec(String functionName, Map parameters, Map>> tables, String outName) { try { - log.info("SAP functionName:{}",functionName); + log.info("SAP functionName:{}", functionName); JCoFunction function = repository.getFunction(functionName); log.info("SAP ImportParameter:{}", JSONUtil.toJsonStr(parameters)); if (CollectionUtil.isNotEmpty(parameters)) { @@ -151,7 +171,7 @@ public class SapService { JCoTable out = function.getTableParameterList().getTable(outName); log.info("SAP返回: {}", out); return out; - }catch (JCoException ex){ + } catch (JCoException ex) { log.error("SAP错误", ex); throw new NflgException(STATE.BusinessError, "SAP错误"); } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java index 16a0c959..ff8efee3 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java @@ -24,8 +24,8 @@ public enum STATE { PageError(114, "页面异常"), BusinessError(115, "业务异常"), RequestMethodError(116, "请求方式错误"), - InconsistentDataError(117, "需要用户确认") - ; + InconsistentDataError(117, "需要用户确认"), + NoOrderData(118, "订单不存在"); @Getter private final Integer state; diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPSyncParamsDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPSyncParamsDTO.java new file mode 100644 index 00000000..e4c43286 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPSyncParamsDTO.java @@ -0,0 +1,86 @@ +package com.nflg.wms.common.pojo.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class SAPSyncParamsDTO { + + /** + * 未收货数量 + */ + private BigDecimal transportNum; + + /** + * 仓库编号 + */ + private String warehouseNo; + + /** + * 货位编号 + */ + private String binNos; + + /** + * 采购凭证号 + */ + private String ebeln; + /** + * 采购凭证行项目 + */ + private String ebelp; + + /** + * 物料号 + */ + private String matnr; + + /** + * 物料描述 + */ + private String maktx; + + + /** + * 采购订单数量 + */ + private BigDecimal menge; + + /** + * 收货数量 + */ + + private BigDecimal wemng; + + /** + * 单位 + */ + private String meins; + + /** + * 物料组 + */ + private String matkl; + + /** + * 物料描述描述 + */ + private String wgbez; + + /** + * 工厂 + */ + private String werks; + + /** + * 打印参数 + */ + private String lbprt; + + /** + * 是否质检 + */ + private String kzkri; + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PDAScanCodeQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PDAScanCodeQO.java new file mode 100644 index 00000000..e09dff67 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PDAScanCodeQO.java @@ -0,0 +1,40 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class PDAScanCodeQO { + + + /** + * 二维码编号 + */ + private String codeId; + + /** + * 数量 + */ + @NotNull + private BigDecimal codeNum; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 序列号,多个序列号使用;号隔开 + */ + private String serialNumber; + + /** + * 二维码内容 + */ + private String codeContent; + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderSearchQO.java new file mode 100644 index 00000000..eb41fc28 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderSearchQO.java @@ -0,0 +1,28 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; + +@Data +public class SRMOrderSearchQO extends SearchBaseQO { + + + /** + * 送货单号 + */ + private String noteNum; + + /** + * 供应商编号 + */ + private String supplierNum; + + /** + * 订单号 + */ + private String poNum; + + /** + * 物料编号 + */ + private String itemCode; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SrmMaterialReceiptQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SrmMaterialReceiptQO.java new file mode 100644 index 00000000..3e7ebac3 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SrmMaterialReceiptQO.java @@ -0,0 +1,70 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 送货单收货参数 + */ +@Data +public class SrmMaterialReceiptQO { + /** + * 订单编号 + */ + private String noteNum; + + /** + * 送货单行号 + * */ + public String lineNumber; + + /** + * 供应商编号 + */ + private String supplierNum; + + + /** + * 采购订单号 + */ + private String poNum; + + /** + * 采购订单行号 + */ + private String poLineNumber; + + /** + * 物料编码 + */ + private String itemCode; + + /** + * 普通物料送货单的详情ID + */ + @NotNull + private Long orderItemId; + + /** + * 收货数量,如果是需要质检的,数量为0 + */ + @NotNull + private BigDecimal receiptNum; + + /** + * 越库数量 + */ + @NotNull + private BigDecimal crossNumber; + + + /** + * 扫码记录 + */ + @NotEmpty + private List scanCodes; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PDAOrderItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PDAOrderItemVO.java new file mode 100644 index 00000000..eb45b518 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PDAOrderItemVO.java @@ -0,0 +1,81 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class PDAOrderItemVO { + + private Long id; + + /** + * 送货单行号 + * */ + public String lineNumber; + /** + * 采购订单号 + */ + private String poNum; + + /** + * 采购订单行号 + */ + private String poLineNumber; + + /** + * 物料编码 + */ + private String itemCode; + + /** + * 物料描述 + */ + private String itemName; + + /** + * 订单数量 + */ + private BigDecimal orderQty; + + /** + * 单位 + */ + private String uomCode; + + /** + * 送货数量 + */ + private BigDecimal deliveryQty; + + + /** + * 收货仓库 + */ + private String receivedWarehouse; + + /** + * 货位编号 + */ + private String binNos; + + /** + * 是否质检 + */ + private Boolean isQuality; + + /** + * 打印参数 + * 1-批次号为空,序列号为空 + * 2-批次号必填,序列号为空 + * 3-批次号为空,序列号必填 + * 4-批次号必填,序列号必填 + */ + private String lbprt; + + /** + * 未收货数量,如果收货数量大于了未收数量,需要抛出异常 + */ + private BigDecimal transportNum; + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PDAOrderVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PDAOrderVO.java new file mode 100644 index 00000000..182dc69e --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PDAOrderVO.java @@ -0,0 +1,30 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class PDAOrderVO { + + /** + * 订单编号 + */ + private String noteNum; + + + /** + * 供应商编号 + */ + private String supplierNum; + + /** + * 供应商名称 + */ + private String supplierName; + + /** + * 订单项 + */ + private List orderItemVOList; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/SRMOrderItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/SRMOrderItemVO.java new file mode 100644 index 00000000..bf96ba4d --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/SRMOrderItemVO.java @@ -0,0 +1,118 @@ +package com.nflg.wms.common.pojo.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class SRMOrderItemVO { + + private Long id; + + /** + * 送货单行号 + */ + private String lineNumber; + + /** + * 订单编号 + */ + private String noteNum; + + /** + * 采购订单号 + */ + private String poNum; + + /** + * 采购订单行号 + */ + private String poLineNumber; + + /** + * 送货单行号 + */ + private String lineNumber; + + /** + * 物料编码 + */ + private String itemCode; + + /** + * 物料描述 + */ + private String itemName; + + /** + * 订单数量 + */ + private BigDecimal orderQty; + + /** + * 单位 + */ + private String uomCode; + + /** + * 送货数量 + */ + private BigDecimal deliveryQty; + + /** + * 不合格数量 + */ + private BigDecimal unqualifiedQty; + + /** + * 合格数量 + */ + private BigDecimal qualifiedQty; + + /** + * 越库数量 + */ + private BigDecimal crossNumber; + + /** + * 收货数量 + */ + private BigDecimal receiptNum; + + /** + * 收货仓库 + */ + private String receivedWarehouse; + + /** + * 订单需求日期 + */ + private String demandDate; + + /** + * 实际送货时间 + */ + private String deliveryNoteDate; + + /** + * 采购订单类型 + */ + private String orderType; + + /** + * 是否质检 + */ + private Boolean isQuality; + + /** + * 上架状态 + */ + private Integer dataStatus; + + /** + * 扫描码数量 + */ + private Integer scanCodeNum; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/SrmOrderVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/SrmOrderVO.java new file mode 100644 index 00000000..2cc24b16 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/SrmOrderVO.java @@ -0,0 +1,48 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +@Data +public class SrmOrderVO { + + + /** + * 送货单号 + */ + private String noteNum; + + /** + * 公司 + */ + private String ouCode; + + /** + * 工厂 + */ + private String iuCode; + + /** + * 采购组 + */ + private String purchaseGroup; + + /** + * 发货时间 + */ + private String deliveryNoteDate; + + /** + * 运单号 + */ + private String waybillNum; + + /** + * 供应商编号 + */ + private String supplierNum; + + /** + * 供应商名称 + */ + private String supplierName; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrder.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrder.java index c42623e0..5bab026f 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrder.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrder.java @@ -65,4 +65,14 @@ public class WmsSrmOrder implements Serializable { * 创建时间 */ private LocalDateTime createTime; + + /** + * 公司 + */ + private String ouCode; + + /** + * 发货时间 + */ + private LocalDateTime deliveryNoteDate; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java index a6948d24..9ce035b8 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java @@ -95,14 +95,4 @@ public class WmsSrmOrderItem implements Serializable { * 是否质检 */ private Boolean isQuality; - - /** - * 发货时间 - */ - private String deliveryNoteDate; - - /** - * 公司 - */ - private String ouCode; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmOrderItemMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmOrderItemMapper.java index 66591b66..21896651 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmOrderItemMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmOrderItemMapper.java @@ -1,6 +1,7 @@ package com.nflg.wms.repository.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.wms.common.pojo.vo.SRMOrderItemVO; import com.nflg.wms.repository.entity.WmsSrmOrderItem; /** @@ -12,5 +13,5 @@ import com.nflg.wms.repository.entity.WmsSrmOrderItem; * @since 2025 */ public interface WmsSrmOrderItemMapper extends BaseMapper { - + SRMOrderItemVO getOrderItem(Long orderId); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmOrderMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmOrderMapper.java index 42ef378f..61dce2b0 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmOrderMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmOrderMapper.java @@ -1,16 +1,20 @@ 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.SRMOrderSearchQO; +import com.nflg.wms.common.pojo.vo.SrmOrderVO; import com.nflg.wms.repository.entity.WmsSrmOrder; /** *

- * Mapper 接口 + * Mapper 接口 *

* * @author 代码生成器生成 * @since 2025 */ public interface WmsSrmOrderMapper extends BaseMapper { - + IPage search(SRMOrderSearchQO request, Page objectPage); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmOrderItemService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmOrderItemService.java index fb357275..c92263f8 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmOrderItemService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmOrderItemService.java @@ -1,16 +1,17 @@ package com.nflg.wms.repository.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.wms.common.pojo.vo.SRMOrderItemVO; import com.nflg.wms.repository.entity.WmsSrmOrderItem; /** *

- * 服务类 + * 服务类 *

* * @author 代码生成器生成 * @since 2025 */ public interface IWmsSrmOrderItemService extends IService { - + SRMOrderItemVO getOrderItem(Long orderId); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmOrderService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmOrderService.java index 5f9dd843..3150440b 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmOrderService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmOrderService.java @@ -1,7 +1,12 @@ package com.nflg.wms.repository.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.qo.SRMOrderSearchQO; +import com.nflg.wms.common.pojo.vo.SrmOrderVO; import com.nflg.wms.repository.entity.WmsSrmOrder; +import jakarta.validation.Valid; /** *

@@ -13,4 +18,5 @@ import com.nflg.wms.repository.entity.WmsSrmOrder; */ public interface IWmsSrmOrderService extends IService { + IPage search(@Valid SRMOrderSearchQO request); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskServiceImpl.java index e2993044..b3b03093 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskServiceImpl.java @@ -39,8 +39,8 @@ public class WmsInTaskServiceImpl extends ServiceImpl newTaskList = new ArrayList(); - List oldTaskList = new ArrayList(); + List newTaskList = new ArrayList<>(); + List oldTaskList = new ArrayList<>(); tasks.forEach(task -> { String taskNumber = "SJ-" + task.getNoteNum(); diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmOrderItemServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmOrderItemServiceImpl.java index f9de94e6..ca99ddc0 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmOrderItemServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmOrderItemServiceImpl.java @@ -1,6 +1,7 @@ package com.nflg.wms.repository.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.wms.common.pojo.vo.SRMOrderItemVO; import com.nflg.wms.repository.entity.WmsSrmOrderItem; import com.nflg.wms.repository.mapper.WmsSrmOrderItemMapper; import com.nflg.wms.repository.service.IWmsSrmOrderItemService; @@ -17,4 +18,8 @@ import org.springframework.stereotype.Service; @Service public class WmsSrmOrderItemServiceImpl extends ServiceImpl implements IWmsSrmOrderItemService { + @Override + public SRMOrderItemVO getOrderItem(Long orderId) { + return baseMapper.getOrderItem(orderId); + } } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmOrderServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmOrderServiceImpl.java index 4daaae37..10ceccfe 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmOrderServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmOrderServiceImpl.java @@ -1,6 +1,10 @@ package com.nflg.wms.repository.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.wms.common.pojo.qo.SRMOrderSearchQO; +import com.nflg.wms.common.pojo.vo.SrmOrderVO; import com.nflg.wms.repository.entity.WmsSrmOrder; import com.nflg.wms.repository.mapper.WmsSrmOrderMapper; import com.nflg.wms.repository.service.IWmsSrmOrderService; @@ -8,7 +12,7 @@ import org.springframework.stereotype.Service; /** *

- * 服务实现类 + * 服务实现类 *

* * @author 代码生成器生成 @@ -17,4 +21,8 @@ import org.springframework.stereotype.Service; @Service public class WmsSrmOrderServiceImpl extends ServiceImpl implements IWmsSrmOrderService { + @Override + public IPage search(SRMOrderSearchQO request) { + return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); + } } diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderItemMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderItemMapper.xml index 62e1de0f..7deba462 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderItemMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderItemMapper.xml @@ -1,5 +1,38 @@ - + diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderMapper.xml index 866cb0ab..b9060640 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderMapper.xml @@ -1,5 +1,35 @@ + diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsSrmQualityInspectionMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsSrmQualityInspectionMapper.xml index a4c86590..25a3fffb 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsSrmQualityInspectionMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsSrmQualityInspectionMapper.xml @@ -46,6 +46,8 @@ and a.item_code like =#{request.itemCode} + + order by a.create_time desc 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 3086f7c9..a29bb98c 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("wms_srm_material_receipt") //只生成指定表 + .addInclude("wms_srm_material_receipt_item") //只生成指定表 .entityBuilder().idType(IdType.ASSIGN_ID) .enableLombok() .enableChainModel()