22
schangxiang@126.com
2024-12-10 c733a6f12bc6f8e7f206ef8173e8991041248c36
SDA/iWareSda/Devices/4-Station/StationModel/StationEntity.cs
@@ -9,7 +9,7 @@
using iWareCommon.Utils;
using iWareCommon.Common.Globle;
using iWareCommon;
using iWareSda.Devices._3_Station.StationModel;
using Newtonsoft.Json;
using iWareSda.Model;
@@ -179,9 +179,38 @@
            }
        }
        /// <summary>
        /// 写PLC bool
        /// </summary>
        /// <param name="dbAddress"></param>
        /// <param name="value"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public bool WriteBoolPlcData(string dbAddress, bool value, out string msg)
        {
            try
            {
                msg = "";
                MessageModel b2 = null;
                b2 = this.plcService.WriteValuePoint(dbAddress, value, value);
                if (!b2.result)
                {
                    msg = string.Format($"写入PLC地址{dbAddress},值{value}失败");
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, $"地址{dbAddress}失败:" + ex.Message, ex);
                return false;
            }
        }
        /// <summary>
        /// 写入齐套结果
        /// 写入齐套结果、解析结果
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="value">true:表示 齐套。false:不齐套</param>
@@ -195,29 +224,36 @@
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_DataFinish, true, view_stationObj.W_DataFinish);
                MessageModel b2 = null;
                if (stationCode == StationLocationEnum.BZ01.ToString() || stationCode == StationLocationEnum.BZ30.ToString())
                {
                    int i_result = 0;
                    if (value)
                    {
                        i_result = 998;
                    }
                    else
                    {
                        i_result = 999;
                    }
                    b2 = this.plcService.WriteValuePoint(stationObj.W_KittingInfo, i_result, view_stationObj.W_KittingInfo);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station地址{0} 写  " + value + "失败,返回结果:" + b2.resMsg,
                          stationObj.W_DataFinish);
                        return false;
                    }
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_DataFinish, true, view_stationObj.W_DataFinish);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写  " + true + "失败,返回结果:" + b2.resMsg,
                       stationObj.W_DataFinish);
                    return false;
                }
                int i_result = 0;
                if (value)
                {
                    i_result = 998;
                }
                else
                {
                    i_result = 999;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_KittingInfo, i_result, view_stationObj.W_KittingInfo);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写  " + value + "失败,返回结果:" + b2.resMsg,
                      stationObj.W_DataFinish);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
@@ -231,7 +267,7 @@
        }
        public bool InboundFinishConfirm(string stationCode, out string msg)
        public bool InboundFinishConfirm(string stationCode, bool value, out string msg)
        {
            try
            {
@@ -239,10 +275,10 @@
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_InboundFinishConfirm, true, view_stationObj.W_DataFinish);
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_InboundFinishConfirm, value, view_stationObj.W_DataFinish);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写  " + true + "失败,返回结果:" + b2.resMsg,
                    msg = string.Format("向Station地址{0}  入库完成确认 写  " + value + "失败,返回结果:" + b2.resMsg,
                        stationObj.W_InboundFinishConfirm);
                    return false;
                }
