修改计费逻辑
This commit is contained in:
@@ -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<String, Object> upstreamRow;
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ public class TmsPriceQuoteRequest implements Serializable
|
||||
private String productCode;
|
||||
|
||||
/**
|
||||
* 打单套餐(LABEL)试算/计费用渠道ID;计费也可从订单扩展 productChannelId 解析。
|
||||
* 打单套餐(LABEL)试算用渠道ID;计费优先取订单 product_floor_code。
|
||||
*/
|
||||
private String channelId;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
+1
@@ -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());
|
||||
|
||||
+48
-9
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user