zhuhao vor 3 Jahren
Ursprung
Commit
5b2b7144b8

+ 24 - 0
IMCS_CCS/Controllers/JobTasksController.cs

@@ -52,6 +52,24 @@ namespace IMCS.CCS.Controllers
             return await _taskJobService.CallbackJob3();
         }
 
+        [HttpPost("CallbackJob4")]
+        public async Task<string> CallbackJob4()
+        {
+            return await _taskJobService.CallbackJob4();
+        }
+
+        [HttpPost("CallbackJob5")]
+        public async Task<string> CallbackJob5()
+        {
+            return await _taskJobService.CallbackJob5();
+        }
+
+        [HttpPost("CallbackJob6")]
+        public async Task<string> CallbackJob6()
+        {
+            return await _taskJobService.CallbackJob6();
+        }
+
         [HttpPost("DataCollectOPCUAJob")]
         public async Task<string> DataCollectOPCUAJob()
         {
@@ -70,6 +88,12 @@ namespace IMCS.CCS.Controllers
             return await _taskJobService.DataCollectFanucJob();
         }
 
+        [HttpPost("MonitorEquipmentStatusJob")]
+        public async Task<string> MonitorEquipmentStatusJob()
+        {
+            return await _taskJobService.MonitorEquipmentStatusJob();
+        }
+
         [HttpPost("DeviceStatusJob")]
         public async Task<string> DeviceStatusJob()
         {

+ 54 - 0
IMCS_CCS/Entitys/CcsAction.cs

@@ -61,6 +61,24 @@ namespace IMCS.CCS.Entitys
         [Column("address12")]
         public string Address12 { get; set; }
 
+        [Column("check_address")]
+        public string CheckAddress { get; set; } 
+
+        [Column("check_address2")]
+        public string CheckAddress2 { get; set; }
+
+        [Column("check_address3")]
+        public string CheckAddress3 { get; set; }
+
+        [Column("check_address4")]
+        public string CheckAddress4 { get; set; }
+
+        [Column("check_address5")]
+        public string CheckAddress5 { get; set; }
+
+        [Column("check_address6")]
+        public string CheckAddress6 { get; set; }
+
         [Column("check_value")]
         public string CheckValue { get; set; } 
 
@@ -82,6 +100,42 @@ namespace IMCS.CCS.Entitys
         [Column("check_value7")]
         public string CheckValue7 { get; set; }
 
+        [Column("check_type")]
+        public bool CheckType { get; set; }
+
+        [Column("check_type2")]
+        public bool CheckType2 { get; set; }
+
+        [Column("check_type3")]
+        public bool CheckType3 { get; set; }
+
+        [Column("check_type4")]
+        public bool CheckType4 { get; set; }
+
+        [Column("check_type5")]
+        public bool CheckType5 { get; set; }
+
+        [Column("check_type6")]
+        public bool CheckType6 { get; set; }
+
+        [Column("callback_address")]
+        public string CallbackAddress { get; set; }
+
+        [Column("callback_address2")]
+        public string CallbackAddress2 { get; set; }
+
+        [Column("callback_address3")]
+        public string CallbackAddress3 { get; set; }
+
+        [Column("callback_address4")]
+        public string CallbackAddress4 { get; set; }
+
+        [Column("callback_address5")]
+        public string CallbackAddress5 { get; set; }
+
+        [Column("callback_address6")]
+        public string CallbackAddress6 { get; set; }
+
         [Column("callback_value")]
         public string CallbackValue { get; set; }
 

+ 3 - 0
IMCS_CCS/Entitys/EquipmentMonitor.cs

@@ -40,6 +40,9 @@ namespace IMCS.CCS.Entitys
         [Column("address")]
         public string Address { get; set; }
 
+        [Column("address2")]
+        public string Address2 { get; set; }
+
         [Column("source")]
         public string Source { get; set; }
 

+ 138 - 4
IMCS_CCS/IMCS.CCS.xml

@@ -201,7 +201,7 @@
         </member>
         <member name="M:IMCS.CCS.Controllers.CcsController.GetTagValue(IMCS.CCS.Models.RequestTagValueData)">
             <summary>
-            益模调用接口,显示3D: POST: api/GetDigitalTwins
+            获取状态当前值: POST: api/RequestTagValueData
             </summary> 
             <returns></returns> 
         </member>
@@ -342,7 +342,7 @@
             <summary>
             修改设备信息:PUT: api/Users/5
             </summary>
-            <param name="user"></param>
+            <param name="device"></param>
             <returns></returns>
         </member>
         <member name="M:IMCS.CCS.Controllers.DeviceController.PostDevice(IMCS.CCS.Entitys.Device)">
@@ -363,7 +363,7 @@
             <summary>
             修改设备信息:PUT: api/Users/5
             </summary>
-            <param name="user"></param>
+            <param name="device"></param>
             <returns></returns>
         </member>
         <member name="M:IMCS.CCS.Controllers.EquipmentMonitorController.PostDevice(IMCS.CCS.Entitys.EquipmentMonitor)">
@@ -1222,9 +1222,15 @@
             </summary> 
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.DataCollectFanucJob">
+            <summary>
+            采集数据FANUC
+            </summary> 
+            <returns></returns>
+        </member>
         <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob1">
             <summary>
-            机床启动,上传程序回调任务
+            上传程序回调任务
             </summary> 
             <returns></returns>
         </member>
@@ -1240,12 +1246,42 @@
             </summary> 
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob4">
+            <summary>
+            启动机床程序,智能单元及质量中心取放回调任务
+            </summary> 
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob5">
+            <summary>
+            启动清洗机回调任务
+            </summary> 
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob6">
+            <summary>
+            启动三坐标回调任务
+            </summary> 
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.MonitorEquipmentStatusJob">
+            <summary>
+            监控设备状态
+            </summary> 
+            <returns></returns>
+        </member>
         <member name="M:IMCS.CCS.Service.Impl.TaskJobService.DeviceStatusJob">
             <summary>
             监控设备状态
             </summary> 
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.GetFanucValue(IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc,System.String)">
+            <summary>
+            fanuc根据类型获取值
+            </summary> 
+            <returns></returns>
+        </member>
         <member name="T:IMCS.CCS.Service.Impl.TaskService">
             <summary>
             任务服务
@@ -1378,6 +1414,24 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Service.ITaskJobService.CallbackJob4">
+            <summary>
+            启动机床程序,智能单元及质量中心取放回调任务
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.ITaskJobService.CallbackJob5">
+            <summary>
+            启动清洗机回调任务
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.ITaskJobService.CallbackJob6">
+            <summary>
+            启动三坐标回调任务
+            </summary>
+            <returns></returns>
+        </member>
         <member name="M:IMCS.CCS.Service.ITaskJobService.DataCollectOPCUAJob">
             <summary>
             OPCUA采集
@@ -1390,6 +1444,18 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Service.ITaskJobService.DataCollectFanucJob">
+            <summary>
+            采集数据FANUC
+            </summary> 
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.ITaskJobService.MonitorEquipmentStatusJob">
+            <summary>
+            监控设备状态
+            </summary>
+            <returns></returns>
+        </member>
         <member name="M:IMCS.CCS.Service.ITaskJobService.DeviceStatusJob">
             <summary>
             监控设备状态
@@ -1827,5 +1893,73 @@
             SCP获取文件
             </summary> 
         </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.GetNumber">
+            <summary>
+            fanuc单次计数
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.GetTotalNumber">
+            <summary>
+            fanuc累计计数
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.GetPostion(System.String@,System.String@,System.String@,System.String@)">
+            <summary>
+            有效轴数
+            </summary>
+            <param name="xd">相对位置</param>
+            <param name="jd">绝对位置</param>
+            <param name="jx">机械位置</param>
+            <param name="sy">剩余位置</param>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.GetStateInfo(System.String@,System.String@)">
+            <summary>
+            
+            </summary>
+            <param name="Macmode">工作模式</param>
+            <param name="Runstatus">加工状态</param>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.GetRegPrg(System.String@,System.String@,System.String@)">
+            <summary>
+            返回注册程序量
+            </summary>
+            <param name="unreg_prg">可用程序数量</param>
+            <param name="unused_mem">未使用的内存</param>
+            <param name="used_mem">已经使用内存</param>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.FGetToolNum">
+            <summary>
+            获取当前执行的刀号
+            </summary>
+            <param name="no"></param>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.FGetPrgSeq">
+            <summary>
+            执行行号
+            </summary>
+            <param name="no"></param>
+            <param name="result"></param>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.FGetCurrentPrg">
+            <summary>
+            当前执行代码
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.Get_tool_life(System.String@,System.String@,System.String@,System.String@)">
+            <summary>
+            
+            </summary>
+            <param name="dpsl">刀片组数量</param>
+            <param name="dph">刀片号</param>
+            <param name="dpzh">刀组号</param>
+            <param name="smjs">寿命计时</param>
+        </member>
     </members>
 </doc>

+ 23 - 0
IMCS_CCS/Service/ITaskJobService.cs

@@ -30,6 +30,23 @@ namespace IMCS.CCS.Service
         /// <returns></returns>
         Task<string> CallbackJob3();
 
+        /// <summary>
+        /// 启动机床程序,智能单元及质量中心取放回调任务
+        /// </summary>
+        /// <returns></returns>
+        Task<string> CallbackJob4();
+
+        /// <summary>
+        /// 启动清洗机回调任务
+        /// </summary>
+        /// <returns></returns>
+        Task<string> CallbackJob5();
+
+        /// <summary>
+        /// 启动三坐标回调任务
+        /// </summary>
+        /// <returns></returns>
+        Task<string> CallbackJob6();
 
         /// <summary>
         /// OPCUA采集
@@ -49,6 +66,12 @@ namespace IMCS.CCS.Service
         /// <returns></returns>
         Task<string> DataCollectFanucJob();
 
+        /// <summary>
+        /// 监控设备状态
+        /// </summary>
+        /// <returns></returns>
+        Task<string> MonitorEquipmentStatusJob();
+
         /// <summary>
         /// 监控设备状态
         /// </summary>

+ 366 - 231
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -120,36 +120,44 @@ namespace IMCS.CCS.Services
 
                 Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
                 if (s7.IsConnected != true)
-                {
-                    s7.Close();
+                { 
                     Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
                     EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
                     responseData.result = "false";
                     return responseData;
                 }
 
-                string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
-                var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
-                if (operateResult.ToString() != actionInfo.CheckValue)
+                if(!string.IsNullOrEmpty(actionInfo.CheckAddress) && !string.IsNullOrEmpty(actionInfo.CheckValue))
                 {
-                    s7.Close();
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
-                    responseData.result = "false";
-                    return responseData;
+                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
+                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                    if (actionInfo.CheckType ? operateResult.ToString().Equals(actionInfo.CheckValue)  : operateResult.ToString() != actionInfo.CheckValue)
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
+                        responseData.result = "false";
+                        return responseData;
+                    }
                 }
 
-                string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
-                s7.Write(Address1, Convert.ToInt16(req.data.Location));
-                Thread.Sleep(SLEEP_TIME);
-
-                string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
-                s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex));
+                if (!string.IsNullOrEmpty(actionInfo.Address))
+                {
+                    string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
+                    s7.Write(Address1, Convert.ToInt16(req.data.Location));
+                    Thread.Sleep(SLEEP_TIME);
+                }
+                if (!string.IsNullOrEmpty(actionInfo.Address2))
+                {
+                    string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
+                    s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex)); 
+                }
                 s7.Close();
 
