订单查询修改

This commit is contained in:
donqi 2022-12-11 21:38:01 +08:00
parent ca514349d2
commit 1e4887e367
4 changed files with 51 additions and 16 deletions

View File

@ -44,7 +44,7 @@ import com.ghy.worker.domain.WorkerCertification;
import com.ghy.worker.service.IWorkerCertificationService;
import com.ghy.worker.service.WorkerService;
import com.huifu.adapay.core.exception.BaseAdaPayException;
import nonapi.io.github.classgraph.utils.CollectionUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.BeanUtils;
@ -554,15 +554,34 @@ public class OrderController extends BaseController {
// 查询主单
OrderMaster orderMasterReq = new OrderMaster();
BeanUtils.copyProperties(orderListRequest, orderMasterReq);
List<OrderListResponse> masterList = this.getMasterList(orderMasterReq);
// 超时查询需要排除同个师傅的主单子单同时出现
if (orderListRequest.getIsOverTime() != null && orderListRequest.getIsOverTime()) {
List<Long> exceptWorkerIds = detailList.stream().map(OrderListResponse::getWorkerId).collect(Collectors.toList());
orderMasterReq.setExceptWorkerIds(exceptWorkerIds);
// 需要排除同个师傅的主单子单同时出现
List<OrderListResponse> filteredMasterList = new ArrayList<OrderListResponse>();
for (OrderListResponse master: masterList) {
boolean isKeep = false;
// 查询该主单下所有售后中的子单
OrderDetail detailAfterListOfMasterQry = new OrderDetail();
detailAfterListOfMasterQry.setOrderMasterCode(master.getOrderMasterCode());
List<OrderListResponse> detailListOfMasters = this.getDetailList(detailAfterListOfMasterQry);
for (OrderListResponse detailListOfMaster: detailListOfMasters) {
if (!detailListOfMaster.getWorkerId().equals(orderListRequest.getWorkerId())) {
isKeep = true;
break;
}
}
if (isKeep) {
filteredMasterList.add(master);
}
}
orderListResponses.addAll(filteredMasterList);
} else {
orderListResponses.addAll(masterList);
}
orderListResponses.addAll(this.getMasterList(orderMasterReq));
// 根据预约时间倒序排列
CollectionUtils.sortIfNotEmpty(orderListResponses, new Comparator<OrderListResponse>() {
Collections.sort(orderListResponses, new Comparator<OrderListResponse>() {
@Override
public int compare(OrderListResponse o1, OrderListResponse o2) {
return o1.getExpectTimeStart().compareTo(o2.getExpectTimeStart());
@ -589,13 +608,29 @@ public class OrderController extends BaseController {
// 查询主单
OrderMaster orderMasterReq = new OrderMaster();
BeanUtils.copyProperties(orderListRequest, orderMasterReq);
List<OrderListResponse> masterList = this.getMasterAfterList(orderMasterReq);
// 需要排除同个师傅的主单子单同时出现
List<Long> exceptWorkerIds = detailList.stream().map(OrderListResponse::getWorkerId).collect(Collectors.toList());
orderMasterReq.setExceptWorkerIds(exceptWorkerIds);
orderListResponses.addAll(this.getMasterAfterList(orderMasterReq));
List<OrderListResponse> filteredMasterList = new ArrayList<OrderListResponse>();
for (OrderListResponse master: masterList) {
boolean isKeep = false;
// 查询该主单下所有售后中的子单
OrderDetail detailAfterListOfMasterQry = new OrderDetail();
detailAfterListOfMasterQry.setOrderMasterCode(master.getOrderMasterCode());
List<OrderListResponse> detailAfterListOfMasters = this.getDetailAfterList(detailAfterListOfMasterQry);
for (OrderListResponse detailAfterListOfMaster: detailAfterListOfMasters) {
if (!detailAfterListOfMaster.getWorkerId().equals(orderListRequest.getWorkerId())) {
isKeep = true;
break;
}
}
if (isKeep) {
filteredMasterList.add(master);
}
}
orderListResponses.addAll(filteredMasterList);
// 根据预约时间倒序排列
CollectionUtils.sortIfNotEmpty(orderListResponses, new Comparator<OrderListResponse>() {
Collections.sort(orderListResponses, new Comparator<OrderListResponse>() {
@Override
public int compare(OrderListResponse o1, OrderListResponse o2) {
return o1.getExpectTimeStart().compareTo(o2.getExpectTimeStart());

View File

@ -98,5 +98,5 @@ public class OrderMaster extends BaseEntity {
private Boolean shelveStatus;
private List<Long> exceptWorkerIds;
private List<Long> exceptOrderMasterIds;
}

View File

@ -94,8 +94,8 @@
<if test="orderStatus != null">
AND od.order_status = #{orderStatus}
</if>
<if test="orderMasterCode != null and orderMasterCode != 0">
AND od.order_detail_code = #{orderMasterCode}
<if test="orderMasterCode != null and orderMasterCode != ''">
AND od.order_master_code = #{orderMasterCode}
</if>
<if test="workerId != null and workerId != 0">
AND od.worker_id = #{workerId}

View File

@ -146,10 +146,10 @@
<if test="hasDispatchedAll != null">
AND om.has_dispatched_all = #{hasDispatchedAll}
</if>
<if test="exceptWorkerIds != null and exceptWorkerIds.size > 0">
AND om.worker_id not in
<foreach collection="exceptWorkerIds" item="workerId" open="(" separator="," close=")">
#{workerId}
<if test="exceptOrderMasterIds != null and exceptOrderMasterIds.size > 0">
AND om.id not in
<foreach collection="exceptOrderMasterIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>