From 8b3541c95039e65eac076c330af75ca109ff1643 Mon Sep 17 00:00:00 2001
From: zhoukeda <1315948824@qq.com>
Date: Fri, 10 Nov 2023 13:38:32 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=B7=A5=E4=BD=8D?=
=?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=BF=9B=E8=A1=8C=E4=B8=AD=E5=BE=85=E5=BC=80?=
=?UTF-8?q?=E5=B7=A5=E6=9A=82=E5=81=9C=E7=9A=84=E4=BB=BB=E5=8A=A1=E5=8D=95?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../IPrdMoTaskService.cs | 7 +++++
.../Tnb.ProductionMgr/PrdMoTaskService.cs | 27 +++++++++++++++++++
2 files changed, 34 insertions(+)
diff --git a/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs
index a2a45e06..3a28f090 100644
--- a/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs
+++ b/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs
@@ -28,6 +28,13 @@ namespace Tnb.ProductionMgr.Interfaces
///
Task GetPrdMoTaskInfoByStationId(Dictionary dic);
+ ///
+ /// 根据工位获取进行中待开工暂停的任务单信息
+ ///
+ ///
+ ///
+ Task> GetPrdMoTaskListByStationId(Dictionary dic);
+
///
/// 外包装根据工位id获取喷码数据
///
diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
index ad0bbe82..567eca46 100644
--- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
+++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
@@ -2739,6 +2739,33 @@ namespace Tnb.ProductionMgr
return prdMoTask;
}
+ ///
+ /// 根据工位获取进行中待开工暂停的任务单信息
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task> GetPrdMoTaskListByStationId(Dictionary dic)
+ {
+ string station_id = dic.ContainsKey("station_id") ? dic["station_id"] : "";
+ if (string.IsNullOrEmpty(station_id))
+ {
+ throw Oops.Bah("工位错误");
+ }
+
+ List list = await _db.Queryable().Where(x => x.workstation_id == station_id && x.parent_id != null && (x.mo_task_status == DictConst.InProgressEnCode || x.mo_task_status == DictConst.ToBeStartedEnCode || x.mo_task_status == DictConst.MoStatusPauseCode )).ToListAsync();
+ if (list != null && list.Count>0)
+ {
+ foreach (var prdMoTask in list)
+ {
+ BasMaterial basMaterial = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.material_id);
+ prdMoTask.material_name = basMaterial.name;
+ }
+ }
+
+ return list;
+ }
+
///
/// 外包装根据工位id获取喷码数据
///
From 113f67b1682e3af2499413314bb9603ea0f21f73 Mon Sep 17 00:00:00 2001
From: hlb <894797954@qq.com>
Date: Fri, 10 Nov 2023 14:53:33 +0800
Subject: [PATCH 2/3] =?UTF-8?q?=E7=9B=98=E7=82=B9=E4=BB=BB=E5=8A=A1?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=9B=98=E7=82=B9=E7=AD=BE=E6=94=B6=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Entity/WmsCheckSignConfig.cs | 77 +++++++++++++++++++
.../Tnb.WarehouseMgr/WmsCheckTaskService.cs | 36 ++++++++-
2 files changed, 109 insertions(+), 4 deletions(-)
create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCheckSignConfig.cs
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCheckSignConfig.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCheckSignConfig.cs
new file mode 100644
index 00000000..3cd97e5b
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCheckSignConfig.cs
@@ -0,0 +1,77 @@
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.WarehouseMgr.Entities;
+
+///
+/// 盘点签收配置
+///
+[SugarTable("wms_check_sign_config")]
+public partial class WmsCheckSignConfig : BaseEntity
+{
+ public WmsCheckSignConfig()
+ {
+ id = SnowflakeIdHelper.NextId();
+ }
+ ///
+ /// 所属组织
+ ///
+ public string? org_id { get; set; }
+
+ ///
+ /// 仓库ID
+ ///
+ public string? warehouse_id { get; set; }
+
+ ///
+ /// 盘点库位
+ ///
+ public string? location_id { get; set; }
+
+ ///
+ /// 是否启用
+ ///
+ public int? enabled { get; set; }
+
+ ///
+ /// 创建用户
+ ///
+ public string? create_id { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime? create_time { get; set; }
+
+ ///
+ /// 修改用户
+ ///
+ public string? modify_id { get; set; }
+
+ ///
+ /// 修改时间
+ ///
+ public DateTime? modify_time { get; set; }
+
+ ///
+ /// 扩展
+ ///
+ public string? extras { get; set; }
+
+ ///
+ /// 时间戳
+ ///
+ public DateTime? timestamp { get; set; }
+
+ ///
+ /// 流程任务Id
+ ///
+ public string? f_flowtaskid { get; set; }
+
+ ///
+ /// 流程引擎Id
+ ///
+ public string? f_flowid { get; set; }
+
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs
index 3b02b958..1a5a4593 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs
@@ -1,4 +1,5 @@
-using System.Linq.Expressions;
+using System.Linq;
+using System.Linq.Expressions;
using JNPF.Common.Core.Manager;
using JNPF.Common.Dtos.VisualDev;
using JNPF.Common.Extension;
@@ -10,6 +11,7 @@ using JNPF.VisualDev;
using JNPF.VisualDev.Entitys;
using JNPF.VisualDev.Interfaces;
using Mapster;
+using Newtonsoft.Json.Linq;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
@@ -127,9 +129,35 @@ namespace Tnb.WarehouseMgr
//生成预任务信息
if (details.Count > 0 && carryCodes.Count > 0)
{
- string[] locTypes = new[] { ((int)EnumLocationType.出库库位).ToString(), ((int)EnumLocationType.出入库位).ToString() };
- BasLocation[] endLocs = await _db.Queryable().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locTypes.Contains(it.is_type)).ToArrayAsync();
- int randomIndex = new Random().Next(0, endLocs.GetUpperBound(0));
+ // 判断当前仓库是否有盘点签收配置
+ var wcsConf = await _db.Queryable().Where(it => it.warehouse_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && it.enabled == 1)
+ .FirstAsync();
+ BasLocation[] endLocs = Array.Empty();
+ int randomIndex = 0;
+ if (wcsConf != null)
+ {
+ if (wcsConf.location_id == null) {
+ throw new AppFriendlyException("盘点签收配置库位为空,请查看配置!", 500);
+ }
+ JArray? jsonArr = null;
+ jsonArr = JArray.Parse(wcsConf.location_id);
+ string?[] locArr = jsonArr.Select(x => x.ToObject()).ToArray();
+ if (locArr != null)
+ {
+ endLocs = await _db.Queryable().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locArr.Contains(it.id)).ToArrayAsync();
+ randomIndex = new Random().Next(0, endLocs.GetUpperBound(0));
+ }
+ else {
+ throw new AppFriendlyException("盘点签收配置有误,请查看配置!", 500);
+ }
+
+ }
+ else {
+ string[] locTypes = new[] { ((int)EnumLocationType.出库库位).ToString(), ((int)EnumLocationType.出入库位).ToString() };
+ endLocs = await _db.Queryable().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locTypes.Contains(it.is_type)).ToArrayAsync();
+ randomIndex = new Random().Next(0, endLocs.GetUpperBound(0));
+ }
+
List carrys = await _db.Queryable().Where(it => carryCodes.Select(x => x.carry_id).Distinct().Contains(it.id)).ToListAsync();
List curDetails = details.DistinctBy(x => x.carry_id).ToList();
List curCarryCodes = carryCodes.FindAll(x => curDetails.Select(d => d.carry_id).Contains(x.carry_id));
From e60dc3245637eaac6bb7253e2c7547bc1357a5d4 Mon Sep 17 00:00:00 2001
From: qianjiawei <1184704771@qq.com>
Date: Fri, 10 Nov 2023 16:03:45 +0800
Subject: [PATCH 3/3] =?UTF-8?q?redis=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Tnb.ProductionMgr/RedisDataService.cs | 32 +++++++++++++++++--
1 file changed, 29 insertions(+), 3 deletions(-)
diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs b/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs
index 6007f34f..fd7cad38 100644
--- a/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs
+++ b/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs
@@ -1,11 +1,17 @@
-using JNPF.Common.Cache;
+using System.Reflection;
+using JNPF.Common.Cache;
+using JNPF.Common.Dtos.VisualDev;
+using JNPF.Common.Security;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.FriendlyException;
+using JNPF.VisualDev;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
+using SqlSugar;
using Tnb.Common.Redis;
+using Tnb.ProductionMgr.Entities;
using Tnb.ProductionMgr.Interfaces;
namespace Tnb.ProductionMgr
@@ -15,12 +21,32 @@ namespace Tnb.ProductionMgr
///
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
[Route("api/[area]/[controller]/[action]")]
- public class RedisDataService : IRedisDataService, IDynamicApiController, ITransient
+ [OverideVisualDev(ModuleId)]
+ public class RedisDataService : IOverideVisualDevService, IRedisDataService, IDynamicApiController, ITransient
{
+ private const string ModuleId = "30062789830933";
private readonly RedisData _redisData;
- public RedisDataService(RedisData redisData)
+ private readonly ISqlSugarRepository _repository;
+ public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
+ public RedisDataService(RedisData redisData, ISqlSugarRepository repository)
{
_redisData = redisData;
+ _repository = repository;
+ OverideFuncs.CreateAsync = Create;
+ }
+ private async Task Create(VisualDevModelDataCrInput input)
+ {
+ RedisReadConfig redisReadConfig = new RedisReadConfig();
+ redisReadConfig.id = SnowflakeIdHelper.NextId();
+ redisReadConfig.dev_name = input.data[nameof(RedisReadConfig.dev_name)].ToString();
+ redisReadConfig.tag_name = input.data[nameof(RedisReadConfig.tag_name)].ToString();
+ redisReadConfig.data = input.data[nameof(RedisReadConfig.data)].ToString();
+ redisReadConfig.event_type = int.Parse(input.data[nameof(RedisReadConfig.event_type)].ToString()!);
+ redisReadConfig.data_type = int.Parse(input.data[nameof(RedisReadConfig.data_type)].ToString()!);
+ redisReadConfig.check_type = int.Parse(input.data[nameof(RedisReadConfig.check_type)].ToString()!);
+ redisReadConfig.enabled = int.Parse(input.data[nameof(RedisReadConfig.enabled)].ToString()!);
+ await _repository.AsSugarClient().Insertable(redisReadConfig).ExecuteCommandAsync();
+ return await Task.FromResult(true);
}
///
/// 根据机号获取重量