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

修改货单分发相关逻辑修改

上级 a173d088
......@@ -16,6 +16,10 @@ public enum OrderGoodsPendingOrderWayStatusEnum {
OPEN(1, "公开派单"),
EXCLUSIVE(2, "定向派单"),
FLEET_OPEN(3, "车队公开派单"),
FLEET_EXCLUSIVE(4, "车队定向派单"),
;
private final Integer code;
......
......@@ -15,7 +15,11 @@ public enum PendingOrderWayStatusEnum {
GK(1, "GK"),
DX(2, "DX")
DX(2, "DX"),
FLEET_GK(3, "GK"),
FLEET_DX(4, "DX")
;
private final Integer code;
......
package com.clx.performance.feign;
import com.clx.performance.param.app.collect.CollectTruckParam;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.param.pc.OrderCancelFeignParam;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.OrderChildReportParam;
import com.clx.performance.param.pc.owner.FrozenAccountParam;
import com.clx.performance.param.pc.owner.ThawAccountParam;
......@@ -17,6 +17,7 @@ import com.clx.performance.vo.pc.OwnerLoanAccountVO;
import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractOwnerRuleVO;
import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -67,6 +68,11 @@ public interface PerformanceFeign {
@RequestParam("userNo") @NotNull(message = "用户编号不可为空") Long userNo);
@GetMapping(value = {"clx-performance/feign/orderGoodsDriverTruck/getFleetPublicTruckList"})
Result<Set<String>> getFleetPublicTruckList(@RequestParam("orderGoodsNo") @NotBlank(message = "货单编号不可为空") String orderGoodsNo);
@PostMapping(value = {"clx-performance/feign/order/orderCancel"})
Result<Object> orderCancel(@RequestBody OrderCancelFeignParam param);
......@@ -122,4 +128,8 @@ public interface PerformanceFeign {
@RequestParam(value = "prepaidArrearsOrder") BigDecimal prepaidArrearsOrder,
@RequestParam(value = "marginArrearsOrder") BigDecimal marginArrearsOrder);
@PostMapping(value = {"clx-performance/feign/orderGoods/saveBindTruck"})
Result<Object> saveBindTruck(@RequestBody @Validated DistributionTruckParam param);
}
package com.clx.performance.param.feign;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* @ClassName DistributionTruckDTO
* @Description
* @Author kavin
* @Date 2024/5/30 18:07
* @Version 1.0
*/
@Getter
@Setter
public class DistributionTruckParam {
@NotBlank(message = "订单编号不能为空")
@ApiModelProperty("订单编号")
private String orderNo;
@NotBlank(message = "货单编号不能为空")
@ApiModelProperty("货单编号")
private String orderGoodsNo;
@NotEmpty(message = "车辆列表不能为空")
@ApiModelProperty("车辆列表")
private List<String> truckNoList;
}
......@@ -34,7 +34,7 @@ public class OrderGoodsChildParams {
private Integer needTruckNum;
@NotNull(message = "提取吨数不能为空")
@ApiModelProperty(value = "挂单方式 1公开派单 2定向派单" , required = true)
@ApiModelProperty(value = "挂单方式 1公开派单 2定向派单 3车队公开派单 4车队定向派单" , required = true)
private Integer pendingOrderWay;
@NotBlank(message = "最晚接单时间不能为空")
......
package com.clx.performance.param.pc;
import com.msl.common.convertor.type.MoneyInConvert;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -25,7 +24,7 @@ public class OrderGoodsEditParams {
@ApiModelProperty("剩余拉运吨数")
private BigDecimal residueTransportWeight;
@ApiModelProperty("挂单方式 1公开派单 2定向派单")
@ApiModelProperty("挂单方式 1公开派单 2定向派单 3车队公开派单 4车队定向派单")
private Integer pendingOrderWay;
@ApiModelProperty("'最晚接单时间'")
......
......@@ -7,7 +7,6 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
......@@ -73,7 +72,7 @@ public class OrderGoodsVO {
@ApiModelProperty("货物名称")
private String goodsName;
@ApiModelProperty("挂单方式 1公开派单 2定向派单")
@ApiModelProperty("挂单方式 1公开派单 2定向派单 3车队公开派单 4车队定向派单")
private Integer pendingOrderWay;
@ApiModelProperty("定向运单失效时间")
......@@ -144,4 +143,7 @@ public class OrderGoodsVO {
@ApiModelProperty("可装车时间段结束")
private String loadEndTime;
@ApiModelProperty("已派单数")
private Integer dispatchedOrders;
}
\ No newline at end of file
package com.clx.performance.component;
import com.alibaba.fastjson.JSON;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dao.OrderGoodsDriverTruckDao;
import com.clx.performance.dao.OrderGoodsFleetOpenTruckDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.model.OrderGoodsDriverTruck;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.msl.common.base.Optional;
import lombok.AllArgsConstructor;
......@@ -14,10 +17,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
......@@ -32,6 +32,8 @@ public class GoodsOrderTruckRecordComponent {
private final OrderGoodsTruckBindDao orderGoodsTruckBindDao;
private final OrderGoodsFleetOpenTruckDao orderGoodsFleetOpenTruckDao;
public void saveTruckRecord(String orderGoodsNo, List<String> truckList) {
redisTemplate.opsForSet().add(RedisConstants.ORDER_GOODS_TRUCK_RECORD + orderGoodsNo, truckList.toArray(new String[]{}));
......@@ -116,4 +118,30 @@ public class GoodsOrderTruckRecordComponent {
}
public Set<String> getFleetPublicTruckList(String orderGoodsNo) {
Set<String> orderGoodsList = redisTemplate.opsForSet().members(RedisConstants.ORDER_GOODS_RECORD);
if (orderGoodsList == null || orderGoodsList.isEmpty()) {
return null;
}
//当前系统所有的定向车辆
Set<String> union = redisTemplate.opsForSet().union(orderGoodsList);
Set<String> set = CollectionUtils.isEmpty(union)?new HashSet<>():union;
Optional<OrderGoodsFleetOpenTruck> optional = orderGoodsFleetOpenTruckDao.getOneByField(
OrderGoodsFleetOpenTruck::getOrderGoodsNo, orderGoodsNo);
//车队运营系统未派发车辆
if(!optional.isPresent()){
log.error("货单号:{},未在车队运营系统进行派发",orderGoodsNo);
return new HashSet<>();
}
List<String> fleetTruckNoList = JSON.parseArray(optional.get().getTruckListJson(),String.class);
//车队派发的车辆去除掉定向车辆
for (Iterator<String> it = fleetTruckNoList.iterator(); it.hasNext();) {
if(set.contains(it.next())){
it.remove();
}
}
return new HashSet<>(fleetTruckNoList);
}
}
......@@ -168,7 +168,8 @@ public class OrderCancelComponent implements InitializingBean {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
}
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode()) ||
orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
......@@ -196,7 +197,9 @@ public class OrderCancelComponent implements InitializingBean {
orderStatusCode = OrderEnum.Status.COMPLETED.getCode();
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode()) ||
orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())
) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
......@@ -222,7 +225,9 @@ public class OrderCancelComponent implements InitializingBean {
if (CollectionUtil.isNotEmpty(orderGoodsList)) {
List<Integer> ids = new LinkedList<>();
for (OrderGoods orderGoods : orderGoodsList) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode()) ||
orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())
) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
......
package com.clx.performance.controller.feign;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.OrderChildReportParam;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.vo.feign.FreightEstimateVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -46,4 +48,12 @@ public class OrderGoodsFeignController {
return Result.ok(orderGoodsService.listFreightEstimate(param));
}
@ApiOperation(value = "定向单绑定车辆", notes = "<br>By:刘海泉")
@PostMapping({"/saveBindTruck"})
Result<Object> saveBindTruck(@RequestBody @Validated DistributionTruckParam param) {
orderGoodsService.saveBindTruck(param);
return Result.ok();
}
}
......@@ -4,6 +4,7 @@ import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.service.OrderGoodsTruckBindService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -44,4 +45,12 @@ public class TruckFeignController {
return Result.ok(goodsOrderTruckRecordComponent.getPrivateTruckList(orderGoodsNo,userNo));
}
@ApiOperation(value = "获取车队运营派发的公开单车车辆列表", notes = "<br>By:刘海泉")
@GetMapping({"/getFleetPublicTruckList"})
Result<Set<String>> getFleetPublicTruckList(@RequestParam("orderGoodsNo") @NotBlank(message = "货单编号不可为空") String orderGoodsNo){
return Result.ok(goodsOrderTruckRecordComponent.getFleetPublicTruckList(orderGoodsNo));
}
}
package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.pc.OrderGoodsEditParams;
import com.clx.performance.param.pc.PageOrderGoodsListParam;
......@@ -41,7 +42,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void updateOrderGoodsWeightResidueAndAlreadyAndStatus(Integer id, BigDecimal alreadyTransportWeight,BigDecimal residueTransportWeight,Integer orderGoodsStatus);
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam);
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam,List<String> orderGoodsNoList);
IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam, List<String> orderGoodsNoList);
......@@ -97,4 +98,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
IPage<OrderGoodsAPPVO> indexOrderGoodsListSearch(AppGoodsOrderSearchParam param);
void batchUpdateResidueWeight(List<Integer> list, BigDecimal residueWeight);
List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList();
}
package com.clx.performance.dao;
import com.clx.performance.mapper.OrderGoodsFleetOpenTruckMapper;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.msl.common.dao.BaseDao;
/**
* @Author: huyufan
* @Description: 货单定向绑定车辆表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
public interface OrderGoodsFleetOpenTruckDao extends BaseDao<OrderGoodsFleetOpenTruckMapper, OrderGoodsFleetOpenTruck, Integer> {
}
package com.clx.performance.dao;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.mapper.OrderGoodsTruckBindMapper;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.msl.common.base.Optional;
......@@ -61,4 +62,6 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void updateTruckBindExpire(List<Integer> ids);
List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList);
}
......@@ -7,6 +7,7 @@ import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.pc.GoodsOrderMapParam;
......@@ -85,9 +86,9 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
}
@Override
public IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam param) {
public IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam param,List<String> orderGoodsNoList) {
Page<OrderGoodsAPPVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.openOrderPageGoodsList(page);
return baseMapper.openOrderPageGoodsList(page,orderGoodsNoList);
}
@Override
......@@ -269,4 +270,9 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
.set(OrderGoods::getResidueTransportWeight, residueWeight)
);
}
@Override
public List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList() {
return baseMapper.queryProcessFleetOpenTruckList();
}
}
package com.clx.performance.dao.impl;
import com.clx.performance.dao.OrderGoodsFleetOpenTruckDao;
import com.clx.performance.mapper.OrderGoodsFleetOpenTruckMapper;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @Author: huyufan
* @Description: 货单定向绑定车辆表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Repository
public class OrderGoodsFleetOpenTruckDaoImpl extends BaseDaoImpl<OrderGoodsFleetOpenTruckMapper, OrderGoodsFleetOpenTruck, Integer> implements OrderGoodsFleetOpenTruckDao {
}
......@@ -3,6 +3,7 @@ package com.clx.performance.dao.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.mapper.OrderGoodsTruckBindMapper;
import com.clx.performance.model.OrderGoodsTruckBind;
......@@ -208,4 +209,9 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
.set(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.EXPIRE.getCode())
);
}
@Override
public List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList) {
return baseMapper.queryOrderGoodsTruckNum(fleetNoList);
}
}
package com.clx.performance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName OrderGoodsBindTruckNumDTO
* @Description
* @Author kavin
* @Date 2024/6/3 11:11
* @Version 1.0
*/
@Getter
@Setter
public class OrderGoodsBindTruckNumDTO {
@ApiModelProperty("货单编号")
private String orderGoodsNo;
@ApiModelProperty("车辆数")
private Integer truckNum;
}
......@@ -73,7 +73,8 @@ public class OrderGoodsDtsListener {
orderGoodsLogService.saveLog(after.getOrderGoodsNo(), 0L, "系统", OrderGoodsLogsEnum.Type.SYSTEM_RELEASE.getName(),
String.format("系统自动释放:%s吨", after.getResidueTransportWeight()));
//释放定向单(非自由车辆)对应的定向车辆
if(Objects.equals(after.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())
if( ( Objects.equals(after.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())
|| Objects.equals(after.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.FLEET_EXCLUSIVE.getCode()) )
&& !Objects.equals(after.getVehicleUsage(), VehicleUsageEnum.Status.OWN.getCode())){
goodsOrderTruckRecordComponent.releaseOrderGoodsDriverAndTruck(after.getOrderGoodsNo());
}
......
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: huyufan
* @Description: 货单定向绑定车辆
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Mapper
public interface OrderGoodsFleetOpenTruckMapper extends BaseMapper<OrderGoodsFleetOpenTruck> {
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.clx.performance.mapper;
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.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.pc.OrderGoodsEditParams;
import com.clx.performance.param.pc.PageOrderGoodsListParam;
......@@ -49,7 +50,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "openOrderPageGoodsList")
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(Page<OrderGoodsAPPVO> page);
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(Page<OrderGoodsAPPVO> page, List<String> orderGoodsNoList);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "exclusiveOrderPageGoodsList")
IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(Page<OrderGoodsAPPVO> page, List<String> param);
......@@ -96,4 +97,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "indexOrderGoodsListSearch")
IPage<OrderGoodsAPPVO> indexOrderGoodsListSearch(@Param("page")Page<OrderGoodsAPPVO> page, @Param("param")AppGoodsOrderSearchParam param);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "queryProcessFleetOpenTruckList")
List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList();
}
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.clx.performance.sqlProvider.OrderGoodsTruckBindSqlProvider;
import org.apache.ibatis.annotations.Mapper;
......@@ -32,4 +33,9 @@ public interface OrderGoodsTruckBindMapper extends BaseMapper<OrderGoodsTruckBin
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "findUnreleasedTruck")
List<String> findUnreleasedTruck();
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "queryOrderGoodsTruckNum")
List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList);
}
\ No newline at end of file
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Optional;
/**
* 货单定向绑定车辆表
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("order_goods_fleet_open_truck")
public class OrderGoodsFleetOpenTruck implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("truck_no")
@ApiModelProperty("车辆列表")
private String truckListJson;
@TableField("order_no")
@ApiModelProperty("订单编号")
private String orderNo;
@TableField("order_goods_no")
@ApiModelProperty("货单编号")
private String orderGoodsNo;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
@Getter
@AllArgsConstructor
public enum Status {
NORMAL(1, "正常"),
CANCEL(2, "取消"),
ORDER(3, "已接单"),
;
private final int code;
private final String msg;
public static Optional<Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
......@@ -5,6 +5,7 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.FreightEstimateVO;
......@@ -99,4 +100,6 @@ public interface OrderGoodsService {
IPage<OrderGoodsAPPVO> indexOrderGoodsListSearch(AppGoodsOrderSearchParam param);
void batchUpdateResidueWeight(List<OrderGoods> list);
void saveBindTruck(DistributionTruckParam param);
}
......@@ -17,7 +17,6 @@ import com.clx.performance.component.OwnerAccountComponent;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.OrderCancelDTO;
import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.DriverService;
......@@ -26,7 +25,6 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.OrderChildCancelRecordParam;
import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.service.*;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.vo.app.OrderChildVO;
......@@ -107,7 +105,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
//说明此刻未产生运单
List<Integer> ids = new LinkedList<>();
for (OrderGoods orderGoods : orderGoodsList) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())
|| orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
......@@ -168,7 +167,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
}
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())
|| orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
......
package com.clx.performance.service.impl;
import cn.hutool.json.JSONUtil;
import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.enums.OrderEnum;
......@@ -37,7 +36,6 @@ import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.service.*;
import com.clx.performance.service.breakcontract.BreakContractDriverRecordService;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.service.impl.trace.TruckTraceServiceImpl;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
......@@ -64,8 +62,8 @@ import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
......@@ -1257,8 +1255,9 @@ public class OrderChildServiceImpl implements OrderChildService {
// 定向
OrderGoodsTruckBind orderGoodsTruckBind = null;
if (Objects.equals(orderGoods.getPendingOrderWay(),
OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())) {
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);
}
......@@ -1315,8 +1314,8 @@ public class OrderChildServiceImpl implements OrderChildService {
// 定向
OrderGoodsTruckBind orderGoodsTruckBind = null;
if (Objects.equals(orderGoods.getPendingOrderWay(),
OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())) {
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);
}
......
......@@ -2,15 +2,16 @@ package com.clx.performance.sqlProvider;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.pc.OrderGoodsEditParams;
import com.clx.performance.param.pc.PageOrderGoodsListParam;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsStopEnum;
import com.clx.performance.enums.PendingOrderWayStatusEnum;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.pc.OrderGoodsEditParams;
import com.clx.performance.param.pc.PageOrderGoodsListParam;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
......@@ -18,6 +19,7 @@ import org.apache.ibatis.jdbc.SQL;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
public class OrderGoodsSqlProvider {
......@@ -83,7 +85,7 @@ public class OrderGoodsSqlProvider {
}
public String openOrderPageGoodsList(@Param("page") Page<OrderGoodsAPPVO> page) {
public String openOrderPageGoodsList(@Param("page") Page<OrderGoodsAPPVO> page, @Param("param") List<String> orderGoodsNoList) {
String sql = new SQL() {{
SELECT("a.id, a.order_no," +
" a.order_goods_no, a.order_goods_status, a.extract_weight, " +
......@@ -99,9 +101,16 @@ public class OrderGoodsSqlProvider {
"a.user_no,a.user_name");
FROM("order_goods a");
WHERE("a.stop_flag = "+ OrderGoodsStopEnum.Status.NO.getCode());
WHERE("a.pending_order_way = " + PendingOrderWayStatusEnum.Status.GK.getCode());
if(CollectionUtils.isEmpty(orderGoodsNoList)){
WHERE(" a.pending_order_way = " + PendingOrderWayStatusEnum.Status.GK.getCode());
}else{
StringJoiner sj = new StringJoiner(",","a.order_goods_no in (",")");
orderGoodsNoList.forEach(item -> sj.add("'"+item+"'"));
WHERE(" (a.pending_order_way = " + PendingOrderWayStatusEnum.Status.GK.getCode() + " OR (a.pending_order_way = " +
PendingOrderWayStatusEnum.Status.FLEET_GK.getCode() + "and " + sj + "))");
}
WHERE("a.last_arrive_send_time >= now()");
WHERE("(a.order_goods_status = "+OrderGoodsStatusEnum.Status.PAYING.getCode()+" or a.order_goods_status = "+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")");
WHERE("(a.order_goods_status IN ( "+OrderGoodsStatusEnum.Status.PAYING.getCode()+","+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")");
WHERE("a.residue_transport_weight >=35");
ORDER_BY("a.pending_order_time desc");
}}.toString();
......@@ -109,6 +118,23 @@ public class OrderGoodsSqlProvider {
}
public String queryProcessFleetOpenTruckList() {
String sql = new SQL() {{
SELECT("b.*");
FROM("order_goods a");
LEFT_OUTER_JOIN("order_goods_fleet_open_truck b on a.order_goods_no = b.order_goods_no");
WHERE("a.stop_flag = "+ OrderGoodsStopEnum.Status.NO.getCode());
WHERE(" a.pending_order_way = " + PendingOrderWayStatusEnum.Status.FLEET_GK.getCode());
WHERE("a.last_arrive_send_time >= now()");
WHERE("(a.order_goods_status IN ( "+OrderGoodsStatusEnum.Status.PAYING.getCode()+","+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")");
WHERE("a.residue_transport_weight >=35");
}}.toString();
return sql;
}
public String exclusiveOrderPageGoodsList(@Param("page") Page<OrderGoodsAPPVO> page, @Param("param") List<String> param) {
StringBuffer sqlList = new StringBuffer();
sqlList.append("select a.id, a.order_no," +
......@@ -128,7 +154,8 @@ public class OrderGoodsSqlProvider {
"where a.stop_flag = "+ OrderGoodsStopEnum.Status.NO.getCode()+" and a.last_arrive_send_time >= now() and (a.order_goods_status = "+OrderGoodsStatusEnum.Status.PAYING.getCode()+
" or a.order_goods_status = "+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")" +
"and a.residue_transport_weight > 0" +
" and a.pending_order_way = "+ PendingOrderWayStatusEnum.Status.DX.getCode() +" and a.order_goods_no in (");
" and a.pending_order_way in ( "+ PendingOrderWayStatusEnum.Status.DX.getCode()+","+
PendingOrderWayStatusEnum.Status.FLEET_DX.getCode()+") and a.order_goods_no in (");
if (!param.isEmpty()) {
for (int i = 0; i < param.size(); i++) {
......
......@@ -5,6 +5,7 @@ import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import org.apache.ibatis.jdbc.SQL;
import java.util.List;
import java.util.StringJoiner;
import java.util.stream.Collectors;
public class OrderGoodsTruckBindSqlProvider {
......@@ -45,4 +46,15 @@ public class OrderGoodsTruckBindSqlProvider {
}}.toString();
}
public String queryOrderGoodsTruckNum(List<String> fleetNoList){
return new SQL(){{
SELECT(" a.order_goods_no,count(*) truckNum ");
FROM("order_goods_truck_bind a");
WHERE("a.order_goods_no IN (" + fleetNoList.stream().map(code -> "'"+code+"'").collect(Collectors.joining(","))+ ")" );
StringJoiner sj = new StringJoiner(",","a.order_goods_no in (",")");
fleetNoList.forEach(item -> sj.add("'"+item+"'"));
WHERE(sj.toString());
GROUP_BY("a.order_goods_no");
}}.toString();
}
}
......@@ -140,7 +140,9 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial
orderGoods.setOrderNo(orderNo);
Integer pendingOrderWay = orderGoods.getPendingOrderWay();
String orderNoPrefix = PendingOrderWayStatusEnum.Status.GK.getCode().equals(pendingOrderWay) ? PendingOrderWayStatusEnum.Status.GK.getName() : PendingOrderWayStatusEnum.Status.DX.getName();
String orderNoPrefix = PendingOrderWayStatusEnum.Status.GK.getCode().equals(pendingOrderWay) ||
PendingOrderWayStatusEnum.Status.FLEET_GK.getCode().equals(pendingOrderWay)
? PendingOrderWayStatusEnum.Status.GK.getName() : PendingOrderWayStatusEnum.Status.DX.getName();
String orderGoodsNo = orderNoPrefix + beginOrderGoodsId;
orderGoods.setOrderGoodsNo(orderGoodsNo);
......
......@@ -143,7 +143,9 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia
orderGoods.setOrderNo(orderNo);
Integer pendingOrderWay = orderGoods.getPendingOrderWay();
String orderNoPrefix = PendingOrderWayStatusEnum.Status.GK.getCode().equals(pendingOrderWay) ? PendingOrderWayStatusEnum.Status.GK.getName() : PendingOrderWayStatusEnum.Status.DX.getName();
String orderNoPrefix = PendingOrderWayStatusEnum.Status.GK.getCode().equals(pendingOrderWay) ||
PendingOrderWayStatusEnum.Status.FLEET_GK.getCode().equals(pendingOrderWay)
? PendingOrderWayStatusEnum.Status.GK.getName() : PendingOrderWayStatusEnum.Status.DX.getName();
String orderGoodsNo = orderNoPrefix + beginOrderGoodsId;
orderGoods.setOrderGoodsNo(orderGoodsNo);
......
......@@ -139,7 +139,9 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In
orderGoods.setOrderNo(orderNo);
Integer pendingOrderWay = orderGoods.getPendingOrderWay();
String orderNoPrefix = PendingOrderWayStatusEnum.Status.GK.getCode().equals(pendingOrderWay) ? PendingOrderWayStatusEnum.Status.GK.getName() : PendingOrderWayStatusEnum.Status.DX.getName();
String orderNoPrefix = PendingOrderWayStatusEnum.Status.GK.getCode().equals(pendingOrderWay) ||
PendingOrderWayStatusEnum.Status.FLEET_GK.getCode().equals(pendingOrderWay)
? PendingOrderWayStatusEnum.Status.GK.getName() : PendingOrderWayStatusEnum.Status.DX.getName();
String orderGoodsNo = orderNoPrefix + beginOrderGoodsId;
orderGoods.setOrderGoodsNo(orderGoodsNo);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论