提交 d77f15e4 authored 作者: huyufan's avatar huyufan

处理部分平台承接

上级 bb937806
......@@ -12,6 +12,9 @@ import java.util.List;
@Setter
public class OrderGoodsChildParams {
@ApiModelProperty("用车方式 1:平台车辆配货 2:自有车辆配货")
private String vehicleUsage;
@MoneyInConvert
@ApiModelProperty("挂单运费")
......
......@@ -14,9 +14,6 @@ public class OrderGoodsParams {
@NotBlank(message = "订单编号不能为空")
private String orderNo;
@ApiModelProperty("用车方式 1:平台车辆配货 2:自有车辆配货")
private String vehicleUsage;
@Converted(isDynamic = true)
private List<OrderGoodsChildParams> orderGoodsChildParams;
}
......@@ -40,4 +40,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam, List<String> orderGoodsNoList);
void updateOrderGoodsStatusByOrderGoodsNo(String orderGoodsNo, Integer code);
void saveBatchEntity(List<OrderGoods> orderGoodsList);
}
......@@ -92,5 +92,10 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
baseMapper.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, code);
}
@Override
public void saveBatchEntity(List<OrderGoods> orderGoodsList) {
baseMapper.saveBatchEntity(orderGoodsList);
}
}
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.sqlProvider.OrderGoodsSqlProvider;
import com.clx.performance.sqlProvider.OrderGoodsTruckBindSqlProvider;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import org.apache.ibatis.annotations.Param;
......@@ -50,4 +51,8 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
" order_goods_status = #{code} " +
" where order_goods_no = #{orderGoodsNo}")
void updateOrderGoodsStatusByOrderGoodsNo(@Param("orderGoodsNo") String orderGoodsNo, @Param("code") Integer code);
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "saveBatchEntity")
void saveBatchEntity(List<OrderGoods> orderGoodsList);
}
......@@ -5,6 +5,8 @@ import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.order.vo.feign.FeignPageOrderVO;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import org.apache.commons.lang3.StringUtils;
......@@ -136,4 +138,34 @@ public class OrderGoodsSqlProvider {
return sqlList.toString();
}
public String saveBatchEntity( List<OrderGoods> orderGoodsList) {
StringBuffer sqlList = new StringBuffer();
sqlList.append("INSERT INTO order_goods(extract_weight,residue_transport_weight,already_transport_weight,loss_price,truck_demand,extract_way,\n" +
"need_truck_num,pending_order_way,pending_order_time,pending_order_freight,last_arrive_send_time,senior_logistics_manager_id,\n" +
"senior_logistics_manager_name,order_no,order_goods_no,order_goods_status,send_address_id,send_address_shorter,send_longitude,\n" +
"send_latitude,receive_latitude,receive_longitude,receive_address_id,receive_address_shorter,goods_name,goods_id,create_time,modified_time,\n" +
"user_name,user_no VALUES ");
for (int i = 0; i < orderGoodsList.size(); i++) {
OrderGoods o = orderGoodsList.get(i);
sqlList.append(" ('").append(o.getExtractWeight()).append("','").append(o.getResidueTransportWeight()).append("','").append(o.getAlreadyTransportWeight()).append("','")
.append(o.getLossPrice()).append("','").append(o.getTruckDemand()).append("','").append(o.getExtractWay()).append("','")
.append(o.getNeedTruckNum()).append("','").append(o.getPendingOrderWay()).append("','").append(o.getPendingOrderTime()).append("','")
.append(o.getPendingOrderFreight()).append("','").append(o.getLastArriveSendTime()).append("','").append(o.getSeniorLogisticsManagerId()).append("','")
.append(o.getSeniorLogisticsManagerName()).append("','").append(o.getOrderNo()).append("','").append(o.getOrderGoodsNo()).append("','")
.append(o.getOrderGoodsStatus()).append("','").append(o.getSendAddressId()).append("','").append(o.getSendAddressShorter()).append("','")
.append(o.getSendLongitude()).append("','").append(o.getReceiveLatitude()).append("','").append(o.getReceiveLongitude()).append("','")
.append(o.getReceiveAddressId()).append("','").append(o.getReceiveAddressShorter()).append("','").append(o.getGoodsName()).append("','")
.append(o.getGoodsId()).append("','").append(o.getCreateTime()).append("','").append(o.getModifiedTime()).append("','")
.append("')");
if (i < orderGoodsList.size() - 1) {
sqlList.append(",");
}
}
return sqlList.toString();
}
}
......@@ -2,12 +2,14 @@ package com.clx.performance.strategy.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.order.params.OrderGoodsChildParams;
import com.clx.order.params.OrderGoodsParams;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.component.GoodsOrderStrategyContext;
import com.clx.performance.component.OrderGoodsIdGenerate;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.*;
import com.clx.performance.mapper.OrderGoodsMapper;
......@@ -30,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
......@@ -53,7 +56,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
OrderGoodsService orderGoodsService;
@Autowired
OrderGoodsMapper orderGoodsMapper;
OrderGoodsDao orderGoodsDao;
@Autowired
private GoodsOrderStrategyContext goodsOrderStrategyContext;
......@@ -78,6 +81,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size());
Map<String, LocalDateTime> mqMap = new HashMap<>();
List<OrderGoods> orderGoodsList = new LinkedList<>();
for (OrderGoodsChildParams child : childParamsList) {
if (child.getPendingOrderWay().equals(2)) {
if (child.getNeedTruckNum() == null) {
......@@ -145,10 +149,14 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
}
mqMap.put(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId, postedTime);
beginOrderGoodsId = beginOrderGoodsId + 1;
orderGoodsMapper.insert(orderGoods);
orderGoodsList.add(orderGoods);
}
orderFeign.updateOrderInfoResidueWeight(orderInfo.getId(), 1, null, residueWeight.subtract(childSum));
orderGoodsDao.saveBatchEntity(orderGoodsList);
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("1");
param.setResidueWeight(residueWeight.subtract(childSum));
orderFeign.updateOrderInfoResidueWeight(param);
sendMq(mqMap, now);
return sendLazyTime;
......
......@@ -2,12 +2,14 @@ package com.clx.performance.strategy.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.order.params.OrderGoodsChildParams;
import com.clx.order.params.OrderGoodsParams;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.component.GoodsOrderStrategyContext;
import com.clx.performance.component.OrderGoodsIdGenerate;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTypeEnum;
......@@ -33,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
......@@ -54,7 +57,7 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
OrderGoodsService orderGoodsService;
@Autowired
OrderGoodsMapper orderGoodsMapper;
OrderGoodsDao orderGoodsDao;
@Autowired
private GoodsOrderStrategyContext goodsOrderStrategyContext;
......@@ -85,6 +88,8 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
Map<String, LocalDateTime> mqMap = new HashMap<>();
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size());
List<OrderGoods> orderGoodsList = new LinkedList<>();
for (OrderGoodsChildParams child : childParamsList) {
OrderGoods orderGoods = new OrderGoods();
......@@ -150,10 +155,15 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
beginOrderGoodsId = beginOrderGoodsId + 1;
orderGoodsMapper.insert(orderGoods);
orderGoodsList.add(orderGoods);
}
orderGoodsDao.saveBatchEntity(orderGoodsList);
orderFeign.updateOrderInfoResidueWeight(orderInfo.getId(), 1, null, residueWeight.subtract(childSum));
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("1");
param.setResidueWeight(residueWeight.subtract(childSum));
orderFeign.updateOrderInfoResidueWeight(param);
sendMq(mqMap, now);
return sendLazyTime;
}
......
......@@ -2,12 +2,14 @@ package com.clx.performance.strategy.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.order.params.OrderGoodsChildParams;
import com.clx.order.params.OrderGoodsParams;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.component.GoodsOrderStrategyContext;
import com.clx.performance.component.OrderGoodsIdGenerate;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTypeEnum;
......@@ -34,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
......@@ -55,7 +58,7 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
OrderGoodsService orderGoodsService;
@Autowired
OrderGoodsMapper orderGoodsMapper;
OrderGoodsDao orderGoodsDao;
@Autowired
private OrderFeign orderFeign;
......@@ -75,13 +78,20 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
LocalDateTime sendLazyTime = null;
List<OrderGoodsChildParams> childParamsList = orderGoodsParams.getOrderGoodsChildParams();
BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce(
BigDecimal platSum = childParamsList.stream().filter(i -> "1".equals(i.getVehicleUsage())).map(OrderGoodsChildParams::getExtractWeight).reduce(
BigDecimal.ZERO, BigDecimal::add);
BigDecimal residueWeight = new BigDecimal(orderInfo.getResidueWeight());
if (residueWeight.compareTo(childSum) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总吨数已超订单总吨数");
BigDecimal ownSum = childParamsList.stream().filter(i -> !"1".equals(i.getVehicleUsage())).map(OrderGoodsChildParams::getExtractWeight).reduce(
BigDecimal.ZERO, BigDecimal::add);
BigDecimal platformCarryWeight = new BigDecimal(orderInfo.getPlatformCarryWeight());
if (platformCarryWeight.compareTo(platSum) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前平台承运货单总吨数已超平台承运订单总吨数");
}
BigDecimal ownCarryWeight = new BigDecimal(orderInfo.getOwnCarryWeight());
if (ownCarryWeight.compareTo(ownSum) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前自有承运货单总吨数已超自有承运订单总吨数");
}
Map<String, LocalDateTime> mqMap = new HashMap<>();
List<OrderGoods> orderGoodsList = new LinkedList<>();
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size());
for (OrderGoodsChildParams child : childParamsList) {
......@@ -155,17 +165,34 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
mqMap.put(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId, postedTime);
beginOrderGoodsId = beginOrderGoodsId + 1;
orderGoodsMapper.insert(orderGoods);
orderGoodsList.add(orderGoods);
}
//选平台车辆拉运扣除平台承接吨数
if (StringUtils.equals(orderGoodsParams.getVehicleUsage(), "1")) {
orderFeign.updateOrderInfoResidueWeight(orderInfo.getId(), 2, new BigDecimal(orderInfo.getPlatformResidueCarryWeight()).subtract(childSum), residueWeight.subtract(childSum));
} else {
//选自有车辆拉运扣除平台承接吨数
orderFeign.updateOrderInfoResidueWeight(orderInfo.getId(), 3, new BigDecimal(orderInfo.getOwnResidueCarryWeight()).subtract(childSum), residueWeight.subtract(childSum));
orderGoodsDao.saveBatchEntity(orderGoodsList);
BigDecimal residueWeight = new BigDecimal(orderInfo.getResidueWeight());
if (platSum != null && ownSum != null) {
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("4");
param.setResidueWeight(residueWeight.subtract(platSum).subtract(ownSum));
param.setOwnWeight(ownSum);
param.setPlatWeight(platSum);
orderFeign.updateOrderInfoResidueWeight(param);
} else if (platSum != null && ownSum == null) {
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("2");
param.setResidueWeight(residueWeight.subtract(platSum));
param.setPlatWeight(platSum);
orderFeign.updateOrderInfoResidueWeight(param);
} else if (platSum != null && ownSum == null) {
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("3");
param.setResidueWeight(residueWeight.subtract(ownSum));
param.setOwnWeight(ownSum);
orderFeign.updateOrderInfoResidueWeight(param);
}
sendMq(mqMap, now);
return sendLazyTime;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论