diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java index de0ff1900..27164b96f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java @@ -112,7 +112,7 @@ public class PlanController { @PutMapping("/setSort") @Operation(summary = "设置排单优先级") @PreAuthorize("@ss.hasPermission('placeorder:priority')") - public CommonResult setSort(@Valid @NotEmpty(message = "参数不能空") @Size(max = 2,message = "最多两条数据") @RequestBody List sortVos) { + public CommonResult setSort(@Valid @NotEmpty(message = "参数不能空") @RequestBody List sortVos) { planService.setSort(sortVos); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java index c56cbb825..ffe4e1b02 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java @@ -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 { * @return */ List selectPlanOrderGoodsId(@Param("planId") Long planId, @Param("orderIds") List orderIds, @Param("organId") Long organId); + + /** + * 批量更新排单顺序 + * + * @param sortVOList + * @return + */ + int batchUpdatePlanSort(@Param("sortList") List sortVOList); } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index 85732453d..0b4a89ba7 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -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 statusList = pageReqVO.getStatus(); QueryWrapperX 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 planIds = sortVos.stream().map(SortVO::getPlanId).toList(); - List 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() - .eq(PlanDO::getOrganId, getUserOrganId()) - .eq(PlanDO::getDeleted,false) - .eq(PlanDO::getId,sortVO.getPlanId()) - .set(PlanDO::getIsTop,sortVO.getIsTopUp())); - - return; - } + // 500条更新一次排单顺序 + List> batches = ListUtil.partition(sortVos, 500); - ArrayList 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 batch : batches) { + planMapper.batchUpdatePlanSort(batch); + } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml index 397a86016..e3a126924 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml @@ -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 @@ -321,4 +319,26 @@ + + UPDATE order_plan + + SET sort = + CASE id + + WHEN #{item.planId} THEN #{item.sort} + + END + + WHERE deleted = false + AND status != 3 + AND id IN + + #{item.planId} + + + \ No newline at end of file