public async Task <ResponseObject <bool> > PostAsync(RequestPost <TMMBOMMainAddNewModel> requestObject, CurrentUser currentUser)
        {
            var currDb = _db.Instance;//事务需要使用同一个 SqlSugarClient对象实例

            try
            {
                //没有新增数据,返回错误信息
                if (requestObject.PostData == null)
                {
                    return(ResponseUtil <bool> .FailResult(false, "PostData不能为null"));
                }
                //开启事务
                currDb.BeginTran();
                //删除以前的数据
                int PackageId = requestObject.PostData.PackageId;

                TMMBOMMainDbModel oldDBMolde = _db.Instance.Queryable <TMMBOMMainDbModel>().Where(p => p.PackageId == PackageId).First();

                if (oldDBMolde != null)
                {
                    _db.Instance.Deleteable <TMMBOMDetailDbModel>().Where(p => p.MainId == PackageId).ExecuteCommand();
                    _db.Instance.Deleteable <TMMBOMMainDbModel>(oldDBMolde).ExecuteCommand();
                }

                //插入主表数据
                var mapMainModel = _mapper.Map <TMMBOMMainDbModel>(requestObject.PostData);
                var mainId       = await currDb.Insertable(mapMainModel).ExecuteReturnIdentityAsync();

                var materCache = BasicCacheGet.GetMaterial(currentUser);

                #region 处理配色项目

                List <string>            ItemList = requestObject.PostData.ChildList.Select(p => p.ItemName).Distinct().ToList();
                Dictionary <string, int> itemToId = new Dictionary <string, int>();

                foreach (string name in ItemList)
                {
                    var colorItem = _db.Instance.Queryable <TMMPackageColorItemDbModel>().Where(p => p.CompanyId == currentUser.CompanyID && p.ItemName == name && p.PackageId == PackageId).First();

                    int ItemId = 0;
                    if (colorItem == null)
                    {
                        TMMPackageColorItemDbModel temp = new TMMPackageColorItemDbModel();
                        temp.CompanyId  = currentUser.CompanyID;
                        temp.DeleteFlag = false;
                        temp.PackageId  = mapMainModel.PackageId;
                        temp.ItemName   = name;

                        ItemId = _db.Instance.Insertable(temp).ExecuteReturnIdentity();
                    }
                    else
                    {
                        ItemId = colorItem.ID;
                        if (colorItem.DeleteFlag == true)
                        {
                            colorItem.DeleteFlag = false;
                            _db.Instance.Updateable(colorItem).ExecuteCommand();
                        }
                    }
                    itemToId.Add(name, ItemId);
                }

                var itemIDs = _db.Instance.Queryable <TMMPackageColorItemDbModel>().Where(p => p.CompanyId == currentUser.CompanyID && p.PackageId == PackageId &&
                                                                                          !ItemList.Contains(p.ItemName)).Select(p => p.ID).ToList();

                _db.Instance.Updateable <TMMPackageColorItemDbModel>().Where(p => itemIDs.Contains(p.ID)).
                SetColumns(it => new TMMPackageColorItemDbModel {
                    DeleteFlag = true
                }).ExecuteCommand();

                _db.Instance.Deleteable <TMMColorSolutionDetailDbModel>().Where(p => SqlFunc.Subqueryable <TMMColorSolutionMainDbModel>().
                                                                                Where(p1 => p1.ID == p.MainId && p1.CompanyId == currentUser.CompanyID && p1.PackageId == PackageId).Any() && itemIDs.Contains(p.ItemId));

                #endregion

                #region 处理部位

                List <string>            PartList = requestObject.PostData.ChildList.Where(p => !string.IsNullOrWhiteSpace(p.PartName)).Select(p => p.PartName).Distinct().ToList();
                Dictionary <string, int> partId   = new Dictionary <string, int>();

                var dictionaryType = _db.Instance.Queryable <TBMDictionaryTypeDbModel>().Where(p => p.CompanyId == currentUser.CompanyID && p.TypeName == "部位档案").First();

                foreach (string name in PartList)
                {
                    var dicItem = _db.Instance.Queryable <TBMDictionaryDbModel>().Where(p => p.CompanyId == currentUser.CompanyID && p.DicValue == name).First();

                    int dicID = 0;
                    if (dicItem == null)
                    {
                        TBMDictionaryDbModel temp = new TBMDictionaryDbModel();
                        temp.CompanyId  = currentUser.CompanyID;
                        temp.DeleteFlag = false;
                        temp.TypeId     = dictionaryType.ID;
                        temp.DicValue   = name;
                        dicID           = _db.Instance.Insertable(temp).ExecuteReturnIdentity();
                    }
                    else
                    {
                        dicID = dicItem.ID;
                    }

                    partId.Add(name, dicID);
                }


                #endregion

                List <TMMBOMDetailDbModel> deatail = new List <TMMBOMDetailDbModel>();
                foreach (TMMBOMDetailAddNewModel item in requestObject.PostData.ChildList)
                {
                    TMMBOMDetailDbModel tMMBOMDetailDbModel = ExpressionGenericMapper <TMMBOMDetailAddNewModel, TMMBOMDetailDbModel> .Trans(item);

                    tMMBOMDetailDbModel.MainId = mainId;
                    tMMBOMDetailDbModel.ItemId = itemToId[item.ItemName];

                    if (!string.IsNullOrWhiteSpace(item.PartName))
                    {
                        tMMBOMDetailDbModel.PartId = partId[item.PartName];
                    }

                    if (!materCache.Any(p1 => p1.MaterialName == item.MaterialName))
                    {
                        throw new Exception($"{item.MaterialName}物料不存在");
                    }

                    deatail.Add(tMMBOMDetailDbModel);
                }

                //插入从表数据
                // var mapDetailModelList = _mapper.Map<List<TMMBOMDetailAddNewModel>, List<TMMBOMDetailDbModel>>(requestObject.PostData.ChildList);
                var result = await currDb.Insertable(deatail).ExecuteCommandAsync() > 0;

                //提交事务
                currDb.CommitTran();
                //返回执行结果
                return(result ? ResponseUtil <bool> .SuccessResult(true) : ResponseUtil <bool> .FailResult(false, "新增数据失败!"));
            }
            catch (Exception ex)
            {
                //回滚事务
                currDb.RollbackTran();
                //返回异常结果
                return(ResponseUtil <bool> .FailResult(false, ex.Message));
            }
        }
        /// <summary>
        /// 导入期初
        /// </summary>
        public async Task <ResponseObject <List <string> > > ImportPrime(RequestPost <ImportPrimeModel> requestObject, CurrentUser currentUser)
        {
            try
            {
                //没有新增数据,返回错误信息
                if (requestObject.PostDataList == null || requestObject.PostDataList.Count() == 0)
                {
                    return(ResponseUtil <List <string> > .FailResult(null, "PostDataList必须有值"));
                }
                //合法性检查

                //仓库
                var Warehouses = _db.Instance.Queryable <TBMWarehouseFileDbModel>().
                                 Where(p => p.CompanyId == currentUser.CompanyID && SqlFunc.IsNull(p.DeleteFlag, false) == false).ToList();

                //单位
                var unitList = _db.Instance.Queryable <TBMDictionaryDbModel, TBMDictionaryTypeDbModel>(
                    (t, t0) => new object[]
                {
                    JoinType.Left, t.TypeId == t0.ID,
                }).Where((t, t0) => SqlFunc.IsNull(t.DeleteFlag, false) == false && t.CompanyId == currentUser.CompanyID &&
                         SqlFunc.IsNull(t0.DeleteFlag, false) == false && t0.TypeName == "计量单位"
                         ).ToList();

                //物料
                var MaterialList = _db.Instance.Queryable <TBMMaterialFileDbModel>().Where(t => SqlFunc.IsNull(t.DeleteFlag, false) == false && t.CompanyId == currentUser.CompanyID).ToList();

                List <TWMPrimeCountDbModel> tWMPrimeCountDbModels = new List <TWMPrimeCountDbModel>();

                var importPrimeModels = requestObject.PostDataList;

                int           index     = 1;
                List <string> errorList = new List <string>();
                List <TWMPrimeCountDbModel> TWMPrimeCountList = new List <TWMPrimeCountDbModel>();
                foreach (var item in importPrimeModels)
                {
                    string msg = string.Empty;
                    TWMPrimeCountDbModel tWMPrimeCountDbModel = new TWMPrimeCountDbModel();
                    var material = MaterialList.Where(p => p.MaterialCode == item.MaterialCode).FirstOrDefault();

                    if (material != null)
                    {
                        tWMPrimeCountDbModel.MaterialId = material.ID;


                        int unitId = material.WarehouseUnitId == null ? material.BaseUnitId : material.WarehouseUnitId.Value;

                        TBMDictionaryDbModel unit = unitList.Where(p => p.ID == unitId).FirstOrDefault();
                        if (unit.DicValue != item.UnitName)
                        {
                            msg += $"库存单位应该为{unit.DicValue}";
                        }
                    }
                    else
                    {
                        msg += $"物料代码{item.MaterialCode}不存在;";
                    }



                    var houses = Warehouses.Where(p => p.WarehouseName == item.WarehouseName).FirstOrDefault();
                    if (houses != null)
                    {
                        tWMPrimeCountDbModel.WarehouseId = houses.ID;
                    }


                    tWMPrimeCountDbModel.PrimeNum  = item.Num;
                    tWMPrimeCountDbModel.CompanyId = currentUser.CompanyID;

                    if (msg != string.Empty)
                    {
                        msg = $"第{index}行数据:{msg}";
                        errorList.Add(msg);
                    }
                    else
                    {
                        TWMPrimeCountList.Add(tWMPrimeCountDbModel);
                    }

                    index++;
                }


                if (errorList.Count() > 0)
                {
                    return(ResponseUtil <List <string> > .FailResult(errorList));
                }

                if (TWMPrimeCountList.Count() > 0)
                {
                    await _db.Instance.Insertable <TWMPrimeCountDbModel>(TWMPrimeCountList).ExecuteCommandAsync();
                }

                return(ResponseUtil <List <string> > .SuccessResult(null));
            }
            catch (Exception ex)
            {
                return(ResponseUtil <List <string> > .FailResult(null, ex.Message));
            }
        }