🐛 导入运单地点名称为空时司机端回退显示详细地址
This commit is contained in:
+6
-4
@@ -632,10 +632,12 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService {
|
|||||||
DriverWaybillCardVO card = new DriverWaybillCardVO();
|
DriverWaybillCardVO card = new DriverWaybillCardVO();
|
||||||
card.setId(waybill.getId());
|
card.setId(waybill.getId());
|
||||||
card.setWaybillNo(waybill.getWaybillNo());
|
card.setWaybillNo(waybill.getWaybillNo());
|
||||||
card.setFromName(Func.toStr(waybill.getDepartureName(), ""));
|
// 批量导入的运单只有发货/到货地址、没有地点名称,名称为空时回退到地址,
|
||||||
card.setToName(Func.toStr(waybill.getArrivalName(), ""));
|
// 否则司机端首页、运单列表与打卡页的地点位置都是空的
|
||||||
card.setFromAddress(Func.toStr(waybill.getDepartureAddress(), card.getFromName()));
|
card.setFromName(Func.toStrWithEmpty(waybill.getDepartureName(), Func.toStr(waybill.getDepartureAddress(), "")));
|
||||||
card.setToAddress(Func.toStr(waybill.getArrivalAddress(), card.getToName()));
|
card.setToName(Func.toStrWithEmpty(waybill.getArrivalName(), Func.toStr(waybill.getArrivalAddress(), "")));
|
||||||
|
card.setFromAddress(Func.toStrWithEmpty(waybill.getDepartureAddress(), card.getFromName()));
|
||||||
|
card.setToAddress(Func.toStrWithEmpty(waybill.getArrivalAddress(), card.getToName()));
|
||||||
card.setCargoNames(splitCargoNames(waybill.getCargoName()));
|
card.setCargoNames(splitCargoNames(waybill.getCargoName()));
|
||||||
card.setCargoCategory(Func.toStr(waybill.getCargoType(), ""));
|
card.setCargoCategory(Func.toStr(waybill.getCargoType(), ""));
|
||||||
card.setWeight(formatWeight(waybill.getQuantity(), waybill.getQuantityUnit()));
|
card.setWeight(formatWeight(waybill.getQuantity(), waybill.getQuantityUnit()));
|
||||||
|
|||||||
+136
@@ -0,0 +1,136 @@
|
|||||||
|
package org.springblade.transport.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
||||||
|
import org.apache.ibatis.builder.MapperBuilderAssistant;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.DisplayName;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springblade.transport.mapper.ExceptionDisposalMapper;
|
||||||
|
import org.springblade.transport.mapper.WaybillEnroutePunchMapper;
|
||||||
|
import org.springblade.transport.mapper.WaybillNodePunchMapper;
|
||||||
|
import org.springblade.transport.pojo.entity.ExceptionDisposal;
|
||||||
|
import org.springblade.transport.pojo.entity.Waybill;
|
||||||
|
import org.springblade.transport.pojo.entity.WaybillEnroutePunch;
|
||||||
|
import org.springblade.transport.pojo.entity.WaybillNodePunch;
|
||||||
|
import org.springblade.transport.pojo.vo.DriverWaybillCardVO;
|
||||||
|
import org.springblade.transport.service.IDriverService;
|
||||||
|
import org.springblade.transport.service.IProcessConfigService;
|
||||||
|
import org.springblade.transport.service.ITransportVehicleService;
|
||||||
|
import org.springblade.transport.service.IWaybillService;
|
||||||
|
import org.springblade.transport.support.CertificationGate;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 司机端卡片上的发货地 / 到货地。
|
||||||
|
* <p>
|
||||||
|
* 地点名称与详细地址是两列:批量导入的运单只填了地址(导入模板里没有「发货地」「收货地」列),
|
||||||
|
* 名称为空时卡片要回退到地址,否则司机端的地点位置是空的。
|
||||||
|
*/
|
||||||
|
class DriverWaybillCardLocationTest {
|
||||||
|
|
||||||
|
private static final Long WAYBILL_ID = 5601L;
|
||||||
|
|
||||||
|
private static final String PROCESS_JSON = """
|
||||||
|
[{"key":"accept","name":"接单","type":"confirm","enabled":true,"punch":true},
|
||||||
|
{"key":"load","name":"装货","type":"cargo","enabled":true,"punch":true},
|
||||||
|
{"key":"transit","name":"在途","type":"transit","enabled":true,"punch":true},
|
||||||
|
{"key":"sign","name":"签收","type":"cargo","enabled":true,"punch":true}]
|
||||||
|
""";
|
||||||
|
|
||||||
|
private static final String DEPARTURE_ADDRESS = "广西壮族自治区南宁市西乡塘区安吉大道";
|
||||||
|
private static final String ARRIVAL_ADDRESS = "广西壮族自治区河池市金城江区金城中路1号";
|
||||||
|
|
||||||
|
private IWaybillService waybillService;
|
||||||
|
private DriverWaybillServiceImpl service;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void initTableInfo() {
|
||||||
|
// 构造 LambdaQueryWrapper 需要 MyBatis-Plus 的实体元数据缓存
|
||||||
|
MybatisConfiguration configuration = new MybatisConfiguration();
|
||||||
|
MapperBuilderAssistant assistant = new MapperBuilderAssistant(configuration, "");
|
||||||
|
assistant.setCurrentNamespace("test");
|
||||||
|
TableInfoHelper.initTableInfo(assistant, WaybillNodePunch.class);
|
||||||
|
TableInfoHelper.initTableInfo(assistant, WaybillEnroutePunch.class);
|
||||||
|
TableInfoHelper.initTableInfo(assistant, ExceptionDisposal.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
waybillService = mock(IWaybillService.class);
|
||||||
|
WaybillNodePunchMapper nodePunchMapper = mock(WaybillNodePunchMapper.class);
|
||||||
|
WaybillEnroutePunchMapper enroutePunchMapper = mock(WaybillEnroutePunchMapper.class);
|
||||||
|
ExceptionDisposalMapper exceptionDisposalMapper = mock(ExceptionDisposalMapper.class);
|
||||||
|
service = new DriverWaybillServiceImpl(
|
||||||
|
waybillService,
|
||||||
|
mock(IDriverService.class),
|
||||||
|
mock(IProcessConfigService.class),
|
||||||
|
mock(ITransportVehicleService.class),
|
||||||
|
mock(CertificationGate.class),
|
||||||
|
enroutePunchMapper,
|
||||||
|
nodePunchMapper,
|
||||||
|
exceptionDisposalMapper);
|
||||||
|
|
||||||
|
when(waybillService.syncDriverAcceptState(any())).thenAnswer(invocation -> invocation.getArgument(0));
|
||||||
|
when(nodePunchMapper.selectList(any())).thenReturn(List.of());
|
||||||
|
when(enroutePunchMapper.selectOne(any())).thenReturn(null);
|
||||||
|
when(enroutePunchMapper.selectList(any())).thenReturn(List.of());
|
||||||
|
when(exceptionDisposalMapper.selectList(any())).thenReturn(List.of());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("地点名称为空(导入的运单)时,名称回退到详细地址")
|
||||||
|
void nameFallsBackToAddressWhenBlank() {
|
||||||
|
Waybill waybill = waybill();
|
||||||
|
waybill.setDepartureName(null);
|
||||||
|
waybill.setDepartureAddress(DEPARTURE_ADDRESS);
|
||||||
|
waybill.setArrivalName("");
|
||||||
|
waybill.setArrivalAddress(ARRIVAL_ADDRESS);
|
||||||
|
when(waybillService.getById(WAYBILL_ID)).thenReturn(waybill);
|
||||||
|
|
||||||
|
DriverWaybillCardVO card = service.detailPunchSnapshot(WAYBILL_ID);
|
||||||
|
|
||||||
|
assertEquals(DEPARTURE_ADDRESS, card.getFromName());
|
||||||
|
assertEquals(ARRIVAL_ADDRESS, card.getToName());
|
||||||
|
assertEquals(DEPARTURE_ADDRESS, card.getFromAddress());
|
||||||
|
assertEquals(ARRIVAL_ADDRESS, card.getToAddress());
|
||||||
|
assertEquals(DEPARTURE_ADDRESS, card.getPickupAddress());
|
||||||
|
assertEquals(ARRIVAL_ADDRESS, card.getUnloadAddress());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("地点名称有值时用它,不被地址覆盖")
|
||||||
|
void nameWinsWhenPresent() {
|
||||||
|
Waybill waybill = waybill();
|
||||||
|
waybill.setDepartureName("南宁市西乡塘区");
|
||||||
|
waybill.setDepartureAddress(DEPARTURE_ADDRESS);
|
||||||
|
waybill.setArrivalName("河池市金城江区");
|
||||||
|
waybill.setArrivalAddress(ARRIVAL_ADDRESS);
|
||||||
|
when(waybillService.getById(WAYBILL_ID)).thenReturn(waybill);
|
||||||
|
|
||||||
|
DriverWaybillCardVO card = service.detailPunchSnapshot(WAYBILL_ID);
|
||||||
|
|
||||||
|
assertEquals("南宁市西乡塘区", card.getFromName());
|
||||||
|
assertEquals("河池市金城江区", card.getToName());
|
||||||
|
assertEquals(DEPARTURE_ADDRESS, card.getFromAddress());
|
||||||
|
assertEquals(ARRIVAL_ADDRESS, card.getToAddress());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Waybill waybill() {
|
||||||
|
Waybill waybill = new Waybill();
|
||||||
|
waybill.setId(WAYBILL_ID);
|
||||||
|
waybill.setWaybillNo("YD-20261007-0006");
|
||||||
|
waybill.setProcessJson(PROCESS_JSON);
|
||||||
|
waybill.setBusinessStatus("running");
|
||||||
|
waybill.setIsDeleted(0);
|
||||||
|
return waybill;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user