U8对接WMS出入库(001:包含PDA入库,PDA出库,web批量出库,web单次出库)

This commit is contained in:
2025-06-09 18:14:52 +08:00
parent 0d9571a5b7
commit 88589fc6dc
4 changed files with 217 additions and 8 deletions

View File

@@ -7,6 +7,7 @@ using SqlSugar;
using ZR.Model.MES.wms;
using ZR.Model.MES.wms.Dto;
using ZR.Service.mes.wms.IService;
using ZR.Service.mes.wms_u8;
using ZR.Service.Utils;
namespace ZR.Service.mes.wms
@@ -59,7 +60,7 @@ namespace ZR.Service.mes.wms
if (resultionPackage == null)
{
Context.Ado.RollbackTran();
throw new Exception("其中一箱外标签解析失败,第" + (i + 1) + "箱");
throw new Exception($"其中一箱外标签解析失败,第{i + 1}编码:{packageArray[i]}");
}
// 入库时查出此批次号箱已入库,则报警提示
bool hasWarehouse = Context
@@ -168,6 +169,56 @@ namespace ZR.Service.mes.wms
Context.Ado.RollbackTran();
throw new Exception("操作记录插入失败");
}
// 入库信息转发U8
//1.构建信息
List<ERP_WMS_interactiveModelQuery> u8PackageList = new();
foreach (var item in preparegoodsList)
{
string dateString = DateTime.Now.ToString("yyyyMMdd");
// 使用正则表达式匹配日期模式
string pattern = @"(\d{2})(\d{2})(\d{2})";
Match match = Regex.Match(item.PackageCodeClient, pattern);
if (match.Success)
{
// 提取匹配的年份、月份和日期
string year = match.Groups[1].Value;
string month = match.Groups[2].Value;
string day = match.Groups[3].Value;
// 转换为四位数年份假设2000年代
string fullYear = "20" + year;
// 组合为yyyyMMdd格式
dateString = fullYear + month + day;
}
else
{
logger.Warn($"未找到匹配的日期模式:{item.PackageCodeClient}");
}
ERP_WMS_interactiveModelQuery u8PackageItem =
new()
{
materialCode = item.Partnumber,
location = item.LocationCode,
Qty = item.GoodsNumLogic.ToString(),
// 批次号
LotNo = dateString,
createTime = DateTime.Now,
userID = createName,
guid = Guid.NewGuid().ToString(),
lineno = "涂装生产线"
};
u8PackageList.Add(u8PackageItem);
}
string urlBase = "http://gam.com.cn:8054/";
ERP_WMS_interactiveService _eRP_WMS_InteractiveService = new();
ERP_WMS_interactiveModelResult u8ErpResult = _eRP_WMS_InteractiveService.inbounded(
urlBase,
u8PackageList
);
//TODO 对U8返回结果进行解析
logger.Warn(u8ErpResult);
Context.Ado.CommitTran();
return result;
}
@@ -412,9 +463,7 @@ namespace ZR.Service.mes.wms
.Where(it => it.WorkOrderNum == resultionPackage.WorkoderID)
// .Where(it => it.PackingCode.EndsWith(packingCode))
// .Where(it => packingCode == int.Parse(it.PackingCode.Substring(7)).ToString())
.Where(it =>
package_no == int.Parse(SqlFunc.Right(it.PackingCode, 5))
)
.Where(it => package_no == int.Parse(SqlFunc.Right(it.PackingCode, 5)))
.Where(it => it.BFilled == true)
.First();
if (recourd == null)
@@ -425,9 +474,7 @@ namespace ZR.Service.mes.wms
var inspect = Context
.Queryable<WmFgentryInspect>()
.Where(it => it.Workorder == resultionPackage.WorkoderID)
.Where(it =>
package_no == int.Parse(SqlFunc.Right(it.Packcode, 5))
)
.Where(it => package_no == int.Parse(SqlFunc.Right(it.Packcode, 5)))
//.Where(it => it.Packcode.EndsWith(package_no))
.OrderByDescending(it => it.CreatedTime)
.First();

