Browse Source

Merge branch 'master' of ssh://10.10.100.21/source/mes-client

Hcsy 7 years ago
parent
commit
ab56ae2ba8

+ 16 - 4
PLCDataReader/DataOperate/DataHelper.cs

@@ -12,7 +12,7 @@ namespace UAS_PLCDataReader.DataOperate
         //系统默认的的连接字符串
         //系统默认的的连接字符串
         private string ConnectionStrings = Properties.Settings.Default.Properties["MES"].DefaultValue.ToString();
         private string ConnectionStrings = Properties.Settings.Default.Properties["MES"].DefaultValue.ToString();
         //用户选择的数据库的连接字符串
         //用户选择的数据库的连接字符串
-        public static string DBConnectionString = "Connection Timeout=0;Pooling=false;Password=select!#%*(;User ID=UAS_MES_PROD;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=218.17.158.219)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
+        public static string DBConnectionString = "Connection Timeout=0;Pooling=false;Password=select!#%*(;User ID=UAS_MES_PROD;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.253.6)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
         public static OracleConnection connection = null;
         public static OracleConnection connection = null;
         OracleCommand command = null;
         OracleCommand command = null;
         /// <summary>
         /// <summary>
@@ -697,7 +697,7 @@ namespace UAS_PLCDataReader.DataOperate
                 SavedID = new string[0];
                 SavedID = new string[0];
                 return;
                 return;
             }
             }
-         
+
             StringBuilder sb = new StringBuilder();
             StringBuilder sb = new StringBuilder();
             //预防插入的DataTable中存在不属于该表的列,在进行下一步操作之前全部剔除
             //预防插入的DataTable中存在不属于该表的列,在进行下一步操作之前全部剔除
             DataTable data = (DataTable)ExecuteSql("select Column_Name,Data_Type from cols where TABLE_name=upper('" + TableName + "')", "select");
             DataTable data = (DataTable)ExecuteSql("select Column_Name,Data_Type from cols where TABLE_name=upper('" + TableName + "')", "select");
@@ -810,7 +810,19 @@ namespace UAS_PLCDataReader.DataOperate
             //将第一个数组的下标固定为0作为循环添加的参数的名称
             //将第一个数组的下标固定为0作为循环添加的参数的名称
             for (int i = 1; i <= names[0].Length; i++)
             for (int i = 1; i <= names[0].Length; i++)
             {
             {
-                command.Parameters.Add(new OracleParameter(names[0][i - 1].ToString(), OracleDbType.Varchar2, names[i], ParameterDirection.Input));
+                if (names[0][i - 1].ToString().ToUpper().Contains("DATE"))
+                {
+                    DateTime[] time = new DateTime[names[i].Length];
+                    for (int j = 0; j < names[i].Length; j++)
+                    {
+                        time[j] = Convert.ToDateTime(names[i][j]);
+                    }
+                    command.Parameters.Add(new OracleParameter(names[0][i - 1].ToString(), OracleDbType.Date, time, ParameterDirection.Input));
+                }
+                else
+                {
+                    command.Parameters.Add(new OracleParameter(names[0][i - 1].ToString(), OracleDbType.Varchar2, names[i], ParameterDirection.Input));
+                }
             }
             }
             try
             try
             {
             {
@@ -1105,7 +1117,7 @@ namespace UAS_PLCDataReader.DataOperate
 
 
         public void Dispose()
         public void Dispose()
         {
         {
-         
+
         }
         }
     }
     }
 }
 }

+ 15 - 0
PLCDataReader/Entity/Polling.cs

@@ -12,6 +12,8 @@ namespace UAS_PLCDataReader.Entity
 
 
         private string deviceCode;
         private string deviceCode;
 
 
+        private string deviceName;
+
         private string iP;
         private string iP;
 
 
         private string port;
         private string port;
@@ -142,5 +144,18 @@ namespace UAS_PLCDataReader.Entity
                 commandCode = value;
                 commandCode = value;
             }
             }
         }
         }
+
+        public string DeviceName
+        {
+            get
+            {
+                return deviceName;
+            }
+
+            set
+            {
+                deviceName = value;
+            }
+        }
     }
     }
 }
 }

+ 21 - 8
PLCDataReader/Main.Designer.cs

@@ -168,6 +168,7 @@ namespace UAS_PLCDataReader
             this.GridViewWorkCenterStatus = new UAS_PLCDataReader.CustomerControl.GridViewWithSerialNum.GridViewWithSerialNum();
             this.GridViewWorkCenterStatus = new UAS_PLCDataReader.CustomerControl.GridViewWithSerialNum.GridViewWithSerialNum();
             this.TimerDeviceStatus = new System.Windows.Forms.Timer(this.components);
             this.TimerDeviceStatus = new System.Windows.Forms.Timer(this.components);
             this.CommonTipController = new DevExpress.Utils.ToolTipController(this.components);
             this.CommonTipController = new DevExpress.Utils.ToolTipController(this.components);
+            this.dpc_dename = new DevExpress.XtraGrid.Columns.GridColumn();
             ((System.ComponentModel.ISupportInitialize)(this.RibbonNav)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.RibbonNav)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.MainTabControl)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.MainTabControl)).BeginInit();
             this.MainTabControl.SuspendLayout();
             this.MainTabControl.SuspendLayout();
