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 new file mode 100644 index 00000000..c7672fca --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java @@ -0,0 +1,327 @@ +package com.nflg.wms.admin.controller; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import cn.idev.excel.EasyExcel; +import cn.idev.excel.enums.CellDataTypeEnum; +import cn.idev.excel.metadata.data.ImageData; +import cn.idev.excel.metadata.data.WriteCellData; +import cn.idev.excel.write.metadata.WriteSheet; +import cn.idev.excel.write.metadata.fill.FillConfig; +import com.nflg.wms.admin.service.SapService; +import com.nflg.wms.admin.util.NoUtil; +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.pojo.ApiResult; +import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.dto.DeliverNormalOrderItemDTO; +import com.nflg.wms.common.pojo.dto.ZWM00MB007DTO; +import com.nflg.wms.common.pojo.qo.InProduceOrderGenerateMaterialsQO; +import com.nflg.wms.common.pojo.qo.InProduceOrderSaveQO; +import com.nflg.wms.common.pojo.qo.InProduceOrderSearchQO; +import com.nflg.wms.common.pojo.vo.InProduceOrderMaterialVO; +import com.nflg.wms.common.pojo.vo.WmsInProduceOrderItemVO; +import com.nflg.wms.common.util.DateTimeUtil; +import com.nflg.wms.common.util.UserUtil; +import com.nflg.wms.common.util.VUtil; +import com.nflg.wms.repository.entity.WmsBom; +import com.nflg.wms.repository.entity.WmsInProduceOrder; +import com.nflg.wms.repository.entity.WmsInProduceOrderItem; +import com.nflg.wms.repository.service.IWmsBomService; +import com.nflg.wms.repository.service.IWmsInProduceOrderItemService; +import com.nflg.wms.repository.service.IWmsInProduceOrderService; +import com.nflg.wms.starter.BaseController; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.text.DecimalFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; + +/** + * 生产订单入库管理 + */ +@Slf4j +@RestController +@RequestMapping("/in/produce") +public class InProduceOrderController extends BaseController { + + private static final DecimalFormat DF = new DecimalFormat("0.00"); + @Resource + private SapService sapService; + @Resource + private IWmsInProduceOrderService produceOrderService; + @Resource + private IWmsInProduceOrderItemService produceOrderItemService; + @Resource + private IWmsBomService bomService; + + /** + * 从SAP查询生产订单信息 + * @param no 生产订单号 + * @return 订单信息 + */ + @GetMapping("searchFromSAP") + public ApiResult searchFromSAP(@Valid @RequestParam @NotBlank String no){ + return ApiResult.success(sapService.zwm00Mb007(no)); + } + + /** + * 生成物料列表 + * @param request 请求参数 + * @return 生成结果 + */ + @PostMapping("generateMaterials") + public ApiResult generateMaterials(@Valid @RequestBody InProduceOrderGenerateMaterialsQO request) { + InProduceOrderMaterialVO vo=new InProduceOrderMaterialVO() + .setMaterialNo(request.getMATNR()) + .setMaterialDesc(request.getMAKTX()) + .setUnit(request.getMEINS()) + .setNum(request.getNum()) + .setFactoryNo(request.getPWERK()) + .setWarehouseNo(request.getLGORT()) + .setOderNum(request.getPSMNG()); + if (request.getList()){ + List children = bomService.getChildren(request.getMATNR()); + vo.setChildren(children.stream().map(it -> new InProduceOrderMaterialVO() + .setMaterialNo(it.getNo()) + .setMaterialDesc(it.getDescribe()) + .setUnit(request.getMEINS()) + .setNum(request.getNum().multiply(it.getNum())) + .setFactoryNo(request.getPWERK()) + .setWarehouseNo(request.getLGORT()) + .setOderNum(request.getPSMNG()) + ).toList() + ); + } + return ApiResult.success(vo); + } + + /** + * 保存 + * @param request 请求参数 + */ + @Transactional + @PostMapping("save") + public ApiResult save(@Valid @RequestBody InProduceOrderSaveQO request){ + if (Objects.isNull(request.getId())){ + WmsInProduceOrder order=new WmsInProduceOrder() + .setNo(NoUtil.getInProduceNo()) + .setOrderNo(request.getAUFNR()) + .setList(request.getList()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + produceOrderService.save(order); + request.setId(order.getId()); + }else { + WmsInProduceOrder order=produceOrderService.getById(request.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(order)).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() + .setOrderId(request.getId()) + .setParentId(0L) + .setNum(request.getNum()) + .setMaterialNo(request.getMATNR()) + .setMaterialDesc(request.getMAKTX()) + .setUnit(request.getMEINS()) + .setFactoryNo(request.getPWERK()) + .setWarehouseNo(request.getLGORT()) + .setOrderNum(request.getPSMNG()); +// .setBatchNo(NoUtil.getBatchNo("")); + produceOrderItemService.save(parent); + if (request.getList()){ + List children = bomService.getChildren(request.getMATNR()); + produceOrderItemService.saveBatch(children.stream().map(it -> new WmsInProduceOrderItem() + .setOrderId(request.getId()) + .setParentId(parent.getId()) + .setNum(request.getNum().multiply(it.getNum())) + .setMaterialNo(it.getNo()) + .setMaterialDesc(it.getDescribe()) + .setUnit(request.getMEINS()) + .setFactoryNo(request.getPWERK()) + .setWarehouseNo(request.getLGORT()) + .setOrderNum(request.getPSMNG()) +// .setBatchNo(NoUtil.getBatchNo("")) + ).toList() + ); + } + return ApiResult.success(); + } + + /** + * 搜索 + * @param request 搜索参数 + * @return 搜索结果 + */ + @PostMapping("search") + public ApiResult> search(@Valid @RequestBody InProduceOrderSearchQO request){ + return ApiResult.success(produceOrderService.search(request)); + } + + /** + * 获取订单的物料列表 + * @param id 订单ID + * @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(); + InProduceOrderMaterialVO vo=new InProduceOrderMaterialVO() + .setMaterialNo(parent.getMaterialNo()) + .setMaterialDesc(parent.getMaterialDesc()) + .setUnit(parent.getUnit()) + .setNum(parent.getNum()) + .setFactoryNo(parent.getFactoryNo()) + .setWarehouseNo(parent.getWarehouseNo()) + .setOderNum(parent.getOrderNum()); + vo.setChildren(list.stream() + .filter(item -> Objects.equals(item.getParentId(), parent.getId())) + .map(item -> new InProduceOrderMaterialVO() + .setMaterialNo(item.getMaterialNo()) + .setMaterialDesc(item.getMaterialDesc()) + .setUnit(item.getUnit()) + .setNum(item.getNum()) + .setFactoryNo(item.getFactoryNo()) + .setWarehouseNo(item.getWarehouseNo()) + .setOderNum(item.getOrderNum()) + ).toList() + ); + return ApiResult.success(vo); + } + + /** + * 删除 + * @param id 订单ID + */ + @Transactional + @GetMapping("delete") + 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)) + .throwMessage("删除失败:非待收货状态"); + produceOrderService.removeById(id); + produceOrderItemService.deleteByOrderId(id); + return ApiResult.success(); + } + + /** + * 导出物料条码pdf(逐个) + * @param id 订单ID + * @param type 1:逐个,2:一页 + */ + @GetMapping("exportMaterialsPdf") + 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); + if (order.getList()) { + list.removeIf(item -> Objects.equals(item.getParentId(), 0L)); + } + List datas = new ArrayList<>(); + for (WmsInProduceOrderItem item : list) { + BigDecimal[] result = item.getNum().divideAndRemainder(BigDecimal.ONE); + for (int i = 0, count = result[0].intValue(); i < count; i++) { + DeliverNormalOrderItemDTO dto = new DeliverNormalOrderItemDTO(); + dto.setMaterialNo(item.getMaterialNo()); + dto.setMaterialDesc(item.getMaterialDesc()); + dto.setExternalOrderNo(order.getOrderNo()); + dto.setRowNo(""); + dto.setIndex(i); + dto.setPrintNo(IdUtil.getSnowflakeNextIdStr()); + if (i == count - 1 && result[1].compareTo(BigDecimal.ZERO) > 0) { + dto.setPrintNum(DF.format(result[1])); + } else { + dto.setPrintNum(DF.format(BigDecimal.ONE)); + } + dto.setBatchNo("");//NoUtil.getBatchNo("") + dto.setQrCode("data:image/png;base64," + Base64.getEncoder().encodeToString(QRCodeUtil.generateQRCode(generateQRContent(dto, ""), 100, 100))); + datas.add(dto); + } + } + Map variables = new HashMap<>(); + variables.put("list", datas); + 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 { + 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); + return content; + } + + /** + * 导出报工单PDF + * @param id 订单id + */ + @GetMapping("exportOrderPdf") + public void exportDeliverOrder(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception { + WmsInProduceOrder order = produceOrderService.getById(id); + VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); + List list = produceOrderItemService.getVOByOrderId(id); + if (order.getList()) { + list.removeIf(item -> Objects.equals(item.getParentId(), 0L)); + } + WmsInProduceOrderItemVO first=list.get(0); + Map info = new HashMap<>(); + info.put("no", order.getNo()); + info.put("factory", first.getFactoryNo()); + info.put("warehouse", first.getWarehouseNo()); + info.put("today", DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd")); + WriteCellData writeCellData = new WriteCellData<>(); + writeCellData.setType(CellDataTypeEnum.EMPTY); + ImageData imageData = new ImageData(); + imageData.setImageType(ImageData.ImageType.PICTURE_TYPE_PNG); + imageData.setImage(QRCodeUtil.generateQRCode(order.getNo(), 100, 100)); + imageData.setTop(5); + imageData.setRight(5); + imageData.setBottom(5); + imageData.setLeft(5); + imageData.setRelativeFirstRowIndex(0); + imageData.setRelativeFirstColumnIndex(0); + imageData.setRelativeLastRowIndex(2); + imageData.setRelativeLastColumnIndex(2); + writeCellData.setImageDataList(List.of(imageData)); + info.put("qrCodeUrl", writeCellData); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(order.getNo() + "生产入库单.xlsx", StandardCharsets.UTF_8)); + try (cn.idev.excel.ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(new ClassPathResource("template/生产入库单模版.xlsx").getInputStream()).build()) { + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); + excelWriter.fill(list, fillConfig, writeSheet); + excelWriter.fill(info, writeSheet); + } + } +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalOrderController.java index 5be6c55f..da5ec370 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalOrderController.java @@ -301,6 +301,8 @@ public class NormalOrderController extends BaseController { DeliverNormalOrderItemDTO dto = new DeliverNormalOrderItemDTO(); dto.setMaterialNo(order.getItemCode()); dto.setMaterialDesc(order.getItemName()); + dto.setExternalOrderNo(order.getPoNum()); + dto.setRowNo(order.getPoLineNumber()); dto.setIndex(0); dto.setPrintNo(order.getId() + "-" + 0); dto.setPrintNum(DF.format(order.getOrderQty())); 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 a4ebc4e0..04d6af08 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 @@ -93,13 +93,17 @@ public class SapService { JCoFunction function = exec("ZWM00_MB107", parameters, tables); - JCoStructure sreturn = function.getExportParameterList().getStructure("E_RETURN"); - VUtil.trueThrowBusinessError(!StrUtil.equals(sreturn.getString("TYPE"), "S")) - .throwMessage("SAP错误:" + sreturn.getString("MSG")); + JCoParameterList pl = function.getExportParameterList(); + VUtil.trueThrowBusinessError(StrUtil.isBlank(pl.getString("E_MBLNR"))) + .throwMessage("SAP错误"); + VUtil.trueHandle(StrUtil.isBlank(pl.getString("E_MBLNR"))).trueHandle(() -> { + JCoTable table = function.getTableParameterList().getTable("T_RETURN"); + log.error("SAP错误信息:{}", table); + }); return new Zwm00Mb107DTO() - .setE_MBLNR(function.getExportParameterList().getString("E_MBLNR")) - .setE_MJAHR(function.getExportParameterList().getString("E_MJAHR")); + .setE_MBLNR(pl.getString("E_MBLNR")) + .setE_MJAHR(pl.getString("E_MJAHR")); } /** diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java index c2cc2824..830aed3e 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java @@ -32,4 +32,12 @@ public class NoUtil { public static String getOutPurchaseNo(){ return "OP"+DateTimeUtil.format(LocalDateTime.now(), "yyyyMMddHHmmss"); } + + /** + * 生成生产入库订单单号 + * @return 单号 + */ + public static String getInProduceNo(){ + return "IP"+DateTimeUtil.format(LocalDateTime.now(), "yyyyMMddHHmmss"); + } } 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 00000000..64ddafbb Binary files /dev/null and b/nflg-wms-admin/src/main/resources/template/生产入库单模版.xlsx differ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderGenerateMaterialsQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderGenerateMaterialsQO.java new file mode 100644 index 00000000..b30d9f18 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderGenerateMaterialsQO.java @@ -0,0 +1,25 @@ +package com.nflg.wms.common.pojo.qo; + +import com.nflg.wms.common.pojo.dto.ZWM00MB007DTO; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Data +@Accessors(chain = true) +public class InProduceOrderGenerateMaterialsQO extends ZWM00MB007DTO { + + /** + * 是否清单件 + */ + @NotNull + private Boolean list; + + /** + * 收货数量 + */ + @NotNull + private BigDecimal num; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderSaveQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderSaveQO.java new file mode 100644 index 00000000..4aecff63 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderSaveQO.java @@ -0,0 +1,9 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; + +@Data +public class InProduceOrderSaveQO extends InProduceOrderGenerateMaterialsQO{ + + private Long id; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderSearchQO.java new file mode 100644 index 00000000..95b6f466 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceOrderSearchQO.java @@ -0,0 +1,12 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; + +@Data +public class InProduceOrderSearchQO extends SearchBaseQO{ + + /** + * 报工单号或生产订单号 + */ + private String no; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InProduceOrderMaterialVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InProduceOrderMaterialVO.java new file mode 100644 index 00000000..118de4b1 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InProduceOrderMaterialVO.java @@ -0,0 +1,66 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@Accessors(chain = true) +public class InProduceOrderMaterialVO { + + private Long id; + + /** + * 订单id + */ + private Long orderId; + + /** + * 父级id + */ + private Long parentId; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 物料描述 + */ + private String materialDesc; + + /** + * 订单数量 + */ + private BigDecimal oderNum; + + /** + * 数量 + */ + private BigDecimal num; + + /** + * 单位 + */ + private String unit; + + /** + * 工厂 + */ + private String factoryNo; + + /** + * 仓库 + */ + private String warehouseNo; + + /** + * 批次号 + */ + private String batchNo; + + private List children; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInProduceOrderItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInProduceOrderItemVO.java new file mode 100644 index 00000000..b74599e5 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInProduceOrderItemVO.java @@ -0,0 +1,51 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Data +@Accessors(chain = true) +public class WmsInProduceOrderItemVO { + + /** + * 父级id + */ + private Long parentId; + + /** + * 生产订单号 + */ + private String orderNo; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 物料描述 + */ + private String materialDesc; + + /** + * 数量 + */ + private BigDecimal num; + + /** + * 单位 + */ + private String unit; + + /** + * 工厂 + */ + private String factoryNo; + + /** + * 仓库 + */ + private String warehouseNo; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInProduceOrder.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInProduceOrder.java new file mode 100644 index 00000000..df5a1827 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInProduceOrder.java @@ -0,0 +1,83 @@ +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 2025 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("wms_in_produce_order") +public class WmsInProduceOrder implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 单据号 + */ + private String no; + + /** + * 生产订单号 + */ + private String orderNo; + + /** + * 是否清单件 + */ + private Boolean list; + + /** + * 状态,0:待收货;1:已收货; + */ + private Short state; + + /** + * 物料凭证编号 + */ + private String mblnr; + + /** + * 物料凭证年度 + */ + private String mjahr; + + /** + * 创建人 + */ + 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/WmsInProduceOrderItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInProduceOrderItem.java new file mode 100644 index 00000000..06751c6d --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInProduceOrderItem.java @@ -0,0 +1,83 @@ +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; + +/** + *

+ * + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("wms_in_produce_order_item") +public class WmsInProduceOrderItem implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 订单id + */ + private Long orderId; + + /** + * 父级id + */ + private Long parentId; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 物料描述 + */ + private String materialDesc; + + /** + * 订单数量 + */ + private BigDecimal orderNum; + + /** + * 数量 + */ + private BigDecimal num; + + /** + * 单位 + */ + private String unit; + + /** + * 工厂 + */ + private String factoryNo; + + /** + * 仓库 + */ + private String warehouseNo; + + /** + * 批次号 + */ + private String batchNo; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsBomMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsBomMapper.java index 3e11c653..1c31eece 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsBomMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsBomMapper.java @@ -3,6 +3,8 @@ package com.nflg.wms.repository.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.nflg.wms.repository.entity.WmsBom; +import java.util.List; + /** *

* 齐套 Mapper 接口 @@ -13,4 +15,5 @@ import com.nflg.wms.repository.entity.WmsBom; */ public interface WmsBomMapper extends BaseMapper { + List getChildren(String materialNo); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInProduceOrderItemMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInProduceOrderItemMapper.java new file mode 100644 index 00000000..c1a9cf18 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInProduceOrderItemMapper.java @@ -0,0 +1,20 @@ +package com.nflg.wms.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.wms.common.pojo.vo.WmsInProduceOrderItemVO; +import com.nflg.wms.repository.entity.WmsInProduceOrderItem; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface WmsInProduceOrderItemMapper extends BaseMapper { + + List getVOByOrderId(Long id); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInProduceOrderMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInProduceOrderMapper.java new file mode 100644 index 00000000..d9553bfa --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInProduceOrderMapper.java @@ -0,0 +1,16 @@ +package com.nflg.wms.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.wms.repository.entity.WmsInProduceOrder; + +/** + *

+ * 生产入库订单 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface WmsInProduceOrderMapper extends BaseMapper { + +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBomService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBomService.java index 378f41e8..ba584580 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBomService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBomService.java @@ -26,4 +26,6 @@ public interface IWmsBomService extends IService { PageData search(@Valid BomSearchQO request); List searchNonPage(@Valid BomSearchQO request); + + List getChildren(String materialNo); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInProduceOrderItemService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInProduceOrderItemService.java new file mode 100644 index 00000000..7fef7af5 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInProduceOrderItemService.java @@ -0,0 +1,26 @@ +package com.nflg.wms.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.wms.common.pojo.vo.WmsInProduceOrderItemVO; +import com.nflg.wms.repository.entity.WmsInProduceOrderItem; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IWmsInProduceOrderItemService extends IService { + + void deleteByOrderId(Long id); + + List getByOrderId(@Valid @NotNull Long id); + + List getVOByOrderId(@Valid @NotNull Long id); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInProduceOrderService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInProduceOrderService.java new file mode 100644 index 00000000..66f7d2b3 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInProduceOrderService.java @@ -0,0 +1,20 @@ +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.qo.InProduceOrderSearchQO; +import com.nflg.wms.repository.entity.WmsInProduceOrder; +import jakarta.validation.Valid; + +/** + *

+ * 生产入库订单 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IWmsInProduceOrderService extends IService { + + IPage search(@Valid InProduceOrderSearchQO request); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBomServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBomServiceImpl.java index cf9e1e10..1efb25e7 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBomServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBomServiceImpl.java @@ -105,4 +105,9 @@ public class WmsBomServiceImpl extends ServiceImpl impleme .toList() )).toList(); } + + @Override + public List getChildren(String materialNo) { + return baseMapper.getChildren(materialNo); + } } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInProduceOrderItemServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInProduceOrderItemServiceImpl.java new file mode 100644 index 00000000..f0af48d6 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInProduceOrderItemServiceImpl.java @@ -0,0 +1,38 @@ +package com.nflg.wms.repository.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.wms.common.pojo.vo.WmsInProduceOrderItemVO; +import com.nflg.wms.repository.entity.WmsInProduceOrderItem; +import com.nflg.wms.repository.mapper.WmsInProduceOrderItemMapper; +import com.nflg.wms.repository.service.IWmsInProduceOrderItemService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class WmsInProduceOrderItemServiceImpl extends ServiceImpl implements IWmsInProduceOrderItemService { + + @Override + public void deleteByOrderId(Long id) { + remove(new LambdaQueryWrapper().eq(WmsInProduceOrderItem::getOrderId, id)); + } + + @Override + public List getByOrderId(Long id) { + return lambdaQuery().eq(WmsInProduceOrderItem::getOrderId, id).list(); + } + + @Override + public List getVOByOrderId(Long id) { + return baseMapper.getVOByOrderId(id); + } +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInProduceOrderServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInProduceOrderServiceImpl.java new file mode 100644 index 00000000..636ade74 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInProduceOrderServiceImpl.java @@ -0,0 +1,38 @@ +package com.nflg.wms.repository.service.impl; + +import cn.hutool.core.util.StrUtil; +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.InProduceOrderSearchQO; +import com.nflg.wms.repository.entity.WmsInProduceOrder; +import com.nflg.wms.repository.mapper.WmsInProduceOrderMapper; +import com.nflg.wms.repository.service.IWmsInProduceOrderService; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + *

+ * 生产入库订单 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class WmsInProduceOrderServiceImpl extends ServiceImpl implements IWmsInProduceOrderService { + + @Override + public IPage search(InProduceOrderSearchQO request) { + return lambdaQuery() + .and(StrUtil.isNotBlank(request.getNo()),wrapper -> + wrapper.like(WmsInProduceOrder::getNo, request.getNo()) + .or() + .like(WmsInProduceOrder::getOrderNo, request.getNo()) + ) + .ge(Objects.nonNull(request.getStartDate()), WmsInProduceOrder::getCreateTime, request.getStartDate()) + .le(Objects.nonNull(request.getEndDate()), WmsInProduceOrder::getCreateTime, request.getEndDate()) + .page(new Page<>(request.getPage(), request.getPageSize())); + } +} diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsBomMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsBomMapper.xml index 7d612ad7..a0d8f1cd 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsBomMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsBomMapper.xml @@ -2,4 +2,10 @@ + diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsInProduceOrderItemMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsInProduceOrderItemMapper.xml new file mode 100644 index 00000000..9b09c8aa --- /dev/null +++ b/nflg-wms-repository/src/main/resources/mapper/WmsInProduceOrderItemMapper.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsInProduceOrderMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsInProduceOrderMapper.xml new file mode 100644 index 00000000..0b65691d --- /dev/null +++ b/nflg-wms-repository/src/main/resources/mapper/WmsInProduceOrderMapper.xml @@ -0,0 +1,5 @@ + + + + + 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 2a8c63ab..1e446cd5 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("basde_serial_number") //只生成指定表 + .addInclude("wms_in_produce_order_item") //只生成指定表 .entityBuilder().idType(IdType.ASSIGN_ID) .enableLombok() .enableChainModel()