View File

@@ -1,10 +1,13 @@
using System;
using System.Text.RegularExpressions;
using Aliyun.OSS;
using Infrastructure.Attribute;
using Microsoft.AspNetCore.Http.HttpResults;
using SqlSugar;
using ZR.Model.MES.wms;
using ZR.Model.MES.wms.Dto;
using ZR.Service.mes.wms.IService;
using ZR.Service.mes.wms_u8;
namespace ZR.Service.mes.wms
{
@@ -19,6 +22,7 @@ namespace ZR.Service.mes.wms
: BaseService<WmGoodsOutRecord>,
IWmGoodsOutProductionService
{
private NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
/// <summary>
/// 查询出库货物记录表列表
/// </summary>
@@ -136,6 +140,61 @@ namespace ZR.Service.mes.wms
.IgnoreColumns(ignoreAllNullColumns: true)
.ExecuteCommand();
}
// 出库信息转发U8
//1.构建信息
List<WmGoodsOutRecord> outPackagelist = new()
{
model
};
List<ERP_WMS_interactiveModelQuery> u8PackageList = new();
foreach (var item in outPackagelist)
{
string dateString = DateTime.Now.ToString("yyyyMMdd");
// 使用正则表达式匹配日期模式
string pattern = @"(\d{2})(\d{2})(\d{2})";
Match match = Regex.Match(item.PackageCodeClient, pattern);
if (match.Success)
{
// 提取匹配的年份、月份和日期
string year = match.Groups[1].Value;
string month = match.Groups[2].Value;
string day = match.Groups[3].Value;
// 转换为四位数年份假设2000年代
string fullYear = "20" + year;
// 组合为yyyyMMdd格式
dateString = fullYear + month + day;
}
else
{
logger.Warn($"未找到匹配的日期模式:{item.PackageCodeClient}");
}
ERP_WMS_interactiveModelQuery u8PackageItem =
new()
{
materialCode = item.Partnumber,
location = item.LocationCode,
Qty = item.GoodsNumLogic.ToString(),
// 批次号
LotNo = dateString,
createTime = DateTime.Now,
userID = model.CreatedBy ?? "手动单箱出库",
guid = Guid.NewGuid().ToString(),
lineno = "涂装生产线"
};
u8PackageList.Add(u8PackageItem);
}
string urlBase = "http://gam.com.cn:8054/";
ERP_WMS_interactiveService _eRP_WMS_InteractiveService = new();
ERP_WMS_interactiveModelResult u8ErpResult = _eRP_WMS_InteractiveService.outbounded(
urlBase,
u8PackageList
);
//TODO 对U8返回结果进行解析
logger.Warn(u8ErpResult);
return Context.Insertable(model).ExecuteReturnEntity();
}
@@ -176,6 +235,7 @@ namespace ZR.Service.mes.wms
int totalPackage = 0;
int totalPartnumber = 0;
List<string> packageCodeRemark = new();
List< WmGoodsOutRecord > outRecordList = new();
if (type == 1)
{
var list = parm.Ids;
@@ -208,6 +268,7 @@ namespace ZR.Service.mes.wms
CreatedBy = parm.CreatedBy ?? "batch",
CreatedTime = time,
};
outRecordList.Add(outRecord);
// 记录统计
totalPackage++;
if (!partnumbers.Contains(nowProduction.Partnumber))
@@ -221,6 +282,7 @@ namespace ZR.Service.mes.wms
.Deleteable<WmGoodsNowProduction>()
.Where(it => it.Id == nowProduction.Id)
.ExecuteCommand();
}
}
else if (type == 2)
@@ -268,6 +330,7 @@ namespace ZR.Service.mes.wms
CreatedBy = parm.CreatedBy ?? "batch",
CreatedTime = time,
};
outRecordList.Add(outRecord);
// 记录统计
totalPackage++;
if (!partnumbers.Contains(nowProduction.Partnumber))
@@ -313,6 +376,55 @@ namespace ZR.Service.mes.wms
CreatedTime = DateTime.Now,
};
int recordNum = Context.Insertable(wmGoodsRecord).ExecuteCommand();
// 出库信息转发U8
//1.构建信息
List<ERP_WMS_interactiveModelQuery> u8PackageList = new();
foreach (var item in outRecordList)
{
string dateString = DateTime.Now.ToString("yyyyMMdd");
// 使用正则表达式匹配日期模式
string pattern = @"(\d{2})(\d{2})(\d{2})";
Match match = Regex.Match(item.PackageCodeClient, pattern);
if (match.Success)
{
// 提取匹配的年份、月份和日期
string year = match.Groups[1].Value;
string month = match.Groups[2].Value;
string day = match.Groups[3].Value;
// 转换为四位数年份假设2000年代
string fullYear = "20" + year;
// 组合为yyyyMMdd格式
dateString = fullYear + month + day;
}
else
{
logger.Warn($"未找到匹配的日期模式:{item.PackageCodeClient}");
}
ERP_WMS_interactiveModelQuery u8PackageItem =
new()
{
materialCode = item.Partnumber,
location = item.LocationCode,
Qty = item.GoodsNumLogic.ToString(),
// 批次号
LotNo = dateString,
createTime = DateTime.Now,
userID = parm.CreatedBy ?? "手动批量出库",
guid = Guid.NewGuid().ToString(),
lineno = "涂装生产线"
};
u8PackageList.Add(u8PackageItem);
}
string urlBase = "http://gam.com.cn:8054/";
ERP_WMS_interactiveService _eRP_WMS_InteractiveService = new();
ERP_WMS_interactiveModelResult u8ErpResult = _eRP_WMS_InteractiveService.outbounded(
urlBase,
u8PackageList
);
//TODO 对U8返回结果进行解析
logger.Warn(u8ErpResult);
return "ok";
}
}

