From 1e0462b7f7b2e69b153fe98105406f88e7f0419c Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Fri, 10 Oct 2025 11:29:04 +0800 Subject: [PATCH] =?UTF-8?q?2025-10-10=20=E9=A2=86=E6=96=99=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E7=AE=A1=E7=90=86=E7=9A=84=E6=9D=90=E6=96=99=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IssureNotifyController.java | 12 +++++ .../mapper/IssureNotifyMapper.java | 21 ++++++++ .../service/IssureNotifyService.java | 6 +++ .../service/impl/IssureNotifyServiceImpl.java | 25 ++++++++++ .../gaotao/modules/orderIssure/vo/Part.java | 26 ++++++++++ .../mapper/orderIssure/IssureNotifyMapper.xml | 49 ++++++++++++++++++- 6 files changed, 137 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gaotao/modules/orderIssure/controller/IssureNotifyController.java b/src/main/java/com/gaotao/modules/orderIssure/controller/IssureNotifyController.java index bd78dc9..4d8fe4e 100644 --- a/src/main/java/com/gaotao/modules/orderIssure/controller/IssureNotifyController.java +++ b/src/main/java/com/gaotao/modules/orderIssure/controller/IssureNotifyController.java @@ -350,4 +350,16 @@ public class IssureNotifyController { return R.ok(); } + /** + * 保存申请单材料明细 + * @param data 材料明细数据 + * @return R + */ + @PostMapping(value="/saveSOIssueNotifyOrderMateria") + @ResponseBody + public R saveSOIssueNotifyOrderMateria(@RequestBody SOIssueNotifyOrderMaterialListData data) { + issureNotifyService.saveSOIssueNotifyOrderMateria(data); + return R.ok("保存成功"); + } + } diff --git a/src/main/java/com/gaotao/modules/orderIssure/mapper/IssureNotifyMapper.java b/src/main/java/com/gaotao/modules/orderIssure/mapper/IssureNotifyMapper.java index a714f15..5aff1a0 100644 --- a/src/main/java/com/gaotao/modules/orderIssure/mapper/IssureNotifyMapper.java +++ b/src/main/java/com/gaotao/modules/orderIssure/mapper/IssureNotifyMapper.java @@ -154,4 +154,25 @@ public interface IssureNotifyMapper extends BaseMapper { void updateNotifyDetail(SOIssueNotifyOrderMaterialListData data); + + /** + * 保存申请单材料明细 + * @param data 材料明细数据 + */ + void saveSOIssueNotifyOrderMateria(SOIssueNotifyOrderMaterialListData data); + + /** + * 获取下一个BOMItemNo + * @param data 查询条件 + * @return 下一个BOMItemNo + */ + String getNextBOMItemNoForMateria(SOIssueNotifyOrderMaterialListData data); + + /** + * 根据站点和物料编码查询物料信息 + * @param site 站点 + * @param partNo 物料编码 + * @return 物料信息 + */ + PartEntity getPartBySiteAndPartNo(@Param("site") String site, @Param("partNo") String partNo); } diff --git a/src/main/java/com/gaotao/modules/orderIssure/service/IssureNotifyService.java b/src/main/java/com/gaotao/modules/orderIssure/service/IssureNotifyService.java index 21c3cf3..12f729e 100644 --- a/src/main/java/com/gaotao/modules/orderIssure/service/IssureNotifyService.java +++ b/src/main/java/com/gaotao/modules/orderIssure/service/IssureNotifyService.java @@ -144,4 +144,10 @@ public interface IssureNotifyService { void updateNotifyDetail(List data); + + /** + * 保存申请单材料明细 + * @param data 材料明细数据 + */ + void saveSOIssueNotifyOrderMateria(SOIssueNotifyOrderMaterialListData data); } diff --git a/src/main/java/com/gaotao/modules/orderIssure/service/impl/IssureNotifyServiceImpl.java b/src/main/java/com/gaotao/modules/orderIssure/service/impl/IssureNotifyServiceImpl.java index aa29649..0282754 100644 --- a/src/main/java/com/gaotao/modules/orderIssure/service/impl/IssureNotifyServiceImpl.java +++ b/src/main/java/com/gaotao/modules/orderIssure/service/impl/IssureNotifyServiceImpl.java @@ -503,5 +503,30 @@ public class IssureNotifyServiceImpl implements IssureNotifyService { } } + @Override + public void saveSOIssueNotifyOrderMateria(SOIssueNotifyOrderMaterialListData data) { + // 校验物料的领料方式和出库仓库 + if (data.getComponentPartNo() != null && !data.getComponentPartNo().trim().isEmpty()) { + PartEntity part = issureNotifyMapper.getPartBySiteAndPartNo(data.getSite(), data.getComponentPartNo()); + + if (part == null) { + throw new RuntimeException("物料编码[" + data.getComponentPartNo() + "]不存在!"); + } + + // 检查领料方式和出库仓库是否为空 + if ((part.getIssueMethod() == null || part.getIssueMethod().trim().isEmpty()) || + (part.getOutboundWarehouseId() == null || part.getOutboundWarehouseId().trim().isEmpty())) { + throw new RuntimeException("物料编码[" + data.getComponentPartNo() + "]的领料方式或出库仓库未配置,请先在物料主数据中维护!"); + } + } + + // 获取下一个BOMItemNo + String nextBOMItemNo = issureNotifyMapper.getNextBOMItemNoForMateria(data); + data.setbOMItemNo(nextBOMItemNo); + + // 保存材料明细 + issureNotifyMapper.saveSOIssueNotifyOrderMateria(data); + } + } diff --git a/src/main/java/com/gaotao/modules/orderIssure/vo/Part.java b/src/main/java/com/gaotao/modules/orderIssure/vo/Part.java index 6327d02..7057859 100644 --- a/src/main/java/com/gaotao/modules/orderIssure/vo/Part.java +++ b/src/main/java/com/gaotao/modules/orderIssure/vo/Part.java @@ -259,6 +259,16 @@ public class Part { */ private String costRemark; + /** + * 领料方式 + */ + private String issueMethod; + + /** + * 出库仓库ID + */ + private String outboundWarehouseId; + public Integer getId() { return id; } @@ -666,5 +676,21 @@ public class Part { public void setCostRemark(String costRemark) { this.costRemark = costRemark; } + + public String getIssueMethod() { + return issueMethod; + } + + public void setIssueMethod(String issueMethod) { + this.issueMethod = issueMethod; + } + + public String getOutboundWarehouseId() { + return outboundWarehouseId; + } + + public void setOutboundWarehouseId(String outboundWarehouseId) { + this.outboundWarehouseId = outboundWarehouseId; + } } diff --git a/src/main/resources/mapper/orderIssure/IssureNotifyMapper.xml b/src/main/resources/mapper/orderIssure/IssureNotifyMapper.xml index 6ee653e..16c95f8 100644 --- a/src/main/resources/mapper/orderIssure/IssureNotifyMapper.xml +++ b/src/main/resources/mapper/orderIssure/IssureNotifyMapper.xml @@ -325,7 +325,10 @@ RecordVersion,OutWorkOrderFlag,ProjectID,OrderType,AuthRuleID,bu) c.issue_method, a.warehouse_id, W.WareHouseName AS warehouseName, - a.BOMItemNo as bOMItemNo + a.BOMItemNo as bOMItemNo, + a.component_scrap, + a.first_inspection_qty, + a.standard_dosage from SOIssueNotifyOrderMaterialList a left join SOIssueNotifyOrderList b on a.site = b.site and a.NotifyNo = b.NotifyNo and a.ItemNo = b.ItemNo left join SOBOM c on c.site = b.site and b.SOOrderNo = c.OrderNo and c.ItemNo = b.OpsItemNo and c.ComponentPartNo = a.ComponentPartNo @@ -488,6 +491,33 @@ RecordVersion,OutWorkOrderFlag,ProjectID,OrderType,AuthRuleID,bu) values (#{site},#{notifyNo},'关闭',#{username},GetDate(),#{closeRemark}) + + + + + + INSERT INTO SOIssueNotifyOrderMaterialList + (NotifyNo, Site, ItemNo, BOMItemNo, ComponentPartNo, QtyToIssue, QtyToIssue_Original, issueType, remark, warehouse_id, component_scrap, first_inspection_qty, standard_dosage) + VALUES + (#{notifyNo}, #{site}, #{itemNo,jdbcType=FLOAT}, #{bOMItemNo}, #{componentPartNo}, #{qtyToIssue,jdbcType=FLOAT}, #{qtyToIssueOriginal,jdbcType=FLOAT}, #{issueType}, #{remark}, #{warehouseId}, #{componentScrap,jdbcType=FLOAT}, #{firstInspectionQty,jdbcType=FLOAT}, #{standardDosage,jdbcType=FLOAT}) + + + SELECT + PartNo as partNo, + PartDescription as partDesc, + Site as site, + issue_method as issueMethod, + outbound_warehouse_id as outboundWarehouseId + FROM part + WHERE Site = #{site} AND PartNo = #{partNo} + \ No newline at end of file