@@ -259,7 +295,15 @@
            }
        }
        public bool WriteInStoreTaskInfo(string stationCode, string toPlaceNo, short length, short width, short height, out string msg)
        /// <summary>
        ///
        /// </summary>
        /// <param name="stationCode"></param>
        /// <param name="value"></param>
        /// <param name="msg"></param>
        /// <param name="isClearData">是否需要清理数据</param>
        /// <returns></returns>
        public bool OutboundFinishConfirm(string stationCode, bool value, out string msg, bool isClearData)
        {
            try
            {
@@ -267,11 +311,103 @@
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_DataFinish, true, view_stationObj.W_DataFinish);
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_OutboundFinishConfirm, value, view_stationObj.W_OutboundFinishConfirm);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 读码解析完成 " + true + "失败,返回结果:" + b2.resMsg,
                       stationObj.W_DataFinish);
                    msg = string.Format("向Station 出库任务完成确认 地址{0} 写  " + value + "失败,返回结果:" + b2.resMsg,
                        stationObj.W_OutboundFinishConfirm);
                    return false;
                }
                if (value && isClearData)
                {
                    b2 = this.plcService.WriteValuePoint(stationObj.W_ReqOut, false, view_stationObj.W_ReqOut);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station W_ReqOut 地址{0} 写  " + false + "失败,返回结果:" + b2.resMsg,
                            stationObj.W_ReqOut);
                        return false;
                    }
                    b2 = this.plcService.WriteValuePoint(stationObj.W_Destination_Out, 0, view_stationObj.W_Destination_Out);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station W_Destination_Out 地址{0} 写  " + 0 + "失败,返回结果:" + b2.resMsg,
                            stationObj.W_Destination_Out);
                        return false;
                    }
                    b2 = this.plcService.WriteValuePoint(stationObj.W_Outbound_TaskID, 0, view_stationObj.W_Outbound_TaskID);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station W_Outbound_TaskID 地址{0} 写  " + 0 + "失败,返回结果:" + b2.resMsg,
                            stationObj.W_Outbound_TaskID);
                        return false;
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("向Statio 出库任务完成确认 出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        /// <summary>
        /// 切换模式
        /// </summary>
        /// <param name="stationCode"></param>
        /// <param name="value"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public bool ChangeMode(string stationCode, int value, out string msg)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_Mode, value, view_stationObj.W_Mode);
                if (!b2.result)
                {
                    msg = string.Format("向Station 切换模式 地址{0} 写  " + value + "失败,返回结果:" + b2.resMsg,
                        stationObj.W_Mode);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("向Statio 切换模式 出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        public bool WriteInStoreTaskInfo(string stationCode, string toPlaceNo, short length, short width, short height, out string msg, int inbound_TaskID)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_Inbound_TaskID, inbound_TaskID, view_stationObj.W_Inbound_TaskID);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 入库任务号 " + inbound_TaskID + "失败,返回结果:" + b2.resMsg,
                      stationObj.W_Inbound_TaskID);
                    return false;
                }
@@ -305,12 +441,503 @@
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_DataFinish, true, view_stationObj.W_DataFinish);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 读码解析完成 " + true + "失败,返回结果:" + b2.resMsg,
                       stationObj.W_DataFinish);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("WriteInStoreTaskInfo出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        /// <summary>
        /// 写入码垛任务信息
        /// </summary>
        /// <param name="stationCode"></param>
        /// <param name=""></param>
        /// <param name="taskID"></param>
        /// <param name="isLast"></param>
        /// <param name="length"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="rotate"></param>
        /// <param name="toplace"></param>
        /// <param name="placeX"></param>
        /// <param name="placeY"></param>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <returns></returns>
        public bool WritePalletizingTaskInfo(string stationCode, int taskID, short length, short width, short height, short rotate, short toplace, short placeX, short placeY, short placeZ, short lastnum, out string msg)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_PalletizingTaskID, taskID, view_stationObj.W_PalletizingTaskID);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 码垛任务号 " + taskID + "失败,返回结果:" + b2.resMsg,
                      stationObj.W_Inbound_TaskID);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_Length, length, view_stationObj.W_Length);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 长度 " + length + "失败,返回结果:" + b2.resMsg,
                      stationObj.W_Length);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_Width, width, view_stationObj.W_Width);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 宽度 " + width + "失败,返回结果:" + b2.resMsg,
                      stationObj.W_Width);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_Height, height, view_stationObj.W_Height);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 高度 " + height + "失败,返回结果:" + b2.resMsg,
                     stationObj.W_Height);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_PalletizingStation, toplace, view_stationObj.W_PalletizingStation);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 目标位 " + toplace + "失败,返回结果:" + b2.resMsg,
                     stationObj.W_Height);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_Rotate, rotate, view_stationObj.W_Rotate);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 是否旋转 " + rotate + "失败,返回结果:" + b2.resMsg,
                     stationObj.W_Height);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_PalletizingPlaceX, placeX, view_stationObj.W_PalletizingPlaceX);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 X坐标 " + placeX + "失败,返回结果:" + b2.resMsg,
                     stationObj.W_Height);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_PalletizingPlaceY, placeY, view_stationObj.W_PalletizingPlaceY);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 Y坐标 " + placeY + "失败,返回结果:" + b2.resMsg,
                     stationObj.W_Height);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_PalletizingPlaceZ, placeZ, view_stationObj.W_PalletizingPlaceZ);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 Z坐标 " + placeZ + "失败,返回结果:" + b2.resMsg,
                     stationObj.W_Height);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_PalletizingBucketType, lastnum, view_stationObj.W_PalletizingBucketType);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 首末板 " + lastnum + "失败,返回结果:" + b2.resMsg,
                     stationObj.W_Height);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_DataFinish, true, view_stationObj.W_DataFinish);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 读码解析完成 " + true + "失败,返回结果:" + b2.resMsg,
                       stationObj.W_DataFinish);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("WriteInStoreTaskInfo出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        /// <summary>
        /// 合包下发任务
        /// </summary>
        /// <param name="stationCode"></param>
        /// <param name="taskID"></param>
        /// <param name="length"></param>
        /// <param name="width"></param>
        /// <param name="cartonhigh"></param>
        /// <param name="cartonwidth"></param>
        /// <param name="placex"></param>
        /// <param name="placey"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public bool WriteSurroundTaskInfo(string stationCode, short taskID, short length, short width, short cartonhigh, short cartonwidth,
            short placex, short placey, out string msg, bool isNgFlag)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_SurroundTaskNo, taskID, view_stationObj.W_SurroundTaskNo);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 合包任务号 " + taskID + "失败,返回结果:" + b2.resMsg,
                      stationObj.W_Inbound_TaskID);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_PackageLength, length, view_stationObj.W_PackageLength);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 合包长 " + length + "失败,返回结果:" + b2.resMsg,
                      stationObj.W_Destination_In);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_PackageWidth, width, view_stationObj.W_PackageWidth);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 合包宽 " + width + "失败,返回结果:" + b2.resMsg,
                      stationObj.W_Destination_In);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_CartonHeight, cartonhigh, view_stationObj.W_CartonHeight);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 纸箱长 " + cartonhigh + "失败,返回结果:" + b2.resMsg,
                      stationObj.W_Length);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_CartonWidth, cartonwidth, view_stationObj.W_CartonWidth);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 纸箱宽 " + width + "失败,返回结果:" + b2.resMsg,
                      stationObj.W_Width);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_X_Offset, placex, view_stationObj.W_X_Offset);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 放料x " + placex + "失败,返回结果:" + b2.resMsg,
                     stationObj.W_Height);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_Y_Offset, placey, view_stationObj.W_Y_Offset);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 放料y " + placey + "失败,返回结果:" + b2.resMsg,
                     stationObj.W_Height);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_DataFinish, true, view_stationObj.W_DataFinish);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} 写 读码解析完成 " + true + "失败,返回结果:" + b2.resMsg,
                       stationObj.W_DataFinish);
                    return false;
                }
                //增加写入NG标记
                if (isNgFlag)
                {
                    b2 = this.plcService.WriteValuePoint(stationObj.W_NgFlag, true, view_stationObj.W_NgFlag);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station地址{0} 写 NG包标记 " + true + "失败,返回结果:" + b2.resMsg,
                           stationObj.W_NgFlag);
                        return false;
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("WriteInStoreTaskInfo出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        /// <summary>
        /// 写入站点任务完成确认
        /// </summary>
        /// <param name="stationCode"></param>
        /// <param name="value"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public bool WriteStation_FinishACK(string stationCode, bool value, out string msg)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_PalletizingTaskFinish, value, view_stationObj.W_PalletizingTaskFinish);
                if (!b2.result)
                {
                    msg = string.Format("向Station" + stationCode + " 写入任务完成确认 地址{0} 写  " + value + "失败,返回结果:" + b2.resMsg,
                        stationObj.W_OutboundFinishConfirm);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("向Statio 出库任务完成确认 出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        /// <summary>
        /// 写入站点任务完成确认
        /// </summary>
        /// <param name="stationCode"></param>
        /// <param name="value"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public bool WriteStation_ACK(string stationCode, bool value, out string msg)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_DataFinish, value, view_stationObj.W_DataFinish);
                if (!b2.result)
                {
                    msg = string.Format("向Station" + stationCode + " 写入任务完成确认 地址{0} 写  " + value + "失败,返回结果:" + b2.resMsg,
                        stationObj.W_OutboundFinishConfirm);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("向Statio 出库任务完成确认 出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        /// <summary>
        /// 写入 补板工位允许进板
        /// </summary>
        /// <param name="stationCode"></param>
        /// <param name="value"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public bool WriteStation_AllowIn(string stationCode, bool value, out string msg)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_AllowIn, value, view_stationObj.W_AllowIn);
                if (!b2.result)
                {
                    msg = string.Format("向Station" + stationCode + " 写入 补板工位允许进板 地址{0} 写  " + value + "失败,返回结果:" + b2.resMsg,
                        stationObj.W_OutboundFinishConfirm);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("向Statio 补板工位允许进板 出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        public bool WriteStation_NgFlag(string stationCode, bool value, out string msg)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_NgFlag, value, view_stationObj.W_NgFlag);
                if (!b2.result)
                {
                    msg = string.Format("向Station" + stationCode + " 写入 NG包标记 地址{0} 写  " + value + "失败,返回结果:" + b2.resMsg,
                        stationObj.W_OutboundFinishConfirm);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("向Statio NG包标记 出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        /// <summary>
        /// 写入 人工放行
        /// </summary>
        /// <param name="stationCode"></param>
        /// <param name="value"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public bool WriteStation_PersonAllow(string stationCode, bool value, out string msg)
        {
            try
            {
                msg = "";
                //var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                //var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                //MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_PersonAllow, value, view_stationObj.W_PersonAllow);
                var stationObj = this.DBBlockForRead.R_StationForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.R_StationForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.R_ReqParseData, value, view_stationObj.R_ReqParseData);
                if (!b2.result)
                {
                    msg = string.Format("向Station" + stationCode + " 写入 人工放行 地址{0} 写  " + value + "失败,返回结果:" + b2.resMsg,
                        stationObj.R_ReqParseData);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("向Statio 人工放行 出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        public bool WriteSurround_FinishACK(string stationCode, bool value, out string msg)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_SurroundTaskFinish, value, view_stationObj.W_SurroundTaskFinish);
                if (!b2.result)
                {
                    msg = string.Format("向Station" + stationCode + " 写入任务完成确认 地址{0} 写  " + value + "失败,返回结果:" + b2.resMsg,
                        stationObj.W_OutboundFinishConfirm);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("向Statio 出库任务完成确认 出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        public bool WriteOutStoreTaskInfo(bool isResetData, string stationCode, string sourcePlaceNo, out string msg, int outbound_TaskID)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                if (isResetData == false)
                {
                    MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_Outbound_TaskID, outbound_TaskID, view_stationObj.W_Outbound_TaskID);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station地址{0} 写 出库任务号 " + outbound_TaskID + "失败,返回结果:" + b2.resMsg,
                           stationObj.W_Outbound_TaskID);
                        return false;
                    }
                    b2 = this.plcService.WriteValuePoint(stationObj.W_Destination_Out, Convert.ToInt32(sourcePlaceNo), view_stationObj.W_Destination_Out);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station地址{0} 写 库位号 " + sourcePlaceNo + "失败,返回结果:" + b2.resMsg,
                          stationObj.W_Destination_Out);
                        return false;
                    }
                    b2 = this.plcService.WriteValuePoint(stationObj.W_ReqOut, true, view_stationObj.W_ReqOut);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station地址{0} 写 请求出库 " + true + "失败,返回结果:" + b2.resMsg,
                          stationObj.W_ReqOut);
                        return false;
                    }
                    return true;
                }
                else
                {
                    MessageModel b2 = null;
                    b2 = this.plcService.WriteValuePoint(stationObj.W_ReqOut, false, view_stationObj.W_ReqOut);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station地址{0} 写 请求出库 " + false + "失败,返回结果:" + b2.resMsg,
                          stationObj.W_ReqOut);
                        return false;
                    }
                    return true;
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("WriteOutStoreTaskInfo 出现异常:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
@@ -569,8 +1196,6 @@
                StationDB2ObjForReadComm StationDB2ObjForReadComm = this.View.R_StationForReadCommList.Where(x => x.StationCode == item.StationCode).First();
                SdaHelper.SetPropertyValueForDB<StationDBForReadComm, StationDB2ObjForReadComm>(item, StationDB2ObjForReadComm, this.plcService, "");
            }
            //这里特殊处理 读取的发动机码
            this.View.R_1019_CargoNoScan = GetNewCategoryNo(this.View.R_1019_CargoNoScan);
        }
@@ -595,10 +1220,10 @@
            try
            {
                var r_dbBlock = this.DBBlockForRead;
                short value = Convert.ToInt16(this.plcService.ReadValuePoint(r_dbBlock.R_HandShake, typeof(short)));
                short value = Convert.ToInt16(this.plcService.ReadValuePoint(r_dbBlock.R_HandShake_FJ, typeof(short)));
                //约定 等待2秒
                Thread.Sleep(2000);
                short value_next = Convert.ToInt16(this.plcService.ReadValuePoint(r_dbBlock.R_HandShake, typeof(short)));
                short value_next = Convert.ToInt16(this.plcService.ReadValuePoint(r_dbBlock.R_HandShake_FJ, typeof(short)));
                if (value == value_next)
                {//没有心跳
                    return false;
@@ -621,52 +1246,33 @@
        /// 获取Station当前报警信息
        /// </summary>
        /// <returns></returns>
        public List<DeviceWarningInfo> GetStationAlertDatas()
        public List<DeviceWarningInfo> GetStationAlertDatas(List<WmsConfigDeviceWarning> configDeviceWarningList)
        {
            List<DeviceWarningInfo> db_warningList = new List<DeviceWarningInfo>();
            try
            {
                string _dbValue;
                string _dbNumber;
                string _dbOffset;
                var isHasAlert = false;
                IDictionary<string, string> StationAlertDict = new Dictionary<string, string>();
                StationAlertDict = WareSdaStruct.StationAlertDict;
                foreach (var item in StationAlertDict)
                //IDictionary<string, string> StationAlertDict = new Dictionary<string, string>();
                //StationAlertDict = StationWarningStruct.AlertDict;
                foreach (var item in configDeviceWarningList)
                {
                    _dbValue = item.Key;
                    isHasAlert = Convert.ToBoolean(this.plcService.ReadValuePoint(Station_CacheEntity.R_DBHeader_Station_Alert, item.Key, typeof(bool)));
                    //var arr = item.Key.Split('|');
                    //_dbNumber = arr[0];
                    //_dbOffset = arr[1];
                    var arr = item.WarningCode.Split('|');
                    _dbNumber = arr[0];
                    _dbOffset = arr[1];
                    isHasAlert = Convert.ToBoolean(this.plcService.ReadValuePoint(_dbNumber, _dbOffset, typeof(bool)));
                    if (isHasAlert)
                    {
                        db_warningList.Add(new DeviceWarningInfo()
                        {
                            Address = item.Key,
                            Code = item.Key,
                            Context = item.Value.Trim()
                            Code = item.WarningCode,
                            //Context = item.WarningContent.Trim(),
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return db_warningList;
        }
        /// <summary>
        /// 获取输送线当前报警信息
        /// </summary>
        /// <returns></returns>
        public List<DeviceWarningInfo> GetLineAlertDatas()
        {
            List<DeviceWarningInfo> db_warningList = new List<DeviceWarningInfo>();
            try
            {
                IDictionary<string, string> srmAlertDict = new Dictionary<string, string>();
                foreach (var item in this.View.R_StationForReadCommList)
                {
                    if (item.R_AlarmCode > 0)
                    {
                        item.R_AlarmCodeMsg = WareSdaStruct.StationAlertDict[item.R_AlarmCode.ToString()];
                    }
                }
            }
@@ -680,22 +1286,5 @@
        #endregion
        /// <summary>
        /// 特殊处理下 读取的发动机码
        /// </summary>
        /// <param name="orgCategoryNo"></param>
        /// <returns></returns>
        private string GetNewCategoryNo(string orgCategoryNo)
        {
            Log4NetHelper.WriteInfoLog(Station_CacheEntity.curLogType, "读取的发动机码,原始读取的值:" + orgCategoryNo);
            //如果有 $R内容,就替换为空
            var repStr = "$R";
            if (!string.IsNullOrEmpty(orgCategoryNo) && orgCategoryNo.IndexOf(repStr) > -1)
            {
                orgCategoryNo = orgCategoryNo.Replace(repStr, "");
            }
            Log4NetHelper.WriteInfoLog(Station_CacheEntity.curLogType, "读取的发动机码,替换后的值:" + orgCategoryNo);
            return orgCategoryNo;
        }
    }
}