From d3ae2e67d8237e8474c7b88f526619550608b933 Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期四, 13 三月 2025 21:51:20 +0800
Subject: [PATCH] 通信

---
 项目代码/WIDESEAWCS_Server 正式/SerialPortService/ProcessServer.cs |  243 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 177 insertions(+), 66 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/SerialPortService/ProcessServer.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/SerialPortService/ProcessServer.cs"
index 3ebbded..76a679e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/SerialPortService/ProcessServer.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/SerialPortService/ProcessServer.cs"
@@ -4,6 +4,7 @@
 using System.Text;
 using System.Text.RegularExpressions;
 using System.Threading.Tasks;
+using AutoMapper.Configuration.Conventions;
 using SqlSugar;
 using WIDESEA_ISerialPortRepository;
 using WIDESEA_SerialPortRepository;
@@ -30,9 +31,9 @@
 
         public override PageGridData<Dt_Process> GetPageData(PageDataOptions options)
         {
-            OrderByParameters = new Dictionary<string, OrderByType> 
-            { 
-                { nameof(Dt_Process.ArticleOne), OrderByType.Asc },//鎸変粈涔堝瓧娈垫帓搴�
+            OrderByParameters = new Dictionary<string, OrderByType>
+            {
+                { nameof(Dt_Process.SetpNum), OrderByType.Asc },//鎸変粈涔堝瓧娈垫帓搴�
             };
             return base.GetPageData(options);
         }
@@ -63,6 +64,7 @@
             }
         }
 
+        //鑾峰彇濂楃瓛鏁伴噺
         public WebResponseContent GetSleeveandStep(string gruops)
         {
             try
@@ -86,104 +88,213 @@
         }
 
 
-        public WebResponseContent AddProcess(AddProcessDTO addProcessDTO)
-        {
-            try
-            {
-                var proces = new Dt_Process();
-                proces.Nodal = addProcessDTO.nodal;
-                proces.CraftType = addProcessDTO.craftstype;
-                proces.CraftsStep = addProcessDTO.craftsstep;
-                proces.CraftContent = addProcessDTO.craftcontent;
-                proces.TorqueSum = addProcessDTO.sleeveNum;
-                proces.Tools = addProcessDTO.tools;
-                _unitOfWorkManage.BeginTran();
-                BaseDal.AddData(proces);
-                _unitOfWorkManage.CommitTran();
-                return new WebResponseContent { Status = true, Data = proces };
-            }
-            catch (Exception ex)
-            {
-                _unitOfWorkManage.RollbackTran();
-                return new WebResponseContent { Status = false, Message = "鏌ヨ澶辫触锛�" + ex.Message };
-            }
-        }
 
