提交 ccc13591 authored 作者: 刘海泉's avatar 刘海泉

增加批量取消运单的接口

上级 0ff581bc
package com.clx.performance.vo.pc.child;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @ClassName UpdateCarrierBatchCancelVO
* @Description
* @Author kavin
* @Date 2024/8/6 15:17
* @Version 1.0
*/
@Getter
@Setter
public class UpdateCarrierBatchCancelVO {
@ApiModelProperty("成功取消运单数量")
private Integer successCount;
@ApiModelProperty("失败的运单编号集合")
private List<String> failChildNoList;
}
...@@ -8,6 +8,7 @@ import com.clx.performance.param.pc.PageCarrierOrderChildParam; ...@@ -8,6 +8,7 @@ import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam; import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
import com.clx.performance.service.OrderChildService; import com.clx.performance.service.OrderChildService;
import com.clx.performance.vo.pc.*; import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.pc.child.UpdateCarrierBatchCancelVO;
import com.msl.common.base.PageData; import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert; import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result; import com.msl.common.result.Result;
...@@ -131,9 +132,8 @@ public class CarrierOrderChildController { ...@@ -131,9 +132,8 @@ public class CarrierOrderChildController {
@ApiOperation(value = "批量取消运单", notes = "<br>By:刘海泉") @ApiOperation(value = "批量取消运单", notes = "<br>By:刘海泉")
@PostMapping("/updateCarrierBatchCancel") @PostMapping("/updateCarrierBatchCancel")
public Result<List<String>> updateCarrierBatchCancel(@RequestBody @Validated OrderChildCarrierBatchCancelParam param) { public Result<UpdateCarrierBatchCancelVO> updateCarrierBatchCancel(@RequestBody @Validated OrderChildCarrierBatchCancelParam param) {
List<String> cancelFailList = orderChildService.updateCarrierBatchCancel(param); return Result.ok(orderChildService.updateCarrierBatchCancel(param));
return Result.ok(cancelFailList);
} }
} }
...@@ -3,6 +3,7 @@ package com.clx.performance.dao; ...@@ -3,6 +3,7 @@ package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsNotCancelChildDTO;
import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO; import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import com.clx.performance.mapper.OrderChildMapper; import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
...@@ -204,4 +205,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -204,4 +205,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> listCompleteByOrderNos(List<String> strings); List<OrderChild> listCompleteByOrderNos(List<String> strings);
List<OrderChild> listBeforeUnloadOrderChild(LocalDateTime startTime,LocalDateTime endTime); List<OrderChild> listBeforeUnloadOrderChild(LocalDateTime startTime,LocalDateTime endTime);
List<OrderGoodsNotCancelChildDTO> countValidByOrderGoodsNoList(List<String> orderGoodsList);
void batchUpdateCancel(List<OrderChild> canCancelOrderChildList);
} }
...@@ -2,6 +2,7 @@ package com.clx.performance.dao; ...@@ -2,6 +2,7 @@ package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.mapper.OrderGoodsMapper; import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsFleetOpenTruck; import com.clx.performance.model.OrderGoodsFleetOpenTruck;
...@@ -111,4 +112,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -111,4 +112,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
List<OrderGoods> listAfterCreatedByOrderNo(String orderNo); List<OrderGoods> listAfterCreatedByOrderNo(String orderNo);
void batchUpdateOrderGoodsPaying(List<OrderGoods> updateOrderGoods);
void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList);
} }
...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsNotCancelChildDTO;
import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO; import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import com.clx.performance.enums.OrderChildEnum; import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.mapper.OrderChildMapper; import com.clx.performance.mapper.OrderChildMapper;
...@@ -684,4 +685,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -684,4 +685,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.le(OrderChild :: getCreateTime,endTime) .le(OrderChild :: getCreateTime,endTime)
); );
} }
@Override
public List<OrderGoodsNotCancelChildDTO> countValidByOrderGoodsNoList(List<String> orderGoodsList) {
return baseMapper.countValidByOrderGoodsNoList(orderGoodsList);
}
@Override
public void batchUpdateCancel(List<OrderChild> canCancelOrderChildList) {
baseMapper.batchUpdateCancel(canCancelOrderChildList);
}
} }
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.mapper.OrderGoodsMapper; import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
...@@ -312,7 +313,15 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -312,7 +313,15 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
.ne(OrderGoods::getOrderGoodsStatus,OrderGoodsStatusEnum.Status.CREATED.getCode()) .ne(OrderGoods::getOrderGoodsStatus,OrderGoodsStatusEnum.Status.CREATED.getCode())
.orderByDesc(OrderGoods :: getPendingOrderTime) .orderByDesc(OrderGoods :: getPendingOrderTime)
); );
}
@Override
public void batchUpdateOrderGoodsPaying(List<OrderGoods> updateOrderGoods) {
baseMapper.batchUpdateOrderGoodsPaying(updateOrderGoods);
} }
@Override
public void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList) {
baseMapper.batchCancelOrderGoodsWeight(cancelOrderGoodsList);
}
} }
package com.clx.performance.dto;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
* @ClassName OrderGoodsNotCancelChildDTO
* @Description
* @Author kavin
* @Date 2024/8/6 10:52
* @Version 1.0
*/
@Getter
@Setter
public class OrderGoodsCancelWeightDTO {
private String orderGoodsNo; //货单编号
private BigDecimal weight; //归还货单的吨数
}
package com.clx.performance.dto;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName OrderGoodsNotCancelChildDTO
* @Description
* @Author kavin
* @Date 2024/8/6 10:52
* @Version 1.0
*/
@Getter
@Setter
public class OrderGoodsNotCancelChildDTO {
private String orderGoodsNo; //货单编号
private Long count; //货单下未取消的运单数量
}
package com.clx.performance.extranal.user; package com.clx.performance.extranal.user;
import com.clx.user.param.feign.BatchUpdateDriverAndTruckParam;
import com.clx.user.vo.feign.DriverInfoFeignVo; import com.clx.user.vo.feign.DriverInfoFeignVo;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo; import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.clx.user.vo.feign.FeignDriverTruckModelVo; import com.clx.user.vo.feign.FeignDriverTruckModelVo;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import java.util.List;
public interface DriverService { public interface DriverService {
...@@ -18,4 +21,7 @@ public interface DriverService { ...@@ -18,4 +21,7 @@ public interface DriverService {
Optional<FeignDriverTruckModelVo> getDumpType(String truckModel);//通过车型获取自卸非自卸 Optional<FeignDriverTruckModelVo> getDumpType(String truckModel);//通过车型获取自卸非自卸
//批量恢复司机和车辆状态
void batchUpdateDriverAndTruckStatusCancel(List<BatchUpdateDriverAndTruckParam> list);
} }
...@@ -2,6 +2,7 @@ package com.clx.performance.extranal.user.impl; ...@@ -2,6 +2,7 @@ package com.clx.performance.extranal.user.impl;
import com.clx.performance.extranal.user.DriverService; import com.clx.performance.extranal.user.DriverService;
import com.clx.user.feign.DriverFeign; import com.clx.user.feign.DriverFeign;
import com.clx.user.param.feign.BatchUpdateDriverAndTruckParam;
import com.clx.user.vo.feign.DriverInfoFeignVo; import com.clx.user.vo.feign.DriverInfoFeignVo;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo; import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.clx.user.vo.feign.FeignDriverTruckModelVo; import com.clx.user.vo.feign.FeignDriverTruckModelVo;
...@@ -13,6 +14,7 @@ import lombok.AllArgsConstructor; ...@@ -13,6 +14,7 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Slf4j @Slf4j
...@@ -66,4 +68,10 @@ public class DriverServiceImpl implements DriverService { ...@@ -66,4 +68,10 @@ public class DriverServiceImpl implements DriverService {
return Optional.ofNullable(result.getData()); return Optional.ofNullable(result.getData());
} }
@Override
public void batchUpdateDriverAndTruckStatusCancel(List<BatchUpdateDriverAndTruckParam> list) {
Optional.ofNullable(driverFeign.batchUpdateOrderStatus(list))
.filter(Result::succeed).orElseThrow(ResultCodeEnum.FAIL);
}
} }
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsNotCancelChildDTO;
import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO; import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.PageOrderChildOfDriverParam; import com.clx.performance.param.app.PageOrderChildOfDriverParam;
...@@ -176,4 +177,13 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> { ...@@ -176,4 +177,13 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
" group by order_goods_no " + " group by order_goods_no " +
"</script>") "</script>")
List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(@Param("list") List<String> childNos); List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(@Param("list") List<String> childNos);
@SelectProvider(type = OrderChildSqlProvider.class, method = "countValidByOrderGoodsNoList")
List<OrderGoodsNotCancelChildDTO> countValidByOrderGoodsNoList(@Param("orderGoodsList") List<String> orderGoodsList);
@SelectProvider(type = OrderChildSqlProvider.class, method = "batchUpdateCancel")
void batchUpdateCancel(@Param("canCancelOrderChildList") List<OrderChild> canCancelOrderChildList);
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsFleetOpenTruck; import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.param.app.AppGoodsOrderSearchParam; import com.clx.performance.param.app.AppGoodsOrderSearchParam;
...@@ -108,4 +109,10 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> { ...@@ -108,4 +109,10 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
void batchCancelOrderGoods(List<CancelOrderGoodsWeightDTO> cancelOrderGoodsWeight); void batchCancelOrderGoods(List<CancelOrderGoodsWeightDTO> cancelOrderGoodsWeight);
@UpdateProvider(type = OrderGoodsSqlProvider.class, method = "batchUpdateOrderGoodsPaying")
void batchUpdateOrderGoodsPaying(@Param("updateOrderGoods") List<OrderGoods> updateOrderGoods);
@UpdateProvider(type = OrderGoodsSqlProvider.class, method = "batchCancelOrderGoodsWeight")
void batchCancelOrderGoodsWeight(@Param("cancelOrderGoodsList") List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList);
} }
package com.clx.performance.service; package com.clx.performance.service;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildLog; import com.clx.performance.model.OrderChildLog;
import java.util.List; import java.util.List;
...@@ -16,4 +15,5 @@ public interface OrderChildLogService { ...@@ -16,4 +15,5 @@ public interface OrderChildLogService {
void saveBatchOrderChildLog(List<OrderChildLog> logs); void saveBatchOrderChildLog(List<OrderChildLog> logs);
void batchSaveCarrierOrderChildLogs(List<OrderChildLog> logs);
} }
...@@ -11,6 +11,7 @@ import com.clx.performance.param.pc.*; ...@@ -11,6 +11,7 @@ import com.clx.performance.param.pc.*;
import com.clx.performance.vo.app.*; import com.clx.performance.vo.app.*;
import com.clx.performance.vo.app.owner.OwnerOrderChildVO; import com.clx.performance.vo.app.owner.OwnerOrderChildVO;
import com.clx.performance.vo.pc.*; import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.pc.child.UpdateCarrierBatchCancelVO;
import com.msl.common.base.PageParam; import com.msl.common.base.PageParam;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
...@@ -109,5 +110,5 @@ public interface OrderChildService { ...@@ -109,5 +110,5 @@ public interface OrderChildService {
void cacheOrderChildExpectData(String childNo, OrderChildExpectDTO expect); void cacheOrderChildExpectData(String childNo, OrderChildExpectDTO expect);
List<String> updateCarrierBatchCancel(OrderChildCarrierBatchCancelParam param); UpdateCarrierBatchCancelVO updateCarrierBatchCancel(OrderChildCarrierBatchCancelParam param);
} }
...@@ -52,4 +52,9 @@ public class OrderChildLogServiceImpl implements OrderChildLogService { ...@@ -52,4 +52,9 @@ public class OrderChildLogServiceImpl implements OrderChildLogService {
public void saveBatchOrderChildLog(List<OrderChildLog> logs) { public void saveBatchOrderChildLog(List<OrderChildLog> logs) {
orderChildLogDao.saveBatchList(logs); orderChildLogDao.saveBatchList(logs);
} }
@Override
public void batchSaveCarrierOrderChildLogs(List<OrderChildLog> logs) {
orderChildLogDao.saveBatchList(logs);
}
} }
...@@ -22,6 +22,8 @@ import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao; ...@@ -22,6 +22,8 @@ import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderChildExpectDTO; import com.clx.performance.dto.OrderChildExpectDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.dto.OrderGoodsNotCancelChildDTO;
import com.clx.performance.dto.gd.GdRouteDTO; import com.clx.performance.dto.gd.GdRouteDTO;
import com.clx.performance.dto.payment.PaymentDTO; import com.clx.performance.dto.payment.PaymentDTO;
import com.clx.performance.dto.payment.WalletResidueCardDTO; import com.clx.performance.dto.payment.WalletResidueCardDTO;
...@@ -59,8 +61,10 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService; ...@@ -59,8 +61,10 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService;
import com.clx.performance.vo.app.*; import com.clx.performance.vo.app.*;
import com.clx.performance.vo.app.owner.OwnerOrderChildVO; import com.clx.performance.vo.app.owner.OwnerOrderChildVO;
import com.clx.performance.vo.pc.*; import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.pc.child.UpdateCarrierBatchCancelVO;
import com.clx.user.enums.driver.DriverInfoEnum; import com.clx.user.enums.driver.DriverInfoEnum;
import com.clx.user.feign.DocumentFeign; import com.clx.user.feign.DocumentFeign;
import com.clx.user.param.feign.BatchUpdateDriverAndTruckParam;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo; import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.clx.user.vo.feign.OwnerInfoFeignVO; import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
...@@ -3026,8 +3030,11 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3026,8 +3030,11 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
return charts; return charts;
} }
@Transactional(rollbackFor = Exception.class)
@Override @Override
public List<String> updateCarrierBatchCancel(OrderChildCarrierBatchCancelParam param) { public UpdateCarrierBatchCancelVO updateCarrierBatchCancel(OrderChildCarrierBatchCancelParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
List<OrderChild> orderChildList = orderChildDao.listInField(OrderChild::getChildNo, param.getChildNoList()); List<OrderChild> orderChildList = orderChildDao.listInField(OrderChild::getChildNo, param.getChildNoList());
List<OrderChild> canCancelOrderChildList = new ArrayList<>(); //可以取消的运单集合 List<OrderChild> canCancelOrderChildList = new ArrayList<>(); //可以取消的运单集合
List<OrderChild> notCancelOrderChildList = new ArrayList<>(); //不可以取消的运单集合 List<OrderChild> notCancelOrderChildList = new ArrayList<>(); //不可以取消的运单集合
...@@ -3040,50 +3047,120 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3040,50 +3047,120 @@ public class OrderChildServiceImpl implements OrderChildService {
notCancelOrderChildList.add(child); notCancelOrderChildList.add(child);
} }
} }
// 返回吨数
batchUpdateOrderGoodsWeightReturn(canCancelOrderChildList);
/* // 禁止取消 (卸车前取消) // 更新出车状态
if (orderChild.getStatus() >= OrderChildEnum.Status.UNLOAD.getCode()) { batchUpdateDriverAndTruckStatusCancel(canCancelOrderChildList);
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID);
}
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(
PerformanceResultEnum.DATA_NOT_FIND);
// 定向
OrderGoodsTruckBind orderGoodsTruckBind = null;
if (Objects.equals(orderGoods.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())
|| Objects.equals(orderGoods.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.FLEET_EXCLUSIVE.getCode())) {
orderGoodsTruckBind = orderGoodsTruckBindDao.getByOrderGoodsNoAndTruckNo(orderGoods.getOrderGoodsNo(),
orderChild.getTruckNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
}
canCancelOrderChildList.forEach(orderChild->{
orderChild.setCancelRemark(param.getRemark()); orderChild.setCancelRemark(param.getRemark());
orderChild.setCancelTime(LocalDateTime.now()); orderChild.setCancelTime(LocalDateTime.now());
orderChild.setFinishTime(orderChild.getCancelTime()); orderChild.setFinishTime(orderChild.getCancelTime());
orderChild.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode()); orderChild.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
});
// 返回吨数 orderChildDao.batchUpdateCancel(canCancelOrderChildList);
updateOrderGoodsAmountReturn(orderChild, orderGoods);
// 取消定向
updateOrderGoodsDirectCancel(orderGoods,orderGoodsTruckBind);
orderChildDao.updateCancel(orderChild);
// 更新出车状态 List<OrderChildLog> logs = new ArrayList<>();
updateDriverOrderStatusCancel(orderChild.getDriverUserNo(), orderChild.getTruckId()); OrderChildLog orderChildLog;
for (OrderChild child : canCancelOrderChildList) {
orderChildLog = new OrderChildLog();
orderChildLog.setChildNo(child.getChildNo());
orderChildLog.setType(OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode());
orderChildLog.setRemark(OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg());
orderChildLog.setCreateType(OrderChildLogEnum.CreateType.PLATFORM.getCode());
orderChildLog.setCreateBy(loginUserInfo.getUserNo());
orderChildLog.setCreateName(loginUserInfo.getUserName());
logs.add(orderChildLog);
}
// 日志 // 批量保存日志
orderChildLogService.saveCarrierOrderChildLog(childNo, OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode(), orderChildLogService.batchSaveCarrierOrderChildLogs(logs);
OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg(), loginUserInfo.getUserNo(),
loginUserInfo.getUserName());
// 承运取消后置逻辑 // 承运取消后置逻辑
orderChildPostService.orderChildCancelByCarrier(orderChild, UserTypeEnum.CARRIER.getCode(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());*/ canCancelOrderChildList.forEach(orderChild-> orderChildPostService.orderChildCancelByCarrier(orderChild,
UserTypeEnum.CARRIER.getCode(), loginUserInfo.getUserNo(), loginUserInfo.getUserName()));
UpdateCarrierBatchCancelVO result = new UpdateCarrierBatchCancelVO();
result.setFailChildNoList(notCancelOrderChildList.stream().map(OrderChild :: getChildNo).collect(Collectors.toList()));
result.setSuccessCount(canCancelOrderChildList.size());
return result;
}
private void batchUpdateOrderGoodsWeightReturn(List<OrderChild> canCancelOrderChildList) {
//按照货单分组,每个货单下取消的运单个数map
Map<String, Long> orderGoodsChildsMap = new HashMap<>();
return notCancelOrderChildList.stream().map(OrderChild :: getChildNo).collect(Collectors.toList()); //货单归还吨数Map
Map<String, BigDecimal> cancelOrderGoodsWeightMap = new HashMap<>();
for (OrderChild child : canCancelOrderChildList) {
Long count = Objects.nonNull(orderGoodsChildsMap.get(child.getOrderGoodsNo()))?
orderGoodsChildsMap.get(child.getOrderGoodsNo()) + 1:1;
orderGoodsChildsMap.put(child.getOrderGoodsNo(),count);
BigDecimal weight = Objects.nonNull(cancelOrderGoodsWeightMap.get(child.getOrderGoodsNo()))?
cancelOrderGoodsWeightMap.get(child.getOrderGoodsNo()).add(child.getWeight()):child.getWeight();
cancelOrderGoodsWeightMap.put(child.getOrderGoodsNo(),weight);
}
List<String> orderGoodsList = new ArrayList<>(orderGoodsChildsMap.keySet());
//查询当前货单下的运单个数Map
List<OrderGoodsNotCancelChildDTO> list = orderChildDao.countValidByOrderGoodsNoList(orderGoodsList);
//货单下全部运单都已取消。则重置货单状态为挂单中
List<OrderGoods> updateOrderGoods = new ArrayList<>();
for(OrderGoodsNotCancelChildDTO dto : list){
if(Objects.nonNull(orderGoodsChildsMap.get(dto.getOrderGoodsNo()))){
//此时取消的货单下运单数量等于该货单下未取消的运单数量,则设置货单状态为挂单中
if(Objects.equals(orderGoodsChildsMap.get(dto.getOrderGoodsNo()),dto.getCount())){
OrderGoods orderGoods = new OrderGoods();
orderGoods.setOrderGoodsNo(dto.getOrderGoodsNo());
orderGoods.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.PAYING.getCode());
updateOrderGoods.add(orderGoods);
}
}
}
//货单还吨集合
List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList = new ArrayList<>();
OrderGoodsCancelWeightDTO dto;
for(Map.Entry<String,BigDecimal> entry : cancelOrderGoodsWeightMap.entrySet()){
dto = new OrderGoodsCancelWeightDTO();
dto.setOrderGoodsNo(entry.getKey());
dto.setWeight(entry.getValue());
cancelOrderGoodsList.add(dto);
}
//更新货到状态
if(CollectionUtils.isNotEmpty(updateOrderGoods)){
orderGoodsDao.batchUpdateOrderGoodsPaying(updateOrderGoods);
}
//归还货单吨数
if(CollectionUtils.isNotEmpty(cancelOrderGoodsList)){
orderGoodsDao.batchCancelOrderGoodsWeight(cancelOrderGoodsList);
}
}
private void batchUpdateDriverAndTruckStatusCancel(List<OrderChild> list) {
if(CollectionUtils.isEmpty(list)){
return;
}
List<BatchUpdateDriverAndTruckParam> paramList = new ArrayList<>();
BatchUpdateDriverAndTruckParam param;
for (OrderChild child : list) {
param = new BatchUpdateDriverAndTruckParam();
param.setTruckId(child.getTruckId());
param.setDriverUserNo(child.getDriverUserNo());
param.setDriverOrderStatus(DriverInfoEnum.DriverStatus.NO.getCode());
param.setTruckOrderStatus(DriverTruckEnum.TruckOrderStatus.EMPTY.getCode());
paramList.add(param);
}
driverService.batchUpdateDriverAndTruckStatusCancel(paramList);
} }
} }
...@@ -3,6 +3,7 @@ package com.clx.performance.sqlProvider; ...@@ -3,6 +3,7 @@ package com.clx.performance.sqlProvider;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.enums.OrderChildEnum; import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.PageOrderChildOfDriverParam; import com.clx.performance.param.app.PageOrderChildOfDriverParam;
import com.clx.performance.param.app.PageOrderChildOfDriverSearchParam; import com.clx.performance.param.app.PageOrderChildOfDriverSearchParam;
import com.clx.performance.param.pc.OrderChildCancelRecordParam; import com.clx.performance.param.pc.OrderChildCancelRecordParam;
...@@ -12,6 +13,7 @@ import com.clx.performance.param.pc.PagePoundAuditParam; ...@@ -12,6 +13,7 @@ import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.OrderChildVO; import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO; import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO; import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.utils.DateUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL; import org.apache.ibatis.jdbc.SQL;
...@@ -19,6 +21,7 @@ import org.apache.ibatis.jdbc.SQL; ...@@ -19,6 +21,7 @@ import org.apache.ibatis.jdbc.SQL;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.StringJoiner;
public class OrderChildSqlProvider { public class OrderChildSqlProvider {
...@@ -233,4 +236,35 @@ public class OrderChildSqlProvider { ...@@ -233,4 +236,35 @@ public class OrderChildSqlProvider {
" SELECT count(*) AS monthOrderNumber,sum(freight) total FROM order_child WHERE truck_no = #{truckNo} and AND finish_time >= #{startTime} AND finish_time <= #{endTime}" + " SELECT count(*) AS monthOrderNumber,sum(freight) total FROM order_child WHERE truck_no = #{truckNo} and AND finish_time >= #{startTime} AND finish_time <= #{endTime}" +
") a"; ") a";
} }
public String countValidByOrderGoodsNoList(@Param("orderGoodsList") List<String> orderGoodsList){
return new SQL(){{
SELECT("order_goods_no,count(1) count ");
FROM("order_child ");
StringJoiner sj = new StringJoiner(",","order_goods_no in (",")");
orderGoodsList.forEach(item -> sj.add("'"+item+"'"));
WHERE(sj.toString());
WHERE(" a.status < " + OrderChildEnum.Status.DRIVER_CANCEL.getCode());
GROUP_BY(" order_goods_no");
}}.toString();
}
public String batchUpdateCancel(List<OrderChild> list){
StringJoiner sj = new StringJoiner("; ");
for(OrderChild child : list){
sj.add("update order_child " +
"set " +
"cancel_remark = '" + child.getCancelRemark() + "'," +
"cancel_time = '" + DateUtils.formatDateTime(child.getCancelTime()).get() + "'," +
"finish_time = '" + DateUtils.formatDateTime(child.getFinishTime()).get() + "'," +
"status = " + child.getStatus() + " " +
"where id = "+child.getId()
);
}
return sj.toString();
}
} }
...@@ -3,6 +3,7 @@ package com.clx.performance.sqlProvider; ...@@ -3,6 +3,7 @@ package com.clx.performance.sqlProvider;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsStopEnum; import com.clx.performance.enums.OrderGoodsStopEnum;
import com.clx.performance.enums.PendingOrderWayStatusEnum; import com.clx.performance.enums.PendingOrderWayStatusEnum;
...@@ -379,4 +380,31 @@ public class OrderGoodsSqlProvider { ...@@ -379,4 +380,31 @@ public class OrderGoodsSqlProvider {
} }
public String batchUpdateOrderGoodsPaying(@Param("updateOrderGoods") List<OrderGoods> updateOrderGoods){
StringJoiner sj = new StringJoiner("; ");
for(OrderGoods dto : updateOrderGoods){
sj.add("update order_goods " +
"set " +
"order_goods_status = " +dto.getOrderGoodsStatus()+" "+
"where order_goods_no = '"+dto.getOrderGoodsNo()+"' " +
"and order_goods_status = " + OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()
);
}
return sj.toString();
}
public String batchCancelOrderGoodsWeight(@Param("cancelOrderGoodsList") List<OrderGoodsCancelWeightDTO> list){
StringJoiner sj = new StringJoiner("; ");
for(OrderGoodsCancelWeightDTO dto : list){
sj.add("update order_goods " +
"set " +
"residue_transport_weight = residue_transport_weight + " + dto.getWeight() + "," +
"already_transport_weight = already_transport_weight - " + dto.getWeight() + " " +
"where order_goods_no = '"+dto.getOrderGoodsNo()+"'"
);
}
return sj.toString();
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论