From c0f4da14e93f58cd2c9e98de985960872c3250ef Mon Sep 17 00:00:00 2001 From: me Date: Fri, 6 Jun 2025 09:08:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9Update=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Repository/Repository.cs | 4 -- .../Controllers/NormalBaseController.cs | 6 +-- .../Datas/SupplierEmployeeDtService.cs | 12 +++--- .../Datas/SupplierInfoDtService.cs | 12 +++--- .../SupplierProAttachmentDataDtService.cs | 4 +- .../SupplierProProcessEquipmentDtService.cs | 12 +++--- API/Wood.Util/CommonHelper.cs | 43 ++++++++++++++++++- 7 files changed, 64 insertions(+), 29 deletions(-) diff --git a/API/TaskManager.EntityFramework/Repository/Repository.cs b/API/TaskManager.EntityFramework/Repository/Repository.cs index 194f9b5..269ee01 100644 --- a/API/TaskManager.EntityFramework/Repository/Repository.cs +++ b/API/TaskManager.EntityFramework/Repository/Repository.cs @@ -55,10 +55,6 @@ namespace TaskManager.EntityFramework.Repository public async Task UpdateAsync(TEntity entity) { - //product 已前台更新后 - _context.Attach(entity); - _context.Entry(entity).State = EntityState.Modified; - _dbSet.Update(entity); await _context.SaveChangesAsync(); } diff --git a/API/Wood.Service/Controllers/NormalBaseController.cs b/API/Wood.Service/Controllers/NormalBaseController.cs index a85e18a..00190e7 100644 --- a/API/Wood.Service/Controllers/NormalBaseController.cs +++ b/API/Wood.Service/Controllers/NormalBaseController.cs @@ -75,14 +75,14 @@ namespace Wood.Service.Controllers /// /// [HttpPut("{id}")] - public async virtual Task Update(T entity) + public async virtual Task Update(long UId, T entity) { - var _first = await _repository.GetByIdAsync(entity.UId); + var _first = await _repository.GetByIdAsync(UId); if (_first == null) { return new JsonResult(new { Code = 400, Message = "修改失败!" }); } - + EntityMapper.Trans(_first, entity, "UId"); await _repository.UpdateAsync(entity); return new JsonResult(new { Code = 200, Message = "修改成功!" }); diff --git a/API/Wood.Service/Datas/SupplierEmployeeDtService.cs b/API/Wood.Service/Datas/SupplierEmployeeDtService.cs index b1e71ab..e023705 100644 --- a/API/Wood.Service/Datas/SupplierEmployeeDtService.cs +++ b/API/Wood.Service/Datas/SupplierEmployeeDtService.cs @@ -82,7 +82,7 @@ namespace Wood.Service.Datas //添加任务明细 foreach (var empDtObj in entityLst) { - SUPPLIER_EMPLOYEE empObj = ExpressionGenericMapper.Trans(empDtObj); + SUPPLIER_EMPLOYEE empObj = EntityMapper.Trans(empDtObj); empObj.TaskId = taskSubObj.TaskId; await _supplierEmployeeRepository.AddAsync(empObj); } @@ -106,7 +106,7 @@ namespace Wood.Service.Datas { empDtObj.UId = firstObj.UId; empDtObj.CreationTime = CommonHelper.CurrentTime; - var ret = await base.Update(empDtObj); + var ret = await base.Update(firstObj.UId, empDtObj); } } #endregion @@ -131,7 +131,7 @@ namespace Wood.Service.Datas TaskSub taskSubObj = _commonService.BuildTaskSub(1, _taskName); await _taskSubRepository.AddAsync(taskSubObj); //添加任务明细 - SUPPLIER_EMPLOYEE empObj = ExpressionGenericMapper.Trans(entity); + SUPPLIER_EMPLOYEE empObj = EntityMapper.Trans(entity); empObj.TaskId = taskSubObj.TaskId; await _supplierEmployeeRepository.AddAsync(empObj); @@ -163,7 +163,7 @@ namespace Wood.Service.Datas } } - public override async Task Update(SUPPLIER_EMPLOYEE_DT entity) + public override async Task Update(long UId, SUPPLIER_EMPLOYEE_DT entity) { using var transaction = _context.Database.BeginTransaction(); try @@ -173,7 +173,7 @@ namespace Wood.Service.Datas TaskSub taskSubObj = _commonService.BuildTaskSub(1, _taskName); await _taskSubRepository.AddAsync(taskSubObj); //添加任务明细 - SUPPLIER_EMPLOYEE empObj = ExpressionGenericMapper.Trans(entity); + SUPPLIER_EMPLOYEE empObj = EntityMapper.Trans(entity); empObj.TaskId = taskSubObj.TaskId; await _supplierEmployeeRepository.AddAsync(empObj); @@ -191,7 +191,7 @@ namespace Wood.Service.Datas } else { - var ret = await base.Update(entity); + var ret = await base.Update(firstObj.UId, entity); } #endregion diff --git a/API/Wood.Service/Datas/SupplierInfoDtService.cs b/API/Wood.Service/Datas/SupplierInfoDtService.cs index c93c52c..347f98a 100644 --- a/API/Wood.Service/Datas/SupplierInfoDtService.cs +++ b/API/Wood.Service/Datas/SupplierInfoDtService.cs @@ -81,7 +81,7 @@ namespace Wood.Service.Datas //添加任务明细 foreach (var empDtObj in entityLst) { - SUPPLIER_INFO empObj = ExpressionGenericMapper.Trans(empDtObj); + SUPPLIER_INFO empObj = EntityMapper.Trans(empDtObj); empObj.TaskId = taskSubObj.TaskId; await _supplierInfoRepository.AddAsync(empObj); } @@ -104,7 +104,7 @@ namespace Wood.Service.Datas { empDtObj.UId = firstObj.UId; empDtObj.CreationTime = CommonHelper.CurrentTime; - var ret = await base.Update(empDtObj); + var ret = await base.Update(firstObj.UId, empDtObj); } } #endregion @@ -131,7 +131,7 @@ namespace Wood.Service.Datas await _taskSubRepository.AddAsync(taskSubObj); //添加任务明细 - SUPPLIER_INFO empObj = ExpressionGenericMapper.Trans(entity); + SUPPLIER_INFO empObj = EntityMapper.Trans(entity); empObj.TaskId = taskSubObj.TaskId; await _supplierInfoRepository.AddAsync(empObj); @@ -162,7 +162,7 @@ namespace Wood.Service.Datas } } - public override async Task Update(SUPPLIER_INFO_DT entity) + public override async Task Update(long UId, SUPPLIER_INFO_DT entity) { using var transaction = _context.Database.BeginTransaction(); try @@ -172,7 +172,7 @@ namespace Wood.Service.Datas TaskSub taskSubObj = _commonService.BuildTaskSub(1, _taskName); await _taskSubRepository.AddAsync(taskSubObj); //添加任务明细 - SUPPLIER_INFO empObj = ExpressionGenericMapper.Trans(entity); + SUPPLIER_INFO empObj = EntityMapper.Trans(entity); empObj.TaskId = taskSubObj.TaskId; await _supplierInfoRepository.AddAsync(empObj); @@ -189,7 +189,7 @@ namespace Wood.Service.Datas } else { - var ret = await base.Update(entity); + var ret = await base.Update(firstObj.UId, entity); } #endregion diff --git a/API/Wood.Service/Datas/SupplierProAttachmentDataDtService.cs b/API/Wood.Service/Datas/SupplierProAttachmentDataDtService.cs index 81e0c11..bfbe29f 100644 --- a/API/Wood.Service/Datas/SupplierProAttachmentDataDtService.cs +++ b/API/Wood.Service/Datas/SupplierProAttachmentDataDtService.cs @@ -82,7 +82,7 @@ namespace Wood.Service.Datas //添加任务明细 foreach (var empDtObj in entityLst) { - SUPPLIER_PRO_ATTACHMENT_DATA empObj = ExpressionGenericMapper.Trans(empDtObj); + SUPPLIER_PRO_ATTACHMENT_DATA empObj = EntityMapper.Trans(empDtObj); empObj.TaskId = taskSubObj.TaskId; await _supplierProAttachmentDataRepository.AddAsync(empObj); } @@ -114,7 +114,7 @@ namespace Wood.Service.Datas TaskSub taskSubObj = _commonService.BuildTaskSub(1, _taskName); await _taskSubRepository.AddAsync(taskSubObj); //添加任务明细 - SUPPLIER_PRO_ATTACHMENT_DATA empObj = ExpressionGenericMapper.Trans(entity); + SUPPLIER_PRO_ATTACHMENT_DATA empObj = EntityMapper.Trans(entity); empObj.TaskId = taskSubObj.TaskId; await _supplierProAttachmentDataRepository.AddAsync(empObj); diff --git a/API/Wood.Service/Datas/SupplierProProcessEquipmentDtService.cs b/API/Wood.Service/Datas/SupplierProProcessEquipmentDtService.cs index f237114..c3ad5cf 100644 --- a/API/Wood.Service/Datas/SupplierProProcessEquipmentDtService.cs +++ b/API/Wood.Service/Datas/SupplierProProcessEquipmentDtService.cs @@ -82,7 +82,7 @@ namespace Wood.Service.Datas //添加任务明细 foreach (var empDtObj in entityLst) { - SUPPLIER_PRO_PROCESS_EQUIPMENT empObj = ExpressionGenericMapper.Trans(empDtObj); + SUPPLIER_PRO_PROCESS_EQUIPMENT empObj = EntityMapper.Trans(empDtObj); empObj.TaskId = taskSubObj.TaskId; await _supplierProProcessEquipmentRepository.AddAsync(empObj); } @@ -104,7 +104,7 @@ namespace Wood.Service.Datas { empDtObj.UId = firstObj.UId; empDtObj.CreationTime = CommonHelper.CurrentTime; - var ret = await base.Update(empDtObj); + var ret = await base.Update(firstObj.UId, empDtObj); } } #endregion @@ -129,7 +129,7 @@ namespace Wood.Service.Datas TaskSub taskSubObj = _commonService.BuildTaskSub(1, _taskName); await _taskSubRepository.AddAsync(taskSubObj); //添加任务明细 - SUPPLIER_PRO_PROCESS_EQUIPMENT empObj = ExpressionGenericMapper.Trans(entity); + SUPPLIER_PRO_PROCESS_EQUIPMENT empObj = EntityMapper.Trans(entity); empObj.TaskId = taskSubObj.TaskId; await _supplierProProcessEquipmentRepository.AddAsync(empObj); @@ -159,7 +159,7 @@ namespace Wood.Service.Datas } } - public override async Task Update(SUPPLIER_PRO_PROCESS_EQUIPMENT_DT entity) + public override async Task Update(long UId, SUPPLIER_PRO_PROCESS_EQUIPMENT_DT entity) { using var transaction = _context.Database.BeginTransaction(); try @@ -169,7 +169,7 @@ namespace Wood.Service.Datas TaskSub taskSubObj = _commonService.BuildTaskSub(1, _taskName); await _taskSubRepository.AddAsync(taskSubObj); //添加任务明细 - SUPPLIER_PRO_PROCESS_EQUIPMENT empObj = ExpressionGenericMapper.Trans(entity); + SUPPLIER_PRO_PROCESS_EQUIPMENT empObj = EntityMapper.Trans(entity); empObj.TaskId = taskSubObj.TaskId; await _supplierProProcessEquipmentRepository.AddAsync(empObj); @@ -185,7 +185,7 @@ namespace Wood.Service.Datas } else { - var ret = await base.Update(entity); + var ret = await base.Update(firstObj.UId, entity); } #endregion diff --git a/API/Wood.Util/CommonHelper.cs b/API/Wood.Util/CommonHelper.cs index 3736a81..c00104d 100644 --- a/API/Wood.Util/CommonHelper.cs +++ b/API/Wood.Util/CommonHelper.cs @@ -65,10 +65,10 @@ namespace Wood.Util /// /// /// - public class ExpressionGenericMapper//Mapper`2 + public class EntityMapper//Mapper`2 { private static Func _FUNC = null; - static ExpressionGenericMapper() + static EntityMapper() { ParameterExpression parameterExpression = Expression.Parameter(typeof(TIn), "p"); List memberBindingList = new List(); @@ -96,4 +96,43 @@ namespace Wood.Util return _FUNC(t); } } + + + /// + /// 反射实现Mapper + /// + public class EntityMapper + { + /// + /// 反射 + /// + /// + /// + /// + /// + public static void Trans(TIn tIn, TOut tOut, string excludeMembers = "") + { + string[] excludeMemberArr = excludeMembers.Split(",").Select(itm => itm.Trim()).ToArray(); + + foreach (var itemOut in tOut.GetType().GetProperties()) + { + if (excludeMemberArr.Contains(itemOut.Name)) + { + continue; + } + var propIn = tIn.GetType().GetProperty(itemOut.Name); + itemOut.SetValue(tOut, propIn.GetValue(tIn, null), null); + } + + foreach (var itemOut in tOut.GetType().GetFields()) + { + if (excludeMemberArr.Contains(itemOut.Name)) + { + continue; + } + var fieldIn = tIn.GetType().GetField(itemOut.Name); + itemOut.SetValue(tOut, fieldIn.GetValue(tIn)); + } + } + } }