using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading; using System.Threading.Tasks; using Model.InterFaceModel; using Model.ModelDto.LogDto; using Model.ModelDto.SysDto; using SqlSugar; using WMS.BLL.LogServer; using WMS.Entity.Context; using WMS.Entity.DataEntity; using WMS.Entity.SysEntity; using WMS.IBLL.ILogServer; using WMS.IBLL.ISysServer; using WMS.IDAL.ISysInterface; namespace WMS.BLL.SysServer { public class PalletsServer : IPalletsServer { public IPalletsRepository PalletsRst { get; set; } private readonly IOperationSysServer _operation; //操作日志 public PalletsServer(IPalletsRepository palletsRst, IOperationSysServer operation) { PalletsRst = palletsRst; _operation = operation; } /// /// 查询托盘表信息 /// /// 托盘码 /// 状态 0未使用 1使用中 /// /// /// /// public List GetPalletsList(string palletNo, string status, int page, int limit, out int count) { try { //创建表达式 Expression> item = Expressionable.Create() .AndIF(!string.IsNullOrWhiteSpace(palletNo), it => it.PalletNo.Contains(palletNo.Trim())) .AndIF(!string.IsNullOrWhiteSpace(status), it => it.Status == status) .ToExpression();//注意 这一句 不能少 var data = PalletsRst.GetAllByOrderPageAsync(item, limit, page, out int counts) .Includes(x => x.CreateUserInfo) .ToList(); count = counts; return data.Select(m => new PalletsDto() { Id = m.Id, PalletNo = m.PalletNo, Type = m.Type == "0" ? "托盘" : m.Type == "1" ? "中转箱" : "", Status = m.Status, LastUse = m.LastUse, CreateTime = m.CreateTime, CreateUserName = m.CreateUserInfo == null ? "" : m.CreateUserInfo.RealName }).ToList(); } catch (Exception e) { throw new Exception(e.Message); } } public string GetPalletsNo(string palletNo) { try { var time = DateTime.Now.ToString("yyyy"); var time2 = time.Substring(2, 2); int codeId; if (!string.IsNullOrWhiteSpace(palletNo)) { var code = PalletsRst.GetAllWhereAsync(m => m.PalletNo == palletNo).First(); return code.PalletNo; } else { var code = PalletsRst.GetAllAsync().OrderByDescending(m => m.PalletNo).First(); if (code != null) { string riQi = code.PalletNo.Substring(1, 2); if (riQi == time2) { codeId = int.Parse(code.PalletNo.Substring(3, 5)) + 1; } else { codeId = int.Parse("00001"); } } else { codeId = int.Parse("00001"); } int liuShuiId = codeId; var pallet = "T"+time2 + Convert.ToString(liuShuiId).PadLeft(5, '0'); return pallet; } } catch (Exception e) { throw new Exception(e.Message); } } /// /// 添加桶信息并增加库存 /// /// /// /// /// public void AddPallets(string palletNo,string locatNo, string deviceCode, int userId) { var db = DataContext.Db; try { if (string.IsNullOrEmpty(palletNo)) { throw new Exception("请输入桶号"); } if (string.IsNullOrEmpty(locatNo)) { throw new Exception("请输入储位地址"); } var palletModel = db.Queryable().First(w => w.PalletNo == palletNo && w.IsDel == "0"); if (palletModel != null) { throw new Exception("该桶号已存在"); } var locatModel= db.Queryable().First(w => w.LocatNo == locatNo && w.IsDel == "0"); if (locatModel == null) { throw new Exception("储位地址不存在"); } if (locatModel.Status != "0") { throw new Exception("该储位地址非空闲状态"); } var areaModel = db.Queryable().First(w => w.IsDel == "0" && w.AreaNo == locatModel.AreaNo); if (areaModel == null) { throw new Exception("储位地址所属区域不存在"); } if (!areaModel.AreaName.Contains("净桶")) { throw new Exception("新添加的桶只能绑定净桶区"); } if (!string.IsNullOrEmpty(deviceCode)) { var areaInfo = db.Queryable().First(w => w.IsDel == "0" && w.DeviceCode.Contains(deviceCode)); if (areaInfo == null) { throw new Exception("未查到设备所属区域信息"); } //125设备是接料和混料一体机 if (deviceCode != "125") { if (!areaInfo.AreaName.Contains("接料设备")) { throw new Exception("只能绑定接料设备"); } if (areaInfo.WareHouseNo != "M03") { throw new Exception("只有大单体车间才能绑定设备"); } } } //开启事务 db.BeginTran(); palletModel = new SysPallets(); palletModel.PalletNo = palletNo; palletModel.Type = "0"; palletModel.Status = "0"; palletModel.CreateUser = userId; //添加桶 db.Insertable(palletModel).ExecuteCommand(); var comTime = DateTime.Now; var model = new DataStockDetail() { ASNNo = "", Qty = 0, LockQty = 0, FrozenQty = 0, InspectQty = 0, WareHouseNo = locatModel.WareHouseNo,//所属仓库 RoadwayNo = "",//所属巷道 AreaNo = locatModel.AreaNo,//所属区域 LocatNo = locatModel.LocatNo,//储位地址 PalletNo = palletNo, PalletNo2 = "", PalletNo3 = "", PalletTags = "0", CompleteTime = comTime, ProductionTime = null, ExpirationTime = null, Status = "0", InspectMark = "0", InspectStatus = "0",//待检验 BitPalletMark = "0", PackagNo = "", IsBale = "0", IsBelt = "0", SkuNo = "", SkuName = "", LotNo = "", PalletStatus = "0",//净桶 UDF1 = deviceCode, IsDel = "0", CreateUser = userId, CreateTime = comTime, UpdateTime=comTime, }; //插入库存明细 db.Insertable(model).ExecuteCommand(); //更新储位状态 locatModel.Status = "1";//有物品 db.Updateable(locatModel).ExecuteCommand(); //提交事务 db.CommitTran(); } catch (Exception e) { //回滚事务 db.RollbackTran(); throw new Exception(e.Message); } } } }