@@ -893,8 +894,10 @@ namespace UAS_PLCDataReader
             // 
             // 
             this.dc_date.Caption = "维护时间";
             this.dc_date.Caption = "维护时间";
             this.dc_date.ColumnEdit = this.repositoryItemDateEdit1;
             this.dc_date.ColumnEdit = this.repositoryItemDateEdit1;
+            this.dc_date.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
             this.dc_date.FieldName = "DC_DATE";
             this.dc_date.FieldName = "DC_DATE";
             this.dc_date.Name = "dc_date";
             this.dc_date.Name = "dc_date";
+            this.dc_date.OptionsColumn.AllowEdit = false;
             this.dc_date.Visible = true;
             this.dc_date.Visible = true;
             this.dc_date.VisibleIndex = 9;
             this.dc_date.VisibleIndex = 9;
             this.dc_date.Width = 118;
             this.dc_date.Width = 118;
@@ -1167,6 +1170,7 @@ namespace UAS_PLCDataReader
             this.PollSettingCheckedColumn,
             this.PollSettingCheckedColumn,
             this.dpc_id,
             this.dpc_id,
             this.dpc_decode,
             this.dpc_decode,
+            this.dpc_dename,
             this.dpc_interval,
             this.dpc_interval,
             this.dpc_dccode,
             this.dpc_dccode,
             this.dpc_function,
             this.dpc_function,
@@ -1217,7 +1221,7 @@ namespace UAS_PLCDataReader
             this.dpc_interval.FieldName = "DPC_INTERVAL";
             this.dpc_interval.FieldName = "DPC_INTERVAL";
             this.dpc_interval.Name = "dpc_interval";
             this.dpc_interval.Name = "dpc_interval";
             this.dpc_interval.Visible = true;
             this.dpc_interval.Visible = true;
-            this.dpc_interval.VisibleIndex = 2;
+            this.dpc_interval.VisibleIndex = 3;
             this.dpc_interval.Width = 90;
             this.dpc_interval.Width = 90;
             // 
             // 
             // dpc_dccode
             // dpc_dccode
@@ -1227,7 +1231,7 @@ namespace UAS_PLCDataReader
             this.dpc_dccode.FieldName = "DPC_DCCODE";
             this.dpc_dccode.FieldName = "DPC_DCCODE";
             this.dpc_dccode.Name = "dpc_dccode";
             this.dpc_dccode.Name = "dpc_dccode";
             this.dpc_dccode.Visible = true;
             this.dpc_dccode.Visible = true;
-            this.dpc_dccode.VisibleIndex = 3;
+            this.dpc_dccode.VisibleIndex = 4;
             this.dpc_dccode.Width = 90;
             this.dpc_dccode.Width = 90;
             // 
             // 
             // PollSettingItemSearchLookUpEdit
             // PollSettingItemSearchLookUpEdit
@@ -1280,7 +1284,7 @@ namespace UAS_PLCDataReader
             this.dpc_function.FieldName = "DPC_FUNCTION";
             this.dpc_function.FieldName = "DPC_FUNCTION";
             this.dpc_function.Name = "dpc_function";
             this.dpc_function.Name = "dpc_function";
             this.dpc_function.Visible = true;
             this.dpc_function.Visible = true;
-            this.dpc_function.VisibleIndex = 4;
+            this.dpc_function.VisibleIndex = 5;
             this.dpc_function.Width = 90;
             this.dpc_function.Width = 90;
             // 
             // 
             // dpc_enable
             // dpc_enable
@@ -1290,7 +1294,7 @@ namespace UAS_PLCDataReader
             this.dpc_enable.FieldName = "DPC_ENABLE";
             this.dpc_enable.FieldName = "DPC_ENABLE";
             this.dpc_enable.Name = "dpc_enable";
             this.dpc_enable.Name = "dpc_enable";
             this.dpc_enable.Visible = true;
             this.dpc_enable.Visible = true;
-            this.dpc_enable.VisibleIndex = 5;
+            this.dpc_enable.VisibleIndex = 6;
             this.dpc_enable.Width = 90;
             this.dpc_enable.Width = 90;
             // 
             // 
             // em_name1
             // em_name1
@@ -1300,7 +1304,7 @@ namespace UAS_PLCDataReader
             this.em_name1.Name = "em_name1";
             this.em_name1.Name = "em_name1";
             this.em_name1.OptionsColumn.AllowEdit = false;
             this.em_name1.OptionsColumn.AllowEdit = false;
             this.em_name1.Visible = true;
             this.em_name1.Visible = true;
-            this.em_name1.VisibleIndex = 9;
+            this.em_name1.VisibleIndex = 10;
             // 
             // 
             // dpc_status
             // dpc_status
             // 
             // 
@@ -1309,7 +1313,7 @@ namespace UAS_PLCDataReader
             this.dpc_status.Name = "dpc_status";
             this.dpc_status.Name = "dpc_status";
             this.dpc_status.OptionsColumn.AllowEdit = false;
             this.dpc_status.OptionsColumn.AllowEdit = false;
             this.dpc_status.Visible = true;
             this.dpc_status.Visible = true;
-            this.dpc_status.VisibleIndex = 6;
+            this.dpc_status.VisibleIndex = 7;
             this.dpc_status.Width = 90;
             this.dpc_status.Width = 90;
             // 
             // 
             // dpc_man
             // dpc_man
@@ -1325,7 +1329,7 @@ namespace UAS_PLCDataReader
             this.dpc_remark.FieldName = "DPC_REMARK";
             this.dpc_remark.FieldName = "DPC_REMARK";
             this.dpc_remark.Name = "dpc_remark";
             this.dpc_remark.Name = "dpc_remark";
             this.dpc_remark.Visible = true;
             this.dpc_remark.Visible = true;
