提交 84f56c02 authored 作者: huyufan's avatar huyufan

接单判断

上级 330547c9
package com.clx.performance.param.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildCheckParam extends PositionParam {
@ApiModelProperty(value = "货单编号", example = "100000000")
@NotBlank(message = "货单编号不能为空")
private String orderGoodsNo;
@ApiModelProperty(value = "车辆id", example = "1")
@NotNull(message = "车辆id空")
private Integer truckId;
@ApiModelProperty(value = "车牌号", example = "1")
@NotNull(message = "车牌号不能为空")
private String truckNo;
@ApiModelProperty(value = "司机用户编号", example = "1")
@NotNull(message = "司机用户编号空")
private Long driverUserNo;
@ApiModelProperty("纬度")
private BigDecimal latitude;
@ApiModelProperty("经度")
private BigDecimal longitude;
@ApiModelProperty("可卸车时间段开始")
private String unloadBeginTime;
@ApiModelProperty("可卸车时间段结束")
private String unloadEndTime;
}
...@@ -205,5 +205,10 @@ public class OrderChildVO { ...@@ -205,5 +205,10 @@ public class OrderChildVO {
@MoneyOutConvert @MoneyOutConvert
private BigDecimal lossAmount; private BigDecimal lossAmount;
@ApiModelProperty("可卸车时间段开始")
private String unloadBeginTime;
@ApiModelProperty("可卸车时间段结束")
private String unloadEndTime;
} }
\ No newline at end of file
...@@ -132,4 +132,10 @@ public class OrderGoodsVO { ...@@ -132,4 +132,10 @@ public class OrderGoodsVO {
@ApiModelProperty("用车方式 1:平台车辆配货 2:自有车辆配货") @ApiModelProperty("用车方式 1:平台车辆配货 2:自有车辆配货")
private Integer vehicleUsage; private Integer vehicleUsage;
@ApiModelProperty("可卸车时间段开始")
private String unloadBeginTime;
@ApiModelProperty("可卸车时间段结束")
private String unloadEndTime;
} }
\ No newline at end of file
...@@ -32,6 +32,13 @@ public class AppDriverOrderChildController { ...@@ -32,6 +32,13 @@ public class AppDriverOrderChildController {
private final OrderChildService orderChildService; private final OrderChildService orderChildService;
@ApiOperation(value = "接单判断", notes = "<br>By:胡宇帆")
@PostMapping("/getOrderChildCheck")
public Result<String> getOrderChildCheck(@RequestBody @Validated OrderChildCheckParam param) {
return Result.ok(orderChildService.getOrderChildCheck(param));
}
@ApiOperation(value = "接单", notes = "<br>By:艾庆国") @ApiOperation(value = "接单", notes = "<br>By:艾庆国")
@PostMapping("/saveOrderChild") @PostMapping("/saveOrderChild")
public Result<SaveOrderChildVO> saveOrderChild(@RequestBody @Validated OrderChildSaveParam param) { public Result<SaveOrderChildVO> saveOrderChild(@RequestBody @Validated OrderChildSaveParam param) {
......
...@@ -38,5 +38,91 @@ public class TruckLocationDTO { ...@@ -38,5 +38,91 @@ public class TruckLocationDTO {
} }
public String getTruckNo() {
return truckNo;
}
public void setTruckNo(String truckNo) {
this.truckNo = truckNo;
}
public BigDecimal getAngle() {
return angle;
}
public void setAngle(BigDecimal angle) {
this.angle = angle;
}
public BigDecimal getSpeed() {
return speed;
}
public void setSpeed(BigDecimal speed) {
this.speed = speed;
}
public BigDecimal[] getLocation() {
return location;
}
public void setLocation(BigDecimal[] location) {
this.location = location;
}
public String getGpsTime() {
return gpsTime;
}
public void setGpsTime(String gpsTime) {
this.gpsTime = gpsTime;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getModifiedTime() {
return modifiedTime;
}
public void setModifiedTime(String modifiedTime) {
this.modifiedTime = modifiedTime;
}
} }
...@@ -94,4 +94,6 @@ public interface OrderChildService { ...@@ -94,4 +94,6 @@ public interface OrderChildService {
IPage<OwnerOrderChildVO> pageOwnerOrderChildList(PageOwnerOrderChildListParam param); IPage<OwnerOrderChildVO> pageOwnerOrderChildList(PageOwnerOrderChildListParam param);
OrderChildVO getOwnerOrderChildInfo(String childNo); OrderChildVO getOwnerOrderChildInfo(String childNo);
String getOrderChildCheck(OrderChildCheckParam param);
} }
package com.clx.performance.service.impl; package com.clx.performance.service.impl;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.enums.OrderEnum; import com.clx.order.enums.OrderEnum;
...@@ -7,6 +8,7 @@ import com.clx.order.enums.VehicleUsageEnum; ...@@ -7,6 +8,7 @@ import com.clx.order.enums.VehicleUsageEnum;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignAddressVO; import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.order.vo.feign.FeignOrderInfoVO; import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.component.GoodsOrderTruckRecordComponent; import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.component.OrderChildLoanComponent; import com.clx.performance.component.OrderChildLoanComponent;
import com.clx.performance.constant.RedisConstants; import com.clx.performance.constant.RedisConstants;
...@@ -17,6 +19,7 @@ import com.clx.performance.dao.settle.SettlementOwnerDetailDao; ...@@ -17,6 +19,7 @@ import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.OrderChildExpectDTO; import com.clx.performance.dto.OrderChildExpectDTO;
import com.clx.performance.dto.gd.GdRouteDTO; import com.clx.performance.dto.gd.GdRouteDTO;
import com.clx.performance.dto.payment.WalletResidueCardDTO; import com.clx.performance.dto.payment.WalletResidueCardDTO;
import com.clx.performance.dto.zjxl.TruckLocationDTO;
import com.clx.performance.dto.zjxl.TruckTraceDTO; import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.enums.*; import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.*; import com.clx.performance.extranal.user.*;
...@@ -69,6 +72,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -69,6 +72,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -1353,9 +1357,10 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1353,9 +1357,10 @@ public class OrderChildServiceImpl implements OrderChildService {
public OrderChildVO getOrderChildInfo(String childNo) { public OrderChildVO getOrderChildInfo(String childNo) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow( OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(
PerformanceResultEnum.ORDER_CHILD_NO_FOUND); PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderChild.getOrderNo());
if (!Objects.equals(orderChild.getDriverUserNo(), userNo) && if (!Objects.equals(orderChild.getDriverUserNo(), userNo) &&
!Objects.equals(orderChild.getTruckOwnUserNo(), userNo)) { !Objects.equals(orderChild.getTruckOwnUserNo(), userNo)) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
...@@ -1396,7 +1401,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1396,7 +1401,8 @@ public class OrderChildServiceImpl implements OrderChildService {
//亏吨扣款 //亏吨扣款
result.setLossAmount(calcLossAmount(result.getLossWeight(),orderChild.getLossPrice())); result.setLossAmount(calcLossAmount(result.getLossWeight(),orderChild.getLossPrice()));
result.setUnloadBeginTime(orderInfoFeign.getUnloadBeginTime());
result.setUnloadEndTime(orderInfoFeign.getUnloadEndTime());
//查询结算信息 //查询结算信息
Optional<SettlementOwnerDetail> optional = settlementOwnerDetailDao.getByChildNo(childNo); Optional<SettlementOwnerDetail> optional = settlementOwnerDetailDao.getByChildNo(childNo);
...@@ -1461,6 +1467,53 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1461,6 +1467,53 @@ public class OrderChildServiceImpl implements OrderChildService {
return result; return result;
} }
@Override
public String getOrderChildCheck(OrderChildCheckParam param) {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(param.getOrderGoodsNo()).get();
BigDecimal sendLatitude = orderGoods.getSendLatitude();
BigDecimal sendLongitude = orderGoods.getSendLongitude();
BigDecimal longitude = param.getLongitude();
BigDecimal latitude = param.getLatitude();
TruckLocationDTO truckLocationDTO = zjxlGpsService.getTruckLastLocation(param.getTruckNo());
//如果中交兴路获取到位置信息,则使用中交,否则用APP传的位置信息
if (truckLocationDTO != null) {
BigDecimal[] location = truckLocationDTO.getLocation();
longitude = location[0];
latitude = location[1];
log.info("当前中交兴路获取司机车牌:{},相关位置信息:{}",param.getTruckNo(), JSONUtil.parse(truckLocationDTO));
}
List<GdRouteDTO> route = gdService.getRoute(longitude, latitude, sendLongitude, sendLatitude);
if (CollectionUtils.isNotEmpty(route)) {
GdRouteDTO gdRouteDTO = route.get(0);
Integer duration = gdRouteDTO.getDuration();
//预计到达时间
LocalDateTime localDateTime = LocalDateTime.now().plusSeconds(duration);
LocalDate localDate = localDateTime.toLocalDate();
String begin = localDate + param.getUnloadBeginTime();
String end = localDate + param.getUnloadEndTime();
//可以装货时间
LocalDateTime beginLocalDateTime = DateUtils.parseDateTime(begin).get();
LocalDateTime endLocalDateTime = DateUtils.parseDateTime(end).get();
if (localDateTime.isAfter(beginLocalDateTime) && localDateTime.isBefore(endLocalDateTime)) {
log.info("不用弹");
return "不用弹";
} else {
log.info("需要弹");
return "需要弹";
}
}
return "不用弹,高德数据为空";
}
//计算亏吨吨数 //计算亏吨吨数
private BigDecimal calcLossWeight(OrderChild orderChild){ private BigDecimal calcLossWeight(OrderChild orderChild){
if (Objects.nonNull(orderChild.getUnloadNet())){ if (Objects.nonNull(orderChild.getUnloadNet())){
......
...@@ -137,6 +137,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -137,6 +137,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
orderGoodsVO.setReveiveAddressAll(orderInfoFeign.getReveiveAddressAll()); orderGoodsVO.setReveiveAddressAll(orderInfoFeign.getReveiveAddressAll());
orderGoodsVO.setSendAddressAll(orderInfoFeign.getSendAddressAll()); orderGoodsVO.setSendAddressAll(orderInfoFeign.getSendAddressAll());
orderGoodsVO.setUnloadBeginTime(orderInfoFeign.getUnloadBeginTime());
orderGoodsVO.setUnloadEndTime(orderInfoFeign.getUnloadEndTime());
orderGoodsVO.setResidueTransportWeight(BigDecimal.ZERO.compareTo(orderGoodsVO.getResidueTransportWeight()) > 0 ? BigDecimal.ZERO : orderGoodsVO.getResidueTransportWeight()); orderGoodsVO.setResidueTransportWeight(BigDecimal.ZERO.compareTo(orderGoodsVO.getResidueTransportWeight()) > 0 ? BigDecimal.ZERO : orderGoodsVO.getResidueTransportWeight());
return orderGoodsVO; return orderGoodsVO;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论