public IActionResult Update(AuditContractUpdateDto parm) { var userinfo = _tokenManager.GetSessionInfo(); if (_maincontractService.Any(m => m.PreContractID == parm.PreContractID && m.status >= 10020)) { return(toResponse(StatusCodeType.Error, $"当前合同已经审批通过,不允许修改!")); } var contract = _maincontractService.GetId(parm.ID); if (contract == null || contract.deleted == 1) { return(toResponse(StatusCodeType.Error, "当前合同信息不存在")); } using (SqlSugarClient db = Core.DbContext.CurrentDB) { Core.DbContext.BeginTran(); try { string SupportWay = ""; if (parm.SupportWayList != null) { SupportWay = string.Join(",", parm.SupportWayList.Select(m => m.SelectItemIndex)); } //从 Dto 映射到 实体 _maincontractService.Update(m => m.ID == parm.ID, m => new Biz_MainContract() { MultiSiteDays = parm.MultiSiteDays, ApplyAuditID = parm.ApplyAuditID, ApplyAuditName = parm.ApplyAuditName, SupportUserID = parm.SupportUserID, SupportUserName = parm.SupportUserName, MarketAuditRemark = parm.MarketAuditRemark, AuditPlanRemark = parm.AuditPlanRemark, AuditTeamRemark = parm.AuditTeamRemark, AuditRemark = parm.AuditRemark, IntegrationLevel = parm.IntegrationLevel, SupportWay = SupportWay, UpdateID = userinfo.ID, UpdateName = userinfo.UserName, UpdateTime = DateTime.Now }); //更新合同关联项目信息 List <ContractItemVM> ItemList = parm.ContractItemList; if (ItemList != null) { foreach (var Item in ItemList) { //增人日依据 List <Biz_ContractItem_Add> addlist_update = Item.ContractItemAddList.Where(m => m.AutoID > 0).ToList(); //更新 List <Biz_ContractItem_Add> addlist_insert = Item.ContractItemAddList.Where(m => m.AutoID == 0).ToList(); //插入 List <Biz_ContractItem_Add> addlist_delete = Item.ContractItemAddList; //删除 //删除增人日依据 string[] addids = addlist_delete.Where(x => !string.IsNullOrEmpty(x.ID)).Select(x => x.ID).ToArray(); db.Deleteable <Biz_ContractItem_Add>().Where(m => m.ContractItemID == Item.ID && !addids.Contains(m.ID)).ExecuteCommand(); if (addlist_update != null) { foreach (var add in addlist_update) //更新 { db.Updateable <Biz_ContractItem_Add>().SetColumns(m => new Biz_ContractItem_Add() { AddIndex = add.AddIndex, AddName = add.AddName, AddPri = add.AddPri }).Where(m => m.ID == add.ID).ExecuteCommand(); } } if (addlist_insert != null) { foreach (var add in addlist_insert) { add.ID = Guid.NewGuid().ToString(); add.ContractItemID = Item.ID; db.Insertable <Biz_ContractItem_Add>(add).ExecuteCommand(); } } //减人日依据 List <Biz_ContractItem_Minus> minuslist_update = Item.ContractItemMinusList.Where(m => m.AutoID > 0).ToList(); //更新 List <Biz_ContractItem_Minus> minuslist_insert = Item.ContractItemMinusList.Where(m => m.AutoID == 0).ToList(); //插入 List <Biz_ContractItem_Minus> minuslist_delete = Item.ContractItemMinusList; //删除 //删除减人日依据 string[] minusids = minuslist_delete.Where(x => !string.IsNullOrEmpty(x.ID)).Select(x => x.ID).ToArray(); db.Deleteable <Biz_ContractItem_Minus>().Where(m => m.ContractItemID == Item.ID && !minusids.Contains(m.ID)).ExecuteCommand(); if (minuslist_update != null) { foreach (var minus in minuslist_update) //更新 { db.Updateable <Biz_ContractItem_Minus>().SetColumns(m => new Biz_ContractItem_Minus() { MinusIndex = minus.MinusIndex, MinusName = minus.MinusName, MinusPri = minus.MinusPri }).Where(m => m.ID == minus.ID).ExecuteCommand(); } } if (minuslist_insert != null) { foreach (var minus in minuslist_insert) { minus.ID = Guid.NewGuid().ToString(); minus.ContractItemID = Item.ID; db.Insertable <Biz_ContractItem_Minus>(minus).ExecuteCommand(); } } //业务类别处理 List <ContractItemBizClassVM> classlist_update = Item.ContractItemBizClassificationList.Where(m => !string.IsNullOrEmpty(m.ID)).ToList(); //更新 List <ContractItemBizClassVM> classlist_insert = Item.ContractItemBizClassificationList.Where(m => string.IsNullOrEmpty(m.ID)).ToList(); //插入 List <ContractItemBizClassVM> classlist_delete = Item.ContractItemBizClassificationList.Where(m => !string.IsNullOrEmpty(m.ID)).ToList(); //删除 //删除管理业务类别 string[] classids = classlist_delete.Where(x => !string.IsNullOrEmpty(x.ID)).Select(x => x.ID).ToArray(); db.Deleteable <Biz_ContractItem_BizClassification>().Where(m => m.ContractItemID == Item.ID && !classids.Contains(m.ID)).ExecuteCommand(); if (classlist_update != null) { foreach (var cl in classlist_update) { db.Updateable <Biz_ContractItem_BizClassification>().SetColumns(m => new Biz_ContractItem_BizClassification() { BizClassificationID = cl.BizClassificationID }).Where(m => m.ID == cl.ID).ExecuteCommand(); } } if (classlist_insert != null) { foreach (var cl in classlist_insert) { Biz_ContractItem_BizClassification bc = Api.Common.Helpers.ComHelper.Mapper <Biz_ContractItem_BizClassification, ContractItemBizClassVM>(cl); bc.ID = Guid.NewGuid().ToString(); bc.ContractItemID = Item.ID; db.Insertable <Biz_ContractItem_BizClassification>(bc).ExecuteCommand(); } } decimal AddPris = (decimal)addlist_update.Sum(x => x.AddPri) + (decimal)addlist_insert.Sum(x => x.AddPri); //增人日比例汇总 decimal MinusPris = (decimal)minuslist_update.Sum(x => x.MinusPri) + (decimal)minuslist_insert.Sum(x => x.MinusPri); //减人日比例汇总 decimal TotalbasePris = AddPris - MinusPris; decimal basePris = 1 + (TotalbasePris / 100); //增减比例 decimal firstTrialTotalDays = 0; //初审总人日计算(基础人日*(1+增减比例)) decimal supervisionTotalDays = 0; //监督总人日 decimal recertificationTotalDays = 0; //再认证总人日 if (Item.FirstTrialBaseDays != null) { firstTrialTotalDays = Math.Round((decimal)Item.FirstTrialBaseDays * basePris, 2); supervisionTotalDays = Math.Round((decimal)Item.SupervisionBaseDays * basePris, 2); recertificationTotalDays = Math.Round((decimal)Item.RecertificationBaseDays * basePris, 2); } //保存项目信息 { var standard = db.Queryable <Abi_SysStandard>().First(m => m.ID == Item.ItemStandardID); string itemno = parm.ContractNo + standard.SysStandardNo; db.Updateable <Biz_ContractItem>().SetColumns(m => new Biz_ContractItem() { IsSiteWork = Item.IsSiteWork, NotSiteWorkReasonID = Item.NotSiteWorkReasonID, NotSiteWorkReason = Item.NotSiteWorkReason, RiskRegisterID = Item.RiskRegisterID, RiskRegister = Item.RiskRegister, IncompatibilityClause = Item.IncompatibilityClause, CNAS = Item.CNAS, AuditScope = Item.AuditScope, AuditScopeEN = Item.AuditScopeEN, TotalBasePris = TotalbasePris, FirstTrialBaseDays = Item.FirstTrialBaseDays, SupervisionBaseDays = Item.SupervisionBaseDays, RecertificationBaseDays = Item.RecertificationBaseDays, FirstTrialTotalDays = firstTrialTotalDays, SupervisionTotalDays = supervisionTotalDays, RecertificationTotalDays = recertificationTotalDays, UpdateID = userinfo.ID, UpdateName = userinfo.UserName, UpdateTime = DateTime.Now }).Where(m => m.ID == Item.ID).ExecuteCommand(); } } } Core.DbContext.CommitTran(); return(toResponse("保存成功")); } catch (Exception ex) { Core.DbContext.RollbackTran(); return(toResponse(StatusCodeType.Error, ex.Message)); } } }
public IActionResult Update(MainContractUpdateDto parm) { var userinfo = _tokenManager.GetSessionInfo(); if (_maincontractService.Any(m => m.PreContractID == parm.PreContractID && m.status >= 10020)) { return(toResponse(StatusCodeType.Error, $"当前合同已经审批通过,不允许修改!")); } var contract = _maincontractService.GetId(parm.ID); if (contract == null || contract.deleted == 1) { return(toResponse(StatusCodeType.Error, "当前合同信息不存在")); } using (SqlSugarClient db = Core.DbContext.CurrentDB) { Core.DbContext.BeginTran(); try { //从 Dto 映射到 实体 _maincontractService.Update(m => m.ID == parm.ID, m => new Biz_MainContract() { ConcernExtent = parm.ConcernExtent, ConcernExtentName = parm.ConcernExtentName, AuditPlanDate = parm.AuditPlanDate, JudgeReuqest = parm.JudgeReuqest, AuditPlanRequest = parm.AuditPlanRequest, AuditGroupRequest = parm.AuditGroupRequest, DecisionRequest = parm.DecisionRequest, Remark = parm.Remark, UpdateID = userinfo.ID, UpdateName = userinfo.UserName, UpdateTime = DateTime.Now }); //添加合同关联项目信息 List <ContractItemVM> ItemList_update = parm.ContractItemList_update; //更新 List <ContractItemVM> ItemList_insert = parm.ContractItemList_insert; //插入 List <ContractItemVM> ItemList_delete = parm.ContractItemList_delete; //删除 //删除合同体系项目 string[] ids = ItemList_delete.Where(x => !string.IsNullOrEmpty(x.ID)).Select(x => x.ID).ToArray(); db.Updateable <Biz_ContractItem>().SetColumns(m => new Biz_ContractItem { deleted = 1 }).Where(m => m.MainContractID == parm.ID && ids.Contains(m.ID)).ExecuteCommand(); if (ItemList_update != null) //更新列表 { foreach (var Item in ItemList_update) { var standard = db.Queryable <Abi_SysStandard>().First(m => m.ID == Item.ItemStandardID); string itemno = parm.ContractNo + standard.SysStandardNo; db.Updateable <Biz_ContractItem>().SetColumns(m => new Biz_ContractItem() { ItemStandardID = Item.ItemStandardID, ItemName = Item.ItemName, AuditTypeID = Item.AuditTypeID, AuditTypeName = Item.AuditTypeName, PropleNum = Item.PropleNum, ApplyRange = Item.ApplyRange, ApplyRangeEN = Item.ApplyRangeEN, OrganizationIn = Item.OrganizationIn, ReevaluateNum = Item.ReevaluateNum, UpdateID = userinfo.ID, UpdateName = userinfo.UserName, UpdateTime = DateTime.Now }).Where(m => m.ID == Item.ID).ExecuteCommand(); } } if (ItemList_insert != null) //插入新数据 { foreach (var Item in ItemList_insert) { Biz_ContractItem contractitem = new Biz_ContractItem(); contractitem.ID = Guid.NewGuid().ToString(); contractitem.MainContractID = parm.ID; contractitem.ItemStandardID = Item.ItemStandardID; //标准ID contractitem.ItemStandardCode = Item.ItemStandardCode; //标准code contractitem.ItemName = Item.ItemName; //标准名称 contractitem.AuditTypeID = Item.AuditTypeID; //审核类型 contractitem.AuditTypeName = Item.ItemName; //审核类型名称 contractitem.PropleNum = Item.PropleNum; //体系人数 contractitem.ApplyRange = Item.ApplyRange; //申请范围 contractitem.ApplyRangeEN = Item.ApplyRangeEN; //申请范围英文 contractitem.OrganizationIn = Item.OrganizationIn; //是否机构转入 contractitem.ReevaluateNum = Item.ReevaluateNum; //复评次数 contractitem.CreateTime = DateTime.Now; contractitem.CreateID = userinfo.ID; contractitem.CreateName = userinfo.UserName; contractitem.deleted = 0; var standard = db.Queryable <Abi_SysStandard>().First(m => m.ID == Item.ItemStandardID); contractitem.ContractItemNo = parm.ContractNo + standard.SysStandardNo; db.Insertable <Biz_ContractItem>(contractitem).ExecuteCommand(); } } //添加合同多场所信息 List <FcsVM> FcsList_update = parm.ContractfcsList_update; //更新 List <FcsVM> FcsList_insert = parm.ContractfcsList_insert; //插入 List <FcsVM> FcsList_delete = parm.ContractfcsList_delete; //删除 //删除合同体系项目 string[] fcsids = FcsList_delete.Where(x => !string.IsNullOrEmpty(x.ID)).Select(x => x.ID).ToArray(); db.Deleteable <Biz_ContractFcs>().Where(m => m.MainContractID == parm.ID && fcsids.Contains(m.ID)).ExecuteCommand(); if (FcsList_update != null) //更新数据 { foreach (var fcs in FcsList_update) { db.Updateable <Biz_ContractFcs>().SetColumns(m => new Biz_ContractFcs() { fcsID = fcs.fcsID }).Where(m => m.ID == fcs.ID).ExecuteCommand(); } } if (FcsList_insert != null) { foreach (var fcs in FcsList_insert) { Biz_ContractFcs contractfcs = new Biz_ContractFcs(); contractfcs.ID = Guid.NewGuid().ToString(); contractfcs.fcsID = fcs.fcsID; contractfcs.MainContractID = parm.ID; contractfcs.CustomerID = parm.CustomerID; contractfcs.CreateTime = DateTime.Now; contractfcs.CreateID = userinfo.ID; contractfcs.CreateName = userinfo.UserName; db.Insertable <Biz_ContractFcs>(contractfcs).ExecuteCommand(); } } //评审附件 List <FileVM> FileList_update = parm.ContractFileList_update; //更新 List <FileVM> FileList_insert = parm.ContractFileList_insert; //插入 List <FileVM> FileList_delete = parm.ContractFileList_delete; //删除 //删除合同体系项目 string[] fileids = FileList_delete.Where(x => !string.IsNullOrEmpty(x.ID)).Select(x => x.ID).ToArray(); db.Deleteable <Biz_ContractFile>().Where(m => m.MainContractID == parm.ID && fileids.Contains(m.ID)).ExecuteCommand(); if (FileList_update != null)//更新 { foreach (var file in FileList_update) { db.Updateable <Biz_ContractFile>().SetColumns(m => new Biz_ContractFile() { FileID = file.FileID, FileName = file.FileName, Name = file.FileName, }).Where(m => m.ID == file.ID).ExecuteCommand(); } } if (FileList_insert != null) //插入 { foreach (var file in FileList_insert) { Biz_ContractFile contractfile = new Biz_ContractFile(); contractfile.ID = Guid.NewGuid().ToString(); contractfile.FileID = file.FileID; contractfile.FileName = file.FileName; contractfile.Name = file.FileName; contractfile.MainContractID = parm.ID; contractfile.CustomerID = parm.CustomerID; contractfile.CreateTime = DateTime.Now; contractfile.CreateID = userinfo.ID; contractfile.CreateName = userinfo.UserName; db.Insertable <Biz_ContractFile>(contractfile).ExecuteCommand(); } } //更新状态为已登记 var i = db.Updateable <Biz_MainContract>() .SetColumns(it => new Biz_MainContract() { UpdateTime = DateTime.Now, UpdateID = userinfo.ID, UpdateName = userinfo.UserName }) .Where(it => it.ID == parm.ID).ExecuteCommand(); Core.DbContext.CommitTran(); return(toResponse(parm.ID)); } catch (Exception ex) { Core.DbContext.RollbackTran(); return(toResponse(StatusCodeType.Error, ex.Message)); } } }