tms查询客户状态和订单状态接口 优化
This commit is contained in:
+3
@@ -23,6 +23,9 @@ public interface BmsCustomerMapper
|
||||
*/
|
||||
public BmsCustomer selectBmsCustomerByCustomerId(Long customerId);
|
||||
|
||||
/** 轻量查询客户当前状态;不存在或已逻辑删除时返回 null。 */
|
||||
public BmsCustomer selectCustomerStatusByCustomerId(Long customerId);
|
||||
|
||||
/**
|
||||
* 只取客户档案物理额度列(credit_ed 在通用查询里是账户可用额度的子查询别名,
|
||||
* 账户首次初始化时必须读取档案原始值)
|
||||
|
||||
+6
-1
@@ -20,7 +20,7 @@ public class TmsOrderBillStatusResult {
|
||||
private int matchedCount;
|
||||
|
||||
/**
|
||||
* 命中类型:ORDER_NO/ TRACKING_NO/TRANSFER_NO/MULTIPLE。
|
||||
* 命中类型:NOT_FOUND/ORDER_NO/TRACKING_NO/TRANSFER_NO/MULTIPLE。
|
||||
*/
|
||||
private String matchType;
|
||||
|
||||
@@ -35,6 +35,11 @@ public class TmsOrderBillStatusResult {
|
||||
private Long customerId;
|
||||
private String customerCode;
|
||||
|
||||
/**
|
||||
* 订单关联的当前客户是否存在;订单未找到或匹配到多条时为 null。
|
||||
*/
|
||||
private Boolean customerFound;
|
||||
|
||||
/**
|
||||
* 客户生效状态:ACTIVE/MISSING/DISABLED。
|
||||
*/
|
||||
|
||||
@@ -4,6 +4,8 @@ package com.ruoyi.price.enums;
|
||||
* TMS 查询订单计费数据时的标识匹配类型。
|
||||
*/
|
||||
public enum TmsOrderBillMatchType {
|
||||
/** 没有匹配到订单。 */
|
||||
NOT_FOUND("NOT_FOUND", "未找到订单"),
|
||||
/**
|
||||
* 按订单号匹配。
|
||||
*/
|
||||
|
||||
+38
-4
@@ -24,6 +24,8 @@ import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.utils.MessageUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.sign.Md5Utils;
|
||||
import com.ruoyi.customer.customerinfo.domain.BmsCustomer;
|
||||
import com.ruoyi.customer.customerinfo.mapper.BmsCustomerMapper;
|
||||
import com.ruoyi.price.domain.PrcIncomeBill;
|
||||
import com.ruoyi.price.domain.PrcIncomeBillFee;
|
||||
import com.ruoyi.price.domain.PrcOrderBill;
|
||||
@@ -68,6 +70,10 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
@Autowired
|
||||
private PrcOrderBillMapper orderBillMapper;
|
||||
|
||||
/** TMS 实时状态查询使用客户主档案,不读取订单上的历史状态快照。 */
|
||||
@Autowired
|
||||
private BmsCustomerMapper bmsCustomerMapper;
|
||||
|
||||
@Autowired
|
||||
private PrcOrderBillExtMapper orderBillExtMapper;
|
||||
|
||||
@@ -468,6 +474,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
{
|
||||
TmsOrderBillStatusResult result = new TmsOrderBillStatusResult();
|
||||
result.setMatchedCount(0);
|
||||
result.setMatchType(TmsOrderBillMatchType.NOT_FOUND.getCode());
|
||||
return result;
|
||||
}
|
||||
if (bills.size() > 1)
|
||||
@@ -490,7 +497,12 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
result.setTransferNo(bill.getTransferNo());
|
||||
result.setCustomerId(bill.getCustomerId());
|
||||
result.setCustomerCode(bill.getCustomerCode());
|
||||
result.setCustomerActiveStatus(normalizeCustomerActiveStatus(bill.getCustomerActiveStatus()));
|
||||
// customer_active_status 是计费时的历史快照;TMS 状态接口必须读取客户当前启用状态。
|
||||
BmsCustomer customer = bill.getCustomerId() == null || bill.getCustomerId() <= 0 ? null
|
||||
: bmsCustomerMapper.selectCustomerStatusByCustomerId(bill.getCustomerId());
|
||||
result.setCustomerFound(customer != null);
|
||||
result.setCustomerActiveStatus(resolveCurrentCustomerActiveStatus(customer));
|
||||
// 欠费状态仍按订单计费时保存的快照返回,与当前客户是否存在相互独立。
|
||||
result.setCreditArrearsStatus(normalizeCreditArrearsStatus(bill.getCreditArrearsStatus()));
|
||||
return result;
|
||||
}
|
||||
@@ -543,10 +555,32 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
return TmsOrderBillMatchType.TRANSFER_NO;
|
||||
}
|
||||
|
||||
private String normalizeCustomerActiveStatus(String status)
|
||||
/**
|
||||
* 将客户主表的启用状态转换为 TMS 接口状态。
|
||||
* 客户不存在或已被逻辑删除时返回 MISSING,不能回退使用订单上的历史快照。
|
||||
*/
|
||||
private String resolveCurrentCustomerActiveStatus(BmsCustomer customer)
|
||||
{
|
||||
BillCustomerActiveStatus statusEnum = BillCustomerActiveStatus.of(status);
|
||||
return statusEnum == null ? normalizeUnknownStatus(status) : statusEnum.getCode();
|
||||
if (customer == null)
|
||||
{
|
||||
return BillCustomerActiveStatus.MISSING.getCode();
|
||||
}
|
||||
String normalized = StringUtils.trim(customer.getIsEnable());
|
||||
if (StringUtils.isEmpty(normalized))
|
||||
{
|
||||
// 客户存在但启用状态为空时按非正常状态处理,确保接口只返回约定枚举。
|
||||
return BillCustomerActiveStatus.DISABLED.getCode();
|
||||
}
|
||||
if ("0".equals(normalized))
|
||||
{
|
||||
return BillCustomerActiveStatus.ACTIVE.getCode();
|
||||
}
|
||||
if ("1".equals(normalized))
|
||||
{
|
||||
return BillCustomerActiveStatus.DISABLED.getCode();
|
||||
}
|
||||
// 客户存在但状态值异常时按非正常状态处理,确保接口只返回约定枚举。
|
||||
return BillCustomerActiveStatus.DISABLED.getCode();
|
||||
}
|
||||
|
||||
private String normalizeCreditArrearsStatus(String status)
|
||||
|
||||
Reference in New Issue
Block a user