using Model.ModelDto.DataDto; using SqlSugar; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using WMS.DAL; using WMS.Entity.BllCheckEntity; using WMS.Entity.Context; using WMS.Entity.DataEntity; using WMS.Entity.SysEntity; using WMS.IBLL.IBllCheckServer; namespace WMS.BLL.BllCheckServer { public class StockFreectSetve : DbHelper<BllStockCheck>, IStockFreectSetve { private static readonly SqlSugarScope Db = DataContext.Db; public StockFreectSetve() : base(Db) { } #region 冻结\解冻 public List<DataStock> ByTypeGetDataStockType(string SkuNo, int type) { try { var list = Db.Queryable<DataStock>().Where(a => a.IsDel == "0" && a.SkuNo != "100099" && type == 1 ? (a.Qty - a.LockQty - a.FrozenQty) > 0 : type == 2 ? a.FrozenQty > 0 : a.Id < 0).ToList(); //var sku = Db.Queryable<SysMaterials>().WhereIF(!string.IsNullOrWhiteSpace(SkuNo), a => a.SkuNo.Contains(SkuNo)).Where(a => list.Contains(a.SkuNo)).ToList(); return list; } catch (Exception ex) { throw ex; } } /// <summary> /// 获å–库å˜å†»ç»“ä¿¡æ¯ /// </summary> /// <param name="model"></param> /// <returns></returns> public List<FreezeUnfreezeInfoDto> GetDataFreezeList(FreezeUnfreezeInfoDto model) { try { string str = "select info.SkuNo,info.SkuName,info.LotNo,info.LotText,info.SupplierLot,info.Qty,info.FrozenQty,info.Demo,info.status,info.Standard,info.Type,info.CreateTime,users.UserName from DataFreezeUnfreezeInfo info left join SysUserInfor users on info.CreateUser = users.Id where info.IsDel = '0' and users.IsDel = '0' and info.Status = 1"; #region éªŒè¯æ¡ä»¶ //验è¯ç‰©æ–™å·æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.SkuNo)) { str += $" and info.SkuNo like '%{model.SkuNo}%'"; } //验è¯ç‰©æ–™å称是å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.SkuName)) { str += $" and info.SkuName like '%{model.SkuName}%'"; } //éªŒè¯æ‰¹æ¬¡æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.LotNo)) { str += $" and info.LotNo like '%{model.LotNo}%'"; } // 验è¯ç±»åž‹æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.Type)) { str += $" and info.Type = '{model.Type}'"; } // 验è¯åŽŸå› æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.Demo)) { str += $" and info.Demo = '{model.Demo}'"; } //验è¯ç»“æŸæ—¶é—´æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.StartTime)) { str += $" and info.CreateTime < '{model.StartTime}'"; } //验è¯ç»“æŸæ—¶é—´æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.EndTime)) { model.EndTime = (DateTime.Parse(model.EndTime).AddDays(1)).ToString(); str += $" and info.CreateTime < '{model.EndTime}'"; } #endregion List<FreezeUnfreezeInfoDto> list = Db.Ado.SqlQuery<FreezeUnfreezeInfoDto>(str); return list; } catch (Exception ex) { throw ex; } } /// <summary> /// 获å–库å˜è§£å†»ä¿¡æ¯ /// </summary> /// <param name="model"></param> /// <returns></returns> public List<FreezeUnfreezeInfoDto> GetDataUnFreezeList(FreezeUnfreezeInfoDto model) { try { string str = "select info.SkuNo,info.SkuName,info.LotNo,info.LotText,info.SupplierLot,info.Qty,info.FrozenQty,info.Demo,info.status,info.Standard,info.Type,info.CreateTime,users.UserName from DataFreezeUnfreezeInfo info left join SysUserInfor users on info.CreateUser = users.Id where info.IsDel = '0' and users.IsDel = '0' and info.Status = 2"; #region éªŒè¯æ¡ä»¶ //验è¯ç‰©æ–™å·æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.SkuNo)) { str += $" and info.SkuNo like '%{model.SkuNo}%'"; } //验è¯ç‰©æ–™å称是å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.SkuName)) { str += $" and info.SkuName like '%{model.SkuName}%'"; } //éªŒè¯æ‰¹æ¬¡æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.LotNo)) { str += $" and info.LotNo like '%{model.LotNo}%'"; } // 验è¯ç±»åž‹æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.Type)) { str += $" and info.Type = '{model.Type}'"; } // 验è¯åŽŸå› æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.Demo)) { str += $" and info.Demo = '{model.Demo}'"; } //验è¯ç»“æŸæ—¶é—´æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.StartTime)) { str += $" and info.CreateTime < '{model.StartTime}'"; } //验è¯ç»“æŸæ—¶é—´æ˜¯å¦ä¸ºç©º if (!string.IsNullOrWhiteSpace(model.EndTime)) { model.EndTime = (DateTime.Parse(model.EndTime).AddDays(1)).ToString(); str += $" and info.CreateTime < '{model.EndTime}'"; } #endregion var list = Db.Ado.SqlQuery<FreezeUnfreezeInfoDto>(str); return list; } catch (Exception ex) { throw ex; } } /// <summary> /// æ·»åŠ å†»ç»“\è§£å†»ä¿¡æ¯ /// </summary> /// <param name="model"></param> /// <returns></returns> public string InsertDataFreezeInfo(FreezeUnfreezeInfoDto model) { try { string errStr = ""; var TimeStr = Db.GetDate(); //éªŒè¯æ‰¹æ¬¡ä¸Žç‰©æ–™æ˜¯å¦ä¸ºå¼‚常 var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.LotNo == model.LotNo && a.SkuNo == model.SkuNo); //当å‰ç‰©æ–™æˆ–批次å˜åœ¨å¼‚常 if (stock == null) { errStr = "-1:当å‰ç‰©æ–™æˆ–批次å˜åœ¨å¼‚常!"; return errStr; } //验è¯ç‰©æ–™ä¿¡æ¯æ˜¯å¦å˜åœ¨å¼‚常 var sku = Db.Queryable<SysMaterials>().First(a => a.IsDel == "0" && a.SkuNo == model.SkuNo); if (sku == null) { errStr = "-1:当å‰ç‰©æ–™ä¿¡æ¯å˜åœ¨å¼‚常!"; return errStr; } //冻结 if (model.Status == 1) { //验è¯å†»ç»“æ•°é‡æ˜¯å¦å°äºŽå½“å‰åº“å˜-é”定-å†»ç»“æ•°é‡ if (model.FrozenQty <= 0) { errStr = "-1:当剿ƒ³è¦å†»ç»“的数é‡ä¸å¯ä¸º0!"; return errStr; } //验è¯å†»ç»“æ•°é‡æ˜¯å¦å°äºŽå½“å‰åº“å˜-é”定-å†»ç»“æ•°é‡ if (model.FrozenQty > (stock.Qty - stock.LockQty - stock.FrozenQty)) { errStr = "-1:当剿ƒ³è¦å†»ç»“的数é‡å¤§äºŽåº“å˜å¯å†»ç»“æ•°é‡!"; return errStr; } //验è¯åŽŸå› æ˜¯å¦ä¸ºç©º if (string.IsNullOrWhiteSpace(model.Demo)) { errStr = "-1:å†»ç»“åŽŸå› ä¸å¯ä¸ºç©º!"; return errStr; } } // 解冻 else if (model.Status == 2) { //验è¯å†»ç»“æ•°é‡æ˜¯å¦å°äºŽå½“å‰åº“å˜-é”定-å†»ç»“æ•°é‡ if (model.FrozenQty <= 0) { errStr = "-1:当剿ƒ³è¦å†»ç»“的数é‡ä¸å¯ä¸º0!"; return errStr; } //验è¯å†»ç»“æ•°é‡æ˜¯å¦å°äºŽå½“å‰åº“å˜å†»ç»“æ•°é‡ if (model.FrozenQty > model.Qty) { errStr = "-1:当剿ƒ³è¦è§£å†»çš„æ•°é‡å¿…é¡»å°äºŽåº“å˜å†»ç»“æ•°é‡!"; return errStr; } } Db.BeginTran(); //å¼€å¯ //æ·»åŠ å†»ç»“\è§£å†»ä¿¡æ¯ DataFreezeUnfreezeInfo list = new DataFreezeUnfreezeInfo() { SkuNo = model.SkuNo, //物料编ç SkuName = model.SkuName, //物料åç§° Standard = stock.Standard, //è§„æ ¼ Type = sku.Type, //物料类型 Qty = stock.Qty, //库å˜å½“剿•°é‡ FrozenQty = model.FrozenQty, //å†»ç»“æ•°é‡ LotNo = stock.LotNo, //批次 LotText = stock.LotText, //批次æè¿° SupplierLot = stock.SupplierLot, //供货批次 Status = model.Status, //çŠ¶æ€ Demo = model.Demo, //åŽŸå› IsDel = "0", CreateTime = TimeStr, //æ—¶é—´ CreateUser = model.CreateUser, //冻结人 }; //修改库å˜ä¿¡æ¯ if (model.Status == 1) { stock.FrozenQty += (decimal)model.FrozenQty; } if (model.Status == 2) { stock.FrozenQty -= (decimal)model.FrozenQty; } Db.Insertable(list).ExecuteCommand(); Db.Updateable(stock).ExecuteCommand(); Db.CommitTran(); //æäº¤ errStr = model.Status == 0 ? "æ·»åŠ å†»ç»“ä¿¡æ¯æˆåŠŸï¼" : "æ·»åŠ è§£å†»ä¿¡æ¯æˆåŠŸï¼"; return errStr; } catch (Exception ex) { Db.RollbackTran(); //回滚 throw ex; } } #endregion } }