From a694ab118359e4a9c28b4e8e439e5e9dbd503c60 Mon Sep 17 00:00:00 2001 From: fei550 <1420031550@qq.com> Date: Tue, 28 Apr 2026 00:50:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(predesign):=20=E4=BF=AE=E5=A4=8D=E5=8C=85?= =?UTF-8?q?=E8=A3=85=E4=B8=8E=E8=BD=A6=E6=AC=A1=E5=85=B3=E8=81=94=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=80=E8=87=B4=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 包装管理存在两个一致性问题:一是组件可重复进入其他包装,导致 组件归属冲突;二是删除车次后包装仍保留旧车次关联,产生脏数据。 本次修改统一补齐校验和解绑逻辑,避免包装与发货数据出现错误关联。 --- .../HJGL/PreDesign/PackagingManageService .cs | 63 +++++++++++++++---- .../PreDesign/TrainNumberManageService.cs | 16 +++-- 2 files changed, 63 insertions(+), 16 deletions(-) diff --git a/SGGL/BLL/HJGL/PreDesign/PackagingManageService .cs b/SGGL/BLL/HJGL/PreDesign/PackagingManageService .cs index c5fd648d..a9ad5407 100644 --- a/SGGL/BLL/HJGL/PreDesign/PackagingManageService .cs +++ b/SGGL/BLL/HJGL/PreDesign/PackagingManageService .cs @@ -143,19 +143,30 @@ namespace BLL /// 当该预制组件已被包装时抛出异常 public static void AddPipelineComponentToPackaging(string packagingManageId, string pipelineComponentId) { - var ComponentModel = BLL.HJGL_PipelineComponentService.GetPipelineComponentById(pipelineComponentId); - if (ComponentModel != null) + using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { - var model = new Model.HJGL_PackagingManageDetail() + bool existsInCurrentPackaging = db.HJGL_PackagingManageDetail.Any(x => x.PackagingManageId == packagingManageId && x.PipelineComponentId == pipelineComponentId); + if (existsInCurrentPackaging) { - Id = SQLHelper.GetNewID(), - PackagingManageId = packagingManageId, - PipelineId = ComponentModel.PipelineId, - PipelineComponentId = pipelineComponentId, - CreateTime = DateTime.Now, - CreateUser = null, - }; - HJGLPackagingmanagedetailService.Add(model); + return; + } + ValidatePipelineComponentsNotInOtherPackaging(pipelineComponentId); + + var ComponentModel = BLL.HJGL_PipelineComponentService.GetPipelineComponentById(pipelineComponentId); + if (ComponentModel != null) + { + var model = new Model.HJGL_PackagingManageDetail() + { + Id = SQLHelper.GetNewID(), + PackagingManageId = packagingManageId, + PipelineId = ComponentModel.PipelineId, + PipelineComponentId = pipelineComponentId, + CreateTime = DateTime.Now, + CreateUser = null, + }; + db.HJGL_PackagingManageDetail.InsertOnSubmit(model); + db.SubmitChanges(); + } } } @@ -172,6 +183,7 @@ namespace BLL db1.HJGL_PackagingManage.DeleteOnSubmit(table); db1.SubmitChanges(); } + HJGLPackagingmanagedetailService.DeleteByPackagingManageId(PackagingManageId); } /// @@ -632,6 +644,11 @@ namespace BLL } // 创建新的包装明细记录 + var addedComponentIds = allComponentIds.Except(existingComponentIds).ToList(); + foreach (var item in addedComponentIds) + { + ValidatePipelineComponentsNotInOtherPackaging(item); + } var newDetailList = new List(); foreach (var item in allComponentIds) { @@ -671,6 +688,28 @@ namespace BLL /// 获取包装状态下拉框选项 /// /// 包装状态列表,包含状态文本和值的映射关系 + private static void ValidatePipelineComponentsNotInOtherPackaging(string pipelineComponentId) + { + if (string.IsNullOrEmpty(pipelineComponentId)) + { + return; + } + + var existDetail = (from detail in Funs.DB.HJGL_PackagingManageDetail + join pack in Funs.DB.HJGL_PackagingManage on detail.PackagingManageId equals pack.PackagingManageId + where detail.PipelineComponentId == pipelineComponentId + select new + { + detail.PipelineComponentId, + PackagingCode = pack == null ? null : pack.PackagingCode + }).FirstOrDefault(); + if (existDetail != null) + { + string packagingCodeText = string.IsNullOrEmpty(existDetail.PackagingCode) ? string.Empty : (",包装编号:" + existDetail.PackagingCode); + throw new Exception("组件已在其他包装中存在" + packagingCodeText + "。"); + } + } + public static ListItem[] GetState() { ListItem[] list = new ListItem[3]; @@ -753,4 +792,4 @@ namespace BLL } #endregion Methods } -} \ No newline at end of file +} diff --git a/SGGL/BLL/HJGL/PreDesign/TrainNumberManageService.cs b/SGGL/BLL/HJGL/PreDesign/TrainNumberManageService.cs index 7de5b25c..8efb265e 100644 --- a/SGGL/BLL/HJGL/PreDesign/TrainNumberManageService.cs +++ b/SGGL/BLL/HJGL/PreDesign/TrainNumberManageService.cs @@ -144,11 +144,19 @@ namespace BLL public static void DeleteById(string Id) { - Model.HJGL_TrainNumberManage table = Funs.DB.HJGL_TrainNumberManage.FirstOrDefault(x => x.Id == Id); + var db = Funs.DB; + Model.HJGL_TrainNumberManage table = db.HJGL_TrainNumberManage.FirstOrDefault(x => x.Id == Id); if (table != null) { - Funs.DB.HJGL_TrainNumberManage.DeleteOnSubmit(table); - Funs.DB.SubmitChanges(); + var packagingList = db.HJGL_PackagingManage.Where(x => x.TrainNumberId == Id).ToList(); + foreach (var item in packagingList) + { + item.TrainNumberId = null; + item.TrainNumber = null; + } + + db.HJGL_TrainNumberManage.DeleteOnSubmit(table); + db.SubmitChanges(); } } @@ -167,4 +175,4 @@ namespace BLL } } } -} \ No newline at end of file +}