Ver código fonte

异常处理功能后台处理

oyq28 3 anos atrás
pai
commit
11422e0c9a

+ 53 - 22
imcs-admin-boot/imcs-authority-server/src/main/java/com/github/zuihou/job/DashboardJob.java

@@ -10,12 +10,14 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.zuihou.authority.entity.auth.User;
 import com.github.zuihou.base.request.PageParams;
 import com.github.zuihou.business.operationManagementCenter.entity.Order;
 import com.github.zuihou.business.operationManagementCenter.entity.Plan;
 import com.github.zuihou.business.operationManagementCenter.service.OrderService;
 import com.github.zuihou.business.operationManagementCenter.service.PlanService;
 import com.github.zuihou.business.operationManagementCenter.service.TaskService;
+import com.github.zuihou.business.productionReadyCenter.dao.AAutoNodeLogMapper;
 import com.github.zuihou.business.productionReadyCenter.entity.AAutoNodeLog;
 import com.github.zuihou.business.productionReadyCenter.service.AAutoNodeLogService;
 import com.github.zuihou.business.productionResourceCenter.entity.Repair;
@@ -25,27 +27,38 @@ import com.github.zuihou.business.productionResourceCenter.service.ZZoneService;
 import com.github.zuihou.business.websocket.WebSocketServer;
 import com.github.zuihou.common.util.DateUtil;
 import com.github.zuihou.common.util.StringUtil;
+import com.github.zuihou.context.BaseContextConstants;
 import com.github.zuihou.context.BaseContextHandler;
+import com.github.zuihou.database.mybatis.auth.DataScope;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
+import com.github.zuihou.jwt.utils.JwtUtil;
+import com.github.zuihou.security.model.SysUser;
 import com.github.zuihou.utils.DateUtils;
 import com.google.common.collect.Maps;
+import io.jsonwebtoken.Claims;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.cxf.security.claims.authorization.Claim;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
+import javax.websocket.Session;
+import javax.ws.rs.core.SecurityContext;
 import java.lang.reflect.Field;
 import java.lang.reflect.ParameterizedType;
 import java.util.*;
 
