diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/KittingOutInput.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/KittingOutInput.cs
new file mode 100644
index 00000000..bbbfda0b
--- /dev/null
+++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/KittingOutInput.cs
@@ -0,0 +1,88 @@
+namespace Tnb.ProductionMgr.Entities.Dto
+{
+ public class KittingOutInput
+ {
+ public string id { get; set; }
+ ///
+ /// 出库仓库ID
+ ///
+ public string warehouse_id { get; set; } = string.Empty;
+
+ ///
+ /// 目标库位编号
+ ///
+ public string location_code { get; set; } = string.Empty;
+
+ ///
+ /// 产品ID
+ ///
+ public string material_id { get; set; } = string.Empty;
+
+ ///
+ /// 产品编号
+ ///
+ public string? material_code { get; set; }
+
+ ///
+ /// 齐套搭配方案ID
+ ///
+ public string collocation_scheme_id { get; set; } = string.Empty;
+
+ ///
+ /// 齐套搭配方案编号
+ ///
+ public string? collocation_scheme_code { get; set; }
+
+ ///
+ /// 顺序号
+ ///
+ public string? seq { get; set; }
+
+ ///
+ /// 创建用户
+ ///
+ public string? create_id { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime? create_time { get; set; }
+
+ ///
+ /// 所属组织
+ ///
+ public string? org_id { get; set; }
+
+ ///
+ /// 流程任务Id
+ ///
+ public string? f_flowtaskid { get; set; }
+
+ ///
+ /// 流程引擎Id
+ ///
+ public string? f_flowid { get; set; }
+
+ ///
+ /// 单据号
+ ///
+ public string code { get; set; } = string.Empty;
+
+ ///
+ /// 所属工位
+ ///
+ public string? workstation_id { get; set; }
+
+ ///
+ /// 所属产线
+ ///
+ public string? workline_id { get; set; }
+
+ ///
+ /// 任务单
+ ///
+ public string? mo_task_id { get; set; }
+
+ public List> tableField115 { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdKittingOutH.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdKittingOutH.cs
index c5fd5cbc..6169c976 100644
--- a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdKittingOutH.cs
+++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdKittingOutH.cs
@@ -87,7 +87,7 @@ public partial class PrdKittingOutH : BaseEntity
///
/// 所属产线
///
- public string? worklinei_d { get; set; }
+ public string? workline_id { get; set; }
///
/// 任务单
diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdKittingOutService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdKittingOutService.cs
index 8b6a4da7..5674bd65 100644
--- a/ProductionMgr/Tnb.ProductionMgr/PrdKittingOutService.cs
+++ b/ProductionMgr/Tnb.ProductionMgr/PrdKittingOutService.cs
@@ -20,6 +20,7 @@ using Tnb.BasicData.Entities;
using Tnb.ProductionMgr.Entities;
using Tnb.ProductionMgr.Interfaces;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
+using Tnb.ProductionMgr.Entities.Dto;
namespace Tnb.ProductionMgr
{
@@ -46,10 +47,115 @@ namespace Tnb.ProductionMgr
_repository = repository;
_userManager = userManager;
_billRullService = billRullService;
- OverideFuncs.CreateAsync = Create;
+ // OverideFuncs.CreateAsync = Create;
}
- private async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput)
+ // private async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput)
+ // {
+ // PrdKittingOutH prdKittingOutH = new PrdKittingOutH();
+ // try
+ // {
+ // var db = _repository.AsSugarClient();
+ //
+ // List input = new List();
+ // input.Add(new MESKittingOutStkInput()
+ // {
+ // org_id = _userManager.GetUserInfo().Result.organizeId,
+ // bill_date = DateTime.Now,
+ // warehouse_id = visualDevModelDataCrInput.data.ContainsKey("warehouse_id") ? visualDevModelDataCrInput.data["warehouse_id"].ToString() : "",
+ // location_code = visualDevModelDataCrInput.data.ContainsKey("location_code") ? visualDevModelDataCrInput.data["location_code"].ToString() : "",
+ // material_id = visualDevModelDataCrInput.data.ContainsKey("material_id") ? visualDevModelDataCrInput.data["material_id"].ToString() : "",
+ // material_code = visualDevModelDataCrInput.data.ContainsKey("material_code") ? visualDevModelDataCrInput.data["material_code"].ToString() : "",
+ // collocation_scheme_id = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_id") ? visualDevModelDataCrInput.data["collocation_scheme_id"].ToString() : "",
+ // collocation_scheme_code = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_code") ? visualDevModelDataCrInput.data["collocation_scheme_code"].ToString() : "",
+ // source_id = prdKittingOutH.id,
+ // seq = visualDevModelDataCrInput.data.ContainsKey("seq") ? (int)visualDevModelDataCrInput.data["seq"] : 0,
+ // create_id = _userManager.UserId,
+ // wmsKittingoutDs = new List(),
+ // });
+ //
+ // input[0].wmsKittingoutDs = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(visualDevModelDataCrInput.data["tableField115"]));
+ // string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host;
+ // Dictionary header = new Dictionary()
+ // {
+ // ["Authorization"] = App.HttpContext.Request.Headers["Authorization"]
+ // };
+ // var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_KITTING_OUT_STK,JsonConvert.SerializeObject(input),header);
+ // Log.Information(sendResult);
+ //
+ // AuthResponse authResponse = JsonConvert.DeserializeObject(sendResult);
+ // if (authResponse.code != 200)
+ // {
+ // throw Oops.Bah(authResponse.msg);
+ // }
+ // else
+ // {
+ // prdKittingOutH.code = await _billRullService.GetBillNumber(CodeTemplateConst.PRDKITTINGOUTSTOCK_CODE);
+ // prdKittingOutH.warehouse_id = visualDevModelDataCrInput.data.ContainsKey("warehouse_id") ? visualDevModelDataCrInput.data["warehouse_id"].ToString() : "";
+ // prdKittingOutH.location_code = visualDevModelDataCrInput.data.ContainsKey("location_code") ? visualDevModelDataCrInput.data["location_code"].ToString() : "";
+ // prdKittingOutH.material_id = visualDevModelDataCrInput.data.ContainsKey("material_id") ? visualDevModelDataCrInput.data["material_id"].ToString() : "";
+ // prdKittingOutH.material_code = visualDevModelDataCrInput.data.ContainsKey("material_code") ? visualDevModelDataCrInput.data["material_code"].ToString() : "";
+ // prdKittingOutH.collocation_scheme_id = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_id") ? visualDevModelDataCrInput.data["collocation_scheme_id"].ToString() : "";
+ // prdKittingOutH.collocation_scheme_code = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_code") ? visualDevModelDataCrInput.data["collocation_scheme_code"].ToString() : "";
+ // prdKittingOutH.workline_id = visualDevModelDataCrInput.data.ContainsKey("worklinei_d") ? visualDevModelDataCrInput.data["worklinei_d"].ToString() : "";
+ // prdKittingOutH.workstation_id = visualDevModelDataCrInput.data.ContainsKey("workstation_id") ? visualDevModelDataCrInput.data["workstation_id"].ToString() : "";
+ // prdKittingOutH.mo_task_id = visualDevModelDataCrInput.data.ContainsKey("mo_task_id") ? visualDevModelDataCrInput.data["mo_task_id"].ToString() : "";
+ // prdKittingOutH.seq = visualDevModelDataCrInput.data.ContainsKey("seq") ? visualDevModelDataCrInput.data["seq"]?.ToString() : "0";
+ // prdKittingOutH.create_id = _userManager.UserId;
+ // prdKittingOutH.create_time = DateTime.Now;
+ // prdKittingOutH.org_id = _userManager.GetUserInfo().Result.organizeId;
+ // List prdKittingOutDs = new List();
+ // foreach (var item in (JArray)visualDevModelDataCrInput.data["tableField115"])
+ // {
+ // prdKittingOutDs.Add(new PrdKittingOutD()
+ // {
+ // material_id = item.Value("material_id"),
+ // material_code = item.Value("material_code"),
+ // unit_id = item.Value("unit_id"),
+ // unit_code = item.Value("unit_code"),
+ // pr_qty = item.Value("pr_qty"),
+ // code_batch = item.Value("code_batch"),
+ // box = item.Value("box"),
+ // kitting_out_id = prdKittingOutH.id,
+ // });
+ // }
+ //
+ // // VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
+ // // await _runService.Create(templateEntity, visualDevModelDataCrInput);
+ //
+ // DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
+ // {
+ // await _repository.InsertAsync(prdKittingOutH);
+ // if (prdKittingOutDs.Count > 0)
+ // {
+ // await db.Insertable(prdKittingOutDs).ExecuteCommandAsync();
+ // }
+ // });
+ //
+ // if (!result.IsSuccess)
+ // {
+ // throw Oops.Bah(result.ErrorMessage);
+ // }
+ // }
+ // return await Task.FromResult(true);
+ // }
+ // catch (Exception e)
+ // {
+ // Console.WriteLine(e);
+ // Log.Error(e.Message);
+ // throw Oops.Bah(e.Message);
+ // }
+ //
+ // }
+
+ ///
+ /// 齐套出库申请
+ ///
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task KittingOut(KittingOutInput kittingOutInput)
{
PrdKittingOutH prdKittingOutH = new PrdKittingOutH();
try
@@ -61,19 +167,19 @@ namespace Tnb.ProductionMgr
{
org_id = _userManager.GetUserInfo().Result.organizeId,
bill_date = DateTime.Now,
- warehouse_id = visualDevModelDataCrInput.data.ContainsKey("warehouse_id") ? visualDevModelDataCrInput.data["warehouse_id"].ToString() : "",
- location_code = visualDevModelDataCrInput.data.ContainsKey("location_code") ? visualDevModelDataCrInput.data["location_code"].ToString() : "",
- material_id = visualDevModelDataCrInput.data.ContainsKey("material_id") ? visualDevModelDataCrInput.data["material_id"].ToString() : "",
- material_code = visualDevModelDataCrInput.data.ContainsKey("material_code") ? visualDevModelDataCrInput.data["material_code"].ToString() : "",
- collocation_scheme_id = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_id") ? visualDevModelDataCrInput.data["collocation_scheme_id"].ToString() : "",
- collocation_scheme_code = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_code") ? visualDevModelDataCrInput.data["collocation_scheme_code"].ToString() : "",
+ warehouse_id = kittingOutInput.warehouse_id,
+ location_code = kittingOutInput.location_code,
+ material_id = kittingOutInput.material_id,
+ material_code = kittingOutInput.material_code,
+ collocation_scheme_id = kittingOutInput.collocation_scheme_id,
+ collocation_scheme_code = kittingOutInput.collocation_scheme_code,
source_id = prdKittingOutH.id,
- seq = visualDevModelDataCrInput.data.ContainsKey("seq") ? (int)visualDevModelDataCrInput.data["seq"] : 0,
+ seq = !string.IsNullOrEmpty(kittingOutInput.seq) ? Convert.ToInt32(kittingOutInput.seq) : 0,
create_id = _userManager.UserId,
wmsKittingoutDs = new List(),
});
- input[0].wmsKittingoutDs = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(visualDevModelDataCrInput.data["tableField115"]));
+ input[0].wmsKittingoutDs = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kittingOutInput.tableField115));
string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host;
Dictionary header = new Dictionary()
{
@@ -90,31 +196,31 @@ namespace Tnb.ProductionMgr
else
{
prdKittingOutH.code = await _billRullService.GetBillNumber(CodeTemplateConst.PRDKITTINGOUTSTOCK_CODE);
- prdKittingOutH.warehouse_id = visualDevModelDataCrInput.data.ContainsKey("warehouse_id") ? visualDevModelDataCrInput.data["warehouse_id"].ToString() : "";
- prdKittingOutH.location_code = visualDevModelDataCrInput.data.ContainsKey("location_code") ? visualDevModelDataCrInput.data["location_code"].ToString() : "";
- prdKittingOutH.material_id = visualDevModelDataCrInput.data.ContainsKey("material_id") ? visualDevModelDataCrInput.data["material_id"].ToString() : "";
- prdKittingOutH.material_code = visualDevModelDataCrInput.data.ContainsKey("material_code") ? visualDevModelDataCrInput.data["material_code"].ToString() : "";
- prdKittingOutH.collocation_scheme_id = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_id") ? visualDevModelDataCrInput.data["collocation_scheme_id"].ToString() : "";
- prdKittingOutH.collocation_scheme_code = visualDevModelDataCrInput.data.ContainsKey("collocation_scheme_code") ? visualDevModelDataCrInput.data["collocation_scheme_code"].ToString() : "";
- prdKittingOutH.worklinei_d = visualDevModelDataCrInput.data.ContainsKey("worklinei_d") ? visualDevModelDataCrInput.data["worklinei_d"].ToString() : "";
- prdKittingOutH.workstation_id = visualDevModelDataCrInput.data.ContainsKey("workstation_id") ? visualDevModelDataCrInput.data["workstation_id"].ToString() : "";
- prdKittingOutH.mo_task_id = visualDevModelDataCrInput.data.ContainsKey("mo_task_id") ? visualDevModelDataCrInput.data["mo_task_id"].ToString() : "";
- prdKittingOutH.seq = visualDevModelDataCrInput.data.ContainsKey("seq") ? visualDevModelDataCrInput.data["seq"]?.ToString() : "0";
+ prdKittingOutH.warehouse_id = kittingOutInput.warehouse_id;
+ prdKittingOutH.location_code = kittingOutInput.location_code;
+ prdKittingOutH.material_id = kittingOutInput.material_id;
+ prdKittingOutH.material_code = kittingOutInput.material_code;
+ prdKittingOutH.collocation_scheme_id = kittingOutInput.collocation_scheme_id;
+ prdKittingOutH.collocation_scheme_code = kittingOutInput.collocation_scheme_code;
+ prdKittingOutH.workline_id = kittingOutInput.workline_id;
+ prdKittingOutH.workstation_id = kittingOutInput.workstation_id;
+ prdKittingOutH.mo_task_id = kittingOutInput.mo_task_id;
+ prdKittingOutH.seq = kittingOutInput.seq;
prdKittingOutH.create_id = _userManager.UserId;
prdKittingOutH.create_time = DateTime.Now;
prdKittingOutH.org_id = _userManager.GetUserInfo().Result.organizeId;
List prdKittingOutDs = new List();
- foreach (var item in (JArray)visualDevModelDataCrInput.data["tableField115"])
+ foreach (var item in kittingOutInput.tableField115)
{
prdKittingOutDs.Add(new PrdKittingOutD()
{
- material_id = item.Value("material_id"),
- material_code = item.Value("material_code"),
- unit_id = item.Value("unit_id"),
- unit_code = item.Value("unit_code"),
- pr_qty = item.Value("pr_qty"),
- code_batch = item.Value("code_batch"),
- box = item.Value("box"),
+ material_id = item.ContainsKey("material_id") ? item["material_id"].ToString() : "",
+ material_code = item.ContainsKey("material_code") ? item["material_code"].ToString() : "",
+ unit_id = item.ContainsKey("unit_id") ? item["unit_id"].ToString() : "",
+ unit_code = item.ContainsKey("unit_code") ? item["unit_code"].ToString() : "",
+ pr_qty = item.ContainsKey("pr_qty") ? Convert.ToDecimal(item["pr_qty"]) : 0,
+ code_batch = item.ContainsKey("code_batch") ? item["code_batch"].ToString() : "",
+ box = item.ContainsKey("box") ? Convert.ToInt32(item["box"]) : 0,
kitting_out_id = prdKittingOutH.id,
});
}
diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
index a1bdb730..9305e7eb 100644
--- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
+++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
@@ -1871,6 +1871,13 @@ namespace Tnb.ProductionMgr
return await _db.Queryable().Where(it => it.eqp_id == eqpId && it.mo_task_status == DictConst.InProgressEnCode).ToListAsync();
}
+
+ ///
+ /// 计算预计结束日期
+ ///
+ ///
+ ///
+ ///
[HttpPost]
public async Task GetEstimatedEndTime(CountEstimatedEndTimeInput input)
{
@@ -1903,6 +1910,19 @@ namespace Tnb.ProductionMgr
}
}
-
+
+ ///
+ /// 获取这个产线生产中的任务单
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task GetMoTaskByWorklineId(Dictionary dic)
+ {
+ string id = dic["id"];
+ return await _repository.AsSugarClient().Queryable()
+ .Where(x => x.workline_id == id && x.mo_task_status == DictConst.InProgressEnCode).FirstAsync();
+ }
+
}
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskCallBackInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskCallBackInput.cs
index a5182436..81ad0a54 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskCallBackInput.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskCallBackInput.cs
@@ -28,6 +28,7 @@ namespace Tnb.WarehouseMgr.Entities.Dto
/// 取货/放货
///
public string action { get; set; }
+
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskChainCallBackInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskChainCallBackInput.cs
index 697ff122..5eb90d34 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskChainCallBackInput.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskChainCallBackInput.cs
@@ -12,6 +12,10 @@ namespace Tnb.WarehouseMgr.Entities.Dto
/// 状态
///
public string status { get; set; }
+ ///
+ /// 设备编号
+ ///
+ public string deviceID { get; set; }
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs
index 1bc4c98c..61588ff9 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs
@@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Mvc;
using NPOI.OpenXmlFormats;
using Senparc.NeuChar.ApiHandlers;
using SqlSugar;
+using Tnb.EquipMgr.Entities;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
@@ -107,9 +108,11 @@ namespace Tnb.WarehouseMgr
case "CREATED": break;
case "ALLOCATED":
var disTasks = await _db.Queryable().Where(it => it.bill_code.Contains(input.taskChainCode)).ToListAsync();
+ var eps = await _db.Queryable().Where(it => it.code.Contains(input.deviceID)).ToListAsync();
TaskExecuteUpInput taskExecuteUpInput = new()
{
disTaskIds = disTasks.Select(x => x.id).ToList(),
+ EqpIds = eps.Select(x => x.id).ToList(),
};
await _wareHouseService.TaskExecute(taskExecuteUpInput); break;
case "PROGRESSING": break;
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/Tnb.WarehouseMgr.csproj b/WarehouseMgr/Tnb.WarehouseMgr/Tnb.WarehouseMgr.csproj
index 63e4864f..11bee379 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/Tnb.WarehouseMgr.csproj
+++ b/WarehouseMgr/Tnb.WarehouseMgr/Tnb.WarehouseMgr.csproj
@@ -11,6 +11,7 @@
+
diff --git a/system/Tnb.Systems/Permission/DepartmentService.cs b/system/Tnb.Systems/Permission/DepartmentService.cs
index a50f9a88..0bbea0f5 100644
--- a/system/Tnb.Systems/Permission/DepartmentService.cs
+++ b/system/Tnb.Systems/Permission/DepartmentService.cs
@@ -666,6 +666,28 @@ public class DepartmentService : IDepartmentService, IDynamicApiController, ITra
};
}
+
+ ///
+ /// 根据工位id获取产线信息
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task GetWorklineByWorkstationId(Dictionary dic)
+ {
+ string id = dic["id"];
+ var db = _repository.AsSugarClient();
+ OrganizeEntity organizeEntity = await db.Queryable().SingleAsync(x => x.Id == id);
+ if (organizeEntity != null && !string.IsNullOrEmpty(organizeEntity.OrganizeIdTree))
+ {
+ string[] arr = organizeEntity.OrganizeIdTree.Split(",");
+ return await db.Queryable().SingleAsync(x => arr.Contains(x.Id) && x.Category == DictConst.RegionCategoryWorklineCode);
+ }
+
+ return null;
+
+ }
+
#endregion
#region PublicMethod