From 891207469b41c23d22805876a4e179d75832572f Mon Sep 17 00:00:00 2001
From: leiqunqing <zhengqifeng@hnkhzn.com>
Date: 星期四, 05 三月 2026 11:03:52 +0800
Subject: [PATCH] 完整项目更新

---
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ScanStationService.cs |  291 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 171 insertions(+), 120 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ScanStationService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ScanStationService.cs"
index 5345f81..a778204 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ScanStationService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ScanStationService.cs"
@@ -1,5 +1,6 @@
 锘縰sing Autofac.Core;
 using OfficeOpenXml;
+using OfficeOpenXml.Style;
 using Spire.Xls;
 using System;
 using System.Collections.Generic;
@@ -126,34 +127,42 @@
         /// <exception cref="Exception"></exception>
         public WebResponseContent GetSignalStates()
         {
-            OtherDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceName == "涓绘帶PLC") as OtherDevice;
-            if (device == null) throw new Exception("鏈壘鍒颁富鎺LC璁惧淇℃伅");
-            if (!device.IsConnected) throw new Exception($"涓绘帶PLC璁惧閫氳寮傚父");
 
-            //鑾峰彇淇″彿鐏姸鎬�
-            var Heart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolHeart);
-            var EMG = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolEMG);
-            var AutoExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolAutoExecuting);
-            var OnlineExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolOnlineExecuting);
-            var Error = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolError);
-
-            //鑾峰彇鍚姩鏆傚仠鐘舵��
-            var IsStarted = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolAutoStart);
-            var IsPaused = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolAutoPause);
-
-            //杩斿洖瀵硅薄
-            var responseData = new
+            try
             {
-                // 淇″彿鐏姸鎬佹暟缁勶紙淇濇寔鍘熸湁椤哄簭锛�
-                signalStates = new bool[] { Heart, EMG, AutoExecuting, OnlineExecuting, Error },
-                // PLC鍚姩/鏆傚仠鐘舵�佸璞�
-                plcStatus = new
+                OtherDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceName == "涓绘帶PLC") as OtherDevice;
+                if (device == null) throw new Exception("鏈壘鍒颁富鎺LC璁惧淇℃伅");
+                if (!device.IsConnected) throw new Exception($"涓绘帶PLC璁惧閫氳寮傚父");
+
+                //鑾峰彇淇″彿鐏姸鎬�
+                var Heart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolHeart);
+                var EMG = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolEMG);
+                var AutoExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolAutoExecuting);
+                var OnlineExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolOnlineExecuting);
+                var Error = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolError);
+
+                //鑾峰彇鍚姩鏆傚仠鐘舵��
+                var IsStarted = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolAutoStart);
+                var IsPaused = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolAutoPause);
+
+                //杩斿洖瀵硅薄
+                var responseData = new
                 {
-                    isStarted = IsStarted,
-                    isPaused = IsPaused
-                }
-            };
-            return WebResponseContent.Instance.OK(data: responseData);
+                    // 淇″彿鐏姸鎬佹暟缁勶紙淇濇寔鍘熸湁椤哄簭锛�
+                    signalStates = new bool[] { Heart, EMG, AutoExecuting, OnlineExecuting, Error },
+                    // PLC鍚姩/鏆傚仠鐘舵�佸璞�
+                    plcStatus = new
+                    {
+                        isStarted = IsStarted,
+                        isPaused = IsPaused
+                    }
+                };
+                return WebResponseContent.Instance.OK(data: responseData);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
         }
 
         /// <summary>
@@ -176,13 +185,16 @@
                 }
                 List<Dt_FormulaDetail> dt_FormulaDetails = _formulaDetailService.Repository.QueryData(x => x.FormulaId == dt_Formula.Id);
 
+                // 鏂板leftPartSupplierCodes瀛楁瀛樺偍渚涙柟浠g爜
                 var responseData = new
                 {
                     finishedProductId = dt_Formula.Id,
                     finishedProduct = dt_Formula.ProductCode,
                     leftPartCodes = new List<string>(),
                     leftPartIds = new List<int>(),
-                    leftPartChecked = new List<int>()
+                    leftPartChecked = new List<int>(),
+                    // 瀛樺偍姣忎釜闆朵欢鐨勪緵鏂逛唬鐮�
+                    leftPartSupplierCodes = new List<string>()
                 };
 
                 foreach (var detail in dt_FormulaDetails.Take(10))
