public async Task <ResponseObject <TPSMPurchaseOrderMainQueryModel> > GetWholeMainData(int requestObject, CurrentUser currentUser)
        {
            try
            {
                RequestGet requestGet = new RequestGet()
                {
                    IsPaging        = false,
                    QueryConditions = new List <QueryCondition>()
                    {
                        new QueryCondition()
                        {
                            Column = "ID", Condition = ConditionEnum.Equal, Content = requestObject.ToString()
                        }
                    }
                };

                var mainModel = await GetMainListAsync(requestGet, currentUser);

                TPSMPurchaseOrderMainQueryModel tPSMPurchaseOrderMainQueryModel = mainModel.Data.FirstOrDefault();

                var deatailModel = await GetDetialList(requestObject, currentUser);

                tPSMPurchaseOrderMainQueryModel.ChildList = deatailModel.Data;

                return(ResponseUtil <TPSMPurchaseOrderMainQueryModel> .SuccessResult(tPSMPurchaseOrderMainQueryModel));
            }
            catch (Exception ex)
            {
                return(ResponseUtil <TPSMPurchaseOrderMainQueryModel> .FailResult(null, ex.Message));
            }
        }
        /// <summary>
        /// 修改T_PSM_PurchaseOrderMain数据
        /// </summary>
        /// <param name="requestObject">Put请求参数</param>
        /// <param name="currentUser"></param>
        /// <returns>返回响应结果对象,包括响应代码,修改操作结果</returns>
        public async Task <ResponseObject <TPSMPurchaseOrderMainQueryModel> > PutAsync(RequestPut <TPSMPurchaseOrderMainEditModel> requestObject, CurrentUser currentUser)
        {
            var currDb = _db.Instance;//事务需要使用同一个 SqlSugarClient对象实例

            try
            {
                if (requestObject.PostData == null)
                {
                    return(ResponseUtil <TPSMPurchaseOrderMainQueryModel> .FailResult(null, "PostData不能为null"));
                }
                if (requestObject.PostData.ChildList == null || requestObject.PostData.ChildList.Count < 1)
                {
                    return(ResponseUtil <TPSMPurchaseOrderMainQueryModel> .FailResult(null, "PostData.ChildList至少包含一条数据"));
                }
                //开启事务
                currDb.BeginTran();
                //修改主表信息
                var mainModel = _mapper.Map <TPSMPurchaseOrderMainDbModel>(requestObject.PostData);
                mainModel.PurchaseNum    = requestObject.PostData.ChildList.Sum(p => p.PurchaseNum);
                mainModel.PurchaseAmount = requestObject.PostData.ChildList.Sum(p => p.PurchaseAmount);
                var mainFlag = await currDb.Updateable(mainModel)
                               .UpdateColumns(p => new
                {
                    p.PurchaseNum,
                    p.PurchaseAmount,
                    p.OrderDate,
                    p.OrderTypeId,
                    p.SettlementTypeId,
                    p.ContactName,
                    p.ContactNumber,
                    p.BuyerId,
                    p.Currency
                })
                               .Where(p => (SqlFunc.IsNullOrEmpty(p.AuditStatus) || p.AuditStatus != 2) && p.ID == mainModel.ID)
                               .ExecuteCommandAsync() > 0;

                //查询编辑前明细数据
                var beforEditDetailData = await _db.Instance.Queryable <TPSMPurchaseOrderDetailDbModel>()
                                          .Where(p => p.MainId == mainModel.ID)
                                          .ToListAsync();

                /*
                 * 修改明细逻辑
                 * 1.根据主单ID查询现有明细数据
                 * 2.PostData.ChildList中明细ID <= 0的新增
                 * 3.PostData.ChildList中明细ID > 0的修改
                 * 4.删除不在PostData.CihldList中的数据
                 */
                var detailFlag   = true;
                var detailModels = _mapper.Map <List <TPSMPurchaseOrderDetailEditModel>,
                                                List <TPSMPurchaseOrderDetailDbModel> >(requestObject.PostData.ChildList);
                //未审核可转数据都是0
                detailModels.ForEach(p => p.TransferNum = 0);
                foreach (var item in detailModels)
                {
                    if (!detailFlag)
                    {
                        break;
                    }
                    item.MainId = mainModel.ID;
                    //新增或修改明细数据
                    detailFlag = item.ID <= 0
                        ? await currDb.Insertable(item).ExecuteCommandIdentityIntoEntityAsync()
                        : await currDb.Updateable(item).ExecuteCommandAsync() > 0;
                }

                //删除明细数据
                if (detailFlag)
                {
                    var detailIds = detailModels.Select(p => p.ID).ToList();
                    detailFlag = currDb.Deleteable <TPSMPurchaseOrderDetailDbModel>()
                                 .Where(p => !detailIds.Contains(p.ID) && p.MainId == mainModel.ID)
                                 .ExecuteCommand() >= 0;
                }

                //如果有源单号
                if (mainModel.SourceId > 0)
                {
                    var transList = await GetTransDetailsAsync((int)mainModel.SourceId, detailModels, beforEditDetailData, currentUser);

                    foreach (var item in transList)
                    {
                        await _db.Instance.Updateable <TMMPurchaseApplyDetailDbModel>()
                        .SetColumns(p => p.TransNum == p.TransNum - item.TransNum)
                        .Where(p => p.MainId == item.MainId && p.MaterialId == item.MaterialId)
                        .ExecuteCommandAsync();
                    }

                    FalseTMMPurchaseApplyMain(mainModel.SourceId.Value);
                }
                else
                {
                    var detailModelLists = _db.Instance.Queryable <TPSMPurchaseOrderDetailDbModel>().Where(p => p.MainId == requestObject.PostData.ID).ToList();

                    var groupEntity = from p in detailModelLists
                                      group p by new { p.MaterialId } into g
                        select new { g.Key, MaxPrice = g.Max(p => p.UnitPrice), MinPrice = g.Min(p => p.UnitPrice) };

                    var differentEntity = groupEntity.Where(p => p.MaxPrice != p.MinPrice).ToList();

                    if (differentEntity.Count() > 0)
                    {
                        var meList = BasicCacheGet.GetMaterial(currentUser);

                        string error = string.Join(",", differentEntity.Select(p => meList.Where(p1 => p1.ID == p.Key.MaterialId).FirstOrDefault()?.MaterialName));
                        throw new Exception($"{error}商品的单价不一致,请保证相同商品价格一致性");
                    }
                }

                //提交事务
                currDb.CommitTran();
                //返回执行结果
                TPSMPurchaseOrderMainQueryModel returnObject = null;
                var tempreturnObject = await GetWholeMainData(mainModel.ID, currentUser);

                returnObject = tempreturnObject.Data;

                return(ResponseUtil <TPSMPurchaseOrderMainQueryModel> .SuccessResult(returnObject));
            }
            catch (Exception ex)
            {
                //回滚事务
                currDb.RollbackTran();
                //返回异常结果
                return(ResponseUtil <TPSMPurchaseOrderMainQueryModel> .FailResult(null, ex.Message));
            }
        }
        /// <summary>
        /// 新增T_PSM_PurchaseOrderMain数据
        /// </summary>
        /// <param name="requestObject">Post请求参数</param>
        /// <param name="currentUser"></param>
        /// <returns>返回响应结果对象,包括响应代码,新增操作结果</returns>
        public async Task <ResponseObject <TPSMPurchaseOrderMainQueryModel> > PostAsync(RequestPost <TPSMPurchaseOrderMainAddModel> requestObject, CurrentUser currentUser)
        {
            var currDb = _db.Instance;//事务需要使用同一个 SqlSugarClient对象实例

            try
            {
                //没有新增数据,返回错误信息
                if (requestObject.PostData == null)
                {
                    return(ResponseUtil <TPSMPurchaseOrderMainQueryModel> .FailResult(null, "PostData不能为null"));
                }
                //开启事务
                currDb.BeginTran();
                //插入主表数据
                var mapMainModel = _mapper.Map <TPSMPurchaseOrderMainDbModel>(requestObject.PostData);
                mapMainModel.OperatorId     = currentUser.UserID;
                mapMainModel.CompanyId      = currentUser.CompanyID;
                mapMainModel.PurchaseNum    = requestObject.PostData.ChildList.Sum(p => p.PurchaseNum);
                mapMainModel.PurchaseAmount = requestObject.PostData.ChildList.Sum(p => p.PurchaseAmount);
                var mainId = await currDb.Insertable(mapMainModel).ExecuteReturnIdentityAsync();

                //更新明细表外键ID值
                requestObject.PostData.ChildList.ForEach(p => p.MainId = mainId);
                //插入从表数据
                var mapDetailModelList = _mapper.Map <List <TPSMPurchaseOrderDetailAddModel>,
                                                      List <TPSMPurchaseOrderDetailDbModel> >(requestObject.PostData.ChildList);
                var result = await currDb.Insertable(mapDetailModelList).ExecuteCommandAsync() > 0;

                //如果是生产采购申请单转采购单,需要更新转单及数量信息
                if (mapMainModel.SourceId > 0)
                {
                    var transList = await GetTransDetailsAsync((int)mapMainModel.SourceId, mapDetailModelList, currentUser);

                    foreach (var item in transList)
                    {
                        await _db.Instance.Updateable <TMMPurchaseApplyDetailDbModel>()
                        .SetColumns(p => p.TransNum == p.TransNum - item.TransNum)
                        .Where(p => p.MainId == item.MainId && p.MaterialId == item.MaterialId)
                        .ExecuteCommandAsync();
                    }
                    FalseTMMPurchaseApplyMain(mapMainModel.SourceId.Value);
                }
                else
                {
                    var detailModelLists = _db.Instance.Queryable <TPSMPurchaseOrderDetailDbModel>().Where(p => p.MainId == requestObject.PostData.ID).ToList();

                    var groupEntity = from p in detailModelLists
                                      group p by new { p.MaterialId } into g
                        select new { g.Key, MaxPrice = g.Max(p => p.UnitPrice), MinPrice = g.Min(p => p.UnitPrice) };

                    var differentEntity = groupEntity.Where(p => p.MaxPrice != p.MinPrice).ToList();

                    if (differentEntity.Count() > 0)
                    {
                        var meList = BasicCacheGet.GetMaterial(currentUser);

                        string error = string.Join(",", differentEntity.Select(p => meList.Where(p1 => p1.ID == p.Key.MaterialId).FirstOrDefault()?.MaterialName));
                        throw new Exception($"{error}商品的单价不一致,请保证相同商品价格一致性");
                    }
                }
                //提交事务
                currDb.CommitTran();
                TPSMPurchaseOrderMainQueryModel returnObject = null;
                if (result)
                {
                    var tempreturnObject = await GetWholeMainData(mainId, currentUser);

                    returnObject = tempreturnObject.Data;
                }
                //返回执行结果
                return(result ? ResponseUtil <TPSMPurchaseOrderMainQueryModel> .SuccessResult(returnObject)
                    : ResponseUtil <TPSMPurchaseOrderMainQueryModel> .FailResult(null, "新增数据失败!"));
            }
            catch (Exception ex)
            {
                //回滚事务
                currDb.RollbackTran();
                //返回异常结果
                return(ResponseUtil <TPSMPurchaseOrderMainQueryModel> .FailResult(null, ex.Message));
            }
        }