Parcourir la source

winfrom提交

duyong il y a 4 ans
Parent
commit
775d2ba7a9

+ 1 - 1
CarMeterSystem/App.config

@@ -33,7 +33,7 @@
 		<!--联达计量点编号-->
 		<add key="lianDaPointNo" value="00019" />
     
-    <!--期限皮使用方式配置:车号-物料-路线(1),车号-物料-称点(2)-->
+    <!--期限皮使用方式配置:车号-物料-路线(1),车号-物料-称点(2),车号-物料(3)-->
     <add key="TareControlType" value="1" />
 
     <!--厂内外车配置:001004003(内部),001004002(外部)-->

+ 24 - 6
CarMeterSystem/frmOneYardToEnd.cs

@@ -348,9 +348,18 @@ namespace CarMeterSystem
                                     {
                                         btnSave.Enabled = false;
                                         strRm = em.GetAndExecuteMethod<rtInfo>("MeterSceneLibrary", "InnerCarJISCO", "MeterMethod", new object[] { new PreTrackScale { } });
-                                        setMsg(strRm.ResultMessage);
-                                        strMsg = strRm.ResultMessage;
-                                        PbCache.ResultMessage = strRm.ResultMessage;
+                                        if (!string.IsNullOrEmpty(strRm.ResultMessage))
+                                        {
+                                            setMsg(strRm.ResultMessage);
+                                            strMsg = strRm.ResultMessage;
+                                            PbCache.ResultMessage = strRm.ResultMessage;
+                                        }
+                                        else
+                                        {
+                                            setMsg(strRm.Data.resultInfo);
+                                            strMsg = strRm.Data.resultInfo;
+                                            PbCache.ResultMessage = strRm.Data.resultInfo;
+                                        }
                                         if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                         {
                                             led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
@@ -377,9 +386,18 @@ namespace CarMeterSystem
                                     {
                                         btnSave.Enabled = false;
                                         strRm = em.GetAndExecuteMethod<rtInfo>("MeterSceneLibrary", "OuterCarJISCO", "MeterMethod", new object[] { new PreTrackScale { } });
-                                        setMsg(strRm.ResultMessage);
-                                        strMsg = strRm.ResultMessage;
-                                        PbCache.ResultMessage = strRm.ResultMessage;
+                                        if (!string.IsNullOrEmpty(strRm.ResultMessage))
+                                        {
+                                            setMsg(strRm.ResultMessage);
+                                            strMsg = strRm.ResultMessage;
+                                            PbCache.ResultMessage = strRm.ResultMessage;
+                                        }
+                                        else
+                                        {
+                                            setMsg(strRm.Data.resultInfo);
+                                            strMsg = strRm.Data.resultInfo;
+                                            PbCache.ResultMessage = strRm.Data.resultInfo;
+                                        }
                                         if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                         {
                                             led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);

+ 29 - 8
MeterSceneLibrary/JISCO/OuterCarJISCO.cs

@@ -428,8 +428,8 @@ namespace MeterSceneLibrary
                             if (listPreScale.Count == 2 && !string.IsNullOrEmpty(listPreScale[0].receiverRemark) && !string.IsNullOrEmpty(listPreScale[1].receiverRemark) && listPreScale[0].tempConveyance == listPreScale[1].tempConveyance && !string.IsNullOrEmpty(listPreScale[0].tempConveyance) && !string.IsNullOrEmpty(listPreScale[1].tempConveyance))
                             {
                                 pre = listPreScale[1];
-                                res = ",混装混卸";
-                                PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,混装混卸", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                res = ",混装";
+                                PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,混装", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                             }
                             if (pre == null)
                             {
@@ -792,12 +792,33 @@ namespace MeterSceneLibrary
                                 // 存在多条未使用的委托数据
                                 else if (listPreScale.Count > 2)
                                 {
-                                    rt = saveMethod.doNet(null, rmX.Data[0], mwaf);
-                                    rt.isWarn = true;
-                                    rt.WarnContent = "validIsPre";
-                                    rt.resultInfo += ",存在多个委托,无法自动匹配";
-                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,多委托无法自动匹配请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
-                                    PbCache.monitorResultMessage = string.Format("计量完成,车号{0}存在{1}个委托,无法自动匹配", PbCache.lockCarNo, listPreScale.Count);
+                                    PreTrackScale pts = null;
+
+                                    foreach (var item in listPreScale)
+                                    {
+                                        if (item.predictionNo == rmX.Data[0].predictionNo)
+                                        {
+                                            pts = item;
+                                        }
+                                    }
+
+                                    EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
+                                    mwaf = entityBase.format<MeterWorkCarActualFirst>(pts, mwaf);
+                                    mwaf.isPreScale = "1";
+
+                                    rt = saveMethod.doNet(pts, rmX.Data[0], mwaf);
+                                    if (pts == null)
+                                    {
+                                        rt.isWarn = true;
+                                        rt.WarnContent = "validIsPre";
+                                        rt.resultInfo += ",存在多个委托,无法自动匹配";
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,多委托无法自动匹配请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                        PbCache.monitorResultMessage = string.Format("计量完成,车号{0}存在{1}个委托,无法自动匹配", PbCache.lockCarNo, listPreScale.Count);
+                                    }
+                                    else
+                                    {
+                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                    }
                                 }
                             }
                         }

+ 2 - 1
TrainVideoDataDispose/Form2.cs

@@ -20,7 +20,8 @@ namespace TrainVideoDataDispose
         private void button1_Click(object sender, EventArgs e)
         {
             //ftpHelper.GetFilesDirList();
-            string[] s = ftpHelper.GetFilesDirList();
+            ftpHelper ftp1 = new ftpHelper("10.111.16.113", "", "300t", "300t");
+            string[] s = ftp1.GetFilesDirList();
         }
     }
 }

+ 1 - 1
TrainVideoDataDispose/Program.cs

@@ -15,7 +15,7 @@ namespace TrainVideoDataDispose
         {
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
-            Application.Run(new Form1());
+            Application.Run(new Form2());
         }
     }
 }

