using Khd.Core.Application.Interface; using Khd.Core.Domain.Dto.webapi; using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; 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; public WcsTaskApplication(IServiceProvider serviceProvider) { _dbContext = serviceProvider.GetService(); } 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; } /// /// 接收agv接收任务通知接口 /// /// /// public ReponseagvCallbackDto AgvCallback(agvCallbackDto agvCallbackDto) { ReponseagvCallbackDto reponseagvCallbackDto = new ReponseagvCallbackDto(); try { 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.WcsTask.Update(wcsTask); _dbContext.SaveChanges(); reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.message = "成功"; } //已取货待放货 if (agvCallbackDto.method.ToLower() == "continue") { wcscmd.cmdStatus = 3; wcscmd.sendFlag = 1; wcsTask.taskStatus = 3; _dbContext.WcsCmd.Update(wcscmd); _dbContext.Update(wcsTask); _dbContext.SaveChanges(); reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.message = "成功"; //_dbContext.WcsTask.Where(t => t.objid == wcscmd.taskId).Update(t=>t.taskStatus==3); } //放货完成 if (agvCallbackDto.method.ToLower() == "end") { wcscmd.cmdStatus = 5; wcscmd.sendFlag = 1; wcsTask.taskStatus= 5; _dbContext.WcsCmd.Update(wcscmd); _dbContext.Update(wcsTask); _dbContext.SaveChanges(); reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.message = "成功"; } } } else { reponseagvCallbackDto.code = "1"; reponseagvCallbackDto.message = "未找到当前任务"; } } catch (Exception ex) { reponseagvCallbackDto.code = "1"; reponseagvCallbackDto.message = ex.Message; } //返回请求 reponseagvCallbackDto.reqCode = reponseagvCallbackDto.reqCode; return reponseagvCallbackDto; } /// /// 入库完成 /// /// public string InWare(long taskId) { return ""; } /// /// 出库完成 /// /// public string OutWare(long taskId) { return ""; } public AgvCompeletedResponse MesToAgvComplete(AgvCompeleted agvCompeletedRequest) { AgvCompeletedResponse agvCompeletedResponse = new AgvCompeletedResponse(); try { string stationId = agvCompeletedRequest.stationId; BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t=>t.equipNo==stationId); if (baseEquip != null) { var wcsCmd = _dbContext.WcsCmd.Where(t => t.nextPointId == baseEquip.objid).FirstOrDefault(); if (wcsCmd != null) { WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcsCmd.taskId); if (wcsTask != null) { agvCompeletedResponse.code = "0"; agvCompeletedResponse.message = "成功"; wcsCmd.cmdStatus = 6; wcsTask.taskStatus = 6; _dbContext.WcsCmd.Update(wcsCmd); _dbContext.WcsTask.Update(wcsTask); _dbContext.SaveChanges(); } } else { agvCompeletedResponse.code = "1"; agvCompeletedResponse.message = "未找到当前任务"; } } else { agvCompeletedResponse.code = "1"; agvCompeletedResponse.message = "未找到当前设备"; } } catch (Exception ex) { agvCompeletedResponse.code = "1"; agvCompeletedResponse.message = ex.Message; } return agvCompeletedResponse; } } }