From c9e3a7f0c154892f2327e300e28af53f81e40ad0 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周四, 20 2月 2025 11:03:24 +0800
Subject: [PATCH] 软件加密+ 修复 不断给plc报警的问题
---
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs | 795 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 662 insertions(+), 133 deletions(-)
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
index 6c51f54..30e9374 100644
--- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
@@ -8,6 +8,8 @@
using Microsoft.CodeAnalysis.Operations;
using Admin.NET.Application.Service.WmsTask.WmsRbLineTask.Dto;
using Furion.DatabaseAccessor;
+using Admin.NET.Application.Service.WmsCommonnQuery.Dto;
+using Admin.NET.Application.CommonHelper;
namespace Admin.NET.Application;
/// <summary>
@@ -16,6 +18,9 @@
[ApiDescriptionSettings(ApplicationConst.WmsTaskGroupName, Order = 100)]
public class WmsOperationTaskService : IDynamicApiController, ITransient
{
+ private static readonly SemaphoreSlim semaphore = new SemaphoreSlim(1, 1);
+ private static readonly SemaphoreSlim semaphore2 = new SemaphoreSlim(1, 1);
+
private readonly SqlSugarRepository<WmsRbLineTask> _rep;
private readonly SqlSugarRepository<WmsStockQuan> _wmsStockQuanRep;
private readonly SqlSugarRepository<Mes_Package_Gather> _mesPackageGatherRep;
@@ -25,6 +30,10 @@
private readonly SqlSugarRepository<WmsRecordUpiProcess> _wmsRecordUpiProcessRep;
private readonly SqlSugarRepository<WmsRecordPackageProcess> _wmsRecordPackageProcessRep;
private readonly SqlSugarRepository<Mes_Upi_LineQueue> _mes_Upi_LineQueueRep;
+ private readonly SqlSugarRepository<Mes_Package_LineQueue> _mes_Package_LineQueueRep;
+ private readonly SqlSugarRepository<WmsRecordUpiNg> _wmsRecordUpiNgRep;
+ private readonly SqlSugarRepository<Mes_Package_UnLine_Record> _mes_Package_UnLine_RecordRep;
+ private readonly WmsCommonnQueryService _wmsCommonnQueryService;
public WmsOperationTaskService(
SqlSugarRepository<Mes_Upi_LineQueue> mes_Upi_LineQueueRep,
@@ -35,8 +44,15 @@
, SqlSugarRepository<Mes_Order_Gather> mesOrderGatherRep
, SqlSugarRepository<WmsRecordUpiProcess> wmsRecordUpiProcessRep
, SqlSugarRepository<WmsRecordPackageProcess> wmsRecordPackageProcessRep
+ , SqlSugarRepository<WmsRecordUpiNg> wmsRecordUpiNgRep
+ , WmsCommonnQueryService wmsCommonnQueryService
+ , SqlSugarRepository<Mes_Package_LineQueue> mes_Package_LineQueueRep
+ , SqlSugarRepository<Mes_Package_UnLine_Record> mes_Package_UnLine_RecordRep
)
{
+ _mes_Package_LineQueueRep = mes_Package_LineQueueRep;
+ _wmsCommonnQueryService = wmsCommonnQueryService;
+ _wmsRecordUpiNgRep = wmsRecordUpiNgRep;
_sysConfigRep = sysConfigRep;
_mesPackageGatherRep = mesPackageGatherRep;
_rep = rep;
@@ -46,6 +62,7 @@
_wmsRecordUpiProcessRep = wmsRecordUpiProcessRep;
_wmsRecordPackageProcessRep = wmsRecordPackageProcessRep;
_mes_Upi_LineQueueRep = mes_Upi_LineQueueRep;
+ _mes_Package_UnLine_RecordRep = mes_Package_UnLine_RecordRep;
}
@@ -65,25 +82,139 @@
{
throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
}
+ //楠岃瘉浼犻�掔殑鍖呮槸鍚﹂兘鍦ㄩ綈鍖呬箣鍐呫��
+ List<WmsPackListOutput> packList = await _wmsCommonnQueryService.PackList(new Service.WmsCommonnQuery.Dto.PackListInput() { IsPack = false });
+
List<WmsStockQuan> updateQuanList = new List<WmsStockQuan>();
foreach (var item in input.PackageCodeList)
{
+ var isExistCount = packList.Where(x => x.PackageCode == item).Count();
+ if (isExistCount == 0)
+ {
+ throw Oops.Oh($"鍖厈item}涓嶆槸缂哄寘鐘舵�侊紝璇锋鏌ワ紒");
+ }
+
var quanList = await _wmsStockQuanRep.AsQueryable().Where(x => x.PackageCode == item).ToListAsync();
- var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.榻愬寘寰呭嚭搴�).Count();
+ var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.榻愬寘寰呭嚭搴� || x.StockStatus == StockStatusEnum.浜哄伐榻愬寘鍑哄簱浠诲姟宸插垱寤�).Count();
if (isExist > 0)
{
- throw Oops.Oh($"鍖厈item}涓叾涓湁鏉跨姸鎬佹槸'{StockStatusEnum.榻愬寘寰呭嚭搴�.ToString()}'锛屼笉鍏佽寮哄埗鍑哄簱");
+ throw Oops.Oh($"鍖厈item}涓叾涓湁鏉跨姸鎬佹槸'{StockStatusEnum.榻愬寘寰呭嚭搴�.ToString()}' 鎴�'{StockStatusEnum.浜哄伐榻愬寘鍑哄簱浠诲姟宸插垱寤�.ToString()}'锛屼笉鍏佽寮哄埗鍑哄簱");
}
//鏇存柊鐘舵��
foreach (var quan in quanList)
{
+ if (quan.StockStatus != StockStatusEnum.鍦ㄥ簱 && quan.StockStatus != StockStatusEnum.宸插喕缁�)
+ {
+ throw Oops.Oh($"閮ㄤ欢鏉$爜{quan.Upi}鐨勫簱瀛樼姸鎬佷笉鏄�'{StockStatusEnum.鍦ㄥ簱.ToString()}鎴杮StockStatusEnum.宸插喕缁�.ToString()}'鐘舵��");
+ }
+
quan.StockStatus = StockStatusEnum.浜哄伐寮哄埗寰呭嚭搴�;
quan.StockStatusName = StockStatusEnum.浜哄伐寮哄埗寰呭嚭搴�.ToString();
quan.UpdateTime = DateTime.Now;
quan.OperReason = "浜哄伐寮哄埗寰呭嚭搴�";
}
updateQuanList.AddRange(quanList);
+
+ var packageObj = await _mesPackageGatherRep.GetFirstAsync(x => x.PackageCode == item);
+ packageObj.UpiFlag = UpiFlagEnum.NG;
+ packageObj.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
+ await _mesPackageGatherRep.UpdateAsync(packageObj);
+
+
+ //涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹� _mesOrderGatherRep
+ await UpdateOrderGather(packageObj, true);
+
+ foreach (var quan in quanList)
+ {
+ //娓呯悊 闃熷垪琛�
+ var removeUpiList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.Upi == quan.Upi).ToListAsync();
+ if (removeUpiList?.Count > 0)
+ {
+ await _mes_Upi_LineQueueRep.DeleteAsync(removeUpiList);
+ }
+
+ var removePackageList = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == quan.PackageCode).ToListAsync();
+ if (removePackageList?.Count > 0)
+ {
+ await _mes_Package_LineQueueRep.DeleteAsync(removePackageList);
+ }
+ }
+ }
+
+ //妯″紡鍒ゆ柇
+ var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep);
+ var res = await client.ValidateModeAsync(1);
+ if (res.result == false)
+ {
+ throw Oops.Oh(res.resMsg);
+ }
+
+ await _wmsStockQuanRep.UpdateRangeAsync(updateQuanList);
+
+ }
+
+
+ /// <summary>
+ /// 浜哄伐榻愬寘鍑哄簱
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost]
+ [ApiDescriptionSettings(Name = "PersonOutbound")]
+ [Description("WmsOperationTask/PersonOutbound")]
+ [UnitOfWork]
+ public async Task PersonOutbound(PersonOutboundInput input)
+ {
+ if (input == null || input.PackageCodeList?.Count == 0)
+ {
+ throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
+ }
+ //楠岃瘉浼犻�掔殑鍖呮槸鍚﹂兘鍦ㄩ綈鍖呬箣鍐呫��
+ List<WmsPackListOutput> packList = await _wmsCommonnQueryService.PackList(new Service.WmsCommonnQuery.Dto.PackListInput() { IsPack = true });
+
+ List<WmsStockQuan> updateQuanList = new List<WmsStockQuan>();
+ foreach (var item in input.PackageCodeList)
+ {
+ var isExistCount = packList.Where(x => x.PackageCode == item).Count();
+ if (isExistCount == 0)
+ {
+ throw Oops.Oh($"鍖厈item}涓嶆槸榻愬寘鐘舵�侊紝璇锋鏌ワ紒");
+ }
+
+ var quanList = await _wmsStockQuanRep.AsQueryable().Where(x => x.PackageCode == item).ToListAsync();
+ var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.浜哄伐寮哄埗寰呭嚭搴� || x.StockStatus == StockStatusEnum.浜哄伐寮哄埗浠诲姟宸插垱寤�).Count();
+ if (isExist > 0)
+ {
+ throw Oops.Oh($"鍖厈item}涓叾涓湁鏉跨姸鎬佹槸'{StockStatusEnum.浜哄伐寮哄埗寰呭嚭搴�.ToString()}'鎴�'{StockStatusEnum.浜哄伐寮哄埗浠诲姟宸插垱寤�.ToString()}'锛屼笉鍏佽浜哄伐榻愬寘鍑哄簱");
+ }
+
+ //鏇存柊鐘舵��
+ foreach (var quan in quanList)
+ {
+ if (quan.StockStatus != StockStatusEnum.鍦ㄥ簱 && quan.StockStatus != StockStatusEnum.宸插喕缁�)
+ {
+ throw Oops.Oh($"閮ㄤ欢鏉$爜{quan.Upi}鐨勫簱瀛樼姸鎬佷笉鏄�'{StockStatusEnum.鍦ㄥ簱.ToString()}鎴杮StockStatusEnum.宸插喕缁�.ToString()}'鐘舵��");
+ }
+ quan.StockStatus = StockStatusEnum.榻愬寘寰呭嚭搴�;
+ quan.StockStatusName = StockStatusEnum.榻愬寘寰呭嚭搴�.ToString();
+ quan.UpdateTime = DateTime.Now;
+ quan.OperReason = "浜哄伐榻愬寘鍑哄簱";
+ }
+ updateQuanList.AddRange(quanList);
+
+ var packageObj = await _mesPackageGatherRep.GetFirstAsync(x => x.PackageCode == item);
+ packageObj.UpiStatus = UpiStatusEnum.宸查綈鍖�;
+ packageObj.IsQiBao = true;
+ await _mesPackageGatherRep.UpdateAsync(packageObj);
+ }
+
+ //妯″紡鍒ゆ柇
+ var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep);
+ var res = await client.ValidateModeAsync(2);
+ if (res.result == false)
+ {
+ throw Oops.Oh(res.resMsg);
}
await _wmsStockQuanRep.UpdateRangeAsync(updateQuanList);
@@ -91,7 +222,7 @@
}
/// <summary>
- /// 鍒ゆ柇榻愬
+ /// 涓嬬嚎鏀捐
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
@@ -101,78 +232,175 @@
[UnitOfWork]
public async Task<ValidateQiTaoOutput> ValdateQiTao(ValidateQiTaoInput input)
{
- ValidateQiTaoOutput output = new ValidateQiTaoOutput();
- if (input == null || input.PackageCode == null)
+ await semaphore2.WaitAsync();
+ try
{
- throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
- }
-
- var package = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
- if (package == null)
- {
- throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�");
- }
-
-
-
- var sysConfig = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.WmsBZ30_QiTao);
- if (sysConfig == null)
- {
- throw Oops.Oh($"娌℃湁閰嶇疆 鍒ゆ柇榻愬 鍊�");
- }
- if (!string.IsNullOrEmpty(sysConfig.Value) && sysConfig.Value.Trim() != "鏃�")
- {
- throw Oops.Oh($"鍒ゆ柇榻愬鍊煎凡缁忓瓨鍦ㄥ�納sysConfig.Value},涓嶅厑璁告搷浣�");
- }
-
- //璁板綍宸ヤ綔鏃堕棿鍜屽伐浣滀汉
- var curUserName = App.User.FindFirst(ClaimConst.RealName)?.Value;
-
- var setValue = "";
- var _QiTaoReuslt = "";
- var other_orderList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5 && x.PackageCode != input.PackageCode).ToListAsync();
- var num = other_orderList.Where(x => x.UpiStatus == UpiStatusEnum.鍒濆 || x.UpiStatus == UpiStatusEnum.涓嶉綈鍖�).Count();
- if (num > 0)
- {
- //涓嶉綈濂�
- setValue = $"{input.PackageCode}|涓嶉綈濂梶" + curUserName;
- _QiTaoReuslt = "涓嶉綈濂�";
- }
- else
- {
- setValue = $"{input.PackageCode}|榻愬|" + curUserName;
- _QiTaoReuslt = "榻愬";
- }
-
-
- sysConfig.Value = setValue;
- await _sysConfigRep.UpdateAsync(sysConfig);
- //*/
-
-
- var sysConfig_wms_unline_oper = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_oper);
- if (sysConfig_wms_unline_oper == null)
- {
- throw Oops.Oh($"娌℃湁閰嶇疆 鍖呰涓嬬嚎鎿嶄綔浜� 鍊�");
- }
- if (sysConfig_wms_unline_oper.Value != curUserName)
- {
- sysConfig_wms_unline_oper.Value = curUserName;
- await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_oper);
-
- var sysConfig_wms_unline_time = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_time);
- if (sysConfig_wms_unline_time == null)
+ ValidateQiTaoOutput output = new ValidateQiTaoOutput();
+ if (input == null || input.PackageCode == null)
{
- throw Oops.Oh($"娌℃湁閰嶇疆 鍖呰涓嬬嚎鐧婚檰鏃堕棿 鍊�");
+ throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
}
- sysConfig_wms_unline_time.Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_time);
+
+ var package = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
+ if (package == null)
+ {
+ throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�");
+ }
+
+ if (package.UpiStatus == UpiStatusEnum.宸蹭笅绾�)
+ {
+ throw Oops.Oh($"鍖厈input.PackageCode}宸蹭笅绾�");
+ }
+
+ var unlineObj = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
+ if (unlineObj != null)
+ {
+ throw Oops.Oh($"鍖呭彿{input.PackageCode}宸茬粡涓嬬嚎");
+ }
+
+ //鍒ゆ柇鏄惁鏄柊鐢熶骇璁㈠崟
+ var _QiTaoReuslt = "";
+ bool isNewOrder = false;
+ string _location = "BZ-33";
+ var lastPackageUnline = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.UpiFlag == UpiFlagEnum.姝e父 && x.Location != "浜哄伐").OrderByDescending(x => x.Id).FirstAsync();
+ if (lastPackageUnline == null)
+ {//璁や负鏄柊鐢熶骇璁㈠崟
+ isNewOrder = true;
+ }
+ else
+ {
+ if (lastPackageUnline.Info5 != package.Info5)
+ {//璁や负鏄柊鐢熶骇璁㈠崟
+ isNewOrder = true;
+ if (lastPackageUnline.Location == "BZ-33")
+ {
+ _location = "BZ-32";
+ }
+ else
+ {
+ _location = "BZ-33";
+ }
+ }
+ else
+ {
+ _location = lastPackageUnline.Location;
+ }
+ }
+ if (string.IsNullOrEmpty(_location))
+ {//榛樿
+ _location = "BZ-33";
+ }
+
+ _QiTaoReuslt = (bool)isNewOrder ? "鏂拌鍗�" : "褰撳墠璁㈠崟";
+
+
+ //璁板綍宸ヤ綔鏃堕棿鍜屽伐浣滀汉
+ var curUserName = App.User.FindFirst(ClaimConst.RealName)?.Value;
+
+ var sysConfig_wms_unline_oper = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_oper);
+ if (sysConfig_wms_unline_oper == null)
+ {
+ throw Oops.Oh($"娌℃湁閰嶇疆 鍖呰涓嬬嚎鎿嶄綔浜� 鍊�");
+ }
+ if (sysConfig_wms_unline_oper.Value != curUserName)
+ {
+ sysConfig_wms_unline_oper.Value = curUserName;
+ await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_oper);
+
+ var sysConfig_wms_unline_time = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_time);
+ if (sysConfig_wms_unline_time == null)
+ {
+ throw Oops.Oh($"娌℃湁閰嶇疆 鍖呰涓嬬嚎鐧婚檰鏃堕棿 鍊�");
+ }
+ sysConfig_wms_unline_time.Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_time);
+ }
+
+
+
+ //璇锋眰PLC
+ //鍒ゆ柇鏂瑰悜
+ bool myLocation = false;
+ if (_location == "BZ-33")
+ {
+ myLocation = false;
+ }
+ else
+ {
+ myLocation = true;
+ }
+ var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep);
+ var res = await client.WriteQiTaoInfoAsync(myLocation);
+ if (res.result == false)
+ {
+ throw Oops.Oh(res.resMsg);
+ }
+
+
+ //鏇存柊鏁版嵁
+ package.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
+ package.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
+ await _mesPackageGatherRep.UpdateAsync(package);
+
+ var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
+ foreach (var item in upiList)
+ {
+ item.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
+ item.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
+ item.UpdateTime = DateTime.Now;
+ }
+ await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
+ //鍒犻櫎闃熷垪淇℃伅
+ var lineQueue = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
+ if (lineQueue != null)
+ {
+ await _mes_Package_LineQueueRep.DeleteAsync(lineQueue);
+ }
+ //澶勭悊琛� mes_order_gather
+ await UpdateOrderGather(package, false);
+
+ var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
+
+ //鏂板涓嬬嚎璁板綍琛�
+ var all_upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.Info5 == package.Info5).ToListAsync();
+ var all_unlineList = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.Info5 == package.Info5).ToListAsync();
+ Mes_Package_UnLine_Record record = new Mes_Package_UnLine_Record();
+ record = package.Adapt<Mes_Package_UnLine_Record>();
+ record.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ record.Location = _location;
+ record.AllPackageNum = all_upiList.GroupBy(x => x.PackageCode).Count();
+ record.CurUnlineIndexPackageNum = all_unlineList.GroupBy(x => x.PackageCode).Count() + 1;
+ record.CreateTime = DateTime.Now;
+ record.CreateUserName = _cretaorName;
+ await _mes_Package_UnLine_RecordRep.InsertAsync(record);
+
+ //璁板綍鍖呭饱鍘�
+ WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
+ wmsRecordPackage = package.Adapt<WmsRecordPackageProcess>();
+ wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ wmsRecordPackage.Location = "";
+ wmsRecordPackage.OperRemark = "姝e父涓嬬嚎";
+ wmsRecordPackage.CreateTime = DateTime.Now;
+ wmsRecordPackage.CreateUserName = _cretaorName;
+ await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
+
+
+ output = package.Adapt<ValidateQiTaoOutput>();
+ output.QiTaoReuslt = _QiTaoReuslt + $",绗瑊record.CurUnlineIndexPackageNum}鍖呬笅绾�,鍏眥record.AllPackageNum}鍖�";
+ output.IsNewOrder = isNewOrder;
+ //output.IsNewOrder = false;
+ return output;
+ }
+ catch (Exception)
+ {
+
+ throw;
+ }
+ finally
+ {
+ semaphore2.Release();
}
-
- output = package.Adapt<ValidateQiTaoOutput>();
- output.QiTaoReuslt = _QiTaoReuslt;
- return output;
}
@@ -208,16 +436,22 @@
throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�");
}
+ var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
+
WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>();
+ wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordPackage.CreateTime = DateTime.Now;
+ wmsRecordPackage.CreateUserName = _cretaorName;
wmsRecordPackage.Location = "BZ29";
wmsRecordPackage.OperRemark = "鏍稿鏍囩";
await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
wmsRecordUpi = singleUpi.Adapt<WmsRecordUpiProcess>();
+ wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordUpi.CreateTime = DateTime.Now;
+ wmsRecordUpi.CreateUserName = _cretaorName;
wmsRecordUpi.Location = "BZ29";
wmsRecordUpi.OperRemark = "鏍稿鏍囩";
await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
@@ -227,7 +461,7 @@
/// <summary>
- /// NG鍖呬笅绾�-鎵弿鍖呭彿
+ /// NG鍖呬笅绾挎垨 姝e父鍖� 涓嬬嚎 -鎵弿鍖呭彿
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
@@ -237,71 +471,228 @@
[UnitOfWork]
public async Task UnlineForNGPackage(UnlineForNGPackageInput input)
{
- if (input == null)
+ await semaphore.WaitAsync();
+ try
{
- throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
+ if (input == null)
+ {
+ throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
+ }
+ if (string.IsNullOrEmpty(input.PackageCode))
+ {
+ throw Oops.Oh("鍖呭彿涓嶈兘涓虹┖");
+ }
+ //if (string.IsNullOrEmpty(input.Reason))
+ //{
+ // throw Oops.Oh("鍘熷洜涓嶈兘涓虹┖");
+ //}
+ string _OperRemark = "姝e父浜哄伐涓嬬嚎";
+ UpiFlagEnum upiFlagEnum = UpiFlagEnum.姝e父;
+ if (input.IsNG)
+ {
+ upiFlagEnum = UpiFlagEnum.NG;
+ _OperRemark = "NG涓嬬嚎";
+ }
+
+ var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
+ if (singlePackage == null)
+ {
+ throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�");
+ }
+
+ if (singlePackage.UpiStatus == UpiStatusEnum.宸蹭笅绾�)
+ {
+ throw Oops.Oh($"鍖呭彿{input.PackageCode}宸茬粡涓嬬嚎");
+ }
+
+ singlePackage.UpiFlag = upiFlagEnum;
+ singlePackage.UpdateTime = DateTime.Now;
+ singlePackage.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
+ singlePackage.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
+
+ var upiLineQueueList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
+ if (upiLineQueueList?.Count > 0)
+ {
+ await _mes_Upi_LineQueueRep.DeleteAsync(upiLineQueueList);
+ }
+
+ var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
+ if (upiList == null)
+ {
+ throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬澘浠舵暟鎹�");
+ }
+ var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
+
+ foreach (var item in upiList)
+ {
+ item.UpiFlag = UpiFlagEnum.NG;
+ item.UpdateTime = DateTime.Now;
+ item.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
+ item.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
+
+ WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
+ wmsRecordUpi = item.Adapt<WmsRecordUpiProcess>();
+ wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ wmsRecordUpi.CreateTime = DateTime.Now;
+ wmsRecordUpi.CreateUserName = _cretaorName;
+ wmsRecordUpi.Location = "";
+ wmsRecordUpi.OperRemark = _OperRemark;
+ await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
+
+ WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg();
+ wmsRecordUpiNg = item.Adapt<WmsRecordUpiNg>();
+ wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ wmsRecordUpiNg.CreateTime = DateTime.Now;
+ wmsRecordUpiNg.CreateUserName = _cretaorName;
+ wmsRecordUpiNg.OperRemark = _OperRemark;
+ await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg);
+
+
+
+ //娓呯悊 闃熷垪琛�
+ var removeUpiList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.Upi == item.UPI).ToListAsync();
+ if (removeUpiList?.Count > 0)
+ {
+ await _mes_Upi_LineQueueRep.DeleteAsync(removeUpiList);
+ }
+
+ var removePackageList = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == item.PackageCode).ToListAsync();
+ if (removePackageList?.Count > 0)
+ {
+ await _mes_Package_LineQueueRep.DeleteAsync(removePackageList);
+ }
+
+
+ }
+
+ //涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹� _mesOrderGatherRep
+ await UpdateOrderGather(singlePackage, input.IsNG);
+
+
+ WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
+ wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>();
+ wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ wmsRecordPackage.Location = "";
+ wmsRecordPackage.OperRemark = _OperRemark;
+ wmsRecordPackage.CreateTime = DateTime.Now;
+ wmsRecordPackage.CreateUserName = _cretaorName;
+ await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
+
+
+ //鏂板涓嬬嚎璁板綍琛�
+ var all_upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync();
+ var all_unlineList = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync();
+ Mes_Package_UnLine_Record record = new Mes_Package_UnLine_Record();
+ record = singlePackage.Adapt<Mes_Package_UnLine_Record>();
+ record.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ record.Location = "浜哄伐";
+ record.AllPackageNum = all_upiList.GroupBy(x => x.PackageCode).Count();
+ record.CurUnlineIndexPackageNum = all_unlineList.GroupBy(x => x.PackageCode).Count() + 1;
+ record.CreateTime = DateTime.Now;
+ record.CreateUserName = _cretaorName;
+ await _mes_Package_UnLine_RecordRep.InsertAsync(record);
+
+
+ await _mesPackageGatherRep.UpdateAsync(singlePackage);
+ await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
}
- if (string.IsNullOrEmpty(input.PackageCode))
+ catch (Exception)
{
- throw Oops.Oh("鍖呭彿涓嶈兘涓虹┖");
+
+ throw;
}
- if (string.IsNullOrEmpty(input.Reason))
+ finally
{
- throw Oops.Oh("鍘熷洜涓嶈兘涓虹┖");
+ semaphore.Release();
}
-
- var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
- if (singlePackage == null)
- {
- throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�");
- }
-
- singlePackage.UpiFlag = UpiFlagEnum.NG;
- singlePackage.UpdateTime = DateTime.Now;
- singlePackage.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
- singlePackage.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
-
- var upiLineQueueList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
- if (upiLineQueueList?.Count > 0)
- {
- await _mes_Upi_LineQueueRep.DeleteAsync(upiLineQueueList);
- }
-
- var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
- if (upiList == null)
- {
- throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬澘浠舵暟鎹�");
- }
- foreach (var item in upiList)
- {
- item.UpiFlag = UpiFlagEnum.NG;
- item.UpdateTime = DateTime.Now;
- item.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
- item.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
-
- WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
- wmsRecordUpi = item.Adapt<WmsRecordUpiProcess>();
- wmsRecordUpi.CreateTime = DateTime.Now;
- wmsRecordUpi.Location = "";
- wmsRecordUpi.OperRemark = "NG涓嬬嚎";
- await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
- }
-
-
- WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
- wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>();
- wmsRecordPackage.Location = "";
- wmsRecordPackage.OperRemark = "NG涓嬬嚎";
- await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
-
-
- await _mesPackageGatherRep.UpdateAsync(singlePackage);
- await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
-
}
/// <summary>
- /// NG鍖呬笅绾�-鎵弿浠跺彿
+ /// 鍏叡-涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹�
+ /// </summary>
+ /// <param name="singlePackage"></param>
+ /// <returns></returns>
+ private async Task UpdateOrderGather(Mes_Package_Gather singlePackage, bool isNG)
+ {
+ //涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹� _mesOrderGatherRep
+ bool isAdd = false;
+ var order = await _mesOrderGatherRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).FirstAsync();
+ if (order == null)
+ {
+ isAdd = true;
+ order = new Mes_Order_Gather()
+ {
+ Info5 = singlePackage.Info5,
+ OrderId = singlePackage.OrderId,
+ PlanNo = singlePackage.PlanNo,
+ };
+ }
+ var packageList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync();
+ order.PackageNum = packageList.Count();
+ //璁$畻宸蹭笅绾挎暟
+ var xiaList = packageList.Where(x => x.UpiStatus == UpiStatusEnum.宸蹭笅绾�).ToList();
+ order.UnLinePackageNum = xiaList.Count();
+ if (xiaList.Select(x => x.PackageCode).ToList().Contains(singlePackage.PackageCode) == false)
+ {
+ order.UnLinePackageNum += 1;
+ }
+ if (order.UnLinePackageNum > order.PackageNum)
+ {
+ order.UnLinePackageNum = order.PackageNum;
+ }
+ var ng_xiaList = packageList.Where(x => x.UpiStatus == UpiStatusEnum.宸蹭笅绾� && x.UpiFlag == UpiFlagEnum.NG).ToList();
+ order.NgPackageNum = ng_xiaList.Count();
+ if (isNG)
+ {
+ if (ng_xiaList.Select(x => x.PackageCode).ToList().Contains(singlePackage.PackageCode) == false)
+ {
+ order.NgPackageNum += 1;
+ }
+ }
+ if (order.NgPackageNum > order.PackageNum)
+ {
+ order.NgPackageNum = order.PackageNum;
+ }
+
+ order.NoUnLinePackageNum = order.PackageNum - order.UnLinePackageNum;
+
+ order.AllPackageArea = packageList.Sum(x => Convert.ToDecimal(x.Info13));
+ var scan_list = packageList.Where(x => x.UpiStatus == UpiStatusEnum.宸蹭笅绾� && x.UpiFlag == (int)UpiFlagEnum.姝e父).ToList();
+ order.ScanPackageArea = scan_list.Sum(x => Convert.ToDecimal(x.Info13));
+ //if (isNG == false)
+ //{
+ if (scan_list.Select(x => x.PackageCode).ToList().Contains(singlePackage.PackageCode) == false)
+ {
+ order.ScanPackageArea += Convert.ToDecimal(singlePackage.Info13);
+ }
+ //}
+ if (order.ScanPackageArea > order.AllPackageArea)
+ {
+ order.ScanPackageArea = order.AllPackageArea;
+ }
+
+ order.NoScanPackageArea = order.AllPackageArea - order.ScanPackageArea;
+
+ //鍒ゆ柇璇ヨ鍗曟槸鍚﹀凡涓嬬嚎
+ if (order.NoUnLinePackageNum == 0)
+ {
+ order.IsUnline = true;
+ order.UnlineTime = DateTime.Now;
+ //order.UnlinePerson = _UnlinePerson;
+ }
+
+ if (isAdd)
+ {
+ await _mesOrderGatherRep.InsertAsync(order);
+ }
+ else
+ {
+ await _mesOrderGatherRep.UpdateAsync(order);
+ }
+ }
+
+ /// <summary>
+ /// 鏍囪NG-鎵弿浠跺彿
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
@@ -336,14 +727,11 @@
throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{packageCode}鐨勬眹鎬绘暟鎹�");
}
+ var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
+
singlePackage.UpiFlag = UpiFlagEnum.NG;
singlePackage.UpdateTime = DateTime.Now;
-
- var upiLineQueueList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.PackageCode == packageCode).ToListAsync();
- if (upiLineQueueList?.Count > 0)
- {
- await _mes_Upi_LineQueueRep.DeleteAsync(upiLineQueueList);
- }
+ singlePackage.UpdateUserName = _cretaorName;
var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == packageCode).ToListAsync();
if (upiList == null)
@@ -354,20 +742,34 @@
{
item.UpiFlag = UpiFlagEnum.NG;
item.UpdateTime = DateTime.Now;
+ item.UpdateUserName = _cretaorName;
WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
wmsRecordUpi = item.Adapt<WmsRecordUpiProcess>();
+ wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordUpi.CreateTime = DateTime.Now;
+ wmsRecordUpi.CreateUserName = _cretaorName;
wmsRecordUpi.Location = "";
wmsRecordUpi.OperRemark = "鏍囪NG";
await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
+
+ WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg();
+ wmsRecordUpiNg = item.Adapt<WmsRecordUpiNg>();
+ wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ wmsRecordUpiNg.CreateTime = DateTime.Now;
+ wmsRecordUpiNg.CreateUserName = _cretaorName;
+ wmsRecordUpiNg.OperRemark = "鏍囪NG";
+ await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg);
}
WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>();
+ wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordPackage.Location = "";
wmsRecordPackage.OperRemark = "鏍囪NG";
+ wmsRecordPackage.CreateTime = DateTime.Now;
+ wmsRecordPackage.CreateUserName = _cretaorName;
await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
@@ -376,5 +778,132 @@
}
+
+ /// <summary>
+ /// 鍙栨秷NG-鎵弿浠跺彿
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost]
+ [ApiDescriptionSettings(Name = "CancelNG")]
+ [Description("WmsOperationTask/CancelNG")]
+ [UnitOfWork]
+ public async Task CancelNG(CancelNGInput input)
+ {
+ if (input == null)
+ {
+ throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
+ }
+ if (string.IsNullOrEmpty(input.Upi))
+ {
+ throw Oops.Oh("閮ㄤ欢鏉$爜涓嶈兘涓虹┖");
+ }
+ //if (string.IsNullOrEmpty(input.Reason))
+ //{
+ // throw Oops.Oh("鍘熷洜涓嶈兘涓虹┖");
+ //}
+
+ var singleUpi = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.UPI == input.Upi).FirstAsync();
+ if (singleUpi == null)
+ {
+ throw Oops.Oh($"娌℃湁鎵惧埌閮ㄤ欢鏉$爜{input.Upi}鐨勬暟鎹�");
+ }
+ var packageCode = singleUpi.PackageCode;
+ var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == packageCode).FirstAsync();
+ if (singlePackage == null)
+ {
+ throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{packageCode}鐨勬眹鎬绘暟鎹�");
+ }
+
+ var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
+
+ singlePackage.UpiFlag = UpiFlagEnum.姝e父;
+ singlePackage.UpdateTime = DateTime.Now;
+ singlePackage.UpdateUserName = _cretaorName;
+
+ var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == packageCode).ToListAsync();
+ if (upiList == null)
+ {
+ throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{packageCode}鐨勬澘浠舵暟鎹�");
+ }
+ foreach (var item in upiList)
+ {
+ item.UpiFlag = UpiFlagEnum.姝e父;
+ item.UpdateTime = DateTime.Now;
+ item.UpdateUserName = _cretaorName;
+
+ WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
+ wmsRecordUpi = item.Adapt<WmsRecordUpiProcess>();
+ wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ wmsRecordUpi.CreateTime = DateTime.Now;
+ wmsRecordUpi.CreateUserName = _cretaorName;
+ wmsRecordUpi.Location = "";
+ wmsRecordUpi.OperRemark = "鍙栨秷NG";
+ await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
+
+ WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg();
+ wmsRecordUpiNg = item.Adapt<WmsRecordUpiNg>();
+ wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ wmsRecordUpiNg.CreateTime = DateTime.Now;
+ wmsRecordUpiNg.CreateUserName = _cretaorName;
+ wmsRecordUpiNg.OperRemark = "鍙栨秷NG";
+ await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg);
+ }
+
+
+ WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
+ wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>();
+ wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ wmsRecordPackage.Location = "";
+ wmsRecordPackage.OperRemark = "鍙栨秷NG";
+ wmsRecordPackage.CreateTime = DateTime.Now;
+ wmsRecordPackage.CreateUserName = _cretaorName;
+ await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
+
+
+ await _mesPackageGatherRep.UpdateAsync(singlePackage);
+ await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
+
+ }
+
+
+ /// <summary>
+ /// 鎵爜璁板綍娓呴櫎
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost]
+ [ApiDescriptionSettings(Name = "PartClear")]
+ [Description("WmsOperationTask/PartClear")]
+ public async Task PartClear()
+ {
+ //妯″紡鍒ゆ柇
+ var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep);
+ var res = await client.WriteStation_PartClearAsync();
+ if (res.result == false)
+ {
+ throw Oops.Oh(res.resMsg);
+ }
+ }
+
+
+ /// <summary>
+ /// 涓�閿竻鐞嗘澘浠堕槦鍒楁暟鎹�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost]
+ [ApiDescriptionSettings(Name = "OneKeyClearUpiQueue")]
+ [Description("WmsOperationTask/OneKeyClearUpiQueue")]
+ [UnitOfWork]
+ public async Task OneKeyClearUpiQueue()
+ {
+ var upiList = await _mes_Upi_LineQueueRep.AsQueryable().ToListAsync();
+ if (upiList?.Count == 0)
+ {
+ throw Oops.Oh($"娌℃湁鏉夸欢鏁版嵁");
+ }
+ await _mes_Upi_LineQueueRep.DeleteAsync(upiList);
+
+ }
}
--
Gitblit v1.9.3