+
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetIntelligenceUnit.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
+                    EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue);
                 taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
                 await _taskCallbackService.Create(taskCallbackData);
                 Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit) + "取物品成功===>>" + JsonConvert.SerializeObject(req)
@@ -201,43 +209,56 @@ namespace IMCS.CCS.Services
                     return responseData;
                 }
 
-
-                string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
-                var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
-                if ((operateResult.ToString() != actionInfo.CheckValue) && (operateResult.ToString() != actionInfo.CheckValue2) && (operateResult.ToString() != actionInfo.CheckValue3))
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress))
                 {
-                    s7.Close();
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
-                    responseData.result = "false";
-                    return responseData;
+                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
+                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                    bool CheckFlag = string.IsNullOrEmpty(actionInfo.CheckValue) ? false : (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue));
+                    bool CheckFlag2 = string.IsNullOrEmpty(actionInfo.CheckValue2) ? true : (actionInfo.CheckType2 ? (operateResult.ToString() == actionInfo.CheckValue2) : (operateResult.ToString() != actionInfo.CheckValue2));
+                    bool CheckFlag3 = string.IsNullOrEmpty(actionInfo.CheckValue3) ? true : (actionInfo.CheckType3 ? (operateResult.ToString() == actionInfo.CheckValue3) : (operateResult.ToString() != actionInfo.CheckValue3));
+                    if (CheckFlag && CheckFlag2 && CheckFlag3)
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
+                        responseData.result = "false";
+                        return responseData;
+                    }
                 }
+  
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress4))
+                {
+                    string CheckAddress4 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress4);
 
-                short MyPlcData;
-                string Address5 = ToolUtils.AddressConvertDBW(actionInfo.Address5);
-
-                MyPlcData = ((ushort)s7.Read(Address5)).ConvertToShort();
+                    var operateResult = ((ushort)s7.Read(CheckAddress4)).ConvertToShort();
 
-                if (MyPlcData == 3)
-                {
-                    responseData.result = "false";
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
-                    s7.Close();
-                    return responseData;
+                    if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue4 : operateResult.ToString() != actionInfo.CheckValue4)
+                    {
+                        responseData.result = "false";
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
+                        s7.Close();
+                        return responseData;
+                    }
                 }
 
-                string Address6 = ToolUtils.AddressConvertDBW(actionInfo.Address6);
-                MyPlcData = ((ushort)s7.Read(Address6)).ConvertToShort();
-                if (MyPlcData != 1)
+
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress5))
                 {
-                    responseData.result = "false";
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
-                    s7.Close();
-                    return responseData;
-                }
+                    string CheckAddress5 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress5);
+
+                    var operateResult = ((ushort)s7.Read(CheckAddress5)).ConvertToShort();
 
+                    if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue5 : operateResult.ToString() != actionInfo.CheckValue5)
+                    {
+                        responseData.result = "false";
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
+                        s7.Close();
+                        return responseData;
+                    }
+                } 
+                 
                 string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
                 s7.Write(Address1, Convert.ToInt16(req.data.Location));
                 Thread.Sleep(SLEEP_TIME);
@@ -248,9 +269,9 @@ namespace IMCS.CCS.Services
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetFlexibleWire.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire), req.taskId, req.taskNodeId, actionInfo.Address4, actionInfo.CallbackValue);
+                    EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue);
 
-                taskCallbackData.Address3 = Address5;
+                taskCallbackData.Address3 = actionInfo.Address5;
                 taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
                 taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
                 await _taskCallbackService.Create(taskCallbackData);
@@ -303,15 +324,18 @@ namespace IMCS.CCS.Services
                     return responseData;
                 }
 
-                string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
-                var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
-                if (operateResult.ToString() != actionInfo.CheckValue)
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress) && !string.IsNullOrEmpty(actionInfo.CheckValue))
                 {
-                    s7.Close();
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
-                    responseData.result = "false";
-                    return responseData;
+                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
+                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                    if (actionInfo.CheckType ? operateResult.ToString().Equals(actionInfo.CheckValue) : operateResult.ToString() != actionInfo.CheckValue)
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
+                        responseData.result = "false";
+                        return responseData;
+                    }
                 }
 
                 string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
@@ -324,7 +348,7 @@ namespace IMCS.CCS.Services
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetQualityCenter.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
+                    EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue);
                 taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
                 await _taskCallbackService.Create(taskCallbackData);
                 Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter) + "取物品成功===>>" + JsonConvert.SerializeObject(req)
@@ -377,15 +401,18 @@ namespace IMCS.CCS.Services
                 }
 
                 //条件判断
-                string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
-                var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
-                if (operateResult.ToString() != actionInfo.CheckValue)
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress) && !string.IsNullOrEmpty(actionInfo.CheckValue))
                 {
-                    s7.Close();
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "放物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
-                    responseData.result = "false";
-                    return responseData;
+                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
+                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                    if (actionInfo.CheckType ? operateResult.ToString().Equals(actionInfo.CheckValue) : operateResult.ToString() != actionInfo.CheckValue)
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "放物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
+                        responseData.result = "false";
+                        return responseData;
+                    }
                 }
 
                 string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
@@ -398,7 +425,7 @@ namespace IMCS.CCS.Services
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendIntelligenceUnit.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
+                    EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue);
                 taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
                 await _taskCallbackService.Create(taskCallbackData);
                 Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
@@ -449,42 +476,55 @@ namespace IMCS.CCS.Services
                     responseData.result = "false";
                     return responseData;
                 }
