一次合格品仓库,抛光操作记录,抛光仓库修改
This commit is contained in:
401
ZR.Service/mes/wms/WmOneTimeInventoryService.cs
Normal file
401
ZR.Service/mes/wms/WmOneTimeInventoryService.cs
Normal file
@@ -0,0 +1,401 @@
|
||||
using System;
|
||||
using Infrastructure.Attribute;
|
||||
using SqlSugar;
|
||||
using ZR.Model;
|
||||
using ZR.Model.MES.wms;
|
||||
using ZR.Model.MES.wms.Dto;
|
||||
using ZR.Repository;
|
||||
using ZR.Service.mes.wms.IService;
|
||||
|
||||
namespace ZR.Service.mes.wms
|
||||
{
|
||||
/// <summary>
|
||||
/// 一次合格品仓库Service业务层处理
|
||||
/// </summary>
|
||||
[AppService(
|
||||
ServiceType = typeof(IWmOneTimeInventoryService),
|
||||
ServiceLifetime = LifeTime.Transient
|
||||
)]
|
||||
public class WmOneTimeInventoryService
|
||||
: BaseService<WmOneTimeInventory>,
|
||||
IWmOneTimeInventoryService
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询一次合格品仓库列表
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<WmOneTimeInventoryDto> GetList(WmOneTimeInventoryQueryDto parm)
|
||||
{
|
||||
List<string> partnumberByDescription = new();
|
||||
if (parm != null && !string.IsNullOrEmpty(parm.Description))
|
||||
{
|
||||
partnumberByDescription = Context
|
||||
.Queryable<WmMaterial>()
|
||||
.Where(it => it.Description.Contains(parm.Description))
|
||||
.Select(it => it.Partnumber)
|
||||
.ToList();
|
||||
}
|
||||
var predicate = Expressionable
|
||||
.Create<WmOneTimeInventory>()
|
||||
.AndIF(
|
||||
!string.IsNullOrEmpty(parm.Description),
|
||||
it => partnumberByDescription.Contains(it.Partnumber)
|
||||
)
|
||||
.AndIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.Partnumber.Contains(parm.Partnumber)
|
||||
)
|
||||
.AndIF(parm.Status > -1, it => it.Status == parm.Status)
|
||||
.AndIF(parm.Type > 0, it => it.Type == parm.Type);
|
||||
|
||||
var response = Queryable()
|
||||
.Where(predicate.ToExpression())
|
||||
.OrderByDescending(it => it.UpdatedTime)
|
||||
.ToPage<WmOneTimeInventory, WmOneTimeInventoryDto>(parm);
|
||||
if (response.Result.Count > 0)
|
||||
{
|
||||
foreach (WmOneTimeInventoryDto item in response.Result)
|
||||
{
|
||||
WmMaterial material = Context
|
||||
.Queryable<WmMaterial>()
|
||||
.Where(it => it.Partnumber == item.Partnumber)
|
||||
.Where(it => it.Type == 1)
|
||||
.Where(it => it.Status == 1)
|
||||
.First();
|
||||
if (material == null)
|
||||
{
|
||||
item.Description = "此零件号不在物料清单内!";
|
||||
continue;
|
||||
}
|
||||
item.Color = material.Color;
|
||||
item.Specification = material.Specification;
|
||||
item.Description = !string.IsNullOrEmpty(material.Description)
|
||||
? material.Description
|
||||
: material.ProductName;
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取详情
|
||||
/// </summary>
|
||||
/// <param name="Id"></param>
|
||||
/// <returns></returns>
|
||||
public WmOneTimeInventory GetInfo(string Id)
|
||||
{
|
||||
var response = Queryable().Where(x => x.Id == Id).First();
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加一次合格品仓库
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
public WmOneTimeInventory AddWmOneTimeInventory(WmOneTimeInventory model)
|
||||
{
|
||||
return Context.Insertable(model).ExecuteReturnEntity();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改一次合格品仓库
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
public int UpdateWmOneTimeInventory(WmOneTimeInventory model)
|
||||
{
|
||||
return Update(model, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增仓库操作记录
|
||||
/// </summary>
|
||||
/// <param name="fkInventoryId">抛光仓库主键</param>
|
||||
/// <param name="code">同批功能识别编号</param>
|
||||
/// <param name="partnumber">零件号</param>
|
||||
/// <param name="type">类别</param>
|
||||
/// <param name="changeQuantity">操作数字</param>
|
||||
/// <param name="remark">备注</param>
|
||||
/// <param name="createdBy">创建人</param>
|
||||
/// <returns></returns>
|
||||
public int AddOneTimeRecord(
|
||||
string fkInventoryId,
|
||||
string code,
|
||||
string partnumber,
|
||||
int type,
|
||||
int? changeQuantity,
|
||||
DateTime? actionTime,
|
||||
string remark,
|
||||
string createdBy
|
||||
)
|
||||
{
|
||||
WmOneTimeRecord newOneTimeRecord =
|
||||
new()
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = fkInventoryId,
|
||||
Code = code,
|
||||
Partnumber = partnumber,
|
||||
BlankNum = "",
|
||||
ChangeType = type,
|
||||
ChangeQuantity = changeQuantity ?? 0,
|
||||
ActionTime = actionTime,
|
||||
Status = 1,
|
||||
Remark = remark,
|
||||
CreatedBy = createdBy,
|
||||
CreatedTime = DateTime.Now.ToLocalTime(),
|
||||
UpdatedBy = createdBy,
|
||||
UpdatedTime = DateTime.Now.ToLocalTime(),
|
||||
};
|
||||
|
||||
return Context.Insertable(newOneTimeRecord).ExecuteCommand();
|
||||
}
|
||||
|
||||
public int DoWmOneTimeWarehousing(WmOneTimeInventory parm)
|
||||
{
|
||||
try
|
||||
{
|
||||
Context.Ado.BeginTran();
|
||||
// 零件号检查
|
||||
string partnumber = parm.Partnumber;
|
||||
// 检查是否存在库中
|
||||
WmOneTimeInventory oneTimeInventory = Context
|
||||
.Queryable<WmOneTimeInventory>()
|
||||
.Where(it => it.Partnumber == partnumber)
|
||||
.Where(it => it.Type == parm.Type)
|
||||
.Where(it => it.Status == 1)
|
||||
.First();
|
||||
if (oneTimeInventory == null)
|
||||
{
|
||||
// 为空则新增库
|
||||
WmOneTimeInventory newWmOneTimeInventory =
|
||||
new()
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
BlankNum = "",
|
||||
Partnumber = partnumber,
|
||||
Type = parm.Type,
|
||||
Quantity = parm.Quantity,
|
||||
MaxNum = 0,
|
||||
MinNum = 0,
|
||||
WarnNum = 0,
|
||||
Status = 1,
|
||||
Remark = "系统自动创建库",
|
||||
CreatedBy = parm.CreatedBy,
|
||||
CreatedTime = DateTime.Now.ToLocalTime(),
|
||||
UpdatedBy = parm.CreatedBy,
|
||||
UpdatedTime = DateTime.Now.ToLocalTime(),
|
||||
};
|
||||
WmOneTimeInventory addWmOneTimeInventory = Context
|
||||
.Insertable(newWmOneTimeInventory)
|
||||
.ExecuteReturnEntity();
|
||||
string code = !string.IsNullOrEmpty(parm.WorkOrder)
|
||||
? parm.WorkOrder
|
||||
: SnowFlakeSingle.Instance.NextId().ToString();
|
||||
string remark = "初次创建仓库,新增入库数据 " + parm.Remark;
|
||||
int successNum = AddOneTimeRecord(
|
||||
addWmOneTimeInventory.Id,
|
||||
code,
|
||||
partnumber,
|
||||
1,
|
||||
parm.Quantity,
|
||||
parm.ActionTime,
|
||||
remark,
|
||||
parm.CreatedBy
|
||||
);
|
||||
if (successNum == 0)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("入库日志添加失败");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
oneTimeInventory.Quantity += parm.Quantity;
|
||||
int updateNum = Context.Updateable(oneTimeInventory).ExecuteCommand();
|
||||
if (updateNum == 0)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("修改一次合格仓库数据失败");
|
||||
}
|
||||
// 已有则新增记录
|
||||
string code = !string.IsNullOrEmpty(parm.WorkOrder)
|
||||
? parm.WorkOrder
|
||||
: SnowFlakeSingle.Instance.NextId().ToString();
|
||||
int successNum = AddOneTimeRecord(
|
||||
oneTimeInventory.Id,
|
||||
code,
|
||||
partnumber,
|
||||
1,
|
||||
parm.Quantity,
|
||||
parm.ActionTime,
|
||||
parm.Remark,
|
||||
parm.CreatedBy
|
||||
);
|
||||
if (successNum == 0)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("入库日志添加失败");
|
||||
}
|
||||
}
|
||||
Context.Ado.CommitTran();
|
||||
return 1;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public int DoWmOneTimeRetrieval(WmOneTimeInventory parm)
|
||||
{
|
||||
try
|
||||
{
|
||||
Context.Ado.BeginTran();
|
||||
// 零件号检查
|
||||
string partnumber = parm.Partnumber;
|
||||
// 检查是否存在库中
|
||||
WmOneTimeInventory oneTimeInventory = Context
|
||||
.Queryable<WmOneTimeInventory>()
|
||||
.Where(it => it.Partnumber == partnumber)
|
||||
.Where(it => it.Type == parm.Type)
|
||||
.Where(it => it.Status == 1)
|
||||
.First();
|
||||
if (oneTimeInventory == null)
|
||||
{
|
||||
// 为空则新增库
|
||||
WmOneTimeInventory newWmOneTimeInventory =
|
||||
new()
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
BlankNum = "",
|
||||
Partnumber = partnumber,
|
||||
Type = parm.Type,
|
||||
Quantity = parm.Quantity * -1,
|
||||
MaxNum = 0,
|
||||
MinNum = 0,
|
||||
WarnNum = 0,
|
||||
Status = 1,
|
||||
Remark = "系统自动创建库",
|
||||
CreatedBy = parm.CreatedBy,
|
||||
CreatedTime = DateTime.Now.ToLocalTime(),
|
||||
UpdatedBy = parm.CreatedBy,
|
||||
UpdatedTime = DateTime.Now.ToLocalTime(),
|
||||
};
|
||||
WmOneTimeInventory addWmOneTimeInventory = Context
|
||||
.Insertable(newWmOneTimeInventory)
|
||||
.ExecuteReturnEntity();
|
||||
string code = !string.IsNullOrEmpty(parm.WorkOrder)
|
||||
? parm.WorkOrder
|
||||
: SnowFlakeSingle.Instance.NextId().ToString();
|
||||
string remark = "初次创建仓库,新增手动出库数据" + parm.Remark;
|
||||
int successNum = AddOneTimeRecord(
|
||||
addWmOneTimeInventory.Id,
|
||||
code,
|
||||
partnumber,
|
||||
2,
|
||||
parm.Quantity,
|
||||
parm.ActionTime,
|
||||
remark,
|
||||
parm.CreatedBy
|
||||
);
|
||||
if (successNum == 0)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("出库日志添加失败");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
oneTimeInventory.Quantity -= parm.Quantity;
|
||||
int updateNum = Context.Updateable(oneTimeInventory).ExecuteCommand();
|
||||
if (updateNum == 0)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("修改一次合格仓库零件数失败");
|
||||
}
|
||||
// 已有则新增记录
|
||||
string code = !string.IsNullOrEmpty(parm.WorkOrder)
|
||||
? parm.WorkOrder
|
||||
: SnowFlakeSingle.Instance.NextId().ToString();
|
||||
int successNum = AddOneTimeRecord(
|
||||
oneTimeInventory.Id,
|
||||
code,
|
||||
partnumber,
|
||||
2,
|
||||
parm.Quantity,
|
||||
parm.ActionTime,
|
||||
parm.Remark,
|
||||
parm.CreatedBy
|
||||
);
|
||||
if (successNum == 0)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("出库日志添加失败");
|
||||
}
|
||||
}
|
||||
Context.Ado.CommitTran();
|
||||
return 1;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public int DoWmOneTimeStocktaking(WmOneTimeInventory parm)
|
||||
{
|
||||
if (parm.Quantity < 0)
|
||||
{
|
||||
throw new Exception("修改的零件数小于0");
|
||||
}
|
||||
try
|
||||
{
|
||||
Context.Ado.BeginTran();
|
||||
// 检查是否存在库中
|
||||
WmOneTimeInventory oneTImeInventory = Context
|
||||
.Queryable<WmOneTimeInventory>()
|
||||
.Where(it => it.Id == parm.Id)
|
||||
.Where(it => it.Status == 1)
|
||||
.First();
|
||||
if (oneTImeInventory == null)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("盘点记录不存在" + parm.Id);
|
||||
}
|
||||
Context.Updateable(parm).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
|
||||
// 已有则新增记录
|
||||
string code = !string.IsNullOrEmpty(parm.WorkOrder)
|
||||
? parm.WorkOrder
|
||||
: SnowFlakeSingle.Instance.NextId().ToString();
|
||||
int successNum = AddOneTimeRecord(
|
||||
parm.Id,
|
||||
code,
|
||||
parm.Partnumber,
|
||||
3,
|
||||
parm.Quantity,
|
||||
parm.ActionTime,
|
||||
parm.Remark,
|
||||
parm.CreatedBy
|
||||
);
|
||||
if (successNum == 0)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("盘点日志添加失败");
|
||||
}
|
||||
Context.Ado.CommitTran();
|
||||
return successNum;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception(e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user