|
|
@@ -788,7 +788,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
if (waybillOrder == null) {
|
|
|
return HttpResult.error("运单" + wOrderId + "不存在,请确认!");
|
|
|
}
|
|
|
- //已出车、到达装货地、已装货、到达卸货地、已卸货的车辆运单才能装货
|
|
|
+ //到达装货地的车辆运单才能装货
|
|
|
if (!waybillOrder.getStatus().equals(CarWaybillEnum.WAIT_LOADING.getCode())) {
|
|
|
return HttpResult.error("运单" + waybillOrder.getWOrderNo() + "当前状态已不能装货!");
|
|
|
}
|
|
|
@@ -859,7 +859,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
if (waybillOrder == null) {
|
|
|
return HttpResult.error("运单" + wOrderId + "不存在,请确认!");
|
|
|
}
|
|
|
- //已出车、到达装货地、已装货、到达卸货地、已卸货的车辆运单才能卸货
|
|
|
+ //到达卸货地的车辆运单才能卸货
|
|
|
if (!waybillOrder.getStatus().equals(CarWaybillEnum.WAIT_UNLOADING.getCode())) {
|
|
|
return HttpResult.error("运单" + waybillOrder.getWOrderNo() + "当前状态已不能卸货!");
|
|
|
}
|
|
|
@@ -888,13 +888,13 @@ public class KwtWaybillOrderV1Service {
|
|
|
setWaybillOrderTrack(waybillOrder.getId(), params.getWSubtaskId(), params.getOperateTime(), waybillOrder.getStatus(), params.getRemark());
|
|
|
|
|
|
/*4、新增装卸货榜单信息*/
|
|
|
- waybillOrderTicketService.addTicketV1(loading, waybillOrder.getId(), params.getWSubtaskId(), params.getWAddressId(), params.getUrls(), params.getOperateTime(), Global.NUMERICAL_ONE);
|
|
|
+ waybillOrderTicketService.addTicketV1(loading, waybillOrder.getId(), params.getWSubtaskId(), params.getWAddressId(), params.getUrls(), params.getOperateTime(), Global.NUMERICAL_TWO);
|
|
|
|
|
|
/*5、校验运单-子单是否全部运输完毕*/
|
|
|
//运单地址信息
|
|
|
List<KwtWaybillOrderAddress> addresses = waybillOrderAddressDao.findBySubtaskId(params.getWSubtaskId(), null);
|
|
|
//运单地址榜单信息
|
|
|
- List<KwtWaybillOrderTicket> tickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, params.getWSubtaskId(), null, null);
|
|
|
+ List<KwtWaybillOrderTicket> tickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, params.getWSubtaskId(), null);
|
|
|
//运单子单是否已经运输完成
|
|
|
boolean bool = addresses.size() == tickets.size();
|
|
|
if (!bool) {
|
|
|
@@ -909,7 +909,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
//运单地址信息
|
|
|
addresses = waybillOrderAddressDao.findByAddresses(params.getWOrderId(), null);
|
|
|
//运单地址榜单信息
|
|
|
- tickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, null, null);
|
|
|
+ tickets = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, null, null);
|
|
|
//运单是否已经运输完成
|
|
|
bool = addresses.size() == tickets.size();
|
|
|
if (!bool) {
|
|
|
@@ -995,8 +995,49 @@ public class KwtWaybillOrderV1Service {
|
|
|
* @date 2024/3/6
|
|
|
**/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public HttpResult editTicketV1(WaybillOrderTicketV3Dto params) {
|
|
|
+ public HttpResult editTicketV1(WaybillOrderTicketV4Dto params) {
|
|
|
+ /*1、校验*/
|
|
|
+ Long wOrderId = params.getWOrderId();
|
|
|
+ //运单信息
|
|
|
+ KwtWaybillOrderV1 waybillOrder = waybillOrderV1Dao.selectById(wOrderId);
|
|
|
+ if (waybillOrder == null) {
|
|
|
+ return HttpResult.error("运单" + wOrderId + "不存在,请确认!");
|
|
|
+ }
|
|
|
+ //已出车、到达装货地、已装货、到达卸货地、已卸货的车辆运单才能卸货
|
|
|
+ if (!CarWaybillEnum.arriveLoading(waybillOrder.getStatus())) {
|
|
|
+ return HttpResult.error("运单" + waybillOrder.getWOrderNo() + "当前状态已不能修改榜单!");
|
|
|
+ }
|
|
|
+ //地址信息
|
|
|
+ KwtWaybillOrderAddress address = waybillOrderAddressDao.selectById(params.getWAddressId());
|
|
|
+ if (address == null) {
|
|
|
+ return HttpResult.error("运单该地址已不存在!");
|
|
|
+ }
|
|
|
|
|
|
+ /*2、更新装卸货榜单信息*/
|
|
|
+ //榜单信息
|
|
|
+ List<WaybillOrderTicketLoadingDto> loading = params.getLoading();
|
|
|
+ waybillOrderTicketService.editTicketV1(loading, params.getWAddressId(), params.getUrls(), params.getOperateTime());
|
|
|
+
|
|
|
+ /*3、更新车辆运单-子单*/
|
|
|
+ //运单子单信息
|
|
|
+ KwtWaybillOrderSubtask orderSubtask = waybillOrderSubtaskDao.selectById(params.getWSubtaskId());
|
|
|
+ //物流运单信息
|
|
|
+ KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(orderSubtask.getLOrderId());
|
|
|
+ //运单-子单装货榜单信息
|
|
|
+ List<KwtWaybillOrderTicket> loadTickets = waybillOrderTicketDao.findWaybillOrderTicketV1(wOrderId, params.getWSubtaskId(), AddressDefaultTypeEnum.SHIPMENT.getCode(), orderSubtask.getUnit());
|
|
|
+ //运单-子单卸货榜单信息
|
|
|
+ List<KwtWaybillOrderTicket> unloadTickets = waybillOrderTicketDao.findWaybillOrderTicketV1(wOrderId, params.getWSubtaskId(), AddressDefaultTypeEnum.TAKE.getCode(), orderSubtask.getUnit());
|
|
|
+ //装货-总量
|
|
|
+ BigDecimal loadAmount = loadTickets.stream().map(KwtWaybillOrderTicket::getAmount ).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ //卸货-总量
|
|
|
+ BigDecimal unloadAmount = unloadTickets.stream().map(KwtWaybillOrderTicket::getAmount ).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ orderSubtask.setLoadAmount(loadAmount.doubleValue());
|
|
|
+ orderSubtask.setUnloadAmount(unloadAmount.doubleValue());
|
|
|
+ orderSubtask.setDeficitAmount(BigDecimal.valueOf(orderSubtask.getLoadAmount()).subtract(BigDecimal.valueOf(orderSubtask.getUnloadAmount())).doubleValue());
|
|
|
+ BigDecimal deficitPrice = deficitPrice(BigDecimal.valueOf(orderSubtask.getLoadAmount()), BigDecimal.valueOf(orderSubtask.getDeficitAmount()),
|
|
|
+ logisticsOrder.getLoss(), logisticsOrder.getLossUnit(), logisticsOrder.getGoodsPrice());
|
|
|
+ orderSubtask.setDeficitPrice(deficitPrice.doubleValue());
|
|
|
+ waybillOrderSubtaskDao.updateById(orderSubtask);
|
|
|
return HttpResult.ok();
|
|
|
}
|
|
|
|