From f284c5ef6a1aa6e9ba5d4e94e4b2abe83b6ea18c Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 31 七月 2024 14:54:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |   84 ++++++++++++++++++++++++++++++++----------
 1 files changed, 64 insertions(+), 20 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 abc41bd..8485cc6 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
@@ -1,5 +1,6 @@
 package com.ycl.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
@@ -11,8 +12,10 @@
 import com.ycl.platform.domain.query.WorkOrderQuery;
 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.mapper.*;
 import com.ycl.platform.service.NotifyService;
+import com.ycl.platform.service.WorkOrderAuditingRecordService;
 import com.ycl.platform.service.WorkOrderService;
 import com.ycl.system.Result;
 import com.ycl.system.model.LoginUser;
@@ -20,6 +23,8 @@
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.SecurityUtils;
 import com.ycl.utils.redis.RedisCache;
+import com.ycl.utils.uuid.IdUtils;
+import constant.PointConfigConstants;
 import enumeration.general.*;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ArrayUtils;
@@ -28,10 +33,12 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
@@ -51,11 +58,13 @@
     private final YwUnitMapper ywUnitMapper;
     private final YwPeopleMapper ywPeopleMapper;
     private final WorkOrderAuditingRecordMapper workOrderAuditingRecordMapper;
+    private final WorkOrderAuditingRecordService workOrderAuditingRecordService;
     private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper;
     private final NotifyService notifyService;
     private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper;
 
     private final String DISTRIBUTE_LOCK_KEY = "distributeLock";
+    private final static String IMPORTANT = "important";
 
     @Autowired
     private RedisCache redisCache;
@@ -68,10 +77,9 @@
     @Override
     public Result add(WorkOrderForm form) {
         WorkOrder entity = WorkOrderForm.getEntityByForm(form, null);
-        entity.setWorkOrderNo(DateUtils.dateTimeNow());
+        entity.setWorkOrderNo(IdUtils.timeAddRandomNO(5));
         entity.setCreateTime(DateUtils.getNowDate());
         entity.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE);
-        entity.setDeleted("0");
         if(baseMapper.insert(entity) > 0) {
             return Result.ok("娣诲姞鎴愬姛");
         }
@@ -123,6 +131,49 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public Result batchAuditing(WorkOrderBatchAuditingForm form) {
+        // 鏍规嵁鏁呴殰绫诲瀷鑾峰彇鍒楄〃
+        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)
+                .list();
+        if (list.isEmpty()) {
+            return Result.error("娌℃湁宸ュ崟鍙互瀹℃牳");
+        }
+        List<Integer> ids = list.stream().map(WorkOrder::getId).collect(Collectors.toList());
+        // 宸ュ崟鐘舵��
+        LambdaUpdateWrapper<WorkOrder> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        lambdaUpdateWrapper.in(WorkOrder::getId, ids);
+        lambdaUpdateWrapper.set(WorkOrder::getStatus, form.getAuditingResult());
+        baseMapper.update(lambdaUpdateWrapper);
+        // 娣诲姞澶氭潯瀹℃牳璁板綍
+        List<WorkOrderAuditingRecord> workOrderAuditingRecords = new ArrayList<>();
+        for (Integer id : ids) {
+            WorkOrderAuditingRecord workOrderAuditingRecord = new WorkOrderAuditingRecord();
+            workOrderAuditingRecord.setWorkOrderId(id);
+            workOrderAuditingRecord.setAuditingUser(SecurityUtils.getLoginUser().getUserId().intValue());
+            workOrderAuditingRecord.setResult(form.getAuditingResult().getDesc());
+            workOrderAuditingRecord.setRemark(form.getAuditingRemark());
+            workOrderAuditingRecords.add(workOrderAuditingRecord);
+        }
+        workOrderAuditingRecordService.saveBatch(workOrderAuditingRecords);
+        // 娣诲姞鏂伴�氱煡
+        List<Notify> notifies = new ArrayList<>();
+        for (WorkOrder workOrder : list) {
+            Notify notify = Notify.genEntityByUnit(NotifyTypeEnum.WORK_ORDER,
+                    form.getAuditingResult().getDesc(),
+                    workOrder.getUnitId(),
+                    UrgentLevelEnum.WARNING,
+                    workOrder.getWorkOrderNo());
+            notifies.add(notify);
+        }
+        notifyService.saveBatch(notifies);
+        return Result.ok("鎿嶄綔鎴愬姛");
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     public Result ywCondition(WorkOrderYWConditionForm form) {
         WorkOrder workOrder = baseMapper.selectById(form.getId());
         if (Objects.isNull(workOrder)) {
@@ -143,22 +194,9 @@
     }
 
     @Override
-    public Result selectYwConditionByYwId(String id) {
-        return Result.ok().data(
-                new LambdaQueryChainWrapper<>(workOrderYwConditionRecordMapper)
-                        .eq(WorkOrderYwConditionRecord::getWorkOrderId, id)
-                        .orderByAsc(WorkOrderYwConditionRecord::getCreateTime)
-                        .last("limit 1")
-                        .one());
-    }
-
-    @Override
-    public Result selectYwConditionListByYwId(String id) {
-        return Result.ok().data(
-                new LambdaQueryChainWrapper<>(workOrderYwConditionRecordMapper)
-                        .eq(WorkOrderYwConditionRecord::getWorkOrderId, id)
-                        .orderByAsc(WorkOrderYwConditionRecord::getCreateTime)
-                        .list());
+    public Result selectYwConditionByYwId(Integer id) {
+        List<WorkOrderYwConditionRecordVO> ywConditionList = workOrderYwConditionRecordMapper.selectYwConditionByYwId(id);
+        return Result.ok().data(ywConditionList);
     }
 
     @Override
@@ -220,8 +258,14 @@
 
     @Override
     public Result distributePage(DistributeWorkOrderQuery query) {
-        List<WorkOrderVO> page = baseMapper.distributePage(query);
-        return Result.ok().data(page).total(page.size());
+        IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
+        baseMapper.distributePage(page, query);
+        page.getRecords().stream().forEach(workOrder -> {
+            if (StringUtils.hasText(workOrder.getPointTag()) && workOrder.getPointTag().contains(IMPORTANT)) {
+                workOrder.setImportant(Boolean.TRUE);
+            }
+        });
+        return Result.ok().data(page).total(page.getTotal());
     }
 
     @Override

--
Gitblit v1.8.0