+ 382 - 27
TrainVideoDataDispose/ftpHelper.cs

@@ -14,16 +14,19 @@ namespace TrainVideoDataDispose
         /// 获取当前目录下文件夹
         /// </summary>
         /// <returns></returns>
-        public static string[] GetFilesDirList()
+        public string[] GetFilesDirList()
         {
             try
             {
-                List<string> result = new List<string>();//如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
-                List<string> resultTxt = new List<string>();//如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
-                List<string> resultJpg = new List<string>();//如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
-                List<string> resultMp4 = new List<string>();//如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
+                ftpHelper ftp1 = new ftpHelper("10.111.16.113","", "300t", "300t");
+                
+                
+                List<string> result = new List<string>();
+                List<string> resultTxt = new List<string>();
+                List<string> resultJpg = new List<string>();
+                List<string> resultMp4 = new List<string>();
                 FtpWebRequest ftp;
-                ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://10.111.16.113"));//"ftp://10.12.12.9";
+                ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://10.111.16.113"));
                 ftp.Credentials = new NetworkCredential("300t", "300t");
                 ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;//目录
                 WebResponse response = ftp.GetResponse();//response为一个ftp的WebResponse
@@ -74,18 +77,21 @@ namespace TrainVideoDataDispose
                 foreach (var item in resultTxt)
                 {
                     string fileName = item.Substring(item.Length - 23);
-                    Download(pathTxt, fileName);
-                }
-                //foreach (var item in resultMp4)
-                //{
-                //    string fileName = item.Substring(item.Length - 23);
-                //    Download(pathMp4, fileName);
-                //}
-                //foreach (var item in resultJpg)
-                //{
-                //    string fileName = item.Substring(item.Length - 26);
-                //    Download(pathImg, fileName);
-                //}
+                    ftp1.Download(pathTxt, fileName);
+                    ftp1.MovieFile("/" + fileName, "deletes/txt/" + fileName);
+                }
+                foreach (var item in resultMp4)
+                {
+                    string fileName = item.Substring(item.Length - 23);
+                    ftp1.Download(pathMp4, fileName);
+                    ftp1.MovieFile("/" + fileName, "deletes/movie/" + fileName);
+                }
+                foreach (var item in resultJpg)
+                {
+                    string fileName = item.Substring(item.Length - 26);
+                    ftp1.Download(pathImg, fileName);
+                    ftp1.MovieFile("/" + fileName, "deletes/img/" + fileName);
+                }
                 reader.Close();
                 response.Close();
                 return result.ToString().Split('\n');
@@ -96,20 +102,81 @@ namespace TrainVideoDataDispose
             }
         }
 
