Browse Source

Merge branch 'master' of https://git.steerinfo.com/caol/jisco_winform_wzjl.git

duyong 3 năm trước cách đây
mục cha
commit
667767822f

+ 99 - 4
CarMeterSystem/frmOneYardToEnd.cs

@@ -6,6 +6,7 @@ using MeterPlugInLibrary;
 using MeterSceneLibrary;
 using MeterSceneLibrary.JISCO;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Configuration;
 using System.Data;
@@ -72,6 +73,8 @@ namespace CarMeterSystem
 
         private MeterWorkCarActualFirst meterWorkCarActualFirst = null;
 
+        private ImageCurlControl imageCurlControl = new ImageCurlControl();
+
         //lianDaWgt
 
         //=========== 2021-11-25 eason add ====================
@@ -168,12 +171,33 @@ namespace CarMeterSystem
                 {
                     return;
                 }
+
                 
+
                 if (PbCache.collect == null) return;
-                PbCache.isLockFrm = true;
+
+                /* 
+                 * 锁界面,修改图标,锁定重量,拍照,截图
+                 * 用户反馈拍照重量,截图重量与实际保存重量不一致,因此修改
+                 * by BourneCao 20220801 
+                 */
+                ucWeightCarTJXJG1.setStable(true);    // 重量稳定
+                ucWeightCarTJXJG1.setWgt(Math.Round((double)PbCache.collect.weight / 1000, 2));    // 最新重量
+
+                PbCache.isLockFrm = true;   // 锁界面,不可修改重量
                 PbCache.lockCarNo = PbCache.collect.carno;
                 PbCache.lockWgt = PbCache.collect.weight;
                 btnSave.Enabled = false;
+
+                lg.WriteLog(34, "车号:"+PbCache.lockCarNo + ";重量:"+ PbCache.lockWgt + ";时间:"+DateTime.Now.ToLongTimeString());
+
+                // 启动拍照
+                if (PbCache.tempImgId == null || PbCache.tempImgId == "")
+                {
+                    PbCache.tempImgId = Guid.NewGuid().ToString();
+                    _ = BeginInvoke(new Action(() => { shotImage(PbCache.tempImgId+"_temp"); }));
+                }
+
                 lg.WriteLog(15, PbCache.lockCarNo + "点击保存按钮");
                 PreTrackScale preTrack = ucCarMeterInfoJisco1._preTrack;
                 string strMsg = "";
@@ -738,8 +762,27 @@ namespace CarMeterSystem
                     //    }
                     //}
 
-                    //图片截取
-                    _ = BeginInvoke(new Action(() => { shotImage(); }));
+                    /*
+                     * 图片上传,先截图,数据保存成功后,再修改为正式文件名,并上传
+                     * 解决抓图重量与实际重量不一致问题
+                     * By BourneCao 20220801
+                     */
+                    // 屏幕截取
+                    // 必须保存完成后才能截取屏幕图片,否则提示信息不对
+                    _ = BeginInvoke(new Action(() => { shotImageScreen(); }));
+
+                    string sPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "imgShort\\";
+                    
+                    //获取正式目录文件中,本次tempID相关图片
+                    ArrayList files = imageCurlControl.GetFiles(sPath + "formalImg", ".jpg");
+                    foreach(string filename in files)
+                    {
+                        // 将原图片重命名为正式图片名称
+                        if (File.Exists(filename) && filename.Contains(PbCache.tempImgId))
+                        {
+                            File.Move(filename, filename.Replace(PbCache.tempImgId + "_temp", PbCache.actualFirstNo));
+                        }
+                    }
 
                     //语音提醒部分
                     //flag =true表示称重成功
@@ -898,6 +941,56 @@ namespace CarMeterSystem
                 lg.WriteLog(3, "计量完成,但图片截取失败,编号:" + PbCache.actualFirstNo);
             }
         }
