using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using WIDESEA_Common;
|
using WIDESEA_Common.Tools;
|
using WIDESEA_Core.EFDbContext;
|
using WIDESEA_Core.Utilities;
|
using WIDESEA_Entity.DomainModels;
|
using WIDESEA_Services;
|
using WIDESEA_Services.IRepositories;
|
using WIDESEA_Services.Repositories;
|
using WIDESEA_Services.Services;
|
using WIDESEA_WCS.WCSClient;
|
|
namespace WIDESEA_WCS.Jobs
|
{
|
public partial class EquipmentExecutor : SchedulerExecuteBase
|
{
|
private static int _readFJCBJSignalso = 0;
|
/// <summary>
|
/// 拆包站逻辑流程
|
/// </summary>
|
/// <param name="client"></param>
|
/// <returns></returns>
|
public static void CBJtask()
|
{
|
if (Interlocked.Exchange(ref _readFJCBJSignalso, 1) == 0)
|
{
|
try
|
{
|
VOLContext Context = new VOLContext();
|
WebResponseContent responseContent = new WebResponseContent();
|
Idt_task_numberRepository tasknumberRep = new dt_task_numberRepository(Context);
|
dt_task_numberService tasknumber = new dt_task_numberService(tasknumberRep);
|
Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context);
|
Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context);
|
Ibill_pda_groupdiskRepository pdaRepository = new bill_pda_groupdiskRepository(Context);
|
Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context);
|
Ibill_group_stockRepository groupRepository = new bill_group_stockRepository(Context);
|
|
// 抓取PDA主盘表数据
|
var PDAtask = pdaRepository.FindFirst(v => v.ishandle == 1);
|
if (PDAtask != null)
|
{
|
//查询起点站台的路由
|
var routes = routingRepository.Find(v => v.route_began == PDAtask.Devid).ToList();
|
foreach (var route in routes)
|
{
|
//判断终点位置是否可用
|
PLCClient plc = WCSService.Clients.Find(v => v.PLCName == "负极1号AGV");
|
//读取PLC信号是否能放货
|
string isWork = plc.ReadValue(ConveyorLineInfoDBName.R_Location_iswork.ToString(), route.route_end).ToString();
|
//查询WCS自己的货位判断是否有货
|
var location = locRepository.FindFirst(v => v.upper_code == route.route_end);
|
if (isWork == "1" && location.location_state == LocationStateEnum.LocationState_Empty.ToString())
|
{
|
//条件通过即可创建AGV任务
|
dt_agvtask agvtask = new dt_agvtask
|
{
|
agv_materbarcode = PDAtask.BarCode,
|
agv_barcode = "",
|
agv_code = "负极1号AGV",
|
agv_createtime = DateTime.Now,
|
agv_fromaddress = route.route_began,
|
agv_grade = 1,
|
agv_materielid = PDAtask.MaterialType,
|
agv_qty = 1,
|
agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep),
|
agv_taskstate = "Create",
|
agv_tasktype = "TaskType_Outbound",
|
agv_toaddress = route.route_end,
|
agv_userid = "WCS",
|
agv_worktype = 1
|
};
|
agvRepository.Add(agvtask, true);
|
WriteLog.Info("CBJtask").Write("CBJtask接口" + agvtask.agv_tasknum + DateTime.Now, "CBJtask");
|
//AGV任务生成后修改PDA组盘表
|
PDAtask.ishandle = 0;
|
//pdaRepository.Delete(item, true);
|
//修改终点货架存储状态
|
location.location_state = LocationStateEnum.LocationState_Lock.ToString();
|
locRepository.Update(location, true);
|
//添加库存信息
|
bill_group_stock stock = new bill_group_stock();
|
stock.stock_id = Guid.NewGuid();
|
stock.MaterialType = PDAtask.MaterialType;
|
stock.BarCode = PDAtask.BarCode;
|
stock.MaterialStatus = PDAtask.MaterialStatus;
|
stock.first_tb = 0;
|
stock.TB_Status = "";
|
stock.FQ_Status = "";
|
stock.GY_Status = "";
|
stock.QX_Status = "";
|
stock.created_user = "WCS";
|
stock.created_time = DateTime.Now;
|
stock.updated_user = "WCS";
|
stock.updated_time = DateTime.Now;
|
groupRepository.Add(stock, true);
|
//给MES回传物料移动信息
|
//MESAPIInvoke.BindMaterialDevid(PDAtask.Devid, route.route_end, PDAtask.MaterialType, PDAtask.BarCode, PDAtask.MaterialStatus);
|
break;
|
}
|
}
|
}
|
|
}
|
|
catch (Exception ex)
|
{
|
|
}
|
finally
|
{
|
Interlocked.Exchange(ref _readCBJSignalso, 0);
|
}
|
//responseContent = SendTask(client.PLCName, () =>
|
//{
|
// //任务下发逻辑编写
|
// throw new Exception();
|
//});
|
}
|
|
}
|
}
|
}
|