using JiepeiWMS.Common.Enums; 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.Linq; using System.Linq.Expressions; using System.Threading.Tasks; using JiepeiWMS.Common.Helper; using JiepeiWMS.Model.ViewModels; using JiepeiWMS.Common.HttpContextUser; using JiepeiWMS.Api.Models; namespace JiepeiWMS.Api.Controllers { [Route("api/[controller]/[action]")] [ApiController] [Authorize(Permissions.Name)] public class WMPurchaseQuoteDetailController : ControllerBase { /// /// 服务器接口,因为是模板生成,所以首字母是大写的,自己可以重构下 /// private readonly IWMPurchaseQuoteDetailServices _BllWMPurchaseQuoteDetail; private readonly IDepartmentServices _BllDepartment; private readonly IWMProductUnitServices _BllWMProductUnit; private readonly ISysOrgServices _BllSysOrg; private readonly IWMSupplierServices _BllWMSupplier; private readonly IWMQuoteInfoServices _BllWMQuoteInfo; private readonly IWMQuoteInfoLogServices _BllWMQuoteInfoLog; private readonly IWMCheckInfoServices _BLLWMCheckInfo; private readonly IUser _User; private readonly IWMWareHouseServices _wMWareHouseServices; private readonly ISysUserInfoServices _sysUserInfoServices; private readonly IWMSupplierServices _wMSupplierServices; public WMPurchaseQuoteDetailController( IWMPurchaseQuoteDetailServices BllWMPurchaseQuoteDetail, IDepartmentServices BllDepartment, IWMProductUnitServices BllWMProductUnit, ISysOrgServices BllSysOrg, IWMSupplierServices BllWMSupplier, IWMQuoteInfoServices BllWMQuoteInfo, IWMQuoteInfoLogServices BllWMQuoteInfoLog, IWMCheckInfoServices BLLWMCheckInfo, IUser User, IWMWareHouseServices WMWareHouseServices, ISysUserInfoServices sysUserInfoServices, IWMSupplierServices WMSupplierServices ) { _BllWMPurchaseQuoteDetail = BllWMPurchaseQuoteDetail; _BllDepartment = BllDepartment; _BllWMProductUnit = BllWMProductUnit; _BllSysOrg = BllSysOrg; _BllWMSupplier = BllWMSupplier; _BllWMQuoteInfo = BllWMQuoteInfo; _BllWMQuoteInfoLog = BllWMQuoteInfoLog; _BLLWMCheckInfo = BLLWMCheckInfo; _User = User; _wMWareHouseServices = WMWareHouseServices; _sysUserInfoServices = sysUserInfoServices; _wMSupplierServices = WMSupplierServices; } [HttpGet] public async Task>> GetList( int? Id = null, string ProductCode = null, string PurchaseCode = null, string QuoteCode = null, int? Status = null, DateTime? StartTime = null, DateTime? EndTime = null, int PageIndex = 1, int PageSize = 20) { Expression> whereExpression = (pg, pl, pi, qi, dp, ps) => pg.SysOrgId == _User.SysOrgId; if (Id != null) { whereExpression = whereExpression.And((pg, pl, pi, qi, dp, ps) => pg.Id == Id); } if (!string.IsNullOrEmpty(ProductCode)) { ProductCode = ProductCode.Trim(); whereExpression = whereExpression.And((pg, pl, pi, qi, dp, ps) => pl.Code == ProductCode); } if (!string.IsNullOrEmpty(PurchaseCode)) { PurchaseCode = PurchaseCode.Trim(); whereExpression = whereExpression.And((pg, pl, pi, qi, dp, ps) => pi.PurchaseCode == PurchaseCode); } if (!string.IsNullOrEmpty(QuoteCode)) { QuoteCode = QuoteCode.Trim(); whereExpression = whereExpression.And((pg, pl, pi, qi, dp, ps) => qi.QuoteCode == QuoteCode); } if (Status == 30)//审核通过 { whereExpression = whereExpression.And((pg, pl, pi, qi, dp, ps) => pg.Status == 30); } else if (Status == 80)//采购中 { whereExpression = whereExpression.And((pg, pl, pi, qi, dp, ps) => pg.Status == 80 || pg.Status == 90); } if (StartTime.HasValue) { whereExpression = whereExpression.And((pg, pl, pi, qi, dp, ps) => pg.CreateTime >= StartTime.Value); } if (EndTime.HasValue) { EndTime = EndTime.Value.AddSeconds(1); whereExpression = whereExpression.And((pg, pl, pi, qi, dp, ps) => pg.CreateTime < EndTime.Value); } var plst = await _BllWMPurchaseQuoteDetail.QueryPage( (pg, pl, pi, qi, dp, ps) => new object[] { JoinType.Left, pg.ProductId == pl.Id, JoinType.Left, pg.PurchaseId == pi.Id, JoinType.Left, pg.QuoteId == qi.Id, JoinType.Left, pg.DepartmentId == dp.Id, JoinType.Left, pl.SpecIds==ps.Id }, (pg, pl, pi, qi, dp, ps) => new WMPurchaseQuoteDetail { Id = pg.Id, Amount = pg.Amount, CheckNum = pg.CheckNum, CreateTime = pg.CreateTime, DepartmentId = pg.DepartmentId, DepartmentName = dp.Name, DisAmount = pg.DisAmount, Discount = pg.Discount, DiscountPrice = pg.DiscountPrice, Price = pg.Price, ProductCode = pl.Code, ProductId = pg.ProductId, ProductName = pl.Name, ProductSpec = ps.Name, PuchaseOrderNo = pi.PurchaseCode, PurchaseId = pg.PurchaseId, PurchaseNum = pg.PurchaseNum, PurchaseUnit = pg.PurchaseUnit, Quantity = pg.Quantity, QuoteId = pg.QuoteId, QuoteOrderNo = qi.QuoteCode, Remark = pg.Remark, Status = pg.Status, StorageNum = pg.StorageNum, SysOrgId = pg.SysOrgId, TypeId = pg.TypeId, UpdateTime = pg.UpdateTime, WareHouseId = pi.WareHouseId, EmployeeId = pi.EmployeeId, SupplierId = qi.SupplierId.Value, }, whereExpression, PageIndex, PageSize, OrderByFileds: " pg.Status, pg.id desc"); var dicstatus = typeof(EnumWMPurchaseDetailStatus)._GetValueDescriptionDicFromEnumType(); foreach (var i in plst.data) { string name; i.StatusName = dicstatus.TryGetValue((EnumWMPurchaseDetailStatus)i.Status, out name) ? name : string.Empty; //仓库信息 if (i.WareHouseId > 0) { var WareHouseModel = await _wMWareHouseServices.QueryById(i.WareHouseId.Value); if (WareHouseModel != null) i.WareHouseName = WareHouseModel.Name; } //采购员 if (i.EmployeeId > 0) { var UserInfoModel = await _sysUserInfoServices.QueryById(i.EmployeeId); if (UserInfoModel != null) i.EmployeeName = UserInfoModel.uRealName; } //供应商 if (i.SupplierId > 0) { var SupplierModel = await _wMSupplierServices.QueryById(i.SupplierId); if (SupplierModel != null) i.SupplierName = SupplierModel.Name; } //主体 if (i.SysOrgId > 0) { var _SysOrgModel = await _BllSysOrg.QueryById(i.SysOrgId); if (_SysOrgModel != null) i.CompanyName = _SysOrgModel.CompanyName; } i.OutInType = 1; i.InTime = DateTime.Now; //没有入库数就默认入全部 if (i.StorageNum == 0 || i.StorageNum == null) { i.inputNum = (int)(i.CheckNum ?? 0m); } else { i.inputNum = (int)(i.CheckNum ?? 0m) - (int)(i.StorageNum ?? 0m); if (i.inputNum < 0) i.inputNum = 1; } } return new MessageModel>() { msg = "获取成功", success = true, response = plst }; } [HttpGet] public async Task> GetParams() { var dicDepartmentId = await _BllDepartment.Query(t => t.Status > 0); var dicStatus = typeof(EnumWMPurchaseDetailStatus)._GetValueDescriptionDicFromEnumType().Select(t => new { Key = t.Key.GetHashCode(), t.Value }); var dicPurchaseUnit = await _BllWMProductUnit.Query(); var dicSysOrgId = await _BllSysOrg.Query(); var dicTypeId = typeof(EnumWMPurchaseType)._GetValueDescriptionDicFromEnumType().Select(t => new { Key = t.Key.GetHashCode(), t.Value }); var dicPayType = typeof(EnumPayType)._GetValueDescriptionDicFromEnumType().Select(t => new { Key = t.Key.GetHashCode(), t.Value }); var dicSupplierId = await _BllWMSupplier.Query(); var dicWMPurchaseStatus = typeof(EnumWMPurchaseStatus)._GetValueDescriptionDicFromEnumType().Select(t => new { Key = t.Key.GetHashCode(), t.Value }); return new MessageModel() { msg = "获取成功", success = true, response = new { dicDepartmentId, dicStatus, dicPurchaseUnit, dicSysOrgId, dicTypeId, dicPayType, dicSupplierId, dicWMPurchaseStatus } }; } [HttpPost] public async Task> Add([FromBody] WMPurchaseQuoteDetail request) { var data = new MessageModel(); request.Amount = request.Quantity * request.Price; request.DisAmount = request.Quantity * request.DiscountPrice; request.UpdateTime = DateTime.Now; request.CreateTime = DateTime.Now; var id = await _BllWMPurchaseQuoteDetail.Add(request); data.success = id > 0; if (data.success) { data.response = id.ObjToString(); data.msg = "添加成功"; } return data; } [HttpPut] public async Task> Edit([FromBody] WMPurchaseQuoteDetail request) { var data = new MessageModel(); if (request.Id > 0) { request.Amount = request.Quantity * request.Price; request.DisAmount = request.Quantity * request.DiscountPrice; request.UpdateTime = DateTime.Now; data.success = await _BllWMPurchaseQuoteDetail.Update(request, lstIgnoreColumns: new System.Collections.Generic.List { "CreateTime" }); if (data.success) { data.msg = "更新成功"; data.response = request?.Id.ObjToString(); } } return data; } [HttpDelete] public async Task> Delete(int id = 0) { var data = new MessageModel(); if (id > 0) { var detail = await _BllWMPurchaseQuoteDetail.QueryById(id); if (detail != null) { data.success = await _BllWMPurchaseQuoteDetail.Delete(detail); if (data.success) { data.msg = "删除成功"; data.response = detail?.Id.ObjToString(); } } } return data; } [HttpDelete] public async Task> DeleteMore(string Ids = "") { var data = new MessageModel(); var lstid = Ids._ToIntList(); if (lstid.Count > 0) { var ok = await _BllWMPurchaseQuoteDetail.DeleteByIds(lstid.Select(t => (object)t).ToArray()); if (ok) { data.msg = "删除成功"; data.response = string.Empty; } } return data; } /// /// 报价 /// /// /// [HttpPost] public async Task> QuoteAdd([FromBody] VMWMQuoteInfo request) { request.SysOrgId = _User.SysOrgId; var msg = await _BllWMQuoteInfo.AddInfo(request, _User.ID); return new MessageModel { success = string.IsNullOrEmpty(msg), msg = msg }; } /// /// 入库 /// /// 列表信息 /// 结果 [HttpPost] public async Task> Enter([FromBody] VMWMQuoteInfo Info) { var msg = await _BllWMPurchaseQuoteDetail.Enter(Info.ListDetail.ToArray(), _User.ID); if (!string.IsNullOrEmpty(msg)) { goto ErrorResult; } return new MessageModel() { msg = string.Empty, success = true }; ErrorResult: return new MessageModel() { msg = msg, success = false }; } [HttpPost] public async Task> SetNoPass([FromBody] VmIds Vm) { var data = new MessageModel(); var msg = await _BllWMPurchaseQuoteDetail.SetNoPass(Vm.Ids, _User.ID); data.success = string.IsNullOrEmpty(msg); if (data.success) { data.msg = "操作成功"; return data; } data.msg = msg; return data; } } }