bug处理
This commit is contained in:
@@ -5,7 +5,7 @@ using SqlSugar;
|
||||
namespace Tnb.ProductionMgr.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 自检报废记录表
|
||||
///
|
||||
/// </summary>
|
||||
[SugarTable("prd_mo_task_defect_record")]
|
||||
public partial class PrdMoTaskDefectRecord : BaseEntity<string>
|
||||
|
||||
@@ -31,7 +31,7 @@ using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
||||
namespace Tnb.ProductionMgr
|
||||
{
|
||||
/// <summary>
|
||||
/// mes生产入库申请
|
||||
/// mes<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
|
||||
[Route("api/[area]/[controller]/[action]")]
|
||||
@@ -42,7 +42,7 @@ namespace Tnb.ProductionMgr
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly IOrganizeService _organizeService;
|
||||
private readonly IBillRullService _billRuleService;
|
||||
|
||||
|
||||
private const string ModuleId = "25572529329173";
|
||||
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
|
||||
|
||||
@@ -56,7 +56,7 @@ namespace Tnb.ProductionMgr
|
||||
_repository = repository;
|
||||
_organizeService = organizeService;
|
||||
_userManager = userManager;
|
||||
_billRuleService= billRullService;
|
||||
_billRuleService = billRullService;
|
||||
OverideFuncs.GetListAsync = GetList;
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ namespace Tnb.ProductionMgr
|
||||
.LeftJoin<ToolMolds>((a, b, c) => a.mold_id == c.id)
|
||||
.LeftJoin<EqpEquipment>((a, b, c, d) => a.eqp_id == d.id)
|
||||
.WhereIF(!string.IsNullOrEmpty(moCode), (a, b, c, d) => a.mo_task_code!.Contains(moCode))
|
||||
.Where(a=>string.IsNullOrEmpty(a.parent_id))
|
||||
.Where(a => string.IsNullOrEmpty(a.parent_id))
|
||||
.Select((a, b, c, d) => new PrdMoTaskTreeOutput()
|
||||
{
|
||||
id = a.id,
|
||||
@@ -111,7 +111,7 @@ namespace Tnb.ProductionMgr
|
||||
|
||||
if (string.IsNullOrEmpty(input.station_id))
|
||||
{
|
||||
throw Oops.Bah("请先选择工位");
|
||||
throw Oops.Bah("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
}
|
||||
|
||||
DbResult<bool> result = await db.Ado.UseTranAsync(async () =>
|
||||
@@ -207,7 +207,7 @@ namespace Tnb.ProductionMgr
|
||||
string domain = _userManager.Domain;
|
||||
Dictionary<string, object> header = new()
|
||||
{
|
||||
["Authorization"] = App.HttpContext!=null ? App.HttpContext.Request.Headers["Authorization"] : ""
|
||||
["Authorization"] = App.HttpContext != null ? App.HttpContext.Request.Headers["Authorization"] : ""
|
||||
};
|
||||
string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_INSTOCK, JsonConvert.SerializeObject(mesCreateInstockInput), header);
|
||||
Log.Information(sendResult);
|
||||
@@ -225,11 +225,11 @@ namespace Tnb.ProductionMgr
|
||||
});
|
||||
}
|
||||
|
||||
return !result2.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result2.IsSuccess ? "保存成功" : result2.ErrorMessage);
|
||||
return !result2.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result2.IsSuccess ? "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>" : result2.ErrorMessage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 入库申请同步
|
||||
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
/// <param name="dic">source_id</param>
|
||||
/// <returns></returns>
|
||||
@@ -259,7 +259,7 @@ namespace Tnb.ProductionMgr
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注塑满箱到位后入库申请
|
||||
/// ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䵽λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
/// <param name="inut"></param>
|
||||
/// <returns></returns>
|
||||
@@ -272,12 +272,12 @@ namespace Tnb.ProductionMgr
|
||||
string warehouse_id = "2";
|
||||
if (string.IsNullOrEmpty(equip_code))
|
||||
{
|
||||
throw Oops.Bah("请传机台号");
|
||||
throw Oops.Bah("<EFBFBD>봫<EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
|
||||
if (string.IsNullOrEmpty(label_code))
|
||||
{
|
||||
throw Oops.Bah("请传标签号");
|
||||
throw Oops.Bah("<EFBFBD>봫<EFBFBD><EFBFBD>ǩ<EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
ISqlSugarClient db = _repository.AsSugarClient();
|
||||
@@ -285,9 +285,9 @@ namespace Tnb.ProductionMgr
|
||||
try
|
||||
{
|
||||
equipment = await db.Queryable<EqpEquipment>()
|
||||
.LeftJoin<EqpDaq>((x,y)=>x.id==y.equip_id)
|
||||
.Where((x,y) => y.equip_code==equip_code && y.label_name==label_code && y.label_point=="注塑空满箱请求")
|
||||
.Select((x,y)=>x)
|
||||
.LeftJoin<EqpDaq>((x, y) => x.id == y.equip_id)
|
||||
.Where((x, y) => y.equip_code == equip_code && y.label_name == label_code && y.label_point == "ע<EFBFBD>ܿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||
.Select((x, y) => x)
|
||||
.FirstAsync();
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -297,18 +297,18 @@ namespace Tnb.ProductionMgr
|
||||
}
|
||||
if (equipment == null)
|
||||
{
|
||||
throw Oops.Bah("未找到机台");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>̨");
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(equipment.as_location_id))
|
||||
{
|
||||
throw Oops.Bah("未找到入库库位");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
}
|
||||
|
||||
BasLocation basLocation = await db.Queryable<BasLocation>().SingleAsync(x => x.id == equipment.as_location_id);
|
||||
if (basLocation == null)
|
||||
{
|
||||
throw Oops.Bah("未找到入库库位");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
}
|
||||
|
||||
PrdReport prdReport = await db.Queryable<PrdReport>()
|
||||
@@ -319,7 +319,7 @@ namespace Tnb.ProductionMgr
|
||||
string org_id = user.OrganizeId;
|
||||
if (prdReport == null)
|
||||
{
|
||||
throw Oops.Bah("未找到提报记录");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD>ᱨ<EFBFBD><EFBFBD>¼");
|
||||
}
|
||||
|
||||
|
||||
@@ -423,18 +423,18 @@ namespace Tnb.ProductionMgr
|
||||
{
|
||||
_ = await db.Insertable<PrdInstockD>(prdInstockDs).ExecuteCommandAsync();
|
||||
}
|
||||
//todo 入库申请后是否修改提报记录状态
|
||||
//todo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱨ<EFBFBD><EFBFBD>¼״̬
|
||||
});
|
||||
}
|
||||
|
||||
return !result2.IsSuccess ? string.IsNullOrEmpty(result2.ErrorMessage) ? throw Oops.Oh(ErrorCode.COM1008) : throw Oops.Bah(result2.ErrorMessage) : "成功" ;
|
||||
return !result2.IsSuccess ? string.IsNullOrEmpty(result2.ErrorMessage) ? throw Oops.Oh(ErrorCode.COM1008) : throw Oops.Bah(result2.ErrorMessage) : "<EFBFBD>ɹ<EFBFBD>";
|
||||
}
|
||||
|
||||
// [HttpPost]
|
||||
// public async Task<string> InstockTubeOne(PrdReport prdReport)
|
||||
// {
|
||||
// ISqlSugarClient db = _repository.AsSugarClient();
|
||||
// string location_code = "ZCR01";//todo 短管挤出件目标库位之后改
|
||||
// string location_code = "ZCR01";//todo <EFBFBD>̹ܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// string warehouse_id = "2";
|
||||
//
|
||||
// PrdInstockH? prdInstockH = null;
|
||||
@@ -539,8 +539,8 @@ namespace Tnb.ProductionMgr
|
||||
//
|
||||
// return result2.IsSuccess ? "true" : "false";
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public async Task<string> InstockTubeOne(InstockInput input)
|
||||
{
|
||||
@@ -548,16 +548,16 @@ namespace Tnb.ProductionMgr
|
||||
string label_code = input.label_code;
|
||||
if (string.IsNullOrEmpty(equip_code))
|
||||
{
|
||||
throw Oops.Bah("请传机台号");
|
||||
throw Oops.Bah("<EFBFBD>봫<EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
|
||||
if (string.IsNullOrEmpty(label_code))
|
||||
{
|
||||
throw Oops.Bah("请传标签号");
|
||||
throw Oops.Bah("<EFBFBD>봫<EFBFBD><EFBFBD>ǩ<EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
|
||||
ISqlSugarClient db = _repository.AsSugarClient();
|
||||
// string location_code = "ZCR01";//todo 短管挤出件目标库位之后改
|
||||
// string location_code = "ZCR01";//todo <EFBFBD>̹ܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
string warehouse_id = "2";
|
||||
|
||||
PrdInstockH? prdInstockH = null;
|
||||
@@ -567,9 +567,9 @@ namespace Tnb.ProductionMgr
|
||||
try
|
||||
{
|
||||
equipment = await db.Queryable<EqpEquipment>()
|
||||
.LeftJoin<EqpDaq>((x,y)=>x.id==y.equip_id)
|
||||
.Where((x,y) => y.equip_code==equip_code && y.label_name==label_code && y.label_point=="挤出空满箱请求")
|
||||
.Select((x,y)=>x)
|
||||
.LeftJoin<EqpDaq>((x, y) => x.id == y.equip_id)
|
||||
.Where((x, y) => y.equip_code == equip_code && y.label_name == label_code && y.label_point == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||
.Select((x, y) => x)
|
||||
.FirstAsync();
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -579,27 +579,27 @@ namespace Tnb.ProductionMgr
|
||||
}
|
||||
if (equipment == null)
|
||||
{
|
||||
throw Oops.Bah("未找到机台");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>̨");
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(equipment.as_location_id))
|
||||
{
|
||||
throw Oops.Bah("未找到入库库位");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
}
|
||||
|
||||
BasLocation basLocation = await db.Queryable<BasLocation>().SingleAsync(x => x.id == equipment.as_location_id);
|
||||
if (basLocation == null)
|
||||
{
|
||||
throw Oops.Bah("未找到入库库位");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
}
|
||||
|
||||
string location_code = basLocation.location_code;
|
||||
|
||||
|
||||
PrdReport prdReport = await db.Queryable<PrdReport>()
|
||||
.LeftJoin<BasMaterial>((x,y)=>x.material_id==y.id)
|
||||
.Where((x,y) => y.category_id.Contains("\"DGJCJ\"") && x.status == 0).OrderByDescending(x => x.create_time)
|
||||
.LeftJoin<BasMaterial>((x, y) => x.material_id == y.id)
|
||||
.Where((x, y) => y.category_id.Contains("\"DGJCJ\"") && x.status == 0).OrderByDescending(x => x.create_time)
|
||||
.FirstAsync();
|
||||
|
||||
|
||||
BasMaterial basMaterial = await db.Queryable<BasMaterial>().SingleAsync(x => x.id == prdReport.material_id);
|
||||
string create_id = prdReport.create_id;
|
||||
UserEntity user = await db.Queryable<UserEntity>().SingleAsync(x => x.Id == create_id);
|
||||
@@ -609,7 +609,7 @@ namespace Tnb.ProductionMgr
|
||||
OrganizeEntity workline = await _organizeService.GetAnyParentByWorkstationId(prdReport.station, DictConst.RegionCategoryWorklineCode);
|
||||
OrganizeEntity workshop = await _organizeService.GetAnyParentByWorkstationId(prdReport.station, DictConst.RegionCategoryWorkshopCode);
|
||||
string code = await _billRuleService.GetBillNumber(CodeTemplateConst.PRDINSTOCK_CODE);
|
||||
|
||||
|
||||
prdInstockH = new PrdInstockH()
|
||||
{
|
||||
code = code,
|
||||
@@ -702,11 +702,11 @@ namespace Tnb.ProductionMgr
|
||||
});
|
||||
}
|
||||
|
||||
return !result2.IsSuccess ? string.IsNullOrEmpty(result2.ErrorMessage) ? throw Oops.Oh(ErrorCode.COM1008) : throw Oops.Bah(result2.ErrorMessage) : "成功" ;
|
||||
return !result2.IsSuccess ? string.IsNullOrEmpty(result2.ErrorMessage) ? throw Oops.Oh(ErrorCode.COM1008) : throw Oops.Bah(result2.ErrorMessage) : "<EFBFBD>ɹ<EFBFBD>";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 长管管挤出入库申请
|
||||
/// <EFBFBD><EFBFBD><EFBFBD>ܹܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
@@ -714,7 +714,7 @@ namespace Tnb.ProductionMgr
|
||||
{
|
||||
ISqlSugarClient db = _repository.AsSugarClient();
|
||||
string location_code = prdReport.location_code;
|
||||
string warehouse_id = "27209786980373";//长件挤出缓存仓
|
||||
string warehouse_id = "27209786980373";//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
PrdInstockH? prdInstockH = null;
|
||||
List<PrdInstockD> prdInstockDs = new() { };
|
||||
@@ -818,11 +818,11 @@ namespace Tnb.ProductionMgr
|
||||
});
|
||||
}
|
||||
|
||||
return !result2.IsSuccess ? string.IsNullOrEmpty(result2.ErrorMessage) ? throw Oops.Oh(ErrorCode.COM1008) : throw Oops.Bah(result2.ErrorMessage) : "成功" ;
|
||||
return !result2.IsSuccess ? string.IsNullOrEmpty(result2.ErrorMessage) ? throw Oops.Oh(ErrorCode.COM1008) : throw Oops.Bah(result2.ErrorMessage) : "<EFBFBD>ɹ<EFBFBD>";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 外包装入库申请
|
||||
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
@@ -830,70 +830,70 @@ namespace Tnb.ProductionMgr
|
||||
{
|
||||
string equip_code = input.equip_code;
|
||||
string label_code = input.label_code;
|
||||
string warehouse_id = "26103367464997";//四楼解析库
|
||||
string warehouse_id = "26103367464997";//<EFBFBD><EFBFBD>¥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (!string.IsNullOrEmpty(equip_code))
|
||||
{
|
||||
throw Oops.Bah("请传机台号");
|
||||
throw Oops.Bah("<EFBFBD>봫<EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(label_code))
|
||||
{
|
||||
throw Oops.Bah("请传标签号");
|
||||
throw Oops.Bah("<EFBFBD>봫<EFBFBD><EFBFBD>ǩ<EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
ISqlSugarClient db = _repository.AsSugarClient();
|
||||
EqpEquipment equipment = await db.Queryable<EqpEquipment>()
|
||||
.LeftJoin<EqpDaq>((x,y)=>x.id==y.equip_id)
|
||||
.Where((x,y) => y.equip_code==equip_code && y.label_name==label_code && y.label_point=="外包装成品码垛点位")
|
||||
.Select((x,y)=>x)
|
||||
.LeftJoin<EqpDaq>((x, y) => x.id == y.equip_id)
|
||||
.Where((x, y) => y.equip_code == equip_code && y.label_name == label_code && y.label_point == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ")
|
||||
.Select((x, y) => x)
|
||||
.FirstAsync();
|
||||
|
||||
|
||||
|
||||
if (equipment == null)
|
||||
{
|
||||
throw Oops.Bah("未找到机台");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>̨");
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(equipment.as_location_id))
|
||||
{
|
||||
throw Oops.Bah("未找到入库库位");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
}
|
||||
|
||||
BasLocation basLocation = await db.Queryable<BasLocation>().SingleAsync(x => x.id == equipment.as_location_id);
|
||||
if (basLocation == null)
|
||||
{
|
||||
throw Oops.Bah("未找到入库库位");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
}
|
||||
|
||||
|
||||
OrganizeEntity station = await db.Queryable<OrganizeEntity>()
|
||||
.LeftJoin<OrganizeRelationEntity>((x, y) => x.Id == y.OrganizeId)
|
||||
.Where((x, y) => y.ObjectType == "Eqp" && y.ObjectId == equipment.id).FirstAsync();
|
||||
|
||||
if (station == null)
|
||||
{
|
||||
throw Oops.Bah("未找到工位");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
}
|
||||
|
||||
PrdOutPacking prdOutPacking = await db.Queryable<PrdOutPacking>().Where(x=>x.station_id==station.Id && x.status=="0").OrderByDescending(x=>x.create_time).FirstAsync();
|
||||
|
||||
PrdOutPacking prdOutPacking = await db.Queryable<PrdOutPacking>().Where(x => x.station_id == station.Id && x.status == "0").OrderByDescending(x => x.create_time).FirstAsync();
|
||||
if (prdOutPacking == null)
|
||||
{
|
||||
throw Oops.Bah("未找到托盘");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
var prdOutPackMarkLabelList = await db.Queryable<PrdOutPackMarkLabel>().Where(x=>x.station_id==station.Id && x.status=="1").ToListAsync();
|
||||
|
||||
var prdOutPackMarkLabelList = await db.Queryable<PrdOutPackMarkLabel>().Where(x => x.station_id == station.Id && x.status == "1").ToListAsync();
|
||||
if (prdOutPackMarkLabelList == null || prdOutPackMarkLabelList.Count <= 0)
|
||||
{
|
||||
throw Oops.Bah("未找到提报记录");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD>ᱨ<EFBFBD><EFBFBD>¼");
|
||||
}
|
||||
|
||||
List<string> reportIds = prdOutPackMarkLabelList.Select(x => x.report_id).ToList();
|
||||
|
||||
List<PrdReport> prdReports = await db.Queryable<PrdReport>().Where(x => reportIds.Contains(x.id)).ToListAsync();
|
||||
List<PrdReport> prdReports = await db.Queryable<PrdReport>().Where(x => reportIds.Contains(x.id)).ToListAsync();
|
||||
|
||||
|
||||
if (prdReports == null || prdReports.Count<=0)
|
||||
|
||||
if (prdReports == null || prdReports.Count <= 0)
|
||||
{
|
||||
throw Oops.Bah("未找到提报记录");
|
||||
throw Oops.Bah("δ<EFBFBD>ҵ<EFBFBD><EFBFBD>ᱨ<EFBFBD><EFBFBD>¼");
|
||||
}
|
||||
string create_id = prdReports[0].create_id;
|
||||
UserEntity user = await db.Queryable<UserEntity>().SingleAsync(x => x.Id == create_id);
|
||||
@@ -910,7 +910,7 @@ namespace Tnb.ProductionMgr
|
||||
OrganizeEntity workline = await _organizeService.GetAnyParentByWorkstationId(station.Id, DictConst.RegionCategoryWorklineCode);
|
||||
OrganizeEntity workshop = await _organizeService.GetAnyParentByWorkstationId(station.Id, DictConst.RegionCategoryWorkshopCode);
|
||||
string code = await _billRuleService.GetBillNumber(CodeTemplateConst.PRDINSTOCK_CODE);
|
||||
|
||||
|
||||
prdInstockH = new PrdInstockH()
|
||||
{
|
||||
code = code,
|
||||
@@ -1012,12 +1012,12 @@ namespace Tnb.ProductionMgr
|
||||
await db.Updateable<PrdOutPackMarkLabel>()
|
||||
.SetColumns(x => x.status == "2")
|
||||
.Where(x => x.station_id == station.Id && x.status == "1").ExecuteCommandAsync();
|
||||
|
||||
//todo 入库申请后是否修改提报记录状态
|
||||
|
||||
//todo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱨ<EFBFBD><EFBFBD>¼״̬
|
||||
});
|
||||
}
|
||||
|
||||
return !result2.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result2.IsSuccess ? "申请成功" : result2.ErrorMessage);
|
||||
return !result2.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result2.IsSuccess ? "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>" : result2.ErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,14 +21,15 @@ using Tnb.BasicData;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.BasicData.Entities.Dto;
|
||||
using Tnb.EquipMgr.Entities;
|
||||
using Tnb.PerMgr.Entities;
|
||||
using Tnb.ProductionMgr.Entities;
|
||||
using Tnb.ProductionMgr.Entities.Dto;
|
||||
using Tnb.ProductionMgr.Entities.Dto.PrdManage;
|
||||
using Tnb.ProductionMgr.Entities.Enums;
|
||||
using Tnb.ProductionMgr.Interfaces;
|
||||
// using Tnb.QcMgr.Entities;
|
||||
// using Tnb.QcMgr.Entities.Enums;
|
||||
// using Tnb.QcMgr.Interfaces;
|
||||
using Tnb.QcMgr.Entities;
|
||||
using Tnb.QcMgr.Entities.Enums;
|
||||
using Tnb.QcMgr.Interfaces;
|
||||
|
||||
// using Tnb.PerMgr.Entities;
|
||||
|
||||
@@ -53,7 +54,7 @@ namespace Tnb.ProductionMgr
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IBillRullService _billRuleService;
|
||||
private readonly IPrdInstockService _prdInstockService;
|
||||
// private readonly IQcCheckPlanService _qcCheckPlanService;
|
||||
private readonly IQcCheckPlanService _qcCheckPlanService;
|
||||
|
||||
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
|
||||
public PrdMoTaskService(
|
||||
@@ -63,8 +64,8 @@ namespace Tnb.ProductionMgr
|
||||
IRunService runService,
|
||||
IBillRullService billRullService,
|
||||
IPrdInstockService prdInstockService,
|
||||
// IQcCheckPlanService qcCheckPlanService,
|
||||
IVisualDevService visualDevService
|
||||
IVisualDevService visualDevService,
|
||||
IQcCheckPlanService qcCheckPlanService
|
||||
)
|
||||
{
|
||||
_repository = repository;
|
||||
@@ -77,7 +78,7 @@ namespace Tnb.ProductionMgr
|
||||
OverideFuncs.GetListAsync = GetList;
|
||||
_billRuleService = billRullService;
|
||||
_prdInstockService = prdInstockService;
|
||||
// _qcCheckPlanService = qcCheckPlanService;
|
||||
_qcCheckPlanService = qcCheckPlanService;
|
||||
}
|
||||
|
||||
#region Get
|
||||
@@ -383,7 +384,7 @@ namespace Tnb.ProductionMgr
|
||||
estimated_end_date = a.estimated_end_date == null ? null : a.estimated_end_date.Value.ToString(DbTimeFormat.SS),
|
||||
bom_id = d.id,
|
||||
bom_version = d.version,
|
||||
create_time = a.create_time == null ? "" : a.create_time.Value.ToString(DbTimeFormat.SS)
|
||||
create_time = a.create_time==null ? "" : a.create_time.Value.ToString(DbTimeFormat.SS)
|
||||
})
|
||||
.Mapper(it => it.mo_task_status = dic.ContainsKey(it.mo_task_status) ? dic[it.mo_task_status].ToString()! : "")
|
||||
.ToListAsync();
|
||||
@@ -701,14 +702,14 @@ namespace Tnb.ProductionMgr
|
||||
row = await db.Insertable(moTask).ExecuteCommandAsync();
|
||||
#region 质检模块
|
||||
//质检
|
||||
// TriggerPlanEntity entity = new()
|
||||
// {
|
||||
// materialid = moTask.material_id,
|
||||
// processid = moTask.process_id,
|
||||
// workid = moTask.workstation_id,
|
||||
// triggerevent = EnumTriggerEvent.首件检新的生产任务
|
||||
// };
|
||||
// await _qcCheckPlanService.CreateTask(entity);
|
||||
TriggerPlanEntity entity = new()
|
||||
{
|
||||
materialid = moTask.material_id,
|
||||
processid = moTask.process_id,
|
||||
workid = moTask.workstation_id,
|
||||
triggerevent = EnumTriggerEvent.首件检新的生产任务
|
||||
};
|
||||
await _qcCheckPlanService.CreateTask(entity);
|
||||
#endregion
|
||||
//根据工单号获取当前工单包含的已排产数
|
||||
int? schedQty = db.Queryable<PrdMoTask>().Where(it => it.mo_id == input.mo_id)?.Sum(d => d.scheduled_qty);
|
||||
@@ -842,14 +843,14 @@ namespace Tnb.ProductionMgr
|
||||
row = await _db.Insertable(moTask).ExecuteCommandAsync();
|
||||
#region 质检模块
|
||||
//质检
|
||||
// TriggerPlanEntity entity = new()
|
||||
// {
|
||||
// materialid = moTask.material_id,
|
||||
// processid = moTask.process_id,
|
||||
// workid = moTask.workstation_id,
|
||||
// triggerevent = EnumTriggerEvent.首件检新的生产任务
|
||||
// };
|
||||
// await _qcCheckPlanService.CreateTask(entity);
|
||||
TriggerPlanEntity entity = new()
|
||||
{
|
||||
materialid = moTask.material_id,
|
||||
processid = moTask.process_id,
|
||||
workid = moTask.workstation_id,
|
||||
triggerevent = EnumTriggerEvent.首件检新的生产任务
|
||||
};
|
||||
await _qcCheckPlanService.CreateTask(entity);
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -1086,20 +1087,20 @@ namespace Tnb.ProductionMgr
|
||||
{
|
||||
#region 质检模块
|
||||
//质检
|
||||
// if (prdTaskList.Where(p => p.mo_task_status == "Pause").Count() > 0 && status == "InProgress")
|
||||
// {
|
||||
// foreach (PrdMoTask? task in prdTaskList.Where(p => p.mo_task_status == "Pause").ToList())
|
||||
// {
|
||||
// TriggerPlanEntity entity = new()
|
||||
// {
|
||||
// materialid = task.material_id,
|
||||
// processid = task.process_id,
|
||||
// workid = task.workstation_id,
|
||||
// triggerevent = EnumTriggerEvent.首件检生产任务暂停
|
||||
// };
|
||||
// await _qcCheckPlanService.CreateTask(entity);
|
||||
// }
|
||||
// }
|
||||
if (prdTaskList.Where(p => p.mo_task_status == "Pause").Count() > 0 && status == "InProgress")
|
||||
{
|
||||
foreach (PrdMoTask? task in prdTaskList.Where(p => p.mo_task_status == "Pause").ToList())
|
||||
{
|
||||
TriggerPlanEntity entity = new()
|
||||
{
|
||||
materialid = task.material_id,
|
||||
processid = task.process_id,
|
||||
workid = task.workstation_id,
|
||||
triggerevent = EnumTriggerEvent.首件检生产任务暂停
|
||||
};
|
||||
await _qcCheckPlanService.CreateTask(entity);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
foreach (PrdMoTask item in prdTaskList)
|
||||
@@ -1502,13 +1503,13 @@ namespace Tnb.ProductionMgr
|
||||
{
|
||||
throw Oops.Bah("载具不能为空");
|
||||
}
|
||||
|
||||
|
||||
if (string.IsNullOrEmpty((input.location_code)))
|
||||
{
|
||||
throw Oops.Bah("入库库位不能为空");
|
||||
}
|
||||
|
||||
if (input.reported_qty <= 0)
|
||||
|
||||
if (input.reported_qty<=0)
|
||||
{
|
||||
throw Oops.Bah("提报数量为正数");
|
||||
}
|
||||
@@ -1535,18 +1536,18 @@ namespace Tnb.ProductionMgr
|
||||
|
||||
#region 质检模块
|
||||
//质检模块
|
||||
// TriggerPlanEntity entity = new()
|
||||
// {
|
||||
// materialid = prdMoTask.material_id,
|
||||
// processid = prdMoTask.process_id,
|
||||
// workid = prdMoTask.workstation_id
|
||||
// };
|
||||
// int? reported = prdMoTask.reported_work_qty == null ? 0 : prdMoTask.reported_work_qty;
|
||||
// int? scrap = prdMoTask.scrap_qty == null ? 0 : prdMoTask.scrap_qty;
|
||||
// entity.oldpronum = reported + scrap;
|
||||
// entity.newpronum = input.reported_qty;
|
||||
// entity.triggerevent = EnumTriggerEvent.生产检定量;
|
||||
// await _qcCheckPlanService.CreateTask(entity);
|
||||
TriggerPlanEntity entity = new()
|
||||
{
|
||||
materialid = prdMoTask.material_id,
|
||||
processid = prdMoTask.process_id,
|
||||
workid = prdMoTask.workstation_id
|
||||
};
|
||||
int? reported = prdMoTask.reported_work_qty == null ? 0 : prdMoTask.reported_work_qty;
|
||||
int? scrap = prdMoTask.scrap_qty == null ? 0 : prdMoTask.scrap_qty;
|
||||
entity.oldpronum = reported + scrap;
|
||||
entity.newpronum = input.reported_qty;
|
||||
entity.triggerevent = EnumTriggerEvent.生产检定量;
|
||||
await _qcCheckPlanService.CreateTask(entity);
|
||||
#endregion
|
||||
_ = prdMoTask.reported_work_qty == null
|
||||
? await db.Updateable<PrdMoTask>()
|
||||
@@ -1578,24 +1579,24 @@ namespace Tnb.ProductionMgr
|
||||
.SetColumns(x => x.complete_qty == x.complete_qty + input.reported_qty)
|
||||
.Where(x => x.id == prdMo.id).ExecuteCommandAsync();
|
||||
|
||||
// PerProcessStandardsH processStandardsH = await db.Queryable<PerProcessStandardsH>()
|
||||
// .Where(x => x.equip_id == prdMoTask.eqp_id && x.molds_id == prdMoTask.mold_id &&
|
||||
// x.output_material_id == prdMoTask.material_id && x.enabled == 1)
|
||||
// .OrderByDescending(x => x.create_time).FirstAsync();
|
||||
PerProcessStandardsH processStandardsH = await db.Queryable<PerProcessStandardsH>()
|
||||
.Where(x => x.equip_id == prdMoTask.eqp_id && x.molds_id == prdMoTask.mold_id &&
|
||||
x.output_material_id == prdMoTask.material_id && x.enabled == 1)
|
||||
.OrderByDescending(x => x.create_time).FirstAsync();
|
||||
|
||||
// ToolMolds toolMolds = await db.Queryable<ToolMolds>().SingleAsync(x => x.id == prdMoTask.mold_id);
|
||||
// if (toolMolds != null && toolMolds?.mold_cavity > 0 && processStandardsH != null &&
|
||||
// processStandardsH?.moulding_cycle > 0)
|
||||
// {
|
||||
// decimal? addTime = ((((prdMoTask.scheduled_qty - input.reported_qty - (prdMoTask.scrap_qty ?? 0)) * processStandardsH?.moulding_cycle) - 1) / toolMolds.mold_cavity) + 1;
|
||||
// if (prdMoTask.act_start_date != null && addTime != null && addTime > 0)
|
||||
// {
|
||||
// DateTime cal_plan_end_date = prdMoTask.act_start_date.Value.AddSeconds((double)addTime);
|
||||
// _ = await db.Updateable<PrdMoTask>()
|
||||
// .SetColumns(x => x.plan_end_date == cal_plan_end_date)
|
||||
// .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync();
|
||||
// }
|
||||
// }
|
||||
ToolMolds toolMolds = await db.Queryable<ToolMolds>().SingleAsync(x => x.id == prdMoTask.mold_id);
|
||||
if (toolMolds != null && toolMolds?.mold_cavity > 0 && processStandardsH != null &&
|
||||
processStandardsH?.moulding_cycle > 0)
|
||||
{
|
||||
decimal? addTime = ((((prdMoTask.scheduled_qty - input.reported_qty - (prdMoTask.scrap_qty ?? 0)) * processStandardsH?.moulding_cycle) - 1) / toolMolds.mold_cavity) + 1;
|
||||
if (prdMoTask.act_start_date != null && addTime != null && addTime > 0)
|
||||
{
|
||||
DateTime cal_plan_end_date = prdMoTask.act_start_date.Value.AddSeconds((double)addTime);
|
||||
_ = await db.Updateable<PrdMoTask>()
|
||||
.SetColumns(x => x.plan_end_date == cal_plan_end_date)
|
||||
.Where(x => x.id == input.mo_task_id).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (prdMoTask.schedule_type == 2 && !string.IsNullOrEmpty(prdMoTask.mbom_process_id))
|
||||
@@ -1751,7 +1752,7 @@ namespace Tnb.ProductionMgr
|
||||
// return resultMsg == "true" ? (dynamic)true : throw Oops.Bah(resultMsg);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
if (arr.Length > 0 && arr.Contains("CGJCJ"))//短管挤出件入库申请
|
||||
{
|
||||
string resultMsg = await _prdInstockService.InstockTubeThree(report);
|
||||
@@ -1830,18 +1831,18 @@ namespace Tnb.ProductionMgr
|
||||
#region 质检模块
|
||||
//质检模块
|
||||
|
||||
// TriggerPlanEntity entity = new()
|
||||
// {
|
||||
// materialid = prdMoTask.material_id,
|
||||
// processid = prdMoTask.process_id,
|
||||
// workid = prdMoTask.workstation_id
|
||||
// };
|
||||
// int? reported = prdMoTask.reported_work_qty == null ? 0 : prdMoTask.reported_work_qty;
|
||||
// int? scrap = prdMoTask.scrap_qty == null ? 0 : prdMoTask.scrap_qty;
|
||||
// entity.oldpronum = reported + scrap;
|
||||
// entity.newpronum = input.scrap_qty;
|
||||
// entity.triggerevent = EnumTriggerEvent.生产检定量;
|
||||
// await _qcCheckPlanService.CreateTask(entity);
|
||||
TriggerPlanEntity entity = new()
|
||||
{
|
||||
materialid = prdMoTask.material_id,
|
||||
processid = prdMoTask.process_id,
|
||||
workid = prdMoTask.workstation_id
|
||||
};
|
||||
int? reported = prdMoTask.reported_work_qty == null ? 0 : prdMoTask.reported_work_qty;
|
||||
int? scrap = prdMoTask.scrap_qty == null ? 0 : prdMoTask.scrap_qty;
|
||||
entity.oldpronum = reported + scrap;
|
||||
entity.newpronum = input.scrap_qty;
|
||||
entity.triggerevent = EnumTriggerEvent.生产检定量;
|
||||
await _qcCheckPlanService.CreateTask(entity);
|
||||
#endregion
|
||||
_ = await db.Updateable<PrdMoTask>().SetColumns(it => new PrdMoTask { scrap_qty = scrapQty.Value }).Where(it => it.id == input.mo_task_id).ExecuteCommandAsync();
|
||||
}
|
||||
@@ -1878,24 +1879,24 @@ namespace Tnb.ProductionMgr
|
||||
|
||||
if (prdMoTask.schedule_type == 1)
|
||||
{
|
||||
// PerProcessStandardsH processStandardsH = await db.Queryable<PerProcessStandardsH>()
|
||||
// .Where(x => x.equip_id == prdMoTask.eqp_id && x.molds_id == prdMoTask.mold_id &&
|
||||
// x.output_material_id == prdMoTask.material_id && x.enabled == 1)
|
||||
// .OrderByDescending(x => x.create_time).FirstAsync();
|
||||
//
|
||||
// ToolMolds toolMolds = await db.Queryable<ToolMolds>().SingleAsync(x => x.id == prdMoTask.mold_id);
|
||||
// if (toolMolds != null && toolMolds?.mold_cavity > 0 && processStandardsH != null &&
|
||||
// processStandardsH?.moulding_cycle > 0)
|
||||
// {
|
||||
// decimal? addTime = ((((prdMoTask.scheduled_qty - prdMoTask.reported_work_qty - input.scrap_qty) * processStandardsH?.moulding_cycle) - 1) / toolMolds.mold_cavity) + 1;
|
||||
// if (prdMoTask.act_start_date != null && addTime != null && addTime > 0)
|
||||
// {
|
||||
// DateTime cal_plan_end_date = prdMoTask.act_start_date.Value.AddSeconds((double)addTime);
|
||||
// _ = await db.Updateable<PrdMoTask>()
|
||||
// .SetColumns(x => x.plan_end_date == cal_plan_end_date)
|
||||
// .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync();
|
||||
// }
|
||||
// }
|
||||
PerProcessStandardsH processStandardsH = await db.Queryable<PerProcessStandardsH>()
|
||||
.Where(x => x.equip_id == prdMoTask.eqp_id && x.molds_id == prdMoTask.mold_id &&
|
||||
x.output_material_id == prdMoTask.material_id && x.enabled == 1)
|
||||
.OrderByDescending(x => x.create_time).FirstAsync();
|
||||
|
||||
ToolMolds toolMolds = await db.Queryable<ToolMolds>().SingleAsync(x => x.id == prdMoTask.mold_id);
|
||||
if (toolMolds != null && toolMolds?.mold_cavity > 0 && processStandardsH != null &&
|
||||
processStandardsH?.moulding_cycle > 0)
|
||||
{
|
||||
decimal? addTime = ((((prdMoTask.scheduled_qty - prdMoTask.reported_work_qty - input.scrap_qty) * processStandardsH?.moulding_cycle) - 1) / toolMolds.mold_cavity) + 1;
|
||||
if (prdMoTask.act_start_date != null && addTime != null && addTime > 0)
|
||||
{
|
||||
DateTime cal_plan_end_date = prdMoTask.act_start_date.Value.AddSeconds((double)addTime);
|
||||
_ = await db.Updateable<PrdMoTask>()
|
||||
.SetColumns(x => x.plan_end_date == cal_plan_end_date)
|
||||
.Where(x => x.id == input.mo_task_id).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2178,53 +2179,53 @@ namespace Tnb.ProductionMgr
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
// [HttpPost]
|
||||
// public async Task<dynamic> GetEstimatedEndTime(CountEstimatedEndTimeInput input)
|
||||
// {
|
||||
// ISqlSugarClient db = _repository.AsSugarClient();
|
||||
// if (input.type == 1)
|
||||
// {
|
||||
// PerProcessStandardsH processStandardsH = await db.Queryable<PerProcessStandardsH>()
|
||||
// .Where(x => x.equip_id == input.equip_id && x.molds_id == input.molds_id &&
|
||||
// x.output_material_id == input.material_id && x.enabled == 1)
|
||||
// .OrderByDescending(x => x.create_time).FirstAsync();
|
||||
//
|
||||
// ToolMolds toolMolds = await db.Queryable<ToolMolds>().SingleAsync(x => x.id == input.molds_id);
|
||||
// if (toolMolds == null)
|
||||
// {
|
||||
// throw Oops.Bah("没找到模具");
|
||||
// }
|
||||
//
|
||||
// if (toolMolds?.mold_cavity <= 0)
|
||||
// {
|
||||
// throw Oops.Bah("模穴数错误");
|
||||
// }
|
||||
//
|
||||
// if (processStandardsH == null)
|
||||
// {
|
||||
// throw Oops.Bah("工艺标准成型周期错误");
|
||||
// }
|
||||
//
|
||||
// if (processStandardsH?.moulding_cycle <= 0)
|
||||
// {
|
||||
// throw Oops.Bah("工艺标准成型周期错误");
|
||||
// }
|
||||
//
|
||||
// decimal? addTime = (((input.scheduled_qty * processStandardsH?.moulding_cycle) - 1) / toolMolds.mold_cavity) + 1;
|
||||
// return input.estimated_start_date.AddSeconds((double)addTime.Value).ToString("yyyy-MM-dd HH:mm:ss");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// List<BasStandardTime> list = await db.Queryable<BasMbomProcess>()
|
||||
// .LeftJoin<BasStandardTime>((a, b) => a.process_id == b.process_id && b.enabled == 1)
|
||||
// .Where((a, b) => a.mbom_id == input.mbom_id).Select((a, b) => b).ToListAsync();
|
||||
//
|
||||
// decimal max = list.Select(x => Convert.ToDecimal(x.standard_time)).Max(x => x);
|
||||
// decimal? addTime = input.scheduled_qty * max;
|
||||
// return input.estimated_start_date.AddSeconds((double)addTime.Value).ToString("yyyy-MM-dd HH:mm:ss");
|
||||
// }
|
||||
//
|
||||
// }
|
||||
[HttpPost]
|
||||
public async Task<dynamic> GetEstimatedEndTime(CountEstimatedEndTimeInput input)
|
||||
{
|
||||
ISqlSugarClient db = _repository.AsSugarClient();
|
||||
if (input.type == 1)
|
||||
{
|
||||
PerProcessStandardsH processStandardsH = await db.Queryable<PerProcessStandardsH>()
|
||||
.Where(x => x.equip_id == input.equip_id && x.molds_id == input.molds_id &&
|
||||
x.output_material_id == input.material_id && x.enabled == 1)
|
||||
.OrderByDescending(x => x.create_time).FirstAsync();
|
||||
|
||||
ToolMolds toolMolds = await db.Queryable<ToolMolds>().SingleAsync(x => x.id == input.molds_id);
|
||||
if (toolMolds == null)
|
||||
{
|
||||
throw Oops.Bah("没找到模具");
|
||||
}
|
||||
|
||||
if (toolMolds?.mold_cavity <= 0)
|
||||
{
|
||||
throw Oops.Bah("模穴数错误");
|
||||
}
|
||||
|
||||
if (processStandardsH == null)
|
||||
{
|
||||
throw Oops.Bah("工艺标准成型周期错误");
|
||||
}
|
||||
|
||||
if (processStandardsH?.moulding_cycle <= 0)
|
||||
{
|
||||
throw Oops.Bah("工艺标准成型周期错误");
|
||||
}
|
||||
|
||||
decimal? addTime = (((input.scheduled_qty * processStandardsH?.moulding_cycle) - 1) / toolMolds.mold_cavity) + 1;
|
||||
return input.estimated_start_date.AddSeconds((double)addTime.Value).ToString("yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
else
|
||||
{
|
||||
List<BasStandardTime> list = await db.Queryable<BasMbomProcess>()
|
||||
.LeftJoin<BasStandardTime>((a, b) => a.process_id == b.process_id && b.enabled == 1)
|
||||
.Where((a, b) => a.mbom_id == input.mbom_id).Select((a, b) => b).ToListAsync();
|
||||
|
||||
decimal max = list.Select(x => Convert.ToDecimal(x.standard_time)).Max(x => x);
|
||||
decimal? addTime = input.scheduled_qty * max;
|
||||
return input.estimated_start_date.AddSeconds((double)addTime.Value).ToString("yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -2765,7 +2766,7 @@ namespace Tnb.ProductionMgr
|
||||
|
||||
return prdMoTask;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 根据工位获取进行中待开工暂停的任务单信息
|
||||
/// </summary>
|
||||
@@ -2780,8 +2781,8 @@ namespace Tnb.ProductionMgr
|
||||
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)
|
||||
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)
|
||||
{
|
||||
@@ -2792,7 +2793,7 @@ namespace Tnb.ProductionMgr
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 外包装根据工位id获取喷码数据
|
||||
/// </summary>
|
||||
@@ -2808,7 +2809,7 @@ 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 == 0 && x.is_mark == null).AnyAsync())
|
||||
x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == 0 && x.is_mark==null).AnyAsync())
|
||||
{
|
||||
await _db.Updateable<PrdOutPackMarkLabel>()
|
||||
.SetColumns(x => x.is_mark == 0)
|
||||
@@ -2831,10 +2832,10 @@ namespace Tnb.ProductionMgr
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
string code = $"(01){basMaterial.di ?? ""}\\n(11){DateTime.Now.ToString("yyMMdd")}\\n(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}\\n(10){parent.batch ?? ""}";
|
||||
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x=>x.id==parent.material_id);
|
||||
|
||||
string code = $"(01){basMaterial.di ?? ""}\\n(11){DateTime.Now.ToString("yyMMdd")}\\n(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}\\n(10){parent.batch??""}";
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
@@ -2851,9 +2852,9 @@ namespace Tnb.ProductionMgr
|
||||
{ "station_id", input.station_id }
|
||||
});
|
||||
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())
|
||||
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)
|
||||
@@ -2874,12 +2875,12 @@ namespace Tnb.ProductionMgr
|
||||
|
||||
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);
|
||||
|
||||
string code = $"(01){basMaterial.di ?? ""}\\n(11){DateTime.Now.ToString("yyMMdd")}\\n(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}\\n(10){parent.batch ?? ""}";
|
||||
BasMaterial basMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x=>x.id==parent.material_id);
|
||||
|
||||
string code = $"(01){basMaterial.di ?? ""}\\n(11){DateTime.Now.ToString("yyMMdd")}\\n(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}\\n(10){parent.batch??""}";
|
||||
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace Tnb.ProductionMgr
|
||||
private readonly IBillRullService _billRullService;
|
||||
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
|
||||
|
||||
public PrdOutstockService(ISqlSugarRepository<PrdOutstockH> repository, IOrganizeService organizeService, IBillRullService billRullService,IRunService runService, IUserManager userManager, IVisualDevService visualDevService, IDictionaryDataService dictionaryDataService)
|
||||
public PrdOutstockService(ISqlSugarRepository<PrdOutstockH> repository, IOrganizeService organizeService, IBillRullService billRullService, IRunService runService, IUserManager userManager, IVisualDevService visualDevService, IDictionaryDataService dictionaryDataService)
|
||||
{
|
||||
_db = repository.AsSugarClient();
|
||||
_runService = runService;
|
||||
@@ -98,7 +98,7 @@ namespace Tnb.ProductionMgr
|
||||
string domain = _userManager.Domain;
|
||||
Dictionary<string, object> header = new()
|
||||
{
|
||||
["Authorization"] = App.HttpContext!=null ? App.HttpContext.Request.Headers["Authorization"] : ""
|
||||
["Authorization"] = App.HttpContext != null ? App.HttpContext.Request.Headers["Authorization"] : ""
|
||||
};
|
||||
string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_OUTSTOCK, JsonConvert.SerializeObject(input), header);
|
||||
Log.Information(sendResult);
|
||||
@@ -190,7 +190,7 @@ namespace Tnb.ProductionMgr
|
||||
string domain = _userManager.Domain;
|
||||
Dictionary<string, object> header = new()
|
||||
{
|
||||
["Authorization"] = App.HttpContext!=null ? App.HttpContext.Request.Headers["Authorization"] : ""
|
||||
["Authorization"] = App.HttpContext != null ? App.HttpContext.Request.Headers["Authorization"] : ""
|
||||
};
|
||||
string sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_OUTSTOCK, JsonConvert.SerializeObject(input), header);
|
||||
Log.Information(sendResult);
|
||||
@@ -266,12 +266,12 @@ namespace Tnb.ProductionMgr
|
||||
MESCreateOutstockInput input = new MESCreateOutstockInput();
|
||||
input.outstock = new MESWmsOutstockHInput();
|
||||
input.outstockDs = new List<MESWmsOutstockDInput>();
|
||||
|
||||
PrdMoTask prdMoTask = await db.Queryable<PrdMoTask>().SingleAsync(x=>x.id==materialOutstockInput.mo_task_id);
|
||||
BasLocation location = await db.Queryable<BasLocation>().Where(x=>x.location_code==materialOutstockInput.location_code).FirstAsync();
|
||||
|
||||
PrdMoTask prdMoTask = await db.Queryable<PrdMoTask>().SingleAsync(x => x.id == materialOutstockInput.mo_task_id);
|
||||
BasLocation location = await db.Queryable<BasLocation>().Where(x => x.location_code == materialOutstockInput.location_code).FirstAsync();
|
||||
if (location == null) throw Oops.Bah("未找到库位");
|
||||
string locationId = location.id;
|
||||
|
||||
|
||||
PrdOutstockH prdOutstockH = new()
|
||||
{
|
||||
bill_code = await _billRullService.GetBillNumber(CodeTemplateConst.PRDOUTSTOCK_CODE),
|
||||
@@ -287,17 +287,17 @@ namespace Tnb.ProductionMgr
|
||||
input.outstock.source_code = prdOutstockH.bill_code;
|
||||
input.outstock.source_id = prdOutstockH.id;
|
||||
OrganizeEntity workline = await _organizeService.GetAnyParentByWorkstationId(materialOutstockInput.workstation_id, DictConst.RegionCategoryWorklineCode);
|
||||
|
||||
|
||||
List<string> materialIds = materialOutstockInput.details.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>()
|
||||
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
|
||||
.Where((a, b, c) => materialIds.Contains(a.id))
|
||||
.Select((a, b, c) => new
|
||||
{
|
||||
key = a.id,
|
||||
value = c.Id
|
||||
value = c.Id
|
||||
})
|
||||
.ToDictionaryAsync(x => x.key, x => x.value);
|
||||
|
||||
@@ -306,18 +306,18 @@ namespace Tnb.ProductionMgr
|
||||
input.outstockDs.Add(new MESWmsOutstockDInput()
|
||||
{
|
||||
material_id = item.material_id,
|
||||
material_code = basMaterials.First(x=>x.id==item.material_id).code,
|
||||
material_code = basMaterials.First(x => x.id == item.material_id).code,
|
||||
pr_qty = item.num,
|
||||
unit_id = unitIdDic[item.material_id].ToString()
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
string domain = _userManager.Domain;
|
||||
Dictionary<string, object> header = new Dictionary<string, object>()
|
||||
{
|
||||
["Authorization"] = App.HttpContext!=null ? App.HttpContext.Request.Headers["Authorization"] : ""
|
||||
["Authorization"] = App.HttpContext != null ? App.HttpContext.Request.Headers["Authorization"] : ""
|
||||
};
|
||||
var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_OUTSTOCK,JsonConvert.SerializeObject(input),header);
|
||||
var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_OUTSTOCK, JsonConvert.SerializeObject(input), header);
|
||||
Log.Information(sendResult);
|
||||
|
||||
AuthResponse authResponse = JsonConvert.DeserializeObject<AuthResponse>(sendResult);
|
||||
@@ -346,16 +346,16 @@ namespace Tnb.ProductionMgr
|
||||
prdOutstockDs.Add(new PrdOutstockD()
|
||||
{
|
||||
material_id = item.material_id,
|
||||
material_code = basMaterials.First(x=>x.id==item.material_id).code,
|
||||
material_name = basMaterials.First(x=>x.id==item.material_id).name,
|
||||
material_code = basMaterials.First(x => x.id == item.material_id).code,
|
||||
material_name = basMaterials.First(x => x.id == item.material_id).name,
|
||||
pr_qty = item.num,
|
||||
unit_id = unitIdDic[item.material_id].ToString(),
|
||||
outstock_id = prdOutstockH.id,
|
||||
source_id = prdMoTask.mo_task_code
|
||||
});
|
||||
}
|
||||
|
||||
DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
|
||||
|
||||
DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
|
||||
{
|
||||
await _repository.InsertAsync(prdOutstockH);
|
||||
if (prdOutstockDs.Count > 0)
|
||||
@@ -379,5 +379,132 @@ namespace Tnb.ProductionMgr
|
||||
throw Oops.Bah(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public async Task<dynamic> MaterialOutstockTest(MaterialOutstockInput materialOutstockInput)
|
||||
{
|
||||
try
|
||||
{
|
||||
var db = _repository.AsSugarClient();
|
||||
string warehouse_id = "1";//一楼原材料仓
|
||||
|
||||
MESCreateOutstockInput input = new MESCreateOutstockInput();
|
||||
input.outstock = new MESWmsOutstockHInput();
|
||||
input.outstockDs = new List<MESWmsOutstockDInput>();
|
||||
|
||||
BasLocation location = await db.Queryable<BasLocation>().Where(x => x.location_code == materialOutstockInput.location_code).FirstAsync();
|
||||
if (location == null) throw new AppFriendlyException("未找到库位", 500);
|
||||
string locationId = location.id;
|
||||
|
||||
PrdOutstockH prdOutstockH = new()
|
||||
{
|
||||
bill_code = await _billRullService.GetBillNumber(CodeTemplateConst.PRDOUTSTOCK_CODE),
|
||||
};
|
||||
|
||||
input.outstock.bill_type = DictConst.SHENGCHANLINGLIAO;
|
||||
// input.outstock.bill_date = visualDevModelDataCrInput.data.ContainsKey("bill_date") ? Convert.ToDateTime(visualDevModelDataCrInput.data["bill_date"].ToString()) : DateTime.Now;
|
||||
input.outstock.bill_date = DateTime.Now;
|
||||
input.outstock.org_id = _userManager.GetUserInfo().Result.organizeId;
|
||||
input.outstock.warehouse_id = warehouse_id;
|
||||
input.outstock.create_id = _userManager.UserId;
|
||||
input.outstock.location_code = location?.location_code ?? "";
|
||||
input.outstock.source_code = prdOutstockH.bill_code;
|
||||
input.outstock.source_id = prdOutstockH.id;
|
||||
OrganizeEntity workline = await _organizeService.GetAnyParentByWorkstationId(materialOutstockInput.workstation_id, DictConst.RegionCategoryWorklineCode);
|
||||
|
||||
List<string> materialIds = materialOutstockInput.details.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);
|
||||
|
||||
foreach (var item in materialOutstockInput.details)
|
||||
{
|
||||
input.outstockDs.Add(new MESWmsOutstockDInput()
|
||||
{
|
||||
material_id = item.material_id,
|
||||
material_code = basMaterials.First(x => x.id == item.material_id).code,
|
||||
pr_qty = item.num,
|
||||
unit_id = unitIdDic[item.material_id].ToString()
|
||||
});
|
||||
}
|
||||
|
||||
string domain = _userManager.Domain;
|
||||
Dictionary<string, object> header = new Dictionary<string, object>()
|
||||
{
|
||||
["Authorization"] = App.HttpContext != null ? App.HttpContext.Request.Headers["Authorization"] : ""
|
||||
};
|
||||
var sendResult = HttpUtils.RequestPost(domain + WebApiConst.MES_CREATE_OUTSTOCK, JsonConvert.SerializeObject(input), header);
|
||||
Log.Information(sendResult);
|
||||
|
||||
AuthResponse authResponse = JsonConvert.DeserializeObject<AuthResponse>(sendResult);
|
||||
if (authResponse.code != 200)
|
||||
{
|
||||
throw new AppFriendlyException(authResponse.msg, 500);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
prdOutstockH.bill_type = DictConst.SHENGCHANLINGLIAO;
|
||||
prdOutstockH.type = "2";
|
||||
prdOutstockH.warehouse_id = warehouse_id;
|
||||
prdOutstockH.location_code = materialOutstockInput.location_code;
|
||||
prdOutstockH.create_id = _userManager.UserId;
|
||||
prdOutstockH.org_id = _userManager.GetUserInfo().Result.organizeId;
|
||||
prdOutstockH.bill_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
prdOutstockH.create_time = DateTime.Now;
|
||||
prdOutstockH.workstation_id = materialOutstockInput.workstation_id;
|
||||
prdOutstockH.workline = workline?.Id ?? "";
|
||||
prdOutstockH.status = DictConst.OUTSTOCKSTATUSADD;
|
||||
prdOutstockH.mo_task_id = "";
|
||||
|
||||
List<PrdOutstockD> prdOutstockDs = new List<PrdOutstockD>();
|
||||
foreach (var item in materialOutstockInput.details)
|
||||
{
|
||||
prdOutstockDs.Add(new PrdOutstockD()
|
||||
{
|
||||
material_id = item.material_id,
|
||||
material_code = basMaterials.First(x => x.id == item.material_id).code,
|
||||
material_name = basMaterials.First(x => x.id == item.material_id).name,
|
||||
pr_qty = item.num,
|
||||
unit_id = unitIdDic[item.material_id].ToString(),
|
||||
outstock_id = prdOutstockH.id,
|
||||
source_id = ""
|
||||
});
|
||||
}
|
||||
|
||||
DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
|
||||
{
|
||||
await _repository.InsertAsync(prdOutstockH);
|
||||
if (prdOutstockDs.Count > 0)
|
||||
{
|
||||
await db.Insertable<PrdOutstockD>(prdOutstockDs).ExecuteCommandAsync();
|
||||
}
|
||||
});
|
||||
|
||||
if (!result.IsSuccess)
|
||||
{
|
||||
throw new AppFriendlyException(result.ErrorMessage, 500);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error(e.Message);
|
||||
throw new AppFriendlyException(e.Message, 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ using SqlSugar;
|
||||
using Tnb.BasicData;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.EquipMgr.Entities;
|
||||
using Tnb.PerMgr.Entities;
|
||||
using Tnb.ProductionMgr.Entities;
|
||||
using Tnb.ProductionMgr.Entities.Dto.PrdManage;
|
||||
using Tnb.ProductionMgr.Entities.Entity;
|
||||
@@ -361,122 +362,122 @@ namespace Tnb.ProductionMgr
|
||||
return PageResult<PADPackageTaskPageOutput>.SqlSugarPageResult(result);
|
||||
}
|
||||
|
||||
// /// <summary>
|
||||
// /// pda端根据工位获取任务单列表
|
||||
// /// </summary>
|
||||
// /// <returns></returns>
|
||||
// [HttpPost]
|
||||
// public async Task<dynamic> GetPadPrdMoTaskList(PrdMoTaskListOutput input)
|
||||
// {
|
||||
// if (string.IsNullOrEmpty(input.stationId))
|
||||
// {
|
||||
// return new
|
||||
// {
|
||||
// pagination = new PageResult(),
|
||||
// list = Array.Empty<string>()
|
||||
// };
|
||||
// }
|
||||
//
|
||||
// Dictionary<string, object> queryJson = string.IsNullOrEmpty(input.queryJson) ? new Dictionary<string, object>() : input.queryJson.ToObject<Dictionary<string, object>>();
|
||||
// string? mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : "";
|
||||
// string? status = queryJson.ContainsKey("status") ? queryJson["status"].ToString() : "";
|
||||
// DateTime? start_time = queryJson.ContainsKey("start_time") ? queryJson["start_time"].ToString() == "" ? null : Convert.ToDateTime(queryJson["start_time"]) : null;
|
||||
// DateTime? end_time = queryJson.ContainsKey("end_time") ? queryJson["end_time"].ToString() == "" ? null : Convert.ToDateTime(queryJson["end_time"]) : null;
|
||||
// List<string> statusList = new();
|
||||
// if (!string.IsNullOrEmpty(status))
|
||||
// {
|
||||
// switch (status)
|
||||
// {
|
||||
// case "1":
|
||||
// statusList.Add(DictConst.InProgressEnCode);
|
||||
// statusList.Add(DictConst.MoStatusPauseCode);
|
||||
// break;
|
||||
// case "2":
|
||||
// statusList.Add(DictConst.ToBeScheduledEncode);
|
||||
// statusList.Add(DictConst.ToBeStartedEnCode);
|
||||
// break;
|
||||
// case "3":
|
||||
// statusList.Add(DictConst.ComplatedEnCode);
|
||||
// statusList.Add(DictConst.ClosedEnCode);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// // string mo_task_status = queryJson.ContainsKey("mo_task_status") ? queryJson["mo_task_status"].ToString() : "";
|
||||
// if (string.IsNullOrEmpty(input.sidx))
|
||||
// {
|
||||
// input.sidx = "create_time";
|
||||
// input.sort = "desc";
|
||||
// }
|
||||
//
|
||||
// SqlSugarPagedList<PADPackageTaskPageOutput> result = await _db.Queryable<PrdMoTask>()
|
||||
// .LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
|
||||
// .LeftJoin<BasProcess>((a, b, c) => a.process_id == c.id)
|
||||
// .LeftJoin<OrganizeEntity>((a, b, c, d) => a.workline_id == d.Id)
|
||||
// .LeftJoin<DictionaryDataEntity>((a, b, c, d, e) => e.DictionaryTypeId == DictConst.PrdTaskStatusTypeId && a.mo_task_status == e.EnCode)
|
||||
// .LeftJoin<EqpEquipment>((a, b, c, d, e, f) => a.eqp_id == f.id)
|
||||
// .LeftJoin<ToolMolds>((a, b, c, d, e, f, g) => a.mold_id == g.id)
|
||||
// .LeftJoin<PerProcessStandardsH>((a, b, c, d, e, f, g, h) => a.material_id == h.output_material_id && a.eqp_id == h.equip_id && a.mold_id == h.molds_id && h.enabled == 1)
|
||||
// .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)
|
||||
// .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, l) => new PADPackageTaskPageOutput
|
||||
// {
|
||||
// id = a.id,
|
||||
// mo_task_code = a.mo_task_code,
|
||||
// mo_id = a.mo_id,
|
||||
// mo_code = j.mo_code,
|
||||
// material_id = a.material_id,
|
||||
// material_code = b.code,
|
||||
// material_name = b.name,
|
||||
// workline_id = a.workline_id,
|
||||
// workline_name = d.FullName,
|
||||
// bom_id = a.bom_id,
|
||||
// mo_task_status = e.FullName,
|
||||
// complete_qty = SqlFunc.IsNull(a.reported_work_qty, 0) + SqlFunc.IsNull(a.scrap_qty, 0),
|
||||
// scrap_qty = a.scrap_qty,
|
||||
// scheduled_qty = a.scheduled_qty,
|
||||
// reported_work_qty = a.reported_work_qty,
|
||||
// estimated_start_date = a.estimated_start_date == null ? "" : a.estimated_start_date.Value.ToString(DbTimeFormat.SS),
|
||||
// estimated_end_date = a.estimated_end_date == null ? "" : a.estimated_end_date.Value.ToString(DbTimeFormat.SS),
|
||||
// parent_id = a.parent_id,
|
||||
// process_id = a.process_id,
|
||||
// process_name = c.process_name,
|
||||
// mbom_process_id = a.mbom_process_id,
|
||||
// create_time = a.create_time,
|
||||
// equip_id = a.eqp_id,
|
||||
// equip_code = f.code,
|
||||
// equip_name = f.name,
|
||||
// mold_id = a.mold_id,
|
||||
// mold_code = g.mold_code,
|
||||
// mold_name = g.mold_name,
|
||||
// schedule_type = a.schedule_type,
|
||||
// mold_cavity = g.mold_cavity,
|
||||
// moulding_cycle = h.moulding_cycle,
|
||||
// standard_time = i.standard_time,
|
||||
// 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),
|
||||
// plan_end_date = a.plan_end_date == null ? "" : a.plan_end_date.Value.ToString(DbTimeFormat.SS),
|
||||
// minpacking = b.minpacking,
|
||||
// main_num = k.number_of_primary_unit,
|
||||
// deputy_num = k.number_of_auxiliary_unit,
|
||||
// third_equip_code = l.equip_code,
|
||||
// weight_name = l.label_name,
|
||||
// category_id = b.category_id
|
||||
// })
|
||||
// .MergeTable()
|
||||
// .OrderBy($"{input.sidx} {input.sort}")
|
||||
// .ToPagedListAsync(input.currentPage, input.pageSize);
|
||||
//
|
||||
// return PageResult<PADPackageTaskPageOutput>.SqlSugarPageResult(result);
|
||||
//
|
||||
// }
|
||||
/// <summary>
|
||||
/// pda端根据工位获取任务单列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<dynamic> GetPadPrdMoTaskList(PrdMoTaskListOutput input)
|
||||
{
|
||||
if (string.IsNullOrEmpty(input.stationId))
|
||||
{
|
||||
return new
|
||||
{
|
||||
pagination = new PageResult(),
|
||||
list = Array.Empty<string>()
|
||||
};
|
||||
}
|
||||
|
||||
Dictionary<string, object> queryJson = string.IsNullOrEmpty(input.queryJson) ? new Dictionary<string, object>() : input.queryJson.ToObject<Dictionary<string, object>>();
|
||||
string? mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : "";
|
||||
string? status = queryJson.ContainsKey("status") ? queryJson["status"].ToString() : "";
|
||||
DateTime? start_time = queryJson.ContainsKey("start_time") ? queryJson["start_time"].ToString() == "" ? null : Convert.ToDateTime(queryJson["start_time"]) : null;
|
||||
DateTime? end_time = queryJson.ContainsKey("end_time") ? queryJson["end_time"].ToString() == "" ? null : Convert.ToDateTime(queryJson["end_time"]) : null;
|
||||
List<string> statusList = new();
|
||||
if (!string.IsNullOrEmpty(status))
|
||||
{
|
||||
switch (status)
|
||||
{
|
||||
case "1":
|
||||
statusList.Add(DictConst.InProgressEnCode);
|
||||
statusList.Add(DictConst.MoStatusPauseCode);
|
||||
break;
|
||||
case "2":
|
||||
statusList.Add(DictConst.ToBeScheduledEncode);
|
||||
statusList.Add(DictConst.ToBeStartedEnCode);
|
||||
break;
|
||||
case "3":
|
||||
statusList.Add(DictConst.ComplatedEnCode);
|
||||
statusList.Add(DictConst.ClosedEnCode);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// string mo_task_status = queryJson.ContainsKey("mo_task_status") ? queryJson["mo_task_status"].ToString() : "";
|
||||
if (string.IsNullOrEmpty(input.sidx))
|
||||
{
|
||||
input.sidx = "create_time";
|
||||
input.sort = "desc";
|
||||
}
|
||||
|
||||
SqlSugarPagedList<PADPackageTaskPageOutput> result = await _db.Queryable<PrdMoTask>()
|
||||
.LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
|
||||
.LeftJoin<BasProcess>((a, b, c) => a.process_id == c.id)
|
||||
.LeftJoin<OrganizeEntity>((a, b, c, d) => a.workline_id == d.Id)
|
||||
.LeftJoin<DictionaryDataEntity>((a, b, c, d, e) => e.DictionaryTypeId == DictConst.PrdTaskStatusTypeId && a.mo_task_status == e.EnCode)
|
||||
.LeftJoin<EqpEquipment>((a, b, c, d, e, f) => a.eqp_id == f.id)
|
||||
.LeftJoin<ToolMolds>((a, b, c, d, e, f, g) => a.mold_id == g.id)
|
||||
.LeftJoin<PerProcessStandardsH>((a, b, c, d, e, f, g, h) => a.material_id == h.output_material_id && a.eqp_id == h.equip_id && a.mold_id == h.molds_id && h.enabled == 1)
|
||||
.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)
|
||||
.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, l) => new PADPackageTaskPageOutput
|
||||
{
|
||||
id = a.id,
|
||||
mo_task_code = a.mo_task_code,
|
||||
mo_id = a.mo_id,
|
||||
mo_code = j.mo_code,
|
||||
material_id = a.material_id,
|
||||
material_code = b.code,
|
||||
material_name = b.name,
|
||||
workline_id = a.workline_id,
|
||||
workline_name = d.FullName,
|
||||
bom_id = a.bom_id,
|
||||
mo_task_status = e.FullName,
|
||||
complete_qty = SqlFunc.IsNull(a.reported_work_qty, 0) + SqlFunc.IsNull(a.scrap_qty, 0),
|
||||
scrap_qty = a.scrap_qty,
|
||||
scheduled_qty = a.scheduled_qty,
|
||||
reported_work_qty = a.reported_work_qty,
|
||||
estimated_start_date = a.estimated_start_date == null ? "" : a.estimated_start_date.Value.ToString(DbTimeFormat.SS),
|
||||
estimated_end_date = a.estimated_end_date == null ? "" : a.estimated_end_date.Value.ToString(DbTimeFormat.SS),
|
||||
parent_id = a.parent_id,
|
||||
process_id = a.process_id,
|
||||
process_name = c.process_name,
|
||||
mbom_process_id = a.mbom_process_id,
|
||||
create_time = a.create_time,
|
||||
equip_id = a.eqp_id,
|
||||
equip_code = f.code,
|
||||
equip_name = f.name,
|
||||
mold_id = a.mold_id,
|
||||
mold_code = g.mold_code,
|
||||
mold_name = g.mold_name,
|
||||
schedule_type = a.schedule_type,
|
||||
mold_cavity = g.mold_cavity,
|
||||
moulding_cycle = h.moulding_cycle,
|
||||
standard_time = i.standard_time,
|
||||
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),
|
||||
plan_end_date = a.plan_end_date == null ? "" : a.plan_end_date.Value.ToString(DbTimeFormat.SS),
|
||||
minpacking = b.minpacking,
|
||||
main_num = k.number_of_primary_unit,
|
||||
deputy_num = k.number_of_auxiliary_unit,
|
||||
third_equip_code = l.equip_code,
|
||||
weight_name = l.label_name,
|
||||
category_id = b.category_id
|
||||
})
|
||||
.MergeTable()
|
||||
.OrderBy($"{input.sidx} {input.sort}")
|
||||
.ToPagedListAsync(input.currentPage, input.pageSize);
|
||||
|
||||
return PageResult<PADPackageTaskPageOutput>.SqlSugarPageResult(result);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 上模校验
|
||||
|
||||
@@ -1,39 +1,71 @@
|
||||
using Aop.Api.Domain;
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Dynamic;
|
||||
using System.Security.Policy;
|
||||
using System.Text;
|
||||
using Aop.Api.Domain;
|
||||
using JNPF;
|
||||
using JNPF.Common.Cache;
|
||||
using JNPF.Common.Dtos.VisualDev;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.FriendlyException;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NetTaste;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NPOI.OpenXmlFormats;
|
||||
using Qiniu.Util;
|
||||
using SqlSugar;
|
||||
using Tnb.Common.Extension;
|
||||
using Tnb.Common.Redis;
|
||||
using Tnb.Common.Utils;
|
||||
using Tnb.ProductionMgr.Entities;
|
||||
using Tnb.ProductionMgr.Entities.Dto;
|
||||
using Tnb.ProductionMgr.Entities.Enums;
|
||||
using Tnb.ProductionMgr.Interfaces;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Configs;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
using Tnb.WarehouseMgr.Entities.Enums;
|
||||
using Tnb.WarehouseMgr.Interfaces;
|
||||
|
||||
namespace Tnb.ProductionMgr
|
||||
{
|
||||
//redis定时获取数采数据
|
||||
public class RedisBackGround : IHostedService, IDisposable
|
||||
{
|
||||
private Timer? Readtimer;
|
||||
private Timer? Readtimer;
|
||||
private Timer? CheckGettimer;
|
||||
private Timer? Scantimer;
|
||||
private Timer? SSXcodetimer;
|
||||
|
||||
// 二楼上升降机
|
||||
private Timer? Floor2UpMachinecodetimer;
|
||||
// 二楼下升降机
|
||||
private Timer? Floor2DownMachinecodetimer;
|
||||
|
||||
private readonly RedisData _redisData;
|
||||
private readonly IPrdInstockService _prdInstockService;
|
||||
private readonly ISqlSugarRepository<RedisReadConfig> _repository;
|
||||
public RedisBackGround(RedisData redisData, IPrdInstockService prdInstockService, ISqlSugarRepository<RedisReadConfig> repository)
|
||||
private readonly IWmsPDAScanInStockService _wmsPDAScanInStock;
|
||||
private readonly ElevatorControlConfiguration _eleCtlCfg = App.Configuration.Build<ElevatorControlConfiguration>();
|
||||
public RedisBackGround(RedisData redisData, IPrdInstockService prdInstockService, ISqlSugarRepository<RedisReadConfig> repository, IWmsPDAScanInStockService wmsPDAScanInStock)
|
||||
{
|
||||
_redisData = redisData;
|
||||
_prdInstockService = prdInstockService;
|
||||
_repository = repository;
|
||||
_repository = repository;
|
||||
_wmsPDAScanInStock = wmsPDAScanInStock;
|
||||
}
|
||||
//获取redis数据
|
||||
private void GetRedisData(object state)
|
||||
{
|
||||
var _redisReadConfigs = _repository.AsQueryable().Where(p => p.enabled == 1).ToList();
|
||||
var _redisReadConfigs = _repository.AsQueryable().Where(p => p.enabled == 1).ToList();
|
||||
foreach (var config in _redisReadConfigs)
|
||||
{
|
||||
try
|
||||
{
|
||||
var json= _redisData.GetHash(config.dev_name!, config.tag_name!).Result;
|
||||
var json = _redisData.GetHash(config.dev_name!, config.tag_name!).Result;
|
||||
JObject? res = JsonConvert.DeserializeObject<JObject>(json);
|
||||
if (config.data_type == (int)DataType.INT)
|
||||
{
|
||||
@@ -51,7 +83,7 @@ namespace Tnb.ProductionMgr
|
||||
}
|
||||
else if (config.check_type == (int)CheckType.包含)
|
||||
{
|
||||
int[] ints= Array.ConvertAll(config.data!.Replace("[","").Replace("]","").Split(",",StringSplitOptions.RemoveEmptyEntries),int.Parse);
|
||||
int[] ints = Array.ConvertAll(config.data!.Replace("[", "").Replace("]", "").Split(",", StringSplitOptions.RemoveEmptyEntries), int.Parse);
|
||||
if (ints.Contains(res.Value<int>("Value")))
|
||||
{
|
||||
InstockInput instockInput = new()
|
||||
@@ -101,126 +133,498 @@ namespace Tnb.ProductionMgr
|
||||
break;
|
||||
}
|
||||
}
|
||||
//获取注塑装箱状态
|
||||
private void GetZSPackStatus(object state)
|
||||
//ctu取货
|
||||
private void CheckGet(object state)
|
||||
{
|
||||
try
|
||||
Dictionary<string, string[]> getdic = new Dictionary<string, string[]>();
|
||||
getdic.Add("SSX-021-005", new string[] { "YTCS", "AllowFullOut_CS05", "LiftCode" });
|
||||
getdic.Add("SSX-011-002", new string[] { "YTCS", "AllowAgvFullIn_CS02", "Code_CS02" });
|
||||
getdic.Add("SSX-011-004", new string[] { "YTCS", "AllowCtuFullOut_CS04", "Code_CS04" });
|
||||
|
||||
getdic.Add("SSX-011-008", new string[] { "东面提升机输送线", "入库输送线8允许出箱", "入库输送线7条码" });
|
||||
|
||||
getdic.Add("SSX-111-011", new string[] { "东面提升机输送线", "下升降机11允许出箱", "下升降机11条码" });
|
||||
getdic.Add("SSX-111-012", new string[] { "东面提升机输送线", "下升降机12允许出箱", "下升降机12条码" });
|
||||
getdic.Add("ZSSSXCTU02", new string[] { "YTCS", "AllowAgvEmptyOut_CS03", "" });
|
||||
getdic.Add("ZSSSXCTU01", new string[] { "YTCS", "AllowAgvEmptyOut_CS01", "" });
|
||||
|
||||
|
||||
foreach (var key in getdic.Keys)
|
||||
{
|
||||
string[] strs = new string[1] { "TY4C-ZHUSU1" };
|
||||
string sign = "agvMode";
|
||||
foreach (string s in strs)
|
||||
try
|
||||
{
|
||||
Dictionary<string, string> dic = _redisData.HGetAll(s).Result;
|
||||
foreach (KeyValuePair<string, string> kv in dic)
|
||||
var strs = getdic.Where(p => p.Key == key).First().Value;
|
||||
bool flag = _redisData.HashExist(strs[0], strs[1]).Result;
|
||||
string data = _redisData.GetHash(strs[0], strs[1]).Result;
|
||||
JObject? res = JsonConvert.DeserializeObject<JObject>(data);
|
||||
|
||||
bool result = res != null && res["Value"] != null ? res.Value<bool>("Value") : false;
|
||||
if (result)
|
||||
{
|
||||
if (!kv.Key.Contains(sign))
|
||||
if (!string.IsNullOrEmpty(strs[2]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
JObject? res = JsonConvert.DeserializeObject<JObject>(kv.Value);
|
||||
if (res != null && res["Value"] != null)
|
||||
{
|
||||
if (int.Parse(res["Value"]!.ToString()) is not ((int)Eagvmode.无请求) and not ((int)Eagvmode.收到请求))
|
||||
string codedata = _redisData.GetHash(strs[0], strs[2]).Result;
|
||||
JObject? coderes = JsonConvert.DeserializeObject<JObject>(codedata);
|
||||
string coderesult = coderes != null && coderes["Value"] != null ? coderes.Value<string>("Value")! : "";
|
||||
coderesult = coderesult.Replace("\r", "");
|
||||
|
||||
|
||||
var DistaskH = _repository.AsSugarClient().Queryable<WmsDistaskH>().Where(p => p.carry_code == coderesult && p.status == WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID && string.IsNullOrEmpty(p.extras)).First();
|
||||
|
||||
|
||||
if (DistaskH != null)
|
||||
{
|
||||
InstockInput instockInput = new()
|
||||
Logger.LogInformation($@"【定时任务CheckGet】 {JsonConvert.SerializeObject(DistaskH)}");
|
||||
dynamic reqBody = new ExpandoObject();
|
||||
reqBody.taskCode = DistaskH.bill_code;
|
||||
reqBody.slotCode = key;
|
||||
reqBody.containerCode = coderesult;
|
||||
CancellationTokenSource Ctu = new();
|
||||
if (strs[0] == "东面提升机输送线")
|
||||
{
|
||||
equip_code = res["DevName"]!.ToString(),
|
||||
label_code = res["TagName"]!.ToString()
|
||||
};
|
||||
_prdInstockService.InstockTypeOne(instockInput);
|
||||
Logger.LogInformation($"【定时任务CheckGet】 开始发送请求到 http://192.168.11.104:1880/wcs/notify/cargo ");
|
||||
}
|
||||
dynamic respBody = HttpClientHelper.PostStreamAsync("http://192.168.11.104:1880/wcs/notify/cargo", reqBody, Ctu.Token).Result;
|
||||
if (strs[0] == "东面提升机输送线")
|
||||
{
|
||||
Logger.LogInformation($"【定时任务CheckGet】 接收请求 http://192.168.11.104:1880/wcs/notify/cargo 结果 {respBody} ");
|
||||
}
|
||||
DistaskH.extras = respBody;
|
||||
_repository.AsSugarClient().Updateable(DistaskH).ExecuteCommand();
|
||||
Ctu.Dispose();
|
||||
}
|
||||
else
|
||||
{
|
||||
LoggerSSX.LogInformation($@"【定时任务CheckGet】 {key}->{strs[0]} {strs[2]}
|
||||
采集结果:{ $@"任务执行(wms_distask_h)中找不到匹配的记录 任务执行需要存在载具编号(carry_code)为{coderesult}
|
||||
且单据状态(status)为已下达(26126853976101) 且扩展字段(extras)为空的记录
|
||||
select extras,* from wms_distask_h
|
||||
where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID}' " }");
|
||||
|
||||
}
|
||||
}
|
||||
else {
|
||||
var DistaskH = _repository.AsSugarClient().Queryable<WmsDistaskH>().Where(p => p.startlocation_code == key && p.status == WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID && string.IsNullOrEmpty(p.extras)).First();
|
||||
if (DistaskH != null)
|
||||
{
|
||||
dynamic reqBody = new ExpandoObject();
|
||||
reqBody.taskCode = DistaskH.bill_code;
|
||||
reqBody.slotCode = key;
|
||||
reqBody.containerCode = DistaskH.carry_code;
|
||||
CancellationTokenSource Ctu = new();
|
||||
dynamic respBody = HttpClientHelper.PostStreamAsync("http://192.168.11.104:1880/wcs/notify/cargo", reqBody, Ctu.Token).Result;
|
||||
DistaskH.extras = respBody;
|
||||
_repository.AsSugarClient().Updateable(DistaskH).ExecuteCommand();
|
||||
Ctu.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
catch (Exception ex)
|
||||
{
|
||||
LoggerSSX.LogError(ex.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
//获取挤出装箱状态
|
||||
private void GetJCPackStatus(object state)
|
||||
|
||||
private static readonly Dictionary<LogLevel, string> s_logLevelMap = new()
|
||||
{
|
||||
try
|
||||
[LogLevel.Debug] = "DBG",
|
||||
[LogLevel.Information] = "INF",
|
||||
[LogLevel.Warning] = "WRN",
|
||||
[LogLevel.Error] = "ERR",
|
||||
};
|
||||
|
||||
|
||||
#region 日志
|
||||
|
||||
protected ILogger Logger => LoggerFactory.Create(builder => builder.AddFile($"{AppContext.BaseDirectory}/logs/custom{DateTime.Now:yyyyMMdd}.log", cfgOpts =>
|
||||
{
|
||||
|
||||
//cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff";
|
||||
cfgOpts.MessageFormat = (logMsg) =>
|
||||
{
|
||||
string[] strs = new string[1] { "TY4C-SHUSONG-JC" };
|
||||
string sign = "AGVFullCall";
|
||||
foreach (string s in strs)
|
||||
var logLevel = s_logLevelMap[logMsg.LogLevel];
|
||||
var sb = new StringBuilder();
|
||||
_ = sb.Append($"[{logLevel}] ");
|
||||
_ = sb.Append($"{logMsg.LogName} ");
|
||||
_ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} ");
|
||||
_ = sb.Append($"#{logMsg.EventId.Id} ");
|
||||
_ = sb.Append(logMsg.Message + " ");
|
||||
_ = sb.Append(logMsg.Exception?.ToString());
|
||||
return sb.ToString();
|
||||
};
|
||||
|
||||
})).CreateLogger(this.GetType());
|
||||
|
||||
|
||||
protected ILogger LoggerBGW => LoggerFactory.Create(builder => builder.AddFile($"{AppContext.BaseDirectory}/logs/customBGW{DateTime.Now:yyyyMMdd}.log", cfgOpts =>
|
||||
{
|
||||
|
||||
//cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff";
|
||||
cfgOpts.MessageFormat = (logMsg) =>
|
||||
{
|
||||
var logLevel = s_logLevelMap[logMsg.LogLevel];
|
||||
var sb = new StringBuilder();
|
||||
_ = sb.Append($"[{logLevel}] ");
|
||||
_ = sb.Append($"{logMsg.LogName} ");
|
||||
_ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} ");
|
||||
_ = sb.Append($"#{logMsg.EventId.Id} ");
|
||||
_ = sb.Append(logMsg.Message + " ");
|
||||
_ = sb.Append(logMsg.Exception?.ToString());
|
||||
return sb.ToString();
|
||||
};
|
||||
|
||||
})).CreateLogger(this.GetType());
|
||||
|
||||
protected ILogger LoggerSSX => LoggerFactory.Create(builder => builder.AddFile($"{AppContext.BaseDirectory}/logs/customSSX{DateTime.Now:yyyyMMdd}.log", cfgOpts =>
|
||||
{
|
||||
|
||||
//cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff";
|
||||
cfgOpts.MessageFormat = (logMsg) =>
|
||||
{
|
||||
var logLevel = s_logLevelMap[logMsg.LogLevel];
|
||||
var sb = new StringBuilder();
|
||||
_ = sb.Append($"[{logLevel}] ");
|
||||
_ = sb.Append($"{logMsg.LogName} ");
|
||||
_ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} ");
|
||||
_ = sb.Append($"#{logMsg.EventId.Id} ");
|
||||
_ = sb.Append(logMsg.Message + " ");
|
||||
_ = sb.Append(logMsg.Exception?.ToString());
|
||||
return sb.ToString();
|
||||
};
|
||||
|
||||
})).CreateLogger(this.GetType());
|
||||
|
||||
// 二楼上下升降机日志
|
||||
protected ILogger LoggerFloor2UpDownMachine => LoggerFactory.Create(builder => builder.AddFile($"{AppContext.BaseDirectory}/logs/customFloor2UpDownMachine{DateTime.Now:yyyyMMdd}.log", cfgOpts =>
|
||||
{
|
||||
|
||||
//cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff";
|
||||
cfgOpts.MessageFormat = (logMsg) =>
|
||||
{
|
||||
var logLevel = s_logLevelMap[logMsg.LogLevel];
|
||||
var sb = new StringBuilder();
|
||||
_ = sb.Append($"[{logLevel}] ");
|
||||
_ = sb.Append($"{logMsg.LogName} ");
|
||||
_ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} ");
|
||||
_ = sb.Append($"#{logMsg.EventId.Id} ");
|
||||
_ = sb.Append(logMsg.Message + " ");
|
||||
_ = sb.Append(logMsg.Exception?.ToString());
|
||||
return sb.ToString();
|
||||
};
|
||||
|
||||
})).CreateLogger(this.GetType());
|
||||
|
||||
|
||||
// 二楼料架补充
|
||||
protected ILogger LoggerFloor2RackSupplement => LoggerFactory.Create(builder => builder.AddFile($"{AppContext.BaseDirectory}/logs/customFloor2RackSupplement{DateTime.Now:yyyyMMdd}.log", cfgOpts =>
|
||||
{
|
||||
//cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff";
|
||||
cfgOpts.MessageFormat = (logMsg) =>
|
||||
{
|
||||
var logLevel = s_logLevelMap[logMsg.LogLevel];
|
||||
var sb = new StringBuilder();
|
||||
_ = sb.Append($"[{logLevel}] ");
|
||||
_ = sb.Append($"{logMsg.LogName} ");
|
||||
_ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} ");
|
||||
_ = sb.Append($"#{logMsg.EventId.Id} ");
|
||||
_ = sb.Append(logMsg.Message + " ");
|
||||
_ = sb.Append(logMsg.Exception?.ToString());
|
||||
return sb.ToString();
|
||||
};
|
||||
|
||||
})).CreateLogger(this.GetType());
|
||||
|
||||
#endregion
|
||||
|
||||
//扫码入库
|
||||
private void ScanInStock(object state)
|
||||
{
|
||||
Dictionary<string, string[]> getdic = new Dictionary<string, string[]>();
|
||||
getdic.Add("BGWRKYCL02", new string[] { "CP8", "AllowGetFullBox1", "code1", "PutDoneEmptyBox", "false" });
|
||||
getdic.Add("BGWRKYCL01", new string[] { "CP8", "AllowGetFullBox2", "code2", "PutDoneEmptyBox", "false" });
|
||||
foreach (var key in getdic.Keys)
|
||||
{
|
||||
try
|
||||
{
|
||||
Dictionary<string, string> dic = _redisData.HGetAll(s).Result;
|
||||
foreach (KeyValuePair<string, string> kv in dic)
|
||||
var strs = getdic.Where(p => p.Key == key).First().Value;
|
||||
bool flag = _redisData.HashExist(strs[0], strs[1]).Result;
|
||||
string data = _redisData.GetHash(strs[0], strs[1]).Result;
|
||||
JObject? res = JsonConvert.DeserializeObject<JObject>(data);
|
||||
|
||||
|
||||
bool result = res != null && res["Value"] != null ? res.Value<bool>("Value") : false;
|
||||
if (result)
|
||||
{
|
||||
if (!kv.Key.Contains(sign))
|
||||
Logger.LogInformation($"【ScanInStock】 八工位 {key} AllowGetFullBox1采集到 {res["Value"]}");
|
||||
|
||||
Dictionary<string, string> dicCommand = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
JObject? res = JsonConvert.DeserializeObject<JObject>(kv.Value);
|
||||
if (res != null && res["Value"] != null)
|
||||
["DevName"] = strs[0],
|
||||
["token"] = _eleCtlCfg.token,
|
||||
["TagName"] = strs[3],
|
||||
["Value"] = strs[4],
|
||||
};
|
||||
Logger.LogInformation($"【ScanInStock】 八工位 {key} 发送PutDoneEmptyBox指令 {_eleCtlCfg.WriteTagUrl} {JsonConvert.SerializeObject(dicCommand)}");
|
||||
HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand).Wait();
|
||||
string codedata = _redisData.GetHash(strs[0], strs[2]).Result;
|
||||
Logger.LogInformation($"【ScanInStock】 八工位 {key} 获取到扫码信息: {codedata}");
|
||||
JObject? coderes = JsonConvert.DeserializeObject<JObject>(codedata);
|
||||
string coderesult = coderes != null && coderes["Value"] != null ? coderes.Value<string>("Value")! : "";
|
||||
WmsCarryH? carry = _repository.AsSugarClient().Queryable<WmsCarryH>().Single(it => it.carry_code == coderesult);
|
||||
Logger.LogInformation($"【ScanInStock】 八工位 {key} 查找{coderesult}绑定的托盘: {JsonConvert.SerializeObject(carry)}");
|
||||
if (carry != null)
|
||||
{
|
||||
if (res.Value<bool>("Value"))
|
||||
if (_repository.AsSugarClient().Queryable<WmsDistaskH>().Where(p => p.carry_id == carry.id && p.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID ).Any())
|
||||
{
|
||||
InstockInput instockInput = new()
|
||||
{
|
||||
equip_code = res["DevName"]!.ToString(),
|
||||
label_code = res["TagName"]!.ToString()
|
||||
};
|
||||
_prdInstockService.InstockTypeOne(instockInput);
|
||||
Logger.LogInformation($"【ScanInStock】 八工位 {key} 托盘 {carry.id} 对应的执行任务状态(status)不是26126860808229(已完成),此时不能执行入库");
|
||||
continue;
|
||||
}
|
||||
|
||||
var WmsCarryCode = _repository.AsSugarClient().Queryable<WmsCarryCode>().Where(it => it.carry_id == carry.id).OrderByDescending(it => it.id).First();
|
||||
// 用适当的字段替换 YourTimestampField
|
||||
|
||||
if (WmsCarryCode != null)
|
||||
{
|
||||
Logger.LogInformation($"【ScanInStock】 八工位 {key} 查找到托盘{carry.id}在WmsCarryCode中存在");
|
||||
|
||||
VisualDevModelDataCrInput input = new VisualDevModelDataCrInput();
|
||||
input.data = new Dictionary<string, object>();
|
||||
input.data.Add("barcode", coderesult);
|
||||
input.data.Add("codeqty", WmsCarryCode.codeqty);//条码数量
|
||||
input.data.Add("material_code", WmsCarryCode.material_code);
|
||||
input.data.Add("extras", key);//location_code
|
||||
input.data.Add("warehouse_id", "1");//TEST
|
||||
input.data.Add("bill_code", "");//采购收货单号
|
||||
input.data.Add("code_batch", WmsCarryCode.code_batch!);//批次
|
||||
input.data.Add("material_specification", WmsCarryCode.material_specification!);//规格型号
|
||||
input.data.Add("container_no", WmsCarryCode.container_no!);//箱号
|
||||
input.data.Add("material_id", WmsCarryCode.material_id);
|
||||
input.data.Add("id", null);
|
||||
_wmsPDAScanInStock.ScanInStockByRedis(input).Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogInformation($"【ScanInStock】 八工位扫到码发送入库请求发生异常:{ex}");
|
||||
}
|
||||
}
|
||||
}
|
||||
//获取限位状态
|
||||
private void GetLimitStatus(object state)
|
||||
|
||||
private void SSXcode(object state)
|
||||
{
|
||||
/*
|
||||
Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
|
||||
Console.WriteLine($"获取挤出装箱状态");
|
||||
string data = _redisData.GetHash("TY4C-SHUSONG-JC", "AGVFullCall").Result;
|
||||
Console.WriteLine(data);*/
|
||||
try
|
||||
Dictionary<string, string[]> dic = new Dictionary<string, string[]>();
|
||||
//有问题
|
||||
dic.Add("东面提升机输送线", new string[] { "下升降机判断请求", "下升降机判断条码", "下升降机判断完毕", "下升降机判断结果" });
|
||||
Dictionary<string, int> putdic = new Dictionary<string, int>();
|
||||
putdic.Add("SSX-111-011", 11);
|
||||
putdic.Add("SSX-111-012", 12);
|
||||
foreach (var key in dic.Keys)
|
||||
{
|
||||
string[] strs = new string[1] { "TY4C-WAIBAO" };
|
||||
string sign = "AGVCall";
|
||||
foreach (string s in strs)
|
||||
try
|
||||
{
|
||||
Dictionary<string, string> dic = _redisData.HGetAll(s).Result;
|
||||
foreach (KeyValuePair<string, string> kv in dic)
|
||||
var strs = dic.Where(p => p.Key == key).First().Value;
|
||||
string dataflag = _redisData.GetHash(key, strs[0]).Result;
|
||||
JObject? resflag = JsonConvert.DeserializeObject<JObject>(dataflag);
|
||||
|
||||
|
||||
//Logger.LogInformation($"【定时任务SSXcode】 {key}->{strs[0]} 采集结果:{resflag}");
|
||||
bool re = resflag != null && resflag["Value"] != null ? resflag.Value<bool>("Value") : false;
|
||||
if (!re)
|
||||
continue;
|
||||
string data = _redisData.GetHash(key, strs[1]).Result;
|
||||
JObject? res = JsonConvert.DeserializeObject<JObject>(data);
|
||||
//Logger.LogInformation($"【定时任务SSXcode】 {key}->{strs[1]} 采集结果:{res}");
|
||||
string? result = res != null && res["Value"] != null ? res.Value<string>("Value") : "";
|
||||
if (!string.IsNullOrEmpty(result))
|
||||
{
|
||||
if (!kv.Key.Contains(sign))
|
||||
if (result.Length < 5)
|
||||
{
|
||||
continue;
|
||||
result = "LX" + result.Replace("\r", "");
|
||||
}
|
||||
JObject? res = JsonConvert.DeserializeObject<JObject>(kv.Value);
|
||||
if (res != null && res["Value"] != null)
|
||||
var DistaskH = _repository.AsSugarClient().Queryable<WmsDistaskH>().Where(p => p.carry_code == result && p.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).OrderByDescending(p => p.create_time).First();
|
||||
if (DistaskH != null)
|
||||
{
|
||||
if (res.Value<bool>("Value"))
|
||||
Dictionary<string, string> dicCommand2 = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
InstockInput instockInput = new()
|
||||
{
|
||||
equip_code = res["DevName"]!.ToString(),
|
||||
label_code = res["TagName"]!.ToString()
|
||||
};
|
||||
_prdInstockService.InstockOutPack(instockInput);
|
||||
}
|
||||
["DevName"] = key,
|
||||
["token"] = _eleCtlCfg.token,
|
||||
["TagName"] = strs[3],
|
||||
["Value"] = putdic.Keys.Contains(DistaskH.startlocation_code) ? putdic.Where(p => p.Key == DistaskH.startlocation_code).First().Value.ToString() : "13",
|
||||
};
|
||||
HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand2).Wait();
|
||||
Dictionary<string, string> dicCommand = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["DevName"] = key,
|
||||
["token"] = _eleCtlCfg.token,
|
||||
["TagName"] = strs[2],
|
||||
["Value"] = "true",
|
||||
};
|
||||
HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand).Wait();
|
||||
}
|
||||
else
|
||||
{
|
||||
Dictionary<string, string> dicCommand2 = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["DevName"] = key,
|
||||
["token"] = _eleCtlCfg.token,
|
||||
["TagName"] = strs[3],
|
||||
["Value"] = "13",
|
||||
};
|
||||
HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand2).Wait();
|
||||
Dictionary<string, string> dicCommand = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["DevName"] = key,
|
||||
["token"] = _eleCtlCfg.token,
|
||||
["TagName"] = strs[2],
|
||||
["Value"] = "true",
|
||||
};
|
||||
HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand).Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Logger.LogInformation($"【定时任务SSXcode】发生异常 {ex}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Readtimer?.Dispose();
|
||||
CheckGettimer?.Dispose();
|
||||
Scantimer?.Dispose();
|
||||
SSXcodetimer?.Dispose();
|
||||
|
||||
}
|
||||
|
||||
#region 二楼升降机
|
||||
|
||||
// 上升降机
|
||||
private void Floor2UpMachinecode(object args)
|
||||
{
|
||||
// 补充料架
|
||||
//var DistaskH = _repository.AsSugarClient().Queryable<WmsMechanicalArmD>().Where(p => p.carry_code == && p.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).OrderByDescending(p => p.create_time).First();
|
||||
|
||||
|
||||
|
||||
// MechanicalArmConsts.上升降机满托2数量
|
||||
|
||||
// 扫码分配码垛位
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 下升降机
|
||||
private void Floor2DownMachinecode(object args)
|
||||
{
|
||||
// 补充料架
|
||||
|
||||
|
||||
// 扫码分配拆垛位
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 上下升降机生成预任务(补充料架、上升降机取货到料架、上升降机满托运走,下升降机拿货到输送线、下升降机空托运走)
|
||||
private void Floor2UpDownMachinecode_createPretask()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// 上下升降机生成任务执行
|
||||
private void Floor2UpDownMachinecode_createDistask()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private Tuple<bool, T> Floor2UpDownMachinecode_GetTag<T>(MechanicalArmConsts tag)
|
||||
{
|
||||
//string key = "东面提升机输送线";
|
||||
//string data = _redisData.GetHash(key, tag.ToString()).Result;
|
||||
//JObject? res = JsonConvert.DeserializeObject<JObject>(data);
|
||||
//T result = res != null && res["Value"] != null ? res.Value<T>("Value") : false;
|
||||
//return new Tuple<bool, T>(result, res.Value<T>("Value"));
|
||||
return new Tuple<bool, T>(false, default(T));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Agv调度
|
||||
/// </summary>
|
||||
/// <param name="disTasks"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
private async Task Floor2UpDownMachinecode_AgvDispatch(List<WmsDistaskH> disTasks, CancellationToken token)
|
||||
{
|
||||
LoggerFloor2UpDownMachine.LogInformation("【AgvDispatch】 Agv任务执行....");
|
||||
//调用AGV创建任务链接口
|
||||
try
|
||||
{
|
||||
AgvRequestConfig requestCfg = App.Configuration.Build<AgvRequestConfig>();
|
||||
string url = requestCfg.AgvRequestUrls.CreateTaskChainUrl;
|
||||
|
||||
LoggerFloor2UpDownMachine.LogInformation($"【AgvDispatch】 Agv任务执行的disTasks:{JsonConvert.SerializeObject(disTasks)}");
|
||||
|
||||
var taskChainCodeDic = disTasks.Where(t => !t.groups.IsNullOrWhiteSpace()).GroupBy(g => g.groups!)
|
||||
.ToDictionary(x => x.Key, x => x.Select(it => new
|
||||
{
|
||||
taskCode = it.bill_code,
|
||||
sourceName = it.startpoint_code,
|
||||
targetName = it.endpoint_code,
|
||||
containerCode = it.carry_code,
|
||||
}));
|
||||
|
||||
LoggerFloor2UpDownMachine.LogInformation($"【AgvDispatch】 Agv任务执行的taskChainCodeDic:{JsonConvert.SerializeObject(taskChainCodeDic)}");
|
||||
|
||||
foreach ((string k, object v) in taskChainCodeDic)
|
||||
{
|
||||
var dis = disTasks.Where(p => p.groups == k).First();
|
||||
dynamic reqBody = new ExpandoObject();
|
||||
reqBody.taskChainCode = k;
|
||||
reqBody.type = (int)EnumTaskChainType.AGV;
|
||||
reqBody.sequential = false;
|
||||
reqBody.taskChainPriority = 0;
|
||||
reqBody.taskList = v;
|
||||
reqBody.floor = dis.end_floor;
|
||||
LoggerFloor2UpDownMachine.LogInformation($"【AgvDispatch】 Agv任务执行 开始请求联核/task-chain/create接口 请求地址:{url} 请求参数:{reqBody} ");
|
||||
dynamic respBody = await HttpClientHelper.PostStreamAsync(url, reqBody, token);
|
||||
LoggerFloor2UpDownMachine.LogInformation($"【AgvDispatch】 Agv任务执行 接收到联核/task-chain/create接口信息:{respBody}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LoggerFloor2UpDownMachine.LogInformation($"【AgvDispatch】 agv任务执行 请求联核/task-chain/create接口失败 异常信息:{ex}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
private void Floor2UpDownMachinecode_SetTag()
|
||||
{
|
||||
string key = "东面提升机输送线";
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
public Task StartAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
Readtimer = new Timer(GetRedisData, null, TimeSpan.Zero, TimeSpan.FromSeconds(300));
|
||||
CheckGettimer = new Timer(CheckGet, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
|
||||
Scantimer = new Timer(ScanInStock, null, TimeSpan.Zero, TimeSpan.FromSeconds(60));
|
||||
SSXcodetimer= new Timer(SSXcode, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
|
||||
|
||||
// 二楼上升降机
|
||||
Floor2UpMachinecodetimer = new Timer(Floor2UpMachinecode, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
|
||||
// 二楼下升降机
|
||||
Floor2DownMachinecodetimer = new Timer(Floor2DownMachinecode, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
public Task StopAsync(CancellationToken cancellationToken)
|
||||
|
||||
@@ -12,9 +12,11 @@
|
||||
<ProjectReference Include="..\..\BasicData\Tnb.BasicData.Interfaces\Tnb.BasicData.Interfaces.csproj" />
|
||||
<ProjectReference Include="..\..\EquipMgr\Tnb.EquipMgr.Interfaces\Tnb.EquipMgr.Interfaces.csproj" />
|
||||
<ProjectReference Include="..\..\message\Tnb.Message\Tnb.Message.csproj" />
|
||||
<ProjectReference Include="..\..\PerMgr\Tnb.PerMgr.Entities\Tnb.PerMgr.Entities.csproj" />
|
||||
<ProjectReference Include="..\..\QcMgr\Tnb.QcMgr.Interfaces\Tnb.QcMgr.Interfaces.csproj" />
|
||||
<ProjectReference Include="..\..\taskschedule\Tnb.TaskScheduler\Tnb.TaskScheduler.csproj" />
|
||||
<ProjectReference Include="..\..\visualdev\Tnb.VisualDev.Engine\Tnb.VisualDev.Engine.csproj" />
|
||||
<ProjectReference Include="..\..\WarehouseMgr\Tnb.WarehouseMgr.Entities\Tnb.WarehouseMgr.Entities.csproj" />
|
||||
<ProjectReference Include="..\..\WarehouseMgr\Tnb.WarehouseMgr.Interfaces\Tnb.WarehouseMgr.Interfaces.csproj" />
|
||||
<ProjectReference Include="..\Tnb.ProductionMgr.Interfaces\Tnb.ProductionMgr.Interfaces.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user