调整同步TMS修改
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
+105
-2
@@ -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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user