@@ -190,6 +202,8 @@
                     responseData.leftPartCodes.Add(detail.ComponentCode ?? "");
                     responseData.leftPartIds.Add(detail.Id);
                     responseData.leftPartChecked.Add(detail.IsScanned);
+                    // 娣诲姞渚涙柟浠g爜锛屼负绌烘椂杩斿洖绌哄瓧绗︿覆
+                    responseData.leftPartSupplierCodes.Add(detail.SupplierCode ?? "");
                 }
 
                 int needFillCount = 10 - responseData.leftPartCodes.Count;
@@ -198,6 +212,8 @@
                     responseData.leftPartCodes.Add("");
                     responseData.leftPartIds.Add(0);
                     responseData.leftPartChecked.Add(0);
+                    //琛ヨ冻10鏉℃暟鎹紝绌虹殑渚涙柟浠g爜杩斿洖绌哄瓧绗︿覆
+                    responseData.leftPartSupplierCodes.Add("");
                 }
                 return WebResponseContent.Instance.OK("鑾峰彇宸︿晶鍒濆鏁版嵁鎴愬姛", responseData);
             }
@@ -237,109 +253,144 @@
         /// </summary>
         /// <param name="dt_ProcessInfo"></param>
         /// <returns></returns>
-        public WebResponseContent ExportData(Dt_ScanStation dt_ScanStation)
+        public WebResponseContent ExportData()
         {
-
-            string fileName = $"{DateTime.Now.ToString("yyyyMMddHHssmm")}.xlsx";
-            string templatePath = $"{AppDomain.CurrentDomain.BaseDirectory}ExprotTemplate\\鍙戠數鏈哄脊鎬ф敮鎾戜俊鎭寲娴佺▼鍗�.xlsx";//妯℃澘璺緞
-            string savePath = $"{AppDomain.CurrentDomain.BaseDirectory}Download\\{fileName}";//淇濆瓨鏂囦欢璺緞
-
-            using Stream templateStream = new FileStream(templatePath, FileMode.Open);
-            using Stream saveStream = new FileStream(savePath, FileMode.Create);
-            using ExcelPackage package = new ExcelPackage(saveStream, templateStream);
-            ExcelWorksheet worksheet = package.Workbook.Worksheets["娴佺▼鍗�"];
-            Dt_Formula formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_ScanStation.StationEndProduct);
-            List<Dt_FormulaDetail> dt_FormulaDetails = _formulaDetailService.Repository.QueryData(x => x.FormulaId == formula.Id && x.IsScanned == 1).ToList();
-            for (int i = dt_FormulaDetails.Count; i < 10; i++)
+            try
             {
-                dt_FormulaDetails.Add(new Dt_FormulaDetail());
-            }
+                Dt_ScanStation dt_ScanStation = BaseDal.QueryFirst(x => x.StationCode == "001");
 
-            worksheet.Cells[3, 5].Value = dt_ScanStation.StationEndProduct;//鎴愬搧缂栧彿
-            worksheet.Cells[3, 17].Value = dt_ScanStation.LastProductSn.ObjToInt() - dt_ScanStation.FirstProductSn.ObjToInt() + 1;//鏁伴噺;
-            worksheet.Cells[3, 29].Value = dt_ScanStation.FirstProductSn + "-" + dt_ScanStation.LastProductSn;//娴佹按鍙�
-            worksheet.Cells[4, 5].Value = DateTime.Now.ToString("yyyy/MM/dd");//缁勮鏃ユ湡
-            worksheet.Cells[4, 17].Value = dt_ScanStation.AssembleUser;//缁勮浜哄憳
+                string fileName = $"{DateTime.Now.ToString("yyyyMMddHHssmm")}" + $"{dt_ScanStation.StationEndProduct}.xlsx";
+                string templatePath = $"{AppDomain.CurrentDomain.BaseDirectory}ExprotTemplate\\鍙戠數鏈哄脊鎬ф敮鎾戜俊鎭寲娴佺▼鍗�.xlsx";//妯℃澘璺緞
+                                                                                                                   // 鑾峰彇绯荤粺妗岄潰璺緞
+                string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\娴佺▼鍗�";
+                //string desktopPath = "C:\\Users\\Administrator\\Desktop";
+                string savePath = Path.Combine(desktopPath, fileName);
 
