Browse Source

2025-10-10

领料申请管理的材料明细新增
master
fengyuan_yang 3 months ago
parent
commit
1e0462b7f7
  1. 12
      src/main/java/com/gaotao/modules/orderIssure/controller/IssureNotifyController.java
  2. 21
      src/main/java/com/gaotao/modules/orderIssure/mapper/IssureNotifyMapper.java
  3. 6
      src/main/java/com/gaotao/modules/orderIssure/service/IssureNotifyService.java
  4. 25
      src/main/java/com/gaotao/modules/orderIssure/service/impl/IssureNotifyServiceImpl.java
  5. 26
      src/main/java/com/gaotao/modules/orderIssure/vo/Part.java
  6. 49
      src/main/resources/mapper/orderIssure/IssureNotifyMapper.xml

12
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("保存成功");
}
}

21
src/main/java/com/gaotao/modules/orderIssure/mapper/IssureNotifyMapper.java

@ -154,4 +154,25 @@ public interface IssureNotifyMapper extends BaseMapper<SOIssueNotifyHeader> {
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);
}

6
src/main/java/com/gaotao/modules/orderIssure/service/IssureNotifyService.java

@ -144,4 +144,10 @@ public interface IssureNotifyService {
void updateNotifyDetail(List<SOIssueNotifyOrderMaterialListData> data);
/**
* 保存申请单材料明细
* @param data 材料明细数据
*/
void saveSOIssueNotifyOrderMateria(SOIssueNotifyOrderMaterialListData data);
}

25
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);
}
}

26
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;
}
}

49
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})
</select>
<!-- 获取下一个BOMItemNo -->
<select id="getNextBOMItemNoForMateria" resultType="String">
SELECT
CASE
WHEN MAX(BOMItemNo) IS NULL THEN '10'
ELSE
CASE
WHEN ISNUMERIC(MAX(BOMItemNo)) = 1 THEN
CAST(CAST(MAX(BOMItemNo) AS DECIMAL(10,0)) + 10 AS VARCHAR)
ELSE '10'
END
END
FROM SOIssueNotifyOrderMaterialList
WHERE Site = #{site}
AND NotifyNo = #{notifyNo}
AND ItemNo = #{itemNo}
AND ISNUMERIC(BOMItemNo) = 1
</select>
<!-- 保存申请单材料明细 -->
<insert id="saveSOIssueNotifyOrderMateria">
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})
</insert>
<select id="searchNotifyLogClose" resultType="SOIssueNotifyLogData">
select id,Site,NotifyNo,[Action],username,ActionTime,ActionRemark ,dbo.plm_get_user_display(Site,username) userDisplay
from SOIssueNotifyLog where site=#{site} and NotifyNo=#{notifyNo}
@ -537,7 +567,22 @@ RecordVersion,OutWorkOrderFlag,ProjectID,OrderType,AuthRuleID,bu)
<update id="updateNotifyDetail">
UPDATE SOIssueNotifyOrderMaterialList
SET QtyToIssue = #{qtyToIssue,jdbcType=DOUBLE}
SET QtyToIssue = #{qtyToIssue,jdbcType=DOUBLE},
component_scrap = #{componentScrap,jdbcType=DOUBLE},
first_inspection_qty = #{firstInspectionQty,jdbcType=DOUBLE},
standard_dosage = #{standardDosage,jdbcType=DOUBLE}
WHERE Site = #{site} and NotifyNo = #{notifyNo} and ItemNo = #{itemNo} and BOMItemNo = #{bOMItemNo}
</update>
<!-- 根据站点和物料编码查询物料信息 -->
<select id="getPartBySiteAndPartNo" resultType="com.gaotao.modules.orderIssure.entity.PartEntity">
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}
</select>
</mapper>
Loading…
Cancel
Save