-            this.dpc_remark.VisibleIndex = 7;
+            this.dpc_remark.VisibleIndex = 8;
             this.dpc_remark.Width = 87;
             this.dpc_remark.Width = 87;
             // 
             // 
             // POLLSETTINGSTATUSCOLUMN
             // POLLSETTINGSTATUSCOLUMN
@@ -1335,7 +1339,7 @@ namespace UAS_PLCDataReader
             this.POLLSETTINGSTATUSCOLUMN.Name = "POLLSETTINGSTATUSCOLUMN";
             this.POLLSETTINGSTATUSCOLUMN.Name = "POLLSETTINGSTATUSCOLUMN";
             this.POLLSETTINGSTATUSCOLUMN.OptionsColumn.ReadOnly = true;
             this.POLLSETTINGSTATUSCOLUMN.OptionsColumn.ReadOnly = true;
             this.POLLSETTINGSTATUSCOLUMN.Visible = true;
             this.POLLSETTINGSTATUSCOLUMN.Visible = true;
-            this.POLLSETTINGSTATUSCOLUMN.VisibleIndex = 8;
+            this.POLLSETTINGSTATUSCOLUMN.VisibleIndex = 9;
             this.POLLSETTINGSTATUSCOLUMN.Width = 98;
             this.POLLSETTINGSTATUSCOLUMN.Width = 98;
             // 
             // 
             // PollingSetItemLookUpEdit
             // PollingSetItemLookUpEdit
@@ -1611,6 +1615,14 @@ namespace UAS_PLCDataReader
             // 
             // 
             this.CommonTipController.AutoPopDelay = 10000;
             this.CommonTipController.AutoPopDelay = 10000;
             // 
             // 
+            // dpc_dename
+            // 
+            this.dpc_dename.Caption = "设备名称";
+            this.dpc_dename.FieldName = "DPC_DENAME";
+            this.dpc_dename.Name = "dpc_dename";
+            this.dpc_dename.Visible = true;
+            this.dpc_dename.VisibleIndex = 2;
+            // 
             // Main
             // Main
             // 
             // 
             this.AllowFormGlass = DevExpress.Utils.DefaultBoolean.False;
             this.AllowFormGlass = DevExpress.Utils.DefaultBoolean.False;
@@ -1809,5 +1821,6 @@ namespace UAS_PLCDataReader
         private DevExpress.XtraGrid.Columns.GridColumn DeviceListCheckedColumn;
         private DevExpress.XtraGrid.Columns.GridColumn DeviceListCheckedColumn;
         private DevExpress.XtraGrid.Columns.GridColumn de_sourcecode;
         private DevExpress.XtraGrid.Columns.GridColumn de_sourcecode;
         private DevExpress.XtraEditors.Repository.RepositoryItemDateEdit repositoryItemDateEdit1;
         private DevExpress.XtraEditors.Repository.RepositoryItemDateEdit repositoryItemDateEdit1;
+        private DevExpress.XtraGrid.Columns.GridColumn dpc_dename;
     }
     }
 }
 }

+ 32 - 11
PLCDataReader/Main.cs

@@ -29,6 +29,8 @@ namespace UAS_PLCDataReader
         DataHelper dh = SystemInf.dh;
         DataHelper dh = SystemInf.dh;
         ModeBusTCPServer mbt = new ModeBusTCPServer();
         ModeBusTCPServer mbt = new ModeBusTCPServer();
         List<string> SQL = new List<string>();
         List<string> SQL = new List<string>();
+        //存放所有的设备返回的数据,用于比较
+        public static Dictionary<string, Dictionary<string, string>> ReturnData = new Dictionary<string, Dictionary<string, string>>();
 
 
         #region 初始化代码
         #region 初始化代码
         public Main()
         public Main()
@@ -82,7 +84,7 @@ namespace UAS_PLCDataReader
             GridDeviceList.GetDataSQL = "SELECT 0 CHECKEDCOLUMN,DE_ID,DE_CODE,DE_NAME,DE_SPEC,DE_INDATE,DE_RUNSTATUS,DE_ADDRESS,DE_INMAN,DE_LINECODE,DE_WCCODE,DE_VENDCODE,DE_VENDNAME,DE_STEPCODE,DE_STEPNAME,DE_SOURCECODE FROM DEVICE ORDER BY DE_CODE".ToUpper();
             GridDeviceList.GetDataSQL = "SELECT 0 CHECKEDCOLUMN,DE_ID,DE_CODE,DE_NAME,DE_SPEC,DE_INDATE,DE_RUNSTATUS,DE_ADDRESS,DE_INMAN,DE_LINECODE,DE_WCCODE,DE_VENDCODE,DE_VENDNAME,DE_STEPCODE,DE_STEPNAME,DE_SOURCECODE FROM DEVICE ORDER BY DE_CODE".ToUpper();
             GridDeviceList.TableName = "device";
             GridDeviceList.TableName = "device";
             GridDeviceList.ID = "de_id";
             GridDeviceList.ID = "de_id";
