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;