| | |
| | | import com.ycl.exception.ServiceException; |
| | | import com.ycl.platform.domain.entity.*; |
| | | import com.ycl.platform.domain.form.*; |
| | | import com.ycl.platform.domain.query.DistributeWorkOrderQuery; |
| | | import com.ycl.platform.domain.query.WorkOrderQuery; |
| | | import com.ycl.platform.domain.query.*; |
| | | import com.ycl.platform.domain.vo.DistributeWorkOrderVO; |
| | | import com.ycl.platform.domain.vo.WorkOrderVO; |
| | | import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO; |
| | | import com.ycl.platform.domain.vo.screen.ScreenWorkOrderVO; |
| | | import com.ycl.platform.domain.vo.screen.WorkOrderRegionVO; |
| | | import com.ycl.platform.domain.vo.screen.WorkOrderTotalVO; |
| | | import com.ycl.platform.mapper.*; |
| | | import com.ycl.platform.service.NotifyService; |
| | | import com.ycl.platform.service.WorkOrderAuditingRecordService; |
| | |
| | | import enumeration.general.WorkOrderDistributeWayEnum; |
| | | import enumeration.general.WorkOrderStatusEnum; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | * @author xp |
| | | * @since 2024-03-05 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | @RequiredArgsConstructor |
| | | public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService { |
| | |
| | | private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper; |
| | | private final NotifyService notifyService; |
| | | private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper; |
| | | private final TMonitorMapper monitorMapper; |
| | | |
| | | private final String DISTRIBUTE_LOCK_KEY = "distributeLock"; |
| | | private final static String IMPORTANT = "important"; |
| | | |
| | | @Autowired |
| | | private RedisCache redisCache; |
| | | |
| | | @Override |
| | | public Boolean innerAdd(List<WorkOrder> workOrderList) { |
| | | int total = workOrderList.size(); |
| | | workOrderList.stream().filter(item -> { |
| | | return StringUtils.hasText(item.getSerialNumber()) && Objects.nonNull(item.getStatus()) && StringUtils.hasText(item.getErrorType()); |
| | | }); |
| | | // TODO 自动下发工单 |
| | | int real = workOrderList.size(); |
| | | boolean result = this.saveBatch(workOrderList); |
| | | log.info("传入工单总数: {},实际添加工单数:{}", total, real); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 添加 |
| | |
| | | notifyService.save(notify); |
| | | // 同步点位状态 |
| | | if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) { |
| | | ywPointService.updateRecovery(Collections.singletonList(workOrder.getPointId()), 0); |
| | | ywPointService.updateRecovery(Arrays.asList(workOrder.getSerialNumber()), 0); |
| | | } |
| | | return Result.ok("操作成功"); |
| | | } |
| | |
| | | |
| | | // 查询符合条件的工单 |
| | | List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper) |
| | | .select(WorkOrder::getId, WorkOrder::getPointId) |
| | | .select(WorkOrder::getSerialNumber, WorkOrder::getSerialNumber) |
| | | .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE) |
| | | .eq(Objects.nonNull(data.getUnitId()), WorkOrder::getUnitId, data.getUnitId()) |
| | | .eq(WorkOrder::getErrorType, data.getErrorType()) |
| | |
| | | .last("limit " + data.getFastNumLimit()) |
| | | .list(); |
| | | List<Integer> ids = list.stream().map(WorkOrder::getId).toList(); |
| | | List<Integer> pointIds = list.stream().map(WorkOrder::getPointId).toList(); |
| | | List<String> serialNumberList = list.stream().map(WorkOrder::getSerialNumber).toList(); |
| | | |
| | | if (ids.isEmpty()) { return Result.error("没有符合条件的工单"); } |
| | | if (!getDistributeLock()) { return Result.error("此刻有人下发中,为避免冲突,请稍后重试"); } |
| | |
| | | .update(); |
| | | addDistributeRecord(ids, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE); |
| | | // 同步点位状态 |
| | | ywPointService.updateRecovery(pointIds, 1); |
| | | ywPointService.updateRecovery(serialNumberList, 1); |
| | | return Result.ok("成功下发" + ids.size() + "条工单"); |
| | | } catch (Exception e) { |
| | | return Result.error("操作失败"); |
| | |
| | | .update(); |
| | | addDistributeRecord(query.getIds(), distributeWayEnum); |
| | | // 同步点位状态 |
| | | List<Integer> pointIds = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getPointId).in(WorkOrder::getId, query.getIds()).list().stream().map(WorkOrder::getPointId).toList(); |
| | | ywPointService.updateRecovery(pointIds, 1); |
| | | List<String> serialNumberList = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getSerialNumber).in(WorkOrder::getId, query.getIds()).list().stream().map(WorkOrder::getSerialNumber).toList(); |
| | | ywPointService.updateRecovery(serialNumberList, 1); |
| | | return Result.ok("成功下发" + query.getIds().size() + "条工单"); |
| | | } catch (Exception e) { |
| | | return Result.error("操作失败"); |
| | |
| | | .collect(Collectors.toList()); |
| | | return Result.ok().data(vos); |
| | | } |
| | | |
| | | @Override |
| | | public Result screenWorkOrder(ScreenQuery query) { |
| | | ScreenWorkOrderVO screen = baseMapper.screenWorkOrder(query); |
| | | return Result.ok().data(screen); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> home(HomeQuery monitorQuery) { |
| | | Map<String, Object> dataMap = new HashMap<>(); |
| | | Map<String, Object> data1 = new HashMap<>(); |
| | | Map<String, Object> data2 = new HashMap<>(); |
| | | Map<String, Object> data3 = new HashMap<>(); |
| | | List<Map<String, Object>> home = baseMapper.home(monitorQuery); |
| | | if (ObjectUtils.isNotEmpty(home)) { |
| | | for (Map<String, Object> map : home) { |
| | | if (Objects.nonNull(map.get("dateType")) && StringUtils.hasText(map.get("dateType").toString())) { |
| | | data1.put(map.get("dateType").toString(), map.get("num1")); |
| | | data2.put(map.get("dateType").toString(), map.get("num2")); |
| | | data3.put(map.get("dateType").toString(), map.get("num3")); |
| | | } |
| | | } |
| | | dataMap.put("name", home.get(0).get("name")); |
| | | } |
| | | dataMap.put("complete", data1); |
| | | dataMap.put("waiting", data2); |
| | | dataMap.put("pending", data3); |
| | | return dataMap; |
| | | } |
| | | |
| | | @Override |
| | | public WorkOrderTotalVO workOrderTotal(DashboardQuery dashboardQuery) { |
| | | return baseMapper.workOrderTotal(dashboardQuery); |
| | | } |
| | | |
| | | @Override |
| | | public List<WorkOrderRegionVO> workOrderRegion(DashboardQuery dashboardQuery) { |
| | | return baseMapper.workOrderRegion(dashboardQuery); |
| | | } |
| | | } |