-            GridDeviceList.InsertSQL = "INSERT INTO DEVICE(DE_ID,DE_CODE,DE_NAME,DE_SPEC,DE_INDATE,DE_RUNSTATUS,DE_ADDRESS,DE_INMAN,DE_LINECODE,DE_WCCODE,DE_VENDCODE,DE_VENDNAME,DE_STEPCODE,DE_STEPNAME,DE_SOURCECODE) VALUES(DEVICE_SEQ.NEXTVAL,:DE_CODE,:DE_NAME,:DE_SPEC,:DE_INDATE,:DE_RUNSTATUS,:DE_ADDRESS,:DE_INMAN,:DE_LINECODE,:DE_WCCODE,:DE_VENDCODE,:DE_VENDNAME,:DE_STEPCODE,:DE_STEPNAME,:DE_SOURCECODE)";
+            GridDeviceList.InsertSQL = "INSERT INTO DEVICE(DE_ID,DE_CODE,DE_NAME,DE_SPEC,DE_INDATE,DE_RUNSTATUS,DE_ADDRESS,DE_INMAN,DE_LINECODE,DE_WCCODE,DE_VENDCODE,DE_VENDNAME,DE_STEPCODE,DE_STEPNAME,DE_SOURCECODE) VALUES(DEVICE_SEQ.NEXTVAL,:DE_CODE,:DE_NAME,:DE_SPEC,sysdate,:DE_RUNSTATUS,:DE_ADDRESS,:DE_INMAN,:DE_LINECODE,:DE_WCCODE,:DE_VENDCODE,:DE_VENDNAME,:DE_STEPCODE,:DE_STEPNAME,:DE_SOURCECODE)";
             ButtonAddDevice.Grid = GridDeviceList;
             ButtonAddDevice.Grid = GridDeviceList;
             ButtonSaveDevice.Grid = GridDeviceList;
             ButtonSaveDevice.Grid = GridDeviceList;
             ButtonDeleteDevice.Grid = GridDeviceList;
             ButtonDeleteDevice.Grid = GridDeviceList;
@@ -96,10 +98,10 @@ namespace UAS_PLCDataReader
             //ButtonSavePolling.Grid = GridPolling;
             //ButtonSavePolling.Grid = GridPolling;
             //ButtonAddPolling.Grid = GridPolling;
             //ButtonAddPolling.Grid = GridPolling;
             //轮询配置界面
             //轮询配置界面
-            GridPollingSetting.GetDataSQL = "SELECT '' POLLSETTINGSTATUSCOLUMN,0 CHECKEDCOLUMN,DPC_MAN,DPC_ID,DPC_DECODE ,DPC_INTERVAL ,DPC_DCCODE ,DPC_FUNCTION , nvl(DPC_ENABLE,0)DPC_ENABLE,DPC_STATUS,DPC_REMARK,EM_NAME FROM DEVICEPOLLINGCONFIG left join EMPLOYEE on em_code=dpc_man WHERE DPC_MAN='" + User.UserCode + "' ORDER BY DPC_ID";
+            GridPollingSetting.GetDataSQL = "SELECT '' POLLSETTINGSTATUSCOLUMN,0 CHECKEDCOLUMN,DPC_MAN,DPC_ID,DPC_DECODE,DPC_DENAME ,DPC_INTERVAL ,DPC_DCCODE ,DPC_FUNCTION , nvl(DPC_ENABLE,0)DPC_ENABLE,DPC_STATUS,DPC_REMARK,EM_NAME FROM DEVICEPOLLINGCONFIG left join EMPLOYEE on em_code=dpc_man WHERE DPC_MAN='" + User.UserCode + "' ORDER BY DPC_ID";
             GridPollingSetting.ID = "DPC_ID";
             GridPollingSetting.ID = "DPC_ID";
             GridPollingSetting.TableName = "DEVICEPOLLINGCONFIG";
             GridPollingSetting.TableName = "DEVICEPOLLINGCONFIG";
-            GridPollingSetting.InsertSQL = "insert into DEVICEPOLLINGCONFIG(DPC_ID,DPC_DECODE ,DPC_INTERVAL ,DPC_DCCODE ,DPC_FUNCTION , DPC_ENABLE,DPC_STATUS ,DPC_REMARK,DPC_MAN) values(DEVICEPOLLINGCONFIG_seq.nextval,:DPC_DECODE  ,:DPC_INTERVAL ,:DPC_DCCODE ,:DPC_FUNCTION , :DPC_ENABLE,:DPC_STATUS ,:DPC_REMARK,'" + User.UserCode + "')";
+            GridPollingSetting.InsertSQL = "insert into DEVICEPOLLINGCONFIG(DPC_ID,DPC_DECODE,DPC_DENAME ,DPC_INTERVAL ,DPC_DCCODE ,DPC_FUNCTION , DPC_ENABLE,DPC_STATUS ,DPC_REMARK,DPC_MAN) values(DEVICEPOLLINGCONFIG_seq.nextval,:DPC_DECODE  ,:DPC_INTERVAL ,:DPC_DCCODE ,:DPC_FUNCTION , :DPC_ENABLE,:DPC_STATUS ,:DPC_REMARK,'" + User.UserCode + "')";
             ButtonSaveCommandSet.Grid = GridPollingSetting;
             ButtonSaveCommandSet.Grid = GridPollingSetting;
             ButtonNewCommandSet.Grid = GridPollingSetting;
             ButtonNewCommandSet.Grid = GridPollingSetting;
             ButtonDeleteCommandSet.Grid = GridPollingSetting;
             ButtonDeleteCommandSet.Grid = GridPollingSetting;
