예제 #1
0
        /// <summary>
        /// 获取出库单所有的信息
        /// </summary>
        /// <param name="iMainId"></param>
        /// <param name="currentUser"></param>
        /// <returns></returns>
        public async Task <ResponseObject <TWMOtherWhSendMainQueryModel> > GetWholeMainData(int iMainId, CurrentUser currentUser)
        {
            var result = await GetMainData(iMainId);

            result.IsShowEdit = (result.AuditStatus != 2 && result.OperatorId == currentUser.UserID) ? true : false;

            for (int i = 0; i < result.ChildList.Count; i++)
            {
                var thisEntity = result.ChildList[i];

                TWMStaQuery tWMStaQuery = new TWMStaQuery();

                tWMStaQuery.MaterialId  = thisEntity.MaterialId;
                tWMStaQuery.WarehouseId = thisEntity.WarehouseId;

                if (result.AuditStatus != 2)
                {
                    tWMStaQuery.OperateType = OperateEnum.Other;
                    tWMStaQuery.EditID      = iMainId;
                }

                var tWMCountModel = _staticInventory.GeTWMCountModel(tWMStaQuery);

                if (result.AuditStatus == 2)
                {
                    thisEntity.AvailableNum = tWMCountModel.AccountNum;
                }
                else
                {
                    thisEntity.AvailableNum = tWMCountModel.AvaiableNum;
                }
            }

            return(ResponseUtil <TWMOtherWhSendMainQueryModel> .SuccessResult(result));
        }
        public ResponseObject <Decimal> Calculate(CalculateQueryModel requestObject)
        {
            CurrentUser userInfo    = TokenManager.GetCurentUserbyToken(Request.Headers);
            TWMStaQuery tWMStaQuery = new Models.TWMStaQuery()
            {
                EditID      = requestObject.ID,
                MaterialId  = requestObject.MaterialId,
                WarehouseId = requestObject.houseID,
                OperateType = OperateEnum.Other
            };
            var result = _staticInventory.GeTWMCountModel(tWMStaQuery);

            return(ResponseUtil <Decimal> .SuccessResult(result.AvaiableNum));
        }
 public ResponseObject <TWMCountModel> GetAmount(RequestPost <TWMStaQuery> requestPost)
 {
     return(ResponseUtil <TWMCountModel> .SuccessResult(_service.GeTWMCountModel(requestPost.PostData)));
 }
        public async Task <ResponseObject <TWMSalesMainQueryModel> > GetWholeMainData(int iMainId, CurrentUser currentUser)
        {
            try
            {
                RequestGet requestGet = new RequestGet()
                {
                    IsPaging        = false,
                    QueryConditions = new List <QueryCondition>()
                    {
                        new QueryCondition()
                        {
                            Column = "Id", Condition = ConditionEnum.Equal, Content = iMainId.ToString()
                        }
                    }
                };

                var allMain = await GetMainListAsync(requestGet, currentUser);


                var mainModel = allMain.Data.FirstOrDefault();



                var detailModelsSql = _db.Instance.Queryable <TWMSalesDetailDbModel, TBMMaterialFileDbModel, TBMDictionaryTypeDbModel,
                                                              TBMDictionaryDbModel, TBMDictionaryDbModel, TBMDictionaryDbModel, TWMSalesMainDbModel, TSSMSalesOrderDetailDbModel
                                                              , TBMPackageDbModel, TMMColorSolutionMainDbModel>(
                    (t, t0, t1, t2, t3, t4, t5, t6, t7, t8) => new object[]
                {
                    JoinType.Left, t.MaterialId == t0.ID,
                    JoinType.Left, t0.MaterialTypeId == t1.ID,
                    JoinType.Left, t0.ColorId == t2.ID,
                    JoinType.Left, t0.BaseUnitId == t3.ID,
                    JoinType.Left, t0.WarehouseUnitId == t4.ID,
                    JoinType.Inner, t.MainId == t5.ID,
                    JoinType.Inner, t.SalesOrderDetailId == t6.ID,
                    JoinType.Left, t0.PackageID == t7.ID,
                    JoinType.Left, t6.ColorSolutionId == t8.ID
                })
                                      .Select((t, t0, t1, t2, t3, t4, t5, t6, t7, t8) => new TWMSalesDetailQueryModel
                {
                    ID                  = t.ID,
                    MainId              = t.MainId,
                    MaterialId          = t.MaterialId,
                    MaterialName        = t0.MaterialName,
                    MaterialCode        = t0.MaterialCode,
                    WarehouseId         = t.WarehouseId,
                    ActualNum           = t.ActualNum,
                    SalesOrderActualNum = t.SalesOrderActualNum,
                    SalesOrderDetailId  = t.SalesOrderDetailId,
                    UnitPrice           = t.UnitPrice,
                    Amount              = t.Amount,
                    MaterialTypeId      = t0.MaterialTypeId,
                    MaterialTypeName    = t1.TypeName,
                    ColorId             = t0.ColorId,
                    ColorName           = t2.DicValue,
                    BaseUnitId          = t0.BaseUnitId,
                    BaseUnitName        = t3.DicValue,
                    WarehouseUnitId     = t0.WarehouseUnitId,
                    WarehouseUnitName   = SqlFunc.IsNullOrEmpty(t4.ID) ? t3.DicValue : t4.DicValue,
                    SalesUnitId         = t0.SalesUnitId,
                    SalesRate           = t0.SalesRate,
                    WarehouseRate       = t0.WarehouseRate,
                    Spec                = t0.Spec,
                    Remark              = t.Remark,
                    SalesNum            = t6.SalesNum,
                    ShouldSaleNum       = t6.TransferNum,
                    PackageCode         = t7.DicCode,
                    PackageName         = t7.DicValue,
                    ColorSolutionName   = t8.SolutionCode
                })
                                      .Where(t => t.MainId == iMainId).OrderBy(t => t.ID);

                var detailModels = await detailModelsSql.ToListAsync();

                //物料
                List <TBMMaterialFileCacheModel> mList = BasicCacheGet.GetMaterial(currentUser);

                detailModels.ForEach(p =>
                {
                    TBMMaterialFileCacheModel me = mList.Where(x => x.ID == p.MaterialId).FirstOrDefault();
                    if (me == null)
                    {
                        throw new Exception($"物料{p.MaterialId},不存在");
                    }

                    TWMStaQuery tWMStaQuery = new TWMStaQuery();
                    tWMStaQuery.MaterialId  = p.MaterialId;
                    tWMStaQuery.WarehouseId = p.WarehouseId;


                    if (mainModel.AuditStatus != 2)
                    {
                        //p.WaitNum = p.WaitNum - p.ActualNum;

                        tWMStaQuery.EditID      = mainModel.ID;
                        tWMStaQuery.OperateType = OperateEnum.Sale;
                        // p.ShouldNum = p.SalesOrderActualNum + p.ActualNum;
                        p.ShouldSaleNum = p.ShouldSaleNum + p.SalesOrderActualNum;
                    }


                    p.SalesNumOnInventory = GetInveroryFromSaleNum(me, p.SalesNum);

                    p.AvailableNum = _staticInventory.GeTWMCountModel(tWMStaQuery).AvaiableNum;
                });

                mainModel.ChildList = detailModels;
                return(ResponseUtil <TWMSalesMainQueryModel> .SuccessResult(mainModel));
            }
            catch (Exception ex)
            {
                return(ResponseUtil <TWMSalesMainQueryModel> .FailResult(null));
            }
        }
