diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmBlankRecordController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmBlankRecordController.cs
index 12136ec7..447c6a1e 100644
--- a/ZR.Admin.WebApi/Controllers/mes/wms/WmBlankRecordController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmBlankRecordController.cs
@@ -109,7 +109,7 @@ namespace ZR.Admin.WebApi.Controllers
}
catch (Exception ex)
{
- return ToResponse(new ApiResult(500, ex.Message, "添加记录失败"));
+ return ToResponse(new ApiResult(500, ex.Message, "添加入库记录失败"));
}
}
@@ -153,7 +153,76 @@ namespace ZR.Admin.WebApi.Controllers
}
catch (Exception ex)
{
- return ToResponse(new ApiResult(500, ex.Message, "添加记录失败"));
+ return ToResponse(new ApiResult(500, ex.Message, "添加出库记录失败"));
+ }
+ }
+
+ ///
+ /// 3.盘点库存
+ ///
+ /// 库存id
+ /// 毛坯号
+ /// 变动量
+ /// 操作时间(出库时间)
+ /// 备注
+ ///
+ [HttpGet("doStocktakingBlankInventory")]
+ public IActionResult DoStocktakingBlankInventory(
+ string fkBlankInventoryId,
+ string blankNum,
+ int changeQuantity,
+ string remark,
+ DateTime? actionTime
+ )
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(fkBlankInventoryId))
+ {
+ return ToResponse(new ApiResult(500, "库存id为空!", "库存id为空!"));
+ }
+ if (string.IsNullOrEmpty(blankNum))
+ {
+ return ToResponse(new ApiResult(500, "毛坯号为空!", "毛坯号为空!"));
+ }
+ var response = _WmBlankRecordService.DoStocktakingBlankInventory(
+ fkBlankInventoryId,
+ blankNum,
+ changeQuantity,
+ HttpContext.GetName(),
+ remark,
+ actionTime
+ );
+ return SUCCESS(response);
+ }
+ catch (Exception ex)
+ {
+ return ToResponse(new ApiResult(500, ex.Message, "添加盘点记录失败"));
+ }
+ }
+
+ ///
+ /// 4.根据工单号出库毛坯
+ ///
+ [HttpGet("doOutboundByWorkOrderId")]
+ public IActionResult DoOutboundByWorkOrderId(string workOrderId)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(workOrderId))
+ {
+ return ToResponse(new ApiResult(500, "工单id为空!", "工单id为空!"));
+ }
+ var response = _WmBlankRecordService.DoOutboundByWorkOrderId(
+ workOrderId,
+ 0,
+ HttpContext.GetName()
+ );
+ return SUCCESS(response);
+ }
+ catch (Exception ex)
+ {
+ return ToResponse(new ApiResult(500, ex.Message, "根据工单号出库毛坯失败"));
}
}
diff --git a/ZR.Service/mes/wms/IService/IWmBlankInventoryService.cs b/ZR.Service/mes/wms/IService/IWmBlankInventoryService.cs
index a43cf9c4..233c3918 100644
--- a/ZR.Service/mes/wms/IService/IWmBlankInventoryService.cs
+++ b/ZR.Service/mes/wms/IService/IWmBlankInventoryService.cs
@@ -16,6 +16,7 @@ namespace ZR.Service.mes.wms.IService
WmBlankInventory AddWmBlankInventory(WmBlankInventory parm);
int UpdateWmBlankInventory(WmBlankInventory parm);
+
///
/// 数据与物料清单同步
///
diff --git a/ZR.Service/mes/wms/IService/IWmBlankRecordService.cs b/ZR.Service/mes/wms/IService/IWmBlankRecordService.cs
index 06cda91c..8d9c1e70 100644
--- a/ZR.Service/mes/wms/IService/IWmBlankRecordService.cs
+++ b/ZR.Service/mes/wms/IService/IWmBlankRecordService.cs
@@ -17,6 +17,7 @@ namespace ZR.Service.mes.wms.IService
WmBlankRecord AddWmBlankRecord(WmBlankRecord parm);
int UpdateWmBlankRecord(WmBlankRecord parm);
+
///
/// 入库
///
@@ -35,6 +36,7 @@ namespace ZR.Service.mes.wms.IService
string remark,
DateTime? actionTime
);
+
///
/// 出库
///
@@ -53,5 +55,26 @@ namespace ZR.Service.mes.wms.IService
string remark,
DateTime? actionTime
);
+
+ ///
+ /// 库存盘点
+ ///
+ ///
+ ///
+ int DoStocktakingBlankInventory(
+ string fkBlankInventoryId,
+ string blankNum,
+ int changeQuantity,
+ string username,
+ string remark,
+ DateTime? actionTime
+ );
+
+ ///
+ /// 根据工单出库毛坯
+ ///
+ ///
+ ///
+ int DoOutboundByWorkOrderId(string workOrderId, int changeQuantity, string username);
}
}
diff --git a/ZR.Service/mes/wms/WmBlankInventoryService.cs b/ZR.Service/mes/wms/WmBlankInventoryService.cs
index 2ea28f13..89b88d9f 100644
--- a/ZR.Service/mes/wms/WmBlankInventoryService.cs
+++ b/ZR.Service/mes/wms/WmBlankInventoryService.cs
@@ -1,7 +1,8 @@
-using Infrastructure.Attribute;
-using SqlSugar;
using System;
using System.Linq;
+using Infrastructure.Attribute;
+using JinianNet.JNTemplate;
+using SqlSugar;
using ZR.Model;
using ZR.Model.MES.wms;
using ZR.Model.MES.wms.Dto;
@@ -13,7 +14,10 @@ namespace ZR.Service.mes.wms
///
/// 毛坯库存表Service业务层处理
///
- [AppService(ServiceType = typeof(IWmBlankInventoryService), ServiceLifetime = LifeTime.Transient)]
+ [AppService(
+ ServiceType = typeof(IWmBlankInventoryService),
+ ServiceLifetime = LifeTime.Transient
+ )]
public class WmBlankInventoryService : BaseService, IWmBlankInventoryService
{
///
@@ -23,11 +27,14 @@ namespace ZR.Service.mes.wms
///
public PagedInfo GetList(WmBlankInventoryQueryDto parm)
{
- var predicate = Expressionable.Create()
- .AndIF(!string.IsNullOrEmpty(parm.BlankNum), it => it.BlankNum.Contains(parm.BlankNum))
+ var predicate = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(parm.BlankNum),
+ it => it.BlankNum.Contains(parm.BlankNum)
+ )
.AndIF(parm.Status > -1, it => it.Status == parm.Status)
- .AndIF(parm.Type > 0, it => it.Type == parm.Type)
- ;
+ .AndIF(parm.Type > 0, it => it.Type == parm.Type);
var response = Queryable()
.Where(predicate.ToExpression())
@@ -37,10 +44,11 @@ namespace ZR.Service.mes.wms
{
foreach (WmBlankInventoryDto item in response.Result)
{
- WmMaterial material = Context.Queryable()
- .Where(it => it.BlankNum == item.BlankNum)
- .Where(it => it.Type == 2)
- .First();
+ WmMaterial material = Context
+ .Queryable()
+ .Where(it => it.BlankNum == item.BlankNum)
+ .Where(it => it.Type == 2)
+ .First();
if (material == null)
{
item.Description = "此毛坯号不在物料清单内!";
@@ -50,13 +58,14 @@ namespace ZR.Service.mes.wms
item.Unit = material.Unit;
item.Version = material.Version;
item.Specification = material.Specification;
- item.Description = !string.IsNullOrEmpty(material.Description) ? material.Description : material.ProductName;
+ item.Description = !string.IsNullOrEmpty(material.Description)
+ ? material.Description
+ : material.ProductName;
}
}
return response;
}
-
///
/// 获取详情
///
@@ -64,9 +73,7 @@ namespace ZR.Service.mes.wms
///
public WmBlankInventory GetInfo(string Id)
{
- var response = Queryable()
- .Where(x => x.Id == Id)
- .First();
+ var response = Queryable().Where(x => x.Id == Id).First();
return response;
}
@@ -78,10 +85,11 @@ namespace ZR.Service.mes.wms
///
public WmBlankInventory AddWmBlankInventory(WmBlankInventory model)
{
- bool hasRecord = Context.Queryable()
- .Where(it => it.BlankNum == model.BlankNum)
- .Where(it => it.Type == model.Type)
- .Any();
+ bool hasRecord = Context
+ .Queryable()
+ .Where(it => it.BlankNum == model.BlankNum)
+ .Where(it => it.Type == model.Type)
+ .Any();
if (hasRecord)
{
throw new Exception("毛坯仓库已有相同类别的毛坯号记录");
@@ -121,13 +129,15 @@ namespace ZR.Service.mes.wms
try
{
int num = 0;
- List materials = Context.Queryable()
- .Where(it => it.Type == 2)
- .Where(it => !string.IsNullOrEmpty(it.BlankNum))
- .OrderBy(it => it.BlankNum)
- .ToList();
+ List materials = Context
+ .Queryable()
+ .Where(it => it.Type == 2)
+ .Where(it => !string.IsNullOrEmpty(it.BlankNum))
+ .OrderBy(it => it.BlankNum)
+ .ToList();
var uniqueBlankNums = materials.Select(m => m.BlankNum).Distinct().ToList();
- var wmBlankInventories = Context.Queryable()
+ var wmBlankInventories = Context
+ .Queryable()
.Where(it => uniqueBlankNums.Contains(it.BlankNum))
.ToList()
.GroupBy(it => it.BlankNum)
@@ -135,22 +145,44 @@ namespace ZR.Service.mes.wms
foreach (WmMaterial item in materials)
{
int result = 0;
- if (!wmBlankInventories.TryGetValue(item.BlankNum, out WmBlankInventory wmBlank))
+ if (
+ !wmBlankInventories.TryGetValue(item.BlankNum, out WmBlankInventory wmBlank)
+ )
{
- // 没有找到匹配的BlankNum,添加两种类型的库存
- result += AddBlankInventory(item.BlankNum, 1, parm.CreatedBy, parm.CreatedTime);
- result += AddBlankInventory(item.BlankNum, 2, parm.CreatedBy, parm.CreatedTime);
+ // 没有找到匹配的BlankNum,添加两种类型的库存
+ result += AddBlankInventory(
+ item.BlankNum,
+ 1,
+ parm.CreatedBy,
+ parm.CreatedTime
+ );
+ result += AddBlankInventory(
+ item.BlankNum,
+ 2,
+ parm.CreatedBy,
+ parm.CreatedTime
+ );
}
else
{
- // 找到了匹配的BlankNum,根据Type添加库存
+ // 找到了匹配的BlankNum,根据Type添加库存
if (wmBlank.Type == 1)
{
- result = AddBlankInventory(item.BlankNum, 2, parm.CreatedBy, parm.CreatedTime);
+ result = AddBlankInventory(
+ item.BlankNum,
+ 2,
+ parm.CreatedBy,
+ parm.CreatedTime
+ );
}
else
{
- result = AddBlankInventory(item.BlankNum, 1, parm.CreatedBy, parm.CreatedTime);
+ result = AddBlankInventory(
+ item.BlankNum,
+ 1,
+ parm.CreatedBy,
+ parm.CreatedTime
+ );
}
}
if (result > 0)
@@ -164,43 +196,50 @@ namespace ZR.Service.mes.wms
{
throw new Exception("同步异常:" + ex.Message);
}
-
}
+
///
/// 自动添加毛坯库存记录
///
///
///
///
- public int AddBlankInventory(string blankNum, int type, string createBy = "", DateTime? createTime = null)
+ public int AddBlankInventory(
+ string blankNum,
+ int type,
+ string createBy = "",
+ DateTime? createTime = null
+ )
{
- bool hasRecord = Context.Queryable()
- .Where(it => it.BlankNum == blankNum)
- .Where(it => it.Type == type)
- .Any();
+ bool hasRecord = Context
+ .Queryable()
+ .Where(it => it.BlankNum == blankNum)
+ .Where(it => it.Type == type)
+ .Any();
if (hasRecord)
{
return 0;
}
- WmBlankInventory wmBlank = new()
- {
- Id = SnowFlakeSingle.Instance.NextId().ToString(),
- FkPaintId = string.Empty,
- BlankNum = blankNum,
- Quantity = 0,
- MaxNum = 0,
- MinNum = 0,
- WarnNum = 0,
- Type = type,
- Status = 1,
- Remark = string.Empty,
- CreatedBy = createBy,
- CreatedTime = createTime,
- UpdatedBy = createBy,
- UpdatedTime = createTime,
- };
+ WmBlankInventory wmBlank =
+ new()
+ {
+ Id = SnowFlakeSingle.Instance.NextId().ToString(),
+ FkPaintId = string.Empty,
+ BlankNum = blankNum,
+ Quantity = 0,
+ MaxNum = 0,
+ MinNum = 0,
+ WarnNum = 0,
+ Type = type,
+ Status = 1,
+ Remark = string.Empty,
+ CreatedBy = createBy,
+ CreatedTime = createTime,
+ UpdatedBy = createBy,
+ UpdatedTime = createTime,
+ };
return Context.Insertable(wmBlank).ExecuteCommand();
}
}
-}
\ No newline at end of file
+}
diff --git a/ZR.Service/mes/wms/WmBlankRecordService.cs b/ZR.Service/mes/wms/WmBlankRecordService.cs
index cc8976fd..fcaee294 100644
--- a/ZR.Service/mes/wms/WmBlankRecordService.cs
+++ b/ZR.Service/mes/wms/WmBlankRecordService.cs
@@ -1,7 +1,9 @@
using System;
using Infrastructure.Attribute;
+using Model.DBModel;
using SqlSugar;
using ZR.Model;
+using ZR.Model.MES.pro;
using ZR.Model.MES.wms;
using ZR.Model.MES.wms.Dto;
using ZR.Repository;
@@ -56,7 +58,7 @@ namespace ZR.Service.mes.wms
WmMaterial material = Context
.Queryable()
.Where(it => it.BlankNum == item.BlankNum)
- .Where(it => it.Remarks == "毛坯")
+ .Where(it => it.Type == 2)
.First();
if (material == null)
{
@@ -239,5 +241,151 @@ namespace ZR.Service.mes.wms
}
return resut;
}
+
+ ///
+ /// 盘点库存
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public int DoStocktakingBlankInventory(
+ string fkBlankInventoryId,
+ string blankNum,
+ int changeQuantity,
+ string username,
+ string remark,
+ DateTime? actionTime
+ )
+ {
+ try
+ {
+ Context.Ado.BeginTran();
+ DateTime nowTime = DateTime.Now.ToLocalTime();
+ // 原始数据记录
+ WmBlankInventory oldInfo = Context
+ .Queryable()
+ .Where(it => it.Id == fkBlankInventoryId)
+ .First();
+ if (oldInfo == null)
+ {
+ throw new Exception("毛坯记录不存在!");
+ }
+ WmBlankInventory updateInfo =
+ new()
+ {
+ Id = fkBlankInventoryId,
+ Quantity = changeQuantity,
+ UpdatedBy = username,
+ UpdatedTime = nowTime
+ };
+ int res1 = Context
+ .Updateable(updateInfo)
+ .IgnoreColumns(ignoreAllNullColumns: true)
+ .ExecuteCommand();
+ WmBlankRecord res =
+ new()
+ {
+ Id = SnowFlakeSingle.Instance.NextId().ToString(),
+ FkBlankInventoryId = fkBlankInventoryId,
+ BlankNum = blankNum,
+ ChangeQuantity = changeQuantity,
+ Type = 4,
+ Status = 1,
+ ActionTime = actionTime,
+ Remark =
+ remark + "\n自动添加备注:盘点原箱数" + oldInfo.Quantity + ",新箱数" + changeQuantity,
+ CreatedBy = username,
+ CreatedTime = nowTime
+ };
+ //填写库存记录
+ Context.Insertable(res).ExecuteCommand();
+ Context.Ado.CommitTran();
+ return res1;
+ }
+ catch (Exception e)
+ {
+ Context.Ado.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
+
+ public int DoOutboundByWorkOrderId(string workOrderId, int changeQuantity, string username)
+ {
+ try
+ {
+ Context.Ado.BeginTran();
+ int type = 1;
+ DateTime nowTime = DateTime.Now.ToLocalTime();
+ // 提出工单
+ ProWorkorder_v2 workOrderInfo = Context
+ .Queryable()
+ .Where(it => it.ClientWorkorder == workOrderId)
+ .First();
+ if (workOrderInfo == null)
+ {
+ throw new Exception("工单记录不存在!" + workOrderId);
+ }
+ if (workOrderInfo.Remark1.Contains("返工"))
+ {
+ type = 2;
+ }
+ // 根据工单查看毛坯库存数据记录
+ WmBlankInventory blankInventory = Context
+ .Queryable()
+ .Where(it => it.BlankNum == workOrderInfo.BlankNumber)
+ .Where(it => it.Status == 1)
+ .Where(it => it.Type == type)
+ .First();
+ if (blankInventory == null)
+ {
+ throw new Exception("毛坯记录不存在!请检查毛坯仓库,毛坯号:" + workOrderInfo.BlankNumber);
+ }
+ WmBlankInventory updateInfo =
+ new()
+ {
+ Id = blankInventory.Id,
+ Quantity = blankInventory.Quantity - workOrderInfo.PreviousNumber,
+ UpdatedBy = username,
+ UpdatedTime = nowTime
+ };
+ int res1 = Context
+ .Updateable(updateInfo)
+ .IgnoreColumns(ignoreAllNullColumns: true)
+ .ExecuteCommand();
+ WmBlankRecord res =
+ new()
+ {
+ Id = SnowFlakeSingle.Instance.NextId().ToString(),
+ FkBlankInventoryId = blankInventory.Id,
+ BlankNum = blankInventory.BlankNum,
+ ChangeQuantity = workOrderInfo.PreviousNumber,
+ Type = 2,
+ Status = 1,
+ ActionTime = nowTime,
+ Remark =
+ "自动添加备注:工单号"
+ + workOrderId
+ + ",上件数"
+ + workOrderInfo.PreviousNumber
+ + "包装完成自动出库。",
+ CreatedBy = username,
+ CreatedTime = nowTime
+ };
+ //添加库存记录
+ Context.Insertable(res).ExecuteCommand();
+ Context.Ado.CommitTran();
+ return res1;
+ }
+ catch (Exception e)
+ {
+ Context.Ado.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
}
}
diff --git a/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs b/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs
index 56bd07c3..b1ec7e32 100644
--- a/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs
+++ b/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs
@@ -54,6 +54,7 @@ namespace ZR.Service.Business
{
WmMaterial material = Context.Queryable()
.Where(it => it.Partnumber == item.Partnumber)
+ .Where(it => it.Type == 1)
.First();
if (material == null)
{
@@ -100,6 +101,7 @@ namespace ZR.Service.Business
{
WmMaterial material = Context.Queryable()
.Where(it => it.Partnumber == item.Partnumber)
+ .Where(it => it.Type == 1)
.First();
if (material == null)
{
@@ -155,6 +157,7 @@ namespace ZR.Service.Business
{
WmMaterial material = Context.Queryable()
.Where(it => it.Partnumber == item.Partnumber)
+ .Where(it => it.Type == 1)
.First();
if (material == null)
{
@@ -201,6 +204,7 @@ namespace ZR.Service.Business
{
WmMaterial material = Context.Queryable()
.Where(it => it.Partnumber == item.Partnumber)
+ .Where(it => it.Type == 1)
.First();
if (material == null)
{
@@ -258,6 +262,7 @@ namespace ZR.Service.Business
{
WmMaterial material = Context.Queryable()
.Where(it => it.Partnumber == item.Partnumber)
+ .Where(it => it.Type == 1)
.First();
if (material == null)
{
@@ -306,6 +311,7 @@ namespace ZR.Service.Business
{
WmMaterial material = Context.Queryable()
.Where(it => it.Partnumber == item.Partnumber)
+ .Where(it => it.Type == 1)
.First();
if (material == null)
{
@@ -361,6 +367,7 @@ namespace ZR.Service.Business
{
WmMaterial material = Context.Queryable()
.Where(it => it.Partnumber == item.Partnumber)
+ .Where(it => it.Type == 1)
.First();
if (material == null)
{
@@ -406,6 +413,7 @@ namespace ZR.Service.Business
{
WmMaterial material = Context.Queryable()
.Where(it => it.Partnumber == item.Partnumber)
+ .Where(it => it.Type == 1)
.First();
if (material == null)
{
@@ -499,6 +507,7 @@ namespace ZR.Service.Business
{
WmMaterial material = Context.Queryable()
.Where(it => it.Partnumber == item.Partnumber)
+ .Where(it => it.Type == 1)
.First();
if (material == null)
{
diff --git a/ZR.Service/mes/wms/WmGoodsNowProductionService.cs b/ZR.Service/mes/wms/WmGoodsNowProductionService.cs
index 832b6b11..edd5f16b 100644
--- a/ZR.Service/mes/wms/WmGoodsNowProductionService.cs
+++ b/ZR.Service/mes/wms/WmGoodsNowProductionService.cs
@@ -78,6 +78,7 @@ namespace ZR.Service.mes.wms
WmMaterial material = Context
.Queryable()
.Where(it => it.Partnumber == item.Partnumber)
+ .Where(it => it.Type == 1)
.First();
if (material == null)
{
diff --git a/ZR.Service/mes/wms/WmGoodsOutProductionService.cs b/ZR.Service/mes/wms/WmGoodsOutProductionService.cs
index a461151b..0af6158f 100644
--- a/ZR.Service/mes/wms/WmGoodsOutProductionService.cs
+++ b/ZR.Service/mes/wms/WmGoodsOutProductionService.cs
@@ -32,6 +32,7 @@ namespace ZR.Service.mes.wms
partnumberByDescription = Context
.Queryable()
.Where(it => it.Description.Contains(parm.Description))
+ .Where(it => it.Type == 1)
.Select(it => it.Partnumber)
.ToList();
}
diff --git a/ZR.Service/mes/wms/WmMaterialService.cs b/ZR.Service/mes/wms/WmMaterialService.cs
index 2ad66e9d..c668df2d 100644
--- a/ZR.Service/mes/wms/WmMaterialService.cs
+++ b/ZR.Service/mes/wms/WmMaterialService.cs
@@ -25,6 +25,7 @@ namespace ZR.Service.mes.wms
var predicate = Expressionable.Create()
.AndIF(parm.Partnumber != null, it => it.Partnumber.Contains(parm.Partnumber))
.AndIF(parm.U8InventoryCode != null, it => it.U8InventoryCode.Contains(parm.U8InventoryCode))
+ .AndIF(parm.BlankNum != null, it => it.BlankNum.Contains(parm.BlankNum))
.AndIF(parm.ProductName != null, it => it.ProductName.Contains(parm.ProductName))
.AndIF(parm.Color != null, it => it.Color.Contains(parm.Color))
.AndIF(parm.Specification != null, it => it.Specification.Contains(parm.Specification))