Files
shgx_tz_mes_backend_sync/ZR.Service/mes/wms/WMExitwarehouseService.cs
2025-11-06 14:32:53 +08:00

111 lines
4.0 KiB
C#

using Infrastructure.Attribute;
using System;
using ZR.Model.MES.pro;
using ZR.Model.MES.wms;
using ZR.Model.MES.wms.Dto;
using ZR.Service.mes.wms.IService;
namespace ZR.Service.mes.wms
{
[AppService(ServiceType = typeof(IWMExitwarehouseService), ServiceLifetime = LifeTime.Transient)]
public class WMExitwarehouseService : BaseService<WmInfo>, IWMExitwarehouseService
{
private NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
// 直接退库
public bool ExitwarehouseCommmon(string original)
{
ResultionPackageCodeDto packageCode = ResolutionPackagecode(original);
string patchCode = packageCode.PatchCode;
int result = Context.Deleteable<WmGoodsNowProduction>().Where(it => it.PackageCodeClient == patchCode).ExecuteCommand();
if (result == 0)
{
return false;
}
return true;
}
/// <summary>
/// 判断箱子是否在成品库中
/// </summary>
/// <param name="PatchCode"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public bool IsExistedWarehouse(string originalCode)
{
ResultionPackageCodeDto resultionPackage = ResolutionPackagecode(originalCode);
return Context.Queryable<WmGoodsNowProduction>().Where(it => it.PackageCodeClient == resultionPackage.PatchCode).Any();
}
/// <summary>
/// 解析外箱标签码
/// </summary>
/// <param name="packagecode"></param>
/// <returns></returns>
private ResultionPackageCodeDto ResolutionPackagecode(string packagecode)
{
ResultionPackageCodeDto resultionPackageCode = new ResultionPackageCodeDto();
try
{
resultionPackageCode.originalCode = packagecode;
// todo 解析外箱标签码
string[] splitstr = packagecode.Split('^');
resultionPackageCode.PatchCode = splitstr[0].Substring(5);
//todo 解析零件号
string partnumber = splitstr[1].Substring(11);
//int length = lingshi.Length - 2;
//string partnumber = lingshi.Substring(0, length);
resultionPackageCode.PartNumner = partnumber;
//todo 解析工单号
string workoderidid = splitstr[2].Substring(7);
resultionPackageCode.WorkoderID = workoderidid;
//todo 生产描述
resultionPackageCode.ProductionTime = "20" + workoderidid.Substring(0, 6);
//todo 解析箱子中产品数量
string product_num = splitstr[3].Substring(4);
resultionPackageCode.Quantity = int.Parse(product_num);
//todo 产品描述 partnumber
// ProWorklplan_v2 plan= Context.Queryable<ProWorklplan_v2>().Where(it => it.Partnumber == partnumber).First();
//if(plan != null)
// {
// resultionPackageCode.ProductionDescribe = plan.ProductName;
// }
// else
// {
// resultionPackageCode.ProductionDescribe = "生产计划无此零件号";
// }
ProWorkorder_v2 workorder = Context.Queryable<ProWorkorder_v2>().Where(it => it.FinishedPartNumber == partnumber).First();
if (workorder != null)
{
resultionPackageCode.ProductionDescribe = workorder.ProductDescription;
}
else
{
resultionPackageCode.ProductionDescribe = "生产工单无此零件号";
}
}
catch (Exception ex)
{
logger.Error($"外箱标签码,解析失败 {ex.Message}");
}
return resultionPackageCode;
}
}
}