using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WMS.BZModels.Dto.HJ.TaskDtos; using WMS.BZModels; using WMS.Info; using WMS.BZSqlSugar; using wms.sqlsugar.model.pt; using WMS.BZModels.Dto.PT.SysConDtos; using System.Diagnostics; namespace WMS.BZServices.PT { public class SysConService { private readonly Repository _sysconrepository; private readonly BillLogService _billLogService; public SysConService(Repository sysconrepository, BillLogService billLogService) { _sysconrepository = sysconrepository; _billLogService = billLogService; } public PagedInfo GetPageList(Pagination pagination, SysConQueryDto sysconQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(sysconQueryDto?.KeyWord), m => m.code.Contains(sysconQueryDto.KeyWord) || m.name.Contains(sysconQueryDto.KeyWord) || m.scontent.Contains(sysconQueryDto.KeyWord) ); predicate = predicate.AndIF(!string.IsNullOrEmpty(sysconQueryDto?.Code), m => m.code.Contains(sysconQueryDto.Code)); predicate = predicate.AndIF(!string.IsNullOrEmpty(sysconQueryDto?.Name), m => m.name.Contains(sysconQueryDto.Name)); predicate = predicate.And(m => m.default2 != "TunnelType" && m.stype != "Pinku"); var list = _sysconrepository.Queryable().Where(predicate.ToExpression()) .ToPage(pagination); return list; } public PagedInfo GetTunnelList(Pagination pagination, TunnelQueryDto tunnelQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(tunnelQueryDto?.KeyWord), m => m.default1.Contains(tunnelQueryDto.KeyWord) || m.default1.Contains(tunnelQueryDto.KeyWord)); predicate = predicate.AndIF(!string.IsNullOrEmpty(tunnelQueryDto?.Tunnel), m => m.default1.Contains(tunnelQueryDto.Tunnel)); predicate = predicate.And(m => m.default2 == "TunnelType"); var list = _sysconrepository.Queryable().Where(predicate.ToExpression()) .Select(m => new TunnelDto() { Id = m.Id.ToString(), WareHouseName = "盘条仓库", Code = m.code, Name = m.name, Tunnel = m.default1, Statu = string.IsNullOrEmpty(m.scontent) ? "0" : "1", StatuName = string.IsNullOrEmpty(m.scontent) ? "启用" : "禁用", SType = m.stype, Memo = m.Memo, AddTime = m.AddTime, EditTime = m.EditTime, }).MergeTable() .ToPage(pagination); return list; } public PagedInfo GetOutInPationList(Pagination pagination, OutInPationQueryDto pationQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(pationQueryDto?.KeyWord), m => m.code.Contains(pationQueryDto.KeyWord) || m.default2.Contains(pationQueryDto.KeyWord) ); predicate = predicate.AndIF(!string.IsNullOrEmpty(pationQueryDto?.Pation), m => m.code.Contains(pationQueryDto.Pation)); predicate = predicate.And(m => m.default2 == "PationType"); var list = _sysconrepository.Queryable().Where(predicate.ToExpression()) .Select(m => new OutInPationDto() { Id = m.Id.ToString(), WareHouseName = "盘条仓库", Code = m.code, Name = m.name, Statu = string.IsNullOrEmpty(m.scontent) ? "0" : "1", StatuName = string.IsNullOrEmpty(m.scontent) ? "启用" : "禁用", SType = m.stype, Default2= m.default2, Memo = m.Memo, AddTime = m.AddTime, EditTime = m.EditTime, }).MergeTable() .ToPage(pagination); return list; } public PagedInfo GetPinKuList(Pagination pagination, PinKuQueryDto pinkuQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(pinkuQueryDto?.KeyWord), m => m.code.Contains(pinkuQueryDto.KeyWord) || m.name.Contains(pinkuQueryDto.KeyWord)); predicate = predicate.AndIF(!string.IsNullOrEmpty(pinkuQueryDto?.Code), m => m.code.Contains(pinkuQueryDto.Code)); predicate = predicate.And(m => m.default1 == "22PinKu"); var list = _sysconrepository.Queryable().Where(predicate.ToExpression()) .Select(m => new PinKuDto() { Id = m.Id.ToString(), WareHouseName = "盘条仓库", Code = m.code, Name = m.name, SContent = m.scontent, SType = "平库点位", Memo = m.Memo, Default2=m.default2, Default5=m.default5, Default6=m.default6, AddTime = m.AddTime, EditTime = m.EditTime, }).MergeTable() .ToPage(pagination); return list; } public PagedInfo GetProductPinKuList(Pagination pagination, PinKuQueryDto pinkuQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(pinkuQueryDto?.KeyWord), m => m.code.Contains(pinkuQueryDto.KeyWord) || m.name.Contains(pinkuQueryDto.KeyWord)); predicate = predicate.AndIF(!string.IsNullOrEmpty(pinkuQueryDto?.Code), m => m.code.Contains(pinkuQueryDto.Code)); predicate = predicate.And(m => m.default1 == "ProductPinKu"); var list = _sysconrepository.Queryable().Where(predicate.ToExpression()) .Select(m => new PinKuDto() { Id = m.Id.ToString(), WareHouseName = "盘条仓库", Code = m.code, Name = m.name, SContent = m.scontent, SType = "生产领料点位", Memo = m.Memo, Default2=m.default2, Default3=m.default3, Default5=m.default5, Default6=m.default6, AddTime = m.AddTime, EditTime = m.EditTime, }).MergeTable() .ToPage(pagination); return list; } public bool UpdatePationState(List tunnels, string Scontent, string userId) { if (!tunnels.Any()) { throw new ArgumentException("没有选择站台!"); } var list = _sysconrepository.Queryable().Where(o => tunnels.Contains(o.Id.ToString())).ToList(); if (!list.Any()) { throw new ArgumentException("没有找到该站台!"); } list.ForEach(o => { o.scontent = Scontent; o.EditWho = userId; o.EditTime = DateTime.Now; }); var result = _sysconrepository.UpdateRange(list.ToArray()); return result; } public bool UpdateTunnelState(List tunnels, string Scontent, string userId, string remark) { if (!tunnels.Any()) { throw new ArgumentException("没有选择巷道!"); } var list = _sysconrepository.Queryable().Where(o => tunnels.Contains(o.Id.ToString())).ToList(); if (!list.Any()) { throw new ArgumentException("没有找到该巷道!"); } list.ForEach(o => { o.scontent = Scontent; o.EditWho = userId; o.EditTime = DateTime.Now; o.Memo = remark; }); var result = _sysconrepository.UpdateRange(list.ToArray()); return result; } public void SaveProductPinKuStatus(LoginUserInfo loginUser, string keyValue, SysConfig entity) { try { if (string.IsNullOrWhiteSpace(entity.code)) { throw new ArgumentException("点位编码不能为空"); } var firstentity = _sysconrepository.Queryable().First(o => entity.code==o.code) ; if (firstentity==null) { throw new ArgumentException("没有找到该点位!"); } var firstscontent=firstentity.scontent; var firstMemo = firstentity.Memo ; firstentity.scontent = entity.scontent; firstentity.Memo = entity.Memo; firstentity.EditWho = loginUser.UserNo; firstentity.EditTime = DateTime.Now; _billLogService.WriteLog(loginUser, entity, $"平库管理状态由:{firstscontent}改为:{entity.scontent},Memo:{firstMemo}改为:{entity.Memo}", "WMS.BZServices.PT.SysConService", "SaveProductPinKuStatus", new Stopwatch(), ELogType.Work, null); _sysconrepository.Update(firstentity); } catch (Exception ex) { throw ex; } } public void Save(LoginUserInfo loginUser, string keyValue, SysConfig entity) { try { if (string.IsNullOrWhiteSpace(entity.code)) { throw new ArgumentException("配置编码不能为空"); } if (keyValue.IsEmpty() || keyValue == "undefined") { var mat = _sysconrepository.GetSingle(p => p.code == entity.code); if (mat != null) { throw new ArgumentException("编码已存在"); } SysConfig item = new SysConfig() { AddWho = loginUser.UserNo, code = entity.code, EditWho = loginUser.UserNo, name = entity.name, scontent = entity.scontent, stype = entity.stype, default1 = entity.default1, default2 = entity.default2, default3 = entity.default3, Memo = entity.Memo }; _sysconrepository.Insert(item); } else { entity.EditTime = DateTime.Now; entity.EditWho = loginUser.UserNo; _sysconrepository.AsUpdateable(entity).IgnoreColumns(it => it.AddTime).IgnoreColumns(it => it.AddWho).Where(it => it.code == keyValue).ExecuteCommand(); } } catch (Exception ex) { throw ex; } } public void Delete(string ModuleNo) { try { _sysconrepository.Deleteable().Where(it => it.code == ModuleNo).ExecuteCommand(); } catch (Exception ex) { throw ex; } } public bool UpdatePinkuState(List pinku, string Scontent, string userId) { if (!pinku.Any()) { throw new ArgumentException("没有选择点位!"); } var list = _sysconrepository.Queryable().Where(o => pinku.Contains(o.Id.ToString())).ToList(); if (!list.Any()) { throw new ArgumentException("没有找到该点位!"); } list.ForEach(o => { o.scontent = Scontent; o.EditWho = userId; o.EditTime = DateTime.Now; }); var result = _sysconrepository.UpdateRange(list.ToArray()); return result; } public IEnumerable GetEquipList() { return _sysconrepository.Queryable().Where(o => o.stype == "Pinku" && (o.default1 == "ProductPinKu" || o.default1 == "22PinKu")).Select(o => o.code).Distinct().ToList().OrderBy(o => o).Select(o => new { id = o, text = o }); } } }