-
-
-                string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
-                var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
-                if ((operateResult.ToString() != actionInfo.CheckValue) && (operateResult.ToString() != actionInfo.CheckValue2) && (operateResult.ToString() != actionInfo.CheckValue3))
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress))
                 {
-                    s7.Close();
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
-                    responseData.result = "false";
-                    return responseData;
+                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
+                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                    bool CheckFlag = string.IsNullOrEmpty(actionInfo.CheckValue) ? false : (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue));
+                    bool CheckFlag2 = string.IsNullOrEmpty(actionInfo.CheckValue2) ? true : (actionInfo.CheckType2 ? (operateResult.ToString() == actionInfo.CheckValue2) : (operateResult.ToString() != actionInfo.CheckValue2));
+                    bool CheckFlag3 = string.IsNullOrEmpty(actionInfo.CheckValue3) ? true : (actionInfo.CheckType3 ? (operateResult.ToString() == actionInfo.CheckValue3) : (operateResult.ToString() != actionInfo.CheckValue3));
+                    if (CheckFlag && CheckFlag2 && CheckFlag3)
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品异常===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
+                        responseData.result = "false";
+                        return responseData;
+                    }
                 }
 
-                short MyPlcData;
-                string Address5 = ToolUtils.AddressConvertDBW(actionInfo.Address5);
 
-                MyPlcData = ((ushort)s7.Read(Address5)).ConvertToShort();
-
-                if (MyPlcData == 3)
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress4))
                 {
-                    responseData.result = "false";
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
-                    s7.Close();
-                    return responseData;
+                    string CheckAddress4 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress4);
+
+                    var operateResult = ((ushort)s7.Read(CheckAddress4)).ConvertToShort();
+
+                    if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue4 : operateResult.ToString() != actionInfo.CheckValue4)
+                    {
+                        responseData.result = "false";
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
+                        s7.Close();
+                        return responseData;
+                    }
                 }
 
-                string Address6 = ToolUtils.AddressConvertDBW(actionInfo.Address6);
-                MyPlcData = ((ushort)s7.Read(Address6)).ConvertToShort();
-                if (MyPlcData != 1)
+
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress5))
                 {
-                    responseData.result = "false";
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
-                    s7.Close();
-                    return responseData;
+                    string CheckAddress5 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress5);
+
+                    var operateResult = ((ushort)s7.Read(CheckAddress5)).ConvertToShort();
+
+                    if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue5 : operateResult.ToString() != actionInfo.CheckValue5)
+                    {
+                        responseData.result = "false";
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
+                        s7.Close();
+                        return responseData;
+                    }
                 }
 
                 string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
@@ -497,9 +537,9 @@ namespace IMCS.CCS.Services
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendFlexibleWire.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
+                    EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire), req.taskId, req.taskNodeId, actionInfo.Address, actionInfo.CallbackValue);
 
-                taskCallbackData.Address3 = Address5;
+                taskCallbackData.Address3 = actionInfo.CallbackAddress3;
                 taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
                 taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
                 await _taskCallbackService.Create(taskCallbackData);
@@ -553,15 +593,18 @@ namespace IMCS.CCS.Services
                 }
 
                 //条件判断
-                string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
-                var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
-                if (operateResult.ToString() != actionInfo.CheckValue)
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress))
                 {
-                    s7.Close();
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
-                    responseData.result = "false";
-                    return responseData;
+                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
+                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                    if (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue))
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
+                        responseData.result = "false";
+                        return responseData;
+                    }
                 }
 
                 string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
@@ -574,7 +617,7 @@ namespace IMCS.CCS.Services
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendQualityCenter.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
+                    EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue);
                 taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
                 await _taskCallbackService.Create(taskCallbackData);
                 Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
@@ -624,43 +667,56 @@ namespace IMCS.CCS.Services
                     EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
                     responseData.result = "false";
                     return responseData;
-                }
-
+                } 
 
-                string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
-                var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
-                if ((operateResult.ToString() != actionInfo.CheckValue) && (operateResult.ToString() != actionInfo.CheckValue2) && (operateResult.ToString() != actionInfo.CheckValue3))
+               if (!string.IsNullOrEmpty(actionInfo.CheckAddress))
                 {
-                    s7.Close();
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
-                    responseData.result = "false";
-                    return responseData;
-                }
+                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
+                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                    bool CheckFlag = string.IsNullOrEmpty(actionInfo.CheckValue) ? false : (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue));
+                    bool CheckFlag2 = string.IsNullOrEmpty(actionInfo.CheckValue2) ? true : (actionInfo.CheckType2 ? (operateResult.ToString() == actionInfo.CheckValue2) : (operateResult.ToString() != actionInfo.CheckValue2));
+                    bool CheckFlag3 = string.IsNullOrEmpty(actionInfo.CheckValue3) ? true : (actionInfo.CheckType3 ? (operateResult.ToString() == actionInfo.CheckValue3) : (operateResult.ToString() != actionInfo.CheckValue3));
+                    if (CheckFlag && CheckFlag2 && CheckFlag3)
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
+                        responseData.result = "false";
+                        return responseData;
+                    }
+                } 
 
-                short MyPlcData;
-                string Address5 = ToolUtils.AddressConvertDBW(actionInfo.Address5);
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress4))
+                {
+                    string CheckAddress4 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress4);
 
-                MyPlcData = ((ushort)s7.Read(Address5)).ConvertToShort();
+                    var operateResult = ((ushort)s7.Read(CheckAddress4)).ConvertToShort();
 
-                if (MyPlcData == 3)
-                {
-                    responseData.result = "false";
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
-                    s7.Close();
-                    return responseData;
+                    if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue4 : operateResult.ToString() != actionInfo.CheckValue4)
+                    {
+                        responseData.result = "false";
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
+                        s7.Close();
+                        return responseData;
+                    }
                 }
 
-                string Address6 = ToolUtils.AddressConvertDBW(actionInfo.Address6);
-                MyPlcData = ((ushort)s7.Read(Address6)).ConvertToShort();
-                if (MyPlcData != 1)
+
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress5))
                 {
-                    responseData.result = "false";
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
-                    s7.Close();
-                    return responseData;
+                    string CheckAddress5 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress5);
+
+                    var operateResult = ((ushort)s7.Read(CheckAddress5)).ConvertToShort();
+
+                    if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue5 : operateResult.ToString() != actionInfo.CheckValue5)
+                    {
+                        responseData.result = "false";
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
+                        s7.Close();
+                        return responseData;
+                    }
                 }
 
                 string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
@@ -673,9 +729,9 @@ namespace IMCS.CCS.Services
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.MoveRobotPosition.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition), req.taskId, req.taskNodeId, actionInfo.Address4, actionInfo.CallbackValue);
+                    EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue);
 
-                taskCallbackData.Address3 = Address5;
+                taskCallbackData.Address3 = actionInfo.Address3;
                 taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
                 taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
                 await _taskCallbackService.Create(taskCallbackData);
@@ -713,11 +769,11 @@ namespace IMCS.CCS.Services
                     return responseData;
                 }
 
-                CcsAction actionQuery = new CcsAction();
+                /*CcsAction actionQuery = new CcsAction();
                 actionQuery.OperateType = ActionTypeEnum.UploadFile.ToString();
                 actionQuery.Ip = req.url;
                 List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
-                CcsAction actionInfo = actions[0]; 
+                CcsAction actionInfo = actions[0]; */
                 
                 new DeviceFtp().GetFile(req.data.fileName, LocalPath);
 
@@ -732,7 +788,10 @@ namespace IMCS.CCS.Services
                 }
                 else
                 {
-
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,scp连接失败,"  + JsonConvert.SerializeObject(req),
+                   EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                    responseData.result = "false";
+                    return responseData;
                 }
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.UploadFile.ToString(),
@@ -774,8 +833,7 @@ namespace IMCS.CCS.Services
                 actionQuery.OperateType = ActionTypeEnum.StartNCProgram.ToString();
                 actionQuery.Ip = req.url;
                 List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
-                CcsAction actionInfo = actions[0];
-
+                CcsAction actionInfo = actions[0]; 
 
                 DeviceOPCUat opcUa = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password);
                 if (opcUa.IsConnection)
@@ -788,7 +846,7 @@ namespace IMCS.CCS.Services
                         opcUa.disConnect();
                         //插入回调
                         TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
-                            EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue2);
+                            EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, null);
                         Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
                             EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
                         return responseData;
@@ -1024,7 +1082,7 @@ namespace IMCS.CCS.Services
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCleanMachine.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine), req.taskId, req.taskNodeId, actionInfo.Address3, actionInfo.CallbackValue);
+                    EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue);
                 await _taskCallbackService.Create(taskCallbackData);
                 Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine) + "启动成功===>>" + JsonConvert.SerializeObject(req)
                    , EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
