/// <summary> /// 修改T_Tenants数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,修改操作结果</param> /// <returns></returns> public async Task <ResponseObject <TTenantsEditModel, bool> > ModifyAsync(RequestObject <TTenantsEditModel> requestObject) { try { //执行结果 var result = false; //没有修改信息,返回错误信息 if (requestObject.PostDataList == null && requestObject.PostData == null) { return(ResponseUtil <TTenantsEditModel, bool> .FailResult(requestObject, false, "PostData,PostDataList不能都为null")); } //批量更新优先级高于单记录更新 if (requestObject.PostDataList != null && requestObject.PostDataList.Count > 0) { //批量更新 var editList = _mapper.Map <List <TTenantsEditModel>, List <TTenantsModel> >(requestObject.PostDataList); result = await _db.Instance.Updateable(editList).UpdateColumns(p => new { // p.TenantName, 需要修改从表的企业名称 p.TenantShortName, p.TenantEngName, p.Area, p.Industry, p.TenantScale, p.RegisteredCapital, p.MainBusiness, p.FixedTele, p.Address, p.TenantLogo }).ExecuteCommandAsync() > 0; } else { var edit = _mapper.Map <TTenantsModel>(requestObject.PostData); //单记录更新 result = await _db.Instance.Updateable(edit).UpdateColumns(p => new { // p.TenantName, 需要修改从表的企业名称 p.TenantShortName, p.TenantEngName, p.Area, p.Industry, p.TenantScale, p.RegisteredCapital, p.MainBusiness, p.FixedTele, p.Address, p.TenantLogo }).ExecuteCommandAsync() > 0; } //返回执行结果 if (result) { return(ResponseUtil <TTenantsEditModel, bool> .SuccessResult(requestObject, true)); } return(ResponseUtil <TTenantsEditModel, bool> .FailResult(requestObject, false, "修改数据失败!")); } catch (Exception ex) { //返回异常结果 return(ResponseUtil <TTenantsEditModel, bool> .FailResult(requestObject, false, ex.Message)); } }
/// <summary> /// 获取T_SM_CompanyApply数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,查询操作结果</param> /// <returns></returns> public async Task <ResponseObject <TSMCompanyApplyQueryModel, List <TSMCompanyApplyQueryModel> > > GetAsync(RequestObject <TSMCompanyApplyQueryModel> requestObject, CurrentUser currentUser) { try { List <TSMCompanyApplyQueryModel> queryData = null; //查询结果集对象 RefAsync <int> totalNumber = -1; //总记录数 var query = _db.Instance.Queryable <TSMCompanyApplyDbModel, TSMUserAccountDbModel, TSMUserInfoDbModel>((t, t1, t2) => new object[] { JoinType.Inner, t.AccountId == t1.ID, JoinType.Inner, t1.UserInfoId == t2.ID }).Where((t, t1, t2) => t.CompanyId == currentUser.CompanyID); var company = _db.Instance.Queryable <TSMCompanyDbModel>().Where(p => p.ID == currentUser.CompanyID).First(); //查询条件 if (requestObject.QueryConditions != null && requestObject.QueryConditions.Count > 0) { List <IConditionalModel> conditionals = SqlSugarUtil.GetConditionalModels(requestObject.QueryConditions); foreach (ConditionalModel item in conditionals) { if (item.FieldName.ToLower() == "telaccount") { item.FieldName = $"t1.{item.FieldName}"; } else { if (item.ConditionalType == ConditionalType.LessThanOrEqual) { item.FieldValue = Convert.ToDateTime(item.FieldValue).AddDays(1).ToString("yyyyMMdd"); } item.FieldName = $"t.{item.FieldName}"; } } query.Where(conditionals); } //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { requestObject.OrderByConditions.ForEach(p => query.OrderBy($"{p.Column} {p.Condition}")); } //执行查询 if (requestObject.IsPaging) { queryData = await query.Select( (t, t1, t2) => new TSMCompanyApplyQueryModel { Id = t.Id, AccountId = t.AccountId, CompanyId = t.CompanyId, ApplyTime = t.ApplyTime, ApplyStatus = t.ApplyStatus, AccountName = t1.AccountName, TelAccount = t1.TelAccount, EmailAccount = t1.EmailAccount, CompanyName = company.CompanyName }) .ToPageListAsync(requestObject.PageIndex, requestObject.PageSize, totalNumber); } else { queryData = await query.Select( (t, t1, t2) => new TSMCompanyApplyQueryModel { Id = t.Id, AccountId = t.AccountId, CompanyId = t.CompanyId, ApplyTime = t.ApplyTime, ApplyStatus = t.ApplyStatus, AccountName = t1.AccountName, TelAccount = t1.TelAccount, EmailAccount = t1.EmailAccount, CompanyName = company.CompanyName }) .ToListAsync(); } //返回执行结果 return(ResponseUtil <TSMCompanyApplyQueryModel, List <TSMCompanyApplyQueryModel> > .SuccessResult(requestObject, queryData, totalNumber)); } catch (Exception ex) { //返回查询异常结果 return(ResponseUtil <TSMCompanyApplyQueryModel, List <TSMCompanyApplyQueryModel> > .FailResult(requestObject, null, ex.Message)); } }
/// <summary> /// 修改T_WM_OtherWhMain数据 /// </summary> /// <param name="requestObject">Put请求参数</param> /// <returns>返回响应结果对象,包括响应代码,修改操作结果</returns> public async Task <ResponseObject <TWMOtherWhMainEditModel, bool> > PutAsync(RequestObject <TWMOtherWhMainEditModel> requestObject) { var currDb = _db.Instance;//事务需要使用同一个 SqlSugarClient对象实例 try { if (requestObject.PostData == null) { return(ResponseUtil <TWMOtherWhMainEditModel, bool> .FailResult(requestObject, false, "PostData不能为null")); } if (requestObject.PostData.ChildList == null || requestObject.PostData.ChildList.Count < 1) { return(ResponseUtil <TWMOtherWhMainEditModel, bool> .FailResult(requestObject, false, "PostData.ChildList至少包含一条数据")); } //开启事务 currDb.BeginTran(); //修改主表信息 var mainModel = _mapper.Map <TWMOtherWhMainDbModel>(requestObject.PostData); mainModel.Number = requestObject.PostData.ChildList.Sum(p => p.ActualNumber); mainModel.Amount = requestObject.PostData.ChildList.Sum(p => p.Amount); var mainFlag = await currDb.Updateable(mainModel) .UpdateColumns(p => new { p.WarehousingType, p.WarehousingDate, p.Number, p.Amount, p.ReceiptId }) .ExecuteCommandAsync() > 0; /* * 修改明细逻辑 * 1.根据主单ID查询现有明细数据 * 2.PostData.ChildList中明细ID <= 0的新增 * 3.PostData.ChildList中明细ID > 0的修改 * 4.删除不在PostData.CihldList中的数据 */ var detailFlag = true; var detailModels = _mapper.Map <List <TWMOtherWhDetailEditModel>, List <TWMOtherWhDetailDbModel> >(requestObject.PostData.ChildList); 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 <TWMOtherWhDetailDbModel>() .Where(p => !detailIds.Contains(p.ID) && p.MainId == mainModel.ID) .ExecuteCommand() >= 0; } //提交事务 currDb.CommitTran(); //返回执行结果 return(mainFlag && detailFlag ? ResponseUtil <TWMOtherWhMainEditModel, bool> .SuccessResult(requestObject, true) : ResponseUtil <TWMOtherWhMainEditModel, bool> .FailResult(requestObject, false, "修改数据失败!")); } catch (Exception ex) { //回滚事务 currDb.RollbackTran(); //返回异常结果 return(ResponseUtil <TWMOtherWhMainEditModel, bool> .FailResult(requestObject, false, ex.Message)); } }
/// <summary> /// 新增T_WM_SalesMain数据 /// </summary> /// <param name="requestObject">Post请求参数</param> /// <returns>返回响应结果对象,包括响应代码,新增操作结果</returns> public async Task <ResponseObject <TWMSalesMainQueryModel> > PostAsync(RequestPost <TWMSalesMainAddModel> requestObject, CurrentUser currentUser) { var currDb = _db.Instance;//事务需要使用同一个 SqlSugarClient对象实例 try { //没有新增数据,返回错误信息 if (requestObject.PostData == null) { return(ResponseUtil <TWMSalesMainQueryModel> .FailResult(null, "PostData不能为null")); } //开启事务 currDb.BeginTran(); //插入主表数据 var mapMainModel = _mapper.Map <TWMSalesMainDbModel>(requestObject.PostData); mapMainModel.CompanyId = currentUser.CompanyID; mapMainModel.OperatorId = currentUser.UserID; mapMainModel.Number = requestObject.PostData.ChildList.Sum(p => p.ActualNum); mapMainModel.Amount = requestObject.PostData.ChildList.Sum(p => p.Amount); mapMainModel.AuditStatus = 0; var mainId = await currDb.Insertable(mapMainModel).ExecuteReturnIdentityAsync(); //更新明细表外键ID值 requestObject.PostData.ChildList.ForEach(p => p.MainId = mainId); //插入从表数据 var mapDetailModelList = _mapper.Map <List <TWMSalesDetailAddModel>, List <TWMSalesDetailDbModel> >(requestObject.PostData.ChildList); #region 检查出库是否超过可用量 int?iMainId = mainId; var materList = BasicCacheGet.GetMaterial(currentUser); var details = requestObject.PostData.ChildList.GroupBy(p => new { p.MaterialId, p.WarehouseId }).Select(p => new TWMOtherCountDbModel { MaterialId = p.Key.MaterialId, WarehouseId = p.Key.WarehouseId, WhSendNumber = p.Sum(p1 => p1.ActualNum) }).ToList(); foreach (var item in details) { TWMStaQuery tWMStaQuery = new TWMStaQuery(); tWMStaQuery.EditID = iMainId; tWMStaQuery.MaterialId = item.MaterialId; tWMStaQuery.WarehouseId = item.WarehouseId; decimal AvaiableNum = _staticInventory.GeTWMCountModel(tWMStaQuery).AvaiableNum; if (AvaiableNum < 0) { var me = materList.Where(p => p.ID == item.MaterialId).FirstOrDefault(); throw new Exception($"物料代码:{me.MaterialCode},物料名称{me.MaterialName}的物料可用量不足"); } if (item.WhSendNumber > AvaiableNum) { var me = materList.Where(p => p.ID == item.MaterialId).FirstOrDefault(); throw new Exception($"物料代码:{me.MaterialCode},物料名称{me.MaterialName}的物料出库数量不能大于{AvaiableNum}"); } } #endregion #region 处理销售单的可转单数量 var listItem = _db.Instance.Queryable <TSSMSalesOrderDetailDbModel>().Where(t => t.MainId == mapMainModel.SourceId).ToList();//来源单据 List <TSSMSalesOrderDetailDbModel> toEdit = new List <TSSMSalesOrderDetailDbModel>(); foreach (var item in mapDetailModelList) { var procudeMaterial = listItem.Where(p => p.ID == item.SalesOrderDetailId).FirstOrDefault(); //销售合同明细 var me = materList.Where(p => p.ID == item.MaterialId).FirstOrDefault(); //物料 decimal proNum = UnitChange.TranserUnit(me, UnitType.Warehouse, UnitType.Sales, item.ActualNum); decimal wareTransNum = UnitChange.TranserUnit(me, UnitType.Sales, UnitType.Warehouse, procudeMaterial.TransferNum);//可转的数量(仓库单位) if (item.ActualNum > wareTransNum) { throw new Exception($"物料代码{me.MaterialCode} 出库数量不能大于{wareTransNum }"); } else if (item.ActualNum == wareTransNum) { item.SalesOrderActualNum = procudeMaterial.TransferNum; procudeMaterial.TransferNum = 0; } else { if (proNum > procudeMaterial.TransferNum) { item.SalesOrderActualNum = procudeMaterial.TransferNum; procudeMaterial.TransferNum = 0; } else { item.SalesOrderActualNum = proNum; procudeMaterial.TransferNum = procudeMaterial.TransferNum - proNum; } } toEdit.Add(procudeMaterial); //var m = listItem.Where(p => p.MaterialId == item.MaterialId).FirstOrDefault(); //if (m != null) //{ // if (m.TransferNum < proNum) // { // throw new Exception($"物料代码{me.MaterialCode} 出库数量不能大于{proNum }"); // } // m.TransferNum = m.TransferNum - proNum; // toEdit.Add(m); //} } if (toEdit.Count() > 0) { _db.Instance.Updateable(toEdit).ExecuteCommand(); } if (!_db.Instance.Queryable <TSSMSalesOrderDetailDbModel>().Any(p => p.TransferNum > 0 && p.MainId == mapMainModel.SourceId)) { _db.Instance.Updateable <TSSMSalesOrderMainDbModel>().Where(p => p.ID == mapMainModel.SourceId).SetColumns(p => p.TransferStatus == false).ExecuteCommand(); } #endregion var result = await currDb.Insertable(mapDetailModelList).ExecuteCommandAsync() > 0; //提交事务 currDb.CommitTran(); //返回执行结果 var resultTemp = await GetWholeMainData(mainId, currentUser); return(ResponseUtil <TWMSalesMainQueryModel> .SuccessResult(resultTemp.Data)); } catch (Exception ex) { //回滚事务 currDb.RollbackTran(); //返回异常结果 return(ResponseUtil <TWMSalesMainQueryModel> .FailResult(null, ex.Message)); } }
/// <summary> /// 获取T_WM_SalesMain主表数据数据 /// </summary> /// <param name="requestObject">Get请求参数</param> /// <returns>返回响应结果对象,包括响应代码,查询操作结果</returns> public async Task <ResponseObject <List <TWMSalesMainQueryModel> > > GetMainListAsync(RequestGet requestObject, CurrentUser currentUser) { try { List <TWMSalesMainQueryModel> queryData = null; //查询结果集对象 RefAsync <int> totalNumber = -1; //总记录数 var query = _db.Instance.Queryable <TWMSalesMainDbModel, TSSMSalesOrderMainDbModel, TBMCustomerFileDbModel, TSMUserAccountDbModel, TSMUserAccountDbModel, TSMUserAccountDbModel, TSMUserAccountDbModel>((t, t1, t2, t3, t4, t5, t6) => new object[] { JoinType.Inner, t.SourceId == t1.ID, JoinType.Inner, t1.CustomerId == t2.ID, JoinType.Left, t.OperatorId == t3.ID, JoinType.Left, t.SendId == t4.ID, JoinType.Left, t.WhAdminId == t5.ID, JoinType.Left, t.AuditId == t6.ID }).Where((t, t1, t2, t3, t4, t5, t6) => t.DeleteFlag == false && t.CompanyId == currentUser.CompanyID); List <string> cQuery = new List <string>() { "customerid" }; //查询条件 if (requestObject.QueryConditions != null && requestObject.QueryConditions.Count > 0) { var mconditionals = requestObject.QueryConditions.Where(p => !cQuery.Contains(p.Column.ToLower())).ToList(); if (mconditionals.Count() > 0) { List <IConditionalModel> conditionals = SqlSugarUtil.GetConditionalModels(mconditionals); foreach (ConditionalModel item in conditionals) { item.FieldName = $"t.{item.FieldName}"; } query.Where(conditionals); } var mconditionals2 = requestObject.QueryConditions.Where(p => cQuery.Contains(p.Column.ToLower())).ToList(); if (mconditionals2.Count() > 0) { List <IConditionalModel> conditionals = SqlSugarUtil.GetConditionalModels(mconditionals2); foreach (ConditionalModel item in conditionals) { item.FieldName = $"t1.{item.FieldName}"; } query.Where(conditionals); } } //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { foreach (var item in requestObject.OrderByConditions) { var exp = SqlSugarUtil.GetOrderByLambda <TWMSalesMainDbModel>(item.Column); if (exp == null) { continue; } if (item.Condition.ToLower() != "asc" && item.Condition.ToLower() != "desc") { continue; } query.OrderBy($"{item.Column} {item.Condition}"); } } //执行查询 if (requestObject.IsPaging) { queryData = await query.Select((t, t1, t2, t3, t4, t5, t6) => new TWMSalesMainQueryModel { ID = t.ID, WhSendType = t.WhSendType, WhSendDate = t.WhSendDate, WhSendOrder = t.WhSendOrder, AuditStatus = t.AuditStatus, CustomerName = t2.CustomerName, CustomerId = t1.CustomerId, OperatorId = t.OperatorId, OperatorName = t3.AccountName, SendId = t.SendId, SendName = t4.AccountName, WhAdminId = t.WhAdminId, WhAdminName = t5.AccountName, AuditId = t.AuditId, AuditName = t6.AccountName, AuditTime = t.AuditTime, DeleteFlag = t.DeleteFlag, SourceId = t.SourceId, Number = t.Number, Amount = t.Amount, ReceiptAddress = t.ReceiptAddress, SaleOrder = t1.OrderNo, IsShowEdit = (t.AuditStatus != 2 && t.OperatorId == currentUser.UserID) ? true : false }).ToPageListAsync(requestObject.PageIndex, requestObject.PageSize, totalNumber); } else { queryData = await query.Select((t, t1, t2, t3, t4, t5, t6) => new TWMSalesMainQueryModel { ID = t.ID, WhSendType = t.WhSendType, WhSendDate = t.WhSendDate, WhSendOrder = t.WhSendOrder, AuditStatus = t.AuditStatus, CustomerName = t2.CustomerName, CustomerId = t1.CustomerId, OperatorId = t.OperatorId, OperatorName = t3.AccountName, SendId = t.SendId, SendName = t4.AccountName, WhAdminId = t.WhAdminId, WhAdminName = t5.AccountName, AuditId = t.AuditId, AuditName = t6.AccountName, AuditTime = t.AuditTime, DeleteFlag = t.DeleteFlag, SourceId = t.SourceId, Number = t.Number, Amount = t.Amount, ReceiptAddress = t.ReceiptAddress, SaleOrder = t1.OrderNo, IsShowEdit = (t.AuditStatus != 2 && t.OperatorId == currentUser.UserID) ? true : false }).ToListAsync(); } //返回执行结果 return(ResponseUtil <List <TWMSalesMainQueryModel> > .SuccessResult(queryData, totalNumber)); } catch (Exception ex) { //返回查询异常结果 return(ResponseUtil <List <TWMSalesMainQueryModel> > .FailResult(null, ex.Message)); } }
/// <summary> /// 获取T_MM_ColorItem数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,查询操作结果</param> /// <param name="currentUser">当前操作用户</param> /// <returns></returns> public async Task <ResponseObject <List <TMMColorItemQueryModel> > > GetAsync(RequestGet requestObject, CurrentUser currentUser) { try { List <TMMColorItemQueryModel> queryData = null; //查询结果集对象 RefAsync <int> totalNumber = -1; //总记录数 var query = _db.Instance.Queryable <TMMColorItemDbModel, TBMPackageDbModel, TBMDictionaryDbModel>( (t, t0, t1) => new object[] { JoinType.Inner, t.PackageId == t0.ID, JoinType.Left, t.ItemId == t1.ID } ).Where((t, t0, t1) => t0.CompanyId == currentUser.CompanyID); //查询条件 if (requestObject.QueryConditions != null && requestObject.QueryConditions.Count > 0) { var conditionals = SqlSugarUtil.GetConditionalModels(requestObject.QueryConditions); query.Where(conditionals); } //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { foreach (var item in requestObject.OrderByConditions) { var exp = SqlSugarUtil.GetOrderByLambda <TMMColorItemDbModel>(item.Column); if (exp == null) { continue; } if (item.Condition.ToLower() != "asc" && item.Condition.ToLower() != "desc") { continue; } query.OrderBy($"{item.Column} {item.Condition}"); } } //执行查询 if (requestObject.IsPaging) { queryData = await query.Select( (t, t0, t1) => new TMMColorItemQueryModel { ID = t.ID, PackageId = t.PackageId, PackageCode = t0.DicCode, PackageName = t0.DicValue, ItemId = t.ItemId, ItemName = t1.DicValue }) .ToPageListAsync(requestObject.PageIndex, requestObject.PageSize, totalNumber); } else { queryData = await query.Select( (t, t0, t1) => new TMMColorItemQueryModel { ID = t.ID, PackageId = t.PackageId, PackageCode = t0.DicCode, PackageName = t0.DicValue, ItemId = t.ItemId, ItemName = t1.DicValue }) .ToListAsync(); } //返回执行结果 return(ResponseUtil <List <TMMColorItemQueryModel> > .SuccessResult(queryData, totalNumber)); } catch (Exception ex) { //返回查询异常结果 return(ResponseUtil <List <TMMColorItemQueryModel> > .FailResult(null, ex.Message)); } }
/// <summary> /// 获取T_BM_WarehouseFile数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,查询操作结果</param> /// <returns></returns> public async Task <ResponseObject <TBMWarehouseFileQueryModel, List <TBMWarehouseFileQueryModel> > > GetAsync(RequestObject <TBMWarehouseFileQueryModel> requestObject, int UserID) { try { var curentDB = _db.Instance; var smUserInfo = SMCurentUserManager.GetCurentUserID(UserID, curentDB); List <TBMWarehouseFileQueryModel> queryData = null; //查询结果集对象 RefAsync <int> totalNumber = -1; //总记录数 var query = curentDB.Queryable <TBMWarehouseFileDbModel, TSMUserAccountDbModel, TSMUserInfoDbModel>( (t, t0, t1) => new object[] { JoinType.Left, t.PrincipalId == t0.ID, JoinType.Left, t0.UserInfoId == t1.ID }).Where((t, t0, t1) => SqlFunc.IsNull(t.DeleteFlag, false) != true && t.CompanyId == smUserInfo.CompanyId); //查询条件 if (requestObject.QueryConditions != null && requestObject.QueryConditions.Count > 0) { var conditionals = SqlSugarUtil.GetConditionalModels(requestObject.QueryConditions); foreach (ConditionalModel item in conditionals) { item.FieldName = $"t.{item.FieldName}"; } query.Where(conditionals); } //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { foreach (var item in requestObject.OrderByConditions) { var exp = SqlSugarUtil.GetOrderByLambda <TBMWarehouseFileDbModel>(item.Column); if (exp == null) { continue; } if (item.Condition.ToLower() != "asc" && item.Condition.ToLower() != "desc") { continue; } query.OrderBy($"{item.Column} {item.Condition}"); } } //执行查询 if (requestObject.IsPaging) { queryData = await query.Select((t, t0, t1) => new TBMWarehouseFileQueryModel { ID = t.ID, Code = t.Code, WarehouseName = t.WarehouseName, WarehouseAddress = t.WarehouseAddress, PrincipalId = t.PrincipalId, RealName = t.PrincipalId == null ? "" : t0.AccountName, Status = t.Status, Remark = t.Remark, CompanyId = t.CompanyId, DeleteFlag = t.DeleteFlag, }) .ToPageListAsync(requestObject.PageIndex, requestObject.PageSize, totalNumber); } else { queryData = await query.Select((t, t0, t1) => new TBMWarehouseFileQueryModel { ID = t.ID, Code = t.Code, WarehouseName = t.WarehouseName, WarehouseAddress = t.WarehouseAddress, PrincipalId = t.PrincipalId, RealName = t.PrincipalId == null ? "" : t0.AccountName, Status = t.Status, Remark = t.Remark, CompanyId = t.CompanyId, DeleteFlag = t.DeleteFlag, }) .ToListAsync(); } //返回执行结果 return(ResponseUtil <TBMWarehouseFileQueryModel, List <TBMWarehouseFileQueryModel> > .SuccessResult(requestObject, queryData, totalNumber)); } catch (Exception ex) { //返回查询异常结果 return(ResponseUtil <TBMWarehouseFileQueryModel, List <TBMWarehouseFileQueryModel> > .FailResult(requestObject, null, ex.Message)); } }
/// <summary> /// 获取T_PM_Menus数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,查询操作结果</param> /// <returns></returns> public async Task <ResponseObject <TPMMenusQueryModel, List <TPMMenusQueryModel> > > GetAsync(RequestObject <TPMMenusQueryModel> requestObject) { try { List <TPMMenusQueryModel> queryData = null; //查询结果集对象 RefAsync <int> totalNumber = -1; //总记录数 var query = _db.Instance.Queryable <TPMMenusDbModel>(); //查询条件 if (requestObject.QueryConditions != null && requestObject.QueryConditions.Count > 0) { var expressionList = SqlSugarUtil.GetQueryExpressions(requestObject.QueryConditions); expressionList.ForEach(p => query.Where(p)); } //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { foreach (var item in requestObject.OrderByConditions) { var exp = SqlSugarUtil.GetOrderByLambda <TPMMenusDbModel>(item.Column); if (exp == null) { continue; } if (item.Condition.ToLower() != "asc" && item.Condition.ToLower() != "desc") { continue; } query.OrderBy($"{item.Column} {item.Condition}"); } } //执行查询 if (requestObject.IsPaging) { queryData = await query.Select( (t) => new TPMMenusQueryModel { Id = t.Id, ParentID = t.ParentID, MenuName = t.MenuName, MenuPath = t.MenuPath, Seq = t.Seq, IsMenu = t.IsMenu, MenuAnotherName = t.MenuAnotherName, Status = t.Status, MenuIcon = t.MenuIcon, MenuDesc = t.MenuDesc, CreateTime = t.CreateTime, CreateId = t.CreateId, }) .ToPageListAsync(requestObject.PageIndex, requestObject.PageSize, totalNumber); } else { queryData = await query.Select( (t) => new TPMMenusQueryModel { Id = t.Id, ParentID = t.ParentID, MenuName = t.MenuName, MenuPath = t.MenuPath, Seq = t.Seq, IsMenu = t.IsMenu, MenuAnotherName = t.MenuAnotherName, Status = t.Status, MenuIcon = t.MenuIcon, MenuDesc = t.MenuDesc, CreateTime = t.CreateTime, CreateId = t.CreateId, }) .ToListAsync(); } //返回执行结果 return(ResponseUtil <TPMMenusQueryModel, List <TPMMenusQueryModel> > .SuccessResult(requestObject, queryData, totalNumber)); } catch (Exception ex) { //返回查询异常结果 return(ResponseUtil <TPMMenusQueryModel, List <TPMMenusQueryModel> > .FailResult(requestObject, null, ex.Message)); } }
/// <summary> /// 导出期初模板 /// </summary> /// <param name="currentUser"></param> /// <returns></returns> public async Task <ResponseObject <ExportOpeningTemplateModel> > ExportOpeningTemplate(CurrentUser currentUser) { string error = string.Empty; int index = 0; String warehouseName = ""; var warehouseDic = await _db.Instance.Queryable <TBMWarehouseFileDbModel>().Where(t => SqlFunc.IsNull(t.DeleteFlag, false) == false && t.CompanyId == currentUser.CompanyID).ToListAsync(); warehouseDic.ForEach(x => { warehouseName += "," + x.WarehouseName; }); //单位 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 == "计量单位" ).Select((t, t0) => t).ToList(); ExportOpeningTemplateModel result = new ExportOpeningTemplateModel(); var materialFileQuery = await _db.Instance.Queryable <TBMMaterialFileDbModel>().Where(p => p.CompanyId == currentUser.CompanyID && SqlFunc.IsNull(p.DeleteFlag, false) == false) .Select(p => new MaterialFileTemplate { BasicUnitId = p.BaseUnitId, WareUnitId = p.WarehouseUnitId, MaterialCode = p.MaterialCode, MaterialName = p.MaterialName, Spec = p.Spec }).ToListAsync(); materialFileQuery.ForEach((x) => { index++; if (x.WareUnitId != null) { var unitDic = unitList.Where(p => p.ID == x.WareUnitId).FirstOrDefault(); if (unitDic == null) { error += $"物料:{x.MaterialName},代码{x.MaterialCode}的 仓库单位已经被删除,请重新设置{System.Environment.NewLine}"; } else { x.WareUnitName = unitDic.DicValue; } } else { var unitDic = unitList.Where(p => p.ID == x.BasicUnitId).FirstOrDefault(); if (unitDic == null) { error += ($"物料:{x.MaterialName},代码{x.MaterialCode}的 基本单位已经被删除,请重新设置{System.Environment.NewLine}"); } else { x.WareUnitName = unitDic.DicValue; } } }); if (error != string.Empty) { throw new Exception(error); } result.List = materialFileQuery; result.WarehouseName = warehouseName.Substring(1).Split("1"); return(ResponseUtil <ExportOpeningTemplateModel> .SuccessResult(result)); }
/// <summary> /// 上移下移 /// </summary> /// <param name="requestObject"></param> /// <returns></returns> public async Task <ResponseObject <TPMMenusMoveModel, bool> > MovePostion(RequestObject <TPMMenusMoveModel> requestObject) { try { //执行结果 var result = true; _db.Instance.BeginTran(); //没有修改信息,返回错误信息 if (requestObject.PostDataList == null && requestObject.PostData == null) { return(ResponseUtil <TPMMenusMoveModel, bool> .FailResult(requestObject, false, "PostData,PostDataList不能都为null")); } //批量更新优先级高于单记录更新 if (requestObject.PostDataList != null && requestObject.PostDataList.Count > 0) { //批量更新 //var editList = _mapper.Map<List<TPMMenusEditModel>, List<TPMMenusDbModel>>(requestObject.PostDataList); //result = await _db.Instance.Updateable(editList).ExecuteCommandAsync() > 0; } else { //单记录更新 //var editModel = _mapper.Map<TPMMenusDbModel>(requestObject.PostData); //result = await _db.Instance.Updateable(editModel).ExecuteCommandAsync() > 0; var thisMenu = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.Id == requestObject.PostData.Id).First(); if (thisMenu != null) { if (requestObject.PostData.Type == 0) //上移 { var nodes = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.ParentID == thisMenu.ParentID).OrderBy(p => p.Seq).ToList(); var tempNodes = nodes.Where(p => p.Id == thisMenu.Id).FirstOrDefault(); int index = nodes.IndexOf(tempNodes); if (index != 0) { for (var i = 0; i < nodes.Count; i++) { if (i + 1 == index)//前一位置 { nodes[i].Seq = index; } else if (i == index)//当前位置 { nodes[i].Seq = i - 1; } else { nodes[i].Seq = i; } } await _db.Instance.Updateable(nodes).UpdateColumns(p => new { p.Seq }).ExecuteCommandAsync(); } } else if (requestObject.PostData.Type == 1)//下移 { var nodes = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.ParentID == thisMenu.ParentID).OrderBy(p => p.Seq).ToList(); var tempNodes = nodes.Where(p => p.Id == thisMenu.Id).FirstOrDefault(); int index = nodes.IndexOf(tempNodes); if (index != nodes.Count) { for (var i = nodes.Count - 1; i > -1; i--) { if (i - 1 == index)//下一个位置 { nodes[i].Seq = index; } else if (i == index)//当前位置 { nodes[i].Seq = i + 1; } else { nodes[i].Seq = i; } } await _db.Instance.Updateable(nodes).UpdateColumns(p => new { p.Seq }).ExecuteCommandAsync(); } } } } _db.Instance.CommitTran(); //返回执行结果 if (result) { return(ResponseUtil <TPMMenusMoveModel, bool> .SuccessResult(requestObject, true)); } return(ResponseUtil <TPMMenusMoveModel, bool> .FailResult(requestObject, false, "修改数据失败!")); } catch (Exception ex) { _db.Instance.RollbackTran(); //返回异常结果 return(ResponseUtil <TPMMenusMoveModel, bool> .FailResult(requestObject, false, ex.Message)); } }
/// <summary> /// 删除T_PM_Menus数据 /// </summary> /// <param name="requestObject"></param> /// <param name="UserID"></param> /// <returns></returns> public async Task <ResponseObject <TPMenusDeleteAllModel, bool> > DeleteAsync(RequestObject <TPMenusDeleteAllModel> requestObject, int UserID) { try { //执行结果 var result = false; //没有删除数据,返回错误信息 if (requestObject.PostDataList == null && requestObject.PostData == null) { return(ResponseUtil <TPMenusDeleteAllModel, bool> .FailResult(requestObject, false, "PostData,PostDataList不能都为null")); } //批量删除的优先级高于单记录删除 if (requestObject.PostDataList != null && requestObject.PostDataList.Count > 0) { if (requestObject.PostDataList.Select(p => p.PassWord).Count() != 1) { return(ResponseUtil <TPMenusDeleteAllModel, bool> .FailResult(requestObject, false, "密码无效")); } else { //验证密码 bool checkP = _tUsersService.CheckPassword(UserID, requestObject.PostDataList.Select(p => p.PassWord).FirstOrDefault()); if (checkP != true) { return(ResponseUtil <TPMenusDeleteAllModel, bool> .FailResult(requestObject, false, "密码无效")); } } var ids = requestObject.PostDataList.Select(p => p.Id).ToList(); //批量删除 var delList = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => ids.Contains(p.Id)).ToList(); List <TPMMenusDbModel> toDelList = new List <TPMMenusDbModel>(); foreach (var item in delList) { var toDel = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.LogicPath.StartsWith(item.LogicPath)).ToList(); toDelList.AddRange(toDel); } result = await _db.Instance.Deleteable(toDelList).ExecuteCommandAsync() > 0; } else { //验证密码 bool checkP = _tUsersService.CheckPassword(UserID, requestObject.PostData.PassWord); if (checkP != true) { return(ResponseUtil <TPMenusDeleteAllModel, bool> .FailResult(requestObject, false, "密码无效")); } //单记录删除 var delModel = requestObject.PostData; var delModelDB = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.Id == delModel.Id).First(); if (delModelDB != null)//删除该节点以及所有子节点 { var toDelList = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.LogicPath.StartsWith(delModelDB.LogicPath)).ToList(); result = await _db.Instance.Deleteable(toDelList).ExecuteCommandAsync() > 0; } } //返回执行结果 if (result) { return(ResponseUtil <TPMenusDeleteAllModel, bool> .SuccessResult(requestObject, true)); } return(ResponseUtil <TPMenusDeleteAllModel, bool> .FailResult(requestObject, false, "删除数据失败!")); } catch (Exception ex) { //返回异常结果 return(ResponseUtil <TPMenusDeleteAllModel, bool> .FailResult(requestObject, false, ex.Message)); } }
/// <summary> /// 修改T_PM_Menus数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,修改操作结果</param> /// <returns></returns> public async Task <ResponseObject <TPMMenusEditModel, bool> > PutAsync(RequestObject <TPMMenusEditModel> requestObject) { try { //执行结果 var result = false; _db.Instance.BeginTran(); //没有修改信息,返回错误信息 if (requestObject.PostDataList == null && requestObject.PostData == null) { return(ResponseUtil <TPMMenusEditModel, bool> .FailResult(requestObject, false, "PostData,PostDataList不能都为null")); } //批量更新优先级高于单记录更新 if (requestObject.PostDataList != null && requestObject.PostDataList.Count > 0) { //批量更新 var editList = _mapper.Map <List <TPMMenusEditModel>, List <TPMMenusDbModel> >(requestObject.PostDataList); var childList = new List <TPMMenusDbModel>(); foreach (var item in editList) { var editModelDB = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.Id == item.Id).First(); string oldlogicPath = editModelDB.LogicPath;//原来的路径 string newlogicPath = oldlogicPath; if (item.ParentID == -1) { newlogicPath = item.Id.ToString(); item.LogicPath = newlogicPath; } else { var pnode = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.Id == item.ParentID).First(); if (pnode != null) { newlogicPath = pnode.LogicPath + "." + item.Id.ToString(); item.LogicPath = newlogicPath; } } if (!string.Equals(oldlogicPath, newlogicPath))// 如果 { int oldLength = oldlogicPath.Length; var cList = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.LogicPath.StartsWith(oldlogicPath) && p.Id != item.Id).ToList(); cList.ForEach(x => { x.LogicPath = newlogicPath + x.LogicPath.Substring(oldLength); }); childList.AddRange(cList); } } if (childList.Count() > 0) { await _db.Instance.Updateable(childList).UpdateColumns(p => new { p.LogicPath }).ExecuteCommandAsync(); } result = await _db.Instance.Updateable(editList).ExecuteCommandAsync() > 0; } else { //单记录更新 var editModel = _mapper.Map <TPMMenusDbModel>(requestObject.PostData); var editModelDB = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.Id == editModel.Id).First(); string oldlogicPath1 = editModelDB.LogicPath.ToString();//原来的路径 string newlogicPath2 = oldlogicPath1; var childList = new List <TPMMenusDbModel>(); if (editModel.ParentID == -1) { newlogicPath2 = editModel.Id.ToString(); editModel.LogicPath = newlogicPath2; } else { var pnode = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.Id == editModel.ParentID).First(); if (pnode != null) { newlogicPath2 = pnode.LogicPath + "." + editModel.Id.ToString(); editModel.LogicPath = newlogicPath2; } } if (!string.Equals(oldlogicPath1, newlogicPath2))// 如果 { int oldLength = oldlogicPath1.Length; var cList = _db.Instance.Queryable <TPMMenusDbModel>().Where(p => p.LogicPath.StartsWith(oldlogicPath1) && p.Id != editModel.Id).ToList(); cList.ForEach(x => { x.LogicPath = newlogicPath2 + x.LogicPath.Substring(oldLength); }); childList.AddRange(cList); } if (childList.Count() > 0) { await _db.Instance.Updateable(childList).UpdateColumns(p => new { p.LogicPath }).ExecuteCommandAsync(); } result = await _db.Instance.Updateable(editModel).ExecuteCommandAsync() > 0; } _db.Instance.CommitTran(); //返回执行结果 if (result) { return(ResponseUtil <TPMMenusEditModel, bool> .SuccessResult(requestObject, true)); } return(ResponseUtil <TPMMenusEditModel, bool> .FailResult(requestObject, false, "修改数据失败!")); } catch (Exception ex) { _db.Instance.RollbackTran(); //返回异常结果 return(ResponseUtil <TPMMenusEditModel, bool> .FailResult(requestObject, false, ex.Message)); } }
/// <summary> /// 新增T_PM_Menus数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,新增操作结果</param> /// <returns></returns> public async Task <ResponseObject <TPMMenusAddModel, bool> > PostAsync(RequestObject <TPMMenusAddModel> requestObject) { try { _db.Instance.BeginTran(); //如果没有新增数据,返回错误信息 if (requestObject.PostData == null && requestObject.PostDataList == null) { return(ResponseUtil <TPMMenusAddModel, bool> .FailResult(requestObject, false, "PostData,PostDataList不能都为null")); } var result = true; //批量新增的优先级高于单条数据新增,且只会执行一个新增操作 if (requestObject.PostDataList != null && requestObject.PostDataList.Count > 0) { var addList = _mapper.Map <List <TPMMenusAddModel>, List <TPMMenusDbModel> >(requestObject.PostDataList); List <TPMMenusDbModel> parentNodes = new List <TPMMenusDbModel>(); foreach (var item in addList) { parentNodes.AddRange(FindParentNodes(item.ParentID)); } foreach (var item in parentNodes.Distinct()) { item.IsMenu = false; await _db.Instance.Updateable(item).UpdateColumns(p => new { p.IsMenu }).ExecuteCommandAsync(); } result = await _db.Instance.Insertable(addList).ExecuteCommandIdentityIntoEntityAsync(); foreach (var item in addList) { if (item.ParentID == -1) { item.LogicPath = item.Id.ToString(); } else { var pNode = parentNodes.Where(p => p.Id == item.ParentID).FirstOrDefault(); if (pNode != null) { item.LogicPath = pNode.LogicPath + "." + item.Id.ToString(); } } } await _db.Instance.Updateable(addList).UpdateColumns(p => new { p.LogicPath }).ExecuteCommandAsync(); } else { var addModel = _mapper.Map <TPMMenusDbModel>(requestObject.PostData); List <TPMMenusDbModel> parentNodes = FindParentNodes(addModel.ParentID); foreach (var item in parentNodes) { item.IsMenu = false; await _db.Instance.Updateable(item).UpdateColumns(p => new { p.IsMenu }).ExecuteCommandAsync(); } result = await _db.Instance.Insertable(addModel).ExecuteCommandIdentityIntoEntityAsync(); if (addModel.ParentID == -1) { addModel.LogicPath = addModel.Id.ToString(); } else { var pNode = parentNodes.Where(p => p.Id == addModel.ParentID).FirstOrDefault(); if (pNode != null) { addModel.LogicPath = pNode.LogicPath + "." + addModel.Id.ToString(); } } await _db.Instance.Updateable(addModel).UpdateColumns(p => new { p.LogicPath }).ExecuteCommandAsync(); } _db.Instance.CommitTran(); //返回执行结果 if (result) { return(ResponseUtil <TPMMenusAddModel, bool> .SuccessResult(requestObject, true)); } return(ResponseUtil <TPMMenusAddModel, bool> .FailResult(requestObject, false, "新增数据失败!")); } catch (Exception ex) { _db.Instance.RollbackTran(); //返回异常结果 return(ResponseUtil <TPMMenusAddModel, bool> .FailResult(requestObject, false, ex.Message)); } }
/// <summary> /// 获取T_Tenants数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,查询操作结果</param> /// <returns></returns> public async Task <ResponseObject <TTenantsModel, List <TTenantsQueryModel> > > GetAsync(RequestObject <TTenantsModel> requestObject) { try { List <TTenantsQueryModel> queryData = null; //查询结果集对象 RefAsync <int> totalNumber = -1; //总记录数 var query = _db.Instance.Queryable <TTenantsModel, TSMCompanyDbModel>( (t, t1) => new object[] { JoinType.Left, t.ID == t1.CompanyInfoId, }); //查询条件 if (requestObject.QueryConditions != null && requestObject.QueryConditions.Count > 0) { var expressionList = SqlSugarUtil.GetQueryExpressions(requestObject.QueryConditions); expressionList.ForEach(p => query.Where(p)); } //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { requestObject.OrderByConditions.ForEach(p => query.OrderBy($"{p.Column} {p.Condition}")); } var queryResult = query.Select((t, t1) => new TTenantsQueryModel { Address = t.Address, Area = t.Area, CreateId = t.CreateId, CreateTime = t.CreateTime, FixedTele = t.FixedTele, Id = t.ID, Industry = t.Industry, IsTrial = t.IsTrial, MainBusiness = t.MainBusiness, RegisteredCapital = t.RegisteredCapital, Status = t.Status, TemplateId = t.TemplateId, TenantEngName = t.TenantEngName, TenantLogo = t.TenantLogo, TenantName = t1.CompanyName, TenantScale = t.TenantScale, TenantShortName = t.TenantShortName, TrialDate = t.TrialDate, ValidityPeriod = t.ValidityPeriod }); //执行查询 if (requestObject.IsPaging) { queryData = await queryResult.ToPageListAsync(requestObject.PageIndex, requestObject.PageSize, totalNumber); } else { queryData = await queryResult.ToListAsync(); } //返回执行结果 return(ResponseUtil <TTenantsModel, List <TTenantsQueryModel> > .SuccessResult(requestObject, queryData, totalNumber)); } catch (Exception ex) { //返回查询异常结果 return(ResponseUtil <TTenantsModel, List <TTenantsQueryModel> > .FailResult(requestObject, null, ex.Message)); } }
/// <summary> /// 新增T_MM_ColorItem数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,新增操作结果</param> /// <returns></returns> public async Task <ResponseObject <bool> > PostAsync(RequestPost <List <TMMColorItemAddModel> > requestObject, CurrentUser currentUser) { try { //#if DEBUG // var i = 9; //#else // throw new Exception(); //#endif //如果没有新增数据,返回错误信息 if (requestObject.PostData == null && requestObject.PostData.Count < 1) { return(ResponseUtil <bool> .FailResult(false, "PostData至少包含一条数据")); } //新增数据 var addList = _mapper.Map <List <TMMColorItemAddModel>, List <TMMColorItemDbModel> >(requestObject.PostData); int packageId = requestObject.PostData[0].PackageId; foreach (var item in addList) { if (item.ID <= 0) { await _db.Instance.Insertable(item).ExecuteCommandIdentityIntoEntityAsync(); } else { await _db.Instance.Updateable(item).ExecuteCommandAsync(); } } List <int> addListID = addList.Select(p => p.ID).ToList(); var toDelteModel = _db.Instance.Queryable <TMMColorItemDbModel>() .Where(p => p.PackageId == packageId && !addListID.Contains(p.ID)).Select(p => p).ToList(); if (toDelteModel.Count() > 0) { var dic = _db.Instance.Queryable <TBMDictionaryDbModel, TBMDictionaryTypeDbModel>((t, t1) => new object[] { JoinType.Inner, t.TypeId == t1.ID }).Where((t, t1) => t1.TypeName == "配色方案" && t1.CompanyId == currentUser.CompanyID).ToList(); var packageList = _db.Instance.Queryable <TBMPackageDbModel>().Where(p => p.CompanyId == currentUser.CompanyID).ToList(); foreach (var itemDel in toDelteModel) { if (_db.Instance.Queryable <TMMBOMMainDbModel, TMMBOMDetailDbModel>((t, t1) => new object[] { JoinType.Inner, t.ID == t1.MainId }) .Any((t, t1) => t.PackageId == itemDel.PackageId && t1.ItemId == itemDel.ItemId)) //此包型的BOM是否包含被删除的配色项目 { bool isExis = _db.Instance.Queryable <TMMProductionOrderDetailDbModel, TMMProductionOrderMainDbModel>((t, t1) => new object[] { JoinType.Inner, t.MainId == t1.ID }).Any((t, t1) => t1.DeleteFlag == false && t1.MRPStatus == false && t1.AuditStatus == 2 && t.PackageId == itemDel.PackageId ); // 是否存在没有算料的生产单 if (isExis) { string itemName = dic.Where(p => p.ID == itemDel.ItemId).FirstOrDefault()?.DicValue; string packageName = packageList.Where(p => p.ID == itemDel.PackageId).FirstOrDefault()?.DicValue; throw new Exception($"已审核通过的生产单,正在使用包型'{packageName}'Bom的配色项目{itemName},请将生产单算料,或者删除包型Bom的配色项目'{itemName}'"); } //删除此包型所有的配色项目 var deleteColorSolution1 = _db.Instance.Deleteable <TMMColorSolutionDetailDbModel>().Where(p => p.ItemId == itemDel.ItemId && SqlFunc.Subqueryable <TMMColorSolutionMainDbModel>().Where(p1 => p1.ID == p.MainId && p1.PackageId == itemDel.PackageId).Any()); deleteColorSolution1.ExecuteCommand(); //删除BOM var bomDelete = _db.Instance.Deleteable <TMMBOMDetailDbModel>().Where(p => p.ItemId == itemDel.ItemId && SqlFunc.Subqueryable <TMMBOMMainDbModel>(). Where(p1 => p1.ID == p.MainId && p1.PackageId == itemDel.PackageId).Any()); bomDelete.ExecuteCommand(); } else { //删除此包型所有的配色项目 var deleteColorSolution = _db.Instance.Deleteable <TMMColorSolutionDetailDbModel>().Where(p => p.ItemId == itemDel.ItemId && SqlFunc.Subqueryable <TMMColorSolutionMainDbModel>().Where(p1 => p1.ID == p.MainId && p1.PackageId == itemDel.PackageId).Any()); deleteColorSolution.ExecuteCommand(); } } _db.Instance.Deleteable(toDelteModel).ExecuteCommand(); } _db.Instance.CommitTran(); //返回执行结果 return(ResponseUtil <bool> .SuccessResult(true)); } catch (Exception ex) { _db.Instance.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)); } }
/// <summary> /// 删除配色项目,所有节点 /// </summary> /// <param name="requestDelete"></param> /// <returns></returns> public async Task <ResponseObject <bool> > DeleteAllAsync(RequestDelete <DeleteModel> requestDelete, CurrentUser currentUser) { try { //如果没有新增数据,返回错误信息 if (requestDelete.PostData == null) { return(ResponseUtil <bool> .FailResult(false, "PostData至少包含一条数据")); } var toDelteModel = _db.Instance.Queryable <TMMColorItemDbModel> () .Where(p => p.PackageId == requestDelete.PostData.ID).Select(p => p).ToList(); var dic = _db.Instance.Queryable <TBMDictionaryDbModel, TBMDictionaryTypeDbModel>((t, t1) => new object[] { JoinType.Inner, t.TypeId == t1.ID }).Where((t, t1) => t1.TypeName == "配色方案" && t1.CompanyId == currentUser.CompanyID).ToList(); var packageList = _db.Instance.Queryable <TBMPackageDbModel>().Where(p => p.CompanyId == currentUser.CompanyID).ToList(); foreach (var itemDel in toDelteModel) { if (_db.Instance.Queryable <TMMBOMMainDbModel, TMMBOMDetailDbModel>((t, t1) => new object[] { JoinType.Inner, t.ID == t1.MainId }) .Any((t, t1) => t.PackageId == itemDel.PackageId && t1.ItemId == itemDel.ItemId)) //此包型的BOM是否包含被删除的配色项目 { string itemName = dic.Where(p => p.ID == itemDel.ItemId).FirstOrDefault()?.DicValue; string packageName = packageList.Where(p => p.ID == itemDel.PackageId).FirstOrDefault()?.DicValue; bool isExis = _db.Instance.Queryable <TMMProductionOrderDetailDbModel, TMMProductionOrderMainDbModel>((t, t1) => new object[] { JoinType.Inner, t.MainId == t1.ID }).Any((t, t1) => t1.DeleteFlag == false && SqlFunc.IsNull(t1.MRPStatus, false) == false && t1.AuditStatus == 2 && t.PackageId == itemDel.PackageId ); // 是否存在没有算料的生产单 if (isExis) { throw new Exception($"已审核通过的生产单,正在使用包型'{packageName}'Bom的配色项目{itemName},请将生产单算料,或者删除包型Bom的配色项目'{itemName}'"); } //删除此包型所有的配色项目 var deleteColorSolution = _db.Instance.Deleteable <TMMColorSolutionDetailDbModel>().Where(p => p.ItemId == itemDel.ItemId && SqlFunc.Subqueryable <TMMColorSolutionMainDbModel>().Where(p1 => p1.ID == p.MainId && p1.PackageId == itemDel.PackageId).Any()); //删除BOM _db.Instance.Deleteable <TMMBOMDetailDbModel>().Where(p => p.ItemId == itemDel.ItemId && SqlFunc.Subqueryable <TMMBOMMainDbModel>(). Where(p1 => p1.ID == p.MainId && p1.PackageId == itemDel.PackageId).Any()); } } var result = await _db.Instance.Deleteable <TMMColorItemDbModel>() .Where(p => p.PackageId == requestDelete.PostData.ID) .ExecuteCommandAsync() > 0; //返回执行结果 return(result ? ResponseUtil <bool> .SuccessResult(true) : ResponseUtil <bool> .FailResult(false, "新增数据失败!")); } catch (Exception ex) { //返回异常结果 return(ResponseUtil <bool> .FailResult(false, ex.Message)); } }
/// <summary> /// /// </summary> /// <param name="requestObject"></param> /// <param name="currentUser"></param> /// <returns></returns> public async Task <ResponseObject <List <InventoryResultModel> > > LoadReport(RequestGet requestObject, CurrentUser currentUser) { try { //数据字典 var tBMDictionary = _db.Instance.Queryable <TBMDictionaryDbModel>().Where(p => p.CompanyId == currentUser.CompanyID).ToList().ToDictionary(p => p.ID, p => p.DicValue); var warehouseDic = _db.Instance.Queryable <TBMWarehouseFileDbModel>().Where(t => SqlFunc.IsNull(t.DeleteFlag, false) != true && t.CompanyId == currentUser.CompanyID).ToList().ToDictionary(p => p.ID, p => new { Name = p.WarehouseName, Code = p.Code }); List <InventoryResultModel> result = new List <InventoryResultModel>(); //其他出入库 var otherCount = _db.Instance.Queryable <TWMOtherCountDbModel>(). Select(p => new InAndOutModel() { MaterialId = p.MaterialId, WarehouseId = p.WarehouseId, WhNumber = p.WhNumber, WhSendNumber = p.WhSendNumber }); //盘亏盘盈出入库 var pCount = _db.Instance.Queryable <TWMProfitDeficitCountDbModel>(). Select(p => new InAndOutModel() { MaterialId = p.MaterialId, WarehouseId = p.WarehouseId, WhNumber = p.WhNumber, WhSendNumber = p.WhSendNumber }); //销售出入库 var SaleCount = _db.Instance.Queryable <TWMSalesCountDbModel>(). Select(p => new InAndOutModel() { MaterialId = p.MaterialId, WarehouseId = p.WarehouseId, WhNumber = p.WhNumber, WhSendNumber = p.WhSendNumber }); //采购出入库 var PurchaseCount = _db.Instance.Queryable <TWMPurchaseCountDbModel>(). Select(p => new InAndOutModel() { MaterialId = p.MaterialId, WarehouseId = p.WarehouseId, WhNumber = p.WhNumber, WhSendNumber = p.WhSendNumber }); //生产出入库 var ProductCount = _db.Instance.Queryable <TWMProductionCountDbModel>(). Select(p => new InAndOutModel() { MaterialId = p.MaterialId, WarehouseId = p.WarehouseId, WhNumber = p.WhNumber, WhSendNumber = p.WhSendNumber }); //出入库数量 var allCount = _db.Instance.UnionAll(otherCount, pCount, SaleCount, PurchaseCount, ProductCount).GroupBy(p => new { p.MaterialId, p.WarehouseId }). Select(p => new TradeInventoryModel() { TradeNumber = SqlFunc.AggregateSum(p.WhNumber) - SqlFunc.AggregateSum(p.WhSendNumber), MaterialId = p.MaterialId, WarehouseId = p.WarehouseId }).AS("t100"); var materialFileQuery = _db.Instance.Queryable <TBMMaterialFileDbModel>().Where(p => p.CompanyId == currentUser.CompanyID); var ts = _db.Instance.Queryable(materialFileQuery, allCount, JoinType.Inner, (p1, p2) => p1.ID == p2.MaterialId); #region 待出库数量 //其他待出库 var otherToOut = _db.Instance.Queryable <TWMOtherWhSendMainDbModel, TWMOtherWhSendDetailDbModel>((t1, t2) => new object[] { JoinType.Inner, t1.ID == t2.MainId }).Where((t1, t2) => t1.AuditStatus != 2 && t1.DeleteFlag == false).Select((t1, t2) => new InventoryOut { MaterialId = t2.MaterialId, Amount = t2.ActualNumber }); //盘亏出库 var deficitToOut = _db.Instance.Queryable <TWMDeficitMainDbModel, TWMDeficitDetailDbModel>((t1, t2) => new object[] { JoinType.Inner, t1.ID == t2.MainId }).Where((t1, t2) => t1.AuditStatus != 2 && t1.DeleteFlag == false).Select((t1, t2) => new InventoryOut { MaterialId = t2.MaterialId, Amount = t2.ActualNumber }); //销售出库 var saleToOut = _db.Instance.Queryable <TWMSalesMainDbModel, TWMSalesDetailDbModel>((t1, t2) => new object[] { JoinType.Inner, t1.ID == t2.MainId }).Where((t1, t2) => t1.AuditStatus != 2 && t1.DeleteFlag == false).Select((t1, t2) => new InventoryOut { MaterialId = t2.MaterialId, Amount = t2.ActualNum }); //生产待出库 var productToOut = _db.Instance.Queryable <TWMProductionMainDbModel, TWMProductionDetailDbModel>((t1, t2) => new object[] { JoinType.Inner, t1.ID == t2.MainId }).Where((t1, t2) => t1.AuditStatus != 2 && t1.DeleteFlag == false).Select((t1, t2) => new InventoryOut { MaterialId = t2.MaterialId, Amount = t2.ActualNum }); var allToOut = _db.Instance.UnionAll(otherToOut, deficitToOut, saleToOut, productToOut).AS("t101"); var tsToOut = allToOut.ToList().GroupBy(p => p.MaterialId).Select(p => new InventoryOut() { MaterialId = p.Key, Amount = p.Sum(m => m.Amount) }).ToList() .ToDictionary(p => p.MaterialId, p => new { MaterialId = p.MaterialId, Amount = p.Amount }); #endregion string[] cQuery = { "warehouseid" }; //查询条件 if (requestObject.QueryConditions != null && requestObject.QueryConditions.Count > 0) { var QueryConditions1 = requestObject.QueryConditions.Where(p => !cQuery.Contains(p.Column.ToLower())).ToList(); if (QueryConditions1.Count() > 0) { var conditionals1 = SqlSugarUtil.GetConditionalModels(QueryConditions1); foreach (ConditionalModel item in conditionals1) { item.FieldName = $"p1.{item.FieldName}"; } ts.Where(conditionals1); } var QueryConditions2 = requestObject.QueryConditions.Where(p => cQuery.Contains(p.Column.ToLower())).FirstOrDefault(); if (QueryConditions2 != null) { int WarehouseId = Convert.ToInt32(QueryConditions2.Content); ts = ts.Where((p1, p2) => p2.WarehouseId == WarehouseId); } } //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { foreach (var item in requestObject.OrderByConditions) { var exp = SqlSugarUtil.GetOrderByLambda <TBMMaterialFileDbModel>(item.Column); if (exp == null) { continue; } if (item.Condition.ToLower() != "asc" && item.Condition.ToLower() != "desc") { continue; } ts.OrderBy($"p1.{item.Column} {item.Condition}"); } } #region 最新采购/生产时间 var Purchase = _db.Instance.Queryable <TPSMPurchaseOrderDetailDbModel, TPSMPurchaseOrderMainDbModel>( (t1, t2) => new object[] { JoinType.Left, t1.MainId == t2.ID }) .Where((t1, t2) => t2.CompanyId == currentUser.CompanyID && SqlFunc.IsNull(t2.DeleteFlag, false) != true && t2.AuditStatus == 2 ) .GroupBy((t1, t2) => t1.MaterialId) .Select((t1, t2) => new { MaterialId = t1.MaterialId, OrderDate = SqlFunc.AggregateMax(t2.OrderDate) }).ToList() .ToDictionary(p => p.MaterialId, p => new { MaterialId = p.MaterialId, OrderDate = p.OrderDate }); var Production = _db.Instance.Queryable <TMMProductionOrderDetailDbModel, TMMProductionOrderMainDbModel>( (t1, t2) => new object[] { JoinType.Left, t1.MainId == t2.ID }) .Where((t1, t2) => t2.CompanyId == currentUser.CompanyID && SqlFunc.IsNull(t2.DeleteFlag, false) != true && t2.AuditStatus == 2) .GroupBy((t1, t2) => t1.MaterialId) .Select((t1, t2) => new { MaterialId = t1.MaterialId, OrderDate = SqlFunc.AggregateMax(t2.OrderDate) }).ToList() .ToDictionary(p => p.MaterialId, p => new { MaterialId = p.MaterialId, OrderDate = p.OrderDate }); #endregion int totalNum = -1; if (requestObject.IsPaging) { int skipNum = requestObject.PageSize * (requestObject.PageIndex - 1); totalNum = ts.Count(); result = await ts.Select((p1, p2) => new InventoryResultModel { MaterialName = p1.MaterialName, BaseUnitId = p1.BaseUnitId, ColorId = p1.ColorId, MaterialCode = p1.MaterialCode, MaterialId = p1.ID, Spec = p1.Spec, WarehouseAmount = p2.TradeNumber, WarehouseUnitId = p1.WarehouseUnitId, WarehouseRate = p1.WarehouseRate, WarehouseId = p2.WarehouseId, ShelfLife = p1.ShelfLife }).Skip(skipNum).Take(requestObject.PageSize).ToListAsync(); } else { result = await ts.Select((p1, p2) => new InventoryResultModel { MaterialName = p1.MaterialName, BaseUnitId = p1.BaseUnitId, ColorId = p1.ColorId, MaterialCode = p1.MaterialCode, MaterialId = p1.ID, Spec = p1.Spec, WarehouseAmount = p2.TradeNumber, WarehouseUnitId = p1.WarehouseUnitId, WarehouseRate = p1.WarehouseRate, WarehouseId = p2.WarehouseId, ShelfLife = p1.ShelfLife }).ToListAsync(); } var TWMPrimeCountDbList = _db.Instance.Queryable <TWMPrimeCountDbModel>().Where(p => p.CompanyId == currentUser.CompanyID).ToList(); result.ForEach(x => { #region 最新生产/采购时间 string Production_PurchaseDateTime = ""; if (Production.ContainsKey(x.MaterialId)) { Production_PurchaseDateTime += "" + Convert.ToDateTime(Production[x.MaterialId].OrderDate).ToString("yyyy-MM-dd"); } else { Production_PurchaseDateTime += "无生产"; } if (Purchase.ContainsKey(x.MaterialId)) { Production_PurchaseDateTime += "/" + Convert.ToDateTime(Purchase[x.MaterialId].OrderDate).ToString("yyyy-MM-dd"); } else { Production_PurchaseDateTime += "/无采购"; } if (Production_PurchaseDateTime != "") { x.Production_PurchaseDateTime = Production_PurchaseDateTime; } #endregion if (tsToOut.ContainsKey(x.MaterialId)) { x.WarehouseAvailabilityAmount = x.WarehouseAmount - tsToOut[x.MaterialId].Amount; } if (x.WarehouseUnitId.HasValue) { if (tBMDictionary.ContainsKey(x.WarehouseUnitId.Value)) { x.WarehouseUnitName = tBMDictionary[x.WarehouseUnitId.Value]; } } if (warehouseDic.ContainsKey(x.WarehouseId)) { x.WarehouseName = warehouseDic[x.WarehouseId].Name; x.WarehouseCode = warehouseDic[x.WarehouseId].Code; } if (tBMDictionary.ContainsKey(x.BaseUnitId)) { x.BaseUnitName = tBMDictionary[x.BaseUnitId]; } if (string.IsNullOrEmpty(x.WarehouseUnitName)) { x.WarehouseUnitName = x.BaseUnitName; } if (x.WarehouseRate == null) { x.WarehouseRate = 1; } if (x.ColorId.HasValue) { if (tBMDictionary.ContainsKey(x.ColorId.Value)) { x.ColorName = tBMDictionary[x.ColorId.Value]; } } var firstEntity = TWMPrimeCountDbList.Where(p => p.WarehouseId == x.WarehouseId && p.MaterialId == x.MaterialId).FirstOrDefault(); if (firstEntity != null) { x.WarehouseAmount = x.WarehouseAmount + firstEntity.PrimeNum; x.PrimeNum = firstEntity.PrimeNum; } }); return(ResponseUtil <List <InventoryResultModel> > .SuccessResult(result, totalNum)); } catch (Exception ex) { return(ResponseUtil <List <InventoryResultModel> > .FailResult(null, ex.Message)); } }
/// <summary> /// 新增T_BM_WarehouseFile数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,新增操作结果</param> /// <param name="UserID">操作人ID</param> /// <returns></returns> public async Task <ResponseObject <TBMWarehouseFileAddModel, bool> > PostAsync(RequestObject <TBMWarehouseFileAddModel> requestObject, int UserID) { try { var curentDB = _db.Instance; SMUserInfo sMUserInfo = SMCurentUserManager.GetCurentUserID(UserID, curentDB); //如果没有新增数据,返回错误信息 if (requestObject.PostData == null && requestObject.PostDataList == null) { return(ResponseUtil <TBMWarehouseFileAddModel, bool> .FailResult(requestObject, false, "PostData,PostDataList不能都为null")); } var result = false; //批量新增的优先级高于单条数据新增,且只会执行一个新增操作 if (requestObject.PostDataList != null && requestObject.PostDataList.Count > 0) { var addList = _mapper.Map <List <TBMWarehouseFileAddModel>, List <TBMWarehouseFileDbModel> >(requestObject.PostDataList); foreach (var item in addList) { item.CompanyId = sMUserInfo.CompanyId.Value; } result = await curentDB.Insertable(addList).ExecuteCommandAsync() > 0; } else { var addModel = _mapper.Map <TBMWarehouseFileDbModel>(requestObject.PostData); addModel.CompanyId = sMUserInfo.CompanyId.Value; addModel.DeleteFlag = false; var oldModel = curentDB.Queryable <TBMWarehouseFileDbModel>().Where(p => SqlFunc.IsNull(p.DeleteFlag, false) == false && p.WarehouseName == addModel.WarehouseName && p.CompanyId == sMUserInfo.CompanyId.Value).First(); if (oldModel != null) { return(ResponseUtil <TBMWarehouseFileAddModel, bool> .FailResult(requestObject, false, addModel.WarehouseName + " 已经存在")); } var oldModelCode = curentDB.Queryable <TBMWarehouseFileDbModel>().Where(p => SqlFunc.IsNull(p.DeleteFlag, false) == false && p.Code == addModel.Code && p.CompanyId == sMUserInfo.CompanyId.Value).First(); if (oldModelCode != null) { return(ResponseUtil <TBMWarehouseFileAddModel, bool> .FailResult(requestObject, false, "编号:" + addModel.Code + " 已经存在")); } addModel.CompanyId = sMUserInfo.CompanyId.Value; result = await _db.Instance.Insertable(addModel).ExecuteCommandAsync() > 0; } //返回执行结果 if (result) { return(ResponseUtil <TBMWarehouseFileAddModel, bool> .SuccessResult(requestObject, true)); } return(ResponseUtil <TBMWarehouseFileAddModel, bool> .FailResult(requestObject, false, "新增数据失败!")); } catch (Exception ex) { //返回异常结果 return(ResponseUtil <TBMWarehouseFileAddModel, bool> .FailResult(requestObject, false, ex.Message)); } }
/// <summary> /// 历史记录 /// </summary> /// <param name="requestObject"></param> /// <param name="currentUser"></param> /// <returns></returns> public async Task <ResponseObject <List <HistoryInventory> > > History(HistoryInventoryQuery requestObject, CurrentUser currentUser) { List <HistoryInventory> result = new List <HistoryInventory>(); //其他出库 var otherOut = _db.Instance.Queryable <TWMOtherWhDetailDbModel, TWMOtherWhMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WarehousingOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 1, WarehouseId = t1.WarehouseId, OpearateDate = t2.WarehousingDate, TypeName = "其他入库", InventoryType = t2.WarehousingType, WarehouseAmount = t1.ActualNumber, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); // var otherIn = _db.Instance.Queryable <TWMOtherWhSendDetailDbModel, TWMOtherWhSendMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WhSendOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 2, WarehouseId = t1.WarehouseId, OpearateDate = t2.WhSendDate, TypeName = "其他出库", InventoryType = t2.WhSendType, WarehouseAmount = t1.ActualNumber, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //盘盈入库 var profitDetail = _db.Instance.Queryable <TWMProfitDetailDbModel, TWMProfitMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WarehousingOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 1, WarehouseId = t1.WarehouseId, OpearateDate = t2.WarehousingDate, TypeName = "盘盈入库", InventoryType = t2.WarehousingType, WarehouseAmount = t1.ActualNumber, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //盘亏出库 var deficit = _db.Instance.Queryable <TWMDeficitDetailDbModel, TWMDeficitMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WhSendOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 2, WarehouseId = t1.WarehouseId, OpearateDate = t2.WhSendDate, TypeName = "盘亏出库", InventoryType = t2.WhSendType, WarehouseAmount = t1.ActualNumber, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //生产入库 var productionIn = _db.Instance.Queryable <TWMProductionWhDetailDbModel, TWMProductionWhMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WarehousingOrderNo, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 1, WarehouseId = t1.WarehouseId, OpearateDate = t2.WarehousingDate, TypeName = "生产入库", InventoryType = t2.WarehousingType, WarehouseAmount = t1.ActualNum, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //生产出库 var productionOut = _db.Instance.Queryable <TWMProductionDetailDbModel, TWMProductionMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WhSendOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 2, WarehouseId = t1.WarehouseId, OpearateDate = t2.WhSendDate, TypeName = "生产出库", InventoryType = t2.WhSendType, WarehouseAmount = t1.ActualNum, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //销售出库 var saleDetail = _db.Instance.Queryable <TWMSalesDetailDbModel, TWMSalesMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WhSendOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 1, WarehouseId = t1.WarehouseId, OpearateDate = t2.WhSendDate, TypeName = "销售出库", InventoryType = t2.WhSendType, WarehouseAmount = t1.ActualNum, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //采购入库 var purchaseIn = _db.Instance.Queryable <TWMPurchaseDetailDbModel, TWMPurchaseMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WarehousingOrderNo, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 1, WarehouseId = t1.WarehouseId, OpearateDate = t2.WarehousingDate, TypeName = "采购入库", InventoryType = t2.WarehousingType, WarehouseAmount = t1.ActualNum, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //单位 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 ).ToList(); //出入库数量 var allCountOrgin = _db.Instance.UnionAll(otherOut, otherIn, profitDetail, deficit, productionIn, productionOut, saleDetail, purchaseIn) .Where(p => p.MaterialId == requestObject.MaterialId && p.WarehouseId == requestObject.WarehouseId); //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { foreach (var item in requestObject.OrderByConditions) { var exp = SqlSugarUtil.GetOrderByLambda <HistoryInventory>(item.Column); if (exp == null) { continue; } if (item.Condition.ToLower() != "asc" && item.Condition.ToLower() != "desc") { continue; } allCountOrgin.OrderBy($"{item.Column} {item.Condition}"); } } var allCount = allCountOrgin.AS("t101"); int totalNum = -1; if (requestObject.IsPaging) { int skipNum = requestObject.PageSize * (requestObject.PageIndex - 1); result = await allCount.Skip(skipNum).Take(requestObject.PageSize).ToListAsync(); totalNum = allCount.Count(); } else { result = await allCount.ToListAsync(); } result.ForEach((x) => { var unit = unitList.Where(p => p.ID == x.WarehouseUnitId).FirstOrDefault(); if (unit != null) { x.WarehouseUnitName = unit.DicValue; } var basicunit = unitList.Where(p => p.ID == x.BaseUnitId).FirstOrDefault(); if (basicunit != null) { x.BaseUnitName = basicunit.DicValue; } }); return(ResponseUtil <List <HistoryInventory> > .SuccessResult(result, totalNum)); }
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)); } }
public ActionResult List(FormCollection collection) { using (var db = new YGSDbContext()) { /* * 变量定义 */ var employee = (User.Identity as AppkizIdentity).Employee; OrgMgr orgMgr = new OrgMgr(); // 页数 int page = WHConstants.Default_Page; // 分页大小 int pageSize = WHConstants.Default_Page_Size; // 申请数据 var applyList = db.Apply.Where(n => n.UserId == employee.EmplID && n.IsDelete == false); /* * 参数获取 */ // 申请单状态 var status = collection["status"]; // 关键字 var keyword = collection["keyword"]; // 页数 var pageString = collection["page"]; // 分页大小 var pageSizeString = collection["pageSize"]; /* * 参数校验 */ // 验证状态 if (string.IsNullOrEmpty(status)) { return(ResponseUtil.Error(400, "状态不能为空")); } else { applyList = applyList.Where(n => n.ApplyStatus == status); } // 关键字 if (!string.IsNullOrEmpty(keyword)) { applyList = applyList.Where(n => n.OutName.Contains(keyword)); } // 验证分页大小 if (!string.IsNullOrEmpty(pageString)) { if (int.TryParse(pageString, out page)) { if (page <= 0) { return(ResponseUtil.Error(400, "分页大小错误")); } } else { // 验证出错 return(ResponseUtil.Error(400, "分页大小错误")); } } // 验证页数 if (!string.IsNullOrEmpty(pageSizeString)) { if (int.TryParse(pageSizeString, out pageSize)) { if (pageSize <= 0) { return(ResponseUtil.Error(400, "页数错误")); } } else { // 验证出错 return(ResponseUtil.Error(400, "页数错误")); } } /* * 查询申请 */ // 记录总数 var totalCount = applyList.Count(); // 记录总页数 var totalPage = (int)Math.Ceiling((float)totalCount / pageSize); // 查询结果数据 var resultRecords = applyList.OrderByDescending(n => n.CreateTime).Skip((page - 1) * pageSize).Take(pageSize).ToList(); //预约列表格式 List <object> applys = new List <object>(); // 履历表 foreach (var apply in resultRecords) { var applyEmployee = orgMgr.GetEmployee(apply.UserId); // 获得所有外出人员id var historyIdList = apply.OutUsers.Split(',').Select(int.Parse).ToList(); applys.Add(new { id = apply.ID, outName = apply.OutName, desc = apply.Desc, applyDate = apply.ApplyDate.ToString("yyyy/MM/dd"), applyUser = applyEmployee == null ? null : string.Format("{0} {1}", applyEmployee.DeptName, applyEmployee.EmplName), outUsers = db.User.ToList().Where(m => historyIdList.Contains(m.ID)).Select(m => new { id = m.ID, name = m.Name }).ToList(), checkOpinion = apply.CheckOpinion, nextStep = apply.ApplyStatus == WHConstants.Apply_Status_Examing ? "等待领导审批" : (apply.ApplyStatus == WHConstants.Apply_Status_Passed ? "下载并填写表格" : "修改并重新提交审核") }); } return(new JsonNetResult(new { code = 200, data = new { records = applys, meta = new { current_page = page, total_page = totalPage, current_count = (page - 1) * pageSize + resultRecords.ToList().Count(), total_count = totalCount, per_page = pageSize } } })); } }
/// <summary> /// 修改T_WM_SalesMain数据 /// </summary> /// <param name="requestObject">Put请求参数</param> /// <returns>返回响应结果对象,包括响应代码,修改操作结果</returns> public async Task <ResponseObject <TWMSalesMainQueryModel> > PutAsync(RequestPut <TWMSalesMainEditModel> requestObject, CurrentUser currentUser) { var currDb = _db.Instance;//事务需要使用同一个 SqlSugarClient对象实例 try { //#if DEBUG //#else // return null; //#endif if (requestObject.PostData == null) { return(ResponseUtil <TWMSalesMainQueryModel> .FailResult(null, "PostData不能为null")); } if (requestObject.PostData.ChildList == null || requestObject.PostData.ChildList.Count < 1) { return(ResponseUtil <TWMSalesMainQueryModel> .FailResult(null, "PostData.ChildList至少包含一条数据")); } //开启事务 currDb.BeginTran(); //修改主表信息 var mainModel = _mapper.Map <TWMSalesMainDbModel>(requestObject.PostData); mainModel.Number = requestObject.PostData.ChildList.Sum(p => p.ActualNum); mainModel.Amount = requestObject.PostData.ChildList.Sum(p => p.Amount); var mainFlag = await currDb.Updateable(mainModel).UpdateColumns(p => new { p.WhSendDate, p.Number, p.Amount, p.SendId, p.WhAdminId, p.ReceiptAddress }).ExecuteCommandAsync() > 0; /* * 修改明细逻辑 * 1.根据主单ID查询现有明细数据 * 2.PostData.ChildList中明细ID <= 0的新增 * 3.PostData.ChildList中明细ID > 0的修改 * 4.删除不在PostData.CihldList中的数据 */ var detailFlag = true; var detailModels = _mapper.Map <List <TWMSalesDetailEditModel>, List <TWMSalesDetailDbModel> >(requestObject.PostData.ChildList); var mainEntity = _db.Instance.Queryable <TWMSalesMainDbModel>().Where(p => p.ID == mainModel.ID).First(); var listItem = _db.Instance.Queryable <TSSMSalesOrderDetailDbModel>().Where(t => t.MainId == mainEntity.SourceId).ToList(); var materList = BasicCacheGet.GetMaterial(currentUser); List <TSSMSalesOrderDetailDbModel> toEdit = new List <TSSMSalesOrderDetailDbModel>(); foreach (var item in detailModels) { if (!detailFlag) { break; } item.MainId = mainModel.ID; var procudeMaterial = listItem.Where(p => p.ID == item.SalesOrderDetailId).FirstOrDefault();//销售合同明细 var me = materList.Where(p => p.ID == item.MaterialId).FirstOrDefault(); if (!detailFlag) { break; } item.MainId = mainModel.ID; if (item.ID <= 0) //新增 { decimal proNum = UnitChange.TranserUnit(me, UnitType.Warehouse, UnitType.Sales, item.ActualNum); decimal wareTransNum = UnitChange.TranserUnit(me, UnitType.Sales, UnitType.Warehouse, procudeMaterial.TransferNum);//可转的数量(仓库单位) if (item.ActualNum > wareTransNum) { throw new Exception($"物料代码{me.MaterialCode} 出库数量不能大于{wareTransNum }"); } else if (item.ActualNum == wareTransNum) { item.SalesOrderActualNum = procudeMaterial.TransferNum; procudeMaterial.TransferNum = 0; } else { if (proNum > procudeMaterial.TransferNum) { item.SalesOrderActualNum = procudeMaterial.TransferNum; procudeMaterial.TransferNum = 0; } else { item.SalesOrderActualNum = proNum; procudeMaterial.TransferNum = procudeMaterial.TransferNum - proNum; } } toEdit.Add(procudeMaterial); //decimal proNum = UnitChange.TranserUnit(me, UnitType.Warehouse, UnitType.Sales, item.ActualNum); //var m = listItem.Where(p => p.MaterialId == item.MaterialId).FirstOrDefault(); //if (m != null) //{ // if (m.TransferNum < proNum) // { // throw new Exception($"物料代码{me.MaterialCode} 出库数量不能大于{proNum }"); // } // m.TransferNum = m.TransferNum - proNum; // toEdit.Add(m); //} } else //修改 { var dModel = _db.Instance.Queryable <TWMSalesDetailDbModel>().Where(p => p.ID == item.ID).First(); if (dModel != null) { if (dModel.ActualNum != item.ActualNum) { #region ////原出库数量(销售单位) //decimal oldActualNumPro = UnitChange.TranserUnit(me, UnitType.Warehouse, UnitType.Sales, dModel.ActualNum); //decimal TransNum = procudeMaterial.TransferNum + item.SalesOrderActualNum; //可转数量(生产单位) ////现出库数量(销售单位) //decimal nowActualNumPro = UnitChange.TranserUnit(me, UnitType.Warehouse, UnitType.Sales, item.ActualNum); //if (item.ActualNum > nowActualNumPro) //{ // throw new Exception($"物料代码{me.MaterialCode} 入库数量不能大于{nowActualNumPro }"); //} //else if (item.ActualNum == nowActualNumPro) //{ // item.SalesOrderActualNum = TransNum; // procudeMaterial.TransferNum = 0; //} //else //{ // if (oldActualNumPro > TransNum) // { // item.SalesOrderActualNum = TransNum; // procudeMaterial.TransferNum = 0; // } // else // { // item.SalesOrderActualNum = oldActualNumPro; // procudeMaterial.TransferNum = TransNum - oldActualNumPro; // } //} #endregion decimal saleNum = UnitChange.TranserUnit(me, UnitType.Warehouse, UnitType.Sales, item.ActualNum); //实际转出数量(销售单位) decimal TransNum = procudeMaterial.TransferNum + dModel.SalesOrderActualNum; //可转数量(生产单位) decimal wareTransNum = UnitChange.TranserUnit(me, UnitType.Sales, UnitType.Warehouse, TransNum); //可转的数量(仓库单位) if (item.ActualNum > wareTransNum) { throw new Exception($"物料代码{me.MaterialCode} 入库数量不能大于{wareTransNum }"); } else if (item.ActualNum == wareTransNum) { item.SalesOrderActualNum = TransNum; procudeMaterial.TransferNum = 0; } else { if (saleNum > TransNum) { item.SalesOrderActualNum = TransNum; procudeMaterial.TransferNum = 0; } else { item.SalesOrderActualNum = saleNum; procudeMaterial.TransferNum = TransNum - saleNum; } } toEdit.Add(procudeMaterial); //var m = listItem.Where(p => p.MaterialId == item.MaterialId).FirstOrDefault(); //if (m != null) //{ // if (m.TransferNum + oldActualNumPro < nowActualNumPro) // { // throw new Exception($"物料代码{me.MaterialCode} 出库数量不能大于{m.TransferNum + oldActualNumPro }"); // } // m.TransferNum = m.TransferNum + oldActualNumPro - nowActualNumPro; // toEdit.Add(m); //} } else { item.SalesOrderActualNum = dModel.SalesOrderActualNum; } } } //新增或修改明细数据 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(); var whDetailList = currDb.Queryable <TWMSalesDetailDbModel>().Where(p => !detailIds.Contains(p.ID) && p.MainId == mainModel.ID).ToList(); foreach (var item in whDetailList) { var me = materList.Where(p => p.ID == item.MaterialId).FirstOrDefault(); //decimal proNum = UnitChange.TranserUnit(me, UnitType.Warehouse, UnitType.Sales, item.ActualNum); var m = listItem.Where(p => p.MaterialId == item.MaterialId).FirstOrDefault(); if (m != null) { m.TransferNum = m.TransferNum + item.SalesOrderActualNum; toEdit.Add(m); } } detailFlag = currDb.Deleteable <TWMSalesDetailDbModel>() .Where(p => !detailIds.Contains(p.ID) && p.MainId == mainModel.ID) .ExecuteCommand() >= 0; } #region 检查出库是否超过可用量 int?iMainId = mainModel.ID; var mList = BasicCacheGet.GetMaterial(currentUser); var details = requestObject.PostData.ChildList.GroupBy(p => new { p.MaterialId, p.WarehouseId }).Select(p => new TWMOtherCountDbModel { MaterialId = p.Key.MaterialId, WarehouseId = p.Key.WarehouseId, WhSendNumber = p.Sum(p1 => p1.ActualNum) }).ToList(); foreach (var item in details) { TWMStaQuery tWMStaQuery = new TWMStaQuery(); tWMStaQuery.EditID = iMainId; tWMStaQuery.MaterialId = item.MaterialId; tWMStaQuery.WarehouseId = item.WarehouseId; decimal AvaiableNum = _staticInventory.GeTWMCountModel(tWMStaQuery).AvaiableNum; if (AvaiableNum < 0) { var me = materList.Where(p => p.ID == item.MaterialId).FirstOrDefault(); throw new Exception($"物料代码:{me.MaterialCode},物料名称{me.MaterialName}的物料可用量不足"); } if (item.WhSendNumber > AvaiableNum) { var me = mList.Where(p => p.ID == item.MaterialId).FirstOrDefault(); throw new Exception($"物料代码:{me.MaterialCode},物料名称{me.MaterialName}的物料出库数量不能大于{AvaiableNum}"); } } #endregion if (toEdit.Count() > 0) { _db.Instance.Updateable(toEdit).ExecuteCommand(); } if (!_db.Instance.Queryable <TSSMSalesOrderDetailDbModel>().Any(p => p.TransferNum > 0 && p.MainId == mainEntity.SourceId)) { _db.Instance.Updateable <TSSMSalesOrderMainDbModel>().Where(p => p.ID == mainEntity.SourceId).SetColumns(p => p.TransferStatus == false).ExecuteCommand(); } else { _db.Instance.Updateable <TSSMSalesOrderMainDbModel>().Where(p => p.ID == mainEntity.SourceId).SetColumns(p => p.TransferStatus == true).ExecuteCommand(); } //提交事务 currDb.CommitTran(); var resultTemp = await GetWholeMainData(requestObject.PostData.ID, currentUser); return(ResponseUtil <TWMSalesMainQueryModel> .SuccessResult(resultTemp.Data)); } catch (Exception ex) { //回滚事务 currDb.RollbackTran(); //返回异常结果 return(ResponseUtil <TWMSalesMainQueryModel> .FailResult(null, ex.Message)); } }
public ActionResult Update(int id) { /* * 查询申请 */ using (var db = new YGSDbContext()) { var apply = db.Apply.Where(n => n.ID == id).FirstOrDefault(); if (apply == null) { return(ResponseUtil.Error(400, "申请不存在")); } else { // 获得所有外出人员id var userIdList = apply.OutUsers.Split(',').Select(int.Parse).ToList(); return(new JsonNetResult(new { code = 200, data = new { credTypes = new object[] { new { id = 1, type = WHConstants.Cred_Type_Passport, name = "护照" }, new { id = 2, type = WHConstants.Cred_Type_Permit, name = "通行证" } }, record = new { id = apply.ID, outName = apply.OutName, desc = apply.Desc, credType = apply.CredType, applyDate = apply.ApplyDate.ToString("yyyy/MM/dd"), outUsers = db.User.Where(n => userIdList.Contains(n.ID)).Select(n => new { id = n.ID, name = n.Name, credNo = n.CredNo, history = db.History.Where(m => m.ApplyId == apply.ID && m.UserId == n.ID).Select(m => new { id = m.ID, signNo = m.SignNo, signNation = m.SignNation, signTime = m.SignTime, isOut = m.IsOut }).ToList() }).ToList(), applyAtt = db.Attachment.ToList().Where(m => apply.ApplyAtt.Split(',').Select(int.Parse).ToList().Contains(m.ID)).Select(m => new { id = m.ID, name = m.Name, url = Url.Action("Download", "Common", new { id = m.ID }) }), outDate = new { show = apply.OutDate != null, data = apply.OutDate == null ? "" : apply.OutDate.Value.ToString("yyyy/MM/dd") }, afterAtt = new { show = apply.ApplyStatus == WHConstants.Apply_Status_Passed || apply.AfterAtt != null, data = apply.AfterAtt == null ? null: db.Attachment.ToList().Where(m => apply.AfterAtt.Split(',').Select(int.Parse).ToList().Contains(m.ID)).Select(m => new { id = m.ID, name = m.Name, url = Url.Action("Download", "Common", new { id = m.ID }) }) } } } })); } } }
/// <summary> /// 删除T_WM_SalesMain数据 /// </summary> /// <param name="requestObject">Delete请求参数</param> /// <returns>返回响应结果对象,包括响应代码,删除操作结果</returns> public async Task <ResponseObject <bool> > DeleteAsync(RequestDelete <DeleteModel> requestObject, CurrentUser currentUser) { var currDb = _db.Instance;//事务需要使用同一个 SqlSugarClient对象实例 try { if (requestObject.PostData == null && requestObject.PostDataList == null) { return(ResponseUtil <bool> .FailResult(false, "PostData、PostDataList不能都为null")); } //开启事务 currDb.BeginTran(); //删除标识 var mainFlag = true; var detailFlag = true; //var materList = BasicCacheGet.GetMaterial(currentUser); List <int> IDS = new List <int>(); if (requestObject.PostDataList != null && requestObject.PostDataList.Count > 0) { IDS = requestObject.PostDataList.Select(p => p.ID).ToList(); mainFlag = await _db.Instance.Updateable <TWMSalesMainDbModel>() .SetColumns(p => p.DeleteFlag == true) .Where(p => IDS.Contains(p.ID)) .ExecuteCommandAsync() > 0; } else { IDS.Add(requestObject.PostData.ID); //单条删除 mainFlag = await _db.Instance.Updateable <TWMSalesMainDbModel>() .SetColumns(p => p.DeleteFlag == true) .Where(p => p.ID == requestObject.PostData.ID) .ExecuteCommandAsync() > 0; } //批量删除 foreach (int ids in IDS) { List <TSSMSalesOrderDetailDbModel> toEdit = new List <TSSMSalesOrderDetailDbModel>(); //可转销售单详细信息 var mainEntity = _db.Instance.Queryable <TWMSalesMainDbModel>().Where(P => P.ID == ids).First(); //可转销售单主表 var listItem = _db.Instance.Queryable <TSSMSalesOrderDetailDbModel>(). Where(t => t.MainId == mainEntity.SourceId).ToList(); //可转销售单详细信息 var whDetailList = currDb.Queryable <TWMSalesDetailDbModel>().Where(p => p.MainId == ids).ToList(); foreach (var item in whDetailList) { //var me = materList.Where(p => p.ID == item.MaterialId).FirstOrDefault(); //* decimal proNum = UnitChange.TranserUnit(me, UnitType.Warehouse, UnitType.Sales, item.ActualNum); var m = listItem.Where(p => p.ID == item.SalesOrderDetailId).FirstOrDefault(); if (m != null) { //m.TransferNum = m.TransferNum + proNum; m.TransferNum = m.TransferNum + item.SalesOrderActualNum; toEdit.Add(m); } } if (toEdit.Count() > 0) { _db.Instance.Updateable(toEdit).ExecuteCommand(); } if (!_db.Instance.Queryable <TSSMSalesOrderDetailDbModel>().Any(p => p.TransferNum > 0 && p.MainId == mainEntity.SourceId)) { _db.Instance.Updateable <TSSMSalesOrderMainDbModel>().Where(p => p.ID == mainEntity.SourceId).SetColumns(p => p.TransferStatus == false).ExecuteCommand(); } else { _db.Instance.Updateable <TSSMSalesOrderMainDbModel>().Where(p => p.ID == mainEntity.SourceId).SetColumns(p => p.TransferStatus == true).ExecuteCommand(); } } //提交事务 currDb.CommitTran(); //返回执行结果 return(mainFlag && detailFlag ? ResponseUtil <bool> .SuccessResult(true) : ResponseUtil <bool> .FailResult(false, "删除数据失败!")); } catch (Exception ex) { //回滚事务 currDb.RollbackTran(); //返回异常结果 return(ResponseUtil <bool> .FailResult(false, ex.Message)); } }
public ActionResult DoUpdate(FormCollection collection) { /* * 变量定义 */ // 申请ID int aid = 0; /* * 参数获取 */ // 申请ID var id = collection["id"]; // 团组名 var outName = collection["outName"]; // 出访任务 var descn = collection["desc"]; // 出访类型 var credType = collection["credType"]; // 人员ID列表 var outUsers = collection["outUsers"]; // 申请附件ID列表 var applyAtt = collection["applyAtt"]; // 资料回传附件ID列表 var afterAtt = collection["afterAtt"]; /* * 参数校验 */ // 申请ID if (string.IsNullOrEmpty(id)) { return(ResponseUtil.Error(400, "申请ID不能为空")); } else { if (!int.TryParse(id, out aid)) { return(ResponseUtil.Error(400, "申请ID不正确")); } } // 团组名 if (string.IsNullOrEmpty(outName)) { return(ResponseUtil.Error(400, "团组名不能为空")); } // 出访任务 if (string.IsNullOrEmpty(descn)) { return(ResponseUtil.Error(400, "出访类型不能为空")); } // 人员ID列表 if (string.IsNullOrEmpty(outUsers)) { return(ResponseUtil.Error(400, "出访人员不能为空")); } // 申请附件ID不能为空 if (string.IsNullOrEmpty(applyAtt)) { return(ResponseUtil.Error(400, "申请附件不能为空")); } /* * 查询申请 */ using (var db = new YGSDbContext()) { var apply = db.Apply.Where(n => n.ID == aid).FirstOrDefault(); if (apply == null) { return(ResponseUtil.Error(400, "申请不存在")); } else { apply.OutName = outName; apply.Desc = descn; apply.CredType = credType; apply.OutUsers = outUsers; apply.ApplyAtt = applyAtt; if (!string.IsNullOrEmpty(afterAtt)) { apply.AfterAtt = afterAtt; } else { apply.AfterAtt = null; } // 如果当前申请是被拒绝,则重新到待审核中 if (apply.ApplyStatus == WHConstants.Apply_Status_Rejected) { apply.ApplyStatus = WHConstants.Apply_Status_Examing; var notifyUserIdList = NotificationUtil.GetNotificationUsers(); foreach (var user in notifyUserIdList) { NotificationUtil.SendNotification(user, "您有新的出国申请审核", "/Apps/YGS/Home/Check"); } } db.SaveChanges(); return(ResponseUtil.OK(200, "申请更新成功")); } } }
/// <summary> /// 获取T_WM_OtherWhDetail数据 /// </summary> /// <param name="requestObject">Get请求参数</param> /// <returns>返回响应结果对象,包括响应代码,查询操作结果</returns> public async Task <ResponseObject <int, List <TWMOtherWhDetailQueryModel> > > GetDetailListAsync(RequestObject <int> requestObject) { try { //查询结果集对象 List <TWMOtherWhDetailQueryModel> queryData = null; //总记录数 RefAsync <int> totalNumber = -1; var query = _db.Instance.Queryable <TWMOtherWhDetailDbModel, TBMMaterialFileDbModel, TBMDictionaryTypeDbModel , TBMDictionaryDbModel, TBMDictionaryDbModel, TBMDictionaryDbModel>( (t, t0, t1, t2, t3, t4) => 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 } ); //执行查询 if (requestObject.IsPaging) { queryData = await query.Select((t, t0, t1, t2, t3, t4) => new TWMOtherWhDetailQueryModel { ID = t.ID, MainId = t.MainId, MaterialId = t.MaterialId, WarehouseId = t.WarehouseId, BatchNumber = t.BatchNumber, ShouldNumber = t.ShouldNumber, ActualNumber = t.ActualNumber, MaterialCode = t0.MaterialCode, MaterialName = t0.MaterialName, 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, WarehouseRate = t0.WarehouseRate, Spec = t0.Spec, UnitPrice = t.UnitPrice, Amount = t.Amount, ValidityPeriod = t.ValidityPeriod, }) .Where(t => t.MainId == requestObject.PostData) .ToPageListAsync(requestObject.PageIndex, requestObject.PageSize, totalNumber); } else { queryData = await query.Select((t, t0, t1, t2, t3, t4) => new TWMOtherWhDetailQueryModel { ID = t.ID, MainId = t.MainId, MaterialId = t.MaterialId, WarehouseId = t.WarehouseId, BatchNumber = t.BatchNumber, ShouldNumber = t.ShouldNumber, ActualNumber = t.ActualNumber, MaterialCode = t0.MaterialCode, MaterialName = t0.MaterialName, 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, WarehouseRate = t0.WarehouseRate, Spec = t0.Spec, UnitPrice = t.UnitPrice, Amount = t.Amount, ValidityPeriod = t.ValidityPeriod, }) .Where(t => t.MainId == requestObject.PostData) .ToListAsync(); } //返回执行结果 return(ResponseUtil <int, List <TWMOtherWhDetailQueryModel> > .SuccessResult(requestObject, queryData, totalNumber)); } catch (Exception ex) { //返回查询异常结果 return(ResponseUtil <int, List <TWMOtherWhDetailQueryModel> > .FailResult(requestObject, null, ex.Message)); } }
public ActionResult DoAdd(FormCollection collection) { /* * 变量定义 */ // 当前用户 var employee = (User.Identity as AppkizIdentity).Employee; /* * 参数获取 */ // 组团名 var outName = collection["outName"]; // 任务描述 var descn = collection["desc"]; // 出访类型 var credType = collection["credType"]; // 出访人员履历 var outUsers = collection["outUsers"]; // 申请附件 var applyAtt = collection["applyAtt"]; /* * 参数校验 */ // 团组名 if (string.IsNullOrEmpty(outName)) { return(ResponseUtil.Error(400, "团组名不能为空")); } // 出访任务 if (string.IsNullOrEmpty(descn)) { return(ResponseUtil.Error(400, "任务描述不能为空")); } // 出访类型 if (string.IsNullOrEmpty(credType)) { return(ResponseUtil.Error(400, "出访类型不能为空")); } // 人员ID列表 if (string.IsNullOrEmpty(outUsers)) { return(ResponseUtil.Error(400, "出访人员不能为空")); } // 申请附件ID不能为空 if (string.IsNullOrEmpty(applyAtt)) { return(ResponseUtil.Error(400, "申请附件不能为空")); } /* * 存储申请 */ using (var db = new YGSDbContext()) { var apply = new YGS_Apply(); apply.OutName = outName; apply.Desc = descn; apply.UserId = employee.EmplID; apply.CredType = credType; apply.OutUsers = outUsers; apply.ApplyAtt = applyAtt; apply.ApplyStatus = WHConstants.Apply_Status_Examing; apply.ApplyDate = DateTime.Now; apply.NextStep = "下载并填写表格"; apply.CreateTime = DateTime.Now; apply.UpdateTime = DateTime.Now; apply.IsDelete = false; db.Apply.Add(apply); db.SaveChanges(); var notifyUserIdList = NotificationUtil.GetNotificationUsers(); foreach (var user in notifyUserIdList) { NotificationUtil.SendNotification(user, "您有新的出国申请审核", "/Apps/YGS/Home/Check"); } return(ResponseUtil.OK(200, "创建成功")); } }
/// <summary> /// 获取T_WM_OtherWhMain主表数据数据 /// </summary> /// <param name="requestObject">Get请求参数</param> /// <param name="currentUser"></param> /// <returns>返回响应结果对象,包括响应代码,查询操作结果</returns> public async Task <ResponseObject <TWMOtherWhMainQueryModel, List <TWMOtherWhMainQueryModel> > > GetMainListAsync(RequestObject <TWMOtherWhMainQueryModel> requestObject, CurrentUser currentUser) { try { List <TWMOtherWhMainQueryModel> queryData = null; //查询结果集对象 RefAsync <int> totalNumber = -1; //总记录数 var query = _db.Instance.Queryable <TWMOtherWhMainDbModel, TSMUserAccountDbModel, TSMUserAccountDbModel, TSMUserAccountDbModel>( (t, t0, t1, t2) => new object[] { JoinType.Left, t.OperatorId == t0.ID, JoinType.Left, t.ReceiptId == t1.ID, JoinType.Left, t.AuditId == t2.ID }); //查询条件 if (requestObject.QueryConditions != null && requestObject.QueryConditions.Count > 0) { var conditionals = SqlSugarUtil.GetConditionalModels(requestObject.QueryConditions); query.Where(conditionals); } //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { foreach (var item in requestObject.OrderByConditions) { var exp = SqlSugarUtil.GetOrderByLambda <TWMOtherWhMainDbModel>(item.Column); if (exp == null) { continue; } if (item.Condition.ToLower() != "asc" && item.Condition.ToLower() != "desc") { continue; } query.OrderBy($"{item.Column} {item.Condition}"); } } //执行查询 if (requestObject.IsPaging) { queryData = await query.Select((t, t0, t1, t2) => new TWMOtherWhMainQueryModel { ID = t.ID, WarehousingType = t.WarehousingType, WarehousingDate = t.WarehousingDate, WarehousingOrder = t.WarehousingOrder, AuditStatus = t.AuditStatus, OperatorId = t.OperatorId, OperatorName = t0.AccountName, ReceiptId = t.ReceiptId, ReceiptName = t1.AccountName, AuditId = t.AuditId, AuditName = t2.AccountName, AuditTime = t.AuditTime, DeleteFlag = t.DeleteFlag, Number = t.Number, Amount = t.Amount, AllowEdit = currentUser.UserID == t.OperatorId && t.AuditStatus != 2 }) .Where(t => t.CompanyId == currentUser.CompanyID && !(bool)t.DeleteFlag) .ToPageListAsync(requestObject.PageIndex, requestObject.PageSize, totalNumber); } else { queryData = await query.Select((t, t0, t1, t2) => new TWMOtherWhMainQueryModel { ID = t.ID, WarehousingType = t.WarehousingType, WarehousingDate = t.WarehousingDate, WarehousingOrder = t.WarehousingOrder, AuditStatus = t.AuditStatus, OperatorId = t.OperatorId, OperatorName = t0.AccountName, ReceiptId = t.ReceiptId, ReceiptName = t1.AccountName, AuditId = t.AuditId, AuditName = t2.AccountName, AuditTime = t.AuditTime, DeleteFlag = t.DeleteFlag, Number = t.Number, Amount = t.Amount, AllowEdit = currentUser.UserID == t.OperatorId && t.AuditStatus != 2 }) .Where(t => t.CompanyId == currentUser.CompanyID && !(bool)t.DeleteFlag) .ToListAsync(); } //返回执行结果 return(ResponseUtil <TWMOtherWhMainQueryModel, List <TWMOtherWhMainQueryModel> > .SuccessResult(requestObject, queryData, totalNumber)); } catch (Exception ex) { //返回查询异常结果 return(ResponseUtil <TWMOtherWhMainQueryModel, List <TWMOtherWhMainQueryModel> > .FailResult(requestObject, null, ex.Message)); } }
/// <summary> /// 获取T_BM_Package数据 /// </summary> /// <param name="requestObject">返回响应结果对象,包括响应代码,查询操作结果</param> /// <returns></returns> public async Task <ResponseObject <List <TBMPackageQueryModel> > > GetAsync(RequestGet requestObject, CurrentUser currentUser) { try { List <TBMPackageQueryModel> queryData = null; //查询结果集对象 RefAsync <int> totalNumber = -1; //总记录数 var query = _db.Instance.Queryable <TBMPackageDbModel, TSMUserAccountDbModel, TSMUserAccountDbModel>( (t, t1, t2) => new object[] { JoinType.Left, t.CreateId == t1.ID, JoinType.Left, t.UpdateId == t2.ID }).Where((t, t1, t2) => SqlFunc.IsNull(t.DeleteFlag, false) == false && t.CompanyId == currentUser.CompanyID); //查询条件 if (requestObject.QueryConditions != null && requestObject.QueryConditions.Count > 0) { var conditionals = SqlSugarUtil.GetConditionalModels(requestObject.QueryConditions); foreach (ConditionalModel item in conditionals) { item.FieldName = item.FieldName = $"t.{item.FieldName}"; } query.Where(conditionals); } //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { foreach (var item in requestObject.OrderByConditions) { var exp = SqlSugarUtil.GetOrderByLambda <TBMPackageDbModel>(item.Column); if (exp == null) { continue; } if (item.Condition.ToLower() != "asc" && item.Condition.ToLower() != "desc") { continue; } query.OrderBy($"{item.Column} {item.Condition}"); } } //执行查询 if (requestObject.IsPaging) { queryData = await query .Where(t => t.DeleteFlag == false) .Select((t, t1, t2) => new TBMPackageQueryModel { ID = t.ID, DicCode = t.DicCode, DicValue = t.DicValue, Remark = t.Remark, CreateTime = t.CreateTime, CreateId = t.CreateId, CreateName = t1.AccountName, UpdateTime = t.UpdateTime, UpdateId = t.UpdateId, UpdateName = t2.AccountName, ImgPath = t.ImgPath, }) .ToPageListAsync(requestObject.PageIndex, requestObject.PageSize, totalNumber); } else { queryData = await query .Where(t => t.DeleteFlag == false) .Select((t, t1, t2) => new TBMPackageQueryModel { ID = t.ID, DicCode = t.DicCode, DicValue = t.DicValue, Remark = t.Remark, CreateTime = t.CreateTime, CreateId = t.CreateId, CreateName = t1.AccountName, UpdateTime = t.UpdateTime, UpdateId = t.UpdateId, UpdateName = t2.AccountName, ImgPath = t.ImgPath, }) .ToListAsync(); } //返回执行结果 return(ResponseUtil <List <TBMPackageQueryModel> > .SuccessResult(queryData, totalNumber)); } catch (Exception ex) { //返回查询异常结果 return(ResponseUtil <List <TBMPackageQueryModel> > .FailResult(null, ex.Message)); } }