This commit is contained in:
qianjiawei
2023-11-03 15:42:58 +08:00
7 changed files with 194 additions and 9 deletions

View File

@@ -10,6 +10,7 @@ using Tnb.BasicData.Entities.Dto;
using Tnb.BasicData.Entitys.Dto.BasProcess;
using Tnb.BasicData.Interfaces;
using Tnb.EquipMgr.Entities;
using Tnb.WarehouseMgr.Entities;
namespace Tnb.BasicData
{
@@ -41,8 +42,10 @@ namespace Tnb.BasicData
.LeftJoin<OrganizeEntity>((a, b) => a.source_id == b.Id)
.LeftJoin<EqpEquipment>((a, b, c) => a.source_id == c.id)
.LeftJoin<ToolLocation>((a, b, c, d) => a.source_id == d.id)
.LeftJoin<BasLocation>((a,b,c,d,e)=>a.source_id==e.id)
.LeftJoin<WmsCarryH>((a,b,c,d,e,f)=>a.source_id==f.id)
.Where((a, b, c, d) => a.code == code)
.Select((a, b, c, d) => new
.Select((a, b, c, d,e,f) => new
{
id = a.id,
source_id = a.source_id,
@@ -52,6 +55,10 @@ namespace Tnb.BasicData
equip_code = a.code,
equip_name = c.name,
tool_location_code = d.location_code,
bas_location_name = e.location_name,
bas_location_code = e.location_code,
carry_name = f.carry_name,
carry_code = f.carry_code,
}).FirstAsync();
return result;
}

View File

@@ -217,5 +217,10 @@ public partial class EqpEquipment : BaseEntity<string>
/// 入库库位id
/// </summary>
public string? as_location_id { get; set; }
/// <summary>
/// 第三方平台设备编号
/// </summary>
public string? third_equip_code { get; set; }
}

View File

@@ -0,0 +1,27 @@
namespace Tnb.ProductionMgr.Entities.Dto
{
public class KittingOutNewInput
{
/// <summary>
/// 目标库位编号
/// </summary>
public string location_code { get; set; } = string.Empty;
/// <summary>
/// 齐套搭配方案ID
/// </summary>
public string collocation_scheme_id { get; set; } = string.Empty;
/// 所属工位
/// </summary>
public string? workstation_id { get; set; }
/// <summary>
/// 任务单
/// </summary>
public string? mo_task_id { get; set; }
}
}

View File

@@ -144,5 +144,15 @@ namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
/// 副单位数量kg
/// </summary>
public string? deputy_num { get; set; }
/// <summary>
/// 第三方平台设备编号
/// </summary>
public string? third_equip_code { get; set; }
/// <summary>
/// 称重点位名称
/// </summary>
public string? weight_name { get; set; }
}
}

View File

