From f6593a5f6f1138abf09a0ee69fc5119fdce412c9 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期六, 07 十二月 2024 17:52:07 +0800 Subject: [PATCH] 标签bug --- ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 137 +++++++++++++++++++++++++++++++++------------ 1 files changed, 100 insertions(+), 37 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 b4f26fc..9fe4dc9 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 @@ -171,18 +171,18 @@ //閬垮厤浠d笅鍙戠殑宸ュ崟鐩存帴鍙樻垚涓嬪彂 if (!databaseWorkOrder.getStatus().equals(WorkOrderStatusEnum.WAIT_DISTRIBUTE)) { databaseWorkOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED); + // 鍚屾椂鏂板涓�涓繍缁村鐞嗕俊鎭紝琛ㄦ槑姝ゅ伐鍗曡璋冩暣 + WorkOrderYwConditionRecord ywRecord = new WorkOrderYwConditionRecord(); + ywRecord.setWorkOrderNo(databaseWorkOrder.getWorkOrderNo()); + ywRecord.setCommitUser(1); + ywRecord.setYwCondition("鏁呴殰绫诲瀷鏇存柊锛屽伐鍗曠姸鎬佽皟鏁翠负寰呭鐞�"); + ywRecord.setCreateTime(new Date()); + ywRecord.setSysMsg(Boolean.TRUE); + willAddMsg.add(ywRecord); } databaseWorkOrder.setUpdateTime(now); willUpdateStatusWorkOrderList.add(databaseWorkOrder); updateNum++; - // 鍚屾椂鏂板涓�涓繍缁村鐞嗕俊鎭紝琛ㄦ槑姝ゅ伐鍗曡璋冩暣 - WorkOrderYwConditionRecord ywRecord = new WorkOrderYwConditionRecord(); - ywRecord.setWorkOrderNo(databaseWorkOrder.getWorkOrderNo()); - ywRecord.setCommitUser(1); - ywRecord.setYwCondition("鏁呴殰绫诲瀷鏇存柊锛屽伐鍗曠姸鎬佽皟鏁翠负寰呭鐞�"); - ywRecord.setCreateTime(new Date()); - ywRecord.setSysMsg(Boolean.TRUE); - willAddMsg.add(ywRecord); } } else { workOrder.setCreateTime(new Date()); @@ -211,7 +211,7 @@ List<String> willAddSerialNumber = waitAddList.stream().map(WorkOrder::getSerialNumber).collect(Collectors.toList()); //鍙敓鎴愯�冩牳璁惧銆佷笖鏈夎繍缁村崟浣嶇殑宸ュ崟 List<YwPoint> pointList = new LambdaQueryChainWrapper<>(ywPointService.getBaseMapper()) - .select(YwPoint::getUnitId, YwPoint::getSerialNumber, YwPoint::getImportantTag, YwPoint::getImportantTag, YwPoint::getProvinceTag, YwPoint::getImportantCommandImageTag) + .select(YwPoint::getUnitId, YwPoint::getSerialNumber, YwPoint::getImportantTag, YwPoint::getImportantTag, YwPoint::getImportantCommandImageTag) .in(YwPoint::getSerialNumber, willAddSerialNumber) .eq(YwPoint::getExamineStatus, Boolean.TRUE) .isNotNull(YwPoint::getUnitId) @@ -319,46 +319,109 @@ */ @Override public Result add(WorkOrderForm form) { - //TODO锛氬悓涓浗鏍囧伐鍗曞鍔犳晠闅滅被鍨� //妫�鏌ョ櫧鍚嶅崟 List<WorkOrder> data = new ArrayList<>(); WorkOrder workOrder = WorkOrderForm.getEntityByForm(form, null); data.add(workOrder); + //鏍¢獙鐧藉悕鍗曞苟鎺掗櫎鍦ㄧ櫧鍚嶅崟鐨勬晠闅滅被鍨� data = checkWhite(data); if (CollectionUtils.isEmpty(data)) { return Result.error("璇ヨ澶囩殑鏁呴殰绫诲瀷鍦ㄧ櫧鍚嶅崟涓紝涓嶈兘娣诲姞宸ュ崟"); } WorkOrder entity = data.get(0); - - //鏌edis浠婃棩宸ュ崟鏁伴噺 - int workOrderNum = 0; - //UUID浣滀负value锛屼繚璇佷笂閿佺殑绾跨▼鑷繁瑙i攣 - String requestId = IdUtils.fastSimpleUUID(); - boolean result = redisCache.acquireLock(RedisConstant.WORKORDER_NUM_LOCK, requestId, 10000); - if (result) { - //鏌ヤ粖鏃ュ伐鍗曢噺 - Object redisNum = redisCache.getCacheObject(RedisConstant.WORKORDER_NUM); - workOrderNum = redisNum == null ? 0 : (Integer) redisNum; - workOrderNum++; - redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum); - redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId); - } else { - return Result.error("宸ュ崟姝e湪娣诲姞锛岃绋嶅悗鍐嶈瘯"); - } - - entity.setCreateTime(DateUtils.getNowDate()); - entity.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE); + String serialNumber = entity.getSerialNumber(); Date now = new Date(); - entity.setCreateTime(now); - entity.setUpdateTime(now); - entity.setWorkOrderNo(IdUtils.workOrderNO(now, String.format("%05d", workOrderNum))); - entity.setErrorType(String.join(",", form.getErrorType())); - List<WorkOrderErrorType> workOrderErrorTypes = form.getErrorType().stream().map(errorType -> new WorkOrderErrorType(entity.getWorkOrderNo(), errorType)).toList(); - workOrderErrorTypeService.getBaseMapper().insertWorkOrderErrorTypeList(workOrderErrorTypes); - if (baseMapper.insert(entity) > 0) { + List<WorkOrder> inDatabaseWorkOrderList = baseMapper.getNotFinishedWorkOrders(Arrays.asList(serialNumber)); + inDatabaseWorkOrderList.stream().forEach(item -> { + if (StringUtils.hasText(item.getErrorType())) { + item.setErrorTypeList(List.of(item.getErrorType().split(","))); + } else { + item.setErrorTypeList(new ArrayList<>(1)); + } + }); + // 鍥犳晠闅滅被鍨嬩笉涓�鑷磋�岃鏇存柊鐘舵�佺殑宸ュ崟 + List<WorkOrder> willUpdateStatusWorkOrderList = new ArrayList<>(48); + // 鏇存敼宸ュ崟绫诲瀷鑰岃澧炲姞鐨勭郴缁熻繍缁村鐞嗕俊鎭� + List<WorkOrderYwConditionRecord> willAddMsg = new ArrayList<>(48); + // 鍗冲皢瑕佹坊鍔犵殑閿欒绫诲瀷 + List<WorkOrderErrorType> willAddErrorType = new ArrayList<>(96); + if(!CollectionUtils.isEmpty(inDatabaseWorkOrderList)){ + WorkOrder workOrderInDB = inDatabaseWorkOrderList.get(0); + List<String> errorNameList = workOrderInDB.getErrorTypeList(); + List<String> errorTypes = entity.getErrorTypeList(); + if(errorNameList.containsAll(errorTypes)){ + return Result.error("宸叉湁鍚岀鏁呴殰绫诲瀷宸ュ崟"); + }else { + for (String errorType : errorTypes) { + if(!errorNameList.contains(errorType)){ + // 閿欒绫诲瀷涓嶄竴鏍凤紝灏辨柊澧炰竴涓敊璇被鍨嬶紝骞朵笖閲嶇疆宸ュ崟鐘舵�佷负寰呭鐞� + WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType(); + workOrderErrorType.setWorkOrderNo(workOrderInDB.getWorkOrderNo()); + workOrderErrorType.setCreateTime(now); + workOrderErrorType.setUpdateTime(now); + workOrderErrorType.setErrorName(errorType); + willAddErrorType.add(workOrderErrorType); + } + } + //閬垮厤浠d笅鍙戠殑宸ュ崟鐩存帴鍙樻垚涓嬪彂 + if (!workOrderInDB.getStatus().equals(WorkOrderStatusEnum.WAIT_DISTRIBUTE)) { + workOrderInDB.setStatus(WorkOrderStatusEnum.DISTRIBUTED); + // 鍚屾椂鏂板涓�涓繍缁村鐞嗕俊鎭紝琛ㄦ槑姝ゅ伐鍗曡璋冩暣 + WorkOrderYwConditionRecord ywRecord = new WorkOrderYwConditionRecord(); + ywRecord.setWorkOrderNo(workOrderInDB.getWorkOrderNo()); + ywRecord.setCommitUser(1); + ywRecord.setYwCondition("鏁呴殰绫诲瀷鏇存柊锛屽伐鍗曠姸鎬佽皟鏁翠负寰呭鐞�"); + ywRecord.setCreateTime(new Date()); + ywRecord.setSysMsg(Boolean.TRUE); + willAddMsg.add(ywRecord); + } + workOrderInDB.setUpdateTime(now); + willUpdateStatusWorkOrderList.add(workOrderInDB); + //淇敼鏁呴殰绫诲瀷 + if (willAddErrorType.size() > 0) { + workOrderErrorTypeService.getBaseMapper().addMany(willAddErrorType); + } + //澧炲姞杩愮淮鎯呭喌 + if (willAddMsg.size() > 0) { + workOrderYwConditionRecordMapper.insertMany(willAddMsg); + } + //鏇存敼宸ュ崟鐘舵�� + if (willUpdateStatusWorkOrderList.size() > 0) { + this.baseMapper.updateMany(willUpdateStatusWorkOrderList); + } + } return Result.ok("娣诲姞鎴愬姛"); + }else { + //鏁版嵁搴撴病鏈夋鍦ㄨ繘琛岀殑宸ュ崟 + //鏌edis浠婃棩宸ュ崟鏁伴噺 + int workOrderNum = 0; + //UUID浣滀负value锛屼繚璇佷笂閿佺殑绾跨▼鑷繁瑙i攣 + String requestId = IdUtils.fastSimpleUUID(); + boolean result = redisCache.acquireLock(RedisConstant.WORKORDER_NUM_LOCK, requestId, 10000); + if (result) { + //鏌ヤ粖鏃ュ伐鍗曢噺 + Object redisNum = redisCache.getCacheObject(RedisConstant.WORKORDER_NUM); + workOrderNum = redisNum == null ? 0 : (Integer) redisNum; + workOrderNum++; + redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum); + redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId); + } else { + return Result.error("宸ュ崟姝e湪娣诲姞锛岃绋嶅悗鍐嶈瘯"); + } + entity.setCreateTime(DateUtils.getNowDate()); + entity.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE); + entity.setCreateTime(now); + entity.setUpdateTime(now); + entity.setWorkOrderNo(IdUtils.workOrderNO(now, String.format("%05d", workOrderNum))); + entity.setErrorType(String.join(",", form.getErrorType())); + List<WorkOrderErrorType> workOrderErrorTypes = form.getErrorType().stream().map(errorType -> new WorkOrderErrorType(entity.getWorkOrderNo(), errorType)).toList(); + workOrderErrorTypeService.getBaseMapper().insertWorkOrderErrorTypeList(workOrderErrorTypes); + if (baseMapper.insert(entity) > 0) { + return Result.ok("娣诲姞鎴愬姛"); + }else { + return Result.error("娣诲姞澶辫触"); + } } - return Result.error("娣诲姞澶辫触"); } -- Gitblit v1.8.0