@@ -1085,26 +1143,42 @@ namespace IMCS.CCS.Services
                 }
                 string[] sArray;
 
-                sArray = actionInfo.Address5.Split('.');
-                s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(TypeNo, 1));
-
-                sArray = actionInfo.Address6.Split('.');
-                s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(SmallTypeNo, 1));
-
-                sArray = actionInfo.Address7.Split('.');
-                s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(OrderNo, 128));
-
-                sArray = actionInfo.Address8.Split('.');
-                s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(TaskNo, 128));
-
-                sArray = actionInfo.Address9.Split('.');
-                s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(ProductNo, 128));
-
-                sArray = actionInfo.Address10.Split('.');
-                s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(BatchNo, 32));
-
-                sArray = actionInfo.Address11.Split('.');
-                s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(SerialNo, 6));
+                if(!string.IsNullOrEmpty(actionInfo.Address5) && !string.IsNullOrEmpty(TypeNo))
+                {
+                    sArray = actionInfo.Address5.Split('.');
+                    s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(TypeNo, 1));
+                }
+                if (!string.IsNullOrEmpty(actionInfo.Address6) && !string.IsNullOrEmpty(SmallTypeNo))
+                {
+                    sArray = actionInfo.Address6.Split('.');
+                    s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(SmallTypeNo, 1));
+                }
+                if (!string.IsNullOrEmpty(actionInfo.Address7) && !string.IsNullOrEmpty(SmallTypeNo))
+                { 
+                    sArray = actionInfo.Address7.Split('.');
+                    s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(OrderNo, 128));
+                }
+                if (!string.IsNullOrEmpty(actionInfo.Address8) && !string.IsNullOrEmpty(TaskNo))
+                {
+                    sArray = actionInfo.Address8.Split('.');
+                    s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(TaskNo, 128));
+                }
+                if (!string.IsNullOrEmpty(actionInfo.Address9) && !string.IsNullOrEmpty(ProductNo))
+                {
+                    sArray = actionInfo.Address9.Split('.');
+                    s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(ProductNo, 128));
+                }
+                if (!string.IsNullOrEmpty(actionInfo.Address10) && !string.IsNullOrEmpty(BatchNo))
+                {
+                    sArray = actionInfo.Address10.Split('.');
+                    s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(BatchNo, 32));
+                }
+                if (!string.IsNullOrEmpty(actionInfo.Address11) && !string.IsNullOrEmpty(SerialNo))
+                {
+                    sArray = actionInfo.Address11.Split('.');
+                    s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(SerialNo, 6));
+                } 
+               
 
                 short mc = 0;
                 s7.Write(ToolUtils.AddressConvertDBW(actionInfo.Address), mc);
@@ -1116,9 +1190,9 @@ namespace IMCS.CCS.Services
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartLabelMachine.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine), req.taskId, req.taskNodeId, actionInfo.Address4, actionInfo.CallbackValue);
-                taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
-                taskCallbackData.Address3 = actionInfo.Address3;
+                    EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue);
+                taskCallbackData.Address3 = actionInfo.CallbackAddress3;
+                taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; 
                 taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
                 await _taskCallbackService.Create(taskCallbackData);
                 Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine) + "启动打标机成功===>>" + JsonConvert.SerializeObject(req)
@@ -1170,16 +1244,19 @@ namespace IMCS.CCS.Services
                     return responseData;
                 }
 
-                //条件判断
-                string Address4 = ToolUtils.AddressConvertDBW(actionInfo.Address4);
-                var operateResult = ((ushort)s7.Read(Address4)).ConvertToShort();
-                if (operateResult.ToString() != actionInfo.CheckValue)
+                //条件判断 
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress))
                 {
-                    s7.Close();
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "启动三坐标未就绪===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
-                    responseData.result = "false";
-                    return responseData;
+                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
+                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                    if (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue))
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动三坐标未就绪===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
+                        responseData.result = "false";
+                        return responseData;
+                    }
                 }
 
                 string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
@@ -1204,7 +1281,7 @@ namespace IMCS.CCS.Services
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCoordinateMeasuringMachine.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine), req.taskId, req.taskNodeId, actionInfo.Address5, actionInfo.CallbackValue);
+                    EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue);
                 await _taskCallbackService.Create(taskCallbackData);
                 Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine) + "启动三坐标成功===>>" + JsonConvert.SerializeObject(req)
                    , EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
@@ -1254,40 +1331,56 @@ namespace IMCS.CCS.Services
                     responseData.result = "false";
                     return responseData;
                 }
-
-
-                string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
-                var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
-                if ((operateResult.ToString() != actionInfo.CheckValue) && (operateResult.ToString() != actionInfo.CheckValue2))
+                 
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress))
                 {
-                    s7.Close();
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
-                    responseData.result = "false";
-                    return responseData;
+                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
+                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                    bool CheckFlag = string.IsNullOrEmpty(actionInfo.CheckValue) ? false : (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue));
+                    bool CheckFlag2 = string.IsNullOrEmpty(actionInfo.CheckValue2) ? true : (actionInfo.CheckType2 ? (operateResult.ToString() == actionInfo.CheckValue2) : (operateResult.ToString() != actionInfo.CheckValue2));
+                    bool CheckFlag3 = string.IsNullOrEmpty(actionInfo.CheckValue3) ? true : (actionInfo.CheckType3 ? (operateResult.ToString() == actionInfo.CheckValue3) : (operateResult.ToString() != actionInfo.CheckValue3));
+                    if (CheckFlag && CheckFlag2 && CheckFlag3)
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
+                        responseData.result = "false";
+                        return responseData;
+                    }
                 }
 
-                short MyPlcData;
-                string Address5 = ToolUtils.AddressConvertDBW(actionInfo.Address5);
-                MyPlcData = ((ushort)s7.Read(Address5)).ConvertToShort();
-                if (MyPlcData == 3)
+
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress4))
                 {
-                    responseData.result = "false";
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
-                    s7.Close();
-                    return responseData;
+                    string CheckAddress4 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress4);
+
+                    var operateResult = ((ushort)s7.Read(CheckAddress4)).ConvertToShort();
+
+                    if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue4 : operateResult.ToString() != actionInfo.CheckValue4)
+                    {
+                        responseData.result = "false";
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
+                        s7.Close();
+                        return responseData;
+                    }
                 }
 
-                string Address6 = ToolUtils.AddressConvertDBW(actionInfo.Address6);
-                MyPlcData = ((ushort)s7.Read(Address6)).ConvertToShort();
-                if (MyPlcData != 1)
+
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress5))
                 {
-                    responseData.result = "false";
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
-                    s7.Close();
-                    return responseData;
+                    string CheckAddress5 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress5);
+
+                    var operateResult = ((ushort)s7.Read(CheckAddress5)).ConvertToShort();
+
+                    if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue5 : operateResult.ToString() != actionInfo.CheckValue5)
+                    {
+                        responseData.result = "false";
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
+                        s7.Close();
+                        return responseData;
+                    }
                 }
 
                 string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
@@ -1300,9 +1393,9 @@ namespace IMCS.CCS.Services
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetServoStacker.ToString(),
-                    EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
+                    EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue);
 
-                taskCallbackData.Address3 = Address5;
+                taskCallbackData.Address3 = actionInfo.Address3;
                 taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
                 taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
                 await _taskCallbackService.Create(taskCallbackData);
@@ -1356,38 +1449,80 @@ namespace IMCS.CCS.Services
                 }
 
 
-                string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
-                var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
-                if ((operateResult.ToString() != actionInfo.CheckValue) && (operateResult.ToString() != actionInfo.CheckValue2))
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress))
                 {
-                    s7.Close();
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
-                    responseData.result = "false";
-                    return responseData;
+                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
+                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                    if (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue))
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
+                        responseData.result = "false";
+                        return responseData;
+                    }
                 }
 
-                short MyPlcData;
-                string Address5 = ToolUtils.AddressConvertDBW(actionInfo.Address5);
-                MyPlcData = ((ushort)s7.Read(Address5)).ConvertToShort();
-                if (MyPlcData == 3)
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress2))
                 {
-                    responseData.result = "false";
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
-                    s7.Close();
-                    return responseData;
+                    string CheckAddress2 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress2);
+                    var operateResult = ((ushort)s7.Read(CheckAddress2)).ConvertToShort();
+                    if (actionInfo.CheckType2 ? operateResult.ToString() == actionInfo.CheckValue2 : operateResult.ToString() != actionInfo.CheckValue2)
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
+                        responseData.result = "false";
+                        return responseData;
+                    }
                 }
 
