修改业务单bug

This commit is contained in:
赵辉
2026-05-29 22:58:47 +08:00
parent a5444869bc
commit 3e31c560d6
11 changed files with 252 additions and 151 deletions
@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE, url = "http://10.33.0.99:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) @FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE, fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
public interface OmsServiceFeign { public interface OmsServiceFeign {
@@ -226,6 +226,7 @@ public class BusinessDocumentOrderImpl extends ServiceImpl<BusinessDocumentOrder
subOrder.setUnloadPhone(user.getEmergencyContactPhone()); subOrder.setUnloadPhone(user.getEmergencyContactPhone());
subOrder.setInvoiceNumber(businessDeliveryDetailsLinkDTO.getInvoiceNumber()); subOrder.setInvoiceNumber(businessDeliveryDetailsLinkDTO.getInvoiceNumber());
subOrder.setCustomerNumber(businessDeliveryDetailsLinkDTO.getCustomerNumber()); subOrder.setCustomerNumber(businessDeliveryDetailsLinkDTO.getCustomerNumber());
subOrder.setRecipientName(user.getUserName());
businessDocumentOrderMapper.insert(subOrder); businessDocumentOrderMapper.insert(subOrder);
@@ -254,7 +255,7 @@ public class BusinessDocumentOrderImpl extends ServiceImpl<BusinessDocumentOrder
unloadAddress.setOrganizationName(subOrder.getOrganizationName()); unloadAddress.setOrganizationName(subOrder.getOrganizationName());
unloadAddress.setTopOrganizationId(subOrder.getTopOrganizationId()); unloadAddress.setTopOrganizationId(subOrder.getTopOrganizationId());
unloadAddress.setOrderId(String.valueOf(subOrder.getId())); unloadAddress.setOrderId(String.valueOf(subOrder.getId()));
unloadAddress.setAreaCode(userAreaAddress); unloadAddress.setAreaCode(userAreaName);
unloadAddress.setAreaName(userAreaName); unloadAddress.setAreaName(userAreaName);
unloadAddress.setAddress(userAreaAddress); unloadAddress.setAddress(userAreaAddress);
unloadAddress.setContactName(user.getEmergencyContactName()); unloadAddress.setContactName(user.getEmergencyContactName());
@@ -428,12 +429,68 @@ public class BusinessDocumentOrderImpl extends ServiceImpl<BusinessDocumentOrder
} }
if (ObjectUtil.isNotNull(businessDocumentOrder)){ if (ObjectUtil.isNotNull(businessDocumentOrder)){
// 判断是否为拆单-主单(splicingOrderType == 4)
if (businessDocumentOrder.getSplicingOrderType() != null && businessDocumentOrder.getSplicingOrderType() == 4) {
// 查询所有子单
List<BusinessDocumentOrder> subOrders = businessDocumentOrderMapper.selectList(
new LambdaQueryWrapper<BusinessDocumentOrder>()
.eq(BusinessDocumentOrder::getMainOrderId, String.valueOf(id))
.eq(BusinessDocumentOrder::getDelFlag, 1)
);
if (subOrders != null && !subOrders.isEmpty()) {
// 执行并下发所有子单
for (BusinessDocumentOrder subOrder : subOrders) {
// 检查子单是否已生成执行单
ExecuteOrder subExecuteOrder = executeOrderMapper.selectOne(
new LambdaQueryWrapper<ExecuteOrder>()
.eq(ExecuteOrder::getBusinessDocumentId, subOrder.getId())
.eq(ExecuteOrder::getDelFlag, 1)
.last("LIMIT 1")
);
if (ObjectUtil.isNotNull(subExecuteOrder)) {
continue; // 子单已执行,跳过
}
// 执行并下发子单
executeAndIssueSingleOrder(subOrder, loginUser, organizationId, orgName);
}
// 更新主单状态
businessDocumentOrder.setExecuteId(loginUser.getUserid());
businessDocumentOrder.setExecuteStatus(2L);
businessDocumentOrder.setExecuteTime(new Date());
businessDocumentOrder.setExecutor(loginUser.getUsername());
businessDocumentOrder.setOrderStatus(2L);
businessDocumentOrderMapper.updateById(businessDocumentOrder);
}
} else {
// 非拆单主单,执行原有逻辑
ExecuteOrder objects = executeOrderMapper.selectOne(new LambdaQueryWrapper<ExecuteOrder>().eq(ExecuteOrder::getBusinessDocumentId, id).eq(ExecuteOrder::getDelFlag,1) .last("LIMIT 1") ExecuteOrder objects = executeOrderMapper.selectOne(new LambdaQueryWrapper<ExecuteOrder>().eq(ExecuteOrder::getBusinessDocumentId, id).eq(ExecuteOrder::getDelFlag,1) .last("LIMIT 1")
); );
if (ObjectUtil.isNotNull(objects)) { if (ObjectUtil.isNotNull(objects)) {
throw new ServerException("业务单已生成执行单,请先取消执行单"); throw new ServerException("业务单已生成执行单,请先取消执行单");
} }
// 执行并下发主单
executeAndIssueSingleOrder(businessDocumentOrder, loginUser, organizationId, orgName);
}
}
}
return true;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("执行并下发失败:" + e.getMessage());
}
}
/**
* 执行并下发单个业务单
*/
private void executeAndIssueSingleOrder(BusinessDocumentOrder businessDocumentOrder, LoginUser loginUser, Long organizationId, String orgName) {
Long id = businessDocumentOrder.getId();
// 先创建执行单 // 先创建执行单
ExecuteOrderDO executeOrderDO=new ExecuteOrderDO(); ExecuteOrderDO executeOrderDO=new ExecuteOrderDO();
BeanUtils.copyProperties(businessDocumentOrder,executeOrderDO); BeanUtils.copyProperties(businessDocumentOrder,executeOrderDO);
@@ -483,10 +540,16 @@ public class BusinessDocumentOrderImpl extends ServiceImpl<BusinessDocumentOrder
List<TmsAddressMultiDTO> unloadAddressList=new ArrayList<TmsAddressMultiDTO>(); List<TmsAddressMultiDTO> unloadAddressList=new ArrayList<TmsAddressMultiDTO>();
List<TmsOrderAccount> tmsOrderAccountList=new ArrayList<TmsOrderAccount>(); List<TmsOrderAccount> tmsOrderAccountList=new ArrayList<TmsOrderAccount>();
if(ObjectUtil.isNotNull(businessDocumentOrder)){
BeanUtils.copyProperties(businessDocumentOrder,tmsOrderAddDTO); BeanUtils.copyProperties(businessDocumentOrder,tmsOrderAddDTO);
tmsOrderAddDTO.setExecuteOrderId(String.valueOf(executeOrderId)); tmsOrderAddDTO.setExecuteOrderId(String.valueOf(executeOrderId));
tmsOrderAddDTO.setExecuteOrderNumber(executeOrder.getGoodsNumber()); tmsOrderAddDTO.setExecuteOrderNumber(executeOrder.getGoodsNumber());
BusinessDeliveryDetailsLink businessDeliveryDetailsLink = businessDeliveryDetailsLinkMapper.selectOne(new LambdaQueryWrapper<BusinessDeliveryDetailsLink>().eq(BusinessDeliveryDetailsLink::getSubOrderId, businessDocumentOrder.getId()));
if (ObjectUtil.isNotNull(businessDeliveryDetailsLink)) {
Integer bag = businessDeliveryDetailsLink.getBag();
Integer box = businessDeliveryDetailsLink.getBox();
//相加
tmsOrderAddDTO.setGoodsName(String.valueOf(bag + box));
}
//货物信息 //货物信息
List<BusinessDocumentCargoMulti> businessDocumentCargoMultiList=businessDocumentCargoMultiMapper.selectList(new QueryWrapper<BusinessDocumentCargoMulti>().lambda() List<BusinessDocumentCargoMulti> businessDocumentCargoMultiList=businessDocumentCargoMultiMapper.selectList(new QueryWrapper<BusinessDocumentCargoMulti>().lambda()
@@ -577,14 +640,6 @@ public class BusinessDocumentOrderImpl extends ServiceImpl<BusinessDocumentOrder
} }
} }
} }
}
}
return true;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("执行并下发失败:" + e.getMessage());
}
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -25,6 +25,10 @@ import com.mhd.oms.domain.businessOrderAccount.BusinessOrderAccount;
import com.mhd.oms.domain.businessOrderAccount.repository.mapper.BusinessOrderAccountMapper; import com.mhd.oms.domain.businessOrderAccount.repository.mapper.BusinessOrderAccountMapper;
import com.mhd.oms.domain.reservationOrder.entity.ReservationOrder; import com.mhd.oms.domain.reservationOrder.entity.ReservationOrder;
import com.mhd.oms.domain.reservationOrder.repository.mapper.ReservationOrderMapper; import com.mhd.oms.domain.reservationOrder.repository.mapper.ReservationOrderMapper;
import com.mhd.oms.domain.reservationStockOutOrder.entity.ReservationStockOutOrder;
import com.mhd.oms.domain.reservationStockOutOrder.repository.mapper.ReservationStockOutOrderMapper;
import com.mhd.oms.domain.reserveStockOutOrder.entity.ReserveStockOutOrder;
import com.mhd.oms.domain.reserveStockOutOrder.repository.mapper.ReserveStockOutOrderMapper;
import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessAuditDTO; import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessAuditDTO;
import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessDocumentAddressMultiDTO; import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessDocumentAddressMultiDTO;
import com.mhd.oms.interfaces.dto.businessDocumentCargoMulti.BusinessDocumentCargoMultiDTO; import com.mhd.oms.interfaces.dto.businessDocumentCargoMulti.BusinessDocumentCargoMultiDTO;
@@ -76,6 +80,9 @@ public class BusinessDocumentOrderDomainService {
@Resource @Resource
private BusinessDeliveryDetailsLinkMapper businessDeliveryDetailsLinkMapper; private BusinessDeliveryDetailsLinkMapper businessDeliveryDetailsLinkMapper;
@Resource
private ReservationStockOutOrderMapper reservationStockOutOrderMapper;
/** /**
* 分页查询【请填写功能名称】列表 * 分页查询【请填写功能名称】列表
*/ */
@@ -221,6 +228,11 @@ public class BusinessDocumentOrderDomainService {
tmsOrder.setGoodsNumber(OrderSequence.getOrderCode()); tmsOrder.setGoodsNumber(OrderSequence.getOrderCode());
} }
ReservationStockOutOrder reservationStockOutOrder = reservationStockOutOrderMapper.selectOne(new LambdaQueryWrapper<ReservationStockOutOrder>().eq(ReservationStockOutOrder::getOutOrderNumber, tmsOrder.getInOrderNumber()));
if (reservationStockOutOrder != null){
reservationStockOutOrder.setBusinessNumber(tmsOrder.getGoodsNumber());
reservationStockOutOrderMapper.updateById(reservationStockOutOrder);
}
List<BusinessDocumentAddressMultiDTO> loadingAddressList = businessDocumentOrderDO.getLoadingAddressList();//装货地信息集合 List<BusinessDocumentAddressMultiDTO> loadingAddressList = businessDocumentOrderDO.getLoadingAddressList();//装货地信息集合
List<BusinessDocumentAddressMultiDTO> unloadAddressList = businessDocumentOrderDO.getUnloadAddressList();//卸货地信息集合 List<BusinessDocumentAddressMultiDTO> unloadAddressList = businessDocumentOrderDO.getUnloadAddressList();//卸货地信息集合
String loadCityCounty="",unloadCityCounty=""; String loadCityCounty="",unloadCityCounty="";
@@ -340,8 +352,8 @@ public class BusinessDocumentOrderDomainService {
} else { } else {
tmsOrder.setSplicingOrderType(0L); // 普通单 tmsOrder.setSplicingOrderType(0L); // 普通单
} }
//一小时候 //一
tmsOrder.setDocumentDate(DateUtils.addHours(new Date(), 1)); tmsOrder.setDocumentDate(DateUtils.addHours(new Date(), 24));
boolean istrue = businessDocumentOrderMapper.insert(tmsOrder) > 0; boolean istrue = businessDocumentOrderMapper.insert(tmsOrder) > 0;
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mhd.common.core.domain.dto.wlhy.TmsAddressMultiDTO; 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.TmsCargoInfoDTO;
import com.mhd.common.core.domain.dto.wlhy.TmsOrderAccount; import com.mhd.common.core.domain.dto.wlhy.TmsOrderAccount;
import com.mhd.oms.domain.businessDeliveryDetailsLink.entity.BusinessDeliveryDetailsLink;
import com.mhd.oms.domain.businessDeliveryDetailsLink.repository.mapper.BusinessDeliveryDetailsLinkMapper;
import com.mhd.system.api.domain.TmsOrderAddDTO; import com.mhd.system.api.domain.TmsOrderAddDTO;
import com.mhd.common.core.domain.entity.TmsOrder; import com.mhd.common.core.domain.entity.TmsOrder;
import com.mhd.common.core.exception.ServiceException; import com.mhd.common.core.exception.ServiceException;
@@ -69,6 +71,8 @@ public class ExecuteOrderImpl extends ServiceImpl<ExecuteOrderMapper, ExecuteOrd
private WlhyServiceFeign wlhyServiceFeign; private WlhyServiceFeign wlhyServiceFeign;
@Autowired @Autowired
private BusinessOrderAccountMapper businessOrderAccountMapper; private BusinessOrderAccountMapper businessOrderAccountMapper;
@Autowired
private BusinessDeliveryDetailsLinkMapper businessDeliveryDetailsLinkMapper;
/** /**
* 查询【请填写功能名称】列表 * 查询【请填写功能名称】列表
@@ -207,7 +211,13 @@ public class ExecuteOrderImpl extends ServiceImpl<ExecuteOrderMapper, ExecuteOrd
tmsOrderAddDTO.setOrderSource("0"); tmsOrderAddDTO.setOrderSource("0");
tmsOrderAddDTO.setOrganizationId(organizationId); tmsOrderAddDTO.setOrganizationId(organizationId);
tmsOrderAddDTO.setLoginUser(loginUser); tmsOrderAddDTO.setLoginUser(loginUser);
BusinessDeliveryDetailsLink businessDeliveryDetailsLink = businessDeliveryDetailsLinkMapper.selectOne(new LambdaQueryWrapper<BusinessDeliveryDetailsLink>().eq(BusinessDeliveryDetailsLink::getSubOrderId, businessDocumentOrder.getId()));
if (ObjectUtil.isNotNull(businessDeliveryDetailsLink)) {
Integer bag = businessDeliveryDetailsLink.getBag();
Integer box = businessDeliveryDetailsLink.getBox();
//相加
tmsOrderAddDTO.setGoodsName(String.valueOf(bag + box));
}
tmsOrderAddDTO.setOrganizationName(orgName); tmsOrderAddDTO.setOrganizationName(orgName);
@@ -216,7 +216,7 @@ public class ExecuteOrderPO extends BaseVOEntity{
@ApiModelProperty("主单业务单号") @ApiModelProperty("主单业务单号")
@Excel(name = "主单业务单号") @Excel(name = "主单业务单号")
private String mainOrderNumber; private String mainOrderNum;
@ApiModelProperty("卸货联系人") @ApiModelProperty("卸货联系人")
@Excel(name = "卸货联系人") @Excel(name = "卸货联系人")
@@ -478,4 +478,8 @@ public class ReservationStockOutOrder extends BaseVOEntity {
@Excel(name = "退货数量") @Excel(name = "退货数量")
private BigDecimal returnQuantity; private BigDecimal returnQuantity;
@ApiModelProperty("运输业务单号")
@Excel(name = "运输业务单号")
private String businessNumber;
} }
@@ -492,4 +492,8 @@ public class ReservationStockOutOrderPO extends BaseVOEntity {
@Excel(name = "退货数量") @Excel(name = "退货数量")
private BigDecimal returnQuantity; private BigDecimal returnQuantity;
private List<ReservationDeliveryDetailsLink> reservationDeliveryDetailsLinkList; private List<ReservationDeliveryDetailsLink> reservationDeliveryDetailsLinkList;
@ApiModelProperty("运输业务单号")
@Excel(name = "运输业务单号")
private String businessNumber;
} }
@@ -527,4 +527,8 @@ public class ReservationStockOutOrderDO extends BaseVOEntity {
@Excel(name = "退货数量") @Excel(name = "退货数量")
private BigDecimal returnQuantity; private BigDecimal returnQuantity;
private List<ReservationDeliveryDetailsLink> reservationDeliveryDetailsLinkList; private List<ReservationDeliveryDetailsLink> reservationDeliveryDetailsLinkList;
@ApiModelProperty("运输业务单号")
@Excel(name = "运输业务单号")
private String businessNumber;
} }
@@ -516,4 +516,8 @@ public class ReservationStockOutOrderDTO extends ReservationStockOutOrderBaseDTO
@Excel(name = "退货数量") @Excel(name = "退货数量")
private BigDecimal returnQuantity; private BigDecimal returnQuantity;
private List<ReservationDeliveryDetailsLink> reservationDeliveryDetailsLinkList; private List<ReservationDeliveryDetailsLink> reservationDeliveryDetailsLinkList;
@ApiModelProperty("运输业务单号")
@Excel(name = "运输业务单号")
private String businessNumber;
} }
@@ -726,7 +726,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select id from NGWL_TEST_WLHY.TMS_ORDER where EXECUTE_ORDER_NUMBER = #{goodsNumber} and SPLICING_ORDER_TYPE = 1 select id from NGWL_TEST_WLHY.TMS_ORDER where EXECUTE_ORDER_NUMBER = #{goodsNumber} and SPLICING_ORDER_TYPE = 1
</select> </select>
<select id="getTmsTransportNote" resultType="com.mhd.system.api.domain.TmsTransportNote"> <select id="getTmsTransportNote" resultType="com.mhd.system.api.domain.TmsTransportNote">
select * from NGWL_TEST_WLHY.TMS_TRANSPORT_NOTE where ORDER_ID = #{tmsOrderId} SELECT t.*,
(
SELECT MAIN_ORDER_NUMBER
FROM NGWL_TEST_WLHY.TMS_TRANSPORT_NOTE
WHERE ORDER_ID = #{tmsOrderId}
LIMIT 1
) AS MAIN_TRANSPORTATION_NUMBER
FROM NGWL_TEST_WLHY.TMS_TRANSPORT_NOTE t
WHERE t.ORDER_ID = #{tmsOrderId}
</select> </select>
@@ -112,7 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.priority_level_name, a.direct_warehouse, a.review, a.annex_url, a.material_quantity, a.quantity, a.weight_limit, a.volume_limit, a.check_quantity, a.cancel_order, a.cancel_remark, a.cancel_by, a.cancel_by_name, a.priority_level_name, a.direct_warehouse, a.review, a.annex_url, a.material_quantity, a.quantity, a.weight_limit, a.volume_limit, a.check_quantity, a.cancel_order, a.cancel_remark, a.cancel_by, a.cancel_by_name,
a.cancel_time, a.close_order, a.close_remark, a.close_by, a.close_by_name, a.close_time, a.check_status,a.BUSINESS_ORDER_NO, a.cancel_time, a.close_order, a.close_remark, a.close_by, a.close_by_name, a.close_time, a.check_status,a.BUSINESS_ORDER_NO,
a.check_task_distribution, a.check_task_distribution_time, a.check_operators_by, a.check_operators_name, a.mobilize_code, a.check_task_distribution, a.check_task_distribution_time, a.check_operators_by, a.check_operators_name, a.mobilize_code,
a.remark, a.create_time, a.create_by, a.create_by_name, a.remark, a.create_time, a.create_by, a.create_by_name,a.business_number,
a.update_time, a.update_by, a.update_by_name, a.del_flag, over_stock_id, over_stock_status, over_stock_type,a."TO", a.update_time, a.update_by, a.update_by_name, a.del_flag, over_stock_id, over_stock_status, over_stock_type,a."TO",
a.CONTACT_PERSON,a.VEHICLE_MODEL_PLATE,a.ENTRUST_NO,a.TEL,a.DRIVER_SIGN,a.FAX,a.DECLARE_CUSTOMS,a.MANUFACTURER, a.CONTACT_PERSON,a.VEHICLE_MODEL_PLATE,a.ENTRUST_NO,a.TEL,a.DRIVER_SIGN,a.FAX,a.DECLARE_CUSTOMS,a.MANUFACTURER,
a.CUSTOMS_DECLARER_INFO,a.DELIVERY_ADDR,a.ENTRY_EXIT_CUSTOMS,a.DEPARTURE_ARRIVAL_COUNTRY,a.CARRIER,a.CONTAINER_NO,a.CONTAINER_NO_NAME,a.OUTBOUND_DATE, a.CUSTOMS_DECLARER_INFO,a.DELIVERY_ADDR,a.ENTRY_EXIT_CUSTOMS,a.DEPARTURE_ARRIVAL_COUNTRY,a.CARRIER,a.CONTAINER_NO,a.CONTAINER_NO_NAME,a.OUTBOUND_DATE,