From 96e520a9c5407310d03792b6012195f516f0233b Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 23 八月 2024 15:15:57 +0800 Subject: [PATCH] 定时任务工单生成bug修改 --- ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 100 ++++++++++++++++++++++++++----------------------- 1 files changed, 53 insertions(+), 47 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java index c298405..f763df1 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java @@ -83,7 +83,7 @@ private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper; private final NotifyService notifyService; private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper; - private final WorkOrderErrorTypeMapper workOrderErrorTypeMapper; + private final WorkOrderErrorTypeServiceImpl workOrderErrorTypeService; private final SysConfigMapper configMapper; private final ServerConfig serverConfig; private final ReportMapper reportMapper; @@ -111,41 +111,35 @@ List<String> serialNumberList = workOrderList.stream().map(WorkOrder::getSerialNumber).collect(Collectors.toList()); // 鏌ュ嚭鏁版嵁搴撲腑鍥芥爣鐮佸搴旂殑鏈畬鎴愮殑宸ュ崟 List<WorkOrder> inDatabaseWorkOrderList = new LambdaQueryChainWrapper<>(baseMapper) - .select(WorkOrder::getId, WorkOrder::getSerialNumber, WorkOrder::getStatus, WorkOrder::getErrorType) + .select(WorkOrder::getId, WorkOrder::getSerialNumber, WorkOrder::getStatus, WorkOrder::getWorkOrderNo) .in(WorkOrder::getSerialNumber, serialNumberList) .ne(WorkOrder::getStatus, WorkOrderStatusEnum.AUDITING_SUCCESS) .list(); Map<String, WorkOrder> mapping = inDatabaseWorkOrderList.stream().collect((Collectors.toMap(WorkOrder::getSerialNumber, workOrder -> workOrder))); List<WorkOrder> waitAddList = new ArrayList<>(48); + List<WorkOrderErrorType> waitAddErrorTypeList = new ArrayList<>(48); Integer updateNum = 0; - + Date now = new Date(); for (WorkOrder workOrder : workOrderList) { WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber()); if (Objects.nonNull(databaseWorkOrder)) { - List<WorkOrderErrorType> workOrderErrorTypeList = new LambdaQueryChainWrapper<>(workOrderErrorTypeMapper) - .select(WorkOrderErrorType::getErrorName) - .eq(WorkOrderErrorType::getWorkOrderNo, workOrder.getWorkOrderNo()) - .list(); - List<String> errorNameList = workOrderErrorTypeList.stream().map(WorkOrderErrorType::getErrorName).collect(Collectors.toList()); - String errorType = databaseWorkOrder.getErrorType(); - if (errorNameList.contains(errorType)) { + List<String> errorNameList = workOrderErrorTypeService.getBaseMapper().getNotFinishWorkOrderErrors(workOrder.getWorkOrderNo()); + List<String> errorTypes = workOrder.getErrorTypeList(); + if (errorNameList.containsAll(errorTypes)) { // 濡傛灉锛屽浗鏍囩爜銆佹晠闅滅被鍨嬮兘涓�鏍凤紝鍒欒烦杩囦笉澶勭悊 continue; } else { - // 閿欒绫诲瀷涓嶄竴鏍凤紝灏辨柊澧炰竴涓敊璇被鍨嬶紝骞朵笖閲嶇疆宸ュ崟鐘舵�佷负寰呭鐞� - List<SysDictData> errorTypeDictList = dictDataMapper.selectDictDataByType("error_type"); - String finalErrorType = errorType; - List<SysDictData> targetErrorTypes = errorTypeDictList.stream().filter(item -> finalErrorType.equals(item.getDictValue())).collect(Collectors.toList()); - if (! CollectionUtils.isEmpty(targetErrorTypes)) { - errorType = targetErrorTypes.get(0).getDictValue(); + for (String errorType : errorTypes) { + if (! errorNameList.contains(errorType)) { + // 閿欒绫诲瀷涓嶄竴鏍凤紝灏辨柊澧炰竴涓敊璇被鍨嬶紝骞朵笖閲嶇疆宸ュ崟鐘舵�佷负寰呭鐞� + WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType(); + workOrderErrorType.setWorkOrderNo(databaseWorkOrder.getWorkOrderNo()); + workOrderErrorType.setCreateTime(now); + workOrderErrorType.setUpdateTime(now); + workOrderErrorType.setErrorName(errorType); + workOrderErrorTypeService.save(workOrderErrorType); + } } - WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType(); - workOrderErrorType.setWorkOrderNo(databaseWorkOrder.getWorkOrderNo()); - Date now = new Date(); - workOrderErrorType.setCreateTime(now); - workOrderErrorType.setUpdateTime(now); - workOrderErrorTypeMapper.insert(workOrderErrorType); - databaseWorkOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED); databaseWorkOrder.setUpdateTime(now); baseMapper.updateById(databaseWorkOrder); @@ -190,26 +184,40 @@ continue; } workOrder.setWorkOrderNo(IdUtils.timeAddRandomNO(5)); - workOrder.setUnitId(Math.toIntExact(point.getUnitId())); + if (Objects.nonNull(point.getUnitId())) { + workOrder.setUnitId(Math.toIntExact(point.getUnitId())); + } if (point.getImportantTag() || point.getImportantCommandImageTag()) { workOrder.setProcessingPeriod(Integer.valueOf(important.getConfigValue())); } else { workOrder.setProcessingPeriod(Integer.valueOf(normal.getConfigValue())); + } + // 淇濆瓨閿欒绫诲瀷 + for (String errorType : workOrder.getErrorTypeList()) { + WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType(); + workOrderErrorType.setWorkOrderNo(workOrder.getWorkOrderNo()); + workOrderErrorType.setCreateTime(now); + workOrderErrorType.setUpdateTime(now); + workOrderErrorType.setErrorName(errorType); + waitAddErrorTypeList.add(workOrderErrorType); } } waitAddList.removeAll(notAddList); if (CollectionUtils.isEmpty(waitAddList)) { return Boolean.TRUE; } - this.saveBatch(waitAddList); + // 淇濆瓨宸ュ崟鍜屾晠闅滅被鍨� + baseMapper.addMany(waitAddList); + if (! CollectionUtils.isEmpty(waitAddErrorTypeList)) { + workOrderErrorTypeService.getBaseMapper().addMany(waitAddErrorTypeList); + } // 濡傛灉鏄洿鎺ヤ笅鍙戯紝娣诲姞涓嬪彂璁板綍 if (WorkOrderStatusEnum.DISTRIBUTED.equals(waitAddList.get(0).getStatus())) { List<WorkOrderDistributeRecord> distributedRecordList = waitAddList.stream().map(item -> { WorkOrderDistributeRecord workOrderDistributeRecord = new WorkOrderDistributeRecord(); - workOrderDistributeRecord.setWorkOrderId(item.getId()); + workOrderDistributeRecord.setWorkOrderNo(item.getWorkOrderNo()); workOrderDistributeRecord.setDistributeWay(WorkOrderDistributeWayEnum.DIRECT_DISTRIBUTE); workOrderDistributeRecord.setUserId(1L); - Date now = new Date(); workOrderDistributeRecord.setCreateTime(now); workOrderDistributeRecord.setUpdateTime(now); return workOrderDistributeRecord; @@ -236,7 +244,7 @@ entity.setUpdateTime(now); entity.setErrorType(String.join(",", form.getErrorType())); List<WorkOrderErrorType> workOrderErrorTypes = form.getErrorType().stream().map(errorType -> new WorkOrderErrorType(entity.getWorkOrderNo(), errorType)).toList(); - workOrderErrorTypeMapper.insertWorkOrderErrorTypeList(workOrderErrorTypes); + workOrderErrorTypeService.getBaseMapper().insertWorkOrderErrorTypeList(workOrderErrorTypes); if(baseMapper.insert(entity) > 0) { return Result.ok("娣诲姞鎴愬姛"); } @@ -421,7 +429,6 @@ public Result page(WorkOrderQuery query) { IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class); baseMapper.page(page, query); - page.getRecords().forEach(item -> item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType()))); return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -429,7 +436,6 @@ public Result distributePage(DistributeWorkOrderQuery query) { IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class); baseMapper.distributePage(page, query); - page.getRecords().forEach(item -> item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType()))); return Result.ok().data(page).total(page.getTotal()); } @@ -464,20 +470,20 @@ .orderByDesc(WorkOrder::getCreateTime) .last("limit " + data.getFastNumLimit()) .list(); - List<Integer> ids = list.stream().map(WorkOrder::getId).toList(); + List<String> workOrderNoList = list.stream().map(WorkOrder::getWorkOrderNo).toList(); List<String> serialNumberList = list.stream().map(WorkOrder::getSerialNumber).toList(); - if (ids.isEmpty()) { return Result.error("娌℃湁绗﹀悎鏉′欢鐨勫伐鍗�"); } + if (workOrderNoList.isEmpty()) { return Result.error("娌℃湁绗﹀悎鏉′欢鐨勫伐鍗�"); } if (!getDistributeLock()) { return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�"); } try { new LambdaUpdateChainWrapper<>(baseMapper) .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED) - .in(WorkOrder::getId, ids) + .in(WorkOrder::getWorkOrderNo, workOrderNoList) .update(); - addDistributeRecord(ids, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE); + addDistributeRecord(workOrderNoList, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE); // 鍚屾鐐逛綅鐘舵�� ywPointService.updateRecovery(serialNumberList, 1); - return Result.ok("鎴愬姛涓嬪彂" + ids.size() + "鏉″伐鍗�"); + return Result.ok("鎴愬姛涓嬪彂" + workOrderNoList.size() + "鏉″伐鍗�"); } catch (Exception e) { return Result.error("鎿嶄綔澶辫触"); } finally { @@ -491,27 +497,27 @@ WorkOrderDistributeWayEnum distributeWayEnum = WorkOrderDistributeWayEnum.SELECTED_DISTRIBUTE; if (!getDistributeLock()) { return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�"); } try { - if (query.getIds().isEmpty()) { - query.setIds(new LambdaQueryChainWrapper<>(baseMapper) + if (query.getWorkOrderNOList().isEmpty()) { + query.setWorkOrderNOList(new LambdaQueryChainWrapper<>(baseMapper) .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE) .eq(Objects.nonNull(query.getUnitId()), WorkOrder::getUnitId, query.getUnitId()) .select(WorkOrder::getId) .list() .stream() - .map(WorkOrder::getId) + .map(WorkOrder::getWorkOrderNo) .collect(Collectors.toList())); distributeWayEnum = WorkOrderDistributeWayEnum.ALL_DISTRIBUTE; } - if (query.getIds().isEmpty()) { return Result.error("娌℃湁宸ュ崟寰呬笅鍙�"); } + if (query.getWorkOrderNOList().isEmpty()) { return Result.error("娌℃湁宸ュ崟寰呬笅鍙�"); } new LambdaUpdateChainWrapper<>(baseMapper) .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED) - .in(WorkOrder::getId, query.getIds()) + .in(WorkOrder::getWorkOrderNo, query.getWorkOrderNOList()) .update(); - addDistributeRecord(query.getIds(), distributeWayEnum); + addDistributeRecord(query.getWorkOrderNOList(), distributeWayEnum); // 鍚屾鐐逛綅鐘舵�� - List<String> serialNumberList = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getSerialNumber).in(WorkOrder::getId, query.getIds()).list().stream().map(WorkOrder::getSerialNumber).toList(); + List<String> serialNumberList = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getSerialNumber).in(WorkOrder::getId, query.getWorkOrderNOList()).list().stream().map(WorkOrder::getSerialNumber).toList(); ywPointService.updateRecovery(serialNumberList, 1); - return Result.ok("鎴愬姛涓嬪彂" + query.getIds().size() + "鏉″伐鍗�"); + return Result.ok("鎴愬姛涓嬪彂" + query.getWorkOrderNOList().size() + "鏉″伐鍗�"); } catch (Exception e) { return Result.error("鎿嶄綔澶辫触"); } finally { @@ -541,13 +547,13 @@ /** * 娣诲姞宸ュ崟涓嬪彂璁板綍 - * @param ids 宸ュ崟id + * @param workOrderNoList 宸ュ崟id */ - private void addDistributeRecord(List<Integer> ids, WorkOrderDistributeWayEnum distributeWay) { + private void addDistributeRecord(List<String> workOrderNoList, WorkOrderDistributeWayEnum distributeWay) { LoginUser loginUser = SecurityUtils.getLoginUser(); workOrderDistributeRecordMapper.insertBatch( - ids.stream() - .map(id -> new WorkOrderDistributeRecord(id, loginUser.getUserId(), distributeWay)) + workOrderNoList.stream() + .map(no -> new WorkOrderDistributeRecord(no, loginUser.getUserId(), distributeWay)) .toList() ); } -- Gitblit v1.8.0