|
@@ -22,6 +22,7 @@ using Business.BookManagement.Dto;
|
|
|
using Volo.Abp.ObjectMapping;
|
|
using Volo.Abp.ObjectMapping;
|
|
|
using Volo.Abp.Application.Services;
|
|
using Volo.Abp.Application.Services;
|
|
|
using ZstdSharp.Unsafe;
|
|
using ZstdSharp.Unsafe;
|
|
|
|
|
+using System.Transactions;
|
|
|
|
|
|
|
|
namespace Business.ResourceExamineManagement
|
|
namespace Business.ResourceExamineManagement
|
|
|
{
|
|
{
|
|
@@ -66,16 +67,22 @@ namespace Business.ResourceExamineManagement
|
|
|
/// 物料详情
|
|
/// 物料详情
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
private readonly IMongoDB<ic_item> _ic_item;
|
|
private readonly IMongoDB<ic_item> _ic_item;
|
|
|
-
|
|
|
|
|
|
|
+ private IRepository<ic_item, long> _mysql_ic_item;
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// 物料BOM
|
|
/// 物料BOM
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
private readonly IMongoDB<ic_bom> _ic_bom;
|
|
private readonly IMongoDB<ic_bom> _ic_bom;
|
|
|
-
|
|
|
|
|
|
|
+ private IRepository<ic_bom, long> _mysql_ic_bom;
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// 物料BOM明细
|
|
/// 物料BOM明细
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
private readonly IMongoDB<ic_bom_child> _ic_bom_child;
|
|
private readonly IMongoDB<ic_bom_child> _ic_bom_child;
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 生产工单主表
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ private readonly IMongoDB<mes_morder> _mes_morder;
|
|
|
|
|
+ private IRepository<ic_bom_child, long> _mysql_ic_bom_child;
|
|
|
|
|
+
|
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -86,14 +93,22 @@ namespace Business.ResourceExamineManagement
|
|
|
public ResourceExamineAppService(
|
|
public ResourceExamineAppService(
|
|
|
IMongoDB<mes_technique> mes_technique,
|
|
IMongoDB<mes_technique> mes_technique,
|
|
|
IMongoDB<ic_item> ic_item,
|
|
IMongoDB<ic_item> ic_item,
|
|
|
|
|
+ IRepository<ic_item, long> mysql_ic_item,
|
|
|
|
|
+ IRepository<ic_bom, long> mysql_ic_bom,
|
|
|
|
|
+ IRepository<ic_bom_child, long> mysql_ic_bom_child,
|
|
|
IMongoDB<ic_bom> ic_bom,
|
|
IMongoDB<ic_bom> ic_bom,
|
|
|
- IMongoDB<ic_bom_child> ic_bom_child
|
|
|
|
|
|
|
+ IMongoDB<ic_bom_child> ic_bom_child,
|
|
|
|
|
+ IMongoDB<mes_morder> mes_morder
|
|
|
)
|
|
)
|
|
|
{
|
|
{
|
|
|
_mes_technique = mes_technique;
|
|
_mes_technique = mes_technique;
|
|
|
_ic_item = ic_item;
|
|
_ic_item = ic_item;
|
|
|
|
|
+ _mysql_ic_item = mysql_ic_item;
|
|
|
_ic_bom = ic_bom;
|
|
_ic_bom = ic_bom;
|
|
|
|
|
+ _mysql_ic_bom = mysql_ic_bom;
|
|
|
_ic_bom_child = ic_bom_child;
|
|
_ic_bom_child = ic_bom_child;
|
|
|
|
|
+ _mysql_ic_bom_child = mysql_ic_bom_child;
|
|
|
|
|
+ _mes_morder = mes_morder;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -152,12 +167,13 @@ namespace Business.ResourceExamineManagement
|
|
|
//TODO:入参异常;
|
|
//TODO:入参异常;
|
|
|
//throw new NotImplementedException();
|
|
//throw new NotImplementedException();
|
|
|
}
|
|
}
|
|
|
|
|
+ //var morderList = _mes_morder.(a => a.Id == ObjectId.Parse(id)).ToList().FirstOrDefault();
|
|
|
//查询生产工单类型为计划工单并且工单类型为备库工单 并且BOM编码一致数据
|
|
//查询生产工单类型为计划工单并且工单类型为备库工单 并且BOM编码一致数据
|
|
|
// 订单状态为 初始或下达工单
|
|
// 订单状态为 初始或下达工单
|
|
|
// List =>数量满足Quantity && 生成工单结束日期最早
|
|
// List =>数量满足Quantity && 生成工单结束日期最早
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public async Task BomPretreatmentAsync(long? orderid, long? BomId, int Quantity)
|
|
|
|
|
|
|
+ public void BomPretreatment(long? orderid, long? BomId, int Quantity)
|
|
|
{
|
|
{
|
|
|
if (orderid == null)
|
|
if (orderid == null)
|
|
|
{
|
|
{
|
|
@@ -169,47 +185,71 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//var query = (await _ic_bom.GetQueryableAsync()).WhereIf(true, a => a.bom_id == BomId).ToList();
|
|
//var query = (await _ic_bom.GetQueryableAsync()).WhereIf(true, a => a.bom_id == BomId).ToList();
|
|
|
- //var help = new SnowFlake();
|
|
|
|
|
- //var id = help.NextId();
|
|
|
|
|
- var level = 0;
|
|
|
|
|
|
|
+ var help = new SnowFlake();
|
|
|
var bomlist = _ic_bom.GetAll();
|
|
var bomlist = _ic_bom.GetAll();
|
|
|
var bomchildlist = _ic_bom_child.GetAll();
|
|
var bomchildlist = _ic_bom_child.GetAll();
|
|
|
var icitemlist = _ic_item.GetAll();
|
|
var icitemlist = _ic_item.GetAll();
|
|
|
- //GetBomListAsync();
|
|
|
|
|
|
|
+ List<BomChildExamineDto> returnlist = new List<BomChildExamineDto>();
|
|
|
|
|
+ var dto = new BomChildExamineDto();
|
|
|
|
|
+ dto.bom_id = BomId.Value;
|
|
|
|
|
+ dto.level = 1;
|
|
|
|
|
+ dto.id = help.NextId();
|
|
|
|
|
+ dto.parent_id = help.NextId();
|
|
|
|
|
+ dto.qty = 1;
|
|
|
|
|
+ dto.num = "1";
|
|
|
|
|
+ dto.isbom = 1;
|
|
|
|
|
+ GetBomList(bomlist, bomchildlist, icitemlist, dto, returnlist);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
- public void GetBomList(List<ic_bom> bomlist, List<ic_bom_child> bomchildlist, List<ic_item> icitemlist, long bomId, List<BomChildExamineDto> returnlist, long? parent_id, int le)
|
|
|
|
|
|
|
+ public void GetBomList(List<ic_bom> bomlist, List<ic_bom_child> bomchildlist, List<ic_item> icitemlist, BomChildExamineDto dto, List<BomChildExamineDto> returnlist)
|
|
|
{
|
|
{
|
|
|
- int level = le++;//初始化定义level层级
|
|
|
|
|
|
|
+ int level = dto.level++;//初始化定义level层级
|
|
|
var help = new SnowFlake();
|
|
var help = new SnowFlake();
|
|
|
|
|
|
|
|
- var bom = bomlist.WhereIf(true, s => s.bom_id == bomId).FirstOrDefault();
|
|
|
|
|
- if (bom == null)
|
|
|
|
|
|
|
+ var bom = bomlist.WhereIf(true, s => s.Id == dto.bom_id).FirstOrDefault();
|
|
|
|
|
+ var item = icitemlist.WhereIf(true, a => a.Id == bom.icitem_id).FirstOrDefault();
|
|
|
|
|
+ if (bom == null || item==null)
|
|
|
{
|
|
{
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
- var dto = new BomChildExamineDto();
|
|
|
|
|
- dto.level = level;
|
|
|
|
|
- dto.bom_id = bomId;
|
|
|
|
|
- dto.id = help.NextId();
|
|
|
|
|
- dto.parent_id = parent_id;
|
|
|
|
|
|
|
+ //var dto = new BomChildExamineDto();
|
|
|
|
|
+ //dto.level = level;
|
|
|
|
|
+ //dto.bom_id = bomId;
|
|
|
|
|
+ //dto.id = help.NextId();
|
|
|
|
|
+ //dto.parent_id = parent_id;
|
|
|
dto.item_id = bom.icitem_id;
|
|
dto.item_id = bom.icitem_id;
|
|
|
dto.item_name = bom.item_name;
|
|
dto.item_name = bom.item_name;
|
|
|
dto.item_code = bom.item_number;
|
|
dto.item_code = bom.item_number;
|
|
|
|
|
+ dto.model = item.model;
|
|
|
|
|
+ dto.unit = bom.unit;
|
|
|
|
|
+ dto.erp_cls = item.erp_cls;
|
|
|
|
|
+ dto.erp_cls_name = item.erp_cls_name;
|
|
|
|
|
+
|
|
|
//var bdto = ObjectMapper.Map<ic_bom,BomChildExamineDto>(bom);
|
|
//var bdto = ObjectMapper.Map<ic_bom,BomChildExamineDto>(bom);
|
|
|
returnlist.Add(dto);
|
|
returnlist.Add(dto);
|
|
|
- var childlist = bomchildlist.WhereIf(true, a => a.bom_id == bom.bom_id).ToList();
|
|
|
|
|
|
|
+ var childlist = bomchildlist.WhereIf(true, a => a.bom_id == bom.Id).ToList();
|
|
|
|
|
+
|
|
|
|
|
+ int idx = 1;
|
|
|
foreach (var c in childlist)
|
|
foreach (var c in childlist)
|
|
|
{
|
|
{
|
|
|
- var icitem = icitemlist.WhereIf(true, a => a.icitem_id == c.icitem_id).FirstOrDefault();
|
|
|
|
|
|
|
+ string childNum = dto.num + "." + idx.ToString();
|
|
|
|
|
+ var icitem = icitemlist.WhereIf(true, a => a.Id == c.icitem_id).FirstOrDefault();
|
|
|
//如果此明细查的到BOM信息,则代表此child是一个子BOM。
|
|
//如果此明细查的到BOM信息,则代表此child是一个子BOM。
|
|
|
if (c.is_bom == 1)
|
|
if (c.is_bom == 1)
|
|
|
{
|
|
{
|
|
|
var childBom = bomlist.WhereIf(true, a => a.icitem_id == c.icitem_id).FirstOrDefault();
|
|
var childBom = bomlist.WhereIf(true, a => a.icitem_id == c.icitem_id).FirstOrDefault();
|
|
|
if (childBom != null)
|
|
if (childBom != null)
|
|
|
{
|
|
{
|
|
|
- GetBomList(bomlist, bomchildlist, icitemlist, childBom.bom_id, returnlist, dto.id, level);
|
|
|
|
|
|
|
+ var cdto = new BomChildExamineDto();
|
|
|
|
|
+ cdto.id = help.NextId();
|
|
|
|
|
+ cdto.level = level;
|
|
|
|
|
+ cdto.parent_id = dto.id;
|
|
|
|
|
+ cdto.qty = c.qty.Value;
|
|
|
|
|
+ cdto.backflush = c.backflush;
|
|
|
|
|
+ cdto.num = childNum;
|
|
|
|
|
+ cdto.isbom = 1;
|
|
|
|
|
+ GetBomList(bomlist, bomchildlist, icitemlist, cdto, returnlist);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
@@ -218,15 +258,24 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
{
|
|
|
var childDto = new BomChildExamineDto();
|
|
var childDto = new BomChildExamineDto();
|
|
|
childDto.level = level++;
|
|
childDto.level = level++;
|
|
|
- childDto.bom_id = bomId;
|
|
|
|
|
|
|
+ childDto.bom_id = dto.bom_id;
|
|
|
childDto.id = help.NextId();
|
|
childDto.id = help.NextId();
|
|
|
- childDto.parent_id = parent_id;
|
|
|
|
|
- childDto.item_id = icitem.icitem_id;
|
|
|
|
|
|
|
+ childDto.parent_id = dto.id;
|
|
|
|
|
+ childDto.item_id = icitem.Id;
|
|
|
childDto.item_name = icitem.name;
|
|
childDto.item_name = icitem.name;
|
|
|
childDto.item_code = icitem.number;
|
|
childDto.item_code = icitem.number;
|
|
|
|
|
+ childDto.num = childNum;
|
|
|
|
|
+ childDto.model = icitem.model;
|
|
|
|
|
+ childDto.unit = c.unit;
|
|
|
|
|
+ childDto.erp_cls = item.erp_cls;
|
|
|
|
|
+ childDto.erp_cls_name = item.erp_cls_name;
|
|
|
|
|
+ childDto.backflush = c.backflush;
|
|
|
|
|
+ childDto.qty = c.qty.Value;
|
|
|
|
|
+ childDto.isbom = 0;
|
|
|
returnlist.Add(childDto);
|
|
returnlist.Add(childDto);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ idx++;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|