-        /// <summary>  
-        /// 下载  filePath是下载到本机的地址fileName是需要下载的文件的名字
+        
+
+        string ftpServerIP; //10.111.16.113
+        string ftpRemotePath;
+        string ftpUserID; //300t
+        string ftpPassword; //300t
+        string ftpURI;
+        private string strFilePath = System.Environment.CurrentDirectory;//路径
+
+        /// <summary>
+        /// 连接FTP
+        /// </summary>
+        /// <param name="FtpServerIP">FTP连接地址</param>
+        /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
+        /// <param name="FtpUserID">用户名</param>
+        /// <param name="FtpPassword">密码</param>
+        public ftpHelper(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)
+        {
+            ftpServerIP = FtpServerIP;
+            ftpRemotePath = FtpRemotePath;
+            ftpUserID = FtpUserID;
+            ftpPassword = FtpPassword;
+            ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
+        }
+        /// <summary>
+        /// 上传
         /// </summary>
-        public static void Download(string filePath, string fileName)
+        /// <param name="filename"></param>
+        public void Upload(string filename)
         {
+            FileInfo fileInf = new FileInfo(filename);
+            string uri = ftpURI + fileInf.Name;
+            FtpWebRequest reqFTP;
+            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
+            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
+            reqFTP.KeepAlive = false;
+            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
+            reqFTP.UseBinary = true;
+            reqFTP.ContentLength = fileInf.Length;
+            int buffLength = 2048;
+            byte[] buff = new byte[buffLength];
+            int contentLen;
+            FileStream fs = fileInf.OpenRead();
             try
             {
-                string path = filePath + "\\" + fileName;
-                FileStream outputStream = new FileStream(path, FileMode.Create);
-                FtpWebRequest reqFTP;
-                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://10.111.16.113/" + fileName));
-                reqFTP.Credentials = new NetworkCredential("300t", "300t");
+                Stream strm = reqFTP.GetRequestStream();
+                contentLen = fs.Read(buff, 0, buffLength);
+                while (contentLen != 0)
+                {
+                    strm.Write(buff, 0, contentLen);
+                    contentLen = fs.Read(buff, 0, buffLength);
+                }
+                strm.Close();
+                fs.Close();
+            }
+            catch (Exception ex)
+            {
+                WriteLog("Upload Error --> " + ex.Message);
+            }
+        }
+        /// <summary>
+        /// 下载
+        /// </summary>
+        /// <param name="filePath"></param>
+        /// <param name="fileName"></param>
+        public void Download(string filePath, string fileName)
+        {
+            FtpWebRequest reqFTP;
+            try
+            {
+                FileStream outputStream = new FileStream(filePath + "//" + fileName, FileMode.Create);
+                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));
                 reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
                 reqFTP.UseBinary = true;
+                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                 Stream ftpStream = response.GetResponseStream();
                 long cl = response.ContentLength;