-            int row = 7;
-            for (int j = 0; j < 5; j++)
-            {
-                worksheet.Cells[row, 1].Value = dt_FormulaDetails[j].ComponentName;
-                worksheet.Cells[row, 5].Value = dt_FormulaDetails[j].ComponentCode;
-                worksheet.Cells[row, 12].Value = dt_FormulaDetails[j].SupplierCode;
-
-                worksheet.Cells[row, 19].Value = dt_FormulaDetails[j + 5].ComponentName;
-                worksheet.Cells[row, 23].Value = dt_FormulaDetails[j + 5].ComponentCode;
-                worksheet.Cells[row, 30].Value = dt_FormulaDetails[j + 5].SupplierCode;
-                row++;
-            }
-
-            row = 13;
-            for (int j = 0; j < 4; j++)
-            {
-                worksheet.Cells[row + j, 12].Value = "鈽� 鏄�     鈻� 鍚�";
-                worksheet.Cells[row + j, 30].Value = "鈽� 鏄�     鈻� 鍚�";
-            }
-            worksheet.Cells[17, 12].Value = "鈽� 鏄�     鈻� 鍚�";
-            worksheet.Cells[23, 5].Value = "鈽� 鏄�     鈻� 鍚�";
-
-            List<Dt_ProcessInfoDetail> dt_ProcessInfoDetails = _processInfoDetailService.Repository
-                .QueryData(x => x.ProductCode == dt_ScanStation.StationEndProduct
-                && x.ProductSn.CompareTo(dt_ScanStation.LastProductSn) >= 0
-                && x.ProductSn.CompareTo(dt_ScanStation.LastProductSn) <= 0)
-                .OrderBy(x => x.CreateDate)
-                .ToList();
-            row = 27;
-            ExcelRange baseStyleRow = worksheet.Cells[$"{row}:{row}"];
-            foreach (var item in dt_ProcessInfoDetails)
-            {
-                if (row > 61)
+                using Stream templateStream = new FileStream(templatePath, FileMode.Open);
+                using Stream saveStream = new FileStream(savePath, FileMode.Create);
+                using ExcelPackage package = new ExcelPackage(saveStream, templateStream);
+                ExcelWorksheet worksheet = package.Workbook.Worksheets["娴佺▼鍗�"];
+                Dt_Formula formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_ScanStation.StationEndProduct);
+                List<Dt_FormulaDetail> dt_FormulaDetails = _formulaDetailService.Repository.QueryData(x => x.FormulaId == formula.Id && x.IsScanned == 1).ToList();
+                for (int i = dt_FormulaDetails.Count; i < 10; i++)
                 {
-                    var sourceRange = worksheet.Cells[row - 1, 1, row - 1, 36];
-                    var targetRange = worksheet.Cells[row, 1, row, 36];
-
-                    // 1. 澶嶅埗鍚堝苟瑙勫垯锛堝師鏈夐�昏緫淇濈暀锛�
-                    this.CopyCellMerge(worksheet, sourceRange, targetRange);
-                    // 2. 澶嶅埗鏍峰紡锛堝吋瀹规墍鏈塃PPlus鐗堟湰锛�
-                    targetRange.StyleID = sourceRange.StyleID;
-                    // 3. 鍚屾琛岄珮
-                    worksheet.Row(row).Height = worksheet.Row(row - 1).Height;
+                    dt_FormulaDetails.Add(new Dt_FormulaDetail());
                 }
 
