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
|
}
|
}
|