-        public WebResponseContent Upprocess(PutProcessDTO addProcessDTO)
+        public WebResponseContent AddOrUpdateProcess(AddProcessDTO addProcessDTO)
         {
             try
             {
-                var proces = BaseDal.QueryData(x => x.CraftID == addProcessDTO.id).FirstOrDefault();
-                if (proces == null)
+                _unitOfWorkManage.BeginTran(); // 寮�鍚簨鍔�
+
+                // 鍒ゆ柇鏄坊鍔犺繕鏄洿鏂�
+                if (addProcessDTO.id == 0)//娣诲姞
                 {
-                    return new WebResponseContent { Status = false, Message = "娌℃湁鎵惧埌" };
+                    // 妫�鏌ユ槸鍚﹀凡缁忓瓨鍦ㄧ浉鍚岀殑 setnum
+                    bool isExist = BaseDal.QueryData(x => x.SetpNum == addProcessDTO.setnum && x.CraftType == addProcessDTO.craftstype).Any();
+                    if (isExist)
+                    {
+                        return new WebResponseContent { Status = false, Message = $"姝ラ {addProcessDTO.setnum} 宸插瓨鍦紝涓嶈兘閲嶅娣诲姞锛�" };
+                    }
+
+                    // 鍒涘缓鏂板伐鑹烘楠�
+                    var proces = new Dt_Process
+                    {
+                        SetpNum = addProcessDTO.setnum,
+                        CraftType = addProcessDTO.craftstype,
+                        CraftsStep = addProcessDTO.craftsstep,
+                        CraftContent = addProcessDTO.craftcontent,
+                        Tools = addProcessDTO.tools,
+                        Material = addProcessDTO.material,
+                        ArticleOneid = addProcessDTO.aritcleoneid,
+                        ArticleOne = addProcessDTO.articleone,
+                        ArticleTowid = addProcessDTO.aritcletowid,
+                        ArticleTwo = addProcessDTO.articletwo,
+                        Creater = "admin",
+                        CreateDate = DateTime.Now
+                    };
+
+                    BaseDal.AddData(proces);
+                    _unitOfWorkManage.CommitTran(); // 鎻愪氦浜嬪姟
+                    return new WebResponseContent { Status = true, Data = proces };
                 }
-                proces.Nodal = addProcessDTO.nodal;
-                proces.CraftType = addProcessDTO.craftstype;
-                proces.CraftsStep = addProcessDTO.craftsstep;
-                proces.CraftContent = addProcessDTO.craftcontent;
-                proces.TorqueSum = addProcessDTO.sleeveNum;
-                proces.Tools = addProcessDTO.tools;
-                _unitOfWorkManage.BeginTran();
-                BaseDal.UpdateData(proces);
-                _unitOfWorkManage.CommitTran();
-                return new WebResponseContent { Status = true, Data = proces };
+                else
+                {
+                    // 鏌ヨ褰撳墠瑕佹洿鏂扮殑璁板綍
+                    var existingProcess = BaseDal.QueryFirst(x => x.CraftID == addProcessDTO.id);
+                    if (existingProcess == null)
+                    {
+                        return new WebResponseContent { Status = false, Message = "鏈壘鍒拌宸ヨ壓姝ラ锛屾棤娉曟洿鏂帮紒" };
+                    }
+
+                    // 鍙湁褰� setnum 鍙戠敓鍙樺寲鏃讹紝鎵嶈繘琛岄噸澶嶆�ф鏌�
+                    if (existingProcess.Nodal != addProcessDTO.setnum)
+                    {
+                        bool isExist = BaseDal.QueryData(x => x.Nodal == addProcessDTO.setnum && x.CraftType == addProcessDTO.craftstype && x.CraftID != addProcessDTO.id).Any();
+                        if (isExist)
+                        {
+                            return new WebResponseContent { Status = false, Message = $"姝ラ {addProcessDTO.setnum} 宸插瓨鍦紝涓嶈兘閲嶅锛�" };
+                        }
+                    }
+
+                    // 鏇存柊鏁版嵁
+                    existingProcess.SetpNum = addProcessDTO.setnum;
+                    existingProcess.CraftType = addProcessDTO.craftstype;
+                    existingProcess.CraftsStep = addProcessDTO.craftsstep;
+                    existingProcess.CraftContent = addProcessDTO.craftcontent;
+                    existingProcess.Tools = addProcessDTO.tools;
+                    existingProcess.Material = addProcessDTO.material;
+                    existingProcess.ArticleOneid = addProcessDTO.aritcleoneid;
+                    existingProcess.ArticleOne = addProcessDTO.articleone;
+                    existingProcess.ArticleTowid = addProcessDTO.aritcletowid;
+                    existingProcess.ArticleTwo = addProcessDTO.articletwo;
+                    existingProcess.CreateDate = DateTime.Now;
+                    BaseDal.UpdateData(existingProcess);
+                    _unitOfWorkManage.CommitTran(); // 鎻愪氦浜嬪姟
+
+                    return new WebResponseContent { Status = true, Data = existingProcess };
+                }
             }
             catch (Exception ex)
             {
-                _unitOfWorkManage.RollbackTran();
-                return new WebResponseContent { Status = false, Message = "鏌ヨ澶辫触锛�" + ex.Message };
+                _unitOfWorkManage.RollbackTran(); // 浜嬪姟鍥炴粴
+                return new WebResponseContent { Status = false, Message = "鎿嶄綔澶辫触锛�" + ex.Message };
             }
         }
 
