| | |
| | | import com.ycl.utils.SecurityUtils; |
| | | import com.ycl.utils.redis.RedisCache; |
| | | import enumeration.general.NotifyTypeEnum; |
| | | import enumeration.general.WorkOrderDistributeWayEnum; |
| | | import enumeration.general.WorkOrderStatusEnum; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.apache.commons.lang3.ArrayUtils; |
| | |
| | | .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED) |
| | | .in(WorkOrder::getId, ids) |
| | | .update(); |
| | | addDistributeRecord(ids); |
| | | addDistributeRecord(ids, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE); |
| | | return Result.ok("成功下发" + ids.size() + "条工单"); |
| | | } catch (Exception e) { |
| | | return Result.ok("操作失败"); |
| | | return Result.error("操作失败"); |
| | | } finally { |
| | | distributeUnLock(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Result selectedIdsDistribute(List<Integer> ids, Integer unitId) { |
| | | public Result selectedIdsDistribute(DistributeWorkOrderQuery query) { |
| | | WorkOrderDistributeWayEnum distributeWayEnum = WorkOrderDistributeWayEnum.SELECTED_DISTRIBUTE; |
| | | if (!getDistributeLock()) { |
| | | return Result.error("工单下发中,请稍后重试"); |
| | | return Result.error("此刻有人下发中,为避免冲突,请稍后重试"); |
| | | } |
| | | try { |
| | | if (ids.isEmpty()) { |
| | | ids = new LambdaQueryChainWrapper<>(baseMapper) |
| | | if (query.getIds().isEmpty()) { |
| | | query.setIds(new LambdaQueryChainWrapper<>(baseMapper) |
| | | .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE) |
| | | .eq(Objects.nonNull(unitId), WorkOrder::getUnitId, unitId) |
| | | .eq(Objects.nonNull(query.getUnitId()), WorkOrder::getUnitId, query.getUnitId()) |
| | | .select(WorkOrder::getId) |
| | | .list() |
| | | .stream() |
| | | .map(WorkOrder::getId) |
| | | .collect(Collectors.toList()); |
| | | .collect(Collectors.toList())); |
| | | distributeWayEnum = WorkOrderDistributeWayEnum.ALL_DISTRIBUTE; |
| | | } |
| | | if (query.getIds().isEmpty()) { |
| | | return Result.error("没有工单待下发"); |
| | | } |
| | | new LambdaUpdateChainWrapper<>(baseMapper) |
| | | .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED) |
| | | .in(WorkOrder::getId, ids) |
| | | .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE) |
| | | .eq(Objects.nonNull(unitId), WorkOrder::getUnitId, unitId) |
| | | .in(WorkOrder::getId, query.getIds()) |
| | | .update(); |
| | | addDistributeRecord(ids); |
| | | addDistributeRecord(query.getIds(), distributeWayEnum); |
| | | return Result.ok("操作成功"); |
| | | } catch (Exception e) { |
| | | return Result.ok("操作失败"); |
| | | return Result.error("操作失败"); |
| | | } finally { |
| | | distributeUnLock(); |
| | | } |
| | |
| | | * 添加工单下发记录 |
| | | * @param ids 工单id |
| | | */ |
| | | private void addDistributeRecord(List<Integer> ids) { |
| | | private void addDistributeRecord(List<Integer> ids, WorkOrderDistributeWayEnum distributeWay) { |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | workOrderDistributeRecordMapper.insertBatch( |
| | | ids.stream() |
| | | .map(id -> new WorkOrderDistributeRecord(id, loginUser.getUserId())) |
| | | .map(id -> new WorkOrderDistributeRecord(id, loginUser.getUserId(), distributeWay)) |
| | | .toList() |
| | | ); |
| | | } |