-                string Address6 = ToolUtils.AddressConvertDBW(actionInfo.Address6);
-                MyPlcData = ((ushort)s7.Read(Address6)).ConvertToShort();
-                if (MyPlcData != 1)
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress3))
                 {
-                    responseData.result = "false";
-                    Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
-                    EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
-                    s7.Close();
-                    return responseData;
+                    string CheckAddress3 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress3);
+                    var operateResult = ((ushort)s7.Read(CheckAddress3)).ConvertToShort();
+                    if (actionInfo.CheckType3 ? operateResult.ToString() == actionInfo.CheckValue3 : operateResult.ToString() != actionInfo.CheckValue3)
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
+                        responseData.result = "false";
+                        return responseData;
+                    }
+                }
+
+
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress4))
+                {
+                    string CheckAddress4 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress4);
+
+                    var operateResult = ((ushort)s7.Read(CheckAddress4)).ConvertToShort();
+
+                    if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue4 : operateResult.ToString() != actionInfo.CheckValue4)
+                    {
+                        responseData.result = "false";
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
+                        s7.Close();
+                        return responseData;
+                    }
+                }
+
+
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress5))
+                {
+                    string CheckAddress5 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress5);
+
+                    var operateResult = ((ushort)s7.Read(CheckAddress5)).ConvertToShort();
+
+                    if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue5 : operateResult.ToString() != actionInfo.CheckValue5)
+                    {
+                        responseData.result = "false";
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
+                        s7.Close();
+                        return responseData;
+                    }
                 }
 
                 string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
@@ -1402,7 +1537,7 @@ namespace IMCS.CCS.Services
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendServoStacker.ToString(),
                     EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
 
-                taskCallbackData.Address3 = Address5;
+                taskCallbackData.Address3 = actionInfo.Address5;
                 taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
                 taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
                 await _taskCallbackService.Create(taskCallbackData);

+ 360 - 29
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -31,6 +31,8 @@ namespace IMCS.CCS.Service.Impl
 
         private readonly ICcsTagValueService _ccsTagValueService;
 
+        private readonly IEquipmentMonitorService _equipmentMonitorService;
+
         private string ecsUrlContext;
 
         private string LOG_TITLE_OPCUA = "OPCUA采集";
@@ -49,6 +51,7 @@ namespace IMCS.CCS.Service.Impl
                               IDeviceService deviceService,
                               IApiRequestService apiRequestService,
                               ICcsTagValueService ccsTagValueService,
+                              IEquipmentMonitorService equipmentMonitorService,
                               IConfiguration configuration)
         {
             _redisService = redisService;
@@ -56,6 +59,7 @@ namespace IMCS.CCS.Service.Impl
             _deviceService = deviceService;
             _apiRequestService = apiRequestService;
             _ccsTagValueService = ccsTagValueService;
+            _equipmentMonitorService = equipmentMonitorService;
             Configuration = configuration;
             ecsUrlContext = Configuration.GetConnectionString("ecsUrlContext");
         }
@@ -133,9 +137,7 @@ namespace IMCS.CCS.Service.Impl
                             {
                                 await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
                             }