@@ -8,6 +8,7 @@ using JNPF.Extras.CollectiveOAuth.Utils;
using JNPF.FriendlyException;
using JNPF.Logging;
using JNPF.Systems.Entitys.Permission;
using JNPF.Systems.Entitys.System;
using JNPF.Systems.Interfaces.Permission;
using JNPF.Systems.Interfaces.System;
using JNPF.VisualDev;
@@ -23,11 +24,12 @@ using Tnb.ProductionMgr.Entities;
using Tnb.ProductionMgr.Interfaces;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
using Tnb.ProductionMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities;
namespace Tnb.ProductionMgr
{
/// <summary>
/// 生产领料
/// 齐套出库
/// </summary>
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
[Route("api/[area]/[controller]/[action]")]
@@ -184,7 +186,6 @@ namespace Tnb.ProductionMgr
collocation_scheme_id = kittingOutInput.collocation_scheme_id,
collocation_scheme_code = kittingOutInput.collocation_scheme_code,
source_id = prdKittingOutH.id,
seq = !string.IsNullOrEmpty(kittingOutInput.seq) ? Convert.ToInt32(kittingOutInput.seq) : 0,
create_id = _userManager.UserId,
wmsKittingoutDs = new List<MESKittingOutStkDInput>(),
});
@@ -262,5 +263,142 @@ namespace Tnb.ProductionMgr
}
}
/// <summary>
/// 齐套出库申请
/// </summary>
/// <param name="kittingOutInput"></param>
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
[HttpPost]
public async Task<dynamic> KittingOutNew(KittingOutNewInput kittingOutInput)
{
PrdKittingOutH prdKittingOutH = new PrdKittingOutH();
string warehouse_id = "26103348825381";//二楼缓存仓
try
{
var db = _repository.AsSugarClient();
PrdMoTask prdMoTask = await db.Queryable<PrdMoTask>().SingleAsync(x=>x.id==kittingOutInput.mo_task_id);
BasMaterial basMaterial = await db.Queryable<BasMaterial>().SingleAsync(x=>x.id==prdMoTask.material_id);
WmsCollocationSchemeH wmsCollocationSchemeH = await db.Queryable<WmsCollocationSchemeH>().SingleAsync(x=>x.id==kittingOutInput.collocation_scheme_id);
List<WmsCollocationSchemeD> wmsCollocationSchemeDs = await db.Queryable<WmsCollocationSchemeD>().Where(x=>x.bill_id==kittingOutInput.collocation_scheme_id).ToListAsync();
List<string> materialIds = wmsCollocationSchemeDs.Select(x => x.material_id).ToList();
List<BasMaterial> basMaterials = await db.Queryable<BasMaterial>().Where(x=>materialIds.Contains(x.id)).ToListAsync();
Dictionary<string,object> unitIdDic = await db.Queryable<BasMaterial>()
.LeftJoin<DictionaryTypeEntity>((a, b) => b.EnCode == DictConst.MeasurementUnit)
.LeftJoin<DictionaryDataEntity>((a, b, c) => b.Id == c.DictionaryTypeId && a.unit_id == c.EnCode)
.Where((a,b,c)=>materialIds.Contains(a.id))
.Select((a, b, c) => new
{
key = a.id,
value = c.Id
})
.ToDictionaryAsync(x => x.key, x => x.value);
Dictionary<string, string> unitCodeDic = basMaterials.ToDictionary(x => x.id, x => x.unit_id);
OrganizeEntity workline = await _organizeService.GetAnyParentByWorkstationId(kittingOutInput.workstation_id, DictConst.RegionCategoryWorklineCode);
List<MESKittingOutStkInput> input = new List<MESKittingOutStkInput>();
input.Add(new MESKittingOutStkInput()
{
org_id = _userManager.GetUserInfo().Result.organizeId,
bill_date = DateTime.Now,
warehouse_id = warehouse_id,
location_code = kittingOutInput.location_code,
material_id = prdMoTask.material_id,
material_code = basMaterial.code,
collocation_scheme_id = kittingOutInput.collocation_scheme_id,
collocation_scheme_code = wmsCollocationSchemeH.bill_code,
source_id = prdKittingOutH.id,
create_id = _userManager.UserId,
wmsKittingoutDs = new List<MESKittingOutStkDInput>(),
});
foreach (var item in wmsCollocationSchemeDs)
{
input[0].wmsKittingoutDs.Add(new MESKittingOutStkDInput()
{
material_id = item.material_id,
material_code = item.material_code,
unit_id = unitIdDic.ContainsKey(item.material_id) ? unitIdDic[item.material_id].ToString() : "",
unit_code = unitCodeDic.ContainsKey(item.material_id) ? unitCodeDic[item.material_id].ToString() : "",
pr_qty = item.qty,
code_batch = "",
box = item.box,
});
}
string domain = (App.HttpContext.Request.IsHttps ? "https://" : "http://") + App.HttpContext.Request.Host;
Dictionary<string, object> header = new Dictionary<string, object>()
{
["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<AuthResponse>(sendResult);
if (authResponse.code != 200)
{
throw Oops.Bah(authResponse.msg);
}
else
{
prdKittingOutH.code = await _billRullService.GetBillNumber(CodeTemplateConst.PRDKITTINGOUTSTOCK_CODE);
prdKittingOutH.warehouse_id = warehouse_id;
prdKittingOutH.location_code = kittingOutInput.location_code;
prdKittingOutH.material_id = basMaterial.id;
prdKittingOutH.material_code = basMaterial.code;
prdKittingOutH.collocation_scheme_id = kittingOutInput.collocation_scheme_id;
prdKittingOutH.collocation_scheme_code = wmsCollocationSchemeH.bill_code;
prdKittingOutH.workline_id = workline?.Id ?? "";
prdKittingOutH.workstation_id = kittingOutInput.workstation_id;
prdKittingOutH.mo_task_id = kittingOutInput.mo_task_id;
prdKittingOutH.seq = "0";
prdKittingOutH.create_id = _userManager.UserId;
prdKittingOutH.create_time = DateTime.Now;
prdKittingOutH.org_id = _userManager.GetUserInfo().Result.organizeId;
List<PrdKittingOutD> prdKittingOutDs = new List<PrdKittingOutD>();
foreach (var item in wmsCollocationSchemeDs)
{
prdKittingOutDs.Add(new PrdKittingOutD()
{
material_id = item.material_id,
material_code = item.material_code,
unit_id = unitIdDic.ContainsKey(item.material_id) ? unitIdDic[item.material_id].ToString() : "",
unit_code = unitCodeDic.ContainsKey(item.material_id) ? unitCodeDic[item.material_id].ToString() : "",
pr_qty = item.qty,
code_batch = "",
box = item.box,
kitting_out_id = prdKittingOutH.id,
});
}
// VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
// await _runService.Create(templateEntity, visualDevModelDataCrInput);
DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
{
await _repository.InsertAsync(prdKittingOutH);
if (prdKittingOutDs.Count > 0)
{
await db.Insertable<PrdKittingOutD>(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);
}
}
}
}

View File

@@ -401,13 +401,14 @@ namespace Tnb.ProductionMgr
.LeftJoin<BasStandardTime>((a,b,c,d,e,f,g,h,i)=>a.process_id==i.process_id && i.enabled==1)
.LeftJoin<PrdMo>((a,b,c,d,e,f,g,h,i,j)=>a.mo_id==j.id)
.LeftJoin<BasMaterialUnit>((a,b,c,d,e,f,g,h,i,j,k)=>a.material_id==k.material_id && k.auxiliary_unit_id=="kg")
.LeftJoin<EqpDaq>((a,b,c,d,e,f,g,h,i,j,k,l)=>a.eqp_id==l.equip_id && l.enabled==1 && l.label_point=="提报装箱称重点位")
.Where((a, b) => a.workstation_id == input.stationId && (a.mo_task_status == DictConst.ToBeStartedEnCode || a.mo_task_status == DictConst.MoStatusPauseCode || a.mo_task_status == DictConst.ComplatedEnCode || a.mo_task_status == DictConst.InProgressEnCode) )
.WhereIF(!string.IsNullOrEmpty(mo_task_code),a=>a.mo_task_code.Contains(mo_task_code))
//.WhereIF(!string.IsNullOrEmpty(mo_task_status),a=>a.mo_task_status==mo_task_status)
.WhereIF(statusList.Count>0,a=>statusList.Contains(a.mo_task_status))
.WhereIF(status=="3" && start_time!=null,a=>a.act_end_date>=start_time)
.WhereIF(status=="3" && end_time!=null,a=>a.act_end_date<=end_time)
.Select((a, b, c, d, e,f,g,h,i,j,k) => new PADPackageTaskPageOutput
.Select((a, b, c, d, e,f,g,h,i,j,k,l) => new PADPackageTaskPageOutput
{
id = a.id,
mo_task_code = a.mo_task_code,
@@ -448,6 +449,8 @@ namespace Tnb.ProductionMgr
minpacking = b.minpacking,
main_num = k.number_of_primary_unit,
deputy_num = k.number_of_auxiliary_unit,
third_equip_code = f.third_equip_code,
weight_name = l.label_name
})
.MergeTable()
.OrderBy($"{input.sidx} {input.sort}")

View File

@@ -81,11 +81,6 @@ namespace Tnb.WarehouseMgr.Entities.Dto.Inputs
/// </summary>
public string source_code { get; set; }
/// <summary>
/// 顺序号
/// </summary>
public int seq { get; set; }
/// <summary>
/// 创建用户ID
/// </summary>