+
 @Component
 public class DashboardJob {
 
@@ -74,7 +87,7 @@ public class DashboardJob {
     private RepairService repairService;
 
     @Autowired
-    private AAutoNodeLogService autoNodeLogService;
+    private AAutoNodeLogMapper aAutoNodeLogMapper;
 
     @Value("${zuihou.database.tenantDatabasePrefix}")
     private String database;
@@ -85,7 +98,35 @@ public class DashboardJob {
     public void updateDashboardJob(){
         //taskService.pushTask();
         BaseContextHandler.setTenant("0000");
+
+        List<String> userIds = webSocketServer.getUserIds();
+        //List<Session> sessions = webSocketServer.getSessions();
+        userIds.forEach(item->{
+            List<Session> sessions = webSocketServer.getSessions(item);
+            String userid = JwtUtil.parseJWT(item).get("userid").toString();
+            this.broadCastData(userid, sessions);
+            //webSocketServer.BroadCastInfo(pushMsg, sessions);
+        });
+
+            //logger.info("推送前端======"+pushMsg);
+            //webSocketServer.BroadCastInfo(pushMsg);
+            //更新推送状态
+//            if(CollectionUtil.isNotEmpty(warnData.getRecords())) {
+//                Long[] ids = warnData.getRecords().stream().map(item -> {
+//                    return item.getId();
+//                }).toArray(Long[]::new);
+//                UpdateWrapper<AAutoNodeLog> updateWrapper = new UpdateWrapper<AAutoNodeLog>();
+//                updateWrapper.lambda().set(AAutoNodeLog::getSendStatus, "1").in(AAutoNodeLog::getId, ids);
+//                autoNodeLogService.update(null, updateWrapper);
+//            }
+    }
+
+    private void broadCastData(String userid, List<Session> sessions){
+        String pushMsg = null;
         try {
+            DataScope datascope = new DataScope();
+            datascope.setUserId(Long.parseLong(userid));
+
             Map<String, Map<String, Object>> dataScreenMap = new HashMap<String, Map<String, Object>>();
             Map zoneData = Maps.newHashMap();
             zoneData.put("resourceStatus", "1");
@@ -97,7 +138,7 @@ public class DashboardJob {
             zoneMap.put("zoneData", zoneList);
             dataScreenMap.put("zoneMap", zoneMap);
 
-            PageParams  params = new PageParams();
+            PageParams params = new PageParams();
             params.setCurrent(1L);
             params.setSize(5l);
             params.setOrder("descending");
@@ -110,12 +151,12 @@ public class DashboardJob {
             LbqWrapper wrapper = wrap.lambda();
 
             Plan plan = BeanUtil.toBean(params.getModel(), Plan.class);
-            plan.setOrderProduceStatus(StringUtil.isEmpty(plan.getOrderProduceStatus())?"":StringUtil.changeIdsArrToSubQueryStr(plan.getOrderProduceStatus()));
+            plan.setOrderProduceStatus(StringUtil.isEmpty(plan.getOrderProduceStatus()) ? "" : StringUtil.changeIdsArrToSubQueryStr(plan.getOrderProduceStatus()));
             plan.setPlanStatus("2");
             Page<Plan> planPage = new Page<Plan>();
             planPage.setSearchCount(false);
 
-            IPage<Plan> planData = planService.pageList(planPage, plan.getBomDesc(), plan.getOrderName(),plan.getTaskBatchNo(),plan.getOrderProduceStatus(),null,null,null,null, wrapper);
+            IPage<Plan> planData = planService.pageList(planPage, plan.getBomDesc(), plan.getOrderName(), plan.getTaskBatchNo(), plan.getOrderProduceStatus(), null, null, null, null, wrapper);
             //planData = planData.getRecords().stream().map(obj -> obj.setEndTime() );
 
             Map planMap = Maps.newHashMap();
@@ -127,7 +168,7 @@ public class DashboardJob {
 
             Page<Order> orderPage = new Page<Order>();
             orderPage.setSearchCount(false);
-            IPage<Order> orderData = orderService.pageList(orderPage,null, OrderWrapper);
+            IPage<Order> orderData = orderService.pageList(orderPage, null, OrderWrapper);
 
             Map orderMap = Maps.newHashMap();
             orderMap.put("orderData", orderData);
@@ -148,9 +189,9 @@ public class DashboardJob {
             //Date start = new Date();
             //警报弹框只执行一次
             //返回还未处理、执行状态为失败、需要人工处理,并且还未推送的日志记录
-            warnWrapper.eq(AAutoNodeLog::getExeResult,"0").eq(AAutoNodeLog::getStatus,"0").eq(AAutoNodeLog::getManual, "1")
-                       .orderByDesc(AAutoNodeLog::getCreateTime);
-            IPage<AAutoNodeLog> warnData = autoNodeLogService.pageList(new Page<AAutoNodeLog>(1L, 5), warnWrapper);
+            warnWrapper.eq(AAutoNodeLog::getExeResult, "0").eq(AAutoNodeLog::getStatus, "0").eq(AAutoNodeLog::getManual, "1")
+                    .orderByDesc(AAutoNodeLog::getCreateTime);
+            IPage<AAutoNodeLog> warnData = aAutoNodeLogMapper.pageList(new Page<AAutoNodeLog>(1L, 5), warnWrapper, datascope);
 
             Map warnMap = Maps.newHashMap();
             warnMap.put("warnData", warnData);
@@ -162,25 +203,15 @@ public class DashboardJob {
             ObjectMapper objectMapper = new ObjectMapper();
             objectMapper.findAndRegisterModules();
             //String pushMsg = JSON.toJSONString(pushMap);
-            String pushMsg = objectMapper.writeValueAsString(pushMap);
-            //logger.info("推送前端======"+pushMsg);
-            webSocketServer.BroadCastInfo(pushMsg);
-
-            //更新推送状态
-//            if(CollectionUtil.isNotEmpty(warnData.getRecords())) {
-//                Long[] ids = warnData.getRecords().stream().map(item -> {
-//                    return item.getId();
-//                }).toArray(Long[]::new);
-//                UpdateWrapper<AAutoNodeLog> updateWrapper = new UpdateWrapper<AAutoNodeLog>();
-//                updateWrapper.lambda().set(AAutoNodeLog::getSendStatus, "1").in(AAutoNodeLog::getId, ids);
-//                autoNodeLogService.update(null, updateWrapper);
-//            }
+            pushMsg = objectMapper.writeValueAsString(pushMap);
+            webSocketServer.BroadCastInfo(pushMsg, sessions);
         }
         catch (Exception e){
-            logger.error("推送异常======"+e.getMessage());
+             logger.error("推送异常======"+e.getMessage());
         }
     }
 
+
     private  QueryWrap handlerWrapper(Object model, PageParams params) {
         QueryWrap wrapper = model == null ? Wraps.q() : Wraps.q(model);
         if (CollUtil.isNotEmpty(params.getMap())) {

+ 8 - 4
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/mq/TaskWorkNode.java

@@ -168,10 +168,14 @@ public class TaskWorkNode {
         if (consumerQueue.equals(queueName)) {
             AAutoNodeLog log = AAutoNodeLog.builder().build();
             StringBuilder buffer = new StringBuilder();
-            buffer.append(jsonObject.getString("Line")).append("-设备(").append(jsonObject.getString("Name")+")").append(jsonObject.getString("Status"));
-            log.setExeResult("0").setManual("1").setFeedback("全局异常:"+ buffer.toString()).setStartTime(new Date()).setExecuteTime(new Date());
+            //处理产线存储
+            String lineName = jsonObject.getString("Line");
+            ZZone line = zoneService.getOne(new LbqWrapper<ZZone>().eq(ZZone::getAbbreviate, lineName.substring(0, lineName.length()-1)));
+            buffer.append(lineName).append("-设备(").append(jsonObject.getString("Name")+")").append(jsonObject.getString("Status"));
+            log.setExeResult("0").setManual("1").setFeedback("全局异常:"+ buffer.toString()).setStartTime(new Date()).setExecuteTime(new Date()).setZoneId(line.getId());
+
             LbqWrapper<AAutoNodeLog> lbqWrapper = new LbqWrapper<AAutoNodeLog>();
-            lbqWrapper.eq(AAutoNodeLog::getExeResult, log.getExeResult()).eq(AAutoNodeLog::getManual, log.getManual()).eq(AAutoNodeLog::getStatus, 0).eq(AAutoNodeLog::getFeedback, log.getFeedback());
+            lbqWrapper.eq(AAutoNodeLog::getZoneId, line.getId()).eq(AAutoNodeLog::getExeResult, log.getExeResult()).eq(AAutoNodeLog::getManual, log.getManual()).eq(AAutoNodeLog::getStatus, 0).eq(AAutoNodeLog::getFeedback, log.getFeedback());
             //判断全局异常是否已存在
             AAutoNodeLog exist = autoNodeLogService.getOne(lbqWrapper);
             if(null == exist){
@@ -296,7 +300,7 @@ public class TaskWorkNode {
                     HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam, headers);
 
                     //动态调用接口和新增指令执行时间
-                    log.setMethod(conMap.get("method").toString()).setExecuteTime(new Date());
+                    log.setZoneId(zZone.getId()).setMethod(conMap.get("method").toString()).setExecuteTime(new Date());
                     String instructionUrl = DictionaryKey.INSTRUCTION_URL + "/api/" + conMap.get("method").toString();
                     System.out.println("instructionUrl=" + instructionUrl);
                     System.out.println("jsonParam=" + jsonParam);

+ 2 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/dao/AAutoNodeLogMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.github.zuihou.base.mapper.SuperMapper;
 import com.github.zuihou.business.productionReadyCenter.entity.AAutoNodeLog;
+import com.github.zuihou.database.mybatis.auth.DataScope;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -20,5 +21,5 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface AAutoNodeLogMapper extends SuperMapper<AAutoNodeLog> {
 
-    IPage<AAutoNodeLog> pageList(IPage page, @Param(Constants.WRAPPER) Wrapper<AAutoNodeLog> queryWrapper);
+    IPage<AAutoNodeLog> pageList(IPage page, @Param(Constants.WRAPPER) Wrapper<AAutoNodeLog> queryWrapper, DataScope dataScope);
 }

+ 2 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/service/impl/AAutoNodeLogServiceImpl.java

@@ -7,6 +7,7 @@ import com.github.zuihou.business.productionReadyCenter.dao.AAutoNodeLogMapper;
 import com.github.zuihou.business.productionReadyCenter.entity.AAutoNodeLog;
 import com.github.zuihou.business.productionReadyCenter.service.AAutoNodeLogService;
 import com.github.zuihou.context.BaseContextHandler;
+import com.github.zuihou.database.mybatis.auth.DataScope;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 import lombok.extern.slf4j.Slf4j;
@@ -36,7 +37,7 @@ public class AAutoNodeLogServiceImpl extends SuperServiceImpl<AAutoNodeLogMapper
 
     @Override
     public IPage<AAutoNodeLog> pageList(IPage page, LbqWrapper<AAutoNodeLog> wrapper) {
-        return baseMapper.pageList(page,wrapper);
+        return baseMapper.pageList(page,wrapper, new DataScope());
     }
 
     @Override

+ 28 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/websocket/WebSocketServer.java

@@ -13,6 +13,7 @@ import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 @ServerEndpoint(value = "/ws/{userid}")
 @Component
@@ -145,6 +146,33 @@ public class WebSocketServer {
         }
     }
 
+    /**
+     * 群发消息
+     * @param message
+     * @throws IOException
+     */
+    public  void BroadCastInfo(String message, List<Session> sessions) throws IOException{
+        for (Session session : sessions) {
+            if(session.isOpen()){
+                SendMessage(session, message);
+            }
+        }
+    }
+
+
+    /**
+     * 获取关联用户Id
+     *
+     * @return
+     */
+    public List<String> getUserIds(){
+         return userSessionsMap.entrySet().stream().map(x->x.getKey()).collect(Collectors.toList());
+    }
+
+    public List<Session> getSessions(String userId){
+        return userSessionsMap.get(userId);
+    }
+
     /**
      * 指定Session发送消息
      * @param sessionId

+ 3 - 2
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionReadyCenter/AAutoNodeLogMapper.xml

@@ -23,7 +23,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id,create_time ,create_user,update_time,update_user,method, execute_time,manual,
+        id,create_time ,create_user,update_time,update_user,method, execute_time,manual,zone_id,org_id,
         auto_node_id, exe_status, exe_result, start_time, end_time, feedback, feedback_file, status, resourceName,instructionName,procedureName,nodeNo
     </sql>
 
@@ -31,12 +31,13 @@
         select
         <include refid="Base_Column_List"/>
         from (
-        select l.*, a.name as nodeNo, c.name as resourceName, i.name as instructionName, p.name as procedureName from imcs_a_auto_node_log l
+        select l.*, a.name as nodeNo, c.name as resourceName, i.name as instructionName, p.name as procedureName, z.org_id from imcs_a_auto_node_log l
         left join imcs_resource_autocode a ON l.auto_node_id = a.id
         left join imcs_t_task d ON l.task_id = d.id
         left join imcs_tenant_productionresource c ON d.resource_id = c.id
         left join imcs_b_bom_procedure p ON d.procedure_id = p.id
         left join view_module_instruction i on l.method = i.code
+        left join imcs_z_zone z on l.zone_id = z.id
         ) s ${ew.customSqlSegment}
     </select>
 

+ 2 - 1
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/dispatchRecord/DispatchExceptionController.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.zuihou.base.R;
+import com.github.zuihou.base.controller.QueryController;
 import com.github.zuihou.base.controller.SuperSimpleController;
 import com.github.zuihou.base.request.PageParams;
 import com.github.zuihou.business.dispatchRecord.entity.DispatchException;
@@ -87,7 +88,7 @@ public class DispatchExceptionController extends SuperSimpleController<AAutoNode
                 .orderByDesc(AAutoNodeLog::getCreateTime);
         //查询弹框异常
         wrapper.eq(AAutoNodeLog::getExeResult,"0").eq(AAutoNodeLog::getManual, "1").eq(AAutoNodeLog::getStatus, "0");
-        aAutoNodeLogService.page(page, wrapper);
+        aAutoNodeLogService.pageList(page, wrapper);
         return this.success(page);
     }
 

+ 10 - 1
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/entity/AAutoNodeLog.java

@@ -178,6 +178,14 @@ public class AAutoNodeLog extends Entity<Long> {
     @Excel(name = "任务id")
     private Long taskId;
 
+    /**
+     * 产线id
+     */
+    @ApiModelProperty(value = "产线id")
+    @TableField("zone_id")
+    @Excel(name = "产线id")
+    private Long zoneId;
+
     /**
      * 设备名称
      */
@@ -210,7 +218,7 @@ public class AAutoNodeLog extends Entity<Long> {
     @Builder
     public AAutoNodeLog(Long id, LocalDateTime createTime, Long createUser, LocalDateTime updateTime, Long updateUser,
                     Long autoNodeId, String exeStatus, String exeResult, Date startTime, Date endTime,
-                    String feedback, String feedbackFile, String method) {
+                    String feedback, String feedbackFile, String method, Long zoneId) {
         this.id = id;
         this.createTime = createTime;
         this.createUser = createUser;
@@ -224,6 +232,7 @@ public class AAutoNodeLog extends Entity<Long> {
         this.feedback = feedback;
         this.feedbackFile = feedbackFile;
         this.method = method;
+        this.zoneId = zoneId;
     }
 
 }

+ 10 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionResourceCenter/entity/ZZone.java

@@ -57,6 +57,16 @@ public class ZZone extends Entity<Long> {
     @Excel(name = "名称")
     private String name;
 
+
+    /**
+     * 名称
+     */
+    @ApiModelProperty(value = "简称")
+    @Length(max = 32, message = "名称简写长度不能超过32")
+    @TableField(value = "abbreviate", condition = LIKE)
+    @Excel(name = "简称")
+    private String abbreviate;
+
     /**
      * 备注
      */