using OASystem.Domain.Entities.PersonnelModule;
using OASystem.Domain.ViewModels.PersonnelModule;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AutoMapper;
using OASystem.Domain.Dtos.PersonnelModule;
namespace OASystem.Infrastructure.Repositories.PersonnelModule
{
///
/// 物品进销存
/// 仓储
///
public class GoodsRepository:BaseRepository
{
private readonly IMapper _mapper;
private JsonView _jv;
public GoodsRepository(SqlSugarClient sqlSugar,IMapper mapper):base(sqlSugar)
{
_mapper = mapper;
_jv = new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "无效请求!" };
}
///
/// 基础数据
///
///
public async Task InitDataSource()
{
var typeData = await _sqlSugar.Queryable()
.Includes(x => x.SubTypeItems.Where(z => z.IsDel == 0)
//.Select(z => new {
// z.Id,
// z.STid,
// z.Name
//})
.ToList())
.Where(x => x.IsDel == 0 &&
x.Remark.Equals("GoodsType"))
//.Select(x => new {
// x.Id,
// x.Name,
// x.SubTypeItems
//})
.ToListAsync();
_jv.Code = StatusCodes.Status200OK;
_jv.Data = typeData;
_jv.Msg = $"操作成功";
return _jv;
}
///
/// 物品列表
///
///
///
public async Task GoodsList(GoodsListDTO _dto)
{
var ids = new List();
if (!string.IsNullOrEmpty(_dto.TypeIds))
{
var strArray = _dto.TypeIds.Split(',');
foreach (var str in strArray)
{
if (int.TryParse(str, out int id))
{
ids.Add(id);
}
}
}
RefAsync total = 0;
var data = await _sqlSugar.Queryable()
.LeftJoin((gi, sd) => gi.Type == sd.Id)
.LeftJoin((gi, sd, u) => gi.LastUpdateUserId == u.Id)
.Where((gi, sd, u) => gi.IsDel == 0)
.WhereIF(ids.Count > 0, (gi, sd, u) => ids.Contains(gi.Type))
.WhereIF(!string.IsNullOrEmpty(_dto.GoodsName), (gi, sd, u) => gi.Name.Contains(_dto.GoodsName))
.Select((gi, sd, u) => new
{
gi.Id,
gi.Name,
gi.Type,
TypeName = sd.Name,
gi.StockQuantity,
LastUpdateUserName = u.CnName,
gi.LastUpdateTime,
gi.Remark,
})
.OrderByDescending(gi => gi.LastUpdateTime)
.ToPageListAsync(_dto.PageIndex, _dto.PageSize, total);
_jv.Code = StatusCodes.Status200OK;
_jv.Data = data;
_jv.Count = total;
_jv.Msg = $"操作成功";
return _jv;
}
///
/// 物品入库列表
///
///
///
public async Task GoodsStorageList(GoodsStorageListDTO _dto)
{
RefAsync total = 0;
var data = await _sqlSugar.Queryable()
.LeftJoin((gs, gi) => gs.GoodsId == gi.Id)
.LeftJoin((gs, gi, u) => gs.CreateUserId == u.Id)
.Where((gs, gi, u) => gs.IsDel == 0)
.WhereIF(_dto.GoodsId > 0, (gs, gi, u) => gs.GoodsId == _dto.GoodsId)
.Select((gs, gi, u) => new
{
gs.Id,
gs.GoodsId,
GoodsName = gi.Name,
gs.Quantity,
gs.UnitPrice,
gs.TotalPrice,
gs.SupplierName,
gs.SupplierTel,
gs.SupplierAddress,
gs.SupplierSource,
CreateUserName = u.CnName,
gs.CreateTime,
})
.OrderByDescending(gs => gs.CreateTime)
.ToPageListAsync(_dto.PageIndex, _dto.PageSize, total);
_jv.Code = StatusCodes.Status200OK;
_jv.Data = data;
_jv.Count = total;
_jv.Msg = $"操作成功";
return _jv;
}
///
/// 物品领用列表
///
///
///
public async Task GoodsReceiveList(GoodsReceiveListDTO _dto)
{
RefAsync total = 0;
var data = await _sqlSugar.Queryable()
.LeftJoin((gr, gi) => gr.GoodsId == gi.Id)
.LeftJoin((gr, gi, u1) => gr.AuditUserId == u1.Id)
.LeftJoin((gr, gi, u1,u2) => gr.CreateUserId == u2.Id)
.Where((gr, gi, u1, u2) => gr.IsDel == 0)
.WhereIF(_dto.GoodsId > 0, (gr, gi, u1, u2u) => gr.GoodsId == _dto.GoodsId)
.Select((gr, gi, u1, u2) => new
{
gr.Id,
gr.GroupId,
gr.GoodsId,
GoodsName = gi.Name,
gr.Quantity,
gr.Reason,
gr.Remark,
gr.AuditStatus,
AuditStatusText = gr.AuditStatus.GetDescription(),
gr.AuditUserId,
AuditUserName = u1.CnName,
gr.AuditTime,
CreateUserName = u2.CnName,
gr.CreateTime
})
.OrderByDescending(gs => gs.CreateTime)
.ToPageListAsync(_dto.PageIndex, _dto.PageSize, total);
_jv.Code = StatusCodes.Status200OK;
_jv.Data = data;
_jv.Count = total;
_jv.Msg = $"操作成功";
return _jv;
}
}
}