Преглед на файлове

限制机器人 取移动顺序

zhuhao преди 2 години
родител
ревизия
65fb4bb2e6

+ 5 - 0
IMCS_CCS/Entitys/RequestData.cs

@@ -7,6 +7,11 @@ namespace IMCS.CCS.Models
         /// 定位
         /// </summary>
         public string Location { get; set; }
+
+        /// <summary>
+        /// 条件限制标志 空或1 限制规则,0不限制
+        /// </summary>
+        public string IsAllowFlag { get; set; }
     }
  
     public class UploadFileData

+ 4 - 0
IMCS_CCS/Repository/ITaskCallbackRepository.cs

@@ -10,6 +10,10 @@ namespace IMCS.CCS.Repository
         Task<List<TaskCallback>> GetAllList();
         //根据条件查询
         Task<List<TaskCallback>> GetList(TaskCallback vo);
+
+        //查机器人动作列表
+        Task<TaskCallback> GetRobotActionList(TaskCallback vo);
+
         //查询详情
         Task<TaskCallback> GetById(int id);
 

+ 21 - 2
IMCS_CCS/Repository/TaskCallbackRepository.cs

@@ -1,5 +1,6 @@
 using IMCS.CCS.Entitys;
-using Microsoft.EntityFrameworkCore; 
+using Microsoft.EntityFrameworkCore;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
@@ -39,7 +40,25 @@ namespace IMCS.CCS.Repository
              
             return await list.ToListAsync();
 
-        } 
+        }
+
+        //查机器人动作列表
+        public async Task<TaskCallback> GetRobotActionList(TaskCallback vo)
+        {
+            IQueryable<TaskCallback> list = _context.TaskCallback;
+            list.Where(x => DateTime.Now.Subtract(x.CreateTime).TotalMinutes <= 2);
+            if (!string.IsNullOrEmpty(vo.IP))
+            {
+                list = list.Where(x => x.IP == vo.IP);
+            } 
+
+            list = list.Where(x => x.OperateType == ActionTypeEnum.MoveRobotPosition.ToString()
+                              || x.OperateType == ActionTypeEnum.GetQualityCenter.ToString()
+                              || x.OperateType == ActionTypeEnum.SendQualityCenter.ToString()); 
+
+            return await list.OrderByDescending(o => o.CreateTime).FirstOrDefaultAsync();
+
+        }
 
         //查询详情
         public async Task<TaskCallback> GetById(int id)

+ 3 - 0
IMCS_CCS/Service/ITaskCallbackService.cs

@@ -10,6 +10,9 @@ namespace IMCS.CCS.Services
 
         Task<List<TaskCallback>> GetAllList();
 
+        //查机器人动作列表
+        Task<TaskCallback> GetRobotActionList(TaskCallback vo);
+
         //查询详情
         Task<TaskCallback> GetById(int id);
 

+ 56 - 0
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -360,6 +360,15 @@ namespace IMCS.CCS.Services
                     responseData.result = "false";
                     return responseData;
                 }
+                //移动取放条件
+                bool IsAllowFlag = await robotActionCondition(req.url, req.data.IsAllowFlag, ActionTypeEnum.GetQualityCenter.ToString());
+                if (!IsAllowFlag)
+                {
+                    Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter) + "并发动作异常===>>" + JsonConvert.SerializeObject(req),
+                  EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
+                    responseData.result = "false";
+                    return responseData;
+                }
 
                 CcsAction actionQuery = new CcsAction();
                 actionQuery.OperateType = ActionTypeEnum.GetQualityCenter.ToString();
@@ -380,6 +389,7 @@ namespace IMCS.CCS.Services
                 actionAddressQuery.ActionId = actionInfo.Id;
                 List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
 
+               
                 //查询条件
                 List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
                 foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
@@ -398,6 +408,7 @@ namespace IMCS.CCS.Services
                         }
                     }
                 }
+               
 
                 //查询写入地址列表
                 List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
@@ -623,6 +634,15 @@ namespace IMCS.CCS.Services
                     responseData.result = "false";
                     return responseData;
                 }
+                //移动取放条件
+                bool IsAllowFlag = await robotActionCondition(req.url, req.data.IsAllowFlag, ActionTypeEnum.SendQualityCenter.ToString());
+                if (!IsAllowFlag)
+                {
+                    Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter) + "并发动作异常===>>" + JsonConvert.SerializeObject(req),
+                  EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
+                    responseData.result = "false";
+                    return responseData;
+                }
 
                 CcsAction actionQuery = new CcsAction();
                 actionQuery.OperateType = ActionTypeEnum.SendQualityCenter.ToString();
@@ -719,6 +739,16 @@ namespace IMCS.CCS.Services
                     return responseData;
                 }
 
+                //移动取放条件
+                bool IsAllowFlag = await robotActionCondition(req.url, req.data.IsAllowFlag, ActionTypeEnum.MoveRobotPosition.ToString());
+                if (!IsAllowFlag)
+                {
+                    Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition) + "并发动作异常===>>" + JsonConvert.SerializeObject(req),
+                  EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
+                    responseData.result = "false";
+                    return responseData;
+                }
+
                 CcsAction actionQuery = new CcsAction();
                 actionQuery.OperateType = ActionTypeEnum.MoveRobotPosition.ToString();
                 actionQuery.Ip = req.url;
@@ -2178,6 +2208,32 @@ namespace IMCS.CCS.Services
             }
         }
 
+        //移动取放 条件限制
+        private async Task<bool> robotActionCondition(string ip ,string isAllowFlag,string currentAction)
+        {
+            //isAllowFlag 不传或为1时限制条件
+            if (string.IsNullOrEmpty(isAllowFlag) || isAllowFlag == "1")
+            {
+                //查询当前执行过的任务 
+                TaskCallback queryTaskCallback = new TaskCallback();
+                queryTaskCallback.IP = ip;
+                TaskCallback taskCallBack = await _taskCallbackService.GetRobotActionList(queryTaskCallback); 
+                
+                 if(taskCallBack != null)
+                { 
+                    if((currentAction == ActionTypeEnum.MoveRobotPosition.ToString() && taskCallBack.OperateType != ActionTypeEnum.SendQualityCenter.ToString())
+                        || (currentAction == ActionTypeEnum.GetQualityCenter.ToString() && taskCallBack.OperateType != ActionTypeEnum.MoveRobotPosition.ToString())
+                        || (currentAction == ActionTypeEnum.SendQualityCenter.ToString() && taskCallBack.OperateType != ActionTypeEnum.GetQualityCenter.ToString()))
+                    {
+                        return false;
+                    }
+                }
+
+                return true;
+            }
+            return true;
+        }
+
         //设置回调值
         private TaskCallback setCallBackValue(List<CcsActionAddress> CcsActionAddresses, TaskCallback taskCallbackData)
         {

+ 6 - 0
IMCS_CCS/Service/Impl/TaskCallbackService.cs

@@ -31,6 +31,12 @@ namespace IMCS.CCS.Services
         {
             return await _repository.GetAllList();
         }
+        //查机器人动作列表
+        public async Task<TaskCallback> GetRobotActionList(TaskCallback vo)
+        {
+            return await _repository.GetRobotActionList(vo);
+        }
+
         //查询详情
         public async Task<TaskCallback> GetById(int id)
         {