禅道bug#1640修复,新增 已排订单分页未选择已开料查询 不显示已开料订单数据能力

This commit is contained in:
gaoqr
2026-06-08 11:43:31 +08:00
parent 06e4bc3d78
commit 687774e388
4 changed files with 47 additions and 68 deletions
@@ -112,7 +112,7 @@ public class PlanController {
@PutMapping("/setSort")
@Operation(summary = "设置排单优先级")
@PreAuthorize("@ss.hasPermission('placeorder:priority')")
public CommonResult<Boolean> setSort(@Valid @NotEmpty(message = "参数不能空") @Size(max = 2,message = "最多两条数据") @RequestBody List<SortVO> sortVos) {
public CommonResult<Boolean> setSort(@Valid @NotEmpty(message = "参数不能空") @RequestBody List<SortVO> sortVos) {
planService.setSort(sortVos);
@@ -12,6 +12,7 @@ import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanPlateStatis
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsAreaRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsCountRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateOptimize;
import com.cf.imes.module.executor.controller.admin.plan.vo.SortVO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -159,4 +160,12 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
* @return
*/
List<Long> selectPlanOrderGoodsId(@Param("planId") Long planId, @Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
/**
* 批量更新排单顺序
*
* @param sortVOList
* @return
*/
int batchUpdatePlanSort(@Param("sortList") List<SortVO> sortVOList);
}
@@ -2,6 +2,7 @@ package com.cf.imes.module.executor.service.plan;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldValue;
@@ -386,6 +387,7 @@ public class PlanServiceImpl implements PlanService {
planPageTurning(pageReqVO,planDOPageResult);
}else {
List<Integer> statusList = pageReqVO.getStatus();
QueryWrapperX<PlanDO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX
@@ -395,11 +397,15 @@ public class PlanServiceImpl implements PlanService {
.eqIfPresent(FIELD_OP_ID, pageReqVO.getId())
.eqIfPresent("op.sort", pageReqVO.getSort())
.eqIfPresent("op.type", pageReqVO.getType())
.inIfPresent("op.status", pageReqVO.getStatus())
.inIfPresent("op.status", statusList)
.betweenIfPresent("op.plan_time", pageReqVO.getPlanTime())
.likeIfPresent("op.order_nos", pageReqVO.getOrderNos())
.likeIfPresent(FIELD_CUSTOMER, pageReqVO.getCustomer());
// 如果状态没有显式选择已开料那么不显示已开料
if (CollUtil.isEmpty(statusList) || !statusList.contains(PlanStatusEnum.OPENED.getStatus())) {
queryWrapperX.ne("op.status", PlanStatusEnum.OPENED.getStatus());
}
planDOPageResult = planMapper.selectPlanPageList(page,queryWrapperX);
@@ -895,78 +901,22 @@ public class PlanServiceImpl implements PlanService {
List<Long> planIds = sortVos.stream().map(SortVO::getPlanId).toList();
List<Long> sorts = new ArrayList<>();
for (Long planId : planIds) {
PlanDO planDO = planMapper.selectById(planId);
if(planDO == null){
throw new ServiceException(PLAN_NOT_DATA_EXISTS,planId);
if (planDO == null) {
throw new ServiceException(PLAN_NOT_DATA_EXISTS, planId);
}
sorts.add(planDO.getSort());
}
if(sortVos.size() == 1){
SortVO sortVO = sortVos.get(0);
if(sortVO.getIsOnePlan() != null || sortVO.getIsLastPln() != null){
PlanDO planDO = planMapper.selectById(sortVO.getPlanId());
Long sort = planDO.getSort();
PlanDO plan = new PlanDO();
if(Boolean.TRUE.equals(sortVO.getIsOnePlan())){
plan = planMapper.selectSortOnePlan(sort, getUserOrganId());
}else if(Boolean.TRUE.equals(sortVO.getIsLastPln())){
plan = planMapper.selectLastPlan(sort, getUserOrganId());
}
AssertUtils.notEmpty(plan,PLAN_SORT_DATA_ERROR);
planDO.setSort(plan.getSort());
plan.setSort(sort);
planMapper.updateById(planDO);
planMapper.updateById(plan);
return;
}
planMapper.update(new LambdaUpdateWrapper<PlanDO>()
.eq(PlanDO::getOrganId, getUserOrganId())
.eq(PlanDO::getDeleted,false)
.eq(PlanDO::getId,sortVO.getPlanId())
.set(PlanDO::getIsTop,sortVO.getIsTopUp()));
return;
}
// 500条更新一次排单顺序
List<List<SortVO>> batches = ListUtil.partition(sortVos, 500);
ArrayList<PlanDO> planDOS = new ArrayList<>();
sortVos.forEach(e -> {
planDOS.add(PlanDO.builder()
.id(e.getPlanId())
.sort(sorts.stream().filter(f -> !f.equals(e.getSort())).findFirst().orElse(e.getSort()))
.build());
});
planMapper.updateBatch(planDOS);
for (List<SortVO> batch : batches) {
planMapper.batchUpdatePlanSort(batch);
}
}
@@ -20,9 +20,7 @@
${ew.customSqlSegment}
ORDER BY op.is_top DESC,
CASE WHEN op.is_top = true THEN op.update_time END DESC,
CASE WHEN op.is_top = false THEN op.sort END ;
ORDER BY op.sort
</select>
@@ -321,4 +319,26 @@
</foreach>
</select>
<update id="batchUpdatePlanSort">
UPDATE order_plan
SET sort =
CASE id
<foreach collection="sortList" item="item">
WHEN #{item.planId} THEN #{item.sort}
</foreach>
END
WHERE deleted = false
AND status != 3
AND id IN
<foreach collection="sortList"
item="item"
open="("
separator=","
close=")">
#{item.planId}
</foreach>
</update>
</mapper>