|
|
|
|
@ -174,7 +174,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
if (ex is PlcException)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
@ -236,7 +236,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
if (ex is PlcException)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
@ -290,163 +290,175 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 1);
|
|
|
|
|
if (Convert.ToInt32(linesignal01Value) == 1)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
//判断task表里没有该rfid的未完成的入库
|
|
|
|
|
//信息,未下发去向
|
|
|
|
|
var task = dbContext.WcsTask.Where(t => t.IsDelete == 0).Where(t => t.nextPointId == 1).OrderBy(t => t.createTime).FirstOrDefault();
|
|
|
|
|
if (task == null)
|
|
|
|
|
{
|
|
|
|
|
//判断task表里没有该rfid的未完成的入库
|
|
|
|
|
//信息,未下发去向
|
|
|
|
|
var task = dbContext.WcsTask.Where(t => t.nextPointId == 1).OrderBy(t => t.createTime).FirstOrDefault();
|
|
|
|
|
if (task == null)
|
|
|
|
|
if (BigContainerCodes.Contains(RFID001Value))
|
|
|
|
|
{
|
|
|
|
|
if (BigContainerCodes.Contains(RFID001Value))
|
|
|
|
|
var newTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
var newTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
serialNo = SystemData.GetSerialNo(dbContext),
|
|
|
|
|
equipmentNo = "F01",
|
|
|
|
|
taskType = 5,
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
containerNo = RFID001Value,
|
|
|
|
|
currPointId = F01,
|
|
|
|
|
currPointNo = "TSJ_01",
|
|
|
|
|
nextPointId = T01,
|
|
|
|
|
nextPointNo = "TSJ_01",
|
|
|
|
|
fromFloorNo = 1,
|
|
|
|
|
floorNo = 4,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
createBy = "一楼接驳位",
|
|
|
|
|
createTime = DateTime.Now,
|
|
|
|
|
remark = "一楼创建入库任务"
|
|
|
|
|
};
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
dbContext.Add(newTask);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//根据托盘号获取物料码
|
|
|
|
|
var material = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == RFID001Value).FirstOrDefault();
|
|
|
|
|
WcsTaskLog? taskLog = dbContext.WcsTaskLog.Where(t => t.containerNo == RFID001Value).OrderByDescending(t => t.createTime).FirstOrDefault();
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
serialNo = SystemData.GetSerialNo(dbContext),
|
|
|
|
|
equipmentNo = "F01",
|
|
|
|
|
taskType = 5,
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
containerNo = RFID001Value,
|
|
|
|
|
currPointId = F01,
|
|
|
|
|
currPointNo = "TSJ_01",
|
|
|
|
|
nextPointId = T01,
|
|
|
|
|
nextPointNo = "TSJ_01",
|
|
|
|
|
fromFloorNo = 1,
|
|
|
|
|
floorNo = 4,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
createBy = "一楼接驳位",
|
|
|
|
|
createTime = DateTime.Now,
|
|
|
|
|
remark = "一楼创建入库任务"
|
|
|
|
|
};
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
dbContext.Add(newTask);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//根据托盘号获取物料码
|
|
|
|
|
var material = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == RFID001Value).FirstOrDefault();
|
|
|
|
|
WcsTaskLog? taskLog = dbContext.WcsTaskLog.Where(t => t.containerNo == RFID001Value).OrderByDescending(t => t.createTime).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
if (material != null)
|
|
|
|
|
if (material != null)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(material.materialBarcode))
|
|
|
|
|
{
|
|
|
|
|
if (taskLog != null)
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
bool hasBarInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.palletInfoCode == RFID001Value && t.barcodeInfo == material.materialBarcode).Any();
|
|
|
|
|
if (!hasBarInfo)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (taskLog != null)
|
|
|
|
|
{
|
|
|
|
|
if (taskLog.materialBarcode == material.materialBarcode)
|
|
|
|
|
{
|
|
|
|
|
if (taskLog.materialBarcode == material.materialBarcode)
|
|
|
|
|
if (baseEquip.containerNo == "0")
|
|
|
|
|
{
|
|
|
|
|
if (baseEquip.containerNo == "0")
|
|
|
|
|
{
|
|
|
|
|
baseEquip.containerNo = null;
|
|
|
|
|
dbContext.Update(baseEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
_logger.Info("一楼接驳位线程:托盘" + RFID001Value + "解绑信息更新成功");
|
|
|
|
|
}
|
|
|
|
|
else if (baseEquip.containerNo != RFID001Value)
|
|
|
|
|
{
|
|
|
|
|
baseEquip.containerNo = RFID001Value;
|
|
|
|
|
dbContext.Update(baseEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
_logger.Info("一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功");
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功");
|
|
|
|
|
Thread.Sleep(3000);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(3000);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
baseEquip.containerNo = null;
|
|
|
|
|
dbContext.Update(baseEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
_logger.Info("一楼接驳位线程:托盘" + RFID001Value + "解绑信息更新成功");
|
|
|
|
|
}
|
|
|
|
|
else if (baseEquip.containerNo != RFID001Value)
|
|
|
|
|
{
|
|
|
|
|
baseEquip.containerNo = RFID001Value;
|
|
|
|
|
dbContext.Update(baseEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
_logger.Info("一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功");
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功");
|
|
|
|
|
Thread.Sleep(3000);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(3000);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var warehouseId = dbContext.WmsWarehouseMaterial.Where(t => t.storageType == "1" && t.storageId == material.materialId).FirstOrDefault()?.warehouseId;
|
|
|
|
|
if (warehouseId != null)
|
|
|
|
|
var warehouseId = dbContext.WmsWarehouseMaterial.Where(t => t.storageType == "1" && t.storageId == material.materialId).FirstOrDefault()?.warehouseId;
|
|
|
|
|
if (warehouseId != null)
|
|
|
|
|
{
|
|
|
|
|
var TargetFloor = dbContext.WmsBaseWarehouse.Where(t => t.warehouseId == warehouseId).FirstOrDefault();
|
|
|
|
|
if (TargetFloor != null)
|
|
|
|
|
{
|
|
|
|
|
var TargetFloor = dbContext.WmsBaseWarehouse.Where(t => t.warehouseId == warehouseId).FirstOrDefault();
|
|
|
|
|
if (TargetFloor != null)
|
|
|
|
|
{
|
|
|
|
|
//插入task表
|
|
|
|
|
//插入task表
|
|
|
|
|
|
|
|
|
|
var dic = StaticData.BaseDictionary.Where(t => t.dicKey == "TaskType" && t.agvType == "I" && t.dicField == TargetFloor.warehouseInstockType).FirstOrDefault();
|
|
|
|
|
if (dic != null)
|
|
|
|
|
var dic = StaticData.BaseDictionary.Where(t => t.dicKey == "TaskType" && t.agvType == "I" && t.dicField == TargetFloor.warehouseInstockType).FirstOrDefault();
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
var newTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
var newTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
serialNo = SystemData.GetSerialNo(dbContext),
|
|
|
|
|
equipmentNo = "F01",
|
|
|
|
|
taskType = Convert.ToInt32(dic.dicValue),
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
containerNo = RFID001Value,
|
|
|
|
|
materialBarcode = material.materialBarcode,
|
|
|
|
|
materialId = material.materialId,
|
|
|
|
|
qty = Convert.ToInt32(material.bindAmount),
|
|
|
|
|
currPointId = F01,
|
|
|
|
|
currPointNo = "TSJ_01",
|
|
|
|
|
nextPointId = T01,
|
|
|
|
|
nextPointNo = "TSJ_01",
|
|
|
|
|
endPointId = warehouseId,
|
|
|
|
|
fromFloorNo = 1,
|
|
|
|
|
floorNo = TargetFloor.warehouseFloor,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
createBy = "一楼接驳位",
|
|
|
|
|
createTime = DateTime.Now,
|
|
|
|
|
remark = "一楼创建入库任务"
|
|
|
|
|
};
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
dbContext.Add(newTask);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
serialNo = SystemData.GetSerialNo(dbContext),
|
|
|
|
|
equipmentNo = "F01",
|
|
|
|
|
taskType = Convert.ToInt32(dic.dicValue),
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
containerNo = RFID001Value,
|
|
|
|
|
materialBarcode = material.materialBarcode,
|
|
|
|
|
materialId = material.materialId,
|
|
|
|
|
qty = Convert.ToInt32(material.bindAmount),
|
|
|
|
|
currPointId = F01,
|
|
|
|
|
currPointNo = "TSJ_01",
|
|
|
|
|
nextPointId = T01,
|
|
|
|
|
nextPointNo = "TSJ_01",
|
|
|
|
|
endPointId = warehouseId,
|
|
|
|
|
fromFloorNo = 1,
|
|
|
|
|
floorNo = TargetFloor.warehouseFloor,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
createBy = "一楼接驳位",
|
|
|
|
|
createTime = DateTime.Now,
|
|
|
|
|
remark = "一楼创建入库任务"
|
|
|
|
|
};
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
dbContext.Add(newTask);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(task.containerNo))//人工调出
|
|
|
|
|
{
|
|
|
|
|
if (task.useFlag == 1)
|
|
|
|
|
{
|
|
|
|
|
if (task.qty > 1)//多个托盘
|
|
|
|
|
{
|
|
|
|
|
if (task.endPointId != 1)
|
|
|
|
|
{
|
|
|
|
|
task.nextPointId = 6;
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (task.qty == 1)
|
|
|
|
|
{
|
|
|
|
|
if (task.endPointId != 1)
|
|
|
|
|
{
|
|
|
|
|
task.nextPointId = 6;
|
|
|
|
|
task.containerNo = RFID001Value;
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(task.containerNo))//人工调出
|
|
|
|
|
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == RFID001Value);
|
|
|
|
|
if (mesBasePalletInfo != null)
|
|
|
|
|
{
|
|
|
|
|
if (task.useFlag == 1)
|
|
|
|
|
MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.palletInfoCode == RFID001Value).FirstOrDefault();
|
|
|
|
|
if (mesBaseBarcodeInfo != null)
|
|
|
|
|
{
|
|
|
|
|
if (task.qty > 1)//多个托盘
|
|
|
|
|
{
|
|
|
|
|
if (task.endPointId != 1)
|
|
|
|
|
{
|
|
|
|
|
task.nextPointId = 6;
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (task.qty == 1)
|
|
|
|
|
{
|
|
|
|
|
if (task.endPointId != 1)
|
|
|
|
|
{
|
|
|
|
|
task.nextPointId = 6;
|
|
|
|
|
task.containerNo = RFID001Value;
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == RFID001Value);
|
|
|
|
|
if (mesBasePalletInfo != null)
|
|
|
|
|
{
|
|
|
|
|
mesBasePalletInfo.bindAmount = null;
|
|
|
|
|
mesBasePalletInfo.bindAmount = null;
|
|
|
|
|
mesBasePalletInfo.materialBarcode = null;
|
|
|
|
|
mesBasePalletInfo.materialCode = null;
|
|
|
|
|
mesBasePalletInfo.materialId = null;
|
|
|
|
|
mesBasePalletInfo.materialName = null;
|
|
|
|
|
mesBasePalletInfo.updateBy = "WCS";
|
|
|
|
|
mesBasePalletInfo.updateTime = DateTime.Now;
|
|
|
|
|
dbContext.Update(mesBasePalletInfo);
|
|
|
|
|
dbContext.Remove(task);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == task.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
mesBaseBarcodeInfo.palletInfoCode = null;
|
|
|
|
|
dbContext.Update(mesBaseBarcodeInfo);
|
|
|
|
|
}
|
|
|
|
|
mesBasePalletInfo.bindAmount = null;
|
|
|
|
|
mesBasePalletInfo.bindAmount = null;
|
|
|
|
|
mesBasePalletInfo.materialBarcode = null;
|
|
|
|
|
mesBasePalletInfo.materialCode = null;
|
|
|
|
|
mesBasePalletInfo.materialId = null;
|
|
|
|
|
mesBasePalletInfo.materialName = null;
|
|
|
|
|
mesBasePalletInfo.updateBy = "WCS";
|
|
|
|
|
mesBasePalletInfo.updateTime = DateTime.Now;
|
|
|
|
|
dbContext.Update(mesBasePalletInfo);
|
|
|
|
|
dbContext.Remove(task);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == task.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -457,14 +469,14 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
if (ex is PlcException)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_logger.Error(ex.Message + "\n" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Thread.Sleep(1000);
|
|
|
|
|
Thread.Sleep(3000);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -512,6 +524,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
_logger.Info("提升机线程:" + wcsTask.floorNo + "楼接驳位有AGV任务,跳过当前任务");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
|
|
|
|
|
if (wcsTask.containerNo == StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
{
|
|
|
|
|
@ -697,7 +710,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
if (ex is PlcException)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|