Merge branch 'dev' of https://git.tuotong-tech.com/tnb/tnb.server into dev
This commit is contained in:
@@ -44,6 +44,11 @@ namespace Tnb.BasicData
|
||||
/// 生产入库单
|
||||
/// </summary>
|
||||
public const string PRDINSTOCK_CODE = "PrdInStock";
|
||||
|
||||
/// <summary>
|
||||
/// 生产工单
|
||||
/// </summary>
|
||||
public const string PROMO_CODE = "ProMoCode";
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -70,6 +70,10 @@ public static class DictConst
|
||||
/// </summary>
|
||||
public const string AlreadyId = "26033187948309";
|
||||
/// <summary>
|
||||
/// 工单状态-待下发Id
|
||||
/// </summary>
|
||||
public const string ToBeScheduledId = "25019228116501";
|
||||
/// <summary>
|
||||
/// 工单状态-已下发Id
|
||||
/// </summary>
|
||||
public const string ScheduledId = "25019232867093";
|
||||
|
||||
@@ -112,7 +112,7 @@ public partial class BasMaterial : BaseEntity<string>
|
||||
/// <summary>
|
||||
/// 物料规格型号
|
||||
/// </summary>
|
||||
public string? material_standard { get; set; }
|
||||
// public string? material_standard { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 海关编码
|
||||
|
||||
@@ -207,8 +207,8 @@ namespace Tnb.BasicData
|
||||
.Where(x => x.state == "1")
|
||||
.WhereIF(queryJson != null && queryJson.ContainsKey("name"), x => x.name.Contains(queryJson!["name"]))
|
||||
.WhereIF(queryJson != null && queryJson.ContainsKey("code"), x => x.code.Contains(queryJson!["code"]))
|
||||
.WhereIF(queryJson != null && queryJson.ContainsKey("material_standard"),
|
||||
x => x.material_standard!.Contains(queryJson!["material_standard"]))
|
||||
.WhereIF(queryJson != null && queryJson.ContainsKey("material_specification"),
|
||||
x => x.material_specification!.Contains(queryJson!["material_specification"]))
|
||||
.Select(x => x);
|
||||
|
||||
List<ISugarQueryable<BasMaterial>> list = new();
|
||||
|
||||
@@ -227,7 +227,7 @@ namespace Tnb.BasicData
|
||||
material_id = SqlFunc.Subqueryable<BasMaterial>().Where(it => it.id == e.material_id).Select(it => it.id),
|
||||
material_code = SqlFunc.Subqueryable<BasMaterial>().Where(it => it.id == e.material_id).Select(it => it.code),
|
||||
material_name = SqlFunc.Subqueryable<BasMaterial>().Where(it => it.id == e.material_id).Select(it => it.name),
|
||||
material_standard = SqlFunc.Subqueryable<BasMaterial>().Where(it => it.id == e.material_id).Select(it => it.material_standard),
|
||||
material_standard = SqlFunc.Subqueryable<BasMaterial>().Where(it => it.id == e.material_id).Select(it => it.material_specification),
|
||||
num = e.num,
|
||||
ordinal = d.ordinal,
|
||||
})
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.ProductionMgr.Entities
|
||||
{
|
||||
[SugarTable("label_record")]
|
||||
public class LableRecord : BaseEntity<string>
|
||||
{
|
||||
public string last_day { get; set; }
|
||||
|
||||
public int num { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
80
ProductionMgr/Tnb.ProductionMgr/MesForErpService.cs
Normal file
80
ProductionMgr/Tnb.ProductionMgr/MesForErpService.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.Common.Security;
|
||||
using JNPF.DependencyInjection;
|
||||
using JNPF.DynamicApiController;
|
||||
using JNPF.FriendlyException;
|
||||
using JNPF.Message.Service;
|
||||
using JNPF.Systems.Interfaces.System;
|
||||
using JNPF.TaskScheduler;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.ProductionMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
|
||||
namespace Tnb.ProductionMgr
|
||||
{
|
||||
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
|
||||
[Route("api/[area]/[controller]/[action]")]
|
||||
public class MesForErpService: IDynamicApiController, ITransient
|
||||
{
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly IBillRullService _billRuleService;
|
||||
|
||||
public MesForErpService(ISqlSugarRepository<PrdMo> repository,
|
||||
IBillRullService billRuleService,
|
||||
IUserManager userManager)
|
||||
{
|
||||
_userManager = userManager;
|
||||
_billRuleService = billRuleService;
|
||||
_db = repository.AsSugarClient();
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[AllowAnonymous]
|
||||
public async Task<string> SavePrdMo(PrdMo input)
|
||||
{
|
||||
if (input == null)
|
||||
throw Oops.Bah("参数不能为空");
|
||||
if(string.IsNullOrEmpty(input.mo_code))
|
||||
throw Oops.Bah("工单代码不能为空");
|
||||
if(string.IsNullOrEmpty(input.mo_type))
|
||||
throw Oops.Bah("工单类型不能为空");
|
||||
if(input.plan_start_date==null)
|
||||
throw Oops.Bah("计划开始日期不能为空");
|
||||
if(input.plan_end_date==null)
|
||||
throw Oops.Bah("计划结束日期不能为空");
|
||||
if(string.IsNullOrEmpty(input.material_code))
|
||||
throw Oops.Bah("物料编号不能为空");
|
||||
if(string.IsNullOrEmpty(input.unit_id))
|
||||
throw Oops.Bah("单位不能为空");
|
||||
if(input.plan_qty==null || input.plan_qty<=0)
|
||||
throw Oops.Bah("计划数量不能为空");
|
||||
|
||||
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x => x.code == input.material_code);
|
||||
if(basMaterial==null)
|
||||
throw Oops.Bah($"未找到物料编号为{input.material_code}的物料");
|
||||
|
||||
List<BasMaterialUnit> basMaterialUnits = await _db.Queryable<BasMaterialUnit>().Where(x => x.material_id == basMaterial.id).ToListAsync();
|
||||
List<String> units = basMaterialUnits.Select(x => x.auxiliary_unit_id).Distinct().ToList();
|
||||
if(units!=null && !string.IsNullOrEmpty(basMaterial.unit_id)) units.Add(basMaterial.unit_id);
|
||||
|
||||
if(!units.Contains(input.unit_id))
|
||||
throw Oops.Bah($"{basMaterial.name}不存在{input.unit_id}该单位");
|
||||
|
||||
input.id = SnowflakeIdHelper.NextId();
|
||||
input.mo_source = "1";
|
||||
input.mo_code = input.mo_code;
|
||||
input.create_id = WmsWareHouseConst.AdministratorUserId;
|
||||
input.create_time = DateTime.Now;
|
||||
input.mo_status = DictConst.ToBeScheduledId;
|
||||
await _db.Insertable(input).ExecuteCommandAsync();
|
||||
return "true";
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -152,7 +152,7 @@ namespace Tnb.ProductionMgr
|
||||
eqp_code = (await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == input.equip_id))?.code!,
|
||||
mold_code = "",
|
||||
item_code = material?.code!,
|
||||
item_standard = material?.material_standard!,
|
||||
item_standard = material?.material_specification!,
|
||||
status = "生产投料",
|
||||
operator_name = _userManager.RealName,
|
||||
create_id = _userManager.UserId,
|
||||
|
||||
@@ -518,7 +518,7 @@ namespace Tnb.ProductionMgr
|
||||
type = (a.mo_type == DictConst.PrdMoTypeZS || a.mo_type == DictConst.PrdMoTypeJC) ? 1 : 2,
|
||||
material_code = b.code,
|
||||
material_name = b.name,
|
||||
material_standard = b.material_standard,
|
||||
material_standard = b.material_specification,
|
||||
act_start_date = a.act_start_date == null ? "" : a.act_start_date.Value.ToString(DbTimeFormat.SS),
|
||||
act_end_date = a.act_end_date == null ? "" : a.act_end_date.Value.ToString(DbTimeFormat.SS)
|
||||
}).ToPagedListAsync(input.currentPage, input.pageSize);
|
||||
@@ -560,7 +560,7 @@ namespace Tnb.ProductionMgr
|
||||
material_id = a.material_id,
|
||||
material_code = b.code,
|
||||
material_name = b.name,
|
||||
material_standard = b.material_standard,
|
||||
material_standard = b.material_specification,
|
||||
act_start_date = a.act_start_date == null ? "" : a.act_start_date.Value.ToString(DbTimeFormat.SS),
|
||||
act_end_date = a.act_end_date == null ? "" : a.act_end_date.Value.ToString(DbTimeFormat.SS),
|
||||
workshop_name = e.FullName,
|
||||
@@ -582,7 +582,7 @@ namespace Tnb.ProductionMgr
|
||||
material_id = a.material_id,
|
||||
material_code = b.code,
|
||||
material_name = b.name,
|
||||
material_standard = b.material_standard,
|
||||
material_standard = b.material_specification,
|
||||
act_start_date = a.act_start_date == null ? "" : a.act_start_date.Value.ToString(DbTimeFormat.SS),
|
||||
act_end_date = a.act_end_date == null ? "" : a.act_end_date.Value.ToString(DbTimeFormat.SS),
|
||||
workline_name = c.FullName,
|
||||
@@ -994,7 +994,7 @@ namespace Tnb.ProductionMgr
|
||||
.LeftJoin<PrdFeedingD>((a, b) => a.id == b.material_receipt_detail_id)
|
||||
.Where((a, b) => a.barcode == barcode).SumAsync((a, b) => b.num);
|
||||
output.list[0].material_name = basMaterial.name;
|
||||
output.list[0].material_standard = basMaterial.material_standard;
|
||||
output.list[0].material_standard = basMaterial.material_specification;
|
||||
output.list[0].supplier_name = basSupplier?.supplier_name ?? "";
|
||||
output.list[0].unit_name = unit?.FullName ?? "";
|
||||
|
||||
@@ -1031,7 +1031,7 @@ namespace Tnb.ProductionMgr
|
||||
mo_code = b.mo_code,
|
||||
material_code = c.code,
|
||||
material_name = c.name,
|
||||
material_standard = c.material_standard,
|
||||
material_standard = c.material_specification,
|
||||
children = SqlFunc.Subqueryable<PrdFeedingD>()
|
||||
.LeftJoin<PrdFeedingH>((x, y) => x.feeding_id == y.id)
|
||||
.LeftJoin<UserEntity>((x, y, z) => y.create_id == z.Id)
|
||||
|
||||
@@ -579,7 +579,7 @@ namespace Tnb.ProductionMgr
|
||||
mo_code = a.mo_code,
|
||||
material_code = b.code,
|
||||
material_name = b.name,
|
||||
material_standard = b.material_standard,
|
||||
material_standard = b.material_specification,
|
||||
mo_type = c.FullName,
|
||||
mo_status = d.FullName,
|
||||
plan_qty = a.plan_qty.Value.ToString(),
|
||||
@@ -615,7 +615,7 @@ namespace Tnb.ProductionMgr
|
||||
mo_code = h.mo_code,
|
||||
material_code = i.code,
|
||||
material_name = i.name,
|
||||
material_standard = i.material_standard,
|
||||
material_standard = i.material_specification,
|
||||
mo_type = j.FullName,
|
||||
mo_status = k.FullName,
|
||||
plan_qty = h.plan_qty.Value.ToString(),
|
||||
@@ -778,7 +778,7 @@ namespace Tnb.ProductionMgr
|
||||
eqp_code = (await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == input.eqp_id))?.code!,
|
||||
mold_code = (await db.Queryable<ToolMolds>().FirstAsync(it => it.id == input.mold_id))?.mold_code!,
|
||||
item_code = material?.code!,
|
||||
item_standard = material?.material_standard!,
|
||||
item_standard = material?.material_specification!,
|
||||
status = DictConst.ToBeScheduledEncode,
|
||||
operator_name = _userManager.RealName,
|
||||
create_id = _userManager.UserId,
|
||||
@@ -894,7 +894,7 @@ namespace Tnb.ProductionMgr
|
||||
id = SnowflakeIdHelper.NextId(),
|
||||
mo_code = (await _db.Queryable<PrdMo>().FirstAsync(it => it.id == input.mo_id))?.mo_code!,
|
||||
item_code = material_h?.code!,
|
||||
item_standard = material_h?.material_standard!,
|
||||
item_standard = material_h?.material_specification!,
|
||||
status = DictConst.ToBeScheduledEncode,
|
||||
operator_name = _userManager.RealName,
|
||||
create_id = _userManager.UserId,
|
||||
@@ -1019,7 +1019,7 @@ namespace Tnb.ProductionMgr
|
||||
subTaskLog.id = SnowflakeIdHelper.NextId();
|
||||
subTaskLog.mo_code = (await _db.Queryable<PrdMo>().FirstAsync(it => it.id == input.mo_id))?.mo_code!;
|
||||
subTaskLog.item_code = subMaterial?.code!;
|
||||
subTaskLog.item_standard = subMaterial?.material_standard!;
|
||||
subTaskLog.item_standard = subMaterial?.material_specification!;
|
||||
subTaskLog.status = DictConst.ToBeScheduledEncode;
|
||||
subTaskLog.operator_name = _userManager.RealName;
|
||||
subTaskLog.create_id = _userManager.UserId;
|
||||
@@ -1159,13 +1159,13 @@ namespace Tnb.ProductionMgr
|
||||
throw Oops.Bah("已开始的不能再开始");
|
||||
}
|
||||
|
||||
if (item.schedule_type == 2)
|
||||
{
|
||||
if (await db.Queryable<PrdMoTask>().AnyAsync(x => x.workstation_id == item.workstation_id && x.mo_task_status == DictConst.InProgressEnCode && x.id != item.id))
|
||||
// if (item.schedule_type == 2)
|
||||
// {
|
||||
if (await db.Queryable<PrdMoTask>().AnyAsync(x => x.workline_id == item.workline_id && x.mo_task_status == DictConst.InProgressEnCode && x.id != item.id))
|
||||
{
|
||||
throw Oops.Bah("该工位已有生产中的任务单");
|
||||
throw Oops.Bah("该产线已有生产中的任务单");
|
||||
}
|
||||
}
|
||||
// }
|
||||
|
||||
if (item.mo_task_status is not DictConst.ToBeStartedEnCode and not DictConst.MoStatusPauseCode)
|
||||
{
|
||||
@@ -1283,7 +1283,7 @@ namespace Tnb.ProductionMgr
|
||||
{
|
||||
BasMaterial? material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == taskItem.material_id);
|
||||
taskLog.item_code = material?.code!;
|
||||
taskLog.item_standard = material?.material_standard!;
|
||||
taskLog.item_standard = material?.material_specification!;
|
||||
}
|
||||
taskLog.operator_name = _userManager.RealName;
|
||||
taskLog.status = status;
|
||||
@@ -1410,7 +1410,7 @@ namespace Tnb.ProductionMgr
|
||||
PrdMoTask parent = await _db.Queryable<PrdMoTask>().SingleAsync(x => x.id == item.parent_id);
|
||||
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x=>x.id==parent.material_id);
|
||||
|
||||
string code = $"(01){basMaterial.di ?? ""}(11){DateTime.Now.ToString("yyMMdd")}(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}(10){parent.batch??""}#{basMaterial.material_standard}*{DateTime.Now.ToString("yyyyMMdd")}*{DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyyyMMdd")}*{basMaterial.container_no}";
|
||||
string code = $"(01){basMaterial.di ?? ""}(11){DateTime.Now.ToString("yyMMdd")}(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}(10){parent.batch??""}#{basMaterial.material_specification}*{DateTime.Now.ToString("yyyyMMdd")}*{DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyyyMMdd")}*{basMaterial.container_no}";
|
||||
Dictionary<string, string> dicCommand1 = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["DevName"] = "外包装箱码垛线",
|
||||
@@ -1664,12 +1664,30 @@ namespace Tnb.ProductionMgr
|
||||
location = await db.Queryable<BasLocation>().SingleAsync(x=>x.id==equip.downmat_location_id);
|
||||
report.location_code = location.location_code;
|
||||
}
|
||||
|
||||
string batch = "";
|
||||
|
||||
PrdMo mo = await _db.Queryable<PrdMo>().SingleAsync(x => x.id == prdMoTask.mo_id);
|
||||
if (mo.mo_type == DictConst.PrdMoTypeZS)
|
||||
{
|
||||
EqpEquipment equipment = await _db.Queryable<EqpEquipment>().SingleAsync(x => x.id == prdMoTask.eqp_id);
|
||||
batch = $"{equipment.code.Substring(equipment.code.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}";
|
||||
}else if (mo.mo_type == DictConst.PrdMoTypeJC)
|
||||
{
|
||||
EqpEquipment equipment = await _db.Queryable<EqpEquipment>().SingleAsync(x => x.id == prdMoTask.eqp_id);
|
||||
ToolMolds toolMolds = await _db.Queryable<ToolMolds>().SingleAsync(x => x.id == prdMoTask.mold_id);
|
||||
batch = $"{toolMolds.mold_code.Substring(toolMolds.mold_code.Length - 2, 2)}{equipment.code.Substring(equipment.code.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}";
|
||||
}else
|
||||
{
|
||||
OrganizeEntity organizeEntity = await _db.Queryable<OrganizeEntity>().SingleAsync(x => x.Id == prdMoTask.workline_id);
|
||||
batch = $"{organizeEntity.EnCode.Substring(organizeEntity.EnCode.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}";
|
||||
}
|
||||
|
||||
|
||||
// report.location_code = input.location_code;
|
||||
report.create_id = _userManager.UserId;
|
||||
report.create_time = DateTime.Now;
|
||||
// report.batch = input.mo_task_code + DateTimeOffset.Now.ToUnixTimeSeconds().ToString();
|
||||
report.batch = batch;
|
||||
report.barcode = input.mo_task_code + DateTimeOffset.Now.ToUnixTimeSeconds().ToString();
|
||||
report.barqty = mbom.full_qty;
|
||||
// report.barcode = input.mo_task_code+"0001";
|
||||
@@ -1907,6 +1925,7 @@ namespace Tnb.ProductionMgr
|
||||
bindCarryCodeInput.location_code = location.location_code;
|
||||
bindCarryCodeInput.code_batch = prdMoTask.batch;
|
||||
|
||||
Log.Information($"载具绑定参数:${JsonConvert.SerializeObject(bindCarryCodeInput)}");
|
||||
Tnb.WarehouseMgr.Entities.Dto.Outputs.Result result1 = await _wmsCarryService.BindCarryMaterial(bindCarryCodeInput);
|
||||
if (result1.code != HttpStatusCode.OK)
|
||||
{
|
||||
@@ -1918,7 +1937,7 @@ namespace Tnb.ProductionMgr
|
||||
wmsPrdInstockInput.material_id = prdMoTask.material_id;
|
||||
wmsPrdInstockInput.material_code = prdMoTask.material_code;
|
||||
wmsPrdInstockInput.material_name = basMaterial.name;
|
||||
wmsPrdInstockInput.material_spec = basMaterial.material_standard;
|
||||
wmsPrdInstockInput.material_spec = basMaterial.material_specification;
|
||||
wmsPrdInstockInput.planqty = prdMoTask.scheduled_qty.Value;
|
||||
wmsPrdInstockInput.pqty = input.reported_qty;
|
||||
wmsPrdInstockInput.rqty = 0;
|
||||
@@ -1937,12 +1956,13 @@ namespace Tnb.ProductionMgr
|
||||
{
|
||||
planqty = prdMoTask.scheduled_qty.Value,
|
||||
pqty = input.reported_qty,
|
||||
code_batch = prdMoTask.batch,
|
||||
code_batch = batch,
|
||||
code = report.barcode,
|
||||
unit_id = prdMoTask.unit_id,
|
||||
carry_id = wmsCarryH.id,
|
||||
});
|
||||
|
||||
Log.Information($"生产入库参数:${JsonConvert.SerializeObject(wmsPrdInstockInput)}");
|
||||
Tnb.WarehouseMgr.Entities.Dto.Outputs.Result result2 = await _wmsPrdInstockHService.PrdInstock(wmsPrdInstockInput);
|
||||
if (result2 != null)
|
||||
{
|
||||
@@ -2523,7 +2543,7 @@ namespace Tnb.ProductionMgr
|
||||
eqp_code = (await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == input.equip_id))?.code!,
|
||||
mold_code = "",
|
||||
item_code = material?.code!,
|
||||
item_standard = material?.material_standard!,
|
||||
item_standard = material?.material_specification!,
|
||||
status = "更换机台",
|
||||
operator_name = _userManager.RealName,
|
||||
create_id = _userManager.UserId,
|
||||
@@ -2570,7 +2590,7 @@ namespace Tnb.ProductionMgr
|
||||
eqp_code = "",
|
||||
mold_code = mold?.mold_code,
|
||||
item_code = material?.code!,
|
||||
item_standard = material?.material_standard!,
|
||||
item_standard = material?.material_specification!,
|
||||
status = "更换模具",
|
||||
operator_name = _userManager.RealName,
|
||||
create_id = _userManager.UserId,
|
||||
@@ -2617,7 +2637,7 @@ namespace Tnb.ProductionMgr
|
||||
eqp_code = "",
|
||||
mold_code = "",
|
||||
item_code = material?.code!,
|
||||
item_standard = material?.material_standard!,
|
||||
item_standard = material?.material_specification!,
|
||||
status = "更换产线",
|
||||
operator_name = _userManager.RealName,
|
||||
create_id = _userManager.UserId,
|
||||
@@ -3037,19 +3057,14 @@ namespace Tnb.ProductionMgr
|
||||
throw Oops.Bah("产线错误");
|
||||
}
|
||||
|
||||
PrdMoTask? prdMoTask = await _db.Queryable<PrdMoTask>().Where(x => x.workline_id == workline_id && x.parent_id == null && x.mo_task_status == DictConst.InProgressEnCode).FirstAsync();
|
||||
PrdMoTask? childPrdMoTask = null;
|
||||
PrdMoTask? prdMoTask = await _db.Queryable<PrdMoTask>().Where(x => x.workline_id == workline_id && x.mo_task_status == DictConst.InProgressEnCode && x.parent_id == null).FirstAsync();
|
||||
if (prdMoTask != null)
|
||||
{
|
||||
childPrdMoTask = await _db.Queryable<PrdMoTask>().Where(x => x.parent_id == prdMoTask.id && x.mo_task_status == DictConst.InProgressEnCode).FirstAsync();
|
||||
if (childPrdMoTask != null)
|
||||
{
|
||||
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x => x.id == prdMoTask.material_id);
|
||||
childPrdMoTask.material_name = basMaterial.name;
|
||||
}
|
||||
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x => x.id == prdMoTask.material_id);
|
||||
prdMoTask.material_name = basMaterial.name;
|
||||
}
|
||||
|
||||
return childPrdMoTask;
|
||||
return prdMoTask;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -3199,34 +3214,80 @@ namespace Tnb.ProductionMgr
|
||||
});
|
||||
if (prdMoTask == null) throw Oops.Bah("没找到对应任务单");
|
||||
|
||||
if (await _db.Queryable<PrdOutPackMarkLabel>().Where(x =>
|
||||
x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == null && x.is_mark==0).AnyAsync())
|
||||
{
|
||||
await _db.Updateable<PrdOutPackMarkLabel>()
|
||||
.SetColumns(x => x.is_label == 0)
|
||||
.Where(x => x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == null &&
|
||||
x.is_mark == 0)
|
||||
.ExecuteCommandAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
BasMaterial bm = await _db.Queryable<BasMaterial>().SingleAsync(x => x.id == prdMoTask.material_id);
|
||||
PrdOutPackMarkLabel prdOutPackMarkLabel = new PrdOutPackMarkLabel()
|
||||
{
|
||||
is_mark = null,
|
||||
is_label = 0,
|
||||
mo_task_code = prdMoTask.mo_task_code,
|
||||
material_code = bm.code,
|
||||
create_time = DateTime.Now,
|
||||
};
|
||||
|
||||
await _db.Insertable<PrdOutPackMarkLabel>(prdOutPackMarkLabel).ExecuteCommandAsync();
|
||||
}
|
||||
// if (await _db.Queryable<PrdOutPackMarkLabel>().Where(x =>
|
||||
// x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == null && x.is_mark==0).AnyAsync())
|
||||
// {
|
||||
// await _db.Updateable<PrdOutPackMarkLabel>()
|
||||
// .SetColumns(x => x.is_label == 0)
|
||||
// .Where(x => x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == null &&
|
||||
// x.is_mark == 0)
|
||||
// .ExecuteCommandAsync();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// BasMaterial bm = await _db.Queryable<BasMaterial>().SingleAsync(x => x.id == prdMoTask.material_id);
|
||||
// PrdOutPackMarkLabel prdOutPackMarkLabel = new PrdOutPackMarkLabel()
|
||||
// {
|
||||
// is_mark = null,
|
||||
// is_label = 0,
|
||||
// mo_task_code = prdMoTask.mo_task_code,
|
||||
// material_code = bm.code,
|
||||
// create_time = DateTime.Now,
|
||||
// };
|
||||
//
|
||||
// await _db.Insertable<PrdOutPackMarkLabel>(prdOutPackMarkLabel).ExecuteCommandAsync();
|
||||
// }
|
||||
|
||||
PrdMoTask parent = await _db.Queryable<PrdMoTask>().SingleAsync(x => x.id == prdMoTask.parent_id);
|
||||
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x=>x.id==parent.material_id);
|
||||
//PrdMoTask parent = await _db.Queryable<PrdMoTask>().SingleAsync(x => x.id == prdMoTask.parent_id);
|
||||
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x=>x.id==prdMoTask.material_id);
|
||||
PrdMo mo = await _db.Queryable<PrdMo>().SingleAsync(x => x.id == prdMoTask.mo_id);
|
||||
string batch = "";
|
||||
if (mo.mo_type == DictConst.PrdMoTypeZS)
|
||||
{
|
||||
EqpEquipment equipment = await _db.Queryable<EqpEquipment>().SingleAsync(x => x.id == prdMoTask.eqp_id);
|
||||
batch = $"{equipment.code.Substring(equipment.code.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}";
|
||||
}else if (mo.mo_type == DictConst.PrdMoTypeJC)
|
||||
{
|
||||
EqpEquipment equipment = await _db.Queryable<EqpEquipment>().SingleAsync(x => x.id == prdMoTask.eqp_id);
|
||||
ToolMolds toolMolds = await _db.Queryable<ToolMolds>().SingleAsync(x => x.id == prdMoTask.mold_id);
|
||||
batch = $"{toolMolds.mold_code.Substring(toolMolds.mold_code.Length - 2, 2)}{equipment.code.Substring(equipment.code.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}";
|
||||
}else
|
||||
{
|
||||
// LableRecord lableRecord = await _db.Queryable<LableRecord>().FirstAsync();
|
||||
// if (lableRecord == null)
|
||||
// {
|
||||
// batch = $"{DateTime.Now.ToString("yyMMdd")}5{"1".PadLeft(3,'0')}";
|
||||
// await _db.Insertable(new LableRecord()
|
||||
// {
|
||||
// id = SnowflakeIdHelper.NextId(),
|
||||
// last_day = DateTime.Now.ToString("yyyyMMdd"),
|
||||
// num = 1
|
||||
// }).ExecuteCommandAsync();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// int num = 1;
|
||||
// if(DateTime.Now.ToString("yyyyMMdd") == lableRecord.last_day)
|
||||
// {
|
||||
// num = lableRecord.num+1;
|
||||
// batch = $"{DateTime.Now.ToString("yyMMdd")}5{(lableRecord.num+1).ToString().PadLeft(3,'0')}";
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// batch = $"{DateTime.Now.ToString("yyMMdd")}5{"1".PadLeft(3,'0')}";
|
||||
// }
|
||||
//
|
||||
// await _db.Updateable<LableRecord>()
|
||||
// .SetColumns(x=>x.last_day==DateTime.Now.ToString("yyyyMMdd"))
|
||||
// .SetColumns(x=>x.num==num)
|
||||
// .Where(x=>x.id==lableRecord.id)
|
||||
// .ExecuteCommandAsync();
|
||||
// }
|
||||
OrganizeEntity organizeEntity = await _db.Queryable<OrganizeEntity>().SingleAsync(x => x.Id == prdMoTask.workline_id);
|
||||
batch = $"{organizeEntity.EnCode.Substring(organizeEntity.EnCode.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}";
|
||||
}
|
||||
|
||||
string code = $"(01){basMaterial.di ?? ""}*(11){DateTime.Now.ToString("yyMMdd")}*(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}*(10){parent.batch??""}#{basMaterial.material_standard}*{parent.batch??""}*{DateTime.Now.ToString("yyyyMMdd")}*{DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyyyMMdd")}*{basMaterial.container_no}";
|
||||
string code = $"(01){basMaterial.di ?? ""}*(11){DateTime.Now.ToString("yyMMdd")}*(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}*(10){batch}#{basMaterial.material_specification}*{batch}*{DateTime.Now.ToString("yyyyMMdd")}*{DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyyyMMdd")}*{basMaterial.container_no}";
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -436,7 +436,7 @@ namespace Tnb.ProductionMgr
|
||||
material_id = a.material_id,
|
||||
material_code = b.code,
|
||||
material_name = b.name,
|
||||
material_standard = b.material_standard,
|
||||
material_standard = b.material_specification,
|
||||
container_no = b.container_no,
|
||||
di = b.di,
|
||||
workline_id = a.workline_id,
|
||||
|
||||
@@ -267,6 +267,18 @@ namespace Tnb.ProductionMgr
|
||||
bool? cs01 = await _redisData.TryGetValueByKeyField<bool?>("YTCS", "AllowAgvEmptyOut_CS01");
|
||||
bool? cs03 = await _redisData.TryGetValueByKeyField<bool?>("YTCS", "AllowAgvEmptyOut_CS03");
|
||||
string startLocationCode = cs01==true ? "ZSSSXCTU01" : cs03==true ? "ZSSSXCTU02" : "";
|
||||
if (cs01==true && cs03==true)
|
||||
{
|
||||
string last_fixed_point_delivery = _redisData.Exists("last_fixed_point_delivery") ? _redisData.Get<string>("last_fixed_point_delivery") : "";
|
||||
if (string.IsNullOrEmpty(last_fixed_point_delivery))
|
||||
{
|
||||
startLocationCode = "ZSSSXCTU01";
|
||||
}
|
||||
else
|
||||
{
|
||||
startLocationCode = "ZSSSXCTU01ZSSSXCTU02".Replace(last_fixed_point_delivery, "");
|
||||
}
|
||||
}
|
||||
if (startLocationCode.IsEmpty())
|
||||
{
|
||||
Log.Error($"输送线无空载具");
|
||||
@@ -289,6 +301,7 @@ namespace Tnb.ProductionMgr
|
||||
msg += $"{equipment.name}注塑定点配送成功,";
|
||||
Log.Information($"【FixedPointDelivery】{equipment.name}注塑定点配送成功");
|
||||
_redisData.Set($"{eqpDaq.equip_code}_{eqpDaq.label_name}_flag", true, TimeSpan.FromMinutes(20));
|
||||
_redisData.Set($"last_fixed_point_delivery", startLocationCode);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user