+
+        /// <summary>
+        /// 终端截图(临时截图,使用临时ID存储)
+        /// </summary>
+        public void shotImage(string tempID)
+        {
+            try
+            {
+                #region 截取图片信息
+                //*
+                //最后进行截图操作
+                CameraShotCls cameraShot = new CameraShotCls();
+                cameraShot.CapMethod(tempID);
+                //*/
+
+                #endregion 截取图片信息
+            }
+            catch (Exception ex)
+            {
+                lg.WriteLog(3, "计量完成,但图片截取失败,编号:" + tempID);
+            }
+        }
+
+        /// <summary>
+        /// 终端截图(临时截图,使用临时ID存储)
+        /// </summary>
+        public void shotImageScreen()
+        {
+            try
+            {
+                #region 截取图片信息
+
+                //截取屏幕信息
+
+                Point screenPoint = this.PointToScreen(new Point());
+                Rectangle rect = new Rectangle(screenPoint, this.Size);
+                Image img = new Bitmap(rect.Width, rect.Height);
+                Graphics g = Graphics.FromImage(img);
+                g.CopyFromScreen(rect.X - 1, rect.Y - 1, 0, 0, rect.Size);//"D://file/1.jpg"
+                img.Save(string.Format("{0}imgShort\\formalImg\\{1}_{2}_{3}.jpg",
+                    AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
+                    PbCache.sportInfo.baseSpotNo, "C" + PbCache.actualFirstNo, 7), System.Drawing.Imaging.ImageFormat.Jpeg);
+                #endregion 截取图片信息
+            }
+            catch (Exception ex)
+            {
+                lg.WriteLog(3, "计量完成,但图片截取失败,编号:" + PbCache.actualFirstNo);
+            }
+        }
+
         private void btnHelp_Click(object sender, EventArgs e)
         {
             if (PbCache.monitor.isHelp == "0")
@@ -2389,8 +2482,10 @@ namespace CarMeterSystem
                 PbCache.lockWgt = 0;
                 PbCache.ResultMessage = "";
                 PbCache.voiceType = 0;  // 清除语音
+                PbCache.tempImgId = ""; // 清除临时抓图ID
                 btnSave.Enabled = true;
                 btnSelPreType.Visible = false;
+
             }
             catch (Exception ex)
             {
@@ -2527,7 +2622,7 @@ namespace CarMeterSystem
                     voiceContent = "称重数据保存失败";//计量成功,存在多条未结净一次数据,请联系计量大厅
                     break;
                 case 26:
-                    voiceContent = "皮重选择成毛重";//计量成功,存在多条未结净一次数据,请联系计量大厅
+                    voiceContent = "毛重选择成皮重";//计量成功,存在多条未结净一次数据,请联系计量大厅
                     break;
                 default:
                     voiceContent = "程序处理异常";

+ 5 - 0
Common/cacheCls/PbCache.cs

@@ -372,6 +372,11 @@ namespace Common
         /// </summary>
         public static bool isActual { get; set; }
 
+        /// <summary>
+        /// 临时图片ID
+        /// </summary>
+        public static string tempImgId { get; set; }
+
 
         #region 扫码器相关
         /// <summary>

+ 3 - 0
Common/log/Log.cs

@@ -146,6 +146,9 @@ namespace Common
                     case 33:
                         strLogName = "停留超时";
                         break;
+                    case 34:
+                        strLogName = "重量保存_";
+                        break;
                     case 99:
                         strLogName = "双扫码";
                         break;

+ 25 - 22
MeterPlugInLibrary/图片处理/ImageCurlControl.cs

@@ -91,12 +91,11 @@ namespace MeterPlugInLibrary
 
         }
 
-        private ArrayList GetFiles(string _dirPath, string extensionName)
+        public ArrayList GetFiles(string _dirPath, string extensionName)
         {
             ArrayList files = new ArrayList();
             if (!Directory.Exists(_dirPath)) return null;
 
-
             DirectoryInfo theFolder = new DirectoryInfo(_dirPath);
 
             FileInfo[] fileinfos = theFolder.GetFiles("*" + extensionName);
@@ -129,32 +128,36 @@ namespace MeterPlugInLibrary
             {
                 try
                 {
-                    string ftpdir = Path.Combine(AppConfigCache.ftpPath, DateTime.Now.ToString("yyyy-MM-dd"));
+                    // 临时文件不上传
+                    if (!_filepath.Contains("_temp"))
+                    {
+                        string ftpdir = Path.Combine(AppConfigCache.ftpPath, DateTime.Now.ToString("yyyy-MM-dd"));
 
-                    //验证文件名是否合法
-                    string filename = Path.GetFileName(_filepath);
-                    //filename :  计量作业编号_序号.jpg   计量作业编号:计量点编号+年月日时分秒
-                    MeterWorkImage ci = ParseFileName(filename, ftpdir.Replace("upload", "download"));
+                        //验证文件名是否合法
+                        string filename = Path.GetFileName(_filepath);
+                        //filename :  计量作业编号_序号.jpg   计量作业编号:计量点编号+年月日时分秒
+                        MeterWorkImage ci = ParseFileName(filename, ftpdir.Replace("upload", "download"));
 
-                    if (ci == null) continue;
+                        if (ci == null) continue;
 
-                    // 上传文件
-                    UploadRequest(ftpdir, localpath + filename);
+                        // 上传文件
+                        UploadRequest(ftpdir, localpath + filename);
 
 
-                     //存储计量数据的时候,实际上是先将计量数据及图片路径
-                     MeterWorkImageService service = new MeterWorkImageService();
-                    RESTfulResult<string> rm = service.doSaveWf(ci); //db.doOption<string>("MeterWorkImageService", "doSaveWf", new object[] { ci }, 1);
-                    if (rm.Succeed)
-                    {
-                        WriteLog(string.Format("更新图片记录[{0}]:{1}", ci.actualFirstNo, filename));
-                        File.Delete(_filepath);
-                    }
-                    else
-                    {
-                        WriteLog(string.Format("上传图片失败! [{0}]\n{1}", ci.actualFirstNo, filename));
+                        //存储计量数据的时候,实际上是先将计量数据及图片路径
+                        MeterWorkImageService service = new MeterWorkImageService();
+                        RESTfulResult<string> rm = service.doSaveWf(ci); //db.doOption<string>("MeterWorkImageService", "doSaveWf", new object[] { ci }, 1);
+                        if (rm.Succeed)
+                        {
+                            WriteLog(string.Format("更新图片记录[{0}]:{1}", ci.actualFirstNo, filename));
+                            File.Delete(_filepath);
+                        }
+                        else
+                        {
+                            WriteLog(string.Format("上传图片失败! [{0}]\n{1}", ci.actualFirstNo, filename));
+                        }
+                        //
                     }
-                    //
                 }
                 catch (Exception exp)
                 {