From fb5aa087eaf6a68cf7ea8114beb270551016e7dd Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期二, 29 七月 2025 11:27:45 +0800
Subject: [PATCH] 添加定型指派设备

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java |  120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 118 insertions(+), 2 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java
index 0abd10a..2834fa9 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java
@@ -2,13 +2,19 @@
 
 import cn.hutool.core.date.DatePattern;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.compress.utils.Lists;
 import org.apache.commons.lang3.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.constant.WebsocketConst;
 import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.board.vo.EquAndon;
 import org.jeecg.modules.mdc.dto.MdcEquProDto;
@@ -18,12 +24,15 @@
 import org.jeecg.modules.mdc.service.IMdcEquipmentService;
 import org.jeecg.modules.mdc.util.DateUtils;
 import org.jeecg.modules.mdc.vo.AndonOrderWebSocketVo;
+import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo;
 import org.jeecg.modules.message.websocket.WebSocket;
 import org.jeecg.modules.system.service.ISysDictService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -44,8 +53,11 @@
     private ISysUserService userService;
     @Resource
     private ISysDictService sysDictService;
+    @Resource
+    private ISysBaseAPI sysBaseApi;
 
     @Override
+    @Transactional
     public void procedureCall(AndonOrder andonOrder) {
         if (StringUtils.isBlank(andonOrder.getEquipmentId())) {
             throw new JeecgBootException("璇烽�夋嫨璁惧锛�");
@@ -63,9 +75,9 @@
             andonOrderInfo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(equipmentId) ? equipmentIdToProductionIdMap.get(equipmentId).getId() : null);
             andonOrderInfo.setAndonType(StringPool.ONE);
             andonOrderInfo.setOrderStatus(StringPool.ONE);
-            andonOrderInfo.setOperator(andonOrder.getOperator());
+            andonOrderInfo.setOperator(userId);
             andonOrderInfo.setOperateTime(new Date());
-            andonOrderInfo.setResponder(userId);
+            andonOrderInfo.setResponder(andonOrder.getOperator());
             andonOrderInfo.setCallReason(andonOrder.getCallReason());
             list.add(andonOrderInfo);
         }
@@ -83,6 +95,7 @@
                 andonOrderWebSocketVo.setPersonResponsible(user.getRealname());
                 andonOrderWebSocketVo.setRepairTime(StringPool.EMPTY);
                 andonOrderWebSocketVo.setFaultInfo(StringPool.EMPTY);
+                andonOrderWebSocketVo.setType("open");
                 andonOrderWebSocketVo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(order.getEquipmentId()) ? equipmentIdToProductionIdMap.get(order.getEquipmentId()).getProductionName() : null);
                 andonOrderWebSocketVoList.add(andonOrderWebSocketVo);
             }
@@ -117,4 +130,107 @@
         }
         return result;
     }
