You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
436 lines
18 KiB
C#
436 lines
18 KiB
C#
using Jc.SnowId;
|
|
using Khd.Core.Application.Interface;
|
|
using Khd.Core.Domain.Dto.webapi;
|
|
using Khd.Core.Domain.Models;
|
|
using Khd.Core.EntityFramework;
|
|
using Masuit.Tools.Logging;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using System;
|
|
using System.Linq;
|
|
using Z.EntityFramework.Plus;
|
|
|
|
namespace Khd.Core.Application
|
|
{
|
|
public class WcsTaskApplication : IWcsTaskApplication
|
|
{
|
|
private readonly DefaultDbContext _dbContext;
|
|
private readonly static JcSnowId _snowId = new JcSnowId();
|
|
|
|
public WcsTaskApplication(IServiceProvider serviceProvider)
|
|
{
|
|
_dbContext = serviceProvider.GetService<DefaultDbContext>();
|
|
}
|
|
|
|
public WcsTask Get(int id)
|
|
{
|
|
var entity = _dbContext.WcsTask
|
|
.Where(c => 1 == 1)
|
|
.FirstOrDefault();
|
|
return entity;
|
|
}
|
|
|
|
public WcsTask Add(WcsTask model)
|
|
{
|
|
var entity = _dbContext.Add(model);
|
|
_dbContext.SaveChanges();
|
|
return entity.Entity;
|
|
|
|
}
|
|
|
|
public WcsTask Update(WcsTask model)
|
|
{
|
|
var list = _dbContext.WcsTask.Where(t => t.objid == model.objid).Update(a => model);
|
|
return model;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 接收agv接收任务通知接口
|
|
/// </summary>
|
|
/// <param name="agvCallbackDto"></param>
|
|
/// <returns></returns>
|
|
public ReponseagvCallbackDto AgvCallback(agvCallbackDto agvCallbackDto)
|
|
{
|
|
ReponseagvCallbackDto reponseagvCallbackDto = new ReponseagvCallbackDto();
|
|
try
|
|
{
|
|
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.taskCode == agvCallbackDto.taskCode);
|
|
if (wcsTask != null)
|
|
{
|
|
//start 开始 end结束 continue继续
|
|
//待取货
|
|
if (agvCallbackDto.method.ToLower() == "start")
|
|
{
|
|
wcsTask.taskStatus = 2;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 });
|
|
_dbContext.SaveChanges();
|
|
reponseagvCallbackDto.code = "0";
|
|
reponseagvCallbackDto.message = "成功";
|
|
}
|
|
if (agvCallbackDto.method.ToLower() == "con")
|
|
{
|
|
wcsTask.taskStatus = 4;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
|
|
_dbContext.SaveChanges();
|
|
reponseagvCallbackDto.code = "0";
|
|
reponseagvCallbackDto.message = "成功";
|
|
}
|
|
//已取货待放货
|
|
if (agvCallbackDto.method.ToLower() == "continue")
|
|
{
|
|
|
|
wcsTask.taskStatus = 3;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 });
|
|
_dbContext.SaveChanges();
|
|
reponseagvCallbackDto.code = "0";
|
|
reponseagvCallbackDto.message = "成功";
|
|
}
|
|
//放货完成
|
|
if (agvCallbackDto.method.ToLower() == "end")
|
|
{
|
|
if (wcsTask.nextPointId != 10)
|
|
{
|
|
wcsTask.taskStatus = 5;
|
|
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 });
|
|
_dbContext.SaveChanges();
|
|
reponseagvCallbackDto.code = "0";
|
|
reponseagvCallbackDto.message = "成功";
|
|
}
|
|
else
|
|
{
|
|
wcsTask.taskStatus = 6;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
|
|
_dbContext.SaveChanges();
|
|
reponseagvCallbackDto.code = "0";
|
|
reponseagvCallbackDto.message = "成功";
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
reponseagvCallbackDto.code = "1";
|
|
reponseagvCallbackDto.message = "未找到当前任务";
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogManager.Error(ex);
|
|
reponseagvCallbackDto.code = "1";
|
|
reponseagvCallbackDto.message = ex.Message;
|
|
}
|
|
//返回请求
|
|
reponseagvCallbackDto.reqCode = reponseagvCallbackDto.reqCode;
|
|
return reponseagvCallbackDto;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 入库完成
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string InWare(long taskId)
|
|
{
|
|
return "";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 出库完成
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string OutWare(long taskId)
|
|
{
|
|
return "";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 背负式Agv通知完成
|
|
/// </summary>
|
|
/// <param name="agvCompeletedRequest"></param>
|
|
/// <returns></returns>
|
|
public AgvCompeletedResponse MesToAgvComplete(AgvCompeleted agvCompeletedRequest)
|
|
{
|
|
AgvCompeletedResponse agvCompeletedResponse = new AgvCompeletedResponse();
|
|
try
|
|
{
|
|
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == agvCompeletedRequest.endStationCode);
|
|
if (baseEquip != null)
|
|
{
|
|
var wcsTask = _dbContext.WcsTask
|
|
.Where(t => (t.taskType == 32 || t.taskType == 48)&&(t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid))
|
|
.FirstOrDefault();
|
|
if (wcsTask != null)
|
|
{
|
|
if (wcsTask.taskType != 48)
|
|
{
|
|
wcsTask.taskStatus = 7;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
|
|
_dbContext.SaveChanges();
|
|
agvCompeletedResponse.code = "0";
|
|
agvCompeletedResponse.message = "成功";
|
|
}
|
|
else
|
|
{
|
|
wcsTask.taskStatus = 4;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
|
|
_dbContext.SaveChanges();
|
|
agvCompeletedResponse.code = "0";
|
|
agvCompeletedResponse.message = "成功";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
agvCompeletedResponse.code = "1";
|
|
agvCompeletedResponse.message = "未找到当前任务";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
agvCompeletedResponse.code = "1";
|
|
agvCompeletedResponse.message = "未找到当前工位";
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogManager.Error(ex);
|
|
agvCompeletedResponse.code = "1";
|
|
agvCompeletedResponse.message = ex.Message;
|
|
}
|
|
return agvCompeletedResponse;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 4楼到5楼原材料入口继续
|
|
/// </summary>
|
|
/// <param name="taskContinue"></param>
|
|
/// <returns></returns>
|
|
public AgvCompeletedResponse TaskContinue(TaskContinue taskContinue)
|
|
{
|
|
AgvCompeletedResponse compeletedResponse = new AgvCompeletedResponse();
|
|
try
|
|
{
|
|
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
var wcsTask = _dbContext.WcsTask
|
|
.Where(t => t.taskType == 47)
|
|
.Where(t => t.masterId == taskContinue.materialId)
|
|
.FirstOrDefault();
|
|
if (wcsTask != null)
|
|
{
|
|
wcsTask.useFlag = 1;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(a => new WcsTaskLog { useFlag = 1 });
|
|
_dbContext.SaveChanges();
|
|
compeletedResponse.code = "0";
|
|
compeletedResponse.message = "成功";
|
|
}
|
|
else
|
|
{
|
|
compeletedResponse.code = "1";
|
|
compeletedResponse.message = "未找到当前任务";
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogManager.Error(ex);
|
|
compeletedResponse.code = "1";
|
|
compeletedResponse.message = ex.Message;
|
|
}
|
|
return compeletedResponse;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 柜体拆分区通知返库
|
|
/// </summary>
|
|
/// <param name="taskReturn"></param>
|
|
/// <returns></returns>
|
|
public AgvCompeletedResponse TaskReturn(TaskReturn taskReturn)
|
|
{
|
|
AgvCompeletedResponse compeletedResponse = new AgvCompeletedResponse();
|
|
try
|
|
{
|
|
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
WcsTask wcsTask = _dbContext.WcsTask
|
|
.Where(t => t.taskType == 28)
|
|
.Where(t => t.endPointNo == taskReturn.endStationCode)
|
|
.FirstOrDefault();
|
|
if (wcsTask != null)
|
|
{
|
|
wcsTask.useFlag = 1;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(a => new WcsTask { useFlag = 1 });
|
|
_dbContext.SaveChanges();
|
|
compeletedResponse.code = "0";
|
|
compeletedResponse.message = "成功";
|
|
}
|
|
else
|
|
{
|
|
compeletedResponse.code = "1";
|
|
compeletedResponse.message = "未找到当前任务";
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogManager.Error(ex);
|
|
compeletedResponse.code = "1";
|
|
compeletedResponse.message = ex.Message;
|
|
}
|
|
return compeletedResponse;
|
|
}
|
|
|
|
public ReponseagvCallbackDto AgvCallback2(agvCallbackDto agvCallbackDto)
|
|
{
|
|
ReponseagvCallbackDto reponseagvCallbackDto = new ReponseagvCallbackDto();
|
|
try
|
|
{
|
|
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.taskCode == agvCallbackDto.taskCode);
|
|
if (wcsTask != null)
|
|
{
|
|
//start 开始 end结束 continue继续
|
|
//待取货
|
|
if (agvCallbackDto.method.ToLower() == "start")
|
|
{
|
|
wcsTask.taskStatus = 2;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 });
|
|
_dbContext.SaveChanges();
|
|
reponseagvCallbackDto.code = "0";
|
|
reponseagvCallbackDto.message = "成功";
|
|
}
|
|
if (agvCallbackDto.method.ToLower() == "con")
|
|
{
|
|
wcsTask.taskStatus = 4;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
|
|
_dbContext.SaveChanges();
|
|
reponseagvCallbackDto.code = "0";
|
|
reponseagvCallbackDto.message = "成功";
|
|
}
|
|
//已取货待放货
|
|
if (agvCallbackDto.method.ToLower() == "continue")
|
|
{
|
|
if (wcsTask.taskStatus > 3)
|
|
{
|
|
wcsTask.taskStatus = 5;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 });
|
|
_dbContext.SaveChanges();
|
|
reponseagvCallbackDto.code = "0";
|
|
reponseagvCallbackDto.message = "成功";
|
|
}
|
|
else
|
|
{
|
|
wcsTask.taskStatus = 3;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 });
|
|
_dbContext.SaveChanges();
|
|
reponseagvCallbackDto.code = "0";
|
|
reponseagvCallbackDto.message = "成功";
|
|
}
|
|
}
|
|
//放货完成
|
|
if (agvCallbackDto.method.ToLower() == "end")
|
|
{
|
|
wcsTask.taskStatus = 7;
|
|
_dbContext.WcsTask.Update(wcsTask);
|
|
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
|
|
_dbContext.SaveChanges();
|
|
reponseagvCallbackDto.code = "0";
|
|
reponseagvCallbackDto.message = "成功";
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogManager.Error(ex);
|
|
reponseagvCallbackDto.code = "1";
|
|
reponseagvCallbackDto.message = ex.Message;
|
|
}
|
|
//返回请求
|
|
reponseagvCallbackDto.reqCode = reponseagvCallbackDto.reqCode;
|
|
return reponseagvCallbackDto;
|
|
}
|
|
|
|
public ReponseMessage CallMaterial(CallMaterial callMaterial)
|
|
{
|
|
ReponseMessage reponseMessage = new ReponseMessage();
|
|
try
|
|
{
|
|
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
WmsRawOutstock wmsRawOutstock = _dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == Convert.ToInt64(callMaterial.rawOutstockId));
|
|
if (wmsRawOutstock != null)
|
|
{
|
|
bool hasTask = _dbContext.WcsTask.Where(t => t.currPointId == 31).Any();
|
|
bool hasTaskManual = _dbContext.WcsTaskManual.Where(t => t.endPointId == 31 || t.currPointId == 31 || t.taskType == 999).Any();
|
|
if (hasTask || hasTaskManual)
|
|
{
|
|
reponseMessage.code = "1";
|
|
reponseMessage.message = "当前有任务,请等待任务完成后再申请";
|
|
}
|
|
else
|
|
{
|
|
BaseEquip endEquip = _dbContext.BaseEquip.First(t => t.objid == 31);
|
|
BaseEquip baseEquip = _dbContext.BaseEquip.First(t => t.objid == 9);
|
|
WcsTaskManual wcsTaskManual = new WcsTaskManual();
|
|
wcsTaskManual.taskType = 999;
|
|
wcsTaskManual.objid = _snowId.NextId();
|
|
wcsTaskManual.orderId = Convert.ToInt64(callMaterial.rawOutstockId);
|
|
_dbContext.Add(wcsTaskManual);
|
|
_dbContext.SaveChanges();
|
|
reponseMessage.code = "0";
|
|
reponseMessage.message = "成功";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
reponseMessage.code = "1";
|
|
reponseMessage.message = "未找到当前申请单的任务";
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
reponseMessage.code = "1";
|
|
reponseMessage.message = ex.Message;
|
|
LogManager.Error(ex);
|
|
}
|
|
return reponseMessage;
|
|
}
|
|
|
|
public ReponseMessage AGVTaskComplete()
|
|
{
|
|
ReponseMessage reponseMessage = new ReponseMessage();
|
|
try
|
|
{
|
|
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
bool hasTask = _dbContext.WcsTask.Where(t => t.taskType == 41).Any();
|
|
if (!hasTask)
|
|
{
|
|
reponseMessage.code = "0";
|
|
reponseMessage.message = "成功";
|
|
}
|
|
else
|
|
{
|
|
reponseMessage.code = "1";
|
|
reponseMessage.message = "当前不可翻转";
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
reponseMessage.code = "1";
|
|
reponseMessage.message = ex.Message;
|
|
LogManager.Error(ex);
|
|
}
|
|
return reponseMessage;
|
|
}
|
|
}
|
|
} |