Merge branch 'master' of http://git.lionquexpress.com/wuweihua/BMS
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
@@ -25,6 +25,8 @@ import com.ruoyi.common.utils.MessageUtils;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
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;
|
||||
@@ -69,6 +71,10 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
@Autowired
|
||||
private PrcOrderBillMapper orderBillMapper;
|
||||
|
||||
/** TMS 实时状态查询使用客户主档案,不读取订单上的历史状态快照。 */
|
||||
@Autowired
|
||||
private BmsCustomerMapper bmsCustomerMapper;
|
||||
|
||||
@Autowired
|
||||
private PrcOrderBillExtMapper orderBillExtMapper;
|
||||
|
||||
@@ -469,6 +475,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)
|
||||
@@ -491,7 +498,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;
|
||||
}
|
||||
@@ -614,10 +626,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)
|
||||
|
||||
@@ -94,6 +94,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
where c.customer_id = #{customerId} and c.del_flag = '0'
|
||||
</select>
|
||||
|
||||
<!-- TMS 实时状态接口只读取客户ID和启用状态,避免加载客户完整资料和额度汇总。 -->
|
||||
<select id="selectCustomerStatusByCustomerId" parameterType="Long" resultMap="BmsCustomerResult">
|
||||
select customer_id, is_enable
|
||||
from bms_customer
|
||||
where customer_id = #{customerId}
|
||||
and del_flag = '0'
|
||||
</select>
|
||||
|
||||
<resultMap type="com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment" id="BmsCustomerAttachmentResult">
|
||||
<result property="attachmentId" column="attachment_id" />
|
||||
<result property="customerId" column="customer_id" />
|
||||
@@ -661,4 +669,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<delete id="deleteBmsCustomerContactByContactId" parameterType="Long">
|
||||
update bms_customer_contact set del_flag = '2' where contact_id = #{contactId}
|
||||
</delete>
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user