@@ -128,8 +195,296 @@ namespace TrainVideoDataDispose
             }
             catch (Exception ex)
             {
-                throw new Exception(ex.Message);
+                WriteLog("Download Error --> " + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 删除文件
+        /// </summary>
+        /// <param name="fileName"></param>
+        public void Delete(string fileName)
+        {
+            try
+            {
+                string uri = ftpURI + fileName;
+                FtpWebRequest reqFTP;
+                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
+                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
+                reqFTP.KeepAlive = false;
+                reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
+                string result = String.Empty;
+                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
+                long size = response.ContentLength;
+                Stream datastream = response.GetResponseStream();
+                StreamReader sr = new StreamReader(datastream);
+                result = sr.ReadToEnd();
+                sr.Close();
+                datastream.Close();
+                response.Close();
+            }
+            catch (Exception ex)
+            {
+                WriteLog("Delete Error --> " + ex.Message + "  文件名:" + fileName);
+            }
+        }
+        /// <summary>
+        /// 获取当前目录下明细(包含文件和文件夹)
+        /// </summary>
+        /// <returns></returns>
+        public string[] GetFilesDetailList()
+        {
+            string[] downloadFiles;
+            try
+            {
+                StringBuilder result = new StringBuilder();
+                FtpWebRequest ftp;
+                ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
+                ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
+                ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
+                WebResponse response = ftp.GetResponse();
+                StreamReader reader = new StreamReader(response.GetResponseStream());
+                string line = reader.ReadLine();
+                line = reader.ReadLine();
+                line = reader.ReadLine();
+                while (line != null)
+                {
+                    result.Append(line);
+                    result.Append("\n");
+                    line = reader.ReadLine();
+                }
+                result.Remove(result.ToString().LastIndexOf("\n"), 1);
+                reader.Close();
+                response.Close();
+                return result.ToString().Split('\n');
+            }
+            catch (Exception ex)
+            {
+                downloadFiles = null;
+                WriteLog("GetFilesDetailList Error --> " + ex.Message);
+                return downloadFiles;
+            }
+        }
+        /// <summary>
+        /// 获取当前目录下文件列表(仅文件)
+        /// </summary>
+        /// <returns></returns>
+        public string[] GetFileList(string mask)
+        {
+            string[] downloadFiles;
+            StringBuilder result = new StringBuilder();
+            FtpWebRequest reqFTP;
+            try
+            {
+                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
+                reqFTP.UseBinary = true;
+                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
+                reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
+                WebResponse response = reqFTP.GetResponse();
+                StreamReader reader = new StreamReader(response.GetResponseStream());
+                string line = reader.ReadLine();
+                while (line != null)
+                {
+                    if (mask.Trim() != string.Empty && mask.Trim() != "*.*")
+                    {
+                        string mask_ = mask.Substring(0, mask.IndexOf("*"));
+                        if (line.Substring(0, mask_.Length) == mask_)
+                        {
+                            result.Append(line);
+                            result.Append("\n");
+                        }
+                    }
+                    else
+                    {
+                        result.Append(line);
+                        result.Append("\n");
+                    }
+                    line = reader.ReadLine();
+                }
+                result.Remove(result.ToString().LastIndexOf('\n'), 1);
+                reader.Close();
+                response.Close();
+                return result.ToString().Split('\n');
+            }
+            catch (Exception ex)
+            {
+                downloadFiles = null;
+                if (ex.Message.Trim() != "远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。")
+                {
+                    WriteLog("GetFileList Error --> " + ex.Message);
+                }
+                return downloadFiles;
+            }
+        }
+        /// <summary>
+        /// 获取当前目录下所有的文件夹列表(仅文件夹)
+        /// </summary>
+        /// <returns></returns>
+        public string[] GetDirectoryList()
+        {
+            string[] drectory = GetFilesDetailList();
+            string m = string.Empty;
+            foreach (string str in drectory)
+            {
+                if (str.Trim().Substring(0, 1).ToUpper() == "D")
+                {
+                    m += str.Substring(54).Trim() + "\n";
+                }
+            }
+            char[] n = new char[] { '\n' };
+            return m.Split(n);
+        }
+
+        /// <summary>
+        /// 判断当前目录下指定的子目录是否存在
+        /// </summary>
+        /// <param name="RemoteDirectoryName">指定的目录名</param>
+        public bool DirectoryExist(string RemoteDirectoryName)
+        {
+            string[] dirList = GetDirectoryList();
+            foreach (string str in dirList)
+            {
+                if (str.Trim() == RemoteDirectoryName.Trim())
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+        /// <summary>
+        /// 判断当前目录下指定的文件是否存在
+        /// </summary>
+        /// <param name="RemoteFileName">远程文件名</param>
+        public bool FileExist(string RemoteFileName)
+        {
+            string[] fileList = GetFileList("*.*");
+            foreach (string str in fileList)
+            {
+                if (str.Trim() == RemoteFileName.Trim())
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+        /// <summary>
+        /// 创建文件夹
+        /// </summary>
+        /// <param name="dirName"></param>
+        public void MakeDir(string dirName)
+        {
+            FtpWebRequest reqFTP;
+            try
+            {
+                // dirName = name of the directory to create.
+                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));
+                reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
+                reqFTP.UseBinary = true;
+                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
+                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
+                Stream ftpStream = response.GetResponseStream();
+                ftpStream.Close();
+                response.Close();
+            }
+            catch (Exception ex)
+            {
+                WriteLog("MakeDir Error --> " + ex.Message);
+            }
+        }
+        /// <summary>
+        /// 获取指定文件大小
+        /// </summary>
+        /// <param name="filename"></param>
+        /// <returns></returns>
+        public long GetFileSize(string filename)
+        {
+            FtpWebRequest reqFTP;
+            long fileSize = 0;
+            try
+            {
+                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename));
+                reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;
+                reqFTP.UseBinary = true;
+                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
+                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
+                Stream ftpStream = response.GetResponseStream();
+                fileSize = response.ContentLength;
+                ftpStream.Close();
+                response.Close();
+            }
+            catch (Exception ex)
+            {
+                WriteLog("GetFileSize Error --> " + ex.Message);
+            }
+            return fileSize;
+        }
+        /// <summary>
+        /// 改名
+        /// </summary>
+        /// <param name="currentFilename"></param>
+        /// <param name="newFilename"></param>
+        public void ReName(string currentFilename, string newFilename)
+        {
+            FtpWebRequest reqFTP;
+            try
+            {
+                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename));
+                reqFTP.Method = WebRequestMethods.Ftp.Rename;
+                reqFTP.RenameTo = newFilename;
+                reqFTP.UseBinary = true;
+                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
+                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
+                Stream ftpStream = response.GetResponseStream();
+                ftpStream.Close();
+                response.Close();
+            }
+            catch (Exception ex)
+            {
+                WriteLog("ReName Error --> " + ex.Message);
+            }
+        }
+        /// <summary>
+        /// 移动文件
+        /// </summary>
+        /// <param name="currentFilename"></param>
+        /// <param name="newFilename"></param>
+        public void MovieFile(string currentFilename, string newDirectory)
+        {
+            ReName(currentFilename, newDirectory);
+        }
+
+        /// <summary>
+        /// 切换当前目录
+        /// </summary>
+        /// <param name="DirectoryName"></param>
+        /// <param name="IsRoot">true 绝对路径   false 相对路径</param> 
+        public void GotoDirectory(string DirectoryName, bool IsRoot)
+        {
+            if (IsRoot)
+            {
+                ftpRemotePath = DirectoryName;
+            }
+            else
+            {
+                ftpRemotePath += DirectoryName + "/";
             }
+            ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
+        }
+
+        private void WriteLog(string str)
+        {
+            if (System.IO.Directory.Exists(strFilePath + "\\log") == false)
+            {
+                System.IO.Directory.CreateDirectory(strFilePath + "\\log");
+            }
+            string strDate = System.DateTime.Now.ToString("yyyyMMdd");
+            System.IO.TextWriter tw = new System.IO.StreamWriter(strFilePath + "\\log\\" + "FTP_" + strDate + ".log", true);
+
+            tw.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
+            tw.WriteLine(str);
+            tw.WriteLine("\r\n");
+
+            tw.Close();
         }
     }
 }