优化这段代码:if (icbcDtlRsp.getBillSta().equals("CS01") && icbcDtlRsp.getRangeStage().equals("TF0101")) { //CS01已出票 & TFO101待收票---010004出票已登记 ecdsDrftInf.setDrftSndStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_CPYDJ, ecdsDrftInf.getDrftSndStat())); // 票据发送人状态 ecdsDrftInf.setDrftRcvStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_CPYDJ, ecdsDrftInf.getDrftRcvStat())); // 票据接收人状态 ecdsDrftInf.setDrftCurrStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_CPYDJ, ecdsDrftInf.getDrftCurrStat())); // 人行当前状态 } else if (ecdsDrftInf.getDrftOrgStat().equals(ECDSConstants.DRAFT_STATUS_CPYDJ) && icbcDtlRsp.getBillSta().equals("CS01") && icbcDtlRsp.getRangeStage().equals("TF0302")) { //CS01已出票 & TF0302已锁定--- 020001承兑待签收 ecdsDrftInf.setDrftSndStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDDQS, ecdsDrftInf.getDrftSndStat())); // 票据发送人状态 ecdsDrftInf.setDrftRcvStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDDQS, ecdsDrftInf.getDrftRcvStat())); // 票据接收人状态 ecdsDrftInf.setDrftCurrStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDDQS, ecdsDrftInf.getDrftCurrStat())); // 人行当前状态 } else if (ecdsDrftInf.getDrftOrgStat().equals(ECDSConstants.DRAFT_STATUS_CPYDJ) && icbcDtlRsp.getBillSta().equals("CS02") && icbcDtlRsp.getRangeStage().equals("TFO101")) { //CS02已承兑 & TFO101待收票---020006承兑已签收 ecdsDrftInf.setDrftSndStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDYQS, ecdsDrftInf.getDrftSndStat())); // 票据发送人状态 ecdsDrftInf.setDrftRcvStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDYQS, ecdsDrftInf.getDrftRcvStat())); // 票据接收人状态 ecdsDrftInf.setDrftCurrStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDYQS, ecdsDrftInf.getDrftCurrStat())); // 人行当前状态 }
时间: 2024-02-24 15:56:30 浏览: 195
可以将常量提取出来,避免多次调用 getValueOrDefault() 方法,可以使用一个 Map 存储常量值,然后根据条件直接获取即可。同时,可以将多个 if/else if 语句转换为一个 switch 语句,使代码更加简洁易读。优化后的代码如下:
```
private static final Map<String, String> DRAFT_STATUS_MAP = new HashMap<>();
static {
DRAFT_STATUS_MAP.put(ECDSConstants.DRAFT_STATUS_CPYDJ, ECDSConstants.DRAFT_STATUS_TSCDDQS);
DRAFT_STATUS_MAP.put(ECDSConstants.DRAFT_STATUS_TSCDDQS, ECDSConstants.DRAFT_STATUS_TSCDDQS);
DRAFT_STATUS_MAP.put(ECDSConstants.DRAFT_STATUS_TSCDYQS, ECDSConstants.DRAFT_STATUS_TSCDYQS);
}
// ...
switch (icbcDtlRsp.getBillSta() + icbcDtlRsp.getRangeStage()) {
case "CS01TF0101": // CS01已出票 & TFO101待收票---010004出票已登记
ecdsDrftInf.setDrftSndStat(DRAFT_STATUS_MAP.getOrDefault(ecdsDrftInf.getDrftSndStat(), ECDSConstants.DRAFT_STATUS_CPYDJ));
ecdsDrftInf.setDrftRcvStat(DRAFT_STATUS_MAP.getOrDefault(ecdsDrftInf.getDrftRcvStat(), ECDSConstants.DRAFT_STATUS_CPYDJ));
ecdsDrftInf.setDrftCurrStat(DRAFT_STATUS_MAP.getOrDefault(ecdsDrftInf.getDrftCurrStat(), ECDSConstants.DRAFT_STATUS_CPYDJ));
break;
case "CS01TF0302": // CS01已出票 & TF0302已锁定--- 020001承兑待签收
if (ecdsDrftInf.getDrftOrgStat().equals(ECDSConstants.DRAFT_STATUS_CPYDJ)) {
ecdsDrftInf.setDrftSndStat(DRAFT_STATUS_MAP.getOrDefault(ecdsDrftInf.getDrftSndStat(), ECDSConstants.DRAFT_STATUS_TSCDDQS));
ecdsDrftInf.setDrftRcvStat(DRAFT_STATUS_MAP.getOrDefault(ecdsDrftInf.getDrftRcvStat(), ECDSConstants.DRAFT_STATUS_TSCDDQS));
ecdsDrftInf.setDrftCurrStat(DRAFT_STATUS_MAP.getOrDefault(ecdsDrftInf.getDrftCurrStat(), ECDSConstants.DRAFT_STATUS_TSCDDQS));
}
break;
case "CS02TFO101": // CS02已承兑 & TFO101待收票---020006承兑已签收
if (ecdsDrftInf.getDrftOrgStat().equals(ECDSConstants.DRAFT_STATUS_CPYDJ)) {
ecdsDrftInf.setDrftSndStat(DRAFT_STATUS_MAP.getOrDefault(ecdsDrftInf.getDrftSndStat(), ECDSConstants.DRAFT_STATUS_TSCDYQS));
ecdsDrftInf.setDrftRcvStat(DRAFT_STATUS_MAP.getOrDefault(ecdsDrftInf.getDrftRcvStat(), ECDSConstants.DRAFT_STATUS_TSCDYQS));
ecdsDrftInf.setDrftCurrStat(DRAFT_STATUS_MAP.getOrDefault(ecdsDrftInf.getDrftCurrStat(), ECDSConstants.DRAFT_STATUS_TSCDYQS));
}
break;
default:
break;
}
```
阅读全文