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 _readFTBUPSignalso = 0;
///
/// 涂布设备上料逻辑
///
///
public static void F_TBSB_UpTask()
{
if (Interlocked.Exchange(ref _readFTBUPSignalso, 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);
List TBSBS = new List { "负极1号涂布机", "负极2号涂布机", "负极3号涂布机" };
PLCClient zagvplc = WCSService.Clients.Find(v => v.PLCName == "负极1号AGV");
foreach (var TBSB in TBSBS)
{
PLCClient plc = WCSService.Clients.Find(v => v.PLCName == TBSB);
if (plc == null) { continue; }
//启用工单
string IsBatchNo = plc.ReadValue(ConveyorLineInfoDBName.R_TBSB_IsWorkBatchNo.ToString(), plc.PLCDescroption).ToString();//H17 bool
if (IsBatchNo == "False") { continue; }
//当前设备有没有上料请求
string isSBWork = plc.ReadValue(ConveyorLineInfoDBName.R_TBSB_UPrequest.ToString(), plc.PLCDescroption).ToString();//D18046 bool
//读取设备的工单号
string batchNo = plc.ReadValue(ConveyorLineInfoDBName.R_TBSB_UPbatchNo.ToString(), plc.PLCDescroption).ToString();//D21010 string
if (batchNo == null) { continue; }
//上工序名
string processName = plc.ReadValue(ConveyorLineInfoDBName.R_TBSB_TBbatchNo.ToString(), plc.PLCDescroption).ToString();
if (string.IsNullOrEmpty(processName)) { GetEquipmentInfo(plc.PLCDescroption, "", "", processName, ""); continue; }
//单面涂布模式
string oneside = plc.ReadValue(ConveyorLineInfoDBName.R_TBSB_OneSide.ToString(), plc.PLCDescroption).ToString();
//双面涂布模式
string twoside = plc.ReadValue(ConveyorLineInfoDBName.R_TBSB_TwoSide.ToString(), plc.PLCDescroption).ToString();
var SBtask = agvRepository.FindFirst(f => f.agv_toaddress == plc.PLCDescroption || f.agv_fromaddress == plc.PLCDescroption);
if (SBtask != null) { continue; }
var route = routingRepository.Find(f => f.route_end == plc.PLCDescroption);
List storedHCJ = new List();
List emptyHCJ = new List();
var iswork = "";
foreach (var r in route)
{
var taska = agvRepository.FindFirst(f => f.agv_toaddress == r.route_began);
if (taska != null) { continue; }
var fromaddress = locRepository.FindFirst(f => f.upper_code == r.route_began || f.down_code == r.route_began);
iswork = zagvplc.ReadValue(ConveyorLineInfoDBName.R_Location_iswork.ToString(), r.route_began).ToString();
//if (iswork == "2" && fromaddress.location_state == LocationStateEnum.LocationState_Stored.ToString()) { storedHCJ.Add(r.route_began); }
//else if (iswork == "1" && fromaddress.location_state == LocationStateEnum.LocationState_Empty.ToString()) { emptyHCJ.Add(r.route_began); }
if (iswork == "2") { storedHCJ.Add(r.route_began); }
else if (iswork == "1") { emptyHCJ.Add(r.route_began); }
}
GetEquipmentInfo(plc.PLCDescroption, isSBWork, batchNo, processName + "单面模式:" + oneside + "双面模式" + twoside, route[0].route_began + "的货位状态是" + iswork + ";" + route[1].route_began + "的货位状态是" + iswork);
if (emptyHCJ.Count() == 2)
{
WriteLog.Info("F_TBSB_UpTask").Write("F_TBSB_UpTask" + TBSB + "1", "F_TBSB_UpTask");
if (bool.Parse(twoside))
{
WriteLog.Info("F_TBSB_UpTask").Write("F_TBSB_UpTask" + TBSB + "2", "F_TBSB_UpTask");
var jjkloc = locRepository.FindFirst(f => f.down_code == "FJXL-JJK001" || f.upper_code == "FJSL-JJK001");
if (jjkloc.location_state == LocationStateEnum.LocationState_Empty.ToString())
{
WriteLog.Info("F_TBSB_UpTask").Write("F_TBSB_UpTask" + TBSB + "3", "F_TBSB_UpTask");
lock (requestJJK)
{
responseContent = locRepository.DbContextBeginTransaction(() =>
{
//调用大及卷库出库需求接口
dt_agvtask agvtask = new dt_agvtask
{
agv_materbarcode = "daiding",
agv_barcode = "",
agv_code = "负极1号AGV",
agv_createtime = DateTime.Now,
agv_fromaddress = "nou",
agv_grade = 1,
agv_materielid = batchNo,
agv_qty = 1,
agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep),
agv_taskstate = "WaitStockOut",
agv_tasktype = "TaskType_Outbound",
agv_toaddress = emptyHCJ[0],
agv_userid = "WCS",
agv_worktype = 1
};
//向MES申请要料
MESback WMSbackresult = MESAPIInvoke.OutNeedStosk(agvtask.agv_tasknum, null, 1, batchNo, processName, plc.PLCDescroption);
if (WMSbackresult == null) { return WebResponseContent.Instance.Error("负极大极卷库不通过要料申请"); }
jjkloc.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(jjkloc, true);
var tbloc = locRepository.FindFirst(f => f.down_code == emptyHCJ[0] || f.upper_code == emptyHCJ[0]);
tbloc.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(tbloc, true);
agvRepository.Add(agvtask, true);
WriteLog.Info("F_TBSB_UpTask").Write("F_TBSB_UpTask"+ TBSB + agvtask.agv_tasknum + DateTime.Now, "F_TBSB_UpTask");
return WebResponseContent.Instance.OK();
});
break;
}
}
}
else if (bool.Parse(oneside))
{
//规格
string specifications = plc.ReadValue(ConveyorLineInfoDBName.R_TBSB_Specifications.ToString(), plc.PLCDescroption).ToString();
//厚度
string um = specifications.Split('*')[0];
//宽度
string mm = specifications.Split('*')[1];
var rou = routingRepository.Find(f => f.route_end == emptyHCJ[0]).Select(s => s.route_began).ToList();
List CBJstocks = new List();
//循环去找库存里物料类型与MES的物料类型一致的物料并且location_id是拆包间的
for (int i = 0; i < rou.Count(); i++)
{
var location = locRepository.FindFirst(f => f.upper_code == rou[i] || f.down_code == rou[i]);
var st = groupRepository.FindFirst(f => f.MaterialType == batchNo && f.location_id == location.id&&f.Remark2==um&&f.Remark3==mm);
if (st == null) { continue; }
CBJstocks.Add(st);
}
if (CBJstocks.Count == 0) { continue; }
//把CBJstocks通过批次号进行降序排列然后取第一条
var CBJstock = CBJstocks.OrderByDescending(o => o.BarCode).First();
//去货位表找对应的location_id
var islocation = locRepository.FindFirst(f => f.id == CBJstock.location_id);
if (islocation.location_state == LocationStateEnum.LocationState_Stored.ToString())
{
dt_agvtask agvtask = new dt_agvtask
{
agv_materbarcode = CBJstock.BarCode,
agv_barcode = "",
agv_code = "负极1号AGV",
agv_createtime = DateTime.Now,
agv_fromaddress = islocation.down_code,
agv_grade = 1,
agv_materielid = batchNo,
agv_qty = 1,
agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep),
agv_taskstate = "Create",
agv_tasktype = "TaskType_Outbound",
agv_toaddress = emptyHCJ[0],
agv_userid = "WCS",
agv_worktype = 1
};
//修改库存状态
//stock.first_tb = stock.first_tb + 1;
//groupRepository.Update(CBJstock, true);
agvRepository.Add(agvtask, true);
WriteLog.Info("F_TBSB_UpTask").Write("F_TBSB_UpTask"+ TBSB + agvtask.agv_tasknum + CBJstock.BarCode + DateTime.Now, "F_TBSB_UpTask");
islocation.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(islocation, true);
var loc = locRepository.FindFirst(f => f.upper_code == emptyHCJ[0] || f.down_code == emptyHCJ[0]);
loc.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(loc, true);
break;
}
}
}
else if (storedHCJ.Count() == 1 && emptyHCJ.Count() == 1)
{
var stocks = new bill_group_stock();
var location = locRepository.FindFirst(f => f.upper_code == storedHCJ[0] || f.down_code == storedHCJ[0]);
stocks = groupRepository.FindFirst(f => f.MaterialType == batchNo && f.location_id == location.id);
//有货的货位中没有匹配的物料
if (stocks == null)
{
if (bool.Parse(twoside))
{
var jjkloc = locRepository.FindFirst(f => f.down_code == "ZJXL-JJK001" || f.upper_code == "ZJSL-JJK001");
if (jjkloc.location_state == LocationStateEnum.LocationState_Empty.ToString())
{
lock (requestJJK)
{
//调用大及卷库出库需求接口
dt_agvtask agvtask = new dt_agvtask
{
agv_materbarcode = "daiding",
agv_barcode = "",
agv_code = "负极1号AGV",
agv_createtime = DateTime.Now,
agv_fromaddress = "nou",
agv_grade = 1,
agv_materielid = batchNo,
agv_qty = 1,
agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep),
agv_taskstate = "WaitStockOut",
agv_tasktype = "TaskType_Outbound",
agv_toaddress = emptyHCJ[0],
agv_userid = "WCS",
agv_worktype = 1
};
//向MES申请要料
MESback WMSbackresult = MESAPIInvoke.OutNeedStosk(agvtask.agv_tasknum, null, 1, batchNo, processName, plc.PLCDescroption);
if (WMSbackresult == null) { continue; }
jjkloc.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(jjkloc, true);
var tbloc = locRepository.FindFirst(f => f.down_code == emptyHCJ[0] || f.upper_code == emptyHCJ[0]);
tbloc.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(tbloc, true);
agvRepository.Add(agvtask, true);
WriteLog.Info("F_TBSB_UpTask").Write("F_TBSB_UpTask" + agvtask.agv_tasknum + DateTime.Now, "F_TBSB_UpTask");
break;
}
}
}
else if (bool.Parse(oneside))
{
//规格
string specifications = plc.ReadValue(ConveyorLineInfoDBName.R_TBSB_Specifications.ToString(), plc.PLCDescroption).ToString();
//厚度
string um = specifications.Split('*')[0];
//宽度
string mm = specifications.Split('*')[1];
var rou = routingRepository.Find(f => f.route_end == emptyHCJ[0]).Select(s => s.route_began).ToList();
List CBJstocks = new List();
//循环去找库存里物料类型与MES的物料类型一致的物料并且location_id是拆包间的
for (int i = 0; i < rou.Count(); i++)
{
var loc = locRepository.FindFirst(f => f.upper_code == rou[i] || f.down_code == rou[i]);
var st = groupRepository.FindFirst(f => f.MaterialType == batchNo && f.location_id == loc.id&&f.Remark2==um&&f.Remark3==mm);
if (st == null) { continue; }
CBJstocks.Add(st);
}
if (CBJstocks.Count == 0) { continue; }
// 把CBJstocks通过批次号进行降序排列然后取第一条
var CBJstock = CBJstocks.OrderByDescending(o => o.BarCode).First();
//去货位表找对应的location_id
var islocation = locRepository.FindFirst(f => f.id == CBJstock.location_id);
if (islocation.location_state == LocationStateEnum.LocationState_Stored.ToString())
{
dt_agvtask agvtask = new dt_agvtask
{
agv_materbarcode = CBJstock.BarCode,
agv_barcode = "",
agv_code = "负极1号AGV",
agv_createtime = DateTime.Now,
agv_fromaddress = islocation.down_code,
agv_grade = 1,
agv_materielid = batchNo,
agv_qty = 1,
agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep),
agv_taskstate = "Create",
agv_tasktype = "TaskType_Outbound",
agv_toaddress = emptyHCJ[0],
agv_userid = "WCS",
agv_worktype = 1
};
//修改库存状态
// stock.first_tb = stock.first_tb + 1;
//groupRepository.Update(CBJstock, true);
agvRepository.Add(agvtask, true);
WriteLog.Info("F_TBSB_UpTask").Write("F_TBSB_UpTask" + agvtask.agv_tasknum + CBJstock.BarCode + DateTime.Now, "F_TBSB_UpTask");
islocation.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(islocation, true);
var loc = locRepository.FindFirst(f => f.upper_code == emptyHCJ[0] || f.down_code == emptyHCJ[0]);
loc.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(loc, true);
break;
}
}
}
else
{
if (bool.Parse(isSBWork) && location.location_state == LocationStateEnum.LocationState_Stored.ToString() && stocks.MaterialType == batchNo)
{
dt_agvtask agvtask = new dt_agvtask
{
agv_materbarcode = stocks.BarCode,
agv_barcode = "",
agv_code = "负极1号AGV",
agv_createtime = DateTime.Now,
agv_fromaddress = storedHCJ[0],
agv_grade = 1,
agv_materielid = batchNo,
agv_qty = 1,
agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep),
agv_taskstate = "Create",
agv_tasktype = "TaskType_Outbound",
agv_toaddress = plc.PLCDescroption,
agv_userid = "WCS",
agv_worktype = 1
};
//写入请求上料响应信号
char[] batchnos = new char[100];
string materialtype = stocks.BarCode.Split('*')[0];
for (int i = 0; i < materialtype.Length; i++)
{
batchnos[i] = materialtype[i];
}
string ismateriala = plc.WriteValue(ConveyorLineInfoDBName.W_TBSB_BatchNo.ToString(), plc.PLCDescroption, batchnos).ToString();
WriteLog.Info("W_TBSB_BatchNo").Write("W_TBSB_BatchNo" + agvtask.agv_tasknum + materialtype + DateTime.Now, "W_TBSB_BatchNo");
//修改起点货位状态
agvRepository.Add(agvtask, true);
WriteLog.Info("F_TBSB_UpTask").Write("F_TBSB_UpTask" + agvtask.agv_tasknum + stocks.BarCode + DateTime.Now, "F_TBSB_UpTask");
location.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(location, true);
break;
}
else
{
//zagvplc.WriteValue(ConveyorLineInfoDBName.MaterNG.ToString(), storedHCJ[0],1);
}
}
}
else if (storedHCJ.Count() == 2)
{
//调用WMS接口获取上料信息
//MESback material = MESAPIInvoke.EquipFeeding(plc.PLCDescroption, batchNo);
//if (material == null) {continue; }
//if (material.Code > 0)
// continue;
List TBstocks = new List();
var stocks = new bill_group_stock();
for (int i = 0; i < storedHCJ.Count(); i++)
{
var location = locRepository.FindFirst(f => f.upper_code == storedHCJ[i] || f.down_code == storedHCJ[i]);
stocks = groupRepository.FindFirst(f => f.MaterialType == batchNo && f.location_id == location.id);
if (stocks == null) { continue; }
TBstocks.Add(stocks);
}
if (TBstocks.Count() > 1)
{
var TBstock = TBstocks.OrderByDescending(o => o.BarCode).First();
var fromlocation = locRepository.FindFirst(f => f.id == TBstock.location_id);
if (bool.Parse(isSBWork) && fromlocation.location_state == LocationStateEnum.LocationState_Stored.ToString() && TBstock.MaterialType == batchNo)
{
dt_agvtask agvtask = new dt_agvtask
{
agv_materbarcode = TBstock.BarCode,
agv_barcode = "",
agv_code = "负极1号AGV",
agv_createtime = DateTime.Now,
agv_fromaddress = fromlocation.upper_code,
agv_grade = 1,
agv_materielid = batchNo,
agv_qty = 1,
agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep),
agv_taskstate = "Create",
agv_tasktype = "TaskType_Outbound",
agv_toaddress = plc.PLCDescroption,
agv_userid = "WCS",
agv_worktype = 1
};
agvRepository.Add(agvtask, true);
WriteLog.Info("F_TBSB_UpTask").Write("F_TBSB_UpTask" + agvtask.agv_tasknum + TBstock.BarCode + DateTime.Now, "F_TBSB_UpTask");
fromlocation.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(fromlocation, true);
//写入请求上料响应信号
char[] batchnos = new char[100];
string materialtype = TBstocks[0].BarCode.Split('*')[0];
for (int i = 0; i < materialtype.Length; i++)
{
batchnos[i] = materialtype[i];
}
string ismateriala = plc.WriteValue(ConveyorLineInfoDBName.W_TBSB_BatchNo.ToString(), plc.PLCDescroption, batchnos).ToString();
WriteLog.Info("W_TBSB_BatchNo").Write("W_TBSB_BatchNo" + agvtask.agv_tasknum + materialtype + DateTime.Now, "W_TBSB_BatchNo");
// 修改库存状态
// stock.first_tb = stock.first_tb + 1;
//groupRepository.Update(TBstock, true);
break;
}
else
{
//zagvplc.WriteValue(ConveyorLineInfoDBName.MaterNG.ToString(), fromlocation.upper_code, 1);
}
}
else if (TBstocks.Count() == 1)
{
var fromlocation = locRepository.FindFirst(f => f.id == TBstocks[0].location_id);
if (bool.Parse(isSBWork) && fromlocation.location_state == LocationStateEnum.LocationState_Stored.ToString() && TBstocks[0].MaterialType == batchNo)
{
dt_agvtask agvtask = new dt_agvtask
{
agv_materbarcode = TBstocks[0].BarCode,
agv_barcode = "",
agv_code = "负极1号AGV",
agv_createtime = DateTime.Now,
agv_fromaddress = fromlocation.upper_code,
agv_grade = 1,
agv_materielid = batchNo,
agv_qty = 1,
agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep),
agv_taskstate = "Create",
agv_tasktype = "TaskType_Outbound",
agv_toaddress = plc.PLCDescroption,
agv_userid = "WCS",
agv_worktype = 1
};
agvRepository.Add(agvtask, true);
WriteLog.Info("F_TBSB_UpTask").Write("F_TBSB_UpTask" + agvtask.agv_tasknum + TBstocks[0].BarCode + DateTime.Now, "F_TBSB_UpTask");
fromlocation.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(fromlocation, true);
//写入请求上料响应信号
char[] batchnos = new char[100];
string materialtype = TBstocks[0].BarCode.Split('*')[0];
for (int i = 0; i < materialtype.Length; i++)
{
batchnos[i] = materialtype[i];
}
string ismateriala = plc.WriteValue(ConveyorLineInfoDBName.W_TBSB_BatchNo.ToString(), plc.PLCDescroption, batchnos).ToString();
WriteLog.Info("W_TBSB_BatchNo").Write("W_TBSB_BatchNo" + agvtask.agv_tasknum + materialtype + DateTime.Now, "W_TBSB_BatchNo");
// 修改库存状态
// stock.first_tb = stock.first_tb + 1;
//groupRepository.Update(TBstock, true);
break;
}
else
{
//zagvplc.WriteValue(ConveyorLineInfoDBName.MaterNG.ToString(), fromlocation.upper_code, 1);
}
}
}
}
List HCJnos = new List { "FJSL-FQHCJ001",
"FJSL-TBHCJ007","FJSL-TBHCJ008","FJSL-TBHCJ009","FJSL-TBHCJ010","FJSL-TBHCJ011","FJSL-TBHCJ012",
"FJSL-TBHCJ001","FJSL-TBHCJ002","FJSL-TBHCJ003","FJSL-TBHCJ004","FJSL-TBHCJ005","FJSL-TBHCJ006",
"FJSL-FQHCJ002","FJSL-GYHCJ001","FJSL-GYHCJ002","FJSL-GYHCJ003","FJSL-QXHCJ001","FJSL-QXHCJ002"};
PLCClient plca = null;
string toadd = "";
var task = agvRepository.FindFirst(f => (f.agv_toaddress.Contains("JJK") && f.agv_fromaddress.Contains("FJ")) || (f.agv_fromaddress == "nou" && f.agv_toaddress.Contains("HCJ") && f.agv_toaddress.Contains("FJ")));
if (task != null)
{
WriteLog.Info("F_InOut_Djjk").Write("负极大极卷库有正在执行的任务" + DateTime.Now, "F_InOut_Djjk");
return;
}
foreach (var hcj in HCJnos)
{
toadd = "FJXL-JJK001";
plca = WCSService.Clients.Find(v => v.PLCName == "负极1号AGV");
if (plca == null)
continue;
var iswork = plca.ReadValue(ConveyorLineInfoDBName.R_Location_iswork.ToString(), toadd).ToString();
if (iswork == "2")
continue;
//读取有货无货信号
var isemptyorwork = plca.ReadValue(ConveyorLineInfoDBName.R_Location_iswork.ToString(), hcj).ToString();
GetEquipmentInfo(toadd, hcj + "的货位状态是" + isemptyorwork, "", "", iswork);
if (isemptyorwork == "1")
continue;
var location = locRepository.FindFirst(v => v.upper_code == hcj);
var stock = groupRepository.Find(v => v.location_id == location.id).OrderByDescending(v => v.created_time).FirstOrDefault();
var loc = locRepository.FindFirst(f => f.upper_code == "FJSL-JJK001" && f.down_code == "FJXL-JJK001");
if (stock == null)
continue;
//判断当前状态是否有更新
if (hcj.Contains("TB") && hcj.Contains("FJ"))
{
if (string.IsNullOrEmpty(stock.TB_Status))
{
continue;
}
}
else if (hcj.Contains("FQ") && hcj.Contains("FJ"))
{
if (string.IsNullOrEmpty(stock.QX_Status))
{
continue;
}
}
else if (hcj.Contains("QX") && hcj.Contains("FJ"))
{
if (string.IsNullOrEmpty(stock.GY_Status))
{
continue;
}
}
else if (hcj.Contains("GY") && hcj.Contains("FJ"))
{
if (string.IsNullOrEmpty(stock.TB_Status))
{
continue;
}
}
lock (requestFJJK)
{
if (loc.location_state == LocationStateEnum.LocationState_Empty.ToString() && location.location_state == LocationStateEnum.LocationState_Stored.ToString() && stock.BarCode != null && stock.MaterialStatus != null)
{
WebResponseContent responseContents = new WebResponseContent();
responseContents = locRepository.DbContextBeginTransaction(() =>
{
MESback WMSbackresult = MESAPIInvoke.PreTask(2);
if (WMSbackresult == null)
{
return WebResponseContent.Instance.Error("负极大极卷库不通过入库申请");
}
dt_agvtask agvtask = new dt_agvtask
{
agv_materbarcode = stock.BarCode,
agv_barcode = "",
agv_code = plca.PLCName,
agv_createtime = DateTime.Now,
agv_fromaddress = hcj,
agv_grade = 1,
agv_materielid = stock.MaterialType,
agv_qty = 1,
agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep),
agv_taskstate = "Create",
agv_tasktype = "TaskType_Outbound",
agv_toaddress = toadd,
agv_userid = "WCS",
agv_worktype = 1
};
agvRepository.Add(agvtask, true);
WriteLog.Info("F_InOut_Djjk").Write("F_InOut_Djjk" + agvtask.agv_tasknum + stock.BarCode + DateTime.Now, "F_InOut_Djjk");
location.location_state = LocationStateEnum.LocationState_Lock.ToString();
loc.location_state = LocationStateEnum.LocationState_Lock.ToString();
locRepository.Update(loc, true);
locRepository.Update(location, true);
return WebResponseContent.Instance.OK();
});
}
}
}
}
catch (Exception)
{
}
finally
{
Interlocked.Exchange(ref _readFTBUPSignalso, 0);
}
}
}
}
}