-                        }
-
-
+                        } 
                     }
                     else
                     {
@@ -273,8 +275,7 @@ namespace IMCS.CCS.Service.Impl
                         tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
                         List<CcsTagValue> changTagValues = new List<CcsTagValue>();
 
-                        DeviceFanuc fanuc = new DeviceFanuc(device.Ip, device.Port);
-
+                        DeviceFanuc fanuc = new DeviceFanuc(device.Ip, device.Port); 
 
                         if (fanuc.h <= 0)
                         {
@@ -319,22 +320,21 @@ namespace IMCS.CCS.Service.Impl
         }
 
         /// <summary>
-        /// 机床启动,上传程序回调任务
+        /// 上传程序回调任务
         /// </summary> 
         /// <returns></returns>
         public async Task<string> CallbackJob1()
         {
             List<TaskCallback> list = await _taskCallbackService.GetAllList();
 
-            list = list.Where(x => x.OperateType.Equals(ActionTypeEnum.StartNCProgram.ToString())
-                                 || x.OperateType.Equals(ActionTypeEnum.UploadFile.ToString())).ToList();
+            list = list.Where(x =>   x.OperateType.Equals(ActionTypeEnum.UploadFile.ToString())).ToList();
             string message = "";
             try
             {
                 foreach (TaskCallback task in list)
                 {
                     DateTime currentTime = DateTime.Now;
-                    if (currentTime.Subtract(task.CreateTime).TotalMinutes > 10)
+                    if (currentTime.Subtract(task.CreateTime).TotalSeconds > 5)
                     {
                         CallBackRequestData requestData = new CallBackRequestData();
                         requestData.taskId = long.Parse(task.TaskId);
@@ -561,6 +561,18 @@ namespace IMCS.CCS.Service.Impl
                         var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
                         if (result.IsSuccess)
                         {
+                            if (!string.IsNullOrEmpty(task.Address3))
+                            {
+                                Plc s7 = DevicePlcS7.S7(task.IP, ProtocalTypeEnum.S7_1500.ToString());
+                                if (s7.IsConnected == true)
+                                {
+                                    string Address3 = ToolUtils.AddressConvertDBW(task.Address3);
+                                    short mc = 0;
+                                    s7.Write(Address3, mc);
+                                    s7.Close();
+                                }
+                            } 
+
                             task.State = false;
                             task.UpdateTime = DateTime.Now;
                             await _taskCallbackService.Update(task);
@@ -607,7 +619,295 @@ namespace IMCS.CCS.Service.Impl
             }
         }
 
+        /// <summary>
+        /// 启动机床程序,智能单元及质量中心取放回调任务
+        /// </summary> 
+        /// <returns></returns>
+        public async Task<string> CallbackJob4()
+        {
+            List<TaskCallback> taskList = await _taskCallbackService.GetAllList();
+            //在线设备
+            List<Device> deviceList = _deviceService.GetDeviceList();
+
+            taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.GetIntelligenceUnit.ToString())
+                                 || x.OperateType.Equals(ActionTypeEnum.SendIntelligenceUnit.ToString())
+                                 || x.OperateType.Equals(ActionTypeEnum.GetQualityCenter.ToString())
+                                 || x.OperateType.Equals(ActionTypeEnum.SendQualityCenter.ToString())
+                                 || x.OperateType.Equals(ActionTypeEnum.StartNCProgram.ToString())).ToList();
+            List<TaskCallback> list = new List<TaskCallback>();
+            foreach (Device device in deviceList)
+            {
+                foreach (TaskCallback task in taskList)
+                {
+                    if (task.IP.Equals(device.Ip))
+                    {
+                        list.Add(task);
+                    }
+                }
+            }
+            string message = "";
+            try
+            {
+                foreach (TaskCallback task in list)
+                {
+                    DateTime currentTime = DateTime.Now;
+                    CcsTagValue tagValueQuery = new CcsTagValue();
+                    tagValueQuery.Ip = task.IP;
+                    tagValueQuery.Address = task.Address;
+                    List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
+                    CcsTagValue tagValue = null;
+                    if (tagValues != null && tagValues.Count > 0)
+                    {
+                        tagValue = tagValues[0];
+                    }
+                    else
+                    { 
+                        message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
+                        Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                        continue; 
+                    }
+                    if (tagValue.TagValue.Equals(task.CallbackValue))
+                    {
+                        CallBackRequestData requestData = new CallBackRequestData();
+                        requestData.taskId = long.Parse(task.TaskId);
+                        requestData.taskNodeId = long.Parse(task.TaskNodeId);
+                        var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                        if (result.IsSuccess)
+                        {
+                            task.State = false;
+                            task.UpdateTime = DateTime.Now;
+                            await _taskCallbackService.Update(task);
+                            message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
+                            Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                        }
+                        else
+                        {
+                            message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                            Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                        } 
+                    } 
+                }
+                return string.IsNullOrEmpty(message) ? "无回调任务" : message;
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
+                return "回调异常" + ex.Message;
+            }
+        }
+        /// <summary>
+        /// 启动清洗机回调任务
+        /// </summary> 
+        /// <returns></returns>
+        public async Task<string> CallbackJob5()
+        {
+            List<TaskCallback> taskList = await _taskCallbackService.GetAllList();
+            //在线设备
+            List<Device> deviceList = _deviceService.GetDeviceList();
+
+            taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.StartCleanMachine.ToString())).ToList();
+            List<TaskCallback> list = new List<TaskCallback>();
+            foreach (Device device in deviceList)
+            {
+                foreach (TaskCallback task in taskList)
+                {
+                    if (task.IP.Equals(device.Ip))
+                    {
+                        list.Add(task);
+                    }
+                }
+            }
+            string message = "";
+            try
+            {
+                foreach (TaskCallback task in list)
+                {
+                    DateTime currentTime = DateTime.Now;
+                    CcsTagValue tagValueQuery = new CcsTagValue();
+                    tagValueQuery.Ip = task.IP;
+                    tagValueQuery.Address = task.Address;
+                    List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
+                    CcsTagValue tagValue = null;
+                    if (tagValues != null && tagValues.Count > 0)
+                    {
+                        tagValue = tagValues[0];
+                    }
+                    else
+                    {
+                        message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
+                        Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                        continue;
+                    }
+                    if (tagValue.TagValue.Equals(task.CallbackValue))
+                    {
+                        CallBackRequestData requestData = new CallBackRequestData();
+                        requestData.taskId = long.Parse(task.TaskId);
+                        requestData.taskNodeId = long.Parse(task.TaskNodeId);
+                        var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                        if (result.IsSuccess)
+                        {
+                            task.State = false;
+                            task.UpdateTime = DateTime.Now;
+                            await _taskCallbackService.Update(task);
+                            message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
+                            Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                        }
+                        else
+                        {
+                            message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                            Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                        }
+                    }
+                }
+                return string.IsNullOrEmpty(message) ? "无回调任务" : message;
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
+                return "回调异常" + ex.Message;
+            }
+        }
+
+        /// <summary>
+        /// 启动三坐标回调任务
+        /// </summary> 
+        /// <returns></returns>
+        public async Task<string> CallbackJob6()
+        {
+            List<TaskCallback> taskList = await _taskCallbackService.GetAllList();
+            //在线设备
+            List<Device> deviceList = _deviceService.GetDeviceList();
+
+            taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.StartCoordinateMeasuringMachine.ToString())).ToList();
+            List<TaskCallback> list = new List<TaskCallback>();
+            foreach (Device device in deviceList)
+            {
+                foreach (TaskCallback task in taskList)
+                {
+                    if (task.IP.Equals(device.Ip))
+                    {
+                        list.Add(task);
+                    }
+                }
+            }
+            string message = "";
+            try
+            {
+                foreach (TaskCallback task in list)
+                {
+                    DateTime currentTime = DateTime.Now;
+                    CcsTagValue tagValueQuery = new CcsTagValue();
+                    tagValueQuery.Ip = task.IP;
+                    tagValueQuery.Address = task.Address;
+                    List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
+                    CcsTagValue tagValue = null;
+                    if (tagValues != null && tagValues.Count > 0)
+                    {
+                        tagValue = tagValues[0];
+                    }
+                    else
+                    {
+                        message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
+                        Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                        continue;
+                    }
+                    if (tagValue.TagValue.Equals(task.CallbackValue))
+                    {
+                        CallBackRequestData requestData = new CallBackRequestData();
+                        requestData.taskId = long.Parse(task.TaskId);
+                        requestData.taskNodeId = long.Parse(task.TaskNodeId);
+                        var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
+                        if (result.IsSuccess)
+                        {
+                            task.State = false;
+                            task.UpdateTime = DateTime.Now;
+                            await _taskCallbackService.Update(task);
+                            message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
+                            Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
+                        }
+                        else
+                        {
+                            message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
+                            Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
+                        }
+                    }
+                }
+                return string.IsNullOrEmpty(message) ? "无回调任务" : message;
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
+                return "回调异常" + ex.Message;
+            }
+        }
+
+        /// <summary>
+        /// 监控设备状态
+        /// </summary> 
+        /// <returns></returns>
+        public async Task<string> MonitorEquipmentStatusJob()
+        {
+            try
+            { 
+                string message = "MonitorEquipmentStatusJob调度成功";
+                List<Device> devices = _deviceService.GetDeviceList();
+                //ftp不监控
+                devices = devices.Where(x => !x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).ToList();
+                CcsTagValue tagQuery = new CcsTagValue(); 
+                List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagQuery);
+                List<EquipmentMonitor> equipmentMonitors = await _equipmentMonitorService.GetList();
+                foreach (EquipmentMonitor equipment in equipmentMonitors)
+                {
+                    Device device = devices.Where(x => x.Ip.Equals(equipment.IP)).FirstOrDefault();
+                    if(device == null)
+                    {
+                        equipment.Status = "离线";
+                        continue;
+                    }
+                    else
+                    {
+                        if(equipment .Name== "机械手")
+                        {
+                            CcsTagValue ccsTagValue = tagValues.Where(x => x.Ip.Equals(equipment.IP) && x.Address.Equals(equipment.Address)).FirstOrDefault();
+                            if(ccsTagValue != null)
+                            {
+                                if(ccsTagValue.TagValue == "3")
+                                {
+                                    equipment.Status = "报警";
+                                    continue;
+                                }
+                            }
+                            CcsTagValue ccsTagValue2 = tagValues.Where(x => x.Ip.Equals(equipment.IP) && x.Address.Equals(equipment.Address2)).FirstOrDefault();
+                            if (ccsTagValue2 != null)
+                            {
+                                if (ccsTagValue2.TagValue == "9")
+                                {
+                                    equipment.Status = "报警";
+                                    continue;
+                                }
+                            }
 
+                            if (ccsTagValue2.TagValue == "0" || ccsTagValue2.TagValue == "3" || ccsTagValue2.TagValue == "6" || ccsTagValue2.TagValue == "8")
+                            {
+                                equipment.Status = "空闲";
+                                continue;
+                            }
+                            equipment.Status = "生产中";
+                        }
+                    }
+                    _equipmentMonitorService.Update(equipment);
+
+
+                }
+                    return message;
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd("MonitorEquipmentStatusJob:" + ex.Message, LOG_TITLE_DEVICE);
+
+                return "MonitorEquipmentStatusJob : " + ex.Message;
+            }
+        }
 
         /// <summary>
         /// 监控设备状态
@@ -631,18 +931,25 @@ namespace IMCS.CCS.Service.Impl
                             Plc s7 = DevicePlcS7.S7(device.ServerUrl, ProtocalTypeEnum.S7_1500.ToString());
 
                             if (s7.IsConnected != true)
