From 9663744367a86faa119cf796f8a3b45a57b4c24f Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Mon, 23 Mar 2026 18:12:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E6=AC=A1=E5=8F=B7=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E7=94=9F=E4=BA=A7=E9=A2=86=E6=96=99?= =?UTF-8?q?=E5=8D=95=E4=B8=AD=E4=BB=93=E5=BA=93=E5=90=8D=20=E6=89=93?= =?UTF-8?q?=E5=8D=B0/=E8=BF=87=E8=B4=A6=E8=AE=B0=E5=BD=95=E8=A1=A8?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/NormalPGIController.java | 6 +- .../admin/controller/OptRecordController.java | 46 ++++++++++++++ .../controller/OutProduceController.java | 14 +++-- .../StructuralPackageOrderController.java | 1 + .../wms/common/constant/OperationType.java | 26 ++++++++ .../wms/common/pojo/dto/OptRecordDTO.java | 42 +++++++++++++ .../nflg/wms/common/pojo/qo/OptRecordQO.java | 17 ++++++ .../nflg/wms/common/pojo/vo/OptRecordVO.java | 36 +++++++++++ .../nflg/wms/common/pojo/vo/Zwm3a07VO.java | 3 + .../nflg/wms/repository/entity/OptRecord.java | 61 +++++++++++++++++++ .../repository/mapper/OptRecordMapper.java | 28 +++++++++ .../repository/mapper/WmsInventoryMapper.java | 2 + .../repository/service/IOptRecordService.java | 24 ++++++++ .../service/IWmsInventoryService.java | 8 +++ .../service/impl/OptRecordServiceImpl.java | 42 +++++++++++++ .../service/impl/WmsInventoryServiceImpl.java | 5 ++ .../main/resources/mapper/OptRecordMapper.xml | 12 ++++ .../wms/repository/CodeGeneratorTest.java | 2 +- 18 files changed, 368 insertions(+), 7 deletions(-) create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OptRecordController.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/constant/OperationType.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/OptRecordDTO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OptRecordQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OptRecordVO.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/OptRecord.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/OptRecordMapper.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IOptRecordService.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/OptRecordServiceImpl.java create mode 100644 nflg-wms-repository/src/main/resources/mapper/OptRecordMapper.xml 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 30a192f7..c995183f 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 @@ -859,8 +859,12 @@ public class NormalPGIController extends BaseController { order.getSupplierNum(), item.getItemCode(), item.getPoLineNumber()); VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("当前物料信息【" + item.getItemCode() + "】,订单号【" + item.getPoNum() + "】,供应商【" + order.getSupplierName() + "】在SAP中搜索不到有效信息"); - String batchNumber = (materialInfoInOrder.getLbprt().equals("2") + String batchNumber =NoUtil.getBatchNo(order.getSupplierNum()); + /* + (materialInfoInOrder.getLbprt().equals("2") || materialInfoInOrder.getLbprt().equals("4")) ? NoUtil.getBatchNo(order.getSupplierNum()) : ""; + + */ qo.setItemName(materialInfoInOrder.getMaktx()); qo.setUomCode(materialInfoInOrder.getMeins()); qo.setReceivedWarehouse(materialInfoInOrder.getWarehouseNo()); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OptRecordController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OptRecordController.java new file mode 100644 index 00000000..26d73f4e --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OptRecordController.java @@ -0,0 +1,46 @@ +package com.nflg.wms.admin.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.dto.OptRecordDTO; +import com.nflg.wms.common.pojo.qo.OptRecordQO; +import com.nflg.wms.common.pojo.vo.OptRecordVO; +import com.nflg.wms.repository.service.IOptRecordService; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 打印/过账操作记录 + */ +@Slf4j +@RestController +@RequestMapping("/operation/record") +public class OptRecordController { + + @Resource + private IOptRecordService optRecordService; + + /** + * 查询打印/过账操作记录 + * @return + */ + @PostMapping("search") + public List searchRecord(@Valid @RequestBody OptRecordQO optRecordQO){ + return optRecordService.search(optRecordQO); + } + + /** + * 插入打印/过账操作记录 + */ + @PostMapping("add") + public void add(@Valid @RequestBody OptRecordDTO optRecordDTO){ + optRecordService.add(optRecordDTO); + } +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java index b0c277f0..a3596fd3 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java @@ -109,11 +109,15 @@ public class OutProduceController extends BaseController { Map> maps = vos.stream().collect(Collectors.groupingBy(Zwm3a07VO::getKey1)); maps.forEach((key, items) -> { List imaps = inventoryService.getNum(items.get(0).getDwerk(), items.get(0).getLgort2(), items.stream().map(Zwm3a07VO::getMatnr).toList()); - items.forEach(item -> item.setLeftNum(imaps.stream() - .filter(it -> StrUtil.equals(it.getMaterialNo(), item.getMatnr())) - .findFirst() - .orElse(new InventoryInDTO().setNum(BigDecimal.ZERO)).getNum()) - ); + String wname = inventoryService.getName(items.get(0).getDwerk(), items.get(0).getLgort2()); + items.forEach(item -> { + item.setLeftNum(imaps.stream() + .filter(it -> StrUtil.equals(it.getMaterialNo(), item.getMatnr())) + .findFirst() + .orElse(new InventoryInDTO().setNum(BigDecimal.ZERO)).getNum()); + item.setWname(wname); + }); + }); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java index 1ef384ac..d21b4ca9 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java @@ -154,6 +154,7 @@ public class StructuralPackageOrderController extends BaseController { .setLbprt(order.getLbprt()) .setUnit(order.getMeins()) .setWerks(order.getWerks()) + .setBatchNo(NoUtil.getBatchNo(order.getLifnr())) .setWarehouseNo(order.getWarehouseNo()) .setKzkri(order.getKzkri()); } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/OperationType.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/OperationType.java new file mode 100644 index 00000000..55107d72 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/OperationType.java @@ -0,0 +1,26 @@ +package com.nflg.wms.common.constant; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Objects; + +@Getter +@AllArgsConstructor +public enum OperationType { + Print((short) 0, "打印"), + Post((short) 1, "过账"); + + private final Short state; + private final String description; + + public static OperationType findByValue(Short value) { + for (OperationType valueEnum : OperationType.values()) { + if (Objects.equals(valueEnum.getState(), value)) { + return valueEnum; + } + } + return null; + } + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/OptRecordDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/OptRecordDTO.java new file mode 100644 index 00000000..961911f8 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/OptRecordDTO.java @@ -0,0 +1,42 @@ +package com.nflg.wms.common.pojo.dto; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +@Data +@Accessors(chain = true) +public class OptRecordDTO { + /** + * 单号(必传) + */ + @NotBlank(message = "单号不能为空") + private String orderId; + + /** + * 操作时间(必传) + */ + @NotNull(message = "操作时间不能为空") + private LocalDateTime operationTime; + + /** + * 操作类型(必传) + */ + @NotNull(message = "操作类型不能为空") + private Short operationType; + + /** + * 操作人员id(必传) + */ + @NotBlank(message = "操作人员id不能为空") + private String operatorId; + + /** + * 操作人员(必传) + */ + @NotBlank(message = "操作人员不能为空") + private String operator; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OptRecordQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OptRecordQO.java new file mode 100644 index 00000000..29ad9449 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OptRecordQO.java @@ -0,0 +1,17 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; + +@Data +public class OptRecordQO { + + /** + * 单号 + */ + private String orderId; + + /** + * 操作类型 + */ + private Short operationType; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OptRecordVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OptRecordVO.java new file mode 100644 index 00000000..6bcdf0b3 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OptRecordVO.java @@ -0,0 +1,36 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class OptRecordVO { + + private Long id; + + /** + * 单号 + */ + private String orderId; + + /** + * 操作时间 + */ + private LocalDateTime operationTime; + + /** + * 操作类型 + */ + private Short operationType; + + /** + * 操作人员id + */ + private String operatorId; + + /** + * 操作人员 + */ + private String operator; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a07VO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a07VO.java index 3374eb03..6df3ea25 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a07VO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a07VO.java @@ -125,6 +125,9 @@ public class Zwm3a07VO { //MRP 控制者(物料计划人) private String dispo; + //仓库名 + private String wname; + /** * 仓库可领用数量 */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/OptRecord.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/OptRecord.java new file mode 100644 index 00000000..5c30ccfa --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/OptRecord.java @@ -0,0 +1,61 @@ +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.time.LocalDateTime; + +/** + *

+ * 操作记录表 + *

+ * + * @author 代码生成器生成 + * @since 2026 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("opt_record") +public class OptRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 单号 + */ + private String orderId; + + /** + * 操作时间 + */ + private LocalDateTime operationTime; + + /** + * 操作类型 + */ + private Short operationType; + + /** + * 操作人员id + */ + private String operatorId; + + /** + * 操作人员 + */ + private String operator; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/OptRecordMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/OptRecordMapper.java new file mode 100644 index 00000000..5e18cf0d --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/OptRecordMapper.java @@ -0,0 +1,28 @@ +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.dto.OptRecordDTO; +import com.nflg.wms.common.pojo.qo.InventorySearchQO; +import com.nflg.wms.common.pojo.qo.OptRecordQO; +import com.nflg.wms.common.pojo.vo.InventoryVO; +import com.nflg.wms.common.pojo.vo.OptRecordVO; +import com.nflg.wms.repository.entity.OptRecord; + +import java.util.List; + +/** + *

+ * 操作记录表 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2026 + */ +public interface OptRecordMapper extends BaseMapper { + + List search(OptRecordQO request); + + +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryMapper.java index cf80fc0b..0a4de2d0 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryMapper.java @@ -28,6 +28,8 @@ public interface WmsInventoryMapper extends BaseMapper { List getLockedNum(String factoryNo, String warehouseNo, List materialNos); + String getWname(String factoryNo, String warehouseNo); + BigDecimal getNumOne(String factoryNo, String warehouseNo, String materialNo); BigDecimal getLockedNumOne(String factoryNo, String warehouseNo, String materialNo); diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IOptRecordService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IOptRecordService.java new file mode 100644 index 00000000..67064063 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IOptRecordService.java @@ -0,0 +1,24 @@ +package com.nflg.wms.repository.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.wms.common.pojo.dto.OptRecordDTO; +import com.nflg.wms.common.pojo.qo.OptRecordQO; +import com.nflg.wms.common.pojo.vo.OptRecordVO; +import com.nflg.wms.repository.entity.OptRecord; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 操作记录表 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2026 + */ +public interface IOptRecordService extends IService { + List search(OptRecordQO request); + + void add(OptRecordDTO optRecordDTO); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryService.java index f32eacdb..8fb257c1 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryService.java @@ -39,6 +39,14 @@ public interface IWmsInventoryService extends IService { */ List getNum(String factoryNo, String warehouseNo, List materialNos); + /** + * 获取可用的库存数量,实际库存减去锁定库存 + * @param factoryNo 工厂编号 + * @param warehouseNo 仓库编号 + * @return 工厂名 + */ + String getName(String factoryNo, String warehouseNo); + /** * 获取可用的库存数量,实际库存减去锁定库存 * @param factoryNo 工厂编号 diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/OptRecordServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/OptRecordServiceImpl.java new file mode 100644 index 00000000..a5db959e --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/OptRecordServiceImpl.java @@ -0,0 +1,42 @@ +package com.nflg.wms.repository.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.wms.common.pojo.dto.OptRecordDTO; +import com.nflg.wms.common.pojo.qo.OptRecordQO; +import com.nflg.wms.common.pojo.vo.OptRecordVO; +import com.nflg.wms.repository.entity.OptRecord; +import com.nflg.wms.repository.mapper.OptRecordMapper; +import com.nflg.wms.repository.service.IOptRecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 操作记录表 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2026 + */ +@Service +public class OptRecordServiceImpl extends ServiceImpl implements IOptRecordService { + + @Override + public List search(OptRecordQO request) { + return baseMapper.search(request); + } + + @Override + public void add(OptRecordDTO optRecordDTO) { + OptRecord optRecord = new OptRecord(); + BeanUtils.copyProperties(optRecordDTO, optRecord); +// baseMapper.insert(optRecord); + boolean saveSuccess = this.save(optRecord); + if (!saveSuccess) { + throw new RuntimeException("新增操作记录失败,请稍后重试"); + } + } +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryServiceImpl.java index 3ab7cd1b..9527fa31 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryServiceImpl.java @@ -179,6 +179,11 @@ public class WmsInventoryServiceImpl extends ServiceImpl + + + + + + + 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 4df885c4..861e4511 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_qc_receive") //只生成指定表 + .addInclude("opt_record") //只生成指定表 .entityBuilder().idType(IdType.ASSIGN_ID) .enableLombok() .enableChainModel()