| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Utility; |
| | | using WMS.DAL; |
| | | using WMS.Entity.BllCheckEntity; |
| | | using WMS.Entity.Context; |
| | |
| | | |
| | | #region 冻结\解冻 |
| | | |
| | | public List<DataStock> ByTypeGetDataStockType(string SkuNo, int type) |
| | | public async Task<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 list = await 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).ToListAsync(); |
| | | //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) |
| | | public async Task<List<FreezeUnfreezeInfoDto>> GetDataFreezeList(FreezeUnfreezeInfoDto model) |
| | | { |
| | | try |
| | | return await Db.Queryable<DataFreezeUnfreezeInfo>() |
| | | .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id) |
| | | .Where(a => a.IsDel == "0" && a.Status == 1) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.SkuNo), a => a.SkuNo.Contains(model.SkuNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.SkuName), a => a.SkuName.Contains(model.SkuName)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.LotNo), a => a.LotNo.Contains(model.LotNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.Type), a => a.Type == model.Type) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.Demo), a => a.Demo == model.Demo) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.StartTime), a => SqlFunc.GreaterThanOrEqual(a.CreateTime, model.StartTime)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.EndTime), a => SqlFunc.LessThanOrEqual(a.CreateTime, model.EndTime)) |
| | | .Select<FreezeUnfreezeInfoDto>((a, b) => new FreezeUnfreezeInfoDto() |
| | | { |
| | | 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; |
| | | } |
| | | UserName = b.RealName |
| | | }, true) |
| | | .ToListAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public List<FreezeUnfreezeInfoDto> GetDataUnFreezeList(FreezeUnfreezeInfoDto model) |
| | | public async Task<List<FreezeUnfreezeInfoDto>> GetDataUnFreezeList(FreezeUnfreezeInfoDto model) |
| | | { |
| | | try |
| | | return await Db.Queryable<DataFreezeUnfreezeInfo>() |
| | | .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id) |
| | | .Where(a => a.IsDel == "0" && a.Status == 2) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.SkuNo), a => a.SkuNo.Contains(model.SkuNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.SkuName), a => a.SkuName.Contains(model.SkuName)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.LotNo), a => a.LotNo.Contains(model.LotNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.Type), a => a.Type == model.Type) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.Demo), a => a.Demo == model.Demo) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.StartTime), a => SqlFunc.GreaterThanOrEqual(a.CreateTime, model.StartTime)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.EndTime), a => SqlFunc.LessThanOrEqual(a.CreateTime, model.EndTime)) |
| | | .Select<FreezeUnfreezeInfoDto>((a, b) => new FreezeUnfreezeInfoDto() |
| | | { |
| | | 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; |
| | | } |
| | | UserName = b.RealName |
| | | }, true) |
| | | .ToListAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public string InsertDataFreezeInfo(FreezeUnfreezeInfoDto model) |
| | | public async Task<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); |
| | | var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.LotNo == model.LotNo && a.SkuNo == model.SkuNo); |
| | | //当前物料或批次存在异常 |
| | | if (stock == null) |
| | | { |
| | | errStr = "-1:当前物料或批次存在异常!"; |
| | | return errStr; |
| | | throw Oops.Bah("-1:当前物料或批次存在异常!"); |
| | | } |
| | | //验证物料信息是否存在异常 |
| | | var sku = Db.Queryable<SysMaterials>().First(a => a.IsDel == "0" && a.SkuNo == model.SkuNo); |
| | | if (sku == null) |
| | | { |
| | | errStr = "-1:当前物料信息存在异常!"; |
| | | return errStr; |
| | | throw Oops.Bah("-1:当前物料信息存在异常!"); |
| | | } |
| | | //冻结 |
| | | if (model.Status == 1) |
| | |
| | | //验证冻结数量是否小于当前库存-锁定-冻结数量 |
| | | if (model.FrozenQty <= 0) |
| | | { |
| | | errStr = "-1:当前想要冻结的数量不可为0!"; |
| | | return errStr; |
| | | throw Oops.Bah("-1:当前想要冻结的数量不可为0!"); |
| | | } |
| | | //验证冻结数量是否小于当前库存-锁定-冻结数量 |
| | | if (model.FrozenQty > (stock.Qty - stock.LockQty - stock.FrozenQty)) |
| | | { |
| | | errStr = "-1:当前想要冻结的数量大于库存可冻结数量!"; |
| | | return errStr; |
| | | throw Oops.Bah("-1:当前想要冻结的数量大于库存可冻结数量!"); |
| | | } |
| | | //验证原因是否为空 |
| | | if (string.IsNullOrWhiteSpace(model.Demo)) |
| | | { |
| | | errStr = "-1:冻结原因不可为空!"; |
| | | return errStr; |
| | | throw Oops.Bah("-1:冻结原因不可为空!"); |
| | | } |
| | | |
| | | |
| | |
| | | //验证冻结数量是否小于当前库存-锁定-冻结数量 |
| | | if (model.FrozenQty <= 0) |
| | | { |
| | | errStr = "-1:当前想要冻结的数量不可为0!"; |
| | | return errStr; |
| | | throw Oops.Bah("-1:当前想要冻结的数量不可为0!"); |
| | | } |
| | | //验证冻结数量是否小于当前库存冻结数量 |
| | | if (model.FrozenQty > model.Qty) |
| | | { |
| | | errStr = "-1:当前想要解冻的数量必须小于库存冻结数量!"; |
| | | return errStr; |
| | | throw Oops.Bah("-1:当前想要解冻的数量必须小于库存冻结数量!"); |
| | | } |
| | | |
| | | } |
| | |
| | | stock.FrozenQty -= (decimal)model.FrozenQty; |
| | | } |
| | | |
| | | Db.Insertable(list).ExecuteCommand(); |
| | | Db.Updateable(stock).ExecuteCommand(); |
| | | await Db.Insertable(list).ExecuteCommandAsync(); |
| | | await Db.Updateable(stock).ExecuteCommandAsync(); |
| | | |
| | | |
| | | Db.CommitTran(); //提交 |