From 39d468b76e60c05ffcdf749f7ed1d3c443d542f8 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期四, 30 四月 2026 17:13:05 +0800
Subject: [PATCH] 一堆需要求新增及更改

---
 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs |  109 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 61 insertions(+), 48 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs"
index bfe700b..ec80750 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs"
@@ -61,7 +61,6 @@
                 Dt_StationPackInfo? stationPackInfo = stationPackInfos.FirstOrDefault(x => x.PackType == packinfo.PackType && x.OrderNo == packinfo.OrderNo && x.AssignNum < x.PackNum);
                 Dt_PackaxisTask packaxisTask = new Dt_PackaxisTask();
                 //濡傛灉璁㈠崟鐩稿悓銆佸灈鍨嬩竴鑷村苟涓斿垎閰嶆暟閲忓皯浜庣爜鍨涚粨鎵樻暟閲忓垯鍒嗛厤鍒颁竴璧�
-                _unitOfWorkManage.BeginTran();
                 if (stationPackInfo != null)
                 {
                     packaxisTask = new Dt_PackaxisTask()
@@ -82,14 +81,14 @@
                     stationPackInfo.AssignNum += 1;
                     stationPackInfo.ExecutingNum += 1;
                     packinfo.PackStatus = StationOccupiedEnum.Sure.ObjToInt();
-
+                    _unitOfWorkManage.BeginTran();
                     //鏇存柊鐮佸灈鎵ц宸ヤ綅
                     _stationPackInfoRepository.UpdateData(stationPackInfo);
                     //鏇存柊寰呯爜鍨涗俊鎭〃
                     _packinfoRepository.UpdateData(packinfo);
                     //娣诲姞鐮佸灈浠诲姟
                     BaseDal.AddData(packaxisTask);
-
+                    _unitOfWorkManage.CommitTran();
                 }
                 else//鍒嗛厤鏂板伐浣�
                 {
@@ -107,11 +106,14 @@
                     {
                         return content.Error("鏈壘鍒板彲鍒嗛厤鍨涗綅");
                     }
+                    Dt_Packaxis packaxis = packaxes.FirstOrDefault(x => x.StationCode == packInfoAssign.StationCode);
                     packInfoAssign.PackType = packinfo.PackType;
                     packInfoAssign.OrderNo = packinfo.OrderNo;
                     packInfoAssign.MakeCode = packinfo.MakeCode;
                     packInfoAssign.MaterielCode = packInfoAssign.MaterielCode;
-                    packInfoAssign.PackNum = packaxes.FirstOrDefault(x => x.StationCode == packInfoAssign.StationCode).PackNum;
+                    packInfoAssign.PackNum = packaxis.PackNum;
+                    //璁$畻鐮佸灈瀹岀殑楂樺害
+                    packInfoAssign.HeightNum = packaxis.AxisZCount * packaxis.AxisZSpacing + 200;
                     packaxisTask = new Dt_PackaxisTask()
                     {
                         DeviceCode = deviceCode,
@@ -130,14 +132,16 @@
                     packInfoAssign.AssignNum += 1;
                     packInfoAssign.ExecutingNum += 1;
                     packinfo.PackStatus = StationOccupiedEnum.Sure.ObjToInt();
+                    _unitOfWorkManage.BeginTran();
                     //鏇存柊鐮佸灈鎵ц宸ヤ綅
                     _stationPackInfoRepository.UpdateData(packInfoAssign);
                     //鏇存柊寰呯爜鍨涗俊鎭〃
                     _packinfoRepository.UpdateData(packinfo);
                     //娣诲姞鐮佸灈浠诲姟
                     BaseDal.AddData(packaxisTask);
+                    _unitOfWorkManage.CommitTran();
                 }
-                _unitOfWorkManage.CommitTran();
+                
                 return content.OK(barCode, packaxisTask);
             }
             catch (Exception ex)
@@ -157,18 +161,23 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                Dt_StationPackInfo stationPackInfo = _stationPackInfoRepository.QueryFirst(x => x.StationCode == stationCode);
+                Dt_StationPackInfo stationPackInfo = _stationPackInfoRepository.Db.Queryable<Dt_StationPackInfo>().Where(x => x.StationCode == stationCode).Includes(x=>x.stationPackDetails).First();
                 if (stationPackInfo.OverNum != stationPackInfo.AssignNum)
                 {
                     throw new Exception($"鍒嗛厤鏁伴噺{stationPackInfo.AssignNum}锛屽畬鎴愭暟閲弡stationPackInfo.OverNum}鏁伴噺涓嶇");
                 }
-                List<Dt_StationPackDetail> stationPackDetails = _stationPackDetailRepository.QueryData(x => x.StationPackId == stationPackInfo.id);
+                List<Dt_StationPackDetail> stationPackDetails = stationPackInfo.stationPackDetails;
                 if (stationPackDetails.Count <= 0)
                 {
                     throw new Exception($"{stationCode}鏈壘鍒扮爜鍨涙槑缁�");
                 }
                 List<string> barCodes = stationPackDetails.Select(x => x.BoxCode).ToList();
-                List<Dt_Packinfo> packinfos = _packinfoRepository.QueryData(x => barCodes.Contains(x.BarCode)).ToList();
+                List<Dt_Packinfo> packinfos = _packinfoRepository.QueryData(x => barCodes.Contains(x.BarCode) && x.PackStatus== StationOccupiedEnum.Sure.ObjToInt()).ToList();
+                if (packinfos.Count != barCodes.Count)
+                {
+                    throw new Exception($"鐮佸灈淇℃伅涓庡疄闄呬笉绗︼紝鐮佸灈淇℃伅鏁伴噺{packinfos.Count},瀹為檯鏁伴噺{barCodes.Count}");
+                }
+                int heightNum = stationPackInfo.HeightNum;
                 stationPackInfo.PackType = 0;
                 stationPackInfo.OrderNo = "";
                 stationPackInfo.MakeCode = "";
