From d2c75e0c51cb8f50756b7e6e683dfcd630de90e4 Mon Sep 17 00:00:00 2001 From: wuweihua <88888888> Date: Thu, 12 Nov 2026 11:07:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A1=E8=B4=B9=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../price/domain/vo/TmsPriceBillRequest.java | 3 + .../price/domain/vo/TmsPriceQuoteRequest.java | 2 +- .../price/oracle/OracleOrderBillMapper.java | 1 + .../service/impl/PrcOrderBillServiceImpl.java | 1 + .../impl/TmsPriceQuoteServiceImpl.java | 57 ++++++++++++++++--- .../label/components/LabelVersionTable.vue | 5 +- bms-front/src/views/price/label/detail.vue | 2 +- 7 files changed, 57 insertions(+), 14 deletions(-) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java index 899e6e3e..0cffe5be 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java @@ -60,6 +60,9 @@ public class TmsPriceBillRequest extends TmsPriceQuoteRequest @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date pickupDate; private String orderRemark; + /** 上游 PRODUCT_FLOOR_CODE;打单计费在账单落库前也可直接用 */ + private String productFloorCode; + /** 上游 TAB_ORDER 整行,用于写入 prc_order_bill_ext 扩展字段 */ private Map upstreamRow; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteRequest.java index 007fc7e1..c260b381 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteRequest.java @@ -22,7 +22,7 @@ public class TmsPriceQuoteRequest implements Serializable private String productCode; /** - * 打单套餐(LABEL)试算/计费用渠道ID;计费也可从订单扩展 productChannelId 解析。 + * 打单套餐(LABEL)试算用渠道ID;计费优先取订单 product_floor_code。 */ private String channelId; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java index 3a857bbd..3e4171dd 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java @@ -44,6 +44,7 @@ public class OracleOrderBillMapper } req.setProductCode(product); req.setProductName(firstStr(row, "LINE_NAME", "PRODUCT_NAME")); + req.setProductFloorCode(firstStr(row, "PRODUCT_FLOOR_CODE")); req.setCountryCode(firstStr(row, "COUNTRY")); String countryName = firstStr(row, "COUNTRY_NAME", "COUNTRY_EINGTH_NAME", "COUNTRY"); req.setCountryName(countryName); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java index 79a5ad0b..80aeb418 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java @@ -3180,6 +3180,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService req.setCustomerName(bill.getCustomerName()); req.setProductCode(bill.getProductCode()); req.setProductName(resolveBillProductName(bill)); + req.setProductFloorCode(bill.getProductFloorCode()); req.setCountryCode(bill.getCountryCode()); req.setCountryName(bill.getCountryName()); req.setDestPostcode(bill.getDestPostcode()); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/TmsPriceQuoteServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/TmsPriceQuoteServiceImpl.java index a0319f40..763ca04a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/TmsPriceQuoteServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/TmsPriceQuoteServiceImpl.java @@ -32,6 +32,7 @@ import com.bms.price.domain.PayCostLine; import com.bms.price.domain.PayOrderCostResult; import com.bms.price.domain.PayProduct; import com.bms.price.domain.PrcCustomerPriceSet; +import com.bms.price.domain.PrcOrderBill; import com.bms.price.domain.PrcOrderBillExt; import com.bms.price.domain.PrcPriceSet; import com.bms.price.domain.PrcPriceSetDetail; @@ -52,8 +53,11 @@ import com.bms.price.enums.BillCustomerActiveStatus; import com.bms.price.mapper.BmsProductCountryMapper; import com.bms.price.mapper.BmsProductMapper; import com.bms.price.mapper.BmsRedlineProductCountryMapper; +import com.bms.masterdata.domain.ServiceChannel; +import com.bms.masterdata.mapper.ServiceChannelMapper; import com.bms.price.mapper.PrcCustomerPriceSetMapper; import com.bms.price.mapper.PrcOrderBillExtMapper; +import com.bms.price.mapper.PrcOrderBillMapper; import com.bms.price.mapper.PrcPriceSetDetailMapper; import com.bms.price.mapper.PrcPriceSetMapper; import com.bms.price.mapper.PrcPriceSetProductMapper; @@ -143,6 +147,12 @@ public class TmsPriceQuoteServiceImpl implements ITmsPriceQuoteService @Autowired private PrcOrderBillExtMapper orderBillExtMapper; + @Autowired + private PrcOrderBillMapper orderBillMapper; + + @Autowired + private ServiceChannelMapper serviceChannelMapper; + @Override @Transactional(rollbackFor = Exception.class) public TmsPriceQuoteResult quote(TmsPriceQuoteRequest request) @@ -715,7 +725,10 @@ public class TmsPriceQuoteServiceImpl implements ITmsPriceQuoteService return r; } - /** 试算用 request.channelId;计费优先订单扩展 productChannelId。 */ + /** + * 试算用 request.channelId;计费优先 prc_order_bill.product_floor_code, + * 没有再取 prc_order_bill_ext.product_floor_code,再解析为渠道ID。 + */ private String resolveLabelChannelId(TmsPriceQuoteRequest request) { if (request != null && StringUtils.isNotEmpty(request.getChannelId())) @@ -727,22 +740,48 @@ public class TmsPriceQuoteServiceImpl implements ITmsPriceQuoteService return null; } TmsPriceBillRequest billReq = (TmsPriceBillRequest) request; - PrcOrderBillExt ext = null; - if (StringUtils.isNotEmpty(billReq.getOrderNo())) + String floorCode = emptyToNull(billReq.getProductFloorCode()); + String orderNo = emptyToNull(billReq.getOrderNo()); + if (StringUtils.isEmpty(floorCode) && StringUtils.isNotEmpty(orderNo)) { - ext = orderBillExtMapper.selectByOrderNo(billReq.getOrderNo().trim()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillByOrderNo(orderNo); + if (bill != null) + { + floorCode = emptyToNull(bill.getProductFloorCode()); + } } - if (ext == null) + if (StringUtils.isEmpty(floorCode) && StringUtils.isNotEmpty(orderNo)) + { + PrcOrderBillExt ext = orderBillExtMapper.selectByOrderNo(orderNo); + if (ext != null) + { + floorCode = emptyToNull(ext.getProductFloorCode()); + } + } + if (StringUtils.isEmpty(floorCode)) { return null; } - if (StringUtils.isNotEmpty(ext.getProductChannelId())) + return resolveChannelIdByFloorCode(floorCode); + } + + /** 将 product_floor_code 解析为 srv_service_channel.id(先按编码,再按ID) */ + private String resolveChannelIdByFloorCode(String floorCode) + { + if (StringUtils.isEmpty(floorCode) || serviceChannelMapper == null) { - return ext.getProductChannelId().trim(); + return null; } - if (StringUtils.isNotEmpty(ext.getProductFloorCode())) + String code = floorCode.trim(); + ServiceChannel byCode = serviceChannelMapper.selectServiceChannelByCode(code); + if (byCode != null && StringUtils.isNotEmpty(byCode.getId())) { - return ext.getProductFloorCode().trim(); + return byCode.getId().trim(); + } + ServiceChannel byId = serviceChannelMapper.selectServiceChannelById(code); + if (byId != null && StringUtils.isNotEmpty(byId.getId())) + { + return byId.getId().trim(); } return null; } diff --git a/bms-front/src/views/price/label/components/LabelVersionTable.vue b/bms-front/src/views/price/label/components/LabelVersionTable.vue index f7b007a9..49ab4e55 100644 --- a/bms-front/src/views/price/label/components/LabelVersionTable.vue +++ b/bms-front/src/views/price/label/components/LabelVersionTable.vue @@ -128,10 +128,9 @@ function statusTag(status) { return map[String(status)] || 'info' } -/** 待生效、已生效:可编辑价卡 */ +/** 不限状态:待生效/已生效/已失效均可编辑价卡 */ function canEdit(row) { - const s = row ? String(row.status) : '' - return s === '0' || s === '1' + return !!row } /** 仅待生效可改生效时间 */ diff --git a/bms-front/src/views/price/label/detail.vue b/bms-front/src/views/price/label/detail.vue index 3d724782..0452e728 100644 --- a/bms-front/src/views/price/label/detail.vue +++ b/bms-front/src/views/price/label/detail.vue @@ -192,7 +192,7 @@ function openCreateVersion() { }) } -/** 编辑待生效/已生效版本价卡 */ +/** 编辑版本价卡(不限状态) */ function openEditVersion(row) { if (!priceSetId.value || !row?.versionNo) return proxy.$router.push({