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));
                }
            }
        }
Пример #2
0
        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));
                }
            }
        }