From beb0b5d9e1bab1ace04b5860b5ca308b6f913d4f Mon Sep 17 00:00:00 2001
From: zhanghonglin <zhanghonglin@hnkhzn.com>
Date: 星期六, 21 三月 2026 13:46:04 +0800
Subject: [PATCH] 灌装机功能

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Job/FillingJob.cs |  124 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 118 insertions(+), 6 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Job/FillingJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Job/FillingJob.cs"
index 249694e..f948da2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Job/FillingJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Job/FillingJob.cs"
@@ -3,8 +3,17 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using HslCommunication.WebSocket;
+using Newtonsoft.Json;
 using Quartz;
+using WIDESEA_Common.FillingEnum;
+using WIDESEA_Model.Models.Basic;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models.TaskInfo;
 using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_Tasks.Command;
 using WIDESEAWCS_Tasks.DBName;
 
 namespace WIDESEAWCS_Tasks
@@ -12,6 +21,14 @@
     [DisallowConcurrentExecution]
     public class FillingJob : JobBase, IJob
     {
+
+        private readonly IRepository<Dt_FillingOrder> _FillingRepository;
+
+        public FillingJob(IRepository<Dt_FillingOrder> FillingRepository)
+        {
+            _FillingRepository = FillingRepository;
+        }
+
         public Task Execute(IJobExecutionContext context)
         {
             //杩炴帴璁惧
@@ -22,15 +39,110 @@
                 //OtherDevice TCevice = (OtherDevice)Storage.Devices.Find(v => v.DeviceName == "澶╄溅");
                 if (device.Communicator.IsConnected)
                 {
-                    //璇�
-                    short a = device.GetValue<FillingDBName, short>(FillingDBName.R_ceshi);
-                    //鍐�
-                    device.SetValue(FillingDBName.W_ceshia, "zy");
-                    device.SetValue(FillingDBName.W_ceshib, "wq");
-                    device.SetValue(FillingDBName.W_ceshic, "df");
+                    ////璇�
+                    //short a = device.GetValue<FillingDBName, short>(FillingDBName.R_ceshi);
+                    ////鍐�
+                    //device.SetValue(FillingDBName.W_ceshia, "zy");
+                    //device.SetValue(FillingDBName.W_ceshib, "wq");
+                    //device.SetValue(FillingDBName.W_ceshic, "df");
+
+                    try
+                    {
+                        //鏄惁鍠风爜瀹屾垚
+                        short accomplish = device.GetValue<FillingDBName, short>(FillingDBName.R_Accomplish);
+
+                        if (accomplish == 1)
+                        {
+                            //鑾峰彇浜岀淮鐮�
+                            Dt_FillingOrder FillingOrder = GetFilling();
+                            if (FillingOrder != null)
+                            {
+
+                                //浠诲姟瀹炰綋杞懡浠odel
+                                FillingCommand? StackerCommand = FillingToCommand(FillingOrder);
+                                if (StackerCommand != null)
+                                {
+                                    //鍙戦�佸懡浠�
+                                    device.SetValue(FillingDBName.W_QRcode1, StackerCommand.W_QRcode1);
+                                    device.SetValue(FillingDBName.W_QRcode2, StackerCommand.W_QRcode2);
+                                    device.SetValue(FillingDBName.W_QRcode3, StackerCommand.W_QRcode3);
+                                    device.SetValue(FillingDBName.W_QRcode4, StackerCommand.W_QRcode4);
+                                    device.SetValue(FillingDBName.W_QRcode5, StackerCommand.W_QRcode5);
+                                    device.SetValue(FillingDBName.W_QRcode6, StackerCommand.W_QRcode6);
+                                    device.SetValue(FillingDBName.W_QRcode7, StackerCommand.W_QRcode7);
+                                    device.SetValue(FillingDBName.W_QRcode8, StackerCommand.W_QRcode8);
+                                    device.SetValue(FillingDBName.W_QRcode9, StackerCommand.W_QRcode9);
+                                    device.SetValue(FillingDBName.W_QRcode10, StackerCommand.W_QRcode10);
+                                    device.SetValue(FillingDBName.W_QRcode11, StackerCommand.W_QRcode11);
+                                    device.SetValue(FillingDBName.W_QRcode12, StackerCommand.W_QRcode12);
+                                    device.SetValue(FillingDBName.W_QRcode13, StackerCommand.W_QRcode13);
+                                    device.SetValue(FillingDBName.W_QRcode14, StackerCommand.W_QRcode14);
+                                    device.SetValue(FillingDBName.W_QRcode15, StackerCommand.W_QRcode15);
+                                    device.SetValue(FillingDBName.W_Refresh, StackerCommand.W_Refresh);
+
+                                    //淇敼浜岀淮鐮佷俊鎭姸鎬�
+                                    FillingOrder.BarStatus = (int)FillingStatusEnum.ExecuteCompleted;
+                                    _FillingRepository.UpdateData(FillingOrder);
+                                    string address = AppSettings.Get("WMSApiAddress");
+                                    if (!string.IsNullOrEmpty(address))
+                                    {
+                                        HttpHelper.Post($"{address}/api/FillingOrder/UpdateFilling?FillingNumber={FillingOrder.BarCode}", "");
+                                    }
+                                    //寤惰繜2s璁╃綈瑁呮満鏇村彉淇″彿
+                                    Thread.Sleep(2000);
+                                }
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        WriteError(nameof(StackerCraneJob), ex.Message);
+                    }
                 }
             }
             return Task.CompletedTask;
         }
+
+        //鑾峰彇浜岀淮鐮�
+        public Dt_FillingOrder GetFilling()
+        {
+            Dt_FillingOrder FillingOrder = new Dt_FillingOrder();
+
+            FillingOrder = _FillingRepository.QueryFirst(x => x.BarStatus == (int)FillingStatusEnum.Queue);
+
+            return FillingOrder;
+        }
+
+        //浠诲姟瀹炰綋杞懡浠odel
+        public FillingCommand FillingToCommand(Dt_FillingOrder FillingOrder)
+        {
+            FillingCommand fillingCommand = new FillingCommand();
+
+            //鎷嗗垎瀛楃涓�
+            int lengths = FillingOrder.BarCode.Length;
+            string BarCodes= FillingOrder.BarCode;
+            for (int i=0;i < 30 - lengths;i++)
+            {
+                BarCodes = BarCodes + "X";
+            }
+
+            fillingCommand.W_QRcode1 = BarCodes.Substring(0, 2);
+            fillingCommand.W_QRcode2 = BarCodes.Substring(2, 2);
+            fillingCommand.W_QRcode3 = BarCodes.Substring(4, 2);
+            fillingCommand.W_QRcode4 = BarCodes.Substring(6, 2);
+            fillingCommand.W_QRcode5 = BarCodes.Substring(8, 2);
+            fillingCommand.W_QRcode6 = BarCodes.Substring(10, 2);
+            fillingCommand.W_QRcode7 = BarCodes.Substring(12, 2);
+            fillingCommand.W_QRcode8 = BarCodes.Substring(14, 2);
+            fillingCommand.W_QRcode9 = BarCodes.Substring(16, 2);
+            fillingCommand.W_QRcode10 = BarCodes.Substring(18, 2);
+            fillingCommand.W_QRcode11 = BarCodes.Substring(20, 2);
+            fillingCommand.W_QRcode12 = BarCodes.Substring(22, 2);
+            fillingCommand.W_QRcode13 = BarCodes.Substring(24, 2);
+            fillingCommand.W_QRcode14 = BarCodes.Substring(26, 2);
+            fillingCommand.W_QRcode15 = BarCodes.Substring(28, 2);
+            fillingCommand.W_Refresh = "1";
+            return fillingCommand;
+        }
     }
 }

--
Gitblit v1.9.3