@@ -335,6 +337,7 @@ namespace UAS_PLCDataReader
                 Polling pl = new Polling();
                 Polling pl = new Polling();
                 pl.Id = int.Parse(GridViewPollSetting.GetRowCellValue(i, "DPC_ID").ToString());
                 pl.Id = int.Parse(GridViewPollSetting.GetRowCellValue(i, "DPC_ID").ToString());
                 pl.DeviceCode = GridViewPollSetting.GetRowCellValue(i, "DPC_DECODE").ToString();
                 pl.DeviceCode = GridViewPollSetting.GetRowCellValue(i, "DPC_DECODE").ToString();
+                pl.DeviceName = GridViewPollSetting.GetRowCellValue(i, "DPC_DENAME").ToString();
                 pl.CommandCode = GridViewPollSetting.GetRowCellValue(i, "DPC_DCCODE").ToString();
                 pl.CommandCode = GridViewPollSetting.GetRowCellValue(i, "DPC_DCCODE").ToString();
                 pl.Interval = int.Parse(GridViewPollSetting.GetRowCellValue(i, "DPC_INTERVAL").ToString());
                 pl.Interval = int.Parse(GridViewPollSetting.GetRowCellValue(i, "DPC_INTERVAL").ToString());
                 pl.Enable = GridViewPollSetting.GetRowCellValue(i, "DPC_ENABLE").ToString() != "0";
                 pl.Enable = GridViewPollSetting.GetRowCellValue(i, "DPC_ENABLE").ToString() != "0";
@@ -346,6 +349,12 @@ namespace UAS_PLCDataReader
                     sql.Append("insert into DEVICEPOLLINGLOG(dpg_id,dpg_decode,dpg_starttime,dpg_interval)values");
                     sql.Append("insert into DEVICEPOLLINGLOG(dpg_id,dpg_decode,dpg_starttime,dpg_interval)values");
                     sql.Append("(DEVICEPOLLINGLOG_seq.nextval,'" + pl.DeviceCode + "',sysdate,'" + pl.Interval + "')");
                     sql.Append("(DEVICEPOLLINGLOG_seq.nextval,'" + pl.DeviceCode + "',sysdate,'" + pl.Interval + "')");
                     dh.ExecuteSql(sql.ToString(), "insert");
                     dh.ExecuteSql(sql.ToString(), "insert");
+                    sql.Clear();
+                    sql.Append("MERGE INTO DeviceRunstatus alias1 USING (select '" + pl.DeviceCode + "' dr_decode from  dual) alias2 ");
+                    sql.Append("ON (alias1.dr_decode=alias2.dr_decode) WHEN MATCHED THEN  UPDATE  SET dr_startdate =sysdate ");
+                    sql.Append("WHEN NOT MATCHED THEN INSERT (Dr_id,dr_decode,dr_dename,Dr_runstatus,dr_startdate) VALUES (DeviceRunstatus_seq.nextval,");
+                    sql.Append("'" + pl.DeviceCode + "','" + pl.DeviceName + "','running',sysdate)");
+                    dh.ExecuteSql(sql.ToString(), "update");
                     pt.AddTask(RunTask, pl);
                     pt.AddTask(RunTask, pl);
                     //添加到状态为运行的行
                     //添加到状态为运行的行
                     PollSettingPaintRowIndex.Add(i);
                     PollSettingPaintRowIndex.Add(i);
@@ -418,26 +427,40 @@ namespace UAS_PLCDataReader
                     SendCommandByteSize = Encoding.Default.GetBytes(Command.ToCharArray()).Length;
                     SendCommandByteSize = Encoding.Default.GetBytes(Command.ToCharArray()).Length;
                 }
                 }
                 mbt.Send(IP, SendCoding, ReceiveCoding, Command);
                 mbt.Send(IP, SendCoding, ReceiveCoding, Command);
