using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using wms.sqlsugar.model.fj; using WMS.BZModels.Dto.FJ.WCSPalletizingDtos; using WMS.BZModels; using WMS.BZSqlSugar; using WMS.Info; using WMS.BZModels.Dto.FJ.BillRingpalletizinginfoDtos; using Org.BouncyCastle.Crypto; namespace WMS.BZServices.FJ { public class BillRingpalletizinginfoService { private readonly Repository _billRingpalletizinginfoRepository; private readonly Repository _billBomsetgrpRepository; private readonly Repository _wareHouserepository; public BillRingpalletizinginfoService(Repository billRingpalletizinginfoRepository, Repository billBomsetgrpRepository, Repository wareHouserepository) { _billRingpalletizinginfoRepository = billRingpalletizinginfoRepository; _billBomsetgrpRepository = billBomsetgrpRepository; _wareHouserepository = wareHouserepository; } public PagedInfo GetPageList(Pagination pagination, BillRingpalletizinginfoQueryDto wcsPalletizingQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.KeyWord), (Ringpalletizing, Bomsetgrp) => Ringpalletizing.BomCode.ToString().Contains(wcsPalletizingQueryDto.KeyWord) || Bomsetgrp.Name.Contains(wcsPalletizingQueryDto.KeyWord)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.WareHouseId), (Ringpalletizing, Bomsetgrp) => Ringpalletizing.WareHouseId.Equals(wcsPalletizingQueryDto.WareHouseId)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.BomSetGrpName), (Ringpalletizing, Bomsetgrp) => Bomsetgrp.Name.Equals(wcsPalletizingQueryDto.BomSetGrpName) || Bomsetgrp.Code.Equals(wcsPalletizingQueryDto.BomSetGrpName)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.BomCode), (Ringpalletizing, Bomsetgrp) => Ringpalletizing.BomCode.Contains(wcsPalletizingQueryDto.BomCode)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.Id), (Ringpalletizing, Bomsetgrp) => Ringpalletizing.Id.ToString().Contains(wcsPalletizingQueryDto.Id)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.Out), (Ringpalletizing, Bomsetgrp) => Ringpalletizing.Out.Equals(wcsPalletizingQueryDto.Out)); predicate = predicate.AndIF(wcsPalletizingQueryDto != null && wcsPalletizingQueryDto.AddTimeFrom.HasValue, (Ringpalletizing, Bomsetgrp) => Ringpalletizing.AddTime >= wcsPalletizingQueryDto.AddTimeFrom); predicate = predicate.AndIF(wcsPalletizingQueryDto != null && wcsPalletizingQueryDto.AddTimeTo.HasValue, (Ringpalletizing, Bomsetgrp) => Ringpalletizing.AddTime <= wcsPalletizingQueryDto.AddTimeTo); var list = _billRingpalletizinginfoRepository.Context.Queryable((Ringpalletizing, Bomsetgrp) => new object[] { JoinType.Left, Ringpalletizing.BomSetGrpId == Bomsetgrp.Id }).Where(predicate.ToExpression()) .Select((Ringpalletizing, Bomsetgrp) => new BillRingpalletizinginfoDto { Id = Ringpalletizing.Id.ToString(), WareHouseId = Ringpalletizing.WareHouseId.ToString(), BomSetGrpId = Ringpalletizing.BomSetGrpId.ToString(), BomSetGrpName = Bomsetgrp.Name, BomSetGrpCode = Bomsetgrp.Code, HWCountQty = Ringpalletizing.HWCountQty, BomCode = Ringpalletizing.BomCode, HaveQty = Ringpalletizing.HaveQty, Out = Ringpalletizing.Out, Memo = Ringpalletizing.Memo, AddWho = Ringpalletizing.AddWho, EditWho = Ringpalletizing.EditWho, AddTime = Ringpalletizing.AddTime, EditTime = Ringpalletizing.EditTime, LastXYNO = Ringpalletizing.LastXYNO, }).MergeTable() .ToPage(pagination); var wareHouses = _wareHouserepository.Queryable().Where(o => o.IsStop == 0).ToList(); list.Result.ForEach(o => { o.WarehouseName = wareHouses.FirstOrDefault(v => o.WareHouseId == v.Id.ToString())?.Name ?? ""; }); return list; } public bool UpdateOut(List ids, string outstatus, string userId) { var list = _billRingpalletizinginfoRepository.Queryable().Where(o => ids.Contains(o.Id.ToString())).ToList(); if (!list.Any()) { throw new ArgumentException("没有找到该码垛数据!"); } bool status = Convert.ToBoolean(Convert.ToInt32(outstatus)); list.ForEach(o => { o.Out = status; o.EditWho = userId; o.EditTime = DateTime.Now; o.Memo = o.Memo + "手动,"; }); var result = _billRingpalletizinginfoRepository.UpdateRange(list.ToArray()); return result; } public bool UpdateHaveQty(LoginUserInfo loginUser, long keyValue, BillRingpalletizinginfo entity) { var first = _billRingpalletizinginfoRepository.Queryable().First(o => o.Id.Equals(keyValue)); if (first == null) { throw new ArgumentException("没有找到该码垛数据!"); } first.HaveQty = entity.HaveQty; first.LastXYNO = entity.LastXYNO; first.EditTime = DateTime.Now; first.EditWho = loginUser.UserNo; var result = _billRingpalletizinginfoRepository.UpdateEntity(first); return result; } public bool UpdateOvertimeOut(List ids, string userId) { var list = _billRingpalletizinginfoRepository.Queryable().Where(o => ids.Contains(o.Id.ToString())).ToList(); if (!list.Any()) { throw new ArgumentException("没有找到该码垛数据!"); } list.ForEach(o => { o.AddTime = o.AddTime.AddHours(-72); o.EditWho = userId; o.EditTime = DateTime.Now; o.Memo = o.Memo + "手动超时,"; }); var result = _billRingpalletizinginfoRepository.UpdateRange(list.ToArray()); return result; } } }