@@ -177,18 +186,19 @@
                 stationPackInfo.OverNum = 0;
                 stationPackInfo.AssignNum = 0;
                 stationPackInfo.ExecutingNum = 0;
+                stationPackInfo.HeightNum = 0;
                 _unitOfWorkManage.BeginTran();
                 _stationPackInfoRepository.UpdateData(stationPackInfo);
                 _stationPackDetailRepository.DeleteData(stationPackDetails);
                 _packinfoRepository.DeleteAndMoveIntoHty(packinfos, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
                 //鍚屾鍒癢MS
-                string address = AppSettings.Get("WMSApiAddress");
-                string response = HttpHelper.Post($"{address}/api/Task/BoxingInBound?stationCode=" + stationCode, barCodes.Serialize());
-                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(response) ?? throw new Exception($"鏈敹鍒拌繑鍥炵粨鏋�");
-                if (!responseContent.Status)
-                {
-                    throw new Exception(responseContent.Message);
-                }
+                //string address = AppSettings.Get("WMSApiAddress");
+                //string response = HttpHelper.Post($"{address}/api/Task/BoxingInBound?stationCode={stationCode}&heightNum={heightNum}", barCodes.Serialize());
+                //WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(response) ?? throw new Exception($"鏈敹鍒拌繑鍥炵粨鏋�");
+                //if (!responseContent.Status)
+                //{
+                //    throw new Exception(responseContent.Message);
+                //}
                 _unitOfWorkManage.CommitTran();
                 content.OK();
             }
@@ -199,6 +209,7 @@
             }
             return content;
         }
+        private readonly static object lockerCompleted = new object();
         /// <summary>
         /// 鐮佸灈浠诲姟瀹屾垚
         /// </summary>
@@ -207,45 +218,47 @@
         /// <returns></returns>
         public WebResponseContent TaskCompleted(int taskNum=0,Dt_PackaxisTask? packaxisTask=null)
         {
-            try
+            lock (lockerCompleted)
             {
-                
-                Dt_PackaxisTask? packaxisTaskFinish = null;
-                if (packaxisTask!=null)
+                try
                 {
-                    packaxisTaskFinish= packaxisTask;
-                }
-                else
-                {
-                    packaxisTaskFinish = BaseDal.QueryFirst(x => x.PackTaskNum == taskNum);
-                    packaxisTaskFinish.TaskState = TaskStatusEnum.Finish.ObjToInt();
-                }
-                if (packaxisTaskFinish != null)
-                {
-                    Dt_StationPackInfo stationPackInfo = _stationPackInfoRepository.QueryFirst(x => x.StationCode == packaxisTaskFinish.TargetAddress);
-                    stationPackInfo.ExecutingNum -= 1;
-                    stationPackInfo.OverNum += 1;
-                    Dt_StationPackDetail stationPackDetail = new Dt_StationPackDetail()
+                    Dt_PackaxisTask? packaxisTaskFinish = null;
+                    if (packaxisTask != null)
                     {
-                        StationPackId = stationPackInfo.id,
-                        BoxCode = packaxisTaskFinish.BarCode
-                    };
-                    _unitOfWorkManage.BeginTran();
-                    _stationPackInfoRepository.UpdateData(stationPackInfo);
-                    _stationPackDetailRepository.AddData(stationPackDetail);
-                    BaseDal.DeleteAndMoveIntoHty(packaxisTaskFinish, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
-                    _unitOfWorkManage.CommitTran();
+                        packaxisTaskFinish = packaxisTask;
+                    }
+                    else
+                    {
+                        packaxisTaskFinish = BaseDal.QueryFirst(x => x.PackTaskNum == taskNum);
+                    }
+                    if (packaxisTaskFinish != null)
+                    {
+                        Dt_StationPackInfo stationPackInfo = _stationPackInfoRepository.QueryFirst(x => x.StationCode == packaxisTaskFinish.TargetAddress);
+                        stationPackInfo.ExecutingNum -= 1;
+                        stationPackInfo.OverNum += 1;
+                        Dt_StationPackDetail stationPackDetail = new Dt_StationPackDetail()
+                        {
+                            StationPackId = stationPackInfo.Id,
+                            BoxCode = packaxisTaskFinish.BarCode
+                        };
+                        packaxisTaskFinish.TaskState = TaskStatusEnum.Finish.ObjToInt();
+                        _unitOfWorkManage.BeginTran();
+                        _stationPackInfoRepository.UpdateData(stationPackInfo);
+                        _stationPackDetailRepository.AddData(stationPackDetail);
+                        BaseDal.DeleteAndMoveIntoHty(packaxisTaskFinish, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+                        _unitOfWorkManage.CommitTran();
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error("鏈壘鍒颁换鍔�");
+                    }
+                    return WebResponseContent.Instance.OK();
                 }
-                else
+                catch (Exception ex)
                 {
-                    return WebResponseContent.Instance.Error("鏈壘鍒颁换鍔�");
+                    _unitOfWorkManage.RollbackTran();
+                    return WebResponseContent.Instance.Error(ex.Message);
                 }
-                return WebResponseContent.Instance.OK();
-            }
-            catch (Exception ex)
-            {
-                _unitOfWorkManage.RollbackTran();
-                return WebResponseContent.Instance.Error(ex.Message);
             }
         }
         /// <summary>

--
Gitblit v1.9.3