Merge branch 'dev' of https://git.tuotong-tech.com/tnb/tnb.server into dev
This commit is contained in:
@@ -28,6 +28,13 @@ namespace Tnb.ProductionMgr.Interfaces
|
||||
/// <returns></returns>
|
||||
Task<PrdMoTask> GetPrdMoTaskInfoByStationId(Dictionary<string, string> dic);
|
||||
|
||||
/// <summary>
|
||||
/// 根据工位获取进行中待开工暂停的任务单信息
|
||||
/// </summary>
|
||||
/// <param name="dic"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<PrdMoTask>> GetPrdMoTaskListByStationId(Dictionary<string, string> dic);
|
||||
|
||||
/// <summary>
|
||||
/// 外包装根据工位id获取喷码数据
|
||||
/// </summary>
|
||||
|
||||
@@ -2739,6 +2739,33 @@ namespace Tnb.ProductionMgr
|
||||
return prdMoTask;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据工位获取进行中待开工暂停的任务单信息
|
||||
/// </summary>
|
||||
/// <param name="dic"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<List<PrdMoTask>> GetPrdMoTaskListByStationId(Dictionary<string, string> dic)
|
||||
{
|
||||
string station_id = dic.ContainsKey("station_id") ? dic["station_id"] : "";
|
||||
if (string.IsNullOrEmpty(station_id))
|
||||
{
|
||||
throw Oops.Bah("工位错误");
|
||||
}
|
||||
|
||||
List<PrdMoTask> list = await _db.Queryable<PrdMoTask>().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<BasMaterial>().SingleAsync(x => x.id == prdMoTask.material_id);
|
||||
prdMoTask.material_name = basMaterial.name;
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 外包装根据工位id获取喷码数据
|
||||
/// </summary>
|
||||
|
||||
@@ -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
|
||||
/// </summary>
|
||||
[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<RedisReadConfig> _repository;
|
||||
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
|
||||
public RedisDataService(RedisData redisData, ISqlSugarRepository<RedisReadConfig> repository)
|
||||
{
|
||||
_redisData = redisData;
|
||||
_repository = repository;
|
||||
OverideFuncs.CreateAsync = Create;
|
||||
}
|
||||
private async Task<dynamic> 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);
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据机号获取重量
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 盘点签收配置
|
||||
/// </summary>
|
||||
[SugarTable("wms_check_sign_config")]
|
||||
public partial class WmsCheckSignConfig : BaseEntity<string>
|
||||
{
|
||||
public WmsCheckSignConfig()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 所属组织
|
||||
/// </summary>
|
||||
public string? org_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仓库ID
|
||||
/// </summary>
|
||||
public string? warehouse_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 盘点库位
|
||||
/// </summary>
|
||||
public string? location_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否启用
|
||||
/// </summary>
|
||||
public int? enabled { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string? create_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime? create_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 扩展
|
||||
/// </summary>
|
||||
public string? extras { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间戳
|
||||
/// </summary>
|
||||
public DateTime? timestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程任务Id
|
||||
/// </summary>
|
||||
public string? f_flowtaskid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程引擎Id
|
||||
/// </summary>
|
||||
public string? f_flowid { get; set; }
|
||||
|
||||
}
|
||||
@@ -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<BasLocation>().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<WmsCheckSignConfig>().Where(it => it.warehouse_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && it.enabled == 1)
|
||||
.FirstAsync();
|
||||
BasLocation[] endLocs = Array.Empty<BasLocation>();
|
||||
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<string>()).ToArray();
|
||||
if (locArr != null)
|
||||
{
|
||||
endLocs = await _db.Queryable<BasLocation>().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<BasLocation>().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<WmsCarryH> carrys = await _db.Queryable<WmsCarryH>().Where(it => carryCodes.Select(x => x.carry_id).Distinct().Contains(it.id)).ToListAsync();
|
||||
List<WmsCheckstockD> curDetails = details.DistinctBy(x => x.carry_id).ToList();
|
||||
List<WmsCarryCode> curCarryCodes = carryCodes.FindAll(x => curDetails.Select(d => d.carry_id).Contains(x.carry_id));
|
||||
|
||||
Reference in New Issue
Block a user