禅道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") @PutMapping("/setSort")
@Operation(summary = "设置排单优先级") @Operation(summary = "设置排单优先级")
@PreAuthorize("@ss.hasPermission('placeorder:priority')") @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); 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.OrderPlanStatisticsAreaRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsCountRespVO; 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.PlateOptimize;
import com.cf.imes.module.executor.controller.admin.plan.vo.SortVO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -159,4 +160,12 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
* @return * @return
*/ */
List<Long> selectPlanOrderGoodsId(@Param("planId") Long planId, @Param("orderIds") List<Long> orderIds, @Param("organId") Long organId); 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.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldValue; import co.elastic.clients.elasticsearch._types.FieldValue;
@@ -386,6 +387,7 @@ public class PlanServiceImpl implements PlanService {
planPageTurning(pageReqVO,planDOPageResult); planPageTurning(pageReqVO,planDOPageResult);
}else { }else {
List<Integer> statusList = pageReqVO.getStatus();
QueryWrapperX<PlanDO> queryWrapperX = new QueryWrapperX<>(); QueryWrapperX<PlanDO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX queryWrapperX
@@ -395,11 +397,15 @@ public class PlanServiceImpl implements PlanService {
.eqIfPresent(FIELD_OP_ID, pageReqVO.getId()) .eqIfPresent(FIELD_OP_ID, pageReqVO.getId())
.eqIfPresent("op.sort", pageReqVO.getSort()) .eqIfPresent("op.sort", pageReqVO.getSort())
.eqIfPresent("op.type", pageReqVO.getType()) .eqIfPresent("op.type", pageReqVO.getType())
.inIfPresent("op.status", pageReqVO.getStatus()) .inIfPresent("op.status", statusList)
.betweenIfPresent("op.plan_time", pageReqVO.getPlanTime()) .betweenIfPresent("op.plan_time", pageReqVO.getPlanTime())
.likeIfPresent("op.order_nos", pageReqVO.getOrderNos()) .likeIfPresent("op.order_nos", pageReqVO.getOrderNos())
.likeIfPresent(FIELD_CUSTOMER, pageReqVO.getCustomer()); .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); planDOPageResult = planMapper.selectPlanPageList(page,queryWrapperX);
@@ -895,8 +901,6 @@ public class PlanServiceImpl implements PlanService {
List<Long> planIds = sortVos.stream().map(SortVO::getPlanId).toList(); List<Long> planIds = sortVos.stream().map(SortVO::getPlanId).toList();
List<Long> sorts = new ArrayList<>();
for (Long planId : planIds) { for (Long planId : planIds) {
PlanDO planDO = planMapper.selectById(planId); PlanDO planDO = planMapper.selectById(planId);
@@ -905,68 +909,14 @@ public class PlanServiceImpl implements PlanService {
throw new ServiceException(PLAN_NOT_DATA_EXISTS, planId); throw new ServiceException(PLAN_NOT_DATA_EXISTS, planId);
} }
sorts.add(planDO.getSort());
} }
// 500条更新一次排单顺序
List<List<SortVO>> batches = ListUtil.partition(sortVos, 500);
if(sortVos.size() == 1){ for (List<SortVO> batch : batches) {
planMapper.batchUpdatePlanSort(batch);
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;
}
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);
} }
@@ -20,9 +20,7 @@
${ew.customSqlSegment} ${ew.customSqlSegment}
ORDER BY op.is_top DESC, ORDER BY op.sort
CASE WHEN op.is_top = true THEN op.update_time END DESC,
CASE WHEN op.is_top = false THEN op.sort END ;
</select> </select>
@@ -321,4 +319,26 @@
</foreach> </foreach>
</select> </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> </mapper>