订单查询修改

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.IWorkerCertificationService;
import com.ghy.worker.service.WorkerService; import com.ghy.worker.service.WorkerService;
import com.huifu.adapay.core.exception.BaseAdaPayException; 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.exception.ExceptionUtils;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -554,15 +554,34 @@ public class OrderController extends BaseController {
// 查询主单 // 查询主单
OrderMaster orderMasterReq = new OrderMaster(); OrderMaster orderMasterReq = new OrderMaster();
BeanUtils.copyProperties(orderListRequest, orderMasterReq); BeanUtils.copyProperties(orderListRequest, orderMasterReq);
List<OrderListResponse> masterList = this.getMasterList(orderMasterReq);
// 超时查询需要排除同个师傅的主单子单同时出现 // 超时查询需要排除同个师傅的主单子单同时出现
if (orderListRequest.getIsOverTime() != null && orderListRequest.getIsOverTime()) { 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 @Override
public int compare(OrderListResponse o1, OrderListResponse o2) { public int compare(OrderListResponse o1, OrderListResponse o2) {
return o1.getExpectTimeStart().compareTo(o2.getExpectTimeStart()); return o1.getExpectTimeStart().compareTo(o2.getExpectTimeStart());
@ -589,13 +608,29 @@ public class OrderController extends BaseController {
// 查询主单 // 查询主单
OrderMaster orderMasterReq = new OrderMaster(); OrderMaster orderMasterReq = new OrderMaster();
BeanUtils.copyProperties(orderListRequest, orderMasterReq); BeanUtils.copyProperties(orderListRequest, orderMasterReq);
List<OrderListResponse> masterList = this.getMasterAfterList(orderMasterReq);
// 需要排除同个师傅的主单子单同时出现 // 需要排除同个师傅的主单子单同时出现
List<Long> exceptWorkerIds = detailList.stream().map(OrderListResponse::getWorkerId).collect(Collectors.toList()); List<OrderListResponse> filteredMasterList = new ArrayList<OrderListResponse>();
orderMasterReq.setExceptWorkerIds(exceptWorkerIds); for (OrderListResponse master: masterList) {
orderListResponses.addAll(this.getMasterAfterList(orderMasterReq)); 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 @Override
public int compare(OrderListResponse o1, OrderListResponse o2) { public int compare(OrderListResponse o1, OrderListResponse o2) {
return o1.getExpectTimeStart().compareTo(o2.getExpectTimeStart()); return o1.getExpectTimeStart().compareTo(o2.getExpectTimeStart());

View File

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

View File

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

View File

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