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

Merge remote-tracking branch 'origin/v20.8_add_sub_weight_20240805' into dev

# Conflicts: # performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java # performance-web/src/main/java/com/clx/performance/dao/impl/OrderGoodsDaoImpl.java # performance-web/src/main/java/com/clx/performance/service/OrderChildService.java # performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
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;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.pc.child.UpdateCarrierBatchCancelVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result;
......@@ -131,9 +132,8 @@ public class CarrierOrderChildController {
@ApiOperation(value = "批量取消运单", notes = "<br>By:刘海泉")
@PostMapping("/updateCarrierBatchCancel")
public Result<List<String>> updateCarrierBatchCancel(@RequestBody @Validated OrderChildCarrierBatchCancelParam param) {
List<String> cancelFailList = orderChildService.updateCarrierBatchCancel(param);
return Result.ok(cancelFailList);
public Result<UpdateCarrierBatchCancelVO> updateCarrierBatchCancel(@RequestBody @Validated OrderChildCarrierBatchCancelParam param) {
return Result.ok(orderChildService.updateCarrierBatchCancel(param));
}
}
......@@ -3,6 +3,7 @@ package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsNotCancelChildDTO;
import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild;
......@@ -210,4 +211,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> listCompleteByOrderNos(List<String> strings);
List<OrderChild> listChidNosByStatus(List<Integer> status);
List<OrderGoodsNotCancelChildDTO> countValidByOrderGoodsNoList(List<String> orderGoodsList);
void batchUpdateCancel(List<OrderChild> canCancelOrderChildList);
}
......@@ -2,6 +2,7 @@ package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
......@@ -111,4 +112,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
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;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsNotCancelChildDTO;
import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.mapper.OrderChildMapper;
......@@ -696,4 +697,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.in(OrderChild :: getStatus, status)
);
}
@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;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
......@@ -312,8 +313,16 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
.ne(OrderGoods::getOrderGoodsStatus,OrderGoodsStatusEnum.Status.CREATED.getCode())
.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;
import com.clx.user.param.feign.BatchUpdateDriverAndTruckParam;
import com.clx.user.vo.feign.DriverInfoFeignVo;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.clx.user.vo.feign.FeignDriverTruckModelVo;
import com.msl.common.base.Optional;
import java.util.List;
public interface DriverService {
......@@ -18,4 +21,7 @@ public interface DriverService {
Optional<FeignDriverTruckModelVo> getDumpType(String truckModel);//通过车型获取自卸非自卸
//批量恢复司机和车辆状态
void batchUpdateDriverAndTruckStatusCancel(List<BatchUpdateDriverAndTruckParam> list);
}
......@@ -2,6 +2,7 @@ package com.clx.performance.extranal.user.impl;
import com.clx.performance.extranal.user.DriverService;
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.DriverTruckInfoFeignVo;
import com.clx.user.vo.feign.FeignDriverTruckModelVo;
......@@ -13,6 +14,7 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
@Slf4j
......@@ -66,4 +68,10 @@ public class DriverServiceImpl implements DriverService {
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;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsNotCancelChildDTO;
import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.PageOrderChildOfDriverParam;
......@@ -181,4 +182,13 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
" group by order_goods_no " +
"</script>")
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;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
......@@ -108,4 +109,10 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
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;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildLog;
import java.util.List;
......@@ -16,4 +15,5 @@ public interface OrderChildLogService {
void saveBatchOrderChildLog(List<OrderChildLog> logs);
void batchSaveCarrierOrderChildLogs(List<OrderChildLog> logs);
}
......@@ -11,6 +11,7 @@ import com.clx.performance.param.pc.*;
import com.clx.performance.vo.app.*;
import com.clx.performance.vo.app.owner.OwnerOrderChildVO;
import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.pc.child.UpdateCarrierBatchCancelVO;
import com.msl.common.base.PageParam;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
......@@ -107,8 +108,6 @@ public interface OrderChildService {
void cacheOrderChildExpectData(String childNo, OrderChildExpectDTO expect);
List<String> updateCarrierBatchCancel(OrderChildCarrierBatchCancelParam param);
List<HistoryLineTranVolumeChartVO> getHistoryLineTransportVolume(String orderNo);
UpdateCarrierBatchCancelVO updateCarrierBatchCancel(OrderChildCarrierBatchCancelParam param);
}
......@@ -52,4 +52,9 @@ public class OrderChildLogServiceImpl implements OrderChildLogService {
public void saveBatchOrderChildLog(List<OrderChildLog> logs) {
orderChildLogDao.saveBatchList(logs);
}
@Override
public void batchSaveCarrierOrderChildLogs(List<OrderChildLog> logs) {
orderChildLogDao.saveBatchList(logs);
}
}
......@@ -23,6 +23,8 @@ import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
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.payment.PaymentDTO;
import com.clx.performance.dto.payment.WalletResidueCardDTO;
......@@ -63,10 +65,12 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService;
import com.clx.performance.vo.app.*;
import com.clx.performance.vo.app.owner.OwnerOrderChildVO;
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.idcard.IdCardEnum;
import com.clx.user.feign.DocumentFeign;
import com.clx.user.feign.UserClxFeign;
import com.clx.user.param.feign.BatchUpdateDriverAndTruckParam;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.clx.user.vo.pc.auth.AuthVo;
......@@ -3137,8 +3141,52 @@ public class OrderChildServiceImpl implements OrderChildService {
throw new ServiceSystemException(OCR_RECOGNITION_ERROR);
}
}
@Override
public List<String> updateCarrierBatchCancel(OrderChildCarrierBatchCancelParam param) {
public List<HistoryLineTranVolumeChartVO> getHistoryLineTransportVolume(String orderNo) {
//查询近一个月与该订单收发货地线路一致的订单
Optional<List<String>> result = orderService.getMonthSameLineOrderList(orderNo);
if(!result.isPresent()){
log.warn("通过订单号:{} 查找相同线路的订单列列表,返回结果:{}",orderNo,result);
throw new ServiceSystemException(ResultEnum.DATA_ERROR,"获取相同线路的订单列表失败");
}
List<BigDecimal> priceList = orderGoodsAdjustmentPriceService.getNoRepeatAdjustmentPriceRecord(result.get());
List<HistoryLineTranVolumeChartVO> charts = new ArrayList<>();
if(CollectionUtils.isEmpty(priceList)){
return charts;
}
//查询相同路线的订单下的所有运单
List<OrderChild> childs = orderChildDao.listCompleteByOrderNos(result.get());
if(CollectionUtils.isEmpty(childs)){
priceList.forEach(item-> charts.add(HistoryLineTranVolumeChartVO.builder()
.pendingOrderFreight(item).number(0).build()));
return charts;
}
LinkedHashMap<BigDecimal,Integer> priceMap =
priceList.stream().collect(Collectors.toMap(item->item,item->0,
(existing, replacement) -> existing, // 如果有冲突的键,则保留现有的键
LinkedHashMap::new));
//进行相同路线运费拉运单数统计
childs.forEach(item->{
if(priceMap.containsKey(item.getFreightPrice())){
priceMap.put(item.getFreightPrice(),priceMap.get(item.getFreightPrice()) + 1);
}
});
for (Map.Entry<BigDecimal, Integer> entry : priceMap.entrySet()) {
charts.add(HistoryLineTranVolumeChartVO.builder().pendingOrderFreight(entry.getKey()).number(
entry.getValue()).build());
}
return charts;
}
@Transactional(rollbackFor = Exception.class)
@Override
public UpdateCarrierBatchCancelVO updateCarrierBatchCancel(OrderChildCarrierBatchCancelParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
List<OrderChild> orderChildList = orderChildDao.listInField(OrderChild::getChildNo, param.getChildNoList());
List<OrderChild> canCancelOrderChildList = new ArrayList<>(); //可以取消的运单集合
List<OrderChild> notCancelOrderChildList = new ArrayList<>(); //不可以取消的运单集合
......@@ -3151,50 +3199,123 @@ public class OrderChildServiceImpl implements OrderChildService {
notCancelOrderChildList.add(child);
}
}
// 返回吨数
batchUpdateOrderGoodsWeightReturn(canCancelOrderChildList);
/* // 禁止取消 (卸车前取消)
if (orderChild.getStatus() >= OrderChildEnum.Status.UNLOAD.getCode()) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID);
}
// 更新出车状态
batchUpdateDriverAndTruckStatusCancel(canCancelOrderChildList);
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->{
//到达货源地的设置取消原因
if(Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.ARRIVE_SEND.getCode())){
orderChild.setCancelRemark(param.getRemark());
}
orderChild.setCancelTime(LocalDateTime.now());
orderChild.setFinishTime(orderChild.getCancelTime());
orderChild.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
});
orderChildDao.batchUpdateCancel(canCancelOrderChildList);
List<OrderChildLog> logs = new ArrayList<>();
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);
}
orderChild.setCancelRemark(param.getRemark());
orderChild.setCancelTime(LocalDateTime.now());
orderChild.setFinishTime(orderChild.getCancelTime());
orderChild.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
// 批量保存日志
orderChildLogService.batchSaveCarrierOrderChildLogs(logs);
// 返回吨数
updateOrderGoodsAmountReturn(orderChild, orderGoods);
// 承运取消后置逻辑
canCancelOrderChildList.forEach(orderChild-> orderChildPostService.orderChildCancelByCarrier(orderChild,
UserTypeEnum.CARRIER.getCode(), loginUserInfo.getUserNo(), loginUserInfo.getUserName()));
// 取消定向
updateOrderGoodsDirectCancel(orderGoods,orderGoodsTruckBind);
orderChildDao.updateCancel(orderChild);
UpdateCarrierBatchCancelVO result = new UpdateCarrierBatchCancelVO();
result.setFailChildNoList(notCancelOrderChildList.stream().map(OrderChild :: getChildNo).collect(Collectors.toList()));
result.setSuccessCount(canCancelOrderChildList.size());
return result;
}
// 更新出车状态
updateDriverOrderStatusCancel(orderChild.getDriverUserNo(), orderChild.getTruckId());
// 日志
orderChildLogService.saveCarrierOrderChildLog(childNo, OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode(),
OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg(), loginUserInfo.getUserNo(),
loginUserInfo.getUserName());
private void batchUpdateOrderGoodsWeightReturn(List<OrderChild> canCancelOrderChildList) {
//按照货单分组,每个货单下取消的运单个数map
Map<String, Long> orderGoodsChildsMap = new HashMap<>();
// 承运取消后置逻辑
orderChildPostService.orderChildCancelByCarrier(orderChild, UserTypeEnum.CARRIER.getCode(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());*/
//货单归还吨数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);
return notCancelOrderChildList.stream().map(OrderChild :: getChildNo).collect(Collectors.toList());
//货单下全部运单都已取消。则重置货单状态为挂单中
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;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.PageOrderChildOfDriverSearchParam;
import com.clx.performance.param.pc.OrderChildCancelRecordParam;
......@@ -12,6 +13,7 @@ import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.utils.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
......@@ -19,6 +21,7 @@ import org.apache.ibatis.jdbc.SQL;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
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}" +
") 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;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsStopEnum;
import com.clx.performance.enums.PendingOrderWayStatusEnum;
......@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论