-                worksheet.Cells[row, 1].Value = item.ProductSn;
-                worksheet.Cells[row, 7].Value = item.Height2;
-                worksheet.Cells[row, 13].Value = item.Height1;
-                worksheet.Cells[row, 19].Value = item.PressPressure;
-                worksheet.Cells[row, 25].Value = item.ScrewTorque;
-                if (item.PressTightenUnfinished == 1)
-                {
-                    worksheet.Cells[row, 31].Value = "鍘嬭鎷х揣寮傚父";
-                }
-                else if (item.CheckUnfinished == 1)
-                {
-                    worksheet.Cells[row, 31].Value = "妫�娴嬪紓甯�";
-                }
-                else
-                {
-                    worksheet.Cells[row, 31].Value = "姝e父";
-                }
-                row++;
 
+
+                worksheet.Cells[3, 5].Value = dt_ScanStation.StationEndProduct;//鎴愬搧缂栧彿
+                worksheet.Cells[3, 17].Value = dt_ScanStation.LastProductSn.ObjToInt() - dt_ScanStation.FirstProductSn.ObjToInt() + 1;//鏁伴噺;
+                worksheet.Cells[3, 29].Value = dt_ScanStation.FirstProductSn + "-" + dt_ScanStation.LastProductSn;//娴佹按鍙�
+                worksheet.Cells[4, 5].Value = DateTime.Now.ToString("yyyy/MM/dd");//缁勮鏃ユ湡
+                worksheet.Cells[4, 17].Value = dt_ScanStation.AssembleUser;//缁勮浜哄憳
+
+
+                int row = 7;
+                for (int j = 0; j < 5; j++)
+                {
+                    worksheet.Cells[row, 1].Value = dt_FormulaDetails[j].ComponentName;
+                    worksheet.Cells[row, 5].Value = dt_FormulaDetails[j].ComponentCode;
+                    worksheet.Cells[row, 12].Value = dt_FormulaDetails[j].SupplierCode;
+
+                    worksheet.Cells[row, 19].Value = dt_FormulaDetails[j + 5].ComponentName;
+                    worksheet.Cells[row, 23].Value = dt_FormulaDetails[j + 5].ComponentCode;
+                    worksheet.Cells[row, 30].Value = dt_FormulaDetails[j + 5].SupplierCode;
+                    row++;
+                }
+
+                row = 13;
+                for (int j = 0; j < 4; j++)
+                {
+                    worksheet.Cells[row + j, 12].Value = "鈽� 鏄�     鈻� 鍚�";
+                    worksheet.Cells[row + j, 30].Value = "鈽� 鏄�     鈻� 鍚�";
+                }
+                worksheet.Cells[17, 12].Value = "鈽� 鏄�     鈻� 鍚�";
+                worksheet.Cells[23, 5].Value = "鈽� 鏄�     鈻� 鍚�";
+
+                worksheet.Cells[26, 7].Value = formula.ProductHeight;
+                worksheet.Cells[26, 13].Value = formula.ScrewTorqueOutput;
+                worksheet.Cells[26, 19].Value = formula.ScrewDownsetDistance;
+                worksheet.Cells[26, 25].Value = formula.PressFastenTorque;
+
+
+                List<Dt_ProcessInfoDetail> dt_ProcessInfoDetails = _processInfoDetailService.Repository
+                    .QueryData(x => x.ProductCode == dt_ScanStation.StationEndProduct
+                    && x.ProductSn.CompareTo(dt_ScanStation.FirstProductSn) >= 0
+                    && x.ProductSn.CompareTo(dt_ScanStation.LastProductSn) <= 0)
+                    .OrderBy(x => x.CreateDate)
+                    .ToList();
+                row = 27;
+                ExcelRange baseStyleRow = worksheet.Cells[$"{row}:{row}"];
+                foreach (var item in dt_ProcessInfoDetails)
+                {
+                    if (row > 61)
+                    {
+                        var sourceRange = worksheet.Cells[row - 1, 1, row - 1, 36];
+                        var targetRange = worksheet.Cells[row, 1, row, 36];
+
+                        // 1. 澶嶅埗鍚堝苟瑙勫垯锛堝師鏈夐�昏緫淇濈暀锛�
+                        CopyCellMerge(worksheet, sourceRange, targetRange);
+                        // 2. 澶嶅埗鏍峰紡锛堝吋瀹规墍鏈塃PPlus鐗堟湰锛�
+                        targetRange.StyleID = sourceRange.StyleID;
+                        // 3. 鍚屾琛岄珮
+                        worksheet.Row(row).Height = worksheet.Row(row - 1).Height;
+                    }
+
+                    worksheet.Cells[row, 1].Value = item.ProductSn;
+                    worksheet.Cells[row, 7].Value = item.ProductCheckHeight;
+                    worksheet.Cells[row, 7].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
+                    worksheet.Cells[row, 7].Style.Fill.BackgroundColor.SetColor(SixLabors.ImageSharp.Color.Yellow);
+
+                    worksheet.Cells[row, 13].Value = item.ThreadPositionHeight;
+                    worksheet.Cells[row, 13].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
+                    worksheet.Cells[row, 13].Style.Fill.BackgroundColor.SetColor(SixLabors.ImageSharp.Color.Yellow);
+
+                    worksheet.Cells[row, 19].Value = item.PressPressure;
+                    worksheet.Cells[row, 19].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
+                    worksheet.Cells[row, 19].Style.Fill.BackgroundColor.SetColor(SixLabors.ImageSharp.Color.Yellow);
+
+                    worksheet.Cells[row, 25].Value = item.ScrewTorque;
+                    worksheet.Cells[row, 25].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
+                    worksheet.Cells[row, 25].Style.Fill.BackgroundColor.SetColor(SixLabors.ImageSharp.Color.Yellow);
+
+                    worksheet.Cells[row, 31].Value = item.ProductStatus == 0 ? "涓嶅悎鏍�" : item.ProductStatus == 1 ? "鍚堟牸" : "浜哄伐纭鍚堟牸";
+                    //if (item.PressTightenUnfinished == 1)
+                    //{
+                    //    worksheet.Cells[row, 31].Value = "鍘嬭鎷х揣寮傚父";
+                    //}
+                    //else
+                    //{
+                    //    worksheet.Cells[row, 31].Value = "姝e父";
+                    //}
+                    row++;
+
+                }
+                //worksheet.DeleteRow(row, worksheet.Dimension.End.Row - row + 1);
+
+                package.Save();
+
+                string pdfFileName = $"{DateTime.Now.ToString("yyyyMMddHHssmm")}" + $"{dt_ScanStation.StationEndProduct}.pdf";
+                //string pdfPath = $"{AppDomain.CurrentDomain.BaseDirectory}Download\\{pdfFileName}";
+                string pdfPath = Path.Combine(desktopPath, pdfFileName);
+
+                Workbook workbook = new Workbook();
+                workbook.LoadFromFile(savePath);
+
+                // 璁剧疆杞崲閫夐」锛屽寘鍚墍鏈夊伐浣滆〃
+                workbook.ConverterSetting.SheetFitToPage = true;
+
+                // 淇濆瓨鎵�鏈夊伐浣滆〃鍒板悓涓�涓狿DF鏂囦欢
+                workbook.SaveToFile(pdfPath, FileFormat.PDF);
+
+                //// 杞崲绗竴涓伐浣滆〃鍒癙DF
+                //workbook.SaveToFile(pdfPath, FileFormat.PDF);
+                return WebResponseContent.Instance.OK(data: new { path = pdfPath, fileName = pdfFileName });
             }
-            //worksheet.DeleteRow(row, worksheet.Dimension.End.Row - row + 1);
-
-            package.Save();
-
-            string pdfFileName = $"{DateTime.Now.ToString("yyyyMMddHHssmm")}.pdf";
-            string pdfPath = $"{AppDomain.CurrentDomain.BaseDirectory}Download\\{pdfFileName}";
-
-            Workbook workbook = new Workbook();
-            workbook.LoadFromFile(savePath);
-
-            // 杞崲绗竴涓伐浣滆〃鍒癙DF
-            workbook.SaveToFile(pdfPath, FileFormat.PDF);
-            return WebResponseContent.Instance.OK(data: new { path = pdfPath, fileName = pdfFileName });
-
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
         }
 
 

--
Gitblit v1.9.3