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.

508 lines
23 KiB
C#

1 year ago
using Jc.SnowId;
using Khd.Core.Application.Interface;
2 years ago
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
1 year ago
using Masuit.Tools.Logging;
2 years ago
using Microsoft.Extensions.DependencyInjection;
2 years ago
using System;
using System.Linq;
2 years ago
using Z.EntityFramework.Plus;
namespace Khd.Core.Application
{
public class WcsTaskApplication : IWcsTaskApplication
{
private readonly DefaultDbContext _dbContext;
1 year ago
private readonly static JcSnowId _snowId = new JcSnowId();
2 years ago
public WcsTaskApplication(IServiceProvider serviceProvider)
{
_dbContext = serviceProvider.GetService<DefaultDbContext>();
}
public WcsTask Get(int id)
{
var entity = _dbContext.WcsTask
2 years ago
.Where(c => 1 == 1)
2 years ago
.FirstOrDefault();
return entity;
}
1 year ago
2 years ago
public WcsTask Add(WcsTask model)
{
var entity = _dbContext.Add(model);
_dbContext.SaveChanges();
return entity.Entity;
}
1 year ago
2 years ago
public WcsTask Update(WcsTask model)
{
var list = _dbContext.WcsTask.Where(t => t.objid == model.objid).Update(a => model);
return model;
}
1 year ago
2 years ago
/// <summary>
/// 接收agv接收任务通知接口
/// </summary>
/// <param name="agvCallbackDto"></param>
/// <returns></returns>
public ReponseagvCallbackDto AgvCallback(agvCallbackDto agvCallbackDto)
{
ReponseagvCallbackDto reponseagvCallbackDto = new ReponseagvCallbackDto();
2 years ago
try
{
2 years ago
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
2 years ago
var wcscmd = _dbContext.WcsCmd
2 years ago
.Where(t => t.taskCode == agvCallbackDto.taskCode)
2 years ago
.FirstOrDefault();
2 years ago
if (wcscmd != null)
{
2 years ago
WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcscmd.taskId);
2 years ago
if (wcsTask != null)
2 years ago
{
1 year ago
Console.WriteLine(agvCallbackDto.method.ToLower() + "," + wcscmd.objid + "," + wcscmd.taskCode);
LogManager.Info(agvCallbackDto.method.ToLower() + "," + wcscmd.objid + "," + wcscmd.taskCode);
2 years ago
//start 开始 end结束 continue继续
//待取货
if (agvCallbackDto.method.ToLower() == "start")
2 years ago
{
2 years ago
wcscmd.cmdStatus = 2;
wcscmd.sendFlag = 1;
wcsTask.taskStatus = 2;
_dbContext.WcsCmd.Update(wcscmd);
1 year ago
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 2 });
2 years ago
_dbContext.WcsTask.Update(wcsTask);
2 years ago
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 });
2 years ago
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
}
2 years ago
if (agvCallbackDto.method.ToLower() == "con")
{
wcscmd.sendFlag = 1;
wcscmd.cmdStatus = 4;
wcsTask.taskStatus = 4;
1 year ago
_dbContext.WcsCmd.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmd { cmdStatus = 4 });
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 4 });
_dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTask { taskStatus = 4 });
2 years ago
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
2 years ago
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
}
2 years ago
//已取货待放货
if (agvCallbackDto.method.ToLower() == "continue")
{
1 year ago
2 years ago
wcscmd.sendFlag = 1;
2 years ago
wcscmd.cmdStatus = 3;
2 years ago
wcsTask.taskStatus = 3;
1 year ago
_dbContext.WcsCmd.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmd { cmdStatus = 3 });
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 3 });
_dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTask { taskStatus = 3 });
2 years ago
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 });
2 years ago
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
}
//放货完成
if (agvCallbackDto.method.ToLower() == "end")
{
1 year ago
if (wcsTask.nextPointId != 10)
2 years ago
{
wcscmd.cmdStatus = 5;
wcscmd.sendFlag = 1;
wcsTask.taskStatus = 5;
_dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 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
{
wcscmd.cmdStatus = 6;
wcscmd.sendFlag = 1;
wcsTask.taskStatus = 6;
_dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 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 = "成功";
}
1 year ago
2 years ago
}
2 years ago
}
}
2 years ago
else
{
reponseagvCallbackDto.code = "1";
reponseagvCallbackDto.message = "未找到当前任务";
}
2 years ago
}
catch (Exception ex)
{
1 year ago
LogManager.Error(ex);
2 years ago
reponseagvCallbackDto.code = "1";
2 years ago
reponseagvCallbackDto.message = ex.Message;
}
2 years ago
//返回请求
reponseagvCallbackDto.reqCode = reponseagvCallbackDto.reqCode;
return reponseagvCallbackDto;
}
1 year ago
2 years ago
/// <summary>
/// 入库完成
/// </summary>
/// <returns></returns>
public string InWare(long taskId)
{
return "";
}
1 year ago
2 years ago
/// <summary>
/// 出库完成
/// </summary>
/// <returns></returns>
public string OutWare(long taskId)
{
return "";
}
2 years ago
2 years ago
/// <summary>
/// 背负式Agv通知完成
/// </summary>
/// <param name="agvCompeletedRequest"></param>
/// <returns></returns>
2 years ago
public AgvCompeletedResponse MesToAgvComplete(AgvCompeleted agvCompeletedRequest)
{
AgvCompeletedResponse agvCompeletedResponse = new AgvCompeletedResponse();
try
{
2 years ago
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
2 years ago
BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == agvCompeletedRequest.endStationCode);
2 years ago
if (baseEquip != null)
{
1 year ago
var wcsCmd = _dbContext.WcsCmd
.Where(t => t.cmdType == 32 || t.cmdType == 48)
.Where(t => t.nextPointId == baseEquip.objid || t.currPointId == baseEquip.objid)
.FirstOrDefault();
2 years ago
if (wcsCmd != null)
{
WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcsCmd.taskId);
if (wcsTask != null)
{
1 year ago
if (wcsTask.taskType != 48)
{
wcsCmd.cmdStatus = 7;
wcsTask.taskStatus = 7;
_dbContext.WcsCmd.Update(wcsCmd);
_dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(a => new WcsCmdLog { cmdStatus = 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
{
wcsCmd.cmdStatus = 4;
wcsTask.taskStatus = 4;
_dbContext.WcsCmd.Update(wcsCmd);
_dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(a => new WcsCmdLog { cmdStatus = 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 = "成功";
}
2 years ago
}
1 year ago
else
{
agvCompeletedResponse.code = "1";
agvCompeletedResponse.message = "未找到当前任务";
}
2 years ago
}
else
{
agvCompeletedResponse.code = "1";
agvCompeletedResponse.message = "未找到当前任务";
}
}
else
{
agvCompeletedResponse.code = "1";
1 year ago
agvCompeletedResponse.message = "未找到当前工位";
2 years ago
}
}
catch (Exception ex)
{
1 year ago
LogManager.Error(ex);
2 years ago
agvCompeletedResponse.code = "1";
agvCompeletedResponse.message = ex.Message;
}
return agvCompeletedResponse;
}
2 years ago
/// <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());
2 years ago
var wcsTask = _dbContext.WcsTask
2 years ago
.Where(t => t.taskType == 47)
1 year ago
.Where(t => t.masterId == taskContinue.materialId)
2 years ago
.FirstOrDefault();
if (wcsTask != null)
{
wcsTask.useFlag = 1;
_dbContext.WcsTask.Update(wcsTask);
2 years ago
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(a => new WcsTaskLog { useFlag = 1 });
2 years ago
_dbContext.SaveChanges();
compeletedResponse.code = "0";
compeletedResponse.message = "成功";
}
else
{
compeletedResponse.code = "1";
compeletedResponse.message = "未找到当前任务";
}
}
catch (Exception ex)
{
1 year ago
LogManager.Error(ex);
2 years ago
compeletedResponse.code = "1";
compeletedResponse.message = ex.Message;
}
return compeletedResponse;
}
1 year ago
2 years ago
/// <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)
1 year ago
.Where(t => t.endPointNo == taskReturn.endStationCode)
2 years ago
.FirstOrDefault();
if (wcsTask != null)
{
wcsTask.useFlag = 1;
_dbContext.WcsTask.Update(wcsTask);
1 year ago
_dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(a => new WcsTask { useFlag = 1 });
2 years ago
_dbContext.SaveChanges();
compeletedResponse.code = "0";
compeletedResponse.message = "成功";
}
else
{
compeletedResponse.code = "1";
compeletedResponse.message = "未找到当前任务";
}
}
catch (Exception ex)
{
1 year ago
LogManager.Error(ex);
2 years ago
compeletedResponse.code = "1";
compeletedResponse.message = ex.Message;
}
return compeletedResponse;
}
1 year ago
public ReponseagvCallbackDto AgvCallback2(agvCallbackDto agvCallbackDto)
{
ReponseagvCallbackDto reponseagvCallbackDto = new ReponseagvCallbackDto();
try
{
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var wcscmd = _dbContext.WcsCmd
.Where(t => t.taskCode == agvCallbackDto.taskCode)
.FirstOrDefault();
if (wcscmd != null)
{
WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcscmd.taskId);
if (wcsTask != null)
{
//start 开始 end结束 continue继续
//待取货
if (agvCallbackDto.method.ToLower() == "start")
{
wcscmd.cmdStatus = 2;
wcscmd.sendFlag = 1;
wcsTask.taskStatus = 2;
_dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 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")
{
wcscmd.sendFlag = 1;
wcscmd.cmdStatus = 4;
wcsTask.taskStatus = 4;
_dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 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 (wcscmd.cmdStatus > 3)
{
wcscmd.sendFlag = 1;
wcscmd.cmdStatus = 5;
wcsTask.taskStatus = 5;
_dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 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
{
wcscmd.sendFlag = 1;
wcscmd.cmdStatus = 3;
wcsTask.taskStatus = 3;
_dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 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")
{
wcscmd.cmdStatus = 7;
wcscmd.sendFlag = 1;
wcsTask.taskStatus = 7;
_dbContext.WcsCmd.Update(wcscmd);
1 year ago
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 7 });
1 year ago
_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 = "成功";
}
}
}
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;
}
1 year ago
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.endPointId == 31 || 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;
}
1 year ago
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;
}
2 years ago
}
}