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