提交 f5383368 authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/v4.9_create_goods_child_20230918' into…

Merge remote-tracking branch 'origin/v4.9_create_goods_child_20230918' into v4.9_create_goods_child_20230918
...@@ -12,6 +12,9 @@ import java.util.List; ...@@ -12,6 +12,9 @@ import java.util.List;
@Setter @Setter
public class OrderGoodsChildParams { public class OrderGoodsChildParams {
@ApiModelProperty("用车方式 1:平台车辆配货 2:自有车辆配货")
private String vehicleUsage;
@MoneyInConvert @MoneyInConvert
@ApiModelProperty("挂单运费") @ApiModelProperty("挂单运费")
......
...@@ -13,6 +13,7 @@ public class OrderGoodsParams { ...@@ -13,6 +13,7 @@ public class OrderGoodsParams {
@ApiModelProperty("订单编号") @ApiModelProperty("订单编号")
@NotBlank(message = "订单编号不能为空") @NotBlank(message = "订单编号不能为空")
private String orderNo; private String orderNo;
@Converted(isDynamic = true) @Converted(isDynamic = true)
private List<OrderGoodsChildParams> orderGoodsChildParams; private List<OrderGoodsChildParams> orderGoodsChildParams;
} }
...@@ -34,8 +34,9 @@ public enum PerformanceResultEnum implements ResultEnum { ...@@ -34,8 +34,9 @@ public enum PerformanceResultEnum implements ResultEnum {
ORDER_NO_FOUND(1200, "货单不存在"), ORDER_NO_FOUND(1200, "货单不存在"),
ORDER_WEIGHT_LACK(1200, "剩余数量不足"), ORDER_WEIGHT_LACK(1201, "剩余数量不足"),
ORDER_INVALID(1200, "无效的货单"), ORDER_INVALID(1202, "无效的货单"),
ORDER_INVALID1(1203, "当前运单的货源已完成或取消,请查看其他货源"),
ORDER_CHILD_NO_FOUND(1301, "运单不存在"), ORDER_CHILD_NO_FOUND(1301, "运单不存在"),
...@@ -50,14 +51,14 @@ public enum PerformanceResultEnum implements ResultEnum { ...@@ -50,14 +51,14 @@ public enum PerformanceResultEnum implements ResultEnum {
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR(1310, "请选择定向车辆"), ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR(1310, "请选择定向车辆"),
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR1(1311, "请选择非定向车辆"), ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR1(1311, "请选择非定向车辆"),
ORDER_CHILD_DIRECT_REJECT_TRUCK_ERROR(1312, "非定向车辆无法取消"), ORDER_CHILD_DIRECT_REJECT_TRUCK_ERROR(1312, "非定向车辆无法取消"),
ORDER_CHILD_TRUCK_MODEL_ERROR(1312, "请选择合适的车型"), ORDER_CHILD_TRUCK_MODEL_ERROR(1313, "请选择合适的车型"),
ORDER_CHILD_LOAD_WEIGHT_ERROR(1312, "装货净重超过载重的1.5倍"), ORDER_CHILD_LOAD_WEIGHT_ERROR(1314, "装货净重超过载重的1.5倍"),
ORDER_CHILD_UNLOAD_WEIGHT_ERROR(1313, "卸货净重超过载重的1.5倍"), ORDER_CHILD_UNLOAD_WEIGHT_ERROR(1315, "卸货净重超过载重的1.5倍"),
ORDER_CHILD_LOAD_TIME_ERROR(1314, "非装车时间段"), ORDER_CHILD_LOAD_TIME_ERROR(1316, "非装车时间段"),
ORDER_CHILD_UNLOAD_TIME_ERROR(1315, "非卸车时间段"), ORDER_CHILD_UNLOAD_TIME_ERROR(1317, "非卸车时间段"),
ORDER_CHILD_ARRIVE_SEND_ADDRESS_DISTANCE_ERROR(1316, "没有到达货源地"), ORDER_CHILD_ARRIVE_SEND_ADDRESS_DISTANCE_ERROR(1318, "没有到达货源地"),
ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_DISTANCE_ERROR(1317, "没有到达目的地"), ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_DISTANCE_ERROR(1319, "没有到达目的地"),
; ;
private final int code; private final int code;
......
package com.clx.performance.controller.system;
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.registry.NacosRegistration;
import com.alibaba.cloud.nacos.registry.NacosServiceRegistry;
import com.msl.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 应用服务器控制
*
* @author wanglq
* Date 2022/11/28
* Time 15:43
*/
@RestController
@RequestMapping("/appServer")
@Slf4j
public class AppServerController {
@Autowired
private NacosRegistration registration;
@Autowired
private NacosServiceRegistry registry;
/**
* 下线服务
*
* @return
*/
@GetMapping("/deregister")
public Result<Void> deregister() {
NacosDiscoveryProperties properties = registration.getNacosDiscoveryProperties();
String service = properties.getService();
String group = properties.getGroup();
String clusterName = properties.getClusterName();
String ip = properties.getIp();
int port = properties.getPort();
log.info("deregister from nacos, serviceName:{}, groupName:{}, clusterName:{}, ip:{}, port:{}", service, group, clusterName, ip, port);
registry.deregister(registration);
return Result.ok();
}
/**
* 应用状态
*
* @return
*/
@GetMapping("/status")
public Result<String> status() {
return Result.ok("up");
}
}
...@@ -40,4 +40,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -40,4 +40,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam, List<String> orderGoodsNoList); IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam, List<String> orderGoodsNoList);
void updateOrderGoodsStatusByOrderGoodsNo(String orderGoodsNo, Integer code); void updateOrderGoodsStatusByOrderGoodsNo(String orderGoodsNo, Integer code);
void saveBatchEntity(List<OrderGoods> orderGoodsList);
} }
...@@ -131,7 +131,7 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -131,7 +131,7 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
@Override @Override
public long countOfCancel(Long userNo, LocalDateTime startTime, LocalDateTime endTime) { public long countOfCancel(Long userNo, LocalDateTime startTime, LocalDateTime endTime) {
return count(lQrWrapper() return count(lQrWrapper()
.eq(OrderChild::getChildNo, userNo) .eq(OrderChild::getUserNo, userNo)
.eq(OrderChild::getStatus, OrderChildEnum.Status.DRIVER_CANCEL.getCode()) .eq(OrderChild::getStatus, OrderChildEnum.Status.DRIVER_CANCEL.getCode())
.ge(OrderChild::getCreateTime, startTime) .ge(OrderChild::getCreateTime, startTime)
.le(OrderChild::getCreateTime, endTime) .le(OrderChild::getCreateTime, endTime)
......
...@@ -18,6 +18,6 @@ import java.util.List; ...@@ -18,6 +18,6 @@ import java.util.List;
public class OrderChildPoundLogDaoImpl extends BaseDaoImpl<OrderChildPoundLogMapper, OrderChildPoundLog, Integer> implements OrderChildPoundLogDao { public class OrderChildPoundLogDaoImpl extends BaseDaoImpl<OrderChildPoundLogMapper, OrderChildPoundLog, Integer> implements OrderChildPoundLogDao {
@Override @Override
public List<OrderChildPoundLog> getPoundLogList(String childNo) { public List<OrderChildPoundLog> getPoundLogList(String childNo) {
return list(lQrWrapper().eq(OrderChildPoundLog::getChildNo,childNo)); return list(lQrWrapper().eq(OrderChildPoundLog::getChildNo,childNo).orderByDesc(OrderChildPoundLog::getId));
} }
} }
...@@ -92,5 +92,10 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -92,5 +92,10 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
baseMapper.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, code); 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; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.params.PageOrderGoodsListParam; import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.sqlProvider.OrderGoodsSqlProvider; import com.clx.performance.sqlProvider.OrderGoodsSqlProvider;
import com.clx.performance.sqlProvider.OrderGoodsTruckBindSqlProvider;
import com.clx.performance.vo.app.OrderGoodsAPPVO; import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.pc.OrderGoodsVO; import com.clx.performance.vo.pc.OrderGoodsVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -50,4 +51,8 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> { ...@@ -50,4 +51,8 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
" order_goods_status = #{code} " + " order_goods_status = #{code} " +
" where order_goods_no = #{orderGoodsNo}") " where order_goods_no = #{orderGoodsNo}")
void updateOrderGoodsStatusByOrderGoodsNo(@Param("orderGoodsNo") String orderGoodsNo, @Param("code") Integer code); void updateOrderGoodsStatusByOrderGoodsNo(@Param("orderGoodsNo") String orderGoodsNo, @Param("code") Integer code);
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "saveBatchEntity")
void saveBatchEntity(List<OrderGoods> orderGoodsList);
} }
...@@ -10,6 +10,7 @@ import lombok.Getter; ...@@ -10,6 +10,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
import java.util.Optional; import java.util.Optional;
...@@ -31,8 +32,8 @@ public class OrderChildImage implements HasKey<Integer> { ...@@ -31,8 +32,8 @@ public class OrderChildImage implements HasKey<Integer> {
private String childNo; //运单编号 private String childNo; //运单编号
private Integer type; //图片类型 private Integer type; //图片类型
private String image; //图片地址 private String image; //图片地址
private String createTime; //创建时间 private LocalDateTime createTime; //创建时间
private String modifiedTime; //修改时间 private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id") @KeyColumn("id")
@Override @Override
......
...@@ -8,6 +8,8 @@ import com.msl.common.model.HasKey; ...@@ -8,6 +8,8 @@ import com.msl.common.model.HasKey;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
* @Description: 磅单日志表 * @Description: 磅单日志表
...@@ -32,8 +34,8 @@ public class OrderChildPoundLog implements HasKey<Integer> { ...@@ -32,8 +34,8 @@ public class OrderChildPoundLog implements HasKey<Integer> {
private Integer createType; //操作人类型1-货主, 2-承运端,3-司机 private Integer createType; //操作人类型1-货主, 2-承运端,3-司机
private Long createBy; //操作人编号 private Long createBy; //操作人编号
private String createName; //操作人名称 private String createName; //操作人名称
private String createTime; //创建时间 private LocalDateTime createTime; //创建时间
private String modifiedTime; //修改时间 private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id") @KeyColumn("id")
@Override @Override
......
...@@ -2,12 +2,15 @@ package com.clx.performance.service.impl; ...@@ -2,12 +2,15 @@ package com.clx.performance.service.impl;
import com.clx.performance.dao.*; import com.clx.performance.dao.*;
import com.clx.performance.enums.*; import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.OrderChildPoundAuditEnum;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.model.*; import com.clx.performance.model.*;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PoundAuditParam; import com.clx.performance.param.pc.PoundAuditParam;
import com.clx.performance.service.OrderChildLogService; import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildPoundAuditService; import com.clx.performance.service.OrderChildPoundAuditService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.vo.pc.OrderChildPoundAuditDetailVO; import com.clx.performance.vo.pc.OrderChildPoundAuditDetailVO;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
...@@ -17,7 +20,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -17,7 +20,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -43,6 +46,8 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer ...@@ -43,6 +46,8 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
private final OrderGoodsDao orderGoodsDao; private final OrderGoodsDao orderGoodsDao;
private final OrderGoodsService orderGoodsService;
private final OrderChildLogService orderChildLogService; private final OrderChildLogService orderChildLogService;
...@@ -77,6 +82,8 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer ...@@ -77,6 +82,8 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_STATUS_CHANGED); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_STATUS_CHANGED);
} }
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_INVALID);
//磅单审核对象赋值 //磅单审核对象赋值
poundAuditDetail.setStatus(param.getStatus()); poundAuditDetail.setStatus(param.getStatus());
poundAuditDetail.setRejectType(param.getRejectType()); poundAuditDetail.setRejectType(param.getRejectType());
...@@ -98,6 +105,17 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer ...@@ -98,6 +105,17 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
} }
} }
BigDecimal dif = orderChild.getLoadNet().subtract(orderChild.getWeight());
orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setFreight(orderChildFreightCalc(orderChild));
// 更新装车净重
updateOrderGoodsAmountLoad(orderGoods, dif);
//更新运单数据
orderChild.setPoundStatus(param.getStatus());
orderChildDao.updatePoundAuditStatus(orderChild);
//保存磅单审核数据 //保存磅单审核数据
orderChildPoundAuditDao.saveEntity(poundAuditDetail); orderChildPoundAuditDao.saveEntity(poundAuditDetail);
...@@ -108,14 +126,52 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer ...@@ -108,14 +126,52 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
//保存磅单审核日志数据 //保存磅单审核日志数据
orderChildPoundLogDao.saveEntity(poundLog); orderChildPoundLogDao.saveEntity(poundLog);
//更新运单数据
orderChild.setPoundStatus(param.getStatus());
orderChildDao.updatePoundAuditStatus(orderChild);
//保存运单日志数据 //保存运单日志数据
orderChildLogService.saveOrderChildLog(param.getChildNo(),type,OrderChildLogEnum.Type.getByCode(type).get().getMsg(), orderChildLogService.saveOrderChildLog(param.getChildNo(),type,OrderChildLogEnum.Type.getByCode(type).get().getMsg(),
OrderChildLogEnum.CreateType.PLATFORM.getCode(), loginUserInfo.getUserNo(),loginUserInfo.getUserName()); OrderChildLogEnum.CreateType.PLATFORM.getCode(), loginUserInfo.getUserNo(),loginUserInfo.getUserName());
} }
/**
* 装车补偿
*/
private void updateOrderGoodsAmountLoad(OrderGoods orderGoods, BigDecimal dif){
if (dif.compareTo(BigDecimal.ZERO) == 0){return;}
int count = orderChildDao.countValidByOrderGoodsNo(orderGoods.getOrderGoodsNo())-1;
Integer status = orderGoods.getOrderGoodsStatus();
if (count == 0){
status = OrderGoodsStatusEnum.Status.PAYING.getCode();
}
else {
status = OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode();
}
orderGoodsService.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), dif, status);
}
/**
* 运单拉运吨数计算
*/
public BigDecimal orderChildWeightCalc(OrderChild orderChild){
if (orderChild.getLoadNet() == null) {return orderChild.getTruckLoad();}
else {return orderChild.getLoadNet();}
}
/**
* 运费计算
*/
public BigDecimal orderChildFreightCalc(OrderChild orderChild){
BigDecimal totalFreight = orderChild.getFreightPrice().multiply(orderChild.getWeight());
if (orderChild.getUnloadNet() != null){
BigDecimal dif = orderChild.getUnloadNet().subtract(orderChild.getWeight());
if (dif.compareTo(BigDecimal.ZERO) < 0){
totalFreight.subtract(orderChild.getLossPrice().multiply(dif));
}
}
return totalFreight.setScale(0, BigDecimal.ROUND_HALF_UP);
}
} }
...@@ -108,18 +108,18 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -108,18 +108,18 @@ public class OrderChildServiceImpl implements OrderChildService {
// 状态验证 // 状态验证
if (!Objects.equals(orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getCode()) if (!Objects.equals(orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getCode())
&& !Objects.equals(orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode())){ && !Objects.equals(orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_INVALID); throw new ServiceSystemException(PerformanceResultEnum.ORDER_INVALID1);
} }
// 车型限制 // // 车型限制
FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderGoods.getOrderNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); // FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderGoods.getOrderNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (StringUtils.isNotBlank(orderInfo.getTruckModelList())){ // if (StringUtils.isNotBlank(orderInfo.getTruckModelList())){
List<JSONObject> truckModelList = JSON.parseArray(orderInfo.getTruckModelList(), JSONObject.class); // List<JSONObject> truckModelList = JSON.parseArray(orderInfo.getTruckModelList(), JSONObject.class);
List<String> truckModelNameList = truckModelList.stream().map(item -> item.getString("truckModelName")).collect(Collectors.toList()); // List<String> truckModelNameList = truckModelList.stream().map(item -> item.getString("truckModelName")).collect(Collectors.toList());
if (!truckModelNameList.contains(driverTruckInfo.getModel())){ // if (!truckModelNameList.contains(driverTruckInfo.getModel())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_TRUCK_MODEL_ERROR); // throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_TRUCK_MODEL_ERROR);
} // }
} // }
// 定向 // 定向
OrderGoodsTruckBind orderGoodsTruckBind = orderGoodsTruckBindDao.getValidByOrderGoodsNoAndTruckNo(truckNo).orNull(); OrderGoodsTruckBind orderGoodsTruckBind = orderGoodsTruckBindDao.getValidByOrderGoodsNoAndTruckNo(truckNo).orNull();
...@@ -383,14 +383,14 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -383,14 +383,14 @@ public class OrderChildServiceImpl implements OrderChildService {
private void updateLoadFirst(OrderChildLoadParam param, OrderChild orderChild, OrderGoods orderGoods) { private void updateLoadFirst(OrderChildLoadParam param, OrderChild orderChild, OrderGoods orderGoods) {
String childNo = param.getChildNo(); String childNo = param.getChildNo();
// 装车时间验证 // // 装车时间验证
FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderChild.getOrderNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); // FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderChild.getOrderNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
LocalDateTime now = LocalDateTime.now(); // LocalDateTime now = LocalDateTime.now();
LocalDateTime beginTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getLoadBeginTime()).get(); // LocalDateTime beginTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getLoadBeginTime()).get();
LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getLoadEndTime()).get(); // LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getLoadEndTime()).get();
if (now.isBefore(beginTime) || now.isAfter(endTime)){ // if (now.isBefore(beginTime) || now.isAfter(endTime)){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_TIME_ERROR); // throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_TIME_ERROR);
} // }
List<OrderChildImage> imageList = new ArrayList<>(); List<OrderChildImage> imageList = new ArrayList<>();
for (String item : param.getLoadImageList()) { for (String item : param.getLoadImageList()) {
...@@ -491,14 +491,14 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -491,14 +491,14 @@ public class OrderChildServiceImpl implements OrderChildService {
private void updateUnloadFirst(OrderChildUnloadParam param, OrderChild orderChild) { private void updateUnloadFirst(OrderChildUnloadParam param, OrderChild orderChild) {
String childNo = param.getChildNo(); String childNo = param.getChildNo();
// 装车时间验证 // // 装车时间验证
FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderChild.getOrderNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); // FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderChild.getOrderNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
LocalDateTime now = LocalDateTime.now(); // LocalDateTime now = LocalDateTime.now();
LocalDateTime beginTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getUnloadBeginTime()).get(); // LocalDateTime beginTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getUnloadBeginTime()).get();
LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getUnloadEndTime()).get(); // LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getUnloadEndTime()).get();
if (now.isBefore(beginTime) || now.isAfter(endTime)){ // if (now.isBefore(beginTime) || now.isAfter(endTime)){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_TIME_ERROR); // throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_TIME_ERROR);
} // }
List<OrderChildImage> imageList = new ArrayList<>(); List<OrderChildImage> imageList = new ArrayList<>();
for (String item : param.getUnloadImageList()) { for (String item : param.getUnloadImageList()) {
...@@ -953,6 +953,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -953,6 +953,8 @@ public class OrderChildServiceImpl implements OrderChildService {
* 装车补偿 * 装车补偿
*/ */
private void updateOrderGoodsAmountLoad(OrderGoods orderGoods, BigDecimal dif){ private void updateOrderGoodsAmountLoad(OrderGoods orderGoods, BigDecimal dif){
if (dif.compareTo(BigDecimal.ZERO) == 0){return;}
int count = orderChildDao.countValidByOrderGoodsNo(orderGoods.getOrderGoodsNo())-1; int count = orderChildDao.countValidByOrderGoodsNo(orderGoods.getOrderGoodsNo())-1;
Integer status = orderGoods.getOrderGoodsStatus(); Integer status = orderGoods.getOrderGoodsStatus();
...@@ -1007,7 +1009,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1007,7 +1009,7 @@ public class OrderChildServiceImpl implements OrderChildService {
*/ */
private boolean cancelCountCheck(Long userNo){ private boolean cancelCountCheck(Long userNo){
LocalDateTime startTime = DateUtils.parseDateTime(DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd").get() + " 00:00:00").get(); LocalDateTime startTime = DateUtils.parseDateTime(DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd").get() + " 00:00:00").get();
LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd").get() + " 00:00:00").get(); LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd").get() + " 23:59:59").get();
long count = orderChildDao.countOfCancel(userNo, startTime, endTime); long count = orderChildDao.countOfCancel(userNo, startTime, endTime);
...@@ -1018,7 +1020,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1018,7 +1020,7 @@ public class OrderChildServiceImpl implements OrderChildService {
* 运单拉运吨数计算 * 运单拉运吨数计算
*/ */
private BigDecimal orderChildWeightCalc(OrderChild orderChild){ private BigDecimal orderChildWeightCalc(OrderChild orderChild){
if (orderChild.getUnloadNet() == null) {return orderChild.getTruckLoad();} if (orderChild.getLoadNet() == null) {return orderChild.getTruckLoad();}
else {return orderChild.getLoadNet();} else {return orderChild.getLoadNet();}
} }
......
...@@ -98,7 +98,7 @@ public class OrderChildSqlProvider { ...@@ -98,7 +98,7 @@ public class OrderChildSqlProvider {
if (StringUtils.isNotBlank(param.getReceiveAddress())) {WHERE("receive_address= #{param.receiveAddress}");} if (StringUtils.isNotBlank(param.getReceiveAddress())) {WHERE("receive_address= #{param.receiveAddress}");}
if (Objects.nonNull(param.getStatus())) {WHERE("pound_status = #{param.status}");} if (Objects.nonNull(param.getStatus())) {WHERE("pound_status = #{param.status}");}
ORDER_BY("unload_time desc,pound_status"); ORDER_BY("pound_status,unload_time");
}}.toString(); }}.toString();
} }
......
...@@ -5,6 +5,8 @@ import com.clx.order.params.PageOrderGoodsListParam; ...@@ -5,6 +5,8 @@ import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.order.vo.feign.FeignPageOrderVO; import com.clx.order.vo.feign.FeignPageOrderVO;
import com.clx.performance.enums.OrderChildEnum; import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderGoodsStatusEnum; 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.app.OrderGoodsAPPVO;
import com.clx.performance.vo.pc.OrderGoodsVO; import com.clx.performance.vo.pc.OrderGoodsVO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -136,4 +138,34 @@ public class OrderGoodsSqlProvider { ...@@ -136,4 +138,34 @@ public class OrderGoodsSqlProvider {
return sqlList.toString(); 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; ...@@ -2,12 +2,14 @@ package com.clx.performance.strategy.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.order.params.OrderGoodsChildParams; import com.clx.order.params.OrderGoodsChildParams;
import com.clx.order.params.OrderGoodsParams; import com.clx.order.params.OrderGoodsParams;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.component.GoodsOrderStrategyContext; import com.clx.performance.component.GoodsOrderStrategyContext;
import com.clx.performance.component.OrderGoodsIdGenerate; import com.clx.performance.component.OrderGoodsIdGenerate;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao; import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.*; import com.clx.performance.enums.*;
import com.clx.performance.mapper.OrderGoodsMapper; import com.clx.performance.mapper.OrderGoodsMapper;
...@@ -25,13 +27,18 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; ...@@ -25,13 +27,18 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/**
* 全部平台
*/
@Component("OneGoodsOrderStrategy") @Component("OneGoodsOrderStrategy")
@Slf4j @Slf4j
public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBean { public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBean {
...@@ -49,7 +56,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -49,7 +56,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
OrderGoodsService orderGoodsService; OrderGoodsService orderGoodsService;
@Autowired @Autowired
OrderGoodsMapper orderGoodsMapper; OrderGoodsDao orderGoodsDao;
@Autowired @Autowired
private GoodsOrderStrategyContext goodsOrderStrategyContext; private GoodsOrderStrategyContext goodsOrderStrategyContext;
...@@ -58,6 +65,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -58,6 +65,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now) { public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now) {
String orderNo = orderGoodsParams.getOrderNo(); String orderNo = orderGoodsParams.getOrderNo();
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
...@@ -66,12 +74,14 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -66,12 +74,14 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
List<OrderGoodsChildParams> childParamsList = orderGoodsParams.getOrderGoodsChildParams(); List<OrderGoodsChildParams> childParamsList = orderGoodsParams.getOrderGoodsChildParams();
BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce( BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce(
BigDecimal.ZERO, BigDecimal::add); BigDecimal.ZERO, BigDecimal::add);
if (orderInfo.getResidueWeight().compareTo(childSum) < 0) { BigDecimal residueWeight = new BigDecimal(orderInfo.getResidueWeight());
if (residueWeight.compareTo(childSum) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总吨数已超订单总吨数"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总吨数已超订单总吨数");
} }
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size()); long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size());
Map<String, LocalDateTime> mqMap = new HashMap<>(); Map<String, LocalDateTime> mqMap = new HashMap<>();
List<OrderGoods> orderGoodsList = new LinkedList<>();
for (OrderGoodsChildParams child : childParamsList) { for (OrderGoodsChildParams child : childParamsList) {
if (child.getPendingOrderWay().equals(2)) { if (child.getPendingOrderWay().equals(2)) {
if (child.getNeedTruckNum() == null) { if (child.getNeedTruckNum() == null) {
...@@ -87,6 +97,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -87,6 +97,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
//提取吨数 //提取吨数
orderGoods.setExtractWeight(child.getExtractWeight()); orderGoods.setExtractWeight(child.getExtractWeight());
orderGoods.setResidueTransportWeight(child.getExtractWeight()); orderGoods.setResidueTransportWeight(child.getExtractWeight());
orderGoods.setAlreadyTransportWeight(BigDecimal.ZERO);
orderGoods.setLossPrice(orderInfo.getLossPrice()); orderGoods.setLossPrice(orderInfo.getLossPrice());
orderGoods.setTruckDemand(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode()); orderGoods.setTruckDemand(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode());
//提取方式 1提取全部 2提取部分 //提取方式 1提取全部 2提取部分
...@@ -111,8 +122,8 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -111,8 +122,8 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
orderGoods.setLastArriveSendTime(DateUtils.parseDateTime(child.getLastArriveSendTime()).get()); orderGoods.setLastArriveSendTime(DateUtils.parseDateTime(child.getLastArriveSendTime()).get());
//定向运单失效时间 //定向运单失效时间
// orderGoods.setDirectionalExpireTime(DateUtils.parseDateTime(child.getDirectionalExpireTime()).get()); // orderGoods.setDirectionalExpireTime(DateUtils.parseDateTime(child.getDirectionalExpireTime()).get());
// orderGoods.setSeniorLogisticsManagerId(child.getSeniorLogisticsManagerId()); orderGoods.setSeniorLogisticsManagerId(child.getSeniorLogisticsManagerId());
// orderGoods.setSeniorLogisticsManagerName(child.getSeniorLogisticsManagerName()); orderGoods.setSeniorLogisticsManagerName(child.getSeniorLogisticsManagerName());
orderGoods.setOrderNo(orderNo); orderGoods.setOrderNo(orderNo);
orderGoods.setOrderGoodsNo(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId); orderGoods.setOrderGoodsNo(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId);
...@@ -128,6 +139,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -128,6 +139,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
orderGoods.setReceiveAddressShorter(orderInfo.getReveiveAddressShorter()); orderGoods.setReceiveAddressShorter(orderInfo.getReveiveAddressShorter());
orderGoods.setGoodsName(orderInfo.getGoodsName()); orderGoods.setGoodsName(orderInfo.getGoodsName());
orderGoods.setGoodsId(orderInfo.getGoodsNameId());
orderGoods.setCreateTime(now); orderGoods.setCreateTime(now);
orderGoods.setModifiedTime(now); orderGoods.setModifiedTime(now);
orderGoods.setUserName(loginUserInfo.getUserName()); orderGoods.setUserName(loginUserInfo.getUserName());
...@@ -137,18 +149,21 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -137,18 +149,21 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
} }
mqMap.put(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId, postedTime); mqMap.put(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId, postedTime);
beginOrderGoodsId = beginOrderGoodsId + 1; beginOrderGoodsId = beginOrderGoodsId + 1;
orderGoodsMapper.insert(orderGoods); orderGoodsList.add(orderGoods);
} }
BigDecimal subtract = orderInfo.getResidueWeight().subtract(childSum); orderGoodsDao.saveBatchEntity(orderGoodsList);
log.info("更新剩余订单量{}", subtract); UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
orderFeign.updateOrderInfoResidueWeight(orderInfo.getId(), subtract); param.setOrderId(orderInfo.getId());
param.setUpdateType("1");
param.setResidueWeight(residueWeight.subtract(childSum));
orderFeign.updateOrderInfoResidueWeight(param);
sendMq(mqMap, now); sendMq(mqMap, now);
return sendLazyTime; return sendLazyTime;
} }
@Override @Override
public void afterPropertiesSet() throws Exception { public void afterPropertiesSet() {
goodsOrderStrategyContext.strategyContext.put(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode(), this); goodsOrderStrategyContext.strategyContext.put(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode(), this);
} }
......
...@@ -2,12 +2,14 @@ package com.clx.performance.strategy.impl; ...@@ -2,12 +2,14 @@ package com.clx.performance.strategy.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.order.params.OrderGoodsChildParams; import com.clx.order.params.OrderGoodsChildParams;
import com.clx.order.params.OrderGoodsParams; import com.clx.order.params.OrderGoodsParams;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.component.GoodsOrderStrategyContext; import com.clx.performance.component.GoodsOrderStrategyContext;
import com.clx.performance.component.OrderGoodsIdGenerate; import com.clx.performance.component.OrderGoodsIdGenerate;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao; import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTypeEnum; import com.clx.performance.enums.OrderGoodsTypeEnum;
...@@ -28,13 +30,18 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; ...@@ -28,13 +30,18 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/**
* 自由车辆
*/
@Component("ThreeGoodsOrderStrategy") @Component("ThreeGoodsOrderStrategy")
@Slf4j @Slf4j
public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBean { public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBean {
...@@ -50,7 +57,7 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing ...@@ -50,7 +57,7 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
OrderGoodsService orderGoodsService; OrderGoodsService orderGoodsService;
@Autowired @Autowired
OrderGoodsMapper orderGoodsMapper; OrderGoodsDao orderGoodsDao;
@Autowired @Autowired
private GoodsOrderStrategyContext goodsOrderStrategyContext; private GoodsOrderStrategyContext goodsOrderStrategyContext;
...@@ -62,6 +69,7 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing ...@@ -62,6 +69,7 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now) { public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now) {
String orderNo = orderGoodsParams.getOrderNo(); String orderNo = orderGoodsParams.getOrderNo();
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
...@@ -70,7 +78,8 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing ...@@ -70,7 +78,8 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
List<OrderGoodsChildParams> childParamsList = orderGoodsParams.getOrderGoodsChildParams(); List<OrderGoodsChildParams> childParamsList = orderGoodsParams.getOrderGoodsChildParams();
BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce( BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce(
BigDecimal.ZERO, BigDecimal::add); BigDecimal.ZERO, BigDecimal::add);
if (orderInfo.getResidueWeight().compareTo(childSum) < 0) { BigDecimal residueWeight = new BigDecimal(orderInfo.getResidueWeight());
if (residueWeight.compareTo(childSum) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总吨数已超订单总吨数"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总吨数已超订单总吨数");
} }
if (childParamsList.size() > 1) { if (childParamsList.size() > 1) {
...@@ -79,12 +88,16 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing ...@@ -79,12 +88,16 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
Map<String, LocalDateTime> mqMap = new HashMap<>(); Map<String, LocalDateTime> mqMap = new HashMap<>();
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size()); long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size());
List<OrderGoods> orderGoodsList = new LinkedList<>();
for (OrderGoodsChildParams child : childParamsList) { for (OrderGoodsChildParams child : childParamsList) {
OrderGoods orderGoods = new OrderGoods(); OrderGoods orderGoods = new OrderGoods();
//提取吨数 //提取吨数
orderGoods.setExtractWeight(child.getExtractWeight()); orderGoods.setExtractWeight(child.getExtractWeight());
orderGoods.setResidueTransportWeight(child.getExtractWeight()); orderGoods.setResidueTransportWeight(child.getExtractWeight());
orderGoods.setAlreadyTransportWeight(BigDecimal.ZERO);
orderGoods.setLossPrice(orderInfo.getLossPrice()); orderGoods.setLossPrice(orderInfo.getLossPrice());
orderGoods.setTruckDemand(TruckDemandEnum.TruckType.OWNER_CAR.getCode()); orderGoods.setTruckDemand(TruckDemandEnum.TruckType.OWNER_CAR.getCode());
...@@ -112,11 +125,12 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing ...@@ -112,11 +125,12 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
orderGoods.setLastArriveSendTime(DateUtils.parseDateTime(child.getLastArriveSendTime()).get()); orderGoods.setLastArriveSendTime(DateUtils.parseDateTime(child.getLastArriveSendTime()).get());
//定向运单失效时间 //定向运单失效时间
// orderGoods.setDirectionalExpireTime(DateUtils.parseDateTime(child.getDirectionalExpireTime()).get()); // orderGoods.setDirectionalExpireTime(DateUtils.parseDateTime(child.getDirectionalExpireTime()).get());
// orderGoods.setSeniorLogisticsManagerId(child.getSeniorLogisticsManagerId()); orderGoods.setSeniorLogisticsManagerId(child.getSeniorLogisticsManagerId());
// orderGoods.setSeniorLogisticsManagerName(child.getSeniorLogisticsManagerName()); orderGoods.setSeniorLogisticsManagerName(child.getSeniorLogisticsManagerName());
orderGoods.setOrderNo(orderNo); orderGoods.setOrderNo(orderNo);
orderGoods.setOrderGoodsNo(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId); orderGoods.setOrderGoodsNo(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId);
orderGoods.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CREATED.getCode()); orderGoods.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CREATED.getCode());
orderGoods.setSendAddressId(orderInfo.getSendAddressId()); orderGoods.setSendAddressId(orderInfo.getSendAddressId());
orderGoods.setSendAddressShorter(orderInfo.getSendAddressShorter()); orderGoods.setSendAddressShorter(orderInfo.getSendAddressShorter());
...@@ -128,6 +142,8 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing ...@@ -128,6 +142,8 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
orderGoods.setReceiveAddressId(orderInfo.getReveiveAddressId()); orderGoods.setReceiveAddressId(orderInfo.getReveiveAddressId());
orderGoods.setReceiveAddressShorter(orderInfo.getReveiveAddressShorter()); orderGoods.setReceiveAddressShorter(orderInfo.getReveiveAddressShorter());
orderGoods.setGoodsName(orderInfo.getGoodsName()); orderGoods.setGoodsName(orderInfo.getGoodsName());
orderGoods.setGoodsId(orderInfo.getGoodsNameId());
orderGoods.setCreateTime(now); orderGoods.setCreateTime(now);
orderGoods.setModifiedTime(now); orderGoods.setModifiedTime(now);
orderGoods.setUserName(loginUserInfo.getUserName()); orderGoods.setUserName(loginUserInfo.getUserName());
...@@ -139,17 +155,22 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing ...@@ -139,17 +155,22 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
beginOrderGoodsId = beginOrderGoodsId + 1; beginOrderGoodsId = beginOrderGoodsId + 1;
orderGoodsMapper.insert(orderGoods); orderGoodsList.add(orderGoods);
} }
orderGoodsDao.saveBatchEntity(orderGoodsList);
orderFeign.updateOrderInfoResidueWeight(orderInfo.getId(),orderInfo.getResidueWeight().subtract(childSum)); UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("1");
param.setResidueWeight(residueWeight.subtract(childSum));
orderFeign.updateOrderInfoResidueWeight(param);
sendMq(mqMap, now); sendMq(mqMap, now);
return sendLazyTime; return sendLazyTime;
} }
@Override @Override
public void afterPropertiesSet() throws Exception { public void afterPropertiesSet() {
goodsOrderStrategyContext.strategyContext.put(TruckDemandEnum.TruckType.OWNER_CAR.getCode(),this); goodsOrderStrategyContext.strategyContext.put(TruckDemandEnum.TruckType.OWNER_CAR.getCode(), this);
} }
public void sendMq(Map<String, LocalDateTime> mqMap, LocalDateTime now) { public void sendMq(Map<String, LocalDateTime> mqMap, LocalDateTime now) {
......
...@@ -2,12 +2,14 @@ package com.clx.performance.strategy.impl; ...@@ -2,12 +2,14 @@ package com.clx.performance.strategy.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.order.params.OrderGoodsChildParams; import com.clx.order.params.OrderGoodsChildParams;
import com.clx.order.params.OrderGoodsParams; import com.clx.order.params.OrderGoodsParams;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.component.GoodsOrderStrategyContext; import com.clx.performance.component.GoodsOrderStrategyContext;
import com.clx.performance.component.OrderGoodsIdGenerate; import com.clx.performance.component.OrderGoodsIdGenerate;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao; import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTypeEnum; import com.clx.performance.enums.OrderGoodsTypeEnum;
...@@ -22,19 +24,25 @@ import com.msl.common.utils.DateUtils; ...@@ -22,19 +24,25 @@ import com.msl.common.utils.DateUtils;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil; import com.msl.user.utils.TokenUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder; import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/**
* 部分平台
*/
@Component("TwoGoodsOrderStrategy") @Component("TwoGoodsOrderStrategy")
@Slf4j @Slf4j
public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBean { public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBean {
...@@ -50,7 +58,7 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -50,7 +58,7 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
OrderGoodsService orderGoodsService; OrderGoodsService orderGoodsService;
@Autowired @Autowired
OrderGoodsMapper orderGoodsMapper; OrderGoodsDao orderGoodsDao;
@Autowired @Autowired
private OrderFeign orderFeign; private OrderFeign orderFeign;
...@@ -63,18 +71,27 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -63,18 +71,27 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now) { public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now) {
String orderNo = orderGoodsParams.getOrderNo(); String orderNo = orderGoodsParams.getOrderNo();
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
LocalDateTime sendLazyTime = null; LocalDateTime sendLazyTime = null;
List<OrderGoodsChildParams> childParamsList = orderGoodsParams.getOrderGoodsChildParams(); 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.ZERO, BigDecimal::add);
if (orderInfo.getResidueWeight().compareTo(childSum) < 0) { BigDecimal ownSum = childParamsList.stream().filter(i -> !"1".equals(i.getVehicleUsage())).map(OrderGoodsChildParams::getExtractWeight).reduce(
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总吨数已超订单总吨数"); 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<>(); Map<String, LocalDateTime> mqMap = new HashMap<>();
List<OrderGoods> orderGoodsList = new LinkedList<>();
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size()); long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size());
for (OrderGoodsChildParams child : childParamsList) { for (OrderGoodsChildParams child : childParamsList) {
...@@ -92,6 +109,8 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -92,6 +109,8 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
//提取吨数 //提取吨数
orderGoods.setExtractWeight(child.getExtractWeight()); orderGoods.setExtractWeight(child.getExtractWeight());
orderGoods.setResidueTransportWeight(child.getExtractWeight()); orderGoods.setResidueTransportWeight(child.getExtractWeight());
orderGoods.setAlreadyTransportWeight(BigDecimal.ZERO);
orderGoods.setLossPrice(orderInfo.getLossPrice()); orderGoods.setLossPrice(orderInfo.getLossPrice());
orderGoods.setTruckDemand(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode()); orderGoods.setTruckDemand(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode());
...@@ -117,11 +136,12 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -117,11 +136,12 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
orderGoods.setLastArriveSendTime(DateUtils.parseDateTime(child.getLastArriveSendTime()).get()); orderGoods.setLastArriveSendTime(DateUtils.parseDateTime(child.getLastArriveSendTime()).get());
//定向运单失效时间 //定向运单失效时间
// orderGoods.setDirectionalExpireTime(DateUtils.parseDateTime(child.getDirectionalExpireTime()).get()); // orderGoods.setDirectionalExpireTime(DateUtils.parseDateTime(child.getDirectionalExpireTime()).get());
// orderGoods.setSeniorLogisticsManagerId(child.getSeniorLogisticsManagerId()); orderGoods.setSeniorLogisticsManagerId(child.getSeniorLogisticsManagerId());
// orderGoods.setSeniorLogisticsManagerName(child.getSeniorLogisticsManagerName()); orderGoods.setSeniorLogisticsManagerName(child.getSeniorLogisticsManagerName());
orderGoods.setOrderNo(orderNo); orderGoods.setOrderNo(orderNo);
orderGoods.setOrderGoodsNo(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId); orderGoods.setOrderGoodsNo(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId);
orderGoods.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CREATED.getCode()); orderGoods.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CREATED.getCode());
orderGoods.setSendAddressId(orderInfo.getSendAddressId()); orderGoods.setSendAddressId(orderInfo.getSendAddressId());
orderGoods.setSendAddressShorter(orderInfo.getSendAddressShorter()); orderGoods.setSendAddressShorter(orderInfo.getSendAddressShorter());
...@@ -133,6 +153,8 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -133,6 +153,8 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
orderGoods.setReceiveAddressId(orderInfo.getReveiveAddressId()); orderGoods.setReceiveAddressId(orderInfo.getReveiveAddressId());
orderGoods.setReceiveAddressShorter(orderInfo.getReveiveAddressShorter()); orderGoods.setReceiveAddressShorter(orderInfo.getReveiveAddressShorter());
orderGoods.setGoodsName(orderInfo.getGoodsName()); orderGoods.setGoodsName(orderInfo.getGoodsName());
orderGoods.setGoodsId(orderInfo.getGoodsNameId());
orderGoods.setCreateTime(now); orderGoods.setCreateTime(now);
orderGoods.setModifiedTime(now); orderGoods.setModifiedTime(now);
orderGoods.setUserName(loginUserInfo.getUserName()); orderGoods.setUserName(loginUserInfo.getUserName());
...@@ -143,16 +165,40 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe ...@@ -143,16 +165,40 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
mqMap.put(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId, postedTime); mqMap.put(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId, postedTime);
beginOrderGoodsId = beginOrderGoodsId + 1; beginOrderGoodsId = beginOrderGoodsId + 1;
orderGoodsMapper.insert(orderGoods); orderGoodsList.add(orderGoods);
}
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);
} }
orderFeign.updateOrderInfoResidueWeight(orderInfo.getId(), orderInfo.getResidueWeight().subtract(childSum));
sendMq(mqMap, now); sendMq(mqMap, now);
return sendLazyTime; return sendLazyTime;
} }
@Override @Override
public void afterPropertiesSet() throws Exception { public void afterPropertiesSet() {
goodsOrderStrategyContext.strategyContext.put(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode(), this); goodsOrderStrategyContext.strategyContext.put(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode(), this);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论