|
|
@@ -9,6 +9,7 @@ import com.sckw.core.common.enums.StringConstant;
|
|
|
import com.sckw.core.exception.BusinessException;
|
|
|
import com.sckw.core.model.enums.CarWaybillEnum;
|
|
|
import com.sckw.core.model.enums.LogisticsOrderEnum;
|
|
|
+import com.sckw.core.model.page.PageResult;
|
|
|
import com.sckw.core.utils.CollectionUtils;
|
|
|
import com.sckw.core.utils.IdWorker;
|
|
|
import com.sckw.core.utils.StringTimeUtil;
|
|
|
@@ -27,9 +28,9 @@ import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.transport.dao.*;
|
|
|
import com.sckw.transport.model.*;
|
|
|
import com.sckw.transport.model.dto.AddOrderDTO;
|
|
|
+import com.sckw.transport.model.dto.OrderCarDTO;
|
|
|
import com.sckw.transport.model.dto.OrderDTO;
|
|
|
import com.sckw.transport.model.dto.OrderFinishDTO;
|
|
|
-import com.sckw.transport.model.vo.CarDataVO;
|
|
|
import com.sckw.transport.model.vo.CarWaybillVO;
|
|
|
import com.sckw.transport.model.vo.OrderFinishVO;
|
|
|
import jakarta.annotation.Resource;
|
|
|
@@ -121,6 +122,160 @@ public class ConsignOrderService {
|
|
|
return httpResult;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 托运订单/承运订单-获取车辆运单-下方数据统计
|
|
|
+ *
|
|
|
+ * @param orderDto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public HttpResult getCarWaybillByOrderCount(OrderDTO orderDto) {
|
|
|
+ HttpResult httpResult = new HttpResult();
|
|
|
+ if (String.valueOf(NumberConstant.ONE).equals(orderDto.getType())) {
|
|
|
+ httpResult = getCarWaybillByOrderByConsignCount(orderDto);
|
|
|
+ } else if (String.valueOf(NumberConstant.TWO).equals(orderDto.getType())) {
|
|
|
+ httpResult = getCarWaybillByOrderByAcceptCarriageCount(orderDto);
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("单据类型错误");
|
|
|
+ }
|
|
|
+ return httpResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 托运订单-车辆运单列表统计
|
|
|
+ *
|
|
|
+ * @param orderDto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private HttpResult getCarWaybillByOrderByConsignCount(OrderDTO orderDto) {
|
|
|
+ KwtLogisticsOrder order = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
|
|
|
+ .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
|
|
|
+ .eq(StringUtils.isNotBlank(orderDto.getOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
|
|
|
+ /**.eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId())*/);
|
|
|
+ if (ObjectUtils.isEmpty(order)) {
|
|
|
+ return HttpResult.ok();
|
|
|
+ }
|
|
|
+ List<KwtWaybillOrder> kwtWaybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
|
|
|
+ .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
|
|
|
+ /**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
|
|
|
+ JSONObject statistics = new JSONObject();
|
|
|
+ //合理损耗
|
|
|
+ BigDecimal loss = order.getLoss();
|
|
|
+ //派车量
|
|
|
+ BigDecimal sendCarWeighNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ //装货量
|
|
|
+ BigDecimal loadAmountNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ //卸货量
|
|
|
+ BigDecimal unloadAmountNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ /**亏吨量/吨->装货量-卸货量
|
|
|
+ 扣亏量/吨->亏吨量-合理损耗*/
|
|
|
+ //亏吨量
|
|
|
+ BigDecimal defectiveWeighNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ //扣亏量/吨
|
|
|
+ BigDecimal deductWeighNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
|
|
|
+ for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
|
|
|
+ CarWaybillVO carWaybillVo = new CarWaybillVO();
|
|
|
+ //扣亏量/吨->亏吨量-合理损耗值(分配量(委托量)*合理损耗)
|
|
|
+ BigDecimal deduct = null;
|
|
|
+ if (kwtWaybillOrder.getDeficitAmount() != null && (kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == NumberConstant.ZERO)) {
|
|
|
+ deduct = kwtWaybillOrder.getDeficitAmount().subtract(order.getLoss() == null ? new BigDecimal(NumberConstant.ZERO) : order.getLoss());
|
|
|
+ }
|
|
|
+ carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
|
|
|
+ /**亏吨量/吨->装货量-卸货量
|
|
|
+ 扣亏量/吨->亏吨量*合理损耗*/
|
|
|
+ carWaybillVo.setDefectiveWeigh(kwtWaybillOrder.getDeficitAmount() == null ? null : String.valueOf(kwtWaybillOrder.getDeficitAmount()));
|
|
|
+ carWaybillVo.setDeduct(kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == 0 ?
|
|
|
+ new BigDecimal(NumberConstant.ZERO) : kwtWaybillOrder.getDeficitAmount().multiply(loss.divide(BigDecimal.valueOf(1000L))));
|
|
|
+ sendCarWeighNumber = sendCarWeighNumber.add(kwtWaybillOrder.getLoadAmount());
|
|
|
+ if (carWaybillVo.getLoadAmount() != null) {
|
|
|
+ loadAmountNumber = loadAmountNumber.add(new BigDecimal(carWaybillVo.getLoadAmount()));
|
|
|
+ }
|
|
|
+ if (carWaybillVo.getUnloadAmount() != null) {
|
|
|
+ unloadAmountNumber = unloadAmountNumber.add(new BigDecimal(carWaybillVo.getUnloadAmount()));
|
|
|
+ }
|
|
|
+ if (carWaybillVo.getDefectiveWeigh() != null) {
|
|
|
+ defectiveWeighNumber = defectiveWeighNumber.add(new BigDecimal(carWaybillVo.getDefectiveWeigh()));
|
|
|
+ }
|
|
|
+ deductWeighNumber = deductWeighNumber.add(carWaybillVo.getDeduct());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ statistics.put("count", kwtWaybillOrders.size());
|
|
|
+ statistics.put("sendCarWeighNumber", sendCarWeighNumber);
|
|
|
+ statistics.put("loadAmountNumber", loadAmountNumber);
|
|
|
+ statistics.put("unloadAmountNumber", unloadAmountNumber);
|
|
|
+ statistics.put("defectiveWeighNumber", defectiveWeighNumber);
|
|
|
+ statistics.put("deductWeighNumber", deductWeighNumber);
|
|
|
+ return HttpResult.ok(statistics);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 承运订单-车辆运单列表-下方统计
|
|
|
+ *
|
|
|
+ * @param orderDto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private HttpResult getCarWaybillByOrderByAcceptCarriageCount(OrderDTO orderDto) {
|
|
|
+ KwtLogisticsOrder order = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
|
|
|
+ .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
|
|
|
+ .eq(StringUtils.isNotBlank(orderDto.getOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
|
|
|
+ /**.eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId())*/);
|
|
|
+ if (ObjectUtils.isEmpty(order)) {
|
|
|
+ return HttpResult.ok();
|
|
|
+ }
|
|
|
+ List<KwtWaybillOrder> kwtWaybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
|
|
|
+ .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
|
|
|
+ /**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
|
|
|
+ JSONObject statistics = new JSONObject();
|
|
|
+ //合理损耗
|
|
|
+ BigDecimal loss = order.getLoss();
|
|
|
+ //派车量
|
|
|
+ BigDecimal sendCarWeighNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ //装货量
|
|
|
+ BigDecimal loadAmountNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ //卸货量
|
|
|
+ BigDecimal unloadAmountNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ /**亏吨量/吨->装货量-卸货量
|
|
|
+ 扣亏量/吨->亏吨量-合理损耗*/
|
|
|
+ //亏吨量
|
|
|
+ BigDecimal defectiveWeighNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ //扣亏量/吨
|
|
|
+ BigDecimal deductWeighNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
|
|
|
+ for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
|
|
|
+ CarWaybillVO carWaybillVo = new CarWaybillVO();
|
|
|
+ //扣亏量/吨->亏吨量-合理损耗值(分配量(委托量)*合理损耗)
|
|
|
+ BigDecimal deduct = null;
|
|
|
+ if (kwtWaybillOrder.getDeficitAmount() != null && (kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == NumberConstant.ZERO)) {
|
|
|
+ deduct = kwtWaybillOrder.getDeficitAmount().subtract(order.getLoss() == null ? new BigDecimal(NumberConstant.ZERO) : order.getLoss());
|
|
|
+ }
|
|
|
+ carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
|
|
|
+ /**亏吨量/吨->装货量-卸货量
|
|
|
+ 扣亏量/吨->亏吨量*合理损耗*/
|
|
|
+ carWaybillVo.setDefectiveWeigh(kwtWaybillOrder.getDeficitAmount() == null ? null : String.valueOf(kwtWaybillOrder.getDeficitAmount()));
|
|
|
+ carWaybillVo.setDeduct(kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == 0 ?
|
|
|
+ new BigDecimal(NumberConstant.ZERO) : kwtWaybillOrder.getDeficitAmount().multiply(loss.divide(BigDecimal.valueOf(1000L))));
|
|
|
+ sendCarWeighNumber = sendCarWeighNumber.add(kwtWaybillOrder.getLoadAmount());
|
|
|
+ if (carWaybillVo.getLoadAmount() != null) {
|
|
|
+ loadAmountNumber = loadAmountNumber.add(new BigDecimal(carWaybillVo.getLoadAmount()));
|
|
|
+ }
|
|
|
+ if (carWaybillVo.getUnloadAmount() != null) {
|
|
|
+ unloadAmountNumber = unloadAmountNumber.add(new BigDecimal(carWaybillVo.getUnloadAmount()));
|
|
|
+ }
|
|
|
+ if (carWaybillVo.getDefectiveWeigh() != null) {
|
|
|
+ defectiveWeighNumber = defectiveWeighNumber.add(new BigDecimal(carWaybillVo.getDefectiveWeigh()));
|
|
|
+ }
|
|
|
+ deductWeighNumber = deductWeighNumber.add(carWaybillVo.getDeduct());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ statistics.put("count", kwtWaybillOrders.size());
|
|
|
+ statistics.put("sendCarWeighNumber", sendCarWeighNumber);
|
|
|
+ statistics.put("loadAmountNumber", loadAmountNumber);
|
|
|
+ statistics.put("unloadAmountNumber", unloadAmountNumber);
|
|
|
+ statistics.put("defectiveWeighNumber", defectiveWeighNumber);
|
|
|
+ statistics.put("deductWeighNumber", deductWeighNumber);
|
|
|
+ return HttpResult.ok(statistics);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 通过订单id+类型 查询承运订单-车辆运单
|
|
|
*
|
|
|
@@ -195,7 +350,7 @@ public class ConsignOrderService {
|
|
|
/**亏吨量/吨->装货量-卸货量
|
|
|
扣亏量/吨->亏吨量-合理损耗*/
|
|
|
carWaybillVo.setDefectiveWeigh(kwtWaybillOrder.getDeficitAmount() == null ? null : String.valueOf(kwtWaybillOrder.getDeficitAmount()));
|
|
|
- carWaybillVo.setDeduct(String.valueOf(deduct));
|
|
|
+ carWaybillVo.setDeduct(deduct);
|
|
|
// carWaybillVo.setAppointor(remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()) == null ?
|
|
|
// String.valueOf(kwtWaybillOrder.getCreateBy()) : remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()).getName());
|
|
|
if (carWaybillVo.getLoadAmount() != null) {
|
|
|
@@ -239,12 +394,8 @@ public class ConsignOrderService {
|
|
|
}
|
|
|
List<KwtWaybillOrder> kwtWaybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
|
|
|
.eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
|
|
|
+ .last("limit" + (orderDto.getPage() - 1) + " , " + orderDto.getPageSize())
|
|
|
/**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
|
|
|
- JSONObject statistics = new JSONObject();
|
|
|
- BigDecimal sendCarWeighNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
- BigDecimal loadAmountNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
- BigDecimal unloadAmountNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
- BigDecimal defectiveWeighNumber = new BigDecimal(NumberConstant.ZERO);
|
|
|
if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
|
|
|
for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
|
|
|
CarWaybillVO carWaybillVo = new CarWaybillVO();
|
|
|
@@ -295,31 +446,14 @@ public class ConsignOrderService {
|
|
|
/**亏吨量/吨->装货量-卸货量
|
|
|
扣亏量/吨->亏吨量-合理损耗*/
|
|
|
carWaybillVo.setDefectiveWeigh(kwtWaybillOrder.getDeficitAmount() == null ? null : String.valueOf(kwtWaybillOrder.getDeficitAmount()));
|
|
|
- carWaybillVo.setDeduct(String.valueOf(deduct));
|
|
|
+ carWaybillVo.setDeduct(deduct);
|
|
|
// carWaybillVo.setAppointor(remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()) == null ?
|
|
|
// String.valueOf(kwtWaybillOrder.getCreateBy()) : remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()).getName());
|
|
|
- sendCarWeighNumber = sendCarWeighNumber.add(kwtWaybillOrder.getLoadAmount());
|
|
|
- if (carWaybillVo.getLoadAmount() != null) {
|
|
|
- loadAmountNumber = loadAmountNumber.add(new BigDecimal(carWaybillVo.getLoadAmount()));
|
|
|
- }
|
|
|
- if (carWaybillVo.getUnloadAmount() != null) {
|
|
|
- unloadAmountNumber = unloadAmountNumber.add(new BigDecimal(carWaybillVo.getUnloadAmount()));
|
|
|
- }
|
|
|
- if (carWaybillVo.getDefectiveWeigh() != null) {
|
|
|
- defectiveWeighNumber = defectiveWeighNumber.add(new BigDecimal(carWaybillVo.getDefectiveWeigh()));
|
|
|
- }
|
|
|
returnList.add(carWaybillVo);
|
|
|
}
|
|
|
}
|
|
|
- statistics.put("count", kwtWaybillOrders.size());
|
|
|
- statistics.put("sendCarWeighNumber", sendCarWeighNumber);
|
|
|
- statistics.put("loadAmountNumber", loadAmountNumber);
|
|
|
- statistics.put("unloadAmountNumber", unloadAmountNumber);
|
|
|
- statistics.put("defectiveWeighNumber", defectiveWeighNumber);
|
|
|
- Map map = new HashMap<>();
|
|
|
- map.put("returnList", returnList);
|
|
|
- map.put("statistics", statistics);
|
|
|
- return HttpResult.ok(map);
|
|
|
+ PageResult result = PageResult.build(orderDto.getPage(), orderDto.getPageSize(), returnList.stream().count(), returnList);
|
|
|
+ return HttpResult.ok(result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -335,27 +469,18 @@ public class ConsignOrderService {
|
|
|
log.error("托运订单获取车辆信息 error id:{},请求参数:{}", orderDto.getId(), JSONObject.toJSONString(orderDto));
|
|
|
HttpResult.error("物流订单不存在");
|
|
|
}
|
|
|
- List<KwtWaybillOrder> waybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
|
|
|
- .eq(KwtWaybillOrder::getLOrderId, orderDto.getId()));
|
|
|
- List<CarDataVO> carDataVOS = new ArrayList<CarDataVO>(NumberConstant.SIXTEEN);
|
|
|
- if (CollectionUtils.isNotEmpty(waybillOrders)) {
|
|
|
- List<String> stringList = waybillOrders.stream().map(KwtWaybillOrder::getTruckNo).collect(Collectors.toList());
|
|
|
+ List<OrderCarDTO> list = kwtWaybillOrderMapper.selectWaybillOrderCarListGroupByTruckNo(orderDto.getId(), orderDto.getPage(), orderDto.getPageSize());
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ List<String> stringList = list.stream().map(OrderCarDTO::getTruckNo).collect(Collectors.toList());
|
|
|
Map<String, RTruckVo> truck = remoteFleetService.findTruck(stringList);
|
|
|
- for (KwtWaybillOrder KwtWaybillOrder : waybillOrders) {
|
|
|
- CarDataVO carDataVo = new CarDataVO();
|
|
|
- carDataVo.setDriverId(String.valueOf(KwtWaybillOrder.getDriverId()));
|
|
|
- carDataVo.setDriverName(KwtWaybillOrder.getDriverName());
|
|
|
- carDataVo.setDriverPhone(KwtWaybillOrder.getDriverPhone());
|
|
|
- carDataVo.setIdCard(KwtWaybillOrder.getDriverIdcard());
|
|
|
- carDataVo.setLoadAmount(truck.get(KwtWaybillOrder.getTruckNo()) == null ?
|
|
|
- null : (truck.get(KwtWaybillOrder.getTruckNo()).getActualWeight() == null ?
|
|
|
- null : (String.valueOf(truck.get(KwtWaybillOrder.getTruckNo()).getActualWeight()))));
|
|
|
- carDataVo.setTruckNo(KwtWaybillOrder.getTruckNo());
|
|
|
- carDataVo.setWOrderNo(KwtWaybillOrder.getWOrderNo());
|
|
|
- carDataVOS.add(carDataVo);
|
|
|
+ for (OrderCarDTO dto : list) {
|
|
|
+ dto.setLoadAmount(truck.get(dto.getTruckNo()) == null ?
|
|
|
+ null : (truck.get(dto.getTruckNo()).getActualWeight() == null ?
|
|
|
+ null : (String.valueOf(truck.get(dto.getTruckNo()).getActualWeight()))));
|
|
|
}
|
|
|
}
|
|
|
- return HttpResult.ok(carDataVOS);
|
|
|
+ PageResult build = PageResult.build(orderDto.getPage(), orderDto.getPageSize(), (long) list.size(), list);
|
|
|
+ return HttpResult.ok(build);
|
|
|
}
|
|
|
|
|
|
/**
|