diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs index 0283042b..72e6fadf 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs @@ -1,2 +1,2 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions; -using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Dto;

namespace Tnb.WarehouseMgr.Interfaces
{
 /// 
 /// 库房业务(出入库)接口
 /// 
 public interface IWareHouseService
 {
 /// 
 /// 入库策略
 /// 
 /// 
 /// 
 Task> InStockStrategy([FromQuery] InStockStrategyQuery input);
 /// 
 /// 出库策略
 /// 
 /// 
 /// 
 //Task> OutStockStrategy([FromQuery] OutStockStrategyQuery input);
 /// 
 /// 路径算法
 /// 
 /// 
 /// 
 /// 
 Task> PathAlgorithms(string pStartId, string pEndId);
 /// 
 /// 生成预任务
 /// 
 /// 
 /// 
 Task GenPreTask(List preTasks);
 /// 
 /// 生成预任务成功后操作
 /// 
 /// 
 /// 
 Task GenInStockTaskHandleAfter(GenPreTaskUpInput input,Expression> setCarryColumnsExp,Expression> setLocaionColumbExp);
 }
}
 \ No newline at end of file +using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Dto;

namespace Tnb.WarehouseMgr.Interfaces
{
 /// 
 /// 库房业务(出入库)接口
 /// 
 public interface IWareHouseService
 {
 /// 
 /// 入库策略
 /// 
 /// 
 /// 
 Task> InStockStrategy([FromQuery] InStockStrategyQuery input);
 /// 
 /// 出库策略
 /// 
 /// 
 /// 
 //Task> OutStockStrategy([FromQuery] OutStockStrategyQuery input);
 /// 
 /// 路径算法
 /// 
 /// 
 /// 
 /// 
 Task> PathAlgorithms(string pStartId, string pEndId);
 /// 
 /// 生成预任务
 /// 
 /// 
 /// 
 Task GenPreTask(List preTasks,List preTaskCodes);
 /// 
 /// 生成预任务成功后操作
 /// 
 /// 
 /// 
 Task GenInStockTaskHandleAfter(GenPreTaskUpInput input,Expression> setCarryColumnsExp,Expression> setLocaionColumbExp);
 }
}
 \ No newline at end of file diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index e5fe8fe1..50d91966 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -461,16 +461,19 @@ namespace Tnb.WarehouseMgr await _db.Ado.RollbackTranAsync(); } } - /// /// 生成预任务 /// - /// + /// 预任务集合 + /// 预任务编码集合 /// - /// - public async Task GenPreTask(List preTasks) + public async Task GenPreTask(List preTasks, List preTaskCodes) { var row = await _db.Insertable(preTasks).ExecuteCommandAsync(); + if (preTaskCodes?.Count > 0) + { + row = await _db.Insertable(preTaskCodes).ExecuteCommandAsync(); + } return row > 0; } /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs index 3af2bcd7..fa701e79 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs @@ -115,7 +115,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { var preTaskUpInput = new GenPreTaskUpInput(); @@ -146,7 +146,6 @@ namespace Tnb.WarehouseMgr it => new BasLocation { is_lock = 1 }); } } - } await _db.Ado.CommitTranAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveOutStockService.cs index f2de4c7c..5ded01a5 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveOutStockService.cs @@ -113,7 +113,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { var preTaskUpInput = new GenPreTaskUpInput(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs index 82fff8ec..103d3016 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs @@ -149,7 +149,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { //不需要插入操作表 diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs index bb116c3c..b9052459 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs @@ -114,7 +114,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { var preTaskUpInput = new GenPreTaskUpInput(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs index ebbfb40b..b5e68a47 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs @@ -138,7 +138,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { var preTaskUpInput = new GenPreTaskUpInput(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveInStockService.cs index 2fc5c895..7aa45c35 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveInStockService.cs @@ -116,7 +116,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { var preTaskUpInput = new GenPreTaskUpInput(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs index c040d761..7fffb397 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs @@ -113,7 +113,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { var preTaskUpInput = new GenPreTaskUpInput(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs index 7fb08b96..e75fab6a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs @@ -148,7 +148,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { //不需要插入操作表 diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs index 5a3ece06..18b333d0 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs @@ -114,7 +114,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { var preTaskUpInput = new GenPreTaskUpInput(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs index ddef6ac7..ab432e88 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs @@ -138,7 +138,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { var preTaskUpInput = new GenPreTaskUpInput(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs index 0ac8d457..1cbe6da2 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs @@ -63,13 +63,16 @@ namespace Tnb.WarehouseMgr private async Task ScanCodeInStock(VisualDevModelDataCrInput input) { - try { await _db.Ado.BeginTranAsync(); - //VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSINSTOCKPDA_ID, true); - //await _runService.Create(templateEntity, input); + JArray jArr = null; + if (input.data.ContainsKey("tablefield115")) + { + jArr = JArray.Parse(input.data["tablefield115"].ToString()); + } + //入库取终点 //出库起点 var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString(), Size = 1 }; var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); @@ -95,7 +98,7 @@ namespace Tnb.WarehouseMgr { var sPoint = it.FirstOrDefault(); var ePoint = it.LastOrDefault(); - + WmsPretaskH preTask = new(); preTask.org_id = _userManager.User.OrganizeId; preTask.startlocation_id = sPoint?.location_id; @@ -118,7 +121,28 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + //生成预任务条码信息 + List pretaskCodes = new(); + foreach (var pt in preTasks) + { + if (jArr?.Children().Count() > 0) + { + foreach (var jo in jArr.Children()) + { + var ptc = pt.Adapt(); + ptc.id = SnowflakeIdHelper.NextId(); + ptc.bill_id = pt.id; + ptc.material_id = jo.Value(nameof(WmsPretaskCode.material_id)); + ptc.material_code = jo.Value(nameof(WmsPretaskCode.material_code)); + ptc.barcode = jo.Value(nameof(WmsPretaskCode.barcode)); + ptc.codeqty = jo.Value(nameof(WmsPretaskCode.codeqty)); + ptc.unit_id = jo.Value(nameof(WmsPretaskCode.unit_id)); + pretaskCodes.Add(ptc); + } + } + } + //生成预任务,同时如果包含条码信息同时插入条码记录 + var isOk = await _wareHouseService.GenPreTask(preTasks, pretaskCodes); if (isOk) { var preTaskUpInput = new GenPreTaskUpInput(); @@ -127,11 +151,11 @@ namespace Tnb.WarehouseMgr preTaskUpInput.CarryStartLocationId = points.FirstOrDefault().location_id; preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault().location_code; preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList(); - //preTaskUpInput.PreTaskRecords = preTasks.Adapt>(); - if (input.data.ContainsKey(nameof(WmsInstockH.bill_code)) && input.data[nameof(WmsInstockH.bill_code)].IsNotEmptyOrNull()) + if (input.data.ContainsKey("bill_id") && input.data["bill_id"].IsNotEmptyOrNull()) { + //创建预任务操作记录 var operBillId = string.Empty; - var instockH = await _db.Queryable().FirstAsync(it => it.id == input.data[nameof(WmsInstockH.bill_code)].ToString()); + var instockH = await _db.Queryable().FirstAsync(it => it.id == input.data["bill_id"].ToString()); if (instockH != null) { var handleH = instockH.Adapt(); @@ -141,31 +165,39 @@ namespace Tnb.WarehouseMgr handleH.carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString(); preTaskUpInput.PreTaskRecord = handleH; } - - if (input.data.ContainsKey("tablefield115")) + //创建预任务条码操作记录 + jArr = JArray.Parse(input.data["tablefield115"].ToString()); + if (jArr?.Children().Count() > 0) { - JArray jArr = JArray.Parse(input.data["tablefield115"].ToString()); - if (jArr?.Children().Count() > 0) + foreach (var jo in jArr.Children()) { - foreach (var jo in jArr.Children()) - { - var materialId = jo.Value(nameof(WmsHandleCode.material_id)); - WmsHandleCode handleCode = new(); - handleCode.bill_id = operBillId; - handleCode.material_id = materialId; - handleCode.material_code = jo.Value(nameof(WmsHandleCode.material_code)); - handleCode.barcode = jo.Value(nameof(WmsHandleCode.barcode)); - handleCode.code_batch = jo.Value(nameof(WmsHandleCode.code_batch)); - handleCode.codeqty = jo.Value(nameof(WmsHandleCode.codeqty)); - handleCode.unit_id = _db.Queryable().Single(it => it.id == materialId).unit_id; - handleCode.create_id = _userManager.UserId; - handleCode.create_time = DateTime.Now; - preTaskUpInput.PreTaskHandleCodes.Add(handleCode); - } + var materialId = jo.Value(nameof(WmsHandleCode.material_id)); + WmsHandleCode handleCode = new(); + handleCode.org_id = _userManager.User.OrganizeId; + handleCode.bill_id = operBillId; + handleCode.material_id = materialId; + handleCode.material_code = jo.Value(nameof(WmsHandleCode.material_code)); + handleCode.barcode = jo.Value(nameof(WmsHandleCode.barcode)); + handleCode.code_batch = jo.Value(nameof(WmsHandleCode.code_batch)); + handleCode.codeqty = jo.Value(nameof(WmsHandleCode.codeqty)); + handleCode.unit_id = _db.Queryable().Single(it => it.id == materialId).unit_id; + handleCode.create_id = _userManager.UserId; + handleCode.create_time = DateTime.Now; + preTaskUpInput.PreTaskHandleCodes.Add(handleCode); } } + //生成载具条码记录 + var carryCodes = preTaskUpInput.PreTaskHandleCodes.Adapt>(); + carryCodes.ForEach(x => + { + x.id = SnowflakeIdHelper.NextId(); + x.is_out = 0; + }); + //生成入库申请条码 + + await _db.Insertable(preTaskUpInput.PreTaskRecord).ExecuteCommandAsync(); } - await _db.Insertable(preTaskUpInput.PreTaskRecord).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(it => new WmsCarryH { carry_code = input.data[nameof(WmsCarryH.carry_code)].ToString(), is_lock = (int)EnumCarryStatus.占用, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }).Where(it => it.id == preTaskUpInput.CarryId).ExecuteCommandAsync(); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs index 1b71e1a0..128b1b23 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs @@ -112,19 +112,19 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks, null); if (isOk) { - //不需要插入操作表 - /* var preTaskUpInput = new GenPreTaskUpInput(); - preTaskUpInput.PreTaskId = input.data["ReturnIdentity"].ToString(); - preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; - preTaskUpInput.CarryStartLocationId = points.FirstOrDefault().location_id; - preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault().location_code; - preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList(); - preTaskUpInput.PreTaskRecords = preTasks.Adapt>(); - preTaskUpInput.PreTaskRecords.ForEach(x => x.id = SnowflakeIdHelper.NextId()); - await _wareHouseService.GenTaskHandleAfter(preTaskUpInput);*/ + //不需要插入操作表 + /* var preTaskUpInput = new GenPreTaskUpInput(); + preTaskUpInput.PreTaskId = input.data["ReturnIdentity"].ToString(); + preTaskUpInput.CarryId = input.data[nameof(WmsCarryD.carry_id)]?.ToString()!; + preTaskUpInput.CarryStartLocationId = points.FirstOrDefault().location_id; + preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault().location_code; + preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList(); + preTaskUpInput.PreTaskRecords = preTasks.Adapt>(); + preTaskUpInput.PreTaskRecords.ForEach(x => x.id = SnowflakeIdHelper.NextId()); + await _wareHouseService.GenTaskHandleAfter(preTaskUpInput);*/ } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs index 772127de..d8f21d47 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs @@ -112,7 +112,7 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks); + var isOk = await _wareHouseService.GenPreTask(preTasks,null); if (isOk) { //不需要插入操作表