diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryMoveInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryMoveInStockService.cs
new file mode 100644
index 00000000..c6308eba
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryMoveInStockService.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using JNPF.Common.Dtos.VisualDev;
+
+namespace Tnb.WarehouseMgr.Interfaces
+{
+ ///
+ /// 载具移入服务接口
+ ///
+ public interface IWmsCarryMoveInStockService
+ {
+ Task CarryMoveIn(VisualDevModelDataCrInput input);
+ }
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs
index 4e9ade4d..ab349cb8 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs
@@ -30,7 +30,7 @@ namespace Tnb.WarehouseMgr
///
[OverideVisualDev(ModuleConsts.MODULE_CARRYMOVEINSTOCK_ID)]
[ServiceModule(BizTypeId)]
- public class WmsCarryMoveInStockService : BaseWareHouseService
+ public class WmsCarryMoveInStockService : BaseWareHouseService, IWmsCarryMoveInStockService
{
private const string BizTypeId = "26121988909861";
private readonly ISqlSugarClient _db;
@@ -58,7 +58,8 @@ namespace Tnb.WarehouseMgr
OverideFuncs.CreateAsync = CarryMoveIn;
}
- private async Task CarryMoveIn(VisualDevModelDataCrInput input)
+ [NonAction]
+ public async Task CarryMoveIn(VisualDevModelDataCrInput input)
{
try
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs
index 63a030f5..d7ddf2b2 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs
@@ -40,6 +40,9 @@ namespace Tnb.WarehouseMgr
private readonly IWareHouseService _wareHouseService;
private readonly IUserManager _userManager;
private readonly IBillRullService _billRullService;
+ private readonly IWmsCarryMoveInStockService _wmsCarryMoveInStockService;
+ private readonly IWmsCarryService _wareCarryService;
+
public WmsOutStockService(
ISqlSugarRepository repository,
@@ -48,7 +51,9 @@ namespace Tnb.WarehouseMgr
IVisualDevService visualDevService,
IWareHouseService wareHouseService,
IUserManager userManager,
- IBillRullService billRullService)
+ IBillRullService billRullService,
+ IWmsCarryMoveInStockService wmsCarryMoveInStockService,
+ IWmsCarryService wareCarryService)
{
_db = repository.AsSugarClient();
_dictionaryDataService = dictionaryDataService;
@@ -57,6 +62,8 @@ namespace Tnb.WarehouseMgr
_wareHouseService = wareHouseService;
_userManager = userManager;
_billRullService = billRullService;
+ _wmsCarryMoveInStockService = wmsCarryMoveInStockService;
+ _wareCarryService = wareCarryService;
OverideFuncs.CreateAsync = OutStockApplyFor;
}
@@ -261,7 +268,7 @@ namespace Tnb.WarehouseMgr
[HttpGet]
public async Task Testxx()
{
- var carryCodePropNames = typeof(WmsCarryCode).GetProperties().Select(p => p.Name);
+ var carryCodePropNames = typeof(WmsDistaskCode).GetProperties().Select(p => p.Name);
var outStockCodePropNames = typeof(WmsOutstockCode).GetProperties().Select(p => p.Name);
var intersects = carryCodePropNames.Intersect(outStockCodePropNames).ToList();
var excepts = carryCodePropNames.Except(outStockCodePropNames).ToList();
@@ -326,13 +333,65 @@ namespace Tnb.WarehouseMgr
await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync();
//如果是自动单据,需要回更上层系统
}
+ await _wareCarryService.UpdateNullCarry(carry);
}
else if (outStatus == EnumOutStatus.分拣出)
{
+ if (input.distaskCodes?.Count > 0)
+ {
+ var osCodes = input.distaskCodes.Adapt>();
+ osCodes.ForEach(x => x.id = SnowflakeIdHelper.NextId());
+ await _db.Insertable(osCodes).ExecuteCommandAsync();
+
+ var carryCodes = await _db.Queryable().Where(it => input.carryIds.Contains(it.carry_id)).ToListAsync();
+ var dicCodeQty = carryCodes.GroupBy(g => g.barcode).ToDictionary(x => x.Key, x => x.First().codeqty);
+ var dicUpdate = new Dictionary();
+ var delBarcodes = new List();
+ foreach (var dtc in input.distaskCodes)
+ {
+ if (dicCodeQty.ContainsKey(dtc.barcode))
+ {
+ if (dtc.codeqty < dicCodeQty[dtc.barcode])
+ {
+ dicUpdate[dtc.barcode] = dicCodeQty[dtc.barcode] - dtc.codeqty;
+ }
+ else
+ {
+ delBarcodes.Add(dtc.barcode);
+ }
+ }
+ }
+ if (dicUpdate.Count > 0)
+ {
+ foreach (var pair in dicUpdate)
+ {
+ WmsCarryCode carryCode = new();
+ carryCode.codeqty = pair.Value;
+ await _db.Updateable(carryCode).UpdateColumns(it => it.codeqty).Where(it => it.barcode == pair.Key).ExecuteCommandAsync();
+ }
+ await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.正常).ToString() }).Where(it => input.carryIds.Contains(it.id)).ExecuteCommandAsync();
+ await _db.Deleteable().Where(it => input.carryIds.Contains(it.carry_id)).ExecuteCommandAsync();
+
+ }
+ if (delBarcodes.Count > 0)
+ {
+ await _db.Deleteable().Where(it => delBarcodes.Contains(it.barcode)).ExecuteCommandAsync();
+ }
+ //载具移入
+ var outStockH = await _db.Queryable().SingleAsync(it => it.id == input.requireId);
+ var visulDevInput = new VisualDevModelDataCrInput();
+ visulDevInput.data = new Dictionary
+ {
+ [nameof(InStockStrategyQuery.warehouse_id)] = outStockH.warehouse_id,
+ [nameof(WmsPointH.location_id)] = outStockH.location_id,
+ [nameof(WmsCarryD.carry_id)] = input.carryIds.First(),
+ [nameof(WmsHandleH.biz_type)] = input.bizTypeId,
+ [nameof(WmsHandleH.bill_code)] = outStockH.bill_code,
+ };
+ await _wmsCarryMoveInStockService.CarryMoveIn(visulDevInput);
+ }
}
-
- //更新执行任务已签收
}
}
catch (Exception ex)
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs
index 5f972f85..ca8672f7 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs
@@ -30,12 +30,14 @@ namespace Tnb.WarehouseMgr
private readonly ISqlSugarClient _db;
private readonly IWmsCarryService _wareCarryService;
private readonly IDictionaryDataService _dictionaryDataService;
+ private readonly IWmsCarryMoveInStockService _wmsCarryMoveInStockService;
private static Dictionary _dicBizType = new();
- public WmsSignForDeliveryService(ISqlSugarRepository repository, IWmsCarryService wareCarryService, IDictionaryDataService dictionaryDataService)
+ public WmsSignForDeliveryService(ISqlSugarRepository repository, IWmsCarryService wareCarryService, IDictionaryDataService dictionaryDataService, IWmsCarryMoveInStockService wmsCarryMoveInStockService)
{
_db = repository.AsSugarClient();
_wareCarryService = wareCarryService;
_dictionaryDataService = dictionaryDataService;
+ _wmsCarryMoveInStockService = wmsCarryMoveInStockService;
}
///
/// 根据载具ID获取,对应的执行任务记录
@@ -87,6 +89,7 @@ namespace Tnb.WarehouseMgr
WareHouseUpInput upInput = new() { loginType = "web", bizTypeId = disTask.biz_type, requireId = disTask.require_id, carryIds = new List { input.carryId } };
await DoUpdate(upInput); //回更业务
await _wareCarryService.UpdateNullCarry(carry);
+
}
break;
case "载具移出":
@@ -98,6 +101,8 @@ namespace Tnb.WarehouseMgr
}
}
+ disTask.is_sign = 1;
+ await _db.Updateable(disTask).UpdateColumns(it => it.is_sign).ExecuteCommandAsync();
}
}
await _db.Ado.CommitTranAsync();