-                //处理2秒之内返回的指令
-                //Thread.Sleep(1000);
                 if (mbt.Returnvalue.ContainsKey(IP))
                 if (mbt.Returnvalue.ContainsKey(IP))
                 {
                 {
                     int ReceiveCommandByteSize = Encoding.Default.GetBytes(mbt.Returnvalue[IP].ToCharArray()).Length;
                     int ReceiveCommandByteSize = Encoding.Default.GetBytes(mbt.Returnvalue[IP].ToCharArray()).Length;
+                    Dictionary<string, string> ItemData = new Dictionary<string, string>();
+                    int[] Arr = BaseUtil.GetDecimalData(BaseUtil.ASCIIToString(mbt.Returnvalue[IP]), 8);
+                    for (int i = 0; i < Arr.Length; i++)
+                    {
+                        ItemData.Add("Item" + i, Arr[i].ToString());
+                    }
+                    //如果不包含该项数据则在键值对中添加
+                    if (!ReturnData.ContainsKey(Decode))
+                    {
+                        ReturnData.Add(Decode, ItemData);
+                    }
+                    else
+                    {
+                        //检测键值对是否发生变化,发生变化时赋予新值
+                        if ((BaseUtil.CheckDicDiff(ReturnData[Decode], ItemData)))
+                        {
+                            ReturnData[Decode] = ItemData;
+                        }
+                    }
                     mbt.Returnvalue.Remove(IP);
                     mbt.Returnvalue.Remove(IP);
                     SQL.Clear();
                     SQL.Clear();
                     //更新轮询状态
                     //更新轮询状态
                     sql.Clear();
                     sql.Clear();
                     sql.Append("update DEVICEPOLLINGCONFIG set dpc_status='Running' where dpc_decode='" + Decode + "' and dpc_dccode='" + Dccode + "'");
                     sql.Append("update DEVICEPOLLINGCONFIG set dpc_status='Running' where dpc_decode='" + Decode + "' and dpc_dccode='" + Dccode + "'");
                     dh.ExecuteSql(sql.ToString(), "update");
                     dh.ExecuteSql(sql.ToString(), "update");
-                    //SQL.Add(sql.ToString());
                     //更新轮询日志状态
                     //更新轮询日志状态
                     sql.Clear();
                     sql.Clear();
                     sql.Append("update DEVICEPOLLINGLOG set dpg_status='Running',dpg_senddatasize=nvl(dpg_senddatasize,0)+" + SendCommandByteSize);
                     sql.Append("update DEVICEPOLLINGLOG set dpg_status='Running',dpg_senddatasize=nvl(dpg_senddatasize,0)+" + SendCommandByteSize);
                     sql.Append(",dpg_receivedatasize=nvl(dpg_receivedatasize,0)+" + ReceiveCommandByteSize + ",dpg_count=nvl(dpg_count,0)+1 ");
                     sql.Append(",dpg_receivedatasize=nvl(dpg_receivedatasize,0)+" + ReceiveCommandByteSize + ",dpg_count=nvl(dpg_count,0)+1 ");
                     sql.Append(" where dpg_id=(select max(dpg_id) from DEVICEPOLLINGLOG where dpg_decode='" + Decode + "')");
                     sql.Append(" where dpg_id=(select max(dpg_id) from DEVICEPOLLINGLOG where dpg_decode='" + Decode + "')");
-                    //SQL.Add(sql.ToString());
                     dh.ExecuteSql(sql.ToString(), "update");
                     dh.ExecuteSql(sql.ToString(), "update");
-                    //dh.ExecuteSQLTran(SQL.ToArray());
                 }
                 }
                 else
                 else
                 {
                 {
@@ -445,16 +468,13 @@ namespace UAS_PLCDataReader
                     //更新轮询状态
                     //更新轮询状态
                     sql.Clear();
                     sql.Clear();
                     sql.Append("update DEVICEPOLLINGCONFIG set dpc_status='Stop' where dpc_decode='" + Decode + "' and dpc_dccode='" + Dccode + "'");
                     sql.Append("update DEVICEPOLLINGCONFIG set dpc_status='Stop' where dpc_decode='" + Decode + "' and dpc_dccode='" + Dccode + "'");
-                    //SQL.Add(sql.ToString());
                     dh.ExecuteSql(sql.ToString(), "update");
                     dh.ExecuteSql(sql.ToString(), "update");
                     //更新轮询日志状态
                     //更新轮询日志状态
                     sql.Clear();
                     sql.Clear();
                     sql.Append("update DEVICEPOLLINGLOG set dpg_status='Running',dpg_senddatasize=nvl(dpg_senddatasize,0)+");
                     sql.Append("update DEVICEPOLLINGLOG set dpg_status='Running',dpg_senddatasize=nvl(dpg_senddatasize,0)+");
                     sql.Append(SendCommandByteSize + ",dpg_count=nvl(dpg_count,0)+1 ");
                     sql.Append(SendCommandByteSize + ",dpg_count=nvl(dpg_count,0)+1 ");
                     sql.Append("where dpg_id=(select max(dpg_id) from DEVICEPOLLINGLOG where dpg_decode='" + Decode + "')");
                     sql.Append("where dpg_id=(select max(dpg_id) from DEVICEPOLLINGLOG where dpg_decode='" + Decode + "')");
-                    //SQL.Add(sql.ToString());
                     dh.ExecuteSql(sql.ToString(), "update");
                     dh.ExecuteSql(sql.ToString(), "update");
-                    //dh.ExecuteSQLTran(SQL.ToArray());
                 }
                 }
             }
             }
         }
         }
@@ -504,6 +524,7 @@ namespace UAS_PLCDataReader
                     Polling pl = new Polling();
                     Polling pl = new Polling();
                     pl.Id = int.Parse(GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_ID").ToString());
                     pl.Id = int.Parse(GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_ID").ToString());
                     pl.DeviceCode = GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_DECODE").ToString();
                     pl.DeviceCode = GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_DECODE").ToString();
+                    pl.DeviceName = GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_DENAME").ToString();
                     pl.Interval = int.Parse(GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_INTERVAL").ToString());
                     pl.Interval = int.Parse(GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_INTERVAL").ToString());
                     pl.CommandCode = GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_DCCODE").ToString();
                     pl.CommandCode = GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_DCCODE").ToString();
                     pl.Enable = GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_ENABLE").ToString() != "0";
                     pl.Enable = GridViewPollSetting.GetRowCellValue(e.RowHandle, "DPC_ENABLE").ToString() != "0";

+ 1 - 0
PLCDataReader/Program.cs

@@ -36,6 +36,7 @@ namespace UAS_PLCDataReader
                     Directory.CreateDirectory(LogManager.LogAddress);
                     Directory.CreateDirectory(LogManager.LogAddress);
                 FileStream fs = new FileStream(LogManager.LogAddress + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
                 FileStream fs = new FileStream(LogManager.LogAddress + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
                 fs.Close();
                 fs.Close();
+                DevExpress.Skins.SkinManager.EnableFormSkins();
                 if (principal.IsInRole(WindowsBuiltInRole.Administrator))
                 if (principal.IsInRole(WindowsBuiltInRole.Administrator))
                     Application.Run(new Login());
                     Application.Run(new Login());
                 else
                 else

+ 20 - 2
PLCDataReader/PublicMethod/BaseUtil.cs

@@ -123,7 +123,7 @@ namespace UAS_PLCDataReader.PublicMethod
                     returnStr += Convert.ToString(b[i], 16);//ToString("X2") 为C#中的字符串格式控制符
                     returnStr += Convert.ToString(b[i], 16);//ToString("X2") 为C#中的字符串格式控制符
                 }
                 }
             }
             }
-            return returnStr;
+            return returnStr.ToUpper();
         }
         }
 
 
         public static void CleanMemory()
         public static void CleanMemory()
