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 |  186 +++++++++++++++++++++++-----------------------
 1 files changed, 94 insertions(+), 92 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 670853e..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,8 +23,9 @@
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.SecurityUtils;
 import com.ycl.utils.redis.RedisCache;
-import enumeration.general.NotifyTypeEnum;
-import enumeration.general.WorkOrderStatusEnum;
+import com.ycl.utils.uuid.IdUtils;
+import constant.PointConfigConstants;
+import enumeration.general.*;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.BeanUtils;
@@ -29,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;
@@ -52,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;
@@ -69,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("娣诲姞鎴愬姛");
         }
@@ -113,12 +120,55 @@
         workOrderAuditingRecord.setRemark(form.getAuditingRemark());
         workOrderAuditingRecordMapper.insert(workOrderAuditingRecord);
         // 娣诲姞鏂伴�氱煡
-        try {
-            Notify notify = new Notify(NotifyTypeEnum.WORK_ORDER, form.getAuditingResult().getDesc(), workOrder.getYwPeopleId(), "0", "0", workOrder.getId());
-            notifyService.save(notify);
-        } catch (Exception e) {
-            return Result.error("瀹℃牳鎴愬姛锛岄�氱煡杩愮淮浜哄憳澶辫触");
+        Notify notify = Notify.genEntityByUnit(NotifyTypeEnum.WORK_ORDER,
+                form.getAuditingResult().getDesc(),
+                workOrder.getUnitId(),
+                UrgentLevelEnum.WARNING,
+                workOrder.getWorkOrderNo());
+        notifyService.save(notify);
+        return Result.ok("鎿嶄綔鎴愬姛");
+    }
+
+    @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("鎿嶄綔鎴愬姛");
     }
 
@@ -131,6 +181,7 @@
         }
         // 宸ュ崟鐘舵��
         workOrder.setStatus(WorkOrderStatusEnum.YW_HANDLE);
+        workOrder.setYwHandleTime(LocalDateTime.now());
         baseMapper.updateById(workOrder);
         // 娣诲姞涓�鏉¤繍缁存儏鍐佃褰�
         WorkOrderYwConditionRecord workOrderYwConditionRecord = new WorkOrderYwConditionRecord();
@@ -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
@@ -213,60 +251,21 @@
      */
     @Override
     public Result page(WorkOrderQuery query) {
-        IPage<WorkOrder> page = new LambdaQueryChainWrapper<>(baseMapper)
-                .eq(StringUtils.hasText(query.getWorkOrderNo()), WorkOrder::getWorkOrderNo, query.getWorkOrderNo())
-                .eq(StringUtils.hasText(query.getStatus().getValue()), WorkOrder::getStatus, query.getStatus())
-                .eq(StringUtils.hasText(query.getErrorType()), WorkOrder::getErrorType, query.getErrorType())
-                .between(Objects.nonNull(query.getStart()) && Objects.nonNull(query.getEnd()),
-                        WorkOrder::getYwHandleTime,
-                        DateUtils.getDayStart(query.getStart()),
-                        DateUtils.getDayEnd(query.getEnd()))
-                .orderByDesc(WorkOrder::getCreateTime)
-                .page(PageUtil.getPage(query, WorkOrder.class));
-
-        List<WorkOrderVO> vos = page.getRecords().stream()
-                .map(
-                        entity -> {
-                            WorkOrderVO vo = WorkOrderVO.getVoByEntity(entity, null);
-                            YwUnit unit = ywUnitMapper.selectById(vo.getUnitId());
-                            if (Objects.nonNull(unit)) {
-                                vo.setUnitName(unit.getUnitName());
-                            }
-                            YwPeople ywPeople = ywPeopleMapper.selectById(vo.getYwPeopleId());
-                            if (Objects.nonNull(ywPeople)) {
-                                vo.setYwPeopleName(ywPeople.getYwPersonName());
-                            }
-                            return vo;
-                        }
-                )
-                .collect(Collectors.toList());
-        return Result.ok().data(vos).total(page.getTotal());
+        IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
+        baseMapper.page(page, query);
+        return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
     @Override
     public Result distributePage(DistributeWorkOrderQuery query) {
-        IPage<WorkOrder> page = new LambdaQueryChainWrapper<>(baseMapper)
-                .eq(Objects.nonNull(query.getUnitId()), WorkOrder::getUnitId, query.getUnitId())
-                .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
-                .orderByDesc(WorkOrder::getCreateTime)
-                .page(PageUtil.getPage(query, WorkOrder.class));
-        List<WorkOrderVO> vos = page.getRecords().stream()
-                .map(
-                        entity -> {
-                            WorkOrderVO vo = WorkOrderVO.getVoByEntity(entity, null);
-                            YwUnit unit = ywUnitMapper.selectById(vo.getUnitId());
-                            if (Objects.nonNull(unit)) {
-                                vo.setUnitName(unit.getUnitName());
-                            }
-                            YwPeople ywPeople = ywPeopleMapper.selectById(vo.getYwPeopleId());
-                            if (Objects.nonNull(ywPeople)) {
-                                vo.setYwPeopleName(ywPeople.getYwPersonName());
-                            }
-                            return vo;
-                        }
-                )
-                .collect(Collectors.toList());
-        return Result.ok().data(vos).total(page.getTotal());
+        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
@@ -309,48 +308,51 @@
             return Result.error("娌℃湁绗﹀悎鏉′欢鐨勫伐鍗�");
         }
         if (!getDistributeLock()) {
-            return Result.error("宸ュ崟涓嬪彂涓紝璇风◢鍚庨噸璇�");
+            return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�");
         }
         try {
             new LambdaUpdateChainWrapper<>(baseMapper)
                     .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
                     .in(WorkOrder::getId, ids)
                     .update();
-            addDistributeRecord(ids);
+            addDistributeRecord(ids, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE);
             return Result.ok("鎴愬姛涓嬪彂" + ids.size() + "鏉″伐鍗�");
         } catch (Exception e) {
-            return Result.ok("鎿嶄綔澶辫触");
+            return Result.error("鎿嶄綔澶辫触");
         } finally {
             distributeUnLock();
         }
     }
 
     @Override
