|
@@ -105,6 +105,45 @@ public class GatekeeperOrderService {
|
|
|
if (param.getStatus() == null) {
|
|
if (param.getStatus() == null) {
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "状态不能为空!");
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "状态不能为空!");
|
|
|
}
|
|
}
|
|
|
|
|
+ // 正常排序
|
|
|
|
|
+ if (!Objects.equals(param.getStatus(), 4)) {
|
|
|
|
|
+ return pageQueryDbSort(param);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ // 内存排序: 特殊处理
|
|
|
|
|
+ return pageQueryWithMemorySort(param);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 数据库层面排序 + 分页
|
|
|
|
|
+ */
|
|
|
|
|
+ private PageDataResult<GatekeeperOrderResp> pageQueryDbSort(GatekeeperOrderQueryParam param) {
|
|
|
|
|
+ // 构建查询条件
|
|
|
|
|
+ LambdaQueryWrapper<KwtGatekeeperWaybillOrder> wrapper = buildAndExecuteQuery(param);
|
|
|
|
|
+ // 数据库层面排序
|
|
|
|
|
+ sort(param, wrapper);
|
|
|
|
|
+
|
|
|
|
|
+ // 数据库分页查询
|
|
|
|
|
+ Page<KwtGatekeeperWaybillOrder> pageByStatus = gatekeeperWaybillOrderRepository.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
|
|
|
|
|
+ List<KwtGatekeeperWaybillOrder> records = pageByStatus.getRecords();
|
|
|
|
|
+ if (CollectionUtils.isEmpty(records)) {
|
|
|
|
|
+ log.info("当前无运单订单信息");
|
|
|
|
|
+ return PageDataResult.empty(param.getPageNum(), param.getPageSize());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 转换为响应对象
|
|
|
|
|
+ List<GatekeeperOrderResp> gatekeeperOrderPageResult = getGatekeeperOrderPageResult(records);
|
|
|
|
|
+
|
|
|
|
|
+ // 处理异常车辆数据(如果需要)
|
|
|
|
|
+ gatekeeperOrderPageResult = filterGatekeeperOrderResp(param, gatekeeperOrderPageResult);
|
|
|
|
|
+
|
|
|
|
|
+ return PageDataResult.success(param.getPageNum(), param.getPageSize(), pageByStatus.getTotal(), gatekeeperOrderPageResult);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 内存排序 + 内存分页
|
|
|
|
|
+ */
|
|
|
|
|
+ private PageDataResult<GatekeeperOrderResp> pageQueryWithMemorySort(GatekeeperOrderQueryParam param) {
|
|
|
//构建查询条件
|
|
//构建查询条件
|
|
|
LambdaQueryWrapper<KwtGatekeeperWaybillOrder> wrapper = buildAndExecuteQuery(param);
|
|
LambdaQueryWrapper<KwtGatekeeperWaybillOrder> wrapper = buildAndExecuteQuery(param);
|
|
|
|
|
|
|
@@ -115,14 +154,17 @@ public class GatekeeperOrderService {
|
|
|
return PageDataResult.empty(param.getPageNum(), param.getPageSize());
|
|
return PageDataResult.empty(param.getPageNum(), param.getPageSize());
|
|
|
}
|
|
}
|
|
|
List<GatekeeperOrderResp> gatekeeperOrderPageResult = getGatekeeperOrderPageResult(records);
|
|
List<GatekeeperOrderResp> gatekeeperOrderPageResult = getGatekeeperOrderPageResult(records);
|
|
|
|
|
+
|
|
|
//处理异常车辆数据
|
|
//处理异常车辆数据
|
|
|
gatekeeperOrderPageResult = filterGatekeeperOrderResp(param, gatekeeperOrderPageResult);
|
|
gatekeeperOrderPageResult = filterGatekeeperOrderResp(param, gatekeeperOrderPageResult);
|
|
|
|
|
|
|
|
//排序
|
|
//排序
|
|
|
- sort(param, gatekeeperOrderPageResult);
|
|
|
|
|
|
|
+ sort2(param, gatekeeperOrderPageResult);
|
|
|
|
|
+
|
|
|
List<List<GatekeeperOrderResp>> pageList = Lists.partition(gatekeeperOrderPageResult, param.getPageSize());
|
|
List<List<GatekeeperOrderResp>> pageList = Lists.partition(gatekeeperOrderPageResult, param.getPageSize());
|
|
|
List<GatekeeperOrderResp> walletPageList = pageList.size() >= param.getPageNum() ?
|
|
List<GatekeeperOrderResp> walletPageList = pageList.size() >= param.getPageNum() ?
|
|
|
pageList.get(param.getPageNum() - 1) : Collections.emptyList();
|
|
pageList.get(param.getPageNum() - 1) : Collections.emptyList();
|
|
|
|
|
+
|
|
|
return PageDataResult.success(param.getPageNum(), param.getPageSize(), (long) walletPageList.size(), gatekeeperOrderPageResult);
|
|
return PageDataResult.success(param.getPageNum(), param.getPageSize(), (long) walletPageList.size(), gatekeeperOrderPageResult);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -524,45 +566,49 @@ public class GatekeeperOrderService {
|
|
|
/**
|
|
/**
|
|
|
* 排序
|
|
* 排序
|
|
|
* @param param
|
|
* @param param
|
|
|
- * @param gatekeeperOrderPageResult
|
|
|
|
|
|
|
+ * @param wrapper
|
|
|
*/
|
|
*/
|
|
|
- private void sort(GatekeeperOrderQueryParam param, List<GatekeeperOrderResp> gatekeeperOrderPageResult) {
|
|
|
|
|
- log.info("门卫订单拍寻,param:{}, order:{}", JSON.toJSONString(param), JSON.toJSONString(gatekeeperOrderPageResult));
|
|
|
|
|
- if (CollectionUtils.isEmpty(gatekeeperOrderPageResult)) {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ private void sort(GatekeeperOrderQueryParam param, LambdaQueryWrapper<KwtGatekeeperWaybillOrder> wrapper) {
|
|
|
|
|
+ log.info("门卫订单排序,param:{}", JSON.toJSONString(param), JSON.toJSONString(param));
|
|
|
// 根据状态进行排序
|
|
// 根据状态进行排序
|
|
|
switch (param.getStatus()) {
|
|
switch (param.getStatus()) {
|
|
|
case 1:
|
|
case 1:
|
|
|
// 待进场: 运输司机接单时间升序
|
|
// 待进场: 运输司机接单时间升序
|
|
|
- gatekeeperOrderPageResult.sort(Comparator.comparing(GatekeeperOrderResp::getWaybillAcceptTime));
|
|
|
|
|
|
|
+ wrapper.orderByAsc(KwtGatekeeperWaybillOrder::getWaybillAcceptTime);
|
|
|
break;
|
|
break;
|
|
|
case 2:
|
|
case 2:
|
|
|
- // 待离场:先按照待离场展示,后按照空载待离场和已放行未离场展示,在按照状态变更时间升序
|
|
|
|
|
- gatekeeperOrderPageResult.sort(
|
|
|
|
|
- Comparator.comparing((GatekeeperOrderResp order) -> {
|
|
|
|
|
- // 状态为空时,也排到后面
|
|
|
|
|
- return order.getStatus() == null || order.getStatus() != 10;
|
|
|
|
|
- })
|
|
|
|
|
- // 时间为空的排最后
|
|
|
|
|
- .thenComparing(
|
|
|
|
|
- GatekeeperOrderResp::getUpdateTime,
|
|
|
|
|
- Comparator.nullsLast(Comparator.naturalOrder())
|
|
|
|
|
- )
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ //待离场:未放行数据按照司机点击离场数据升序
|
|
|
|
|
+ wrapper.orderByAsc(KwtGatekeeperWaybillOrder::getUpdateTime);
|
|
|
break;
|
|
break;
|
|
|
case 3:
|
|
case 3:
|
|
|
// 场内车辆: 车辆进场时间升序
|
|
// 场内车辆: 车辆进场时间升序
|
|
|
- gatekeeperOrderPageResult.sort(Comparator.comparing(GatekeeperOrderResp::getIntoTime));
|
|
|
|
|
|
|
+ wrapper.orderByAsc(KwtGatekeeperWaybillOrder::getIntoTime);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 5:
|
|
|
|
|
+ // 出入记录: 离场时间倒序
|
|
|
|
|
+ wrapper.orderByDesc(KwtGatekeeperWaybillOrder::getLeaveTime);
|
|
|
|
|
+ break;
|
|
|
|
|
+ default:
|
|
|
break;
|
|
break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 内存排序
|
|
|
|
|
+ * @param param
|
|
|
|
|
+ * @param gatekeeperOrderPageResult
|
|
|
|
|
+ */
|
|
|
|
|
+ private void sort2(GatekeeperOrderQueryParam param, List<GatekeeperOrderResp> gatekeeperOrderPageResult) {
|
|
|
|
|
+ log.info("门卫订单内存排序,param:{}, order:{}", JSON.toJSONString(param), JSON.toJSONString(gatekeeperOrderPageResult));
|
|
|
|
|
+ if (CollectionUtils.isEmpty(gatekeeperOrderPageResult)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 根据状态进行排序
|
|
|
|
|
+ switch (param.getStatus()) {
|
|
|
case 4:
|
|
case 4:
|
|
|
// 异常车辆: 场内耗时倒序
|
|
// 异常车辆: 场内耗时倒序
|
|
|
gatekeeperOrderPageResult.sort(Comparator.comparing(GatekeeperOrderResp::getDurationTime).reversed());
|
|
gatekeeperOrderPageResult.sort(Comparator.comparing(GatekeeperOrderResp::getDurationTime).reversed());
|
|
|
break;
|
|
break;
|
|
|
- case 5:
|
|
|
|
|
- // 出入记录: 离场时间倒序
|
|
|
|
|
- gatekeeperOrderPageResult.sort(Comparator.comparing(GatekeeperOrderResp::getLeaveTime).reversed());
|
|
|
|
|
- break;
|
|
|
|
|
default:
|
|
default:
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|