调整同步TMS修改

This commit is contained in:
秦鸿展
2026-09-10 22:16:47 +08:00
parent 86c4c07708
commit 8d6c252eb4
2 changed files with 112 additions and 2 deletions
@@ -536,6 +536,13 @@ public interface WlhyServiceFeign {
@PostMapping("/feign/order/add")
public AjaxResult add(@RequestBody TmsOrderAddDTO tmsOrderAddDTO);
/**
* 修改运单(OMS调整业务单后同步修改TMS订单)
* @param tmsOrderAddDTO 需携带 TMS 订单 id 定位
*/
@PostMapping("/feign/order/update")
public AjaxResult update(@RequestBody TmsOrderAddDTO tmsOrderAddDTO);
@GetMapping("/feign/order/cancelIssueDocuments")
public AjaxResult cancelIssueDocuments(@RequestParam(name="executeOrderId") String executeOrderId);
@@ -7,9 +7,16 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mhd.common.core.domain.dto.wlhy.TmsAddressMultiDTO;
import com.mhd.common.core.domain.dto.wlhy.TmsCargoInfoDTO;
import com.mhd.common.core.domain.dto.wlhy.TmsOrderAccount;
import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.oms.domain.businessDocumentAddressMulti.entity.BusinessDocumentAddressMulti;
import com.mhd.oms.domain.businessDocumentAddressMulti.repository.mapper.BusinessDocumentAddressMultiMapper;
import com.mhd.oms.domain.businessDocumentCargoMulti.entity.BusinessDocumentCargoMulti;
import com.mhd.oms.domain.businessDocumentCargoMulti.repository.mapper.BusinessDocumentCargoMultiMapper;
import com.mhd.oms.domain.businessDocumentOrder.entity.BusinessDocumentOrder;
import com.mhd.oms.domain.businessDocumentOrder.repository.mapper.BusinessDocumentOrderMapper;
import com.mhd.oms.domain.businessDocumentOrderAdjust.entity.BusinessDocumentOrderAdjust;
@@ -26,6 +33,7 @@ import com.mhd.oms.interfaces.dto.businessDocumentOrderAdjust.BusinessDocumentOr
import com.mhd.oms.interfaces.dto.businessDocumentOrderAdjust.BusinessDocumentOrderAdjustQueryDTO;
import com.mhd.oms.interfaces.dto.businessDocumentOrderAdjust.BusinessDocumentOrderAdjustRecordDTO;
import com.mhd.system.api.WlhyServiceFeign;
import com.mhd.system.api.domain.TmsOrderAddDTO;
import com.mhd.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -131,6 +139,12 @@ public class BusinessDocumentOrderAdjustService {
@Autowired
private ExecuteOrderMapper executeOrderMapper;
@Autowired
private BusinessDocumentCargoMultiMapper businessDocumentCargoMultiMapper;
@Autowired
private BusinessDocumentAddressMultiMapper businessDocumentAddressMultiMapper;
@Autowired
private WlhyServiceFeign wlhyServiceFeign;
@@ -634,10 +648,99 @@ public class BusinessDocumentOrderAdjustService {
if (executeOrders == null || executeOrders.isEmpty()) {
return;
}
log.info("业务单[{}]调整完成,关联执行单[{}]。如需回写TMS请接入TMS改费Feign。", goodsNumber,
executeOrders.stream().map(ExecuteOrder::getGoodsNumber).collect(Collectors.toList()));
for (ExecuteOrder executeOrder : executeOrders) {
// 仅已下发 TMS(存在 TMS 单号)的执行单需要同步修改
if (StrUtil.isBlank(executeOrder.getTmsOrderNumber())) {
continue;
}
syncTmsOrder(executeOrder, after);
}
} catch (Exception e) {
log.error("同步TMS失败,不影响主流程", e);
}
}
/**
* 同步修改单个 TMS 订单:按调整后业务单重新组装 TmsOrderAddDTO
* 带 executeOrderNumber 定位 TMS 订单,调用 TMS /feign/order/update 接口。
*/
private void syncTmsOrder(ExecuteOrder executeOrder, BusinessDocumentOrder after) {
TmsOrderAddDTO tmsOrderAddDTO = new TmsOrderAddDTO();
BeanUtil.copyProperties(after, tmsOrderAddDTO);
tmsOrderAddDTO.setExecuteOrderId(String.valueOf(executeOrder.getId()));
tmsOrderAddDTO.setExecuteOrderNumber(executeOrder.getGoodsNumber());
tmsOrderAddDTO.setGoodsNumber(after.getGoodsNumber());
tmsOrderAddDTO.setOrderSource("0");
// 货物信息
List<BusinessDocumentCargoMulti> cargoList = businessDocumentCargoMultiMapper.selectList(
new LambdaQueryWrapper<BusinessDocumentCargoMulti>()
.eq(BusinessDocumentCargoMulti::getOrderId, String.valueOf(after.getId()))
.eq(BusinessDocumentCargoMulti::getDelFlag, 1));
List<TmsCargoInfoDTO> cargoInfoList = new ArrayList<>();
if (cargoList != null) {
for (BusinessDocumentCargoMulti cargo : cargoList) {
TmsCargoInfoDTO dto = new TmsCargoInfoDTO();
BeanUtil.copyProperties(cargo, dto);
cargoInfoList.add(dto);
}
}
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));
List<TmsAddressMultiDTO> loadingAddressList = new ArrayList<>();
if (loadingAddrList != null) {
for (BusinessDocumentAddressMulti addr : loadingAddrList) {
TmsAddressMultiDTO dto = new TmsAddressMultiDTO();
BeanUtil.copyProperties(addr, dto);
loadingAddressList.add(dto);
}
}
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));
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);
}
}
tmsOrderAddDTO.setUnloadAddressList(unloadAddressList);
// 费用明细
List<BusinessOrderAccount> accountList = businessOrderAccountMapper.selectList(
new LambdaQueryWrapper<BusinessOrderAccount>()
.eq(BusinessOrderAccount::getOrderId, after.getId())
.eq(BusinessOrderAccount::getIsDelete, 0));
List<TmsOrderAccount> tmsOrderAccountList = new ArrayList<>();
if (accountList != null) {
for (BusinessOrderAccount acc : accountList) {
TmsOrderAccount dto = new TmsOrderAccount();
BeanUtil.copyProperties(acc, dto);
tmsOrderAccountList.add(dto);
}
}
tmsOrderAddDTO.setTmsOrderAccountList(tmsOrderAccountList);
AjaxResult result = wlhyServiceFeign.update(tmsOrderAddDTO);
if (result != null && "200".equals(String.valueOf(result.get("code")))) {
log.info("调整后同步修改TMS订单成功,执行单[{}],业务单[{}]", executeOrder.getGoodsNumber(), after.getGoodsNumber());
} else {
log.error("调整后同步修改TMS订单失败,执行单[{}],返回: {}", executeOrder.getGoodsNumber(),
result == null ? "null" : result.get("msg"));
}
}
}