-    public Result selectedIdsDistribute(List<Integer> ids, Integer unitId) {
+    public Result selectedIdsDistribute(DistributeWorkOrderQuery query) {
+        WorkOrderDistributeWayEnum distributeWayEnum = WorkOrderDistributeWayEnum.SELECTED_DISTRIBUTE;
         if (!getDistributeLock()) {
-            return Result.error("宸ュ崟涓嬪彂涓紝璇风◢鍚庨噸璇�");
+            return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�");
         }
         try {
-            if (ids.isEmpty()) {
-                ids = new LambdaQueryChainWrapper<>(baseMapper)
+            if (query.getIds().isEmpty()) {
+                query.setIds(new LambdaQueryChainWrapper<>(baseMapper)
                         .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
-                        .eq(Objects.nonNull(unitId), WorkOrder::getUnitId, unitId)
+                        .eq(Objects.nonNull(query.getUnitId()), WorkOrder::getUnitId, query.getUnitId())
                         .select(WorkOrder::getId)
                         .list()
                         .stream()
                         .map(WorkOrder::getId)
-                        .collect(Collectors.toList());
+                        .collect(Collectors.toList()));
+                distributeWayEnum = WorkOrderDistributeWayEnum.ALL_DISTRIBUTE;
+            }
+            if (query.getIds().isEmpty()) {
+                return Result.error("娌℃湁宸ュ崟寰呬笅鍙�");
             }
             new LambdaUpdateChainWrapper<>(baseMapper)
                     .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
-                    .in(WorkOrder::getId, ids)
-                    .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
-                    .eq(Objects.nonNull(unitId), WorkOrder::getUnitId, unitId)
+                    .in(WorkOrder::getId, query.getIds())
                     .update();
-            addDistributeRecord(ids);
-            return Result.ok("鎿嶄綔鎴愬姛");
+            addDistributeRecord(query.getIds(), distributeWayEnum);
+            return Result.ok("鎴愬姛涓嬪彂" + query.getIds().size() + "鏉″伐鍗�");
         } catch (Exception e) {
-            return Result.ok("鎿嶄綔澶辫触");
+            return Result.error("鎿嶄綔澶辫触");
         } finally {
             distributeUnLock();
         }
@@ -380,11 +382,11 @@
      * 娣诲姞宸ュ崟涓嬪彂璁板綍
      * @param ids 宸ュ崟id
      */
-    private void addDistributeRecord(List<Integer> ids) {
+    private void addDistributeRecord(List<Integer> ids, WorkOrderDistributeWayEnum distributeWay) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         workOrderDistributeRecordMapper.insertBatch(
                 ids.stream()
-                        .map(id -> new WorkOrderDistributeRecord(id, loginUser.getUserId()))
+                        .map(id -> new WorkOrderDistributeRecord(id, loginUser.getUserId(), distributeWay))
                         .toList()
         );
     }

--
Gitblit v1.8.0