using JiepeiWMS.Common.Enums; using JiepeiWMS.Common.Helper; using JiepeiWMS.Extends; using JiepeiWMS.IServices; using JiepeiWMS.Model; using JiepeiWMS.Model.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SqlSugar; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Threading.Tasks; namespace JiepeiWMS.Api.Controllers { [Route("api/[controller]/[action]")] [ApiController] [Authorize(Permissions.Name)] public class WMInInventoryController : ControllerBase { /// /// 入库单管理 /// private readonly IWMInInventoryServices _wMInInventoryServices; private readonly IWMInInventoryInfoServices _wMInInventoryInfoServices; private readonly ISysUserInfoServices _sysUserInfoServices; private readonly IDepartmentServices _departmentServices; private readonly IWMWareHouseServices _wMWareHouseServices; private readonly IWMSupplierServices _wMSupplierServices; private readonly IWMProductListServices _wMProductListServices; private readonly IWMProductSpecServices _wMProductSpecServices; private readonly IWMPurchaseQuoteDetailServices _wMPurchaseQuoteDetail; private readonly IWMProductLocationServices _wMProductLocationServices; public WMInInventoryController( IWMInInventoryServices WMInInventoryServices, IWMInInventoryInfoServices WMInInventoryInfoServices, ISysUserInfoServices sysUserInfoServices, IDepartmentServices DepartmentServices, IWMWareHouseServices WMWareHouseServices, IWMSupplierServices WMSupplierServices, IWMProductListServices WMProductListServices, IWMProductSpecServices WMProductSpecServices, IWMPurchaseQuoteDetailServices BllWMPurchaseQuoteDetail, IWMProductLocationServices WMProductLocationServices) { _wMInInventoryServices = WMInInventoryServices; _wMInInventoryInfoServices = WMInInventoryInfoServices; _sysUserInfoServices = sysUserInfoServices; _departmentServices = DepartmentServices; _wMWareHouseServices = WMWareHouseServices; _wMSupplierServices = WMSupplierServices; _wMProductListServices = WMProductListServices; _wMProductSpecServices = WMProductSpecServices; _wMPurchaseQuoteDetail = BllWMPurchaseQuoteDetail; _wMProductLocationServices = WMProductLocationServices; } /// /// 查询列表 /// /// 页数 /// 部门 /// 仓库 /// 供应商 /// 出入库类型 /// 条数 /// [HttpGet] public async Task>> Index(string department = "", string wareHouse = "", string supplier = "", string outInType = "", int page = 1, int intPageSize = 20) { if (string.IsNullOrWhiteSpace(department)) department = ""; if (string.IsNullOrWhiteSpace(wareHouse)) wareHouse = ""; if (string.IsNullOrWhiteSpace(supplier)) supplier = ""; if (string.IsNullOrWhiteSpace(outInType)) outInType = ""; var PageList = await _wMInInventoryServices.GetWMInInventoryPage(page, intPageSize, department, wareHouse, supplier, outInType); return new MessageModel>() { msg = "获取成功", success = PageList.dataCount >= 0, response = PageList }; } /// /// 获取列表 /// /// [HttpGet] public async Task> Get(int id = 0) { return new MessageModel() { msg = "获取成功", success = true, response = await _wMInInventoryServices.QueryById(id) }; } /// /// 入库单详情 /// /// /// [HttpGet] public async Task> Detail(int Id = 0) { var model = await _wMInInventoryServices.QueryById(Id); if (model != null) { //采购员 var UserInfoModel = await _sysUserInfoServices.QueryById(model.EmployeeId); if (UserInfoModel != null) model.EmployeeName = UserInfoModel.uRealName; //部门名称 var DepartmentModel = await _departmentServices.QueryById(model.DepartmentId); if (DepartmentModel != null) model.DepartmentName = DepartmentModel.Name; //仓库名称 var WareHouseModel = await _wMWareHouseServices.QueryById(model.WareHouseId); if (WareHouseModel != null) model.WareHouseName = WareHouseModel.Name; //供应商 var SupplierModel = await _wMSupplierServices.QueryById(model.SupplierId); if (SupplierModel != null) model.SupplierName = SupplierModel.Name; var dicType = typeof(EnumWMInInventoryType)._GetValueDescriptionDicFromEnumType(); string name; model.OutInTypeName = dicType.TryGetValue((EnumWMInInventoryType)model.OutInType, out name) ? name : string.Empty; model.InInventoryInfoList = await _wMInInventoryInfoServices.Query(w => w.InInventoryId == model.Id); foreach (var item in model.InInventoryInfoList) { //商品信息 var ProductModel = await _wMProductListServices.GetModel(w => w.Id == item.ProductId); if (ProductModel != null) { item.ProductName = ProductModel.Name; item.ProductCode = ProductModel.Code; //计算总价 item.ActualAmount = item.StorageNum.Value * item.Price; //商品规格 var ProductSpecModel = await _wMProductSpecServices.GetModel(w => w.Id == ProductModel.SpecIds); if (ProductSpecModel != null) { item.ProductSpec = ProductSpecModel.Name; } } //库位 var ProductLocationModel = await _wMProductLocationServices.QueryById(item.LocationId); if (ProductLocationModel != null) item.LocationName = ProductLocationModel.LocationName; } } return new MessageModel() { msg = "获取成功", success = true, response = model }; } /// /// 删除 /// /// [HttpDelete] public async Task> Delete(int id = 0) { var data = new MessageModel(); if (id > 0) { var detail = await _wMInInventoryServices.QueryById(id); if (detail != null) { data.success = await _wMInInventoryServices.Update(detail); if (data.success) { data.msg = "删除成功"; data.response = detail?.Id.ObjToString(); } } } return data; } } }