using Org.BouncyCastle.Crypto; 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; using WMS.BZModels.Dto.FJ.WCSPalletizingDtos; using WMS.BZSqlSugar; using WMS.Info; using WMS.Util; namespace WMS.BZServices.FJ { public class WCSPalletizingService { private readonly Repository _WCSPalletizingRepository; private readonly Repository _wareHouserepository; public WCSPalletizingService(Repository wCSPalletizingRepository, Repository wareHouserepository) { _WCSPalletizingRepository = wCSPalletizingRepository; _wareHouserepository = wareHouserepository; } public PagedInfo GetPageList(Pagination pagination, WCSPalletizingQueryDto wcsPalletizingQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.KeyWord), m => m.Code.ToString().Contains(wcsPalletizingQueryDto.KeyWord) || m.PalleCode.Contains(wcsPalletizingQueryDto.KeyWord) || m.TaskId.ToString().Contains(wcsPalletizingQueryDto.KeyWord) || m.ProMaterCode.Contains(wcsPalletizingQueryDto.KeyWord) || m.MatCodeList.Contains(wcsPalletizingQueryDto.KeyWord) || m.DeviceCode.ToString() == wcsPalletizingQueryDto.KeyWord); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.TaskId), m => m.TaskId.ToString().Contains(wcsPalletizingQueryDto.TaskId)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.PalleCode), m => m.PalleCode.Contains(wcsPalletizingQueryDto.PalleCode)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.Code), m => m.Code.Contains(wcsPalletizingQueryDto.Code)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.ProMaterCode), m => m.ProMaterCode.Contains(wcsPalletizingQueryDto.ProMaterCode)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.PalletizingStation), m => m.PalletizingStation.Contains(wcsPalletizingQueryDto.PalletizingStation)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.CountQty), m => m.CountQty.ToString().Contains(wcsPalletizingQueryDto.CountQty)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.TpTypeCode), m => m.TpTypeCode.Contains(wcsPalletizingQueryDto.TpTypeCode)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.LayerCountQty), m => m.LayerCountQty.ToString().Contains(wcsPalletizingQueryDto.LayerCountQty)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.Finish), m => m.Finish.Equals(wcsPalletizingQueryDto.Finish)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.MatCodeList), m => m.MatCodeList.Contains(wcsPalletizingQueryDto.MatCodeList)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wcsPalletizingQueryDto?.WarehouseCode), m => m.WarehouseCode.Equals(wcsPalletizingQueryDto.WarehouseCode)); predicate = predicate.AndIF(wcsPalletizingQueryDto != null && wcsPalletizingQueryDto.AddTimeFrom.HasValue, m => m.AddTime >= wcsPalletizingQueryDto.AddTimeFrom); predicate = predicate.AndIF(wcsPalletizingQueryDto != null && wcsPalletizingQueryDto.AddTimeTo.HasValue, m => m.AddTime <= wcsPalletizingQueryDto.AddTimeTo); var list = _WCSPalletizingRepository.Queryable().Where(predicate.ToExpression()).ToPage(pagination); var wareHouses = _wareHouserepository.Queryable().Where(o => o.IsStop == 0).ToList(); list.Result.ForEach(o => { o.WarehouseName = wareHouses.FirstOrDefault(v => v.Code == o.WarehouseCode)?.Name ?? ""; }); return list; } public void UpdateFinish(List ids, string userId, int state) { if (!ids.Any()) { throw new ArgumentException("没有选择任务!"); } var list = _WCSPalletizingRepository.Queryable().Where(o => ids.Contains(o.Id.ToString())).ToList(); if (!list.Any()) { throw new ArgumentException("没有找到该任务!"); } bool isfinish = state == 1; foreach (var id in list) { _WCSPalletizingRepository.UseTranAction(() => { _WCSPalletizingRepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCSPalletizing() { Finish = isfinish, }).Where(p => p.Id == id.Id).ExecuteCommand(); }); } } public void UpdatePalleCode(List ids, string userId, string palleCode) { if (!ids.Any()) { throw new ArgumentException("没有选择任务!"); } var list = _WCSPalletizingRepository.Queryable().Where(o => ids.Contains(o.Id.ToString())).ToList(); if (!list.Any()) { throw new ArgumentException("没有找到该任务!"); } foreach (var id in list) { _WCSPalletizingRepository.UseTranAction(() => { _WCSPalletizingRepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCSPalletizing() { PalleCode = palleCode, }).Where(p => p.Id == id.Id).ExecuteCommand(); }); } } public void PalletizingStation(List Ids, string userId) { if (Ids == null || !Ids.Any()) { throw new ArgumentException("没有选择跺型数据!"); } var list = _WCSPalletizingRepository.Queryable().Where(o => Ids.Contains(o.Id.ToString())).ToList(); if (!list.Any()) { throw new ArgumentException("没有找到该任务!"); } var listids = list.Select(o => o.Id).ToList(); _WCSPalletizingRepository.UseTranAction(() => { _WCSPalletizingRepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCSPalletizing() { PalletizingStation = null, }).Where(p => listids.Contains(p.Id)).ExecuteCommand(); }); } } }