+
+    @Override
+    public List<AndonOrderWebSocketVo> untreatedAndonList() {
+        List<AndonOrderWebSocketVo> result = new ArrayList<>();
+        List<AndonOrder> andonOrderList = this.baseMapper.untreatedAndonList();
+        if (andonOrderList != null && !andonOrderList.isEmpty()) {
+
+            List<String> equipmentIds = andonOrderList.stream().map(AndonOrder::getEquipmentId).collect(Collectors.toList());
+            List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(equipmentIds);
+            Map<String, MdcEquProDto> equipmentIdToProductionIdMap = CollectionUtils.isNotEmpty(equipmentList) ? equipmentList.stream().collect(Collectors.toMap(MdcEquProDto::getEquipmentId, comRateDto -> comRateDto)) : new HashMap<>();
+
+            andonOrderList.forEach(andonOrder -> {
+                AndonOrderWebSocketVo andonOrderWebSocketVo = new AndonOrderWebSocketVo();
+                andonOrderWebSocketVo.setEquipmentId(andonOrder.getEquipmentId());
+                andonOrderWebSocketVo.setCallPersonnel(userService.getById(andonOrder.getOperator()).getRealname());
+                andonOrderWebSocketVo.setCallTime(DateUtils.format(andonOrder.getOperateTime(), DatePattern.NORM_DATE_PATTERN));
+                andonOrderWebSocketVo.setCallReason(andonOrder.getCallReason());
+                andonOrderWebSocketVo.setAndonType("绋嬪簭鍛煎彨");
+                andonOrderWebSocketVo.setPersonResponsible(userService.getById(andonOrder.getResponder()).getRealname());
+                andonOrderWebSocketVo.setRepairTime(StringPool.EMPTY);
+                andonOrderWebSocketVo.setFaultInfo(StringPool.EMPTY);
+                andonOrderWebSocketVo.setType("open");
+                andonOrderWebSocketVo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(andonOrder.getEquipmentId()) ? equipmentIdToProductionIdMap.get(andonOrder.getEquipmentId()).getProductionName() : null);
+                result.add(andonOrderWebSocketVo);
+
+            });
+        }
+        return result;
+    }
+
+    @Override
+    @Transactional
+    public void responseData(List<String> ids) {
+
+        if (CollectionUtils.isEmpty(ids)) {
+            throw new JeecgBootException("璇烽�夋嫨瑕佸搷搴旂殑鏁版嵁");
+        }
+        List<AndonOrder> andonOrderList = this.listByIds(ids);
+        List<AndonOrder> existAlreadyResponsedList = andonOrderList.stream().filter(andonOrder -> !"1".equals(andonOrder.getOrderStatus())).collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(existAlreadyResponsedList)) {
+            throw new JeecgBootException("瀛樺湪宸插搷搴旂殑瀹夌伅淇℃伅锛屾棤闇�閲嶅鍝嶅簲");
+        }
+        for (AndonOrder andonOrder : andonOrderList) {
+            andonOrder.setOrderStatus("2");
+            andonOrder.setResponseTime(new Date());
+        }
+
+        //鏌ヨ鍘傛埧淇℃伅
+        List<String> equipmentIds = andonOrderList.stream().map(AndonOrder::getEquipmentId).collect(Collectors.toList());
+        List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(equipmentIds);
+        Map<String, MdcEquProDto> equipmentIdToProductionIdMap = equipmentList.stream().collect(Collectors.toMap(MdcEquProDto::getEquipmentId, comRateDto -> comRateDto));
+
+        //淇濆瓨鎴愬姛鍚庤澶囧彂閫亀ebsocket娑堟伅
+        if (this.updateBatchById(andonOrderList)) {
+            List<AndonOrderWebSocketVo> andonOrderWebSocketVoList = Lists.newArrayList();
+            //璁剧疆websocket璇锋眰娑堟伅鏁版嵁
+            for (AndonOrder order : andonOrderList) {
+                AndonOrderWebSocketVo andonOrderWebSocketVo = new AndonOrderWebSocketVo();
+                andonOrderWebSocketVo.setEquipmentId(order.getEquipmentId());
+                andonOrderWebSocketVo.setCallPersonnel(userService.getById(order.getOperator()).getRealname());
+                andonOrderWebSocketVo.setCallTime(DateUtils.format(order.getOperateTime(), DatePattern.NORM_DATE_PATTERN));
+                andonOrderWebSocketVo.setCallReason(order.getCallReason());
+                andonOrderWebSocketVo.setAndonType("绋嬪簭鍛煎彨");
+                andonOrderWebSocketVo.setPersonResponsible(sysBaseApi.getUserById(order.getOperator()).getRealname());
+                andonOrderWebSocketVo.setRepairTime(StringPool.EMPTY);
+                andonOrderWebSocketVo.setFaultInfo(StringPool.EMPTY);
+                andonOrderWebSocketVo.setType("close");
+                andonOrderWebSocketVo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(order.getEquipmentId()) ? equipmentIdToProductionIdMap.get(order.getEquipmentId()).getProductionName() : null);
+                andonOrderWebSocketVoList.add(andonOrderWebSocketVo);
+            }
+
+            //鍙戦�亀ebsocket璇锋眰
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put(WebsocketConst.MSG_CMD, "andon");
+            jsonObject.put("data", andonOrderWebSocketVoList);
+            webSocket.sendMessage(jsonObject.toJSONString());
+        }
+    }
+
+    @Override
+    @Transactional
+    public void dealWith(AndonOrder andonOrder) {
+        if (Objects.isNull(andonOrder)) {
+            throw new JeecgBootException("璇烽�夋嫨闇�瑕佸鐞嗙殑瀹夌伅淇℃伅");
+        }
+
+        if (StringUtils.isBlank(andonOrder.getResolutionDescreption())) {
+            throw new JeecgBootException("澶勭悊缁撴灉鎻忚堪涓嶈兘涓虹┖");
+        }
+
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        andonOrder.setProcessor(user.getId());
+        andonOrder.setProcessTime(new Date());
+        andonOrder.setOrderStatus("3");
+
+        this.updateById(andonOrder);
+    }
+
+    @Override
+    public IPage<AndonOrder> pageList(String userId, AndonOrder andonOrder, Integer pageNo, Integer pageSize, HttpServletRequest req) {
+        IPage<AndonOrder> pageData = new Page<>(pageNo, pageSize);
+        return this.baseMapper.pageList(pageData, andonOrder, userId);
+    }
 }

--
Gitblit v1.9.3