调整同步TMS修改

This commit is contained in:
秦鸿展
2026-09-10 23:07:59 +08:00
parent 3b8c0ffe8f
commit 4b5ed4d0e1
@@ -608,6 +608,74 @@ public class BusinessDocumentOrderAdjustService {
businessOrderAccountMapper.insert(acc);
}
}
// 同步地址明细表(business_document_address_multi):逻辑删旧 + 按调整后扁平字段插新
syncAddressDetail(orderId, toSave, loginUser, now);
}
/**
* 同步地址明细表:把「调整后业务单」的装/卸货扁平字段写回 business_document_address_multi。
* 与 applyAddressMapping 口径一致(装货取第一条、卸货取最后一条),此处各保留一条。
*/
private void syncAddressDetail(Long orderId, BusinessDocumentOrder toSave, LoginUser loginUser, Date now) {
// 逻辑删旧
List<BusinessDocumentAddressMulti> oldList = businessDocumentAddressMultiMapper.selectList(
new LambdaQueryWrapper<BusinessDocumentAddressMulti>()
.eq(BusinessDocumentAddressMulti::getOrderId, String.valueOf(orderId))
.eq(BusinessDocumentAddressMulti::getDelFlag, 1));
if (oldList != null) {
for (BusinessDocumentAddressMulti old : oldList) {
old.setDelFlag(0);
old.setUpdateBy(loginUser != null ? loginUser.getUserid() : null);
old.setUpdateTime(now);
businessDocumentAddressMultiMapper.updateById(old);
}
}
Long userId = loginUser != null ? loginUser.getUserid() : null;
// 装货
BusinessDocumentAddressMulti loading = new BusinessDocumentAddressMulti();
loading.setOrderId(String.valueOf(orderId));
loading.setAreaCode(toSave.getLoadingAreaId());
loading.setAreaName(toSave.getLoadingName());
loading.setAddress(toSave.getLoadingAddress());
loading.setLongitude(toSave.getLoadingLongitude());
loading.setLatitude(toSave.getLoadingLatitude());
loading.setContactName(toSave.getFreighterName());
loading.setContactPhone(toSave.getLoadingPhone());
loading.setLayDate(toSave.getLoadingDate());
loading.setLayType(1L);
loading.setDelFlag(1);
loading.setOrganizationId(toSave.getOrganizationId());
loading.setOrganizationName(toSave.getOrganizationName());
loading.setTopOrganizationId(toSave.getTopOrganizationId());
loading.setCreateBy(userId);
loading.setCreateTime(now);
loading.setUpdateBy(userId);
loading.setUpdateTime(now);
businessDocumentAddressMultiMapper.insert(loading);
// 卸货
BusinessDocumentAddressMulti unload = new BusinessDocumentAddressMulti();
unload.setOrderId(String.valueOf(orderId));
unload.setAreaCode(toSave.getUnloadAreaId());
unload.setAreaName(toSave.getUnloadName());
unload.setAddress(toSave.getUnloadAddress());
unload.setLongitude(toSave.getUnloadLongitude());
unload.setLatitude(toSave.getUnloadLatitude());
unload.setContactName(toSave.getDischargerName());
unload.setContactPhone(toSave.getUnloadPhone());
unload.setLayDate(toSave.getUnloadingData());
unload.setLayType(2L);
unload.setDelFlag(1);
unload.setOrganizationId(toSave.getOrganizationId());
unload.setOrganizationName(toSave.getOrganizationName());
unload.setTopOrganizationId(toSave.getTopOrganizationId());
unload.setCreateBy(userId);
unload.setCreateTime(now);
unload.setUpdateBy(userId);
unload.setUpdateTime(now);
businessDocumentAddressMultiMapper.insert(unload);
}
private void copySnapshot(BusinessDocumentOrder order, BusinessDocumentOrderAdjustDetail detail) {
@@ -702,37 +770,34 @@ public class BusinessDocumentOrderAdjustService {
}
tmsOrderAddDTO.setCargoInfoList(cargoInfoList);
// 装货地址
List<BusinessDocumentAddressMulti> loadingAddrList = businessDocumentAddressMultiMapper.selectList(
new LambdaQueryWrapper<BusinessDocumentAddressMulti>()
.eq(BusinessDocumentAddressMulti::getOrderId, String.valueOf(after.getId()))
.eq(BusinessDocumentAddressMulti::getDelFlag, 1)
.eq(BusinessDocumentAddressMulti::getLayType, 1L));
// 装货地址:统一以「调整后业务单」的扁平字段为准,避免明细表(business_document_address_multi)旧值覆盖
TmsAddressMultiDTO loadingDto = new TmsAddressMultiDTO();
loadingDto.setAreaCode(after.getLoadingAreaId());
loadingDto.setAreaName(after.getLoadingName());
loadingDto.setAddress(after.getLoadingAddress());
loadingDto.setLongitude(after.getLoadingLongitude());
loadingDto.setLatitude(after.getLoadingLatitude());
loadingDto.setContactName(after.getFreighterName());
loadingDto.setContactPhone(after.getLoadingPhone());
loadingDto.setLayDate(after.getLoadingDate());
loadingDto.setLayType(1);
List<TmsAddressMultiDTO> loadingAddressList = new ArrayList<>();
if (loadingAddrList != null) {
for (BusinessDocumentAddressMulti addr : loadingAddrList) {
TmsAddressMultiDTO dto = new TmsAddressMultiDTO();
BeanUtil.copyProperties(addr, dto);
loadingAddressList.add(dto);
}
}
loadingAddressList.add(loadingDto);
tmsOrderAddDTO.setLoadingAddressList(loadingAddressList);
// 卸货地址
List<BusinessDocumentAddressMulti> unloadAddrList = businessDocumentAddressMultiMapper.selectList(
new LambdaQueryWrapper<BusinessDocumentAddressMulti>()
.eq(BusinessDocumentAddressMulti::getOrderId, String.valueOf(after.getId()))
.eq(BusinessDocumentAddressMulti::getDelFlag, 1)
.eq(BusinessDocumentAddressMulti::getLayType, 2L));
// 卸货地址:同样以「调整后业务单」的扁平字段为准
TmsAddressMultiDTO unloadDto = new TmsAddressMultiDTO();
unloadDto.setAreaCode(after.getUnloadAreaId());
unloadDto.setAreaName(after.getUnloadName());
unloadDto.setAddress(after.getUnloadAddress());
unloadDto.setLongitude(after.getUnloadLongitude());
unloadDto.setLatitude(after.getUnloadLatitude());
unloadDto.setContactName(after.getDischargerName());
unloadDto.setContactPhone(after.getUnloadPhone());
unloadDto.setLayDate(after.getUnloadingData());
unloadDto.setLayType(2);
List<TmsAddressMultiDTO> unloadAddressList = new ArrayList<>();
if (unloadAddrList != null) {
for (BusinessDocumentAddressMulti addr : unloadAddrList) {
TmsAddressMultiDTO dto = new TmsAddressMultiDTO();
BeanUtil.copyProperties(addr, dto);
dto.setLayType(2);
unloadAddressList.add(dto);
}
}
unloadAddressList.add(unloadDto);
tmsOrderAddDTO.setUnloadAddressList(unloadAddressList);
// 费用明细