🐛 fix(打卡里程): 回显里程去掉两位小数
运单里程列是 decimal(18,2),BigDecimal 经全局 ToStringSerializer 序列化后 下发成 "200.00",而客户端按正整数校验,原样回填直接提交会被拒。 - DriverPunchNodeVO / WaybillPunchRecordItemVO 的 mileage 改 String(正整数文本) - 新增 TransportBusinessSupport.mileageText,去尾随零后再下发 - 打卡记录单测断言同步为字符串
This commit is contained in:
+1
-1
@@ -1649,7 +1649,7 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService {
|
||||
// 里程同样只在末位卡采集:末位判定与上面同一个变量,避免两处各算一次走偏。
|
||||
if (lastPunchNode && lastNodeNeedsMileage) {
|
||||
vo.setNeedMileage(true);
|
||||
vo.setMileage(waybill.getMileage());
|
||||
vo.setMileage(TransportBusinessSupport.mileageText(waybill.getMileage()));
|
||||
}
|
||||
if (done) {
|
||||
if (punched.getPunchTime() != null) {
|
||||
|
||||
+1
-1
@@ -442,7 +442,7 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
|
||||
item.setType(isTransit ? "enroute" : "node");
|
||||
if (lastNodeNeedsMileage && !isTransit && lastPunchKey.equals(nodeCode)) {
|
||||
item.setNeedMileage(true);
|
||||
item.setMileage(waybill.getMileage());
|
||||
item.setMileage(TransportBusinessSupport.mileageText(waybill.getMileage()));
|
||||
item.setMileageLocked(punchMileageLocked);
|
||||
}
|
||||
item.setExceptionFlag(false);
|
||||
|
||||
+9
@@ -282,4 +282,13 @@ public final class TransportBusinessSupport {
|
||||
return mileage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 里程回显文本:去掉列上 decimal(18,2) 带来的尾随零,使 "200.00" 下发为 "200"。
|
||||
* <p>
|
||||
* 客户端按正整数校验里程,回显成两位小数会被当成非法值拒掉——不清零就等于「原样回填不能提交」。
|
||||
*/
|
||||
public static String mileageText(BigDecimal mileage) {
|
||||
return mileage == null ? null : mileage.stripTrailingZeros().toPlainString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -211,7 +211,7 @@ class WaybillPunchRecordListTest {
|
||||
// 接单不参与司机打卡序列,末位是装货
|
||||
assertFalse(Boolean.TRUE.equals(accept.getNeedMileage()));
|
||||
assertTrue(Boolean.TRUE.equals(load.getNeedMileage()));
|
||||
assertEquals(0, new BigDecimal("128").compareTo(load.getMileage()));
|
||||
assertEquals("128", load.getMileage());
|
||||
assertFalse(Boolean.TRUE.equals(load.getMileageLocked()));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user