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;
}
}
}