View File

@@ -10,6 +10,7 @@ using ZR.Model.MES.wms;
using ZR.Model.MES.wms.Dto;
using ZR.Repository;
using ZR.Service.mes.wms.IService;
using ZR.Service.mes.wms_u8;
using ZR.Service.Utils;
namespace ZR.Service.mes.wms
@@ -578,6 +579,55 @@ namespace ZR.Service.mes.wms
Context.Ado.RollbackTran();
throw new Exception("记录插入失败");
}
// 出库信息转发U8
//1.构建信息
List<ERP_WMS_interactiveModelQuery> u8PackageList = new();
foreach (var item in insertList)
{
string dateString = DateTime.Now.ToString("yyyyMMdd");
// 使用正则表达式匹配日期模式
string pattern = @"(\d{2})(\d{2})(\d{2})";
Match match = Regex.Match(item.PackageCodeClient, pattern);
if (match.Success)
{
// 提取匹配的年份、月份和日期
string year = match.Groups[1].Value;
string month = match.Groups[2].Value;
string day = match.Groups[3].Value;
// 转换为四位数年份假设2000年代
string fullYear = "20" + year;
// 组合为yyyyMMdd格式
dateString = fullYear + month + day;
}
else
{
logger.Warn($"未找到匹配的日期模式:{item.PackageCodeClient}");
}
ERP_WMS_interactiveModelQuery u8PackageItem =
new()
{
materialCode = item.Partnumber,
location = item.LocationCode,
Qty = item.GoodsNumLogic.ToString(),
// 批次号
LotNo = dateString,
createTime = DateTime.Now,
userID = Createby,
guid = Guid.NewGuid().ToString(),
lineno = "涂装生产线"
};
u8PackageList.Add(u8PackageItem);
}
string urlBase = "http://gam.com.cn:8054/";
ERP_WMS_interactiveService _eRP_WMS_InteractiveService = new();
ERP_WMS_interactiveModelResult u8ErpResult = _eRP_WMS_InteractiveService.outbounded(
urlBase,
u8PackageList
);
//TODO 对U8返回结果进行解析
logger.Warn(u8ErpResult);
Context.Ado.CommitTran();
return (sum_delete, sum_insert);
}