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;
|
}
|
/// <summary>
|
/// 查询托盘表信息
|
/// </summary>
|
/// <param name="palletNo">托盘码</param>
|
/// <param name="status">状态 0未使用 1使用中</param>
|
/// <param name="page"></param>
|
/// <param name="limit"></param>
|
/// <param name="count"></param>
|
/// <returns></returns>
|
public List<PalletsDto> GetPalletsList(string palletNo, string status, int page, int limit, out int count)
|
{
|
try
|
{
|
//创建表达式
|
Expression<Func<SysPallets, bool>> item = Expressionable.Create<SysPallets>()
|
.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,
|
Standard = m.Standard,
|
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);
|
}
|
}
|
|
/// <summary>
|
/// 添加桶信息并增加库存
|
/// </summary>
|
/// <param name="palletNo"></param>
|
/// <param name="locatNo"></param>
|
/// <param name="userId"></param>
|
/// <exception cref="Exception"></exception>
|
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<SysPallets>().First(w => w.PalletNo == palletNo && w.IsDel == "0");
|
if (palletModel != null)
|
{
|
throw new Exception("该桶号已存在");
|
}
|
var locatModel= db.Queryable<SysStorageLocat>().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<SysStorageArea>().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<SysStorageArea>().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);
|
}
|
}
|
|
}
|
}
|