+
+
+
+        //鑾峰彇褰撳墠浠诲姟宸ヤ綔姝ラ
         public WebResponseContent Getcircuit(string group, string takeid)
         {
             try
             {
-                ///濡傛灉杩欎釜瀛樺�艰〃涓病鏈夋楠や竴杩欎箞鎼烇紵鎴戣繖涔堟樉绀虹粰鍓嶇鐪�
-              
+                //鏍规嵁缁勫拰浠诲姟鍙疯幏寰梩op琛ㄥ叏閮ㄦ暟鎹�
+                var torp = _torqueOpRepository.QueryData(x => x.GroupOp == group && x.TakeId == takeid);
 
-                // 鍏堟煡鍒拌繖鏉′换鍔�
-                var putake = _putakeRepository.QueryData(x => x.Njtakeid == takeid && x.Grouptype == group).OrderBy(x => x.Dispatchtime).FirstOrDefault();
-                if (putake==null)
-                {
-                    return new WebResponseContent { Status = false, Message = "娌℃湁鎵惧埌" };
-                }
-                //鑾峰彇鍒板綋鍓嶅畬鎴愮殑姝ラ
-                var nowNum = _torqueOpRepository.QueryData(x => x.GroupOp == group && x.TakeId == takeid).Max(x => x.ProcessSte);
 
-               
-
-                //鏍规嵁鍒嗙粍鍜屾楠ゆ壘鍒拌鏉℃暟鎹�
-                var process = BaseDal.QueryData(x => x.CraftType == group&&x.SetpNum== nowNum).FirstOrDefault();
-
+                //鑾峰彇Modifier  ="true"  琛ㄧず鏄己鍒舵墽琛�
+                var Mod = torp.Select(x => x.Modifier).FirstOrDefault();
+                //鏌ュ嚭宸ヨ壓琛�
+                var process = BaseDal.QueryData(x => x.CraftType == group);
 
                 //杩斿洖褰撳墠宸ヨ壓鐨勬渶澶ф楠�
-                var maxproce = BaseDal.QueryData(x => x.CraftType == group).Max(x => x.SetpNum);
+                var maxproce = process.Max(x => x.SetpNum);
+                
 
-                //涓�鍏辫鏈夊灏戞潯鏁版嵁锛堢洰鏍囨暟閲忥級
-                int TargetCount = process.TorqueOneQuantity + process.TorqueTwoQuantity;
+                //鎷垮埌宸ヨ壓琛ㄤ腑姝ラ涓�1鐨�
+                var proNoe = process.Where(x => x.SetpNum == 1);//鑾峰緱宸ヨ壓琛ㄤ腑鐨勭涓�姝�
+                if (torp.Count == 0)
+                {
+                    return new WebResponseContent { Status = true, Message = "杩斿洖宸ヨ壓琛ㄤ腑鐨勭涓�鏉�", Data =new { proNoe, maxproce } };
+                }
+
+                var nowNum = torp.Max(x => x.ProcessSte);//鑾峰緱褰撳墠鏈�澶ф楠�
+
+                //op.Modifier="true"  琛ㄧず鏄己鍒舵墽琛岋紝灏变笉闇�瑕佸垽鏂簲鎵殑娆℃暟锛岀洿鎺ヨ繑鍥� op.ProcessSte+1
+                if (Mod == "true")
+                {
+                   var  now= maxproce + 1;
+                    return new WebResponseContent { Status = true, Data = new { proNoe, maxproce, now } };
+                }
+
+                //濡傛灉瀛樺�艰〃涓湁鏁版嵁灏辫繑鍥炵粰浠栧綋鍓嶅伐鑹烘楠�
+                var maxpro = process.Where(x => x.SetpNum == nowNum);
 
 
+                //鍒ゆ柇褰撳墠姝ラ鐨勬壄鍔涙鏁版槸鍚﹀畬鎴愶紝娌″畬鎴愯繑鍥炲綋鍓嶆楠わ紝瀹屾垚杩斿洖op.ProcessSte+1锛岀姸鎬佸�肩粰false   
+
+                return new WebResponseContent { Status = true, Message = "杩斿洖褰撳墠浠诲姟鍋氬埌鐨勫ぇ姝ラ", Data =new { maxpro, maxproce } };
+
+            }
+            catch (Exception ex)
+            {
+                return new WebResponseContent { Status = false, Message = "鏌ヨ澶辫触锛�" + ex.Message };
+            }
+        }
+
+        public WebResponseContent Nextprocess(SetpDTO setpDTO,bool flag)//寮哄埗鎵ц缁欐垜true
+        {
+            try
+            {
+                Dt_TorqueOp op = new Dt_TorqueOp();
+                //鏌ュ嚭宸ヨ壓琛�
+                var process = BaseDal.QueryData(x => x.CraftType == setpDTO.group);
 
                 // 鏌ヨ褰撳墠姝ラ鐨� TorqueOp 璁板綍锛屽尮閰� ProcessSte鍜岀粍锛屼换鍔″彿锛屾鏌ユ槸鍚﹁揪鍒拌姹傦紙瀹為檯鏁伴噺锛�
-                int practiceCount = _torqueOpRepository.QueryData(x =>  x.GroupOp == group&&x.TakeId== takeid).Count();
+                int practiceCount = _torqueOpRepository.QueryData(x => x.ProcessSte == setpDTO.setnum && x.GroupOp == setpDTO.group && x.TakeId == setpDTO.takeid).Count();
 
+                //鏌ュ埌鏈夎鏉℃暟鎹簡(鏇村叿鍒嗙粍鍜屾楠ゆ壘鍒拌鏉℃暟鎹�)
+                var nowdate = process.Where(x => x.CraftType == setpDTO.group && x.SetpNum == setpDTO.setnum);
 
+                //杩斿洖褰撳墠宸ヨ壓鐨勬渶澶ф楠�
+                var maxproce = process.Max(x => x.SetpNum);
+                var TorqueOneQuantity = nowdate.Select(x => x.TorqueOneQuantity).FirstOrDefault();
+                var TorqueTwoQuantity= nowdate.Select(x => x.TorqueTwoQuantity).FirstOrDefault();
 
-                if (practiceCount < TargetCount)
+                //鍒ゆ柇瀛樺�艰〃鐨勬暟鎹槸鍚︽弧瓒宠姝ラ闇�瑕佸嚑鏉℃暟鎹殑鏉℃暟
+                int TargetCount = TorqueOneQuantity + TorqueTwoQuantity;//涓�鍏辫鏈夊灏戞潯鏁版嵁锛堢洰鏍囨暟閲忥級
+
+                if (practiceCount < TargetCount && !flag)
                 {
-                    return new WebResponseContent { Status = false, Message = "娌℃湁瀹屾垚褰撳墠姝ラ",Data= process };
+                    return new WebResponseContent { Status = true, Message = "娌℃湁瀹屾垚褰撳墠姝ラ", Data =new { nowdate, maxproce } };
                 }
-                if (maxproce== nowNum)
+                else if(practiceCount == TargetCount || (practiceCount != TargetCount && flag))//寮哄埗鎵ц 鍓嶇缁欐垜涓�涓猣lag=ture鏃�
+                {
+                    //寮哄埗璺宠浆涓嬩竴姝ワ紝鎻掑叆op琛ㄥ綋鍓嶆楠�
+                    op.TakeId = setpDTO.takeid;
+                    op.GroupOp = setpDTO.group;
+                    op.ProcessSte = setpDTO.setnum;
+                    op.CreateDate = DateTime.Now;
+                    op.Creater = "admin";
+                    op.Modifier = "true";
+                }
+
+                if (maxproce == setpDTO.setnum)
                 {
                     return new WebResponseContent { Status = false, Message = "浣犲畬鎴愪簡褰撳墠浣滀笟" };
                 }
-                int num = nowNum + 1;
+                int num = setpDTO.setnum + 1;
 
-                var nex = BaseDal.QueryFirst(x => x.CraftType == group && x.SetpNum == num);
+                //杩斿洖涓嬩竴姝ユ楠�
+                var nex = process.Where(x => x.CraftType == setpDTO.group && x.SetpNum == num).FirstOrDefault();
 
-                return new WebResponseContent { Status = true, Data = nex };
+
+                _torqueOpRepository.AddData(op);
+                return new WebResponseContent { Status = true,Message= $"浣犲凡瀹屾垚褰撳墠绗瑊setpDTO.setnum}锛屽噯澶囩{num}姝ヤ换鍔�", Data = new { nex, maxproce } };
+            }
+            catch (Exception ex)
+            {
+                return new WebResponseContent { Status = false, Message = "鏌ヨ澶辫触锛�" + ex.Message };
+            }
+        }
+
+        public WebResponseContent PreviousProcess(SetpDTO setpDTO)
+        {
+            try
+            {
+                //鏌ュ嚭宸ヨ壓琛�
+                var process = BaseDal.QueryData(x => x.CraftType == setpDTO.group);
+
+                // 鏌ヨ褰撳墠姝ラ鐨� TorqueOp 璁板綍锛屽尮閰� ProcessSte鍜岀粍锛屼换鍔″彿锛屾鏌ユ槸鍚﹁揪鍒拌姹傦紙瀹為檯鏁伴噺锛�
+                int practiceCount = _torqueOpRepository.QueryData(x => x.ProcessSte == setpDTO.setnum && x.GroupOp == setpDTO.group && x.TakeId == setpDTO.takeid).Count();
+                //鏌ュ埌鏈夎鏉℃暟鎹簡(鏇村叿鍒嗙粍鍜屾楠ゆ壘鍒拌鏉℃暟鎹�)
+                var nowdate = process.Where(x => x.CraftType == setpDTO.group && x.SetpNum == setpDTO.setnum);
+
+                //杩斿洖褰撳墠宸ヨ壓鐨勬渶澶ф楠�
+                var maxproce = process.Max(x => x.SetpNum);
+                int num = setpDTO.setnum - 1;
+                var nex = process.Where(x => x.CraftType == setpDTO.group && x.SetpNum == num).FirstOrDefault();
+                return new WebResponseContent { Status = true, Message = $"涓婁竴姝setpDTO.setnum}", Data = new { nex, maxproce } };
             }
             catch (Exception ex)
             {

--
Gitblit v1.9.3