From 439139cf650de7ccb0c91b2ffbda08e2273bc7b5 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期六, 24 八月 2024 18:45:00 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 160 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 99 insertions(+), 61 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..b26d549 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 @@ -28,10 +28,8 @@ import com.ycl.platform.wvp.WVPResult; import com.ycl.system.Result; import com.ycl.system.domain.SysConfig; -import com.ycl.system.entity.SysDictData; import com.ycl.system.mapper.SysConfigMapper; import com.ycl.system.mapper.SysDictDataMapper; -import com.ycl.system.mapper.SysDictTypeMapper; import com.ycl.system.model.LoginUser; import com.ycl.system.page.PageUtil; import com.ycl.utils.DateUtils; @@ -39,7 +37,10 @@ import com.ycl.utils.http.HttpUtils; import com.ycl.utils.redis.RedisCache; import com.ycl.utils.uuid.IdUtils; -import enumeration.general.*; +import enumeration.general.NotifyTypeEnum; +import enumeration.general.UrgentLevelEnum; +import enumeration.general.WorkOrderDistributeWayEnum; +import enumeration.general.WorkOrderStatusEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -83,7 +84,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,52 +112,52 @@ 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(); + // 鍥犳晠闅滅被鍨嬩笉涓�鑷磋�岃鏇存柊鐘舵�佺殑宸ュ崟 + List<WorkOrder> willUpdateStatusWorkOrderList = new ArrayList<>(48); + // 鏇存敼宸ュ崟绫诲瀷鑰岃澧炲姞鐨勭郴缁熻繍缁村鐞嗕俊鎭� + List<WorkOrderYwConditionRecord> willAddMsg = new ArrayList<>(48); + // 鍗冲皢瑕佹坊鍔犵殑閿欒绫诲瀷 + List<WorkOrderErrorType> willAddErrorType = new ArrayList<>(96); 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); + willAddErrorType.add(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); + willUpdateStatusWorkOrderList.add(databaseWorkOrder); updateNum++; // 鍚屾椂鏂板涓�涓繍缁村鐞嗕俊鎭紝琛ㄦ槑姝ゅ伐鍗曡璋冩暣 WorkOrderYwConditionRecord ywRecord = new WorkOrderYwConditionRecord(); - ywRecord.setWorkOrderId(databaseWorkOrder.getId()); + ywRecord.setWorkOrderNo(databaseWorkOrder.getWorkOrderNo()); ywRecord.setCommitUser(1); ywRecord.setYwCondition("鏁呴殰绫诲瀷鏇存柊锛屽伐鍗曠姸鎬佽皟鏁翠负寰呭鐞�"); ywRecord.setCreateTime(new Date()); - workOrderYwConditionRecordMapper.insert(ywRecord); + willAddMsg.add(ywRecord); } } else { workOrder.setCreateTime(new Date()); @@ -168,6 +169,15 @@ // } waitAddList.add(workOrder); } + } + if (willAddErrorType.size() > 0) { + workOrderErrorTypeService.getBaseMapper().addMany(willAddErrorType); + } + if (willAddMsg.size() > 0) { + workOrderYwConditionRecordMapper.insertMany(willAddMsg); + } + if (willUpdateStatusWorkOrderList.size() > 0) { + this.baseMapper.updateMany(willUpdateStatusWorkOrderList); } if (CollectionUtils.isEmpty(waitAddList)) { return Boolean.TRUE; @@ -189,32 +199,50 @@ notAddList.add(workOrder); continue; } - workOrder.setWorkOrderNo(IdUtils.timeAddRandomNO(5)); - workOrder.setUnitId(Math.toIntExact(point.getUnitId())); + workOrder.setWorkOrderNo(IdUtils.randomNO()); + 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())) { + ArrayList<String> list = new ArrayList<>(); List<WorkOrderDistributeRecord> distributedRecordList = waitAddList.stream().map(item -> { + list.add(item.getSerialNumber()); 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; }).collect(Collectors.toList()); workOrderDistributeRecordMapper.insertBatch(distributedRecordList); + // 鍚屾鐐逛綅鐘舵�� + ywPointService.updateRecovery(list, 1); } log.info("浼犲叆宸ュ崟鎬绘暟: {}锛屽疄闄呮坊鍔犲伐鍗曟暟锛歿}, 瀹為檯淇敼宸ュ崟鏁帮細{}", total, waitAddList.size(), updateNum); return Boolean.TRUE; @@ -228,7 +256,7 @@ @Override public Result add(WorkOrderForm form) { WorkOrder entity = WorkOrderForm.getEntityByForm(form, null); - entity.setWorkOrderNo(IdUtils.timeAddRandomNO(5)); + entity.setWorkOrderNo(IdUtils.randomNO()); entity.setCreateTime(DateUtils.getNowDate()); entity.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE); Date now = new Date(); @@ -236,7 +264,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("娣诲姞鎴愬姛"); } @@ -286,7 +314,7 @@ notifyService.save(notify); // 鍚屾鐐逛綅鐘舵�� if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) { - ywPointService.updateRecovery(Arrays.asList(workOrder.getSerialNumber()), 0); + ywPointService.updateRecovery(Collections.singletonList(workOrder.getSerialNumber()), 0); } return Result.ok("鎿嶄綔鎴愬姛"); } @@ -298,12 +326,13 @@ List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper) .in(WorkOrder::getStatus, WorkOrderStatusEnum.YW_HANDLE.getValue()) .in(WorkOrder::getErrorType, form.getErrorTypes()) - .select(WorkOrder::getId, WorkOrder::getUnitId, WorkOrder::getWorkOrderNo) + .select(WorkOrder::getId, WorkOrder::getUnitId, WorkOrder::getWorkOrderNo, WorkOrder::getSerialNumber) .list(); if (list.isEmpty()) { return Result.error("娌℃湁宸ュ崟鍙互瀹℃牳"); } List<Integer> ids = list.stream().map(WorkOrder::getId).collect(Collectors.toList()); + List<String> serialNumbers = list.stream().map(WorkOrder::getSerialNumber).toList(); // 宸ュ崟鐘舵�� LambdaUpdateWrapper<WorkOrder> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.in(WorkOrder::getId, ids); @@ -330,6 +359,10 @@ workOrder.getWorkOrderNo()); notifies.add(notify); } + // 鍚屾鐐逛綅鐘舵�� + if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) { + ywPointService.updateRecovery(serialNumbers, 0); + } notifyService.saveBatch(notifies); return Result.ok("鎿嶄綔鎴愬姛"); } @@ -347,7 +380,7 @@ baseMapper.updateById(workOrder); // 娣诲姞涓�鏉¤繍缁存儏鍐佃褰� WorkOrderYwConditionRecord workOrderYwConditionRecord = new WorkOrderYwConditionRecord(); - workOrderYwConditionRecord.setWorkOrderId(workOrder.getId()); + workOrderYwConditionRecord.setWorkOrderNo(workOrder.getWorkOrderNo()); workOrderYwConditionRecord.setCommitUser(SecurityUtils.getLoginUser().getUserId().intValue()); workOrderYwConditionRecord.setYwCondition(form.getYwCondition()); workOrderYwConditionRecord.setYwProofMaterials(form.getYwProofMaterials()); @@ -421,7 +454,13 @@ 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()))); + if (! CollectionUtils.isEmpty(page.getRecords())) { + page.getRecords().stream().forEach(item -> { + if (StringUtils.hasText(item.getErrorType())) { + item.setErrorTypeList(List.of(item.getErrorType().split(","))); + } + }); + } return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -429,7 +468,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()); } @@ -456,7 +494,7 @@ // 鏌ヨ绗﹀悎鏉′欢鐨勫伐鍗� List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper) - .select(WorkOrder::getSerialNumber, WorkOrder::getSerialNumber) + .select(WorkOrder::getSerialNumber, WorkOrder::getWorkOrderNo) .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE) .eq(Objects.nonNull(data.getUnitId()), WorkOrder::getUnitId, data.getUnitId()) .eq(WorkOrder::getErrorType, data.getErrorType()) @@ -464,20 +502,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 +529,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) + .select(WorkOrder::getWorkOrderNo) .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::getWorkOrderNo, 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 +579,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() ); } @@ -666,6 +704,6 @@ public void updateImgById(Integer workOrderId, String imgPath) { new LambdaUpdateChainWrapper<>(baseMapper) .eq(WorkOrder::getId, workOrderId) - .set(WorkOrder::getYwCheckCondition, imgPath); + .set(WorkOrder::getYwCheckResult, imgPath); } } -- Gitblit v1.8.0