@@ -168,6 +168,24 @@ namespace UAS_PLCDataReader.PublicMethod
             }
             }
         }
         }
 
 
+        /// <summary>
+        /// 检测键值对是否发生值的变化
+        /// </summary>
+        public static bool CheckDicDiff(Dictionary<string, string> A, Dictionary<string, string> B)
+        {
+            foreach (var item in B)
+            {
+                if (A.ContainsKey(item.Key))
+                {
+                    if (A[item.Key] != item.Value)
+                    {
+                        return true;
+                    }
+                }
+            }
+            return false;
+        }
+
         /// <summary>
         /// <summary>
         ///  传入控件的集合和DataTable,通过判断控件的名称和数据源的列的描述来匹配,支持单层的GroupBox和Panel
         ///  传入控件的集合和DataTable,通过判断控件的名称和数据源的列的描述来匹配,支持单层的GroupBox和Panel
         /// </summary>
         /// </summary>
@@ -334,7 +352,7 @@ namespace UAS_PLCDataReader.PublicMethod
                     }
                     }
                 }
                 }
             }
             }
-            return ReturnStr;
+            return ReturnStr.ToUpper();
         }
         }
 
 
         public static int[] GetDecimalData(string HexStr, int DataSize)
         public static int[] GetDecimalData(string HexStr, int DataSize)

+ 1 - 1
UAS-出货标签管理(泽天)/PublicMethod/DataHelper.cs

@@ -53,7 +53,7 @@ namespace UAS_LabelMachine
         //泽天FTP内网
         //泽天FTP内网
         public static readonly string FTPAdress = "ftp://10.2.10.241|uas|Lz201478c";
         public static readonly string FTPAdress = "ftp://10.2.10.241|uas|Lz201478c";
         //Oracle端口
         //Oracle端口
-        public static readonly string OraclePort = "1521";
+        public static readonly string OraclePort = "1521";  
         //需要显示的账套
         //需要显示的账套
         public static readonly string Masters = "ZT_TEST,ZT";
         public static readonly string Masters = "ZT_TEST,ZT";
         //用户选择的数据库的连接字符串
         //用户选择的数据库的连接字符串

+ 9 - 12
UAS-出货标签管理(泽天)/UAS_出货标签管理.cs

@@ -322,6 +322,7 @@ namespace UAS_LabelMachine
                 Input.SelectAll();
                 Input.SelectAll();
                 return;
                 return;
             }
             }
+            GetBarCodeRule(out Prefix, out Suffix, out MaxNum, out NumLength, out Radix);
             List<string> CustBarCode = new List<string>();
             List<string> CustBarCode = new List<string>();
             if (!(Radix > 0))
             if (!(Radix > 0))
             {
             {
@@ -348,9 +349,9 @@ namespace UAS_LabelMachine
             }
             }
             sql.Clear();
             sql.Clear();
             sql.Append("insert into prodiobarcode(PIB_ID,PIB_PRODCODE,PIB_INDATE,PIB_INOUTNO,PIB_PIID,PIB_PDNO, PIB_PDID,PIB_PICLASS,");
             sql.Append("insert into prodiobarcode(PIB_ID,PIB_PRODCODE,PIB_INDATE,PIB_INOUTNO,PIB_PIID,PIB_PDNO, PIB_PDID,PIB_PICLASS,");
-            sql.Append("PIB_BARCODE,PIB_CUSTBARCODE,PIB_QTY,pib_brand,pib_datecode,pib_lotno,PIB_OUTBOXCODE2,pib_inman,PIB_IFPRINT,PIB_ORDERCODE,PIB_CUSTPO,pib_remark,pib_midcapatity) ");
+            sql.Append("PIB_BARCODE,PIB_CUSTBARCODE,PIB_QTY,pib_brand,pib_datecode,pib_lotno,PIB_OUTBOXCODE2,pib_inman,PIB_IFPRINT,PIB_ORDERCODE,PIB_CUSTPO,pib_remark,pib_midcapatity,pib_custcode) ");
             sql.Append("select :PIB_ID,pd_prodcode,sysdate,pi_inoutno,pi_id,pd_pdno,pd_id,pi_class,");
             sql.Append("select :PIB_ID,pd_prodcode,sysdate,pi_inoutno,pi_id,pd_pdno,pd_id,pi_class,");
