提交 9ecee94a authored 作者: 杨启发's avatar 杨启发

Merge remote-tracking branch 'origin/test' into test

...@@ -49,6 +49,7 @@ public interface PerformanceSDKFeign { ...@@ -49,6 +49,7 @@ public interface PerformanceSDKFeign {
Result<List<PerformanceProgressOperationLogVO>> queryPerformanceProgressLog(@RequestBody QueryPerformanceProgressLogAction action); Result<List<PerformanceProgressOperationLogVO>> queryPerformanceProgressLog(@RequestBody QueryPerformanceProgressLogAction action);
@GetMapping(value = {"clx-performance/feign/sdk/getOrderCanExtractWeight"}) @GetMapping(value = {"clx-performance/feign/sdk/getOrderCanExtractWeight"})
Result<OrderCanExtractWeightDTO> getOrderCanExtractWeight(@RequestParam(value = "orderNo") String orderNo); Result<OrderCanExtractWeightDTO> getOrderCanExtractWeight(@RequestParam(value = "orderNo") String orderNo);
......
...@@ -579,6 +579,7 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -579,6 +579,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
} }
@Override @Override
// todo :jiangwujie 事务判断 ,其他也检查一下
public void removeLoadLimit(ArtificialCancelOrderParam param) { public void removeLoadLimit(ArtificialCancelOrderParam param) {
OrderChild orderChild = orderChildDao.getByChildNo(param.getOrderChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND); OrderChild orderChild = orderChildDao.getByChildNo(param.getOrderChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
//判断运单状态【已接单】【前往货源地】【到达货源地】时可对该运单解除装车限制,否则toast:不可操作 //判断运单状态【已接单】【前往货源地】【到达货源地】时可对该运单解除装车限制,否则toast:不可操作
...@@ -586,7 +587,8 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -586,7 +587,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.GO_TO_SEND.getCode(),
OrderChildEnum.Status.ARRIVE_SEND.getCode()) OrderChildEnum.Status.ARRIVE_SEND.getCode())
.contains(orderChild.getStatus())) { .contains(orderChild.getStatus())) {
log.error("运单:{} 状态:{}不在【已接单】【前往货源地】【到达货源地】范围中,不允许解除装车限制", param.getOrderChildNo(), orderChild.getStatus()); //todo log.error 检查一下
log.info("运单:{} 状态:{}不在【已接单】【前往货源地】【到达货源地】范围中,不允许解除装车限制", param.getOrderChildNo(), orderChild.getStatus());
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID, "不可操作"); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID, "不可操作");
} }
......
...@@ -1778,6 +1778,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1778,6 +1778,7 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
/** /**
* todo 要改成两个
* 获取监装 * 获取监装
* @param orderNo * @param orderNo
* @param childNo * @param childNo
...@@ -3235,19 +3236,17 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3235,19 +3236,17 @@ public class OrderChildServiceImpl implements OrderChildService {
String childNo = child.getChildNo(); String childNo = child.getChildNo();
String truckNo = child.getTruckNo(); String truckNo = child.getTruckNo();
Long driverUserNo = child.getDriverUserNo(); Long driverUserNo = child.getDriverUserNo();
//解除监装限制的不进行处理
if (Objects.equals(child.getRemoveLoadLimitStatus(), OrderChildEnum.RemoveLoadLimitStatus.REMOVED.getCode())) {
log.info("运单:{},卡车:{} 已解除监装限制", childNo, truckNo);
return;
}
//获取卡车的位置 //获取卡车的位置
TruckTraceDTO truckTraceDTO = truckTraceMap.get(truckNo); TruckTraceDTO truckTraceDTO = truckTraceMap.get(truckNo);
log.info("运单号:{},卡车:{},中交兴路地图位置:{}", childNo, truckNo, truckTraceDTO);
BigDecimal truckLongitudeX = null; BigDecimal truckLongitudeX = null;
BigDecimal truckLatitudeY = null; BigDecimal truckLatitudeY = null;
if (Objects.nonNull(truckTraceDTO)) { if (Objects.nonNull(truckTraceDTO)) {
truckLongitudeX = truckTraceDTO.getLocation()[0]; truckLongitudeX = truckTraceDTO.getLocation()[0];
truckLatitudeY = truckTraceDTO.getLocation()[1]; truckLatitudeY = truckTraceDTO.getLocation()[1];
} else { }
if (truckLongitudeX == null || truckLatitudeY == null) {
log.info("运单号:{},卡车:{},卡车经纬度:{}", childNo, truckNo, truckTraceDTO);
BigDecimal[] location = truckTraceService.getCurrentPosition(truckNo, driverUserNo); BigDecimal[] location = truckTraceService.getCurrentPosition(truckNo, driverUserNo);
if (location != null && location.length > 2) { if (location != null && location.length > 2) {
truckLongitudeX = location[0]; truckLongitudeX = location[0];
...@@ -3259,18 +3258,21 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3259,18 +3258,21 @@ public class OrderChildServiceImpl implements OrderChildService {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsNo).get(); OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsNo).get();
BigDecimal siteLongitudeX = orderGoods.getSendLongitude(); BigDecimal siteLongitudeX = orderGoods.getSendLongitude();
BigDecimal siteLatitudeY = orderGoods.getSendLatitude(); BigDecimal siteLatitudeY = orderGoods.getSendLatitude();
log.info("运单号:{},卡车:{},status:{},站点经度:{},站点纬度:{},卡车经度:{},卡车纬度:{}", childNo, truckNo, child.getStatus(), siteLongitudeX, siteLatitudeY, truckLongitudeX, truckLatitudeY);
//调高德获取距离 //调高德获取距离
if (Objects.nonNull(truckLongitudeX) && Objects.nonNull(truckLatitudeY)) { if (Objects.nonNull(truckLongitudeX) && Objects.nonNull(truckLatitudeY)) {
Integer distance = getGdRoute(truckNo, orderGoods.getSendLongitude(), orderGoods.getSendLatitude(), siteLongitudeX, Integer distance = getGdRoute(truckNo, orderGoods.getSendLongitude(), orderGoods.getSendLatitude(), siteLongitudeX,
siteLatitudeY); siteLatitudeY);
if (distance == null) { if (distance == null) {
log.error("高德获取卡车与货源地位置距离失败,orderGoodsNo:{},orderChildNo:{},truckNo:{}", orderGoodsNo, childNo, truckNo); log.info("高德获取卡车与货源地位置距离失败,orderGoodsNo:{},orderChildNo:{},truckNo:{}", orderGoodsNo, childNo, truckNo);
return; continue;
} }
log.info("运单号:{},卡车:{},status:{},站点经度:{},站点纬度:{},卡车经度:{},卡车纬度:{},距离:{}", orderGoodsNo, truckNo, child.getStatus(), siteLongitudeX, siteLatitudeY, truckLongitudeX, truckLatitudeY, distance);
// 超出货源地+通知触发距离 // 超出货源地+通知触发距离
if (distance > driverNoticeConfigVO.getNoticeTriggerDistanceMeter()) { if (distance > driverNoticeConfigVO.getNoticeTriggerDistanceMeter()) {
if (Objects.equals(child.getExitNoticeStatus(), OrderChildEnum.ExitNoticeStatus.NOT_NOTIFIED.getCode()) if (Objects.equals(child.getExitNoticeStatus(), OrderChildEnum.ExitNoticeStatus.NOT_NOTIFIED.getCode())
) { ) {
// todo :jiangwujie 增加短信次数限制
//超出货源地x公里范围了,且通知状态为未通知 //超出货源地x公里范围了,且通知状态为未通知
// 到达货源地 // 到达货源地
if (Objects.equals(child.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())) { if (Objects.equals(child.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())) {
...@@ -3280,7 +3282,9 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3280,7 +3282,9 @@ public class OrderChildServiceImpl implements OrderChildService {
// 已装货 // 已装货
if (Objects.equals(child.getStatus(), OrderChildEnum.Status.LOAD.getCode())) { if (Objects.equals(child.getStatus(), OrderChildEnum.Status.LOAD.getCode())) {
Object[] superviseInfo = getSuperviseInfo(child.getOrderNo(), child.getChildNo()); Object[] superviseInfo = getSuperviseInfo(child.getOrderNo(), child.getChildNo());
log.info("运单号:{},卡车:{},监装信息{}", childNo, truckNo, superviseInfo);
if (superviseInfo != null) { if (superviseInfo != null) {
log.info("{}超出货源地x公里范围了,运单{}为装货成功状态,发送短信", truckNo, childNo);
sendSupervisionSms(child.getDriverMobile(), child.getTruckNo(), child.getChildNo(), (String) superviseInfo[2]); sendSupervisionSms(child.getDriverMobile(), child.getTruckNo(), child.getChildNo(), (String) superviseInfo[2]);
} }
} }
...@@ -3289,11 +3293,14 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3289,11 +3293,14 @@ public class OrderChildServiceImpl implements OrderChildService {
child.setEnterExitSendStatus(OrderChildEnum.EnterExitSendStatus.DRIVE_OUT.getCode()); child.setEnterExitSendStatus(OrderChildEnum.EnterExitSendStatus.DRIVE_OUT.getCode());
orderChildDao.updateEntityByKey(child); orderChildDao.updateEntityByKey(child);
} }
} else if(distance <= 1000){ } else if (distance <= 1000) {
log.info("运单号:{},卡车:{},status:{},站点经度:{},站点纬度:{},卡车经度:{},卡车纬度:{},距离:{} 距离小于1km", orderGoodsNo, truckNo, child.getStatus(), siteLongitudeX, siteLatitudeY, truckLongitudeX, truckLatitudeY, distance);
// 这里的1km的距离是产品需求写死的,不使用通知配置范围 // 这里的1km的距离是产品需求写死的,不使用通知配置范围
// 未超出货源地+通知触发距离 // 未超出货源地+通知触发距离
// 驶入货源地+通知触发距离范围内了 // 驶入货源地+通知触发距离范围内了
if (Objects.equals(child.getEnterExitSendStatus(), OrderChildEnum.EnterExitSendStatus.DRIVE_OUT.getCode())) { if (Objects.equals(child.getEnterExitSendStatus(), OrderChildEnum.EnterExitSendStatus.DRIVE_OUT.getCode())
|| Objects.equals(child.getEnterExitSendStatus(), OrderChildEnum.EnterExitSendStatus.INIT.getCode())
) {
//驶入货源地x公里范围了,且通知状态为已通知 //驶入货源地x公里范围了,且通知状态为已通知
// 修改 通知状态 为未通知 // 修改 通知状态 为未通知
child.setExitNoticeStatus(OrderChildEnum.ExitNoticeStatus.NOT_NOTIFIED.getCode()); child.setExitNoticeStatus(OrderChildEnum.ExitNoticeStatus.NOT_NOTIFIED.getCode());
......
...@@ -505,7 +505,6 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -505,7 +505,6 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
OrderGoodsEditParams orderGoodsParams = param.getOrderGoodsParams(); OrderGoodsEditParams orderGoodsParams = param.getOrderGoodsParams();
OrderGoods oldOrderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsParams.getOrderGoodsNo()).get(); OrderGoods oldOrderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsParams.getOrderGoodsNo()).get();
//FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(param.getOrderNo());
if (orderGoodsParams.getExtractWeight().compareTo(oldOrderGoods.getAlreadyTransportWeight()) < 0) { if (orderGoodsParams.getExtractWeight().compareTo(oldOrderGoods.getAlreadyTransportWeight()) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单提取吨数不能小于货单已拉运吨数"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单提取吨数不能小于货单已拉运吨数");
} }
...@@ -513,27 +512,25 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -513,27 +512,25 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
//考虑到借吨、恢复吨数的货单,逻辑判断实际的提取吨数 //考虑到借吨、恢复吨数的货单,逻辑判断实际的提取吨数
BigDecimal oldResidueTransportWeight = this.calcOrderGoodsResidueWeight BigDecimal oldResidueTransportWeight = this.calcOrderGoodsResidueWeight
(oldOrderGoods.getExtractWeight(),oldOrderGoods.getAlreadyTransportWeight()); (oldOrderGoods.getExtractWeight(),oldOrderGoods.getAlreadyTransportWeight());
BigDecimal realExtractWeight = oldResidueTransportWeight.compareTo(BigDecimal.ZERO) == 0?
oldOrderGoods.getAlreadyTransportWeight():oldOrderGoods.getAlreadyTransportWeight().add(oldResidueTransportWeight);
oldOrderGoods.setExtractWeight(realExtractWeight);
//本次提取增加或者减少的吨数 = 本次提取的吨数 - 货单原实际提取吨数
BigDecimal changeWeight = orderGoodsParams.getExtractWeight().subtract(realExtractWeight);
BigDecimal residueTransportWeight = this.calcOrderGoodsResidueWeight OrderExtractWeightVO orderCanExtractWeight = orderWeightService.getOrderCanExtractWeight(param.getOrderNo());
(oldOrderGoods.getExtractWeight(),oldOrderGoods.getAlreadyTransportWeight());
BigDecimal canExtractWeight = orderCanExtractWeight.getCanExtractWeight();
BigDecimal changeWeight = orderGoodsParams.getExtractWeight().subtract(oldOrderGoods.getExtractWeight());
//当计算出的订单可提取量为负数时,说明订单下调吨数,货单超过订单量,所以货单编辑吨数的时候只能进行下调操作
if(canExtractWeight.compareTo(BigDecimal.ZERO) < 0 && changeWeight.compareTo(BigDecimal.ZERO) > 0){
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总量已超吨,只能做吨数下调操作");
if (changeWeight.compareTo(BigDecimal.ZERO) > 0) {
orderGoodsParams.setResidueTransportWeight(residueTransportWeight.add(changeWeight));
}else if (changeWeight.compareTo(BigDecimal.ZERO) < 0 ){
orderGoodsParams.setResidueTransportWeight(orderGoodsParams.getExtractWeight().subtract(oldOrderGoods.getAlreadyTransportWeight()));
} else {
//当编辑吨数等于0 的时候,不进行拦截
orderGoodsParams.setResidueTransportWeight(residueTransportWeight);
} }
BigDecimal realExtractWeight = oldResidueTransportWeight.compareTo(BigDecimal.ZERO) <= 0?
oldOrderGoods.getAlreadyTransportWeight():oldOrderGoods.getExtractWeight();
oldOrderGoods.setExtractWeight(realExtractWeight);
BigDecimal orderResidueWeight = orderWeightService.getOrderResidueWeight(param.getOrderNo()); BigDecimal orderResidueWeight = orderWeightService.getOrderResidueWeight(param.getOrderNo());
if (orderResidueWeight.compareTo(orderGoodsParams.getExtractWeight().subtract(oldOrderGoods.getExtractWeight())) < 0) { if (orderResidueWeight.compareTo(changeWeight) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单提取吨数已超订单可提取吨数"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单提取吨数已超订单可提取吨数");
} }
......
...@@ -182,6 +182,7 @@ public class OrderChildSqlProvider { ...@@ -182,6 +182,7 @@ public class OrderChildSqlProvider {
} }
public String findArtificialCancelOrder(@Param("param") ArtificialCancelOrderQueryParam param) { public String findArtificialCancelOrder(@Param("param") ArtificialCancelOrderQueryParam param) {
//todo jiangwujie 改成 new SQL()形式
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT child_no, goods_name, freight_price, order_no, "); sql.append("SELECT child_no, goods_name, freight_price, order_no, ");
sql.append("send_address, receive_address, "); sql.append("send_address, receive_address, ");
...@@ -201,6 +202,7 @@ public class OrderChildSqlProvider { ...@@ -201,6 +202,7 @@ public class OrderChildSqlProvider {
if (StringUtils.isNotBlank(param.getTruckNo())) { if (StringUtils.isNotBlank(param.getTruckNo())) {
conditions.add("truck_no = #{param.truckNo}"); conditions.add("truck_no = #{param.truckNo}");
} }
//todo :jiangwujie 支付状态 可以忽略 ,还是使用<= >=
List<Integer> statuses = Arrays.asList( List<Integer> statuses = Arrays.asList(
OrderChildEnum.Status.CREATED.getCode(), OrderChildEnum.Status.CREATED.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.GO_TO_SEND.getCode(),
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论