From 48073b7326d2d2162bb8a46204f435ba2d9f84d5 Mon Sep 17 00:00:00 2001
From: maxiangong <298222784@qq.com>
Date: Tue, 26 May 2026 16:17:36 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A4=96=E5=8D=8F=E7=BB=93=E7=AE=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../desk/oem/mapper/OemStatementMapper.xml | 10 +-
.../service/impl/OemStatementServiceImpl.java | 97 ++++++++++++++++---
2 files changed, 88 insertions(+), 19 deletions(-)
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml
index 5b525e31f..e05bcd53b 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml
@@ -122,7 +122,7 @@
c.OC_NAME,
d.REWORK_CODE,
d.REWORK_NO,
- d.wo_code,
+ f.wo_code,
d.PUT_STORE_TIME AS PUT_STORE_TIME,
to_char(d.PUT_STORE_TIME, 'yyyy-MM-dd') as PUT_STORE_DATE,
d.MAKE_QTY,
@@ -158,6 +158,7 @@
INNER JOIN BS_OEM c ON a.OC_ID = c.ID AND c.IS_DELETED = 0
INNER JOIN MES_WORK_ORDER d ON a.WO_ID = d.ID AND d.IS_DELETED = 0
INNER JOIN MES_YIELD_ORDER e ON d.YO_ID = e.ID AND e.IS_DELETED = 0
+ INNER JOIN MES_WORK_ORDER_RUN f ON d.WOR_ID = f.ID AND f.IS_DELETED = 0
INNER JOIN MES_OEM_PROCESS g ON b.ID = g.PROCESS_ID AND g.IS_DELETED = 0
LEFT JOIN MES_OEM_STATEMENT h ON h.WP_ID = a.ID AND h.IS_DELETED = 0
INNER JOIN BS_CRAFT_ABILITY i ON i.ID = a.CA_ID AND i.IS_DELETED = 0
@@ -173,7 +174,7 @@
AND d.PUT_STORE_TIME < #{postPlatingStorageTimeEnd} + 1
- AND d.WO_CODE LIKE CONCAT('%', CONCAT(#{woCode}, '%'))
+ AND f.WO_CODE LIKE CONCAT('%', CONCAT(#{woCode}, '%'))
AND a.PPS_ID = #{ppsId}
@@ -390,7 +391,7 @@
c.oc_name,
d.rework_code,
d.rework_no,
- d.wo_code,
+ f.wo_code,
d.put_store_time,
to_char(d.put_store_time, 'yyyy-MM-dd') as PUT_STORE_DATE,
d.make_qty,
@@ -423,6 +424,7 @@
INNER JOIN MJMES.bs_oem_customer c on a.oc_id = c.oc_id
INNER JOIN MJMES.pr_work_order d ON a.wo_id = d.wo_id
INNER JOIN MJMES.pj_yield_order e ON d.yo_id = e.yo_id
+ INNER JOIN MJMES.pr_work_order_run f on d.WOR_ID = f.WOR_ID
INNER JOIN MES_OEM_PROCESS g ON a.pps_id = g.PROCESS_ID AND g.IS_DELETED = 0
LEFT JOIN MES_OEM_STATEMENT h ON h.WP_ID = a.wp_id AND h.IS_DELETED = 0
INNER JOIN BS_CRAFT_ABILITY i ON i.ID = a.CA_ID AND i.IS_DELETED = 0
@@ -437,7 +439,7 @@
AND d.PUT_STORE_TIME < #{postPlatingStorageTimeEnd} + 1
- AND d.WO_CODE LIKE CONCAT('%', CONCAT(#{woCode}, '%'))
+ AND f.WO_CODE LIKE CONCAT('%', CONCAT(#{woCode}, '%'))
AND a.PPS_ID = #{ppsId}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java
index 49f027066..fab0ba279 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java
@@ -1352,7 +1352,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetList = statementVO.getPriceSheetList();
+ if (CollectionUtils.isEmpty(priceSheetList)) {
+ return false;
+ }
+ // 结算单字段
+ String ocCode = statementVO.getOcCode();
+ String psName = statementVO.getPsName();
+ String partCode = statementVO.getPartCode();
+ String ypCode = statementVO.getYpCode();
+ for (PriceSheetVO sheet : priceSheetList) {
+ boolean match = StringUtils.equals(sheet.getSplycode(), ocCode) && StringUtils.equals(sheet.getGxinfo(), psName) && StringUtils.equals(sheet.getPrtno(), partCode) && StringUtils.equals(sheet.getWono(), ypCode);
+ if (match && price != null && price.compareTo(BigDecimal.ZERO) != 0) {
+ match = PriceMatcher.isContainsPrice(sheet.getAu_ag_price(), price);
+ }
+ if (match && ruleTieredPricing(statementVO, sheet)) {
+ return setSettlementInfo(statementVO, sheet);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 匹配规则3 : 供应商代码 + 工序 + 零件号 + 生产标识 + 现执行价格
+ *
+ * @param statementVO
+ * @param price
+ * @return
+ */
+ private boolean rule3(StatementVO statementVO, BigDecimal price) {
List priceSheetList = statementVO.getPriceSheetList();
if (CollectionUtils.isEmpty(priceSheetList)) {
return false;
@@ -1793,12 +1832,40 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetList = statementVO.getPriceSheetList();
+ if (CollectionUtils.isEmpty(priceSheetList)) {
+ return false;
+ }
+ // 结算单字段
+ String ocCode = statementVO.getOcCode();
+ String psName = statementVO.getPsName();
+ String partCode = statementVO.getPartCode();
+ for (PriceSheetVO sheet : priceSheetList) {
+ boolean match = StringUtils.equals(sheet.getSplycode(), ocCode) && StringUtils.equals(sheet.getGxinfo(), psName) && StringUtils.equals(sheet.getPrtno(), partCode);
+ if (match && price != null && price.compareTo(BigDecimal.ZERO) != 0) {
+ match = PriceMatcher.isContainsPrice(sheet.getAu_ag_price(), price);
+ }
+ if (match && ruleTieredPricing(statementVO, sheet)) {
+ return setSettlementInfo(statementVO, sheet);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 匹配规则5 : 供应商代码 + 生产标识 + 计划单号 + 标准工序代码
*
* @param statementVO
* @return
*/
- private boolean rule3(StatementVO statementVO) {
+ private boolean rule5(StatementVO statementVO) {
List priceSheetList = statementVO.getPriceSheetList();
if (CollectionUtils.isEmpty(priceSheetList)) {
return false;
@@ -1823,12 +1890,12 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetList = statementVO.getPriceSheetList();
if (CollectionUtils.isEmpty(priceSheetList)) {
return false;
@@ -1852,13 +1919,13 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetList = statementVO.getPriceSheetList();
if (CollectionUtils.isEmpty(priceSheetList)) {
return false;