예제 #5
0
        public async Task <ResponseObject <TWMProductionMainQueryModel> > GetWholeMainData(int iMainId, CurrentUser currentUser)
        {
            try
            {
                RequestGet requestGet = new RequestGet()
                {
                    IsPaging        = false,
                    QueryConditions = new List <QueryCondition>()
                    {
                        new QueryCondition()
                        {
                            Column = "Id", Condition = ConditionEnum.Equal, Content = iMainId.ToString()
                        }
                    }
                };

                var allMain = await GetMainListAsync(requestGet, currentUser);


                var mainModel = allMain.Data.FirstOrDefault();

                var materList = BasicCacheGet.GetMaterial(currentUser);
                var dicList   = BasicCacheGet.GetDic(currentUser);

                var detailModels = await _db.Instance.Queryable <TWMProductionDetailDbModel, TWMProductionMainDbModel,
                                                                 TBMMaterialFileDbModel, TMMPickApplyMainDbModel, TMMPickApplyDetailDbModel>(
                    (t, t0, t1, t2, t3) => new object[] {
                    JoinType.Inner, t.MainId == t0.ID,
                    JoinType.Inner, t.MaterialId == t1.ID,
                    JoinType.Inner, t0.SourceId == t2.ID,
                    JoinType.Inner, t.PickApplyDetailId == t3.ID
                }
                    ).Select((t, t0, t1, t2, t3) => new TWMProductionDetailQueryModel
                {
                    ID                = t.ID,
                    MainId            = t.MainId,
                    MaterialId        = t.MaterialId,
                    MaterialName      = t1.MaterialName,
                    MaterialCode      = t1.MaterialCode,
                    WarehouseId       = t.WarehouseId,
                    ActualNum         = t.ActualNum,
                    PickActualNum     = t.PickActualNum,
                    PickApplyDetailId = t.PickApplyDetailId,
                    UnitPrice         = t.UnitPrice,
                    Amount            = t.Amount,
                    MaterialTypeId    = t1.MaterialTypeId,
                    //MaterialTypeName = t1.TypeName,
                    ColorId = t1.ColorId,
                    //ColorName = t2.DicValue,
                    BaseUnitId = t1.BaseUnitId,
                    //BaseUnitName = t3.DicValue,
                    WarehouseUnitId = t1.WarehouseUnitId,
                    //WarehouseUnitName = t4.DicValue,
                    WarehouseRate = t1.WarehouseRate,
                    ProduceRate   = t1.ProduceRate,
                    ProduceUnitId = t1.ProduceUnitId,
                    //ProduceUnitName = t5.DicValue,
                    Spec     = t1.Spec,
                    Remark   = t.Remark,
                    TransNum = t3.TransNum,
                })
                                   .Where(t => t.MainId == iMainId)
                                   .ToListAsync();


                detailModels.ForEach((x) => {
                    var thisMaterial = materList.Where(p => p.ID == x.MaterialId).FirstOrDefault();

                    if (mainModel.AuditStatus != 2)
                    {
                        x.TransNum = x.TransNum + x.PickActualNum;
                    }

                    x.MaterialTypeName  = thisMaterial.MaterialTypeName;
                    x.ColorName         = thisMaterial.ColorName;
                    x.BaseUnitName      = thisMaterial.BaseUnitName;
                    x.WarehouseUnitName = thisMaterial.WarehouseUnitName;
                    x.ProduceUnitName   = thisMaterial.ProduceUnitName;


                    TWMStaQuery tWMStaQuery = new TWMStaQuery();
                    tWMStaQuery.MaterialId  = x.MaterialId;
                    tWMStaQuery.WarehouseId = x.WarehouseId;

                    if (mainModel.AuditStatus != 2)
                    {
                        tWMStaQuery.EditID      = mainModel.ID;
                        tWMStaQuery.OperateType = OperateEnum.Product;
                    }

                    x.AvailableNum = _staticInventory.GeTWMCountModel(tWMStaQuery).AvaiableNum;
                });


                mainModel.ChildList = detailModels;
                return(ResponseUtil <TWMProductionMainQueryModel> .SuccessResult(mainModel));
            }
            catch (Exception ex)
            {
                return(ResponseUtil <TWMProductionMainQueryModel> .FailResult(null));
            }
        }