using JiepeiWMS.Common.Config; using JiepeiWMS.Common.Enums; using JiepeiWMS.Common.Helper; using JiepeiWMS.Common.HttpContextUser; using JiepeiWMS.Extends; using JiepeiWMS.IRepository.UnitOfWork; using JiepeiWMS.IServices; using JiepeiWMS.Model; using JiepeiWMS.Model.Models; using JiepeiWMS.Model.ViewModels; using JiepeiWMS.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using SqlSugar; using StackExchange.Profiling.Internal; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Security.Claims; using System.Threading.Tasks; namespace JiepeiWMS.Api.Controllers { [Route("api/[controller]/[action]")] [ApiController] [Authorize(Permissions.Name)] public class WMPurchaseInfoController : ControllerBase { /// /// 服务器接口,因为是模板生成,所以首字母是大写的,自己可以重构下 /// private readonly IWMPurchaseInfoServices _wMPurchaseInfoServices; private readonly IUser _user; private readonly IWMWareHouseServices _WMWareHouseServices; private readonly IDepartmentServices _DepartmentServices; private readonly ISysUserInfoServices _sysUserInfoServices; private readonly ILogger _logger; private readonly IWMPurchaseQuoteDetailServices _WMPurchaseQuoteDetailServices; private readonly IWMProductListServices _WMProductListServices; private readonly IWMCheckInfoServices _BllCheckInfo; private readonly IRoleServices _roleServices; private readonly IWMProductInfoServices _WMProductInfoServices; private readonly IWMStockLogServices _WMStockLogServices; private readonly IWMProductSpecServices _WMProductSpecServices; private readonly IUnitOfWork _unitOfWork; private readonly IWMPurchaseInfoLogServices _WMPurchaseInfoLogServices; private readonly IWMProductUnitServices _WMProductUnitServices; #region 视图 public WMPurchaseInfoController(IWMPurchaseInfoServices WMPurchaseInfoServices , IUser user , ISysUserInfoServices sysUserInfoServices , IDepartmentServices DepartmentServices , ILogger logger , IWMPurchaseQuoteDetailServices WMPurchaseQuoteDetailServices , IWMProductListServices WMProductListServices , IWMCheckInfoServices BllCheckInfo , IRoleServices roleServices , IWMProductInfoServices WMProductInfoServices , IWMStockLogServices WMStockLogServices , IWMWareHouseServices WMWareHouseServices , IWMProductSpecServices WMProductSpecServices , IUnitOfWork unitOfWork , IWMPurchaseInfoLogServices WMPurchaseInfoLogServices , IWMProductUnitServices WMProductUnitServices) { _wMPurchaseInfoServices = WMPurchaseInfoServices; _user = user; _sysUserInfoServices = sysUserInfoServices; _DepartmentServices = DepartmentServices; _logger = logger; _WMPurchaseQuoteDetailServices = WMPurchaseQuoteDetailServices; _WMProductListServices = WMProductListServices; _BllCheckInfo = BllCheckInfo; _roleServices = roleServices; _WMProductInfoServices = WMProductInfoServices; _WMStockLogServices = WMStockLogServices; _WMWareHouseServices = WMWareHouseServices; _WMProductSpecServices = WMProductSpecServices; _unitOfWork = unitOfWork; _WMPurchaseInfoLogServices = WMPurchaseInfoLogServices; _WMProductUnitServices = WMProductUnitServices; } /// /// 采购列表 /// /// 默认显示第几页 /// 入库编号 /// 状态查询 /// 开始时间 /// 结束时间 /// 一页多少条数据 /// [HttpGet] public async Task>> Get(int page = 1, string key = "", string StatusOptions = "", DateTime? startdate = null, DateTime? enddate = null, int intPageSize = 20) { Expression> whereExpression = w => w.Id > 0; //int Status = -1; if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key)) { key = ""; } whereExpression = whereExpression.And(w => w.PurchaseCode.Contains(key.Trim())); //var b = await _sysUserInfoServices.IsUserIdIntoRoleName(_user.ID, RoleConfig.SaleCangKuStaff); //if (b) { Status = EnumWMPurchaseStatus.CheckedPass.GetHashCode(); } //状态筛选 if (!string.IsNullOrWhiteSpace(StatusOptions)) { whereExpression = whereExpression.And(w => w.Status == StatusOptions.ObjToInt()); } whereExpression = whereExpression.And(w => w.Status != -1); //开始时间 if (startdate != null) { whereExpression = whereExpression.And(w => w.CreateTime >= startdate); } //结束时间 if (enddate != null) { whereExpression = whereExpression.And(w => w.CreateTime <= enddate); } //获取角色信息,判断是否数据展示 var role = string.Join(",", _user.GetClaimValueByType(ClaimTypes.Role)); if (role.Contains("SuperAdmin") || role.Contains("仓库管理员") || role.Contains("超级管理员")) { whereExpression = whereExpression.And(w => w.Id > 0); } if (role.Contains("审批人员")) { //显示对应审批人对应数据 whereExpression = whereExpression.And(w => w.CheckAdminId == _user.ID); } if (role.Contains("生产人员")) { //根据采购申请人能看到自己发起的采购单 whereExpression = whereExpression.And(w => w.EmployeeId == _user.ID); } //显示当前操作人的主体ID whereExpression = whereExpression.And(w => w.SysOrgId == _user.SysOrgId); //var data = await _wMPurchaseInfoServices.QueryPage(a => a.Type >= 0 && ((a.PurchaseCode != null && a.PurchaseCode.Contains(key))), page, intPageSize, " Id desc "); //var a = _wMPurchaseInfoServices.QueryTable(""); //var WmpurchaseUserDeparment = await _wMPurchaseInfoServices.QueryMuchTablePurchaseInfo(); //分页加多表查询 var PageList = await _wMPurchaseInfoServices.QueryTabsPage( (w, su, su2, dp, wm) => new object[] { JoinType.Left,su.uID==w.EmployeeId, JoinType.Left,su2.uID==w.CheckAdminId, JoinType.Left,su.DepartmentId==dp.Id, JoinType.Left,w.WareHouseId==wm.Id, }, (w, su, su2, dp, wm) => new WMPurchaseInfo() { Id = w.Id, Type = w.Type, CheckAdminId = w.CheckAdminId, WareHouseId = w.WareHouseId, CheckKey = w.CheckKey, EmployeeId = w.EmployeeId, CheckRank = w.CheckRank, CheckRemark = w.CheckRemark, PurchaseCode = w.PurchaseCode, Status = w.Status, CreateTime = w.CreateTime, UpdateTime = w.UpdateTime, UName = su.uRealName, DName = dp.Name, Remark = w.Remark, ProductUse = w.ProductUse, WareHouseName = wm.Name, CheckName = su2.uRealName, SysOrgId = w.SysOrgId }, whereExpression, page, intPageSize, " w.Id desc" ); //获取审批枚举状态 var dicStatus = typeof(EnumWMPurchaseStatus)._GetValueDescriptionDicFromEnumType(); foreach (var item in PageList.data) { string name; item.StatusName = dicStatus.TryGetValue((EnumWMPurchaseStatus)item.Status, out name) ? name : string.Empty; } //获取采购枚举状态 var dicType = typeof(EnumWMPurchaseType)._GetValueDescriptionDicFromEnumType(); foreach (var item in PageList.data) { string name; item.TypeName = dicType.TryGetValue((EnumWMPurchaseType)item.Type, out name) ? name : string.Empty; item.PurchaseQuoteDetailList = await _WMPurchaseQuoteDetailServices.Query(w => w.PurchaseId == item.Id); foreach (var item1 in item.PurchaseQuoteDetailList) { //商品信息表 var ProductModel = await _WMProductListServices.GetModel(w => w.Id == item1.ProductId); if (ProductModel != null) { item1.ProductName = ProductModel.Name; //商品单位信息 var ProductSpecModel = await _WMProductSpecServices.GetModel(w => w.Id == ProductModel.SpecIds); if (ProductSpecModel != null) { item1.ProductSpec = ProductSpecModel.Name; } } } } //data.data = WmpurchaseUserDeparment; return new MessageModel>() { msg = "获取成功", success = PageList.dataCount > 0, response = PageList }; } /// /// 采购详情 /// /// /// [HttpGet] public async Task> Detail(int Id = 0) { try { var model = await _wMPurchaseInfoServices.GetModel(w => w.Id == Id); model.PurchaseQuoteDetailList = await _WMPurchaseQuoteDetailServices.Query(w => w.PurchaseId == Id); //查出仓库模型 var WMWareHouseModel = await _WMWareHouseServices.GetModel(w => w.Id == model.WareHouseId); //查出用户模型 var UserModel = await _sysUserInfoServices.GetModel(u => u.uID == model.EmployeeId); if (UserModel != null) model.UName = UserModel.uRealName; model.CheckName = UserModel.uRealName; //当前操作人 model.currentID = _user.ID; //将当前时间赋值给扩展字段在前台展示出来 model.Time = DateTime.Now; //部门名称 var DepartmentModel = await _DepartmentServices.GetModel(d => d.Id == UserModel.DepartmentId); if (DepartmentModel != null) model.DName = DepartmentModel.Name; if (WMWareHouseModel != null) model.WareHouseName = WMWareHouseModel.Name; //获取审批枚举状态 var dicStatus = typeof(EnumWMPurchaseStatus)._GetValueDescriptionDicFromEnumType(); string name; model.StatusName = dicStatus.TryGetValue((EnumWMPurchaseStatus)model.Status, out name) ? name : string.Empty; //获取采购枚举状态 var dicType = typeof(EnumWMPurchaseType)._GetValueDescriptionDicFromEnumType(); model.TypeName = dicType.TryGetValue((EnumWMPurchaseType)model.Type, out name) ? name : string.Empty; //获取审批流 var checkModel = await _BllCheckInfo.GetModel(w => w.SysOrgId == _user.SysOrgId && w.Key == model.CheckKey); if (checkModel != null) { var rankList = JsonHelper.DeserializeObject(checkModel.Json); var checkarr = rankList.checkRankList.Select(w => w.AdminName).ToArray(); model.CheckStrStep = checkarr.ToList(); model.CheckRankStep = model.CheckRank == 0 ? checkarr.Count() : (model.CheckRank - 1); } else { model.CheckStrStep = new List(); model.CheckRankStep = 0; } foreach (var item in model.PurchaseQuoteDetailList) { //商品信息表 var ProductModel = await _WMProductListServices.GetModel(w => w.Id == item.ProductId); if (ProductModel != null) { item.ProductName = ProductModel.Name; item.ProductCode = ProductModel.Code; //计算总价 item.ActualAmount = item.ActualAmount + (item.Quantity * ProductModel.Price); } else { item.ActualAmount = item.ActualAmount + item.Amount.Value; } //商品关联表 var _productInfo = await _WMProductInfoServices.GetModel(w => w.ProductListId == item.ProductId && w.WareHouseId == item.WareHouseId); if (_productInfo != null) { item.StockNum = _productInfo.Quantity != null ? _productInfo.Quantity.Value : 0; item.WeekNum = await _WMStockLogServices.GetStockNumByDateDay(item.ProductId, _productInfo.Id, 7, 1); item.MonthNum = await _WMStockLogServices.GetStockNumByDateDay(item.ProductId, _productInfo.Id, 30, 1); //商品单位信息 var ProductSpecModel = await _WMProductSpecServices.GetModel(w => w.Id == _productInfo.ProductSpecId); if (ProductSpecModel != null) { item.ProductSpec = ProductSpecModel.Name; } } if (model.Type == 1) { item.ActualAmount = item.ActualAmount + item.Amount.Value; } item.Quantity = item.Quantity; item.CheckNum = item.Quantity; item.PurchaseQUoteDetailRemark = item.Remark; item.Checked = 1; var dicQUoteDetailStatus = typeof(EnumWMPurchaseDetailStatus)._GetValueDescriptionDicFromEnumType(); string Qname; item.PurchaseQUoteDetailStatusName = dicQUoteDetailStatus.TryGetValue((EnumWMPurchaseDetailStatus)item.Status, out Qname) ? Qname : string.Empty; } return new MessageModel() { msg = "获取成功", success = true, response = model }; } catch (Exception e) { _logger.LogError(e, e.Message); return new MessageModel() { msg = e.Message, success = false }; } } /// /// 采购申请操作日志 /// /// /// /// /// [HttpGet] public async Task>> GetPurchaseInfoLog(int page = 1, int intPageSize = 20, int Id = 0) { Expression> whereExpression = wlog => wlog.OrderId == Id; whereExpression = whereExpression.And(wlog => wlog.OrderId == Id); var PageList = await _WMPurchaseInfoLogServices.QueryTabsPage ( (wlog, s, w) => new object[] { JoinType.Left,wlog.AdminId==s.uID, JoinType.Left,wlog.OrderId==w.Id, }, (wlog, s, w) => new WMPurchaseInfoLog { AdminId = wlog.AdminId, Content = wlog.Content, CreateTime = wlog.CreateTime, OrderId = wlog.OrderId, Type = wlog.Type, UName = s.uRealName, }, whereExpression, page, intPageSize, "wlog.Id desc" ); return new MessageModel>() { msg = "获取成功", success = PageList.dataCount > 0, response = PageList }; } #endregion #region 操作 /// /// 添加 /// /// /// [HttpPost] public async Task> Post([FromBody] WMPurchaseInfo Model) { var msg = string.Empty; var data = new MessageModel(); try { //创建事务 _unitOfWork.BeginTran(); int PurchaseId = 0; //根据当前操作人查出用户的model var UserModel = await _sysUserInfoServices.GetModel(u => u.uID == _user.ID); //查出审批流 var checkModel = await _BllCheckInfo.GetModel(w => w.SysOrgId == _user.SysOrgId && w.Key == "CGB"); if (checkModel != null) { Model.CheckKey = checkModel.Key; } else { data.msg = "无法获取审批流,请联系管理员!"; throw new Exception("无法获取审批流,请联系管理员!"); } if (string.IsNullOrEmpty(checkModel.Json)) { data.msg = "审批流为空,请联系管理员!"; throw new Exception("审批流为空,请联系管理员!"); } var rankList = JsonHelper.DeserializeObject(checkModel.Json); var CheckRankModel = rankList.checkRankList.Where(w => w.CheckRank == 1).FirstOrDefault(); if (CheckRankModel == null) { data.msg = "无法获取审批人员信息,请联系管理员!"; throw new Exception("无法获取审批人员信息,请联系管理员!"); } Model.CheckAdminId = CheckRankModel.AdminId; Model.CheckRank = 1; if (Model.Type == 1) Model.Status = EnumWMPurchaseStatus.WaitCheck.GetHashCode(); else { var rolemodel = await _roleServices.GetModel(r => r.CreateId == _user.ID); if (rolemodel != null && rolemodel.Name == RoleConfig.SaleCangKuStaff) Model.Status = EnumWMPurchaseStatus.Storageing.GetHashCode(); } Model.EmployeeId = _user.ID; //赋值主体 Model.SysOrgId = _user.SysOrgId; int code = await _wMPurchaseInfoServices.GetMaxId(); Model.PurchaseCode = "WIN000" + (code + 1); if (Model.noMatchData.Count <= 0) { data.msg = "请选择商品信息!"; throw new Exception("请选择商品信息!"); } if (Model.ProductUse == null) { data.msg = "请填写产品用途!"; throw new Exception("请填写产品用途!"); } //获取所有商品 var tablePDData = Model.noMatchData; foreach (var item in tablePDData) { if (item.WNum <= 0) { data.msg = "请填写物料数量!"; throw new Exception("请填写物料数量!"); } WMPurchaseQuoteDetail PurchaseQuoteDetail = new WMPurchaseQuoteDetail(); PurchaseQuoteDetail.PurchaseId = code; PurchaseQuoteDetail.ProductId = item.Id; PurchaseQuoteDetail.TypeId = 1; //添加采购单以当前主体id为主 PurchaseQuoteDetail.SysOrgId = _user.SysOrgId; //判断表示是否需要审核 var modeProductList = await _WMProductListServices.GetModel(w => w.Id == item.Id); var ProductUnitModel = await _WMProductUnitServices.GetModel(w => w.Id == modeProductList.Unit); if (modeProductList != null && modeProductList.IsChecked == false) { Model.Status = EnumWMPurchaseStatus.CheckedPass.GetHashCode(); Model.Remark = Model.Remark; Model.CheckAdminId = 0; PurchaseQuoteDetail.Status = EnumWMPurchaseDetailStatus.CheckedPass.GetHashCode(); PurchaseQuoteDetail.PurchaseId = 0; PurchaseQuoteDetail.CheckNum = item.WNum; PurchaseQuoteDetail.Price = 0; PurchaseQuoteDetail.Amount = 0; PurchaseQuoteDetail.CreateTime = DateTime.Now; PurchaseQuoteDetail.Remark = Model.Remark; PurchaseQuoteDetail.PurchaseUnit = ProductUnitModel.Unit; PurchaseQuoteDetail.WareHouseId = Model.WareHouseId; PurchaseQuoteDetail.DepartmentId = UserModel.DepartmentId.Value; } else { PurchaseQuoteDetail.Status = EnumWMPurchaseDetailStatus.WaitCheck.GetHashCode(); PurchaseQuoteDetail.PurchaseId = 0; PurchaseQuoteDetail.Price = 0; PurchaseQuoteDetail.Amount = 0; PurchaseQuoteDetail.CreateTime = DateTime.Now; PurchaseQuoteDetail.Quantity = item.WNum; PurchaseQuoteDetail.WareHouseId = Model.WareHouseId; PurchaseQuoteDetail.DepartmentId = UserModel.DepartmentId.Value; if (ProductUnitModel != null) { PurchaseQuoteDetail.PurchaseUnit = ProductUnitModel.Unit; } else { PurchaseQuoteDetail.PurchaseUnit = ""; } } PurchaseQuoteDetail.WareHouseId = Model.WareHouseId; PurchaseQuoteDetail.DepartmentId = UserModel.DepartmentId.Value; PurchaseQuoteDetail.CreateTime = DateTime.Now; PurchaseQuoteDetail.PurchaseId = code + 1; PurchaseQuoteDetail.ProductId = item.Id; var pid = await _WMPurchaseQuoteDetailServices.Add(PurchaseQuoteDetail); } //添加操作日志 _wMPurchaseInfoServices.AddLog(1, _user.ID, code + 1, "【添加采购】设置状态为" + ((EnumWMPurchaseStatus)Model.Status)._GetDescriptionByEnumValue()); var id = await _wMPurchaseInfoServices.Add(Model); data.success = id > 0; _unitOfWork.CommitTran(); if (data.success) { data.response = id.ObjToString(); data.msg = "采购单添加成功!"; } } catch (Exception e) { _unitOfWork.RollbackTran(); _logger.LogError(e, e.Message); return data; } return data; } /// /// 审核 /// /// /// [HttpPut] public async Task> Put([FromBody] WMPurchaseInfo request) { bool flag = false; var NewPurchaseQuoteDetailList = new List(); var data = new MessageModel(); try { _unitOfWork.BeginTran(); if (request.Id > 0) { var model = await _wMPurchaseInfoServices.GetModel(w => w.Id == request.Id); if (model.Status == EnumWMPurchaseStatus.CheckedNoPass.GetHashCode()) { data.msg = "当前订单已审核,为审核不通过!"; throw new Exception("当前订单已审核,为审核不通过!"); } if (model != null) { var checkModel = await _BllCheckInfo.GetModel(w => w.SysOrgId == _user.SysOrgId && w.Key == model.CheckKey); if (checkModel == null) { data.msg = "暂无该部门审批流,请先申请配置"; throw new Exception("暂无该部门审批流,请先申请配置"); } if (_user.ID != model.CheckAdminId) { data.msg = "非审批人,审批失败!"; throw new Exception("非审批人,审批失败!"); } //审批数量判断 var rankList = JsonHelper.DeserializeObject(checkModel.Json); foreach (var item in rankList.checkRankList) { //审批人跟审批级别是否一一对应 if (!flag) { if (model.CheckRank == item.CheckRank) { flag = true; //设置下次审批 int index = rankList.checkRankList.IndexOf(item) + 1; //index为索引值 if (rankList.checkRankList.Count > 1 && rankList.checkRankList.Count > index) { model.CheckRank = rankList.checkRankList[index].CheckRank; model.CheckAdminId = rankList.checkRankList[index].AdminId; } //获取所有商品 var tablePDData = request.PurchaseQuoteDetailList; if (tablePDData.Count <= 0) { data.msg = "暂无待审核得商品"; throw new Exception("暂无待审核得商品"); } foreach (var _tableItem in tablePDData) { if (_tableItem.Checked == 0) { data.msg = "请选择审核状态"; throw new Exception("请选择审核状态"); } if (_tableItem.CheckNum <= 0) { data.msg = "审批数量不能小于0"; throw new Exception("审批数量不能小于0"); } var ProductListMdoel = await _WMProductListServices.QueryById(_tableItem.ProductId); var PurchaseQuoteDetailInfo = await _WMPurchaseQuoteDetailServices.GetModel(w => w.Id == _tableItem.Id); if (PurchaseQuoteDetailInfo == null || PurchaseQuoteDetailInfo.Status == EnumWMPurchaseDetailStatus.CheckedNoPass.GetHashCode()) continue; #region 采购数量审批 if (_tableItem.Checked == 2 || ProductListMdoel.IsUse == false) { PurchaseQuoteDetailInfo.Remark = _tableItem.PurchaseQUoteDetailRemark; PurchaseQuoteDetailInfo.Status = EnumWMPurchaseDetailStatus.CheckedNoPass.GetHashCode(); model.CheckAdminId = 0;//审核不通过将审批id设置为0 } else { if (rankList.checkRankList.Count > 1 && rankList.checkRankList.Count > index) PurchaseQuoteDetailInfo.Status = EnumWMPurchaseDetailStatus.Checking.GetHashCode(); else PurchaseQuoteDetailInfo.Status = EnumWMPurchaseDetailStatus.CheckedPass.GetHashCode(); PurchaseQuoteDetailInfo.Quantity = _tableItem.CheckNum.Value; PurchaseQuoteDetailInfo.CheckNum = _tableItem.CheckNum.Value; PurchaseQuoteDetailInfo.Remark += _tableItem.PurchaseQUoteDetailRemark; } #endregion NewPurchaseQuoteDetailList.Add(PurchaseQuoteDetailInfo); var pid = await _WMPurchaseQuoteDetailServices.Update(PurchaseQuoteDetailInfo); } #region 修改审批订单状态 //审核中 var CheckingList = NewPurchaseQuoteDetailList.Where(p => p.Status == EnumWMPurchaseDetailStatus.Checking.GetHashCode()).ToList(); //审核不通过 var CheckedNoPassList = NewPurchaseQuoteDetailList.Where(p => p.Status == EnumWMPurchaseDetailStatus.CheckedNoPass.GetHashCode()).ToList(); //审核通过 var CheckedPassList = NewPurchaseQuoteDetailList.Where(p => p.Status == EnumWMPurchaseDetailStatus.CheckedPass.GetHashCode()).ToList(); var listCount = CheckingList.Count + CheckedNoPassList.Count + CheckedPassList.Count; if (CheckingList.Count > 0) model.Status = EnumWMPurchaseStatus.Checking.GetHashCode(); else { if ((listCount == NewPurchaseQuoteDetailList.Count) && CheckedPassList.Count > 0) { model.Status = EnumWMPurchaseStatus.CheckedPass.GetHashCode(); model.CheckAdminId = 0; model.CheckRank = 0; } else { if (listCount == NewPurchaseQuoteDetailList.Count) { model.Status = EnumWMPurchaseStatus.CheckedNoPass.GetHashCode(); model.CheckAdminId = 0; //model.CheckRank = 0; } } } #endregion } } } } _wMPurchaseInfoServices.AddLog(1, _user.ID, model.Id, "【采购审批】设置状态为" + ((EnumWMPurchaseStatus)model.Status)._GetDescriptionByEnumValue()); data.success = await _wMPurchaseInfoServices.Update(model); _unitOfWork.CommitTran(); if (data.success) { data.msg = "审核成功"; data.response = model?.Id.ObjToString(); } } } catch (Exception e) { _unitOfWork.RollbackTran(); _logger.LogError(e, e.Message); return data; } return data; } [HttpDelete("{id}")] public async Task> Delete(int id = 0) { var data = new MessageModel(); if (id > 0) { var detail = await _wMPurchaseInfoServices.QueryById(id); //detail.IsDeleted = true; if (detail != null) { data.success = await _wMPurchaseInfoServices.Update(detail); if (data.success) { data.msg = "删除成功"; data.response = detail?.Id.ObjToString(); } } } return data; } /// /// 删除商品 /// /// /// [HttpDelete] [AllowAnonymous] public async Task> DeleteProductList(int id = 0) { var data = new MessageModel(); if (id > 0) { var PurchaseQuoteDetailModel = await _WMPurchaseQuoteDetailServices.QueryById(id); if (PurchaseQuoteDetailModel == null) { data.msg = "未获取到该出库商品"; return data; } data.success = await _WMPurchaseQuoteDetailServices.DeleteById(id); if (data.success) { var PurchaseInfoModel = await _wMPurchaseInfoServices.QueryById(PurchaseQuoteDetailModel.PurchaseId); if (PurchaseInfoModel.EmployeeId != _user.ID) { data.msg = "不是当前采购人将无法删除商品"; return data; } var SaleDetailList = await _WMPurchaseQuoteDetailServices.Query(x => x.PurchaseId == PurchaseInfoModel.Id); if (SaleDetailList.Count() == 0) { PurchaseInfoModel.Status = EnumWMPurchaseStatus.Cancellation.GetHashCode(); await _wMPurchaseInfoServices.Update(PurchaseInfoModel); } data.msg = "删除商品成功"; data.response = PurchaseQuoteDetailModel?.Id.ObjToString(); } } return data; } #endregion } }