-            sql.Append("'" + pib_barcode + "',:PIB_CUSTBARCODE,'" + CurrentZXBZ + "','" + Data["BRAND"] + "','" + Data["DATECODE"] + "','" + Data["LOTNO"] + "','" + pib_outboxcode2 + "','" + User.UserCode + "','" + (EnablePrint && SingleLabelAutoPrint.Checked ? 1 : 0).ToString() + "',pd_ordercode,pd_pocode,pd_remark,'" + MidboxCapacity.Value + "' ");
+            sql.Append("'" + pib_barcode + "',:PIB_CUSTBARCODE,'" + CurrentZXBZ + "','" + Data["BRAND"] + "','" + Data["DATECODE"] + "','" + Data["LOTNO"] + "','" + pib_outboxcode2 + "','" + User.UserCode + "','" + (EnablePrint && SingleLabelAutoPrint.Checked ? 1 : 0).ToString() + "',pd_ordercode,pd_pocode,pd_remark,'" + MidboxCapacity.Value + "','" + pi_cardcode.Text + "' ");
             sql.Append("from prodinout left join prodiodetail on pi_id=pd_piid left join PRODJOINVENDDETAIL on pjd_brand =pd_brand and pjd_prodcode=pd_prodcode where pi_id='" + PI_ID + "' and pd_prodcode='" + CurrentPrCode + "' and pd_pdno='" + CurrentPDNO + "'");
             sql.Append("from prodinout left join prodiodetail on pi_id=pd_piid left join PRODJOINVENDDETAIL on pjd_brand =pd_brand and pjd_prodcode=pd_prodcode where pi_id='" + PI_ID + "' and pd_prodcode='" + CurrentPrCode + "' and pd_pdno='" + CurrentPDNO + "'");
             dh.BatchInsert(sql.ToString(), new string[] { "PIB_ID", "PIB_CUSTBARCODE" }, PIBID, CustBarCode.ToArray());
             dh.BatchInsert(sql.ToString(), new string[] { "PIB_ID", "PIB_CUSTBARCODE" }, PIBID, CustBarCode.ToArray());
             //更新流水号
             //更新流水号
@@ -405,7 +406,7 @@ namespace UAS_LabelMachine
                     OutBoxNum.Items.Add(io);
                     OutBoxNum.Items.Add(io);
                 }
                 }
                 if (OutBoxNum.Items.Count > 2)
                 if (OutBoxNum.Items.Count > 2)
-                    OutBoxNum.SelectedIndex = 2;
+                    OutBoxNum.SelectedIndex = 0;
             }
             }
         }
         }
 
 
@@ -1070,17 +1071,13 @@ namespace UAS_LabelMachine
             sql.Append("pr_zxbzs,pr_unit,pib_barcode,pib_outboxcode1,pib_outboxcode2,nvl(pib_ifprint,0)pib_ifprint from prodiobarcode left join ");
             sql.Append("pr_zxbzs,pr_unit,pib_barcode,pib_outboxcode1,pib_outboxcode2,nvl(pib_ifprint,0)pib_ifprint from prodiobarcode left join ");
             sql.Append("prodiodetail on pib_piid=pd_piid and pd_pdno=pib_pdno and pd_prodcode=pib_prodcode left join product on pr_code=pib_prodcode  ");
             sql.Append("prodiodetail on pib_piid=pd_piid and pd_pdno=pib_pdno and pd_prodcode=pib_prodcode left join product on pr_code=pib_prodcode  ");
             sql.Append("left join sale on sa_code=pib_ordercode left join PRODJOINVENDDETAIL on pjd_brand =pd_brand and pjd_prodcode=pd_prodcode where pib_piid='" + PI_ID + "' ");
             sql.Append("left join sale on sa_code=pib_ordercode left join PRODJOINVENDDETAIL on pjd_brand =pd_brand and pjd_prodcode=pd_prodcode where pib_piid='" + PI_ID + "' ");
-            sql.Append(" order by to_number(pib_outboxcode2),pib_id,pd_prodcode");
-            LabelInfDataTable = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
             if (OutBoxNum.Text != "全部")
             if (OutBoxNum.Text != "全部")
             {
             {
-                BaseUtil.FillDgvWithDataTable(LabelInf, BaseUtil.filterDataTable(LabelInfDataTable, "  pib_outboxcode2='" + OutBoxNum.Text + "'"));
-            }
-            else
-            {
-                BaseUtil.FillDgvWithDataTable(LabelInf, LabelInfDataTable);
+                sql.Append(" and pib_outboxcode2 ='" + OutBoxNum.Text + "' ");
             }
             }
-            //LabelInf.AutoResizeColumns();
+            sql.Append(" order by to_number(pib_outboxcode2),pib_id,pd_prodcode");
+            LabelInfDataTable = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
+            BaseUtil.FillDgvWithDataTable(LabelInf, LabelInfDataTable);
             if (LabelInf.Rows.Count > 0)
             if (LabelInf.Rows.Count > 0)
                 LabelInf.FirstDisplayedScrollingRowIndex = LabelInf.Rows.Count - 1;
                 LabelInf.FirstDisplayedScrollingRowIndex = LabelInf.Rows.Count - 1;
             double CollectNum = 0;
             double CollectNum = 0;
@@ -1372,7 +1369,7 @@ namespace UAS_LabelMachine
             if (OutBoxNum.Text == "新增" || OutBoxNum.Text == "")
             if (OutBoxNum.Text == "新增" || OutBoxNum.Text == "")
             {
             {
                 if (dt.Rows.Count > 0)
                 if (dt.Rows.Count > 0)
-                    OutBoxNum.SelectedIndex = 2;
+                    OutBoxNum.SelectedIndex = 0;
                 else
                 else
                     OutBoxNum.SelectedIndex = 0;
                     OutBoxNum.SelectedIndex = 0;
             }
             }