fuliqi
2024-09-25 d6a429826f922b40e0f09bc1616fc573eb232fd2
工单号生成修改
1个文件已修改
16 ■■■■■ 已修改文件
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -199,7 +199,7 @@
        // 如果即将生成工单,但是设备国标码查不到点位,则不添加?
        List<WorkOrder> notAddList = new ArrayList<>();
        //查redis今日工单数量
        int workOrderNum = 1;
        int workOrderNum = 0;
        //UUID作为value,保证上锁的线程自己解锁
        String requestId = IdUtils.fastSimpleUUID();
        try {
@@ -208,7 +208,7 @@
                if (result) {
                    //查今日工单量
                    Object redisNum = redisCache.getCacheObject(RedisConstant.WORKORDER_NUM);
                    workOrderNum = redisNum == null ? 1 : (Integer) redisNum;
                    workOrderNum = redisNum == null ? 0 : (Integer) redisNum;
                    break;
                } else {
                    if (i == 2) {
@@ -216,16 +216,13 @@
                        return Boolean.FALSE;
                    }
                    //等待一段时间后继续
                    Thread.sleep(3000);
                    Thread.sleep(5000);
                }
            }
        } catch (InterruptedException e) {
            log.error("获取锁异常");
            return Boolean.FALSE;
        } finally {
            redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId);
        }
        for (WorkOrder workOrder : waitAddList) {
            YwPoint point = pointMapping.get(workOrder.getSerialNumber());
            if (Objects.isNull(point)) {
@@ -233,8 +230,8 @@
                continue;
            }
            //数字前面补0
            workOrder.setWorkOrderNo(IdUtils.randomNO(now, String.format("%05d", workOrderNum)));
            workOrderNum++;
            workOrder.setWorkOrderNo(IdUtils.randomNO(now, String.format("%05d", workOrderNum)));
            if (Objects.nonNull(point.getUnitId())) {
                workOrder.setUnitId(Math.toIntExact(point.getUnitId()));
            }
@@ -259,6 +256,7 @@
        }
        //记录工单数
        redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum);
        redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId);
        // 保存工单和故障类型
        baseMapper.addMany(waitAddList);
        if (!CollectionUtils.isEmpty(waitAddErrorTypeList)) {
@@ -302,6 +300,8 @@
            //查今日工单量
            Object redisNum = redisCache.getCacheObject(RedisConstant.WORKORDER_NUM);
            workOrderNum = redisNum == null ? 1 : (Integer) redisNum;
            workOrderNum++;
            redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum);
            redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId);
        } else {
            return Result.error("工单正在添加,请稍后再试");
@@ -313,8 +313,6 @@
        entity.setCreateTime(now);
        entity.setUpdateTime(now);
        entity.setWorkOrderNo(IdUtils.randomNO(now, String.format("%05d", workOrderNum)));
        workOrderNum++;
        redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, 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);