-                            {
-                                device.State = false;
-                                await _deviceService.UpdateDevice(device);
-                                s7.Close();
+                            { 
+                                Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                                if (oldDevice.State)
+                                {
+                                    device.State = false;
+                                    await _deviceService.UpdateDevice(device);
+                                }  
                                 Log.Instance.WriteLogAdd("plc连接失败,或已离线", LOG_TITLE_DEVICE);
                                 message = message + ",plc连接失败,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType;
                                 continue;
                             }
                             else
-                            {
-                                device.State = true;
-                                await _deviceService.UpdateDevice(device);
+                            { 
+                                Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                                if (!oldDevice.State)
+                                {
+                                    device.State = true;
+                                    await _deviceService.UpdateDevice(device);
+                                } 
                                 s7.Close();
                                 Log.Instance.WriteLogAdd("plc连接失败,或已离线", LOG_TITLE_DEVICE);
                                 message = message + ",plc连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType;
@@ -651,8 +958,12 @@ namespace IMCS.CCS.Service.Impl
                         }
                         catch (Exception s7ex)
                         {
-                            device.State = false;
-                            await _deviceService.UpdateDevice(device);
+                            Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                            if (oldDevice.State)
+                            {
+                                device.State = false;
+                                await _deviceService.UpdateDevice(device);
+                            }
                             Log.Instance.WriteLogAdd("plc连接失败,或已离线", LOG_TITLE_DEVICE);
                             message = message + ",plc连接失败,plc连不上" + s7ex.Message + ",ip:" + device.Ip + ",协议类型:" + device.ProtocolType;
                         }
@@ -666,7 +977,11 @@ namespace IMCS.CCS.Service.Impl
                             if (!deviceOPCUat.IsConnection)
                             {
                                 device.State = false;
-                                await _deviceService.UpdateDevice(device);
+                                Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                                if (oldDevice.State)
+                                {
+                                    await _deviceService.UpdateDevice(device);
+                                } 
                                 Log.Instance.WriteLogAdd("OPCUA连接异常,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_OPCUA);
                                 message = message + ",OPCUA连接异常,或以离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType; ;
                                 continue;
@@ -682,8 +997,12 @@ namespace IMCS.CCS.Service.Impl
                         }
                         catch (Exception opcex)
                         {
-                            device.State = false;
-                            await _deviceService.UpdateDevice(device);
+                            Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                            if (oldDevice.State)
+                            {
+                                device.State = false;
+                                await _deviceService.UpdateDevice(device);
+                            }
                             Log.Instance.WriteLogAdd("OPCUA连接异常,或以离线" + opcex.Message + ",ip:" + device.Ip + ", 协议类型: " + device.ProtocolType, LOG_TITLE_DEVICE);
                             continue;
                         }
@@ -694,25 +1013,37 @@ namespace IMCS.CCS.Service.Impl
                         {  
                             int ret = Fanuc.cnc_allclibhndl3(device.ServerUrl, Convert.ToUInt16(device.Port), 2, out Fanuc.h);
                             if (ret != Fanuc.EW_OK)
-                            {
-                                device.State = false;
-                                await _deviceService.UpdateDevice(device);
+                            { 
+                                Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                                if (oldDevice.State)
+                                {
+                                    device.State = false;
+                                    await _deviceService.UpdateDevice(device);
+                                }
                                 Log.Instance.WriteLogAdd("Fanuc连接异常,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_OPCUA);
                                 message = message + ",Fanuc连接异常,或以离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType; ;
                                 continue;
                             }
                             else
-                            {
-                                device.State = true;
-                                await _deviceService.UpdateDevice(device); 
+                            { 
+                                Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                                if (!oldDevice.State)
+                                {
+                                    device.State = true;
+                                    await _deviceService.UpdateDevice(device);
+                                }
                                 Log.Instance.WriteLogAdd("Fanuc连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_DEVICE);
                                 continue;
                             }
                         }
                         catch (Exception opcex)
                         {
-                            device.State = false;
-                            await _deviceService.UpdateDevice(device);
+                            Device oldDevice = await _deviceService.GetDeviceById(device.Id);
+                            if (oldDevice.State)
+                            {
+                                device.State = false;
+                                await _deviceService.UpdateDevice(device);
+                            }
                             Log.Instance.WriteLogAdd("Fanuc连接异常,或以离线" + opcex.Message + ",ip:" + device.Ip + ", 协议类型: " + device.ProtocolType, LOG_TITLE_DEVICE);
                             continue;
                         }

+ 2 - 0
IMCS_CCS/Startup.cs

@@ -20,6 +20,7 @@ using IMCS.CCS.Filter;
 using IMCS.CCS.Config; 
 using IMCS.CCS.Service.Jobs;
 using IMCS.CCS.Common.Redis;
+using System.Reflection;
 
 namespace IMCS.CCS
 {
@@ -75,6 +76,7 @@ namespace IMCS.CCS
             #region 实例注册
             //AutoMapper 配置
             services.AddAutoMapper(typeof(AutoMapperConfig));
+            //services.AddAutoMapper(Assembly.GetAssembly(typeof(AutoMapperConfig)));
             //文件数据服务
             services.AddTransient<IDataService, DataService>();
             //项目服务

+ 138 - 4
IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS.CCS.xml

@@ -201,7 +201,7 @@
         </member>
         <member name="M:IMCS.CCS.Controllers.CcsController.GetTagValue(IMCS.CCS.Models.RequestTagValueData)">
             <summary>
-            益模调用接口,显示3D: POST: api/GetDigitalTwins
+            获取状态当前值: POST: api/RequestTagValueData
             </summary> 
             <returns></returns> 
         </member>
@@ -342,7 +342,7 @@
             <summary>
             修改设备信息:PUT: api/Users/5
             </summary>
-            <param name="user"></param>
+            <param name="device"></param>
             <returns></returns>
         </member>
         <member name="M:IMCS.CCS.Controllers.DeviceController.PostDevice(IMCS.CCS.Entitys.Device)">
@@ -363,7 +363,7 @@
             <summary>
             修改设备信息:PUT: api/Users/5
             </summary>
-            <param name="user"></param>
+            <param name="device"></param>
             <returns></returns>
         </member>
         <member name="M:IMCS.CCS.Controllers.EquipmentMonitorController.PostDevice(IMCS.CCS.Entitys.EquipmentMonitor)">
@@ -1222,9 +1222,15 @@
             </summary> 
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.DataCollectFanucJob">
+            <summary>
+            采集数据FANUC
+            </summary> 
+            <returns></returns>
+        </member>
         <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob1">
             <summary>
-            机床启动,上传程序回调任务
+            上传程序回调任务
             </summary> 
             <returns></returns>
         </member>
@@ -1240,12 +1246,42 @@
             </summary> 
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob4">
+            <summary>
+            启动机床程序,智能单元及质量中心取放回调任务
+            </summary> 
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob5">
+            <summary>
+            启动清洗机回调任务
+            </summary> 
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.CallbackJob6">
+            <summary>
+            启动三坐标回调任务
+            </summary> 
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.MonitorEquipmentStatusJob">
+            <summary>
+            监控设备状态
+            </summary> 
+            <returns></returns>
+        </member>
         <member name="M:IMCS.CCS.Service.Impl.TaskJobService.DeviceStatusJob">
             <summary>
             监控设备状态
             </summary> 
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Service.Impl.TaskJobService.GetFanucValue(IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc,System.String)">
+            <summary>
+            fanuc根据类型获取值
+            </summary> 
+            <returns></returns>
+        </member>
         <member name="T:IMCS.CCS.Service.Impl.TaskService">
             <summary>
             任务服务
@@ -1378,6 +1414,24 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Service.ITaskJobService.CallbackJob4">
+            <summary>
+            启动机床程序,智能单元及质量中心取放回调任务
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.ITaskJobService.CallbackJob5">
+            <summary>
+            启动清洗机回调任务
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.ITaskJobService.CallbackJob6">
+            <summary>
+            启动三坐标回调任务
+            </summary>
+            <returns></returns>
+        </member>
         <member name="M:IMCS.CCS.Service.ITaskJobService.DataCollectOPCUAJob">
             <summary>
             OPCUA采集
@@ -1390,6 +1444,18 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="M:IMCS.CCS.Service.ITaskJobService.DataCollectFanucJob">
+            <summary>
+            采集数据FANUC
+            </summary> 
+            <returns></returns>
+        </member>
+        <member name="M:IMCS.CCS.Service.ITaskJobService.MonitorEquipmentStatusJob">
+            <summary>
+            监控设备状态
+            </summary>
+            <returns></returns>
+        </member>
         <member name="M:IMCS.CCS.Service.ITaskJobService.DeviceStatusJob">
             <summary>
             监控设备状态
@@ -1827,5 +1893,73 @@
             SCP获取文件
             </summary> 
         </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.GetNumber">
+            <summary>
+            fanuc单次计数
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.GetTotalNumber">
+            <summary>
+            fanuc累计计数
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.GetPostion(System.String@,System.String@,System.String@,System.String@)">
+            <summary>
+            有效轴数
+            </summary>
+            <param name="xd">相对位置</param>
+            <param name="jd">绝对位置</param>
+            <param name="jx">机械位置</param>
+            <param name="sy">剩余位置</param>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.GetStateInfo(System.String@,System.String@)">
+            <summary>
+            
+            </summary>
+            <param name="Macmode">工作模式</param>
+            <param name="Runstatus">加工状态</param>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.GetRegPrg(System.String@,System.String@,System.String@)">
+            <summary>
+            返回注册程序量
+            </summary>
+            <param name="unreg_prg">可用程序数量</param>
+            <param name="unused_mem">未使用的内存</param>
+            <param name="used_mem">已经使用内存</param>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.FGetToolNum">
+            <summary>
+            获取当前执行的刀号
+            </summary>
+            <param name="no"></param>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.FGetPrgSeq">
+            <summary>
+            执行行号
+            </summary>
+            <param name="no"></param>
+            <param name="result"></param>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.FGetCurrentPrg">
+            <summary>
+            当前执行代码
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMCS_CCS.Utils.DeviceProtocol.DeviceFanuc.Get_tool_life(System.String@,System.String@,System.String@,System.String@)">
+            <summary>
+            
+            </summary>
+            <param name="dpsl">刀片组数量</param>
+            <param name="dph">刀片号</param>
+            <param name="dpzh">刀组号</param>
+            <param name="smjs">寿命计时</param>
+        </member>
     </members>
 </doc>

+ 0 - 38
IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS_CCS.deps.json

@@ -33,7 +33,6 @@
         "dependencies": {
           "AutoMapper.Extensions.Microsoft.DependencyInjection": "8.1.1",
           "Flurl.Http": "3.2.0",
-          "Fwlib64": "1.0.0",
           "Microsoft.Extensions.Hosting.WindowsServices": "5.0.1",
           "MySql.Data.EntityFrameworkCore": "8.0.22",
           "NLog.Web.AspNetCore": "4.12.0",
@@ -380,36 +379,6 @@
           "lib/netstandard2.0/Flurl.Http.dll": {}
         }
       },
-      "Fwlib64/1.0.0": {
-        "runtime": {
-          "lib/Fwlib64.dll": {
-            "fileVersion": "6.0.0.1"
-          },
-          "lib/fwlib0DN64.dll": {
-            "fileVersion": "4.0.0.1"
-          },
-          "lib/fwlib0iD64.dll": {
-            "fileVersion": "4.0.0.1"
-          },
-          "lib/fwlib30i64.dll": {
-            "fileVersion": "4.0.0.1"
-          },
-          "lib/fwlibNCG64.dll": {
-            "fileVersion": "4.0.0.1"
-          },
-          "lib/fwlibe64.dll": {
-            "fileVersion": "4.0.0.1"
-          }
-        },
-        "compile": {
-          "lib/Fwlib64.dll": {},
-          "lib/fwlib0DN64.dll": {},
-          "lib/fwlib0iD64.dll": {},
-          "lib/fwlib30i64.dll": {},
-          "lib/fwlibNCG64.dll": {},
-          "lib/fwlibe64.dll": {}
-        }
-      },
       "Google.Protobuf/3.11.4": {
         "dependencies": {
           "System.Memory": "4.5.3"
@@ -3978,13 +3947,6 @@
       "path": "flurl.http/3.2.0",
       "hashPath": "flurl.http.3.2.0.nupkg.sha512"
     },
-    "Fwlib64/1.0.0": {
-      "type": "package",
-      "serviceable": true,
-      "sha512": "sha512-v7cHHdfrLAArO8t8eWGDLcOaY8PjXkPa803ycYpleNZ7gS6x2iFJ/ZkCUCLyL0UJW+grVIOBF1FmWLV6B0Djkw==",
-      "path": "fwlib64/1.0.0",
-      "hashPath": "fwlib64.1.0.0.nupkg.sha512"
-    },
     "Google.Protobuf/3.11.4": {
       "type": "package",
       "serviceable": true,

BIN
IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS_CCS.dll


BIN
IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS_CCS.pdb


+ 1 - 1
IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-90db02af0f76c19019f9678a5ff6b2127e5d9d7c
+f39424f3eb87f1da8e715e0e80ea22a56d99c66f

+ 122 - 0
IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.csproj.FileListAbsolute.txt

@@ -255,3 +255,125 @@ E:\dev\IMCS_CCS\IMCS_CCS\bin\Debug\netcoreapp3.1\fwlib0iD64.dll
 E:\dev\IMCS_CCS\IMCS_CCS\bin\Debug\netcoreapp3.1\fwlib30i64.dll
 E:\dev\IMCS_CCS\IMCS_CCS\bin\Debug\netcoreapp3.1\fwlibNCG64.dll
 E:\dev\IMCS_CCS\IMCS_CCS\bin\Debug\netcoreapp3.1\fwlibe64.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\nlog.config
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\appsettings.Development.json
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\appsettings.json
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\IMCS_CCS.exe
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\wwwroot\db\Projects.json
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\wwwroot\db\Tasks.json
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\IMCS.CCS.xml
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\IMCS_CCS.deps.json
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\IMCS_CCS.runtimeconfig.json
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\IMCS_CCS.runtimeconfig.dev.json
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\IMCS_CCS.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\IMCS_CCS.pdb
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\AutoMapper.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\AutoMapper.Extensions.Microsoft.DependencyInjection.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\BouncyCastle.Crypto.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Flurl.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Flurl.Http.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Google.Protobuf.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\K4os.Compression.LZ4.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\K4os.Compression.LZ4.Streams.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\K4os.Hash.xxHash.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Bcl.AsyncInterfaces.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Bcl.HashCode.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.EntityFrameworkCore.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.EntityFrameworkCore.Abstractions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.EntityFrameworkCore.Relational.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Caching.Abstractions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Caching.Memory.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Configuration.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Configuration.Abstractions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Configuration.Binder.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Configuration.CommandLine.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Configuration.EnvironmentVariables.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Configuration.FileExtensions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Configuration.Json.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Configuration.UserSecrets.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.DependencyInjection.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.DependencyInjection.Abstractions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.DependencyModel.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.FileProviders.Abstractions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.FileProviders.Physical.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.FileSystemGlobbing.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Hosting.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Hosting.Abstractions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Hosting.WindowsServices.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Logging.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Logging.Abstractions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Logging.Configuration.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Logging.Console.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Logging.Debug.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Logging.EventLog.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Logging.EventSource.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Options.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Options.ConfigurationExtensions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Extensions.Primitives.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.IdentityModel.JsonWebTokens.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.IdentityModel.Logging.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.IdentityModel.Tokens.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.OpenApi.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Win32.Registry.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Microsoft.Win32.SystemEvents.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\MySql.Data.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Ubiety.Dns.Core.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Zstandard.Net.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\MySql.Data.EntityFrameworkCore.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Newtonsoft.Json.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\NLog.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\NLog.Extensions.Logging.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\NLog.Web.AspNetCore.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Pipelines.Sockets.Unofficial.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Quartz.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Scrutor.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Renci.SshNet.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\SshNet.Security.Cryptography.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\StackExchange.Redis.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Swashbuckle.AspNetCore.Filters.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Swashbuckle.AspNetCore.Filters.Abstractions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Swashbuckle.AspNetCore.Swagger.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Swashbuckle.AspNetCore.SwaggerGen.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\Swashbuckle.AspNetCore.SwaggerUI.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Configuration.ConfigurationManager.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Diagnostics.DiagnosticSource.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Diagnostics.EventLog.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Diagnostics.PerformanceCounter.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Drawing.Common.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.IdentityModel.Tokens.Jwt.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.IO.Pipelines.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Security.AccessControl.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Security.Cryptography.ProtectedData.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Security.Permissions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Security.Principal.Windows.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.ServiceProcess.ServiceController.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Text.Json.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Windows.Extensions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\System.Xml.XPath.XmlDocument.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\win\lib\netstandard2.0\Microsoft.Win32.Registry.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\win\lib\netcoreapp3.0\Microsoft.Win32.SystemEvents.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\win\lib\netcoreapp2.0\System.Diagnostics.EventLog.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\win\lib\netcoreapp2.0\System.Diagnostics.PerformanceCounter.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\unix\lib\netcoreapp3.0\System.Drawing.Common.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\win\lib\netcoreapp3.0\System.Drawing.Common.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\win\lib\netcoreapp2.0\System.Security.AccessControl.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\win\lib\netstandard2.0\System.Security.Cryptography.ProtectedData.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\unix\lib\netcoreapp2.1\System.Security.Principal.Windows.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\win\lib\netcoreapp2.1\System.Security.Principal.Windows.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\win\lib\netstandard2.0\System.ServiceProcess.ServiceController.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\bin\Debug\netcoreapp3.1\runtimes\win\lib\netcoreapp3.0\System.Windows.Extensions.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\CCS.csproj.AssemblyReference.cache
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\CCS.GeneratedMSBuildEditorConfig.editorconfig
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\CCS.AssemblyInfoInputs.cache
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\CCS.AssemblyInfo.cs
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\CCS.csproj.CoreCompileInputs.cache
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\IMCS_CCS.MvcApplicationPartsAssemblyInfo.cs
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\IMCS_CCS.MvcApplicationPartsAssemblyInfo.cache
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\staticwebassets\IMCS_CCS.StaticWebAssets.Manifest.cache
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\staticwebassets\IMCS_CCS.StaticWebAssets.xml
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\scopedcss\bundle\IMCS_CCS.styles.css
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\CCS.RazorTargetAssemblyInfo.cache
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\CCS.csproj.CopyComplete
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\IMCS_CCS.dll
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\IMCS_CCS.pdb
+D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\obj\Debug\netcoreapp3.1\CCS.genruntimeconfig.cache

+ 1 - 1
IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.genruntimeconfig.cache

@@ -1 +1 @@
-5c07547cf1e41dcea561271e432ecda3878cd5c7
+92a8f42511398ab843e2756f330170db9752ed7c

BIN
IMCS_CCS/obj/Debug/netcoreapp3.1/IMCS_CCS.dll


BIN
IMCS_CCS/obj/Debug/netcoreapp3.1/IMCS_CCS.pdb