You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
9.8 KiB
182 lines
9.8 KiB
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Identity.Client.Extensions.Msal;
|
|
using System.Drawing;
|
|
using WMS_GIRAF_Interface.Data;
|
|
using WMS_GIRAF_Interface.Entities;
|
|
using WMS_GIRAF_Interface.Models;
|
|
using WMS_GIRAF_Interface.Repositories.Interface;
|
|
using WMS_GIRAF_Interface.TaskServices;
|
|
|
|
namespace WMS_GIRAF_Interface.Controllers
|
|
{
|
|
[ApiController, Route("/Output")]
|
|
public class OutputRequestController(
|
|
MichelinDbContext context,
|
|
IdestinationIdRepository destinationIdRepository,
|
|
ManageTaskService manageTaskService,
|
|
IManageMainRepository manageMainRepository,
|
|
IWhCellRepository whCellRepository,
|
|
IProductInformationRepository productInformationRepository,
|
|
IIoControlRepository ioControlRepository,
|
|
IIoControlRouteRepository ioControlRouteRepository,
|
|
CellLogicService cellLogicService)
|
|
: ControllerBase
|
|
{
|
|
/// <summary>
|
|
/// 根据产品ID生成出库任务
|
|
/// </summary>
|
|
/// <param name="outputRequest"></param>
|
|
[HttpPost("ByProductIds")]
|
|
public OutputRequestByProductIdsReturn OutputRequestByProductIds(OutputRequestByProductIds.RootObjectForOutputRequestByProductIds? outputRequest)
|
|
{
|
|
bool bResult = true;
|
|
string sResult = string.Empty;
|
|
OutputRequestByProductIdsReturn returnJsonString = new OutputRequestByProductIdsReturn();
|
|
if (outputRequest!=null)
|
|
{
|
|
//判断当前出库终点是否存在
|
|
var checkDestinationId = destinationIdRepository.GetDestinationId(outputRequest.evacuationPost);
|
|
if (checkDestinationId != null)
|
|
{
|
|
//轮询轮胎号来生成出库任务
|
|
if (outputRequest.productIds is{Length:>0})
|
|
{
|
|
|
|
foreach (var outputRequestProductId in outputRequest.productIds)
|
|
{
|
|
//根据productId生成出库任务,终点选择当前巷道的自动出库站台
|
|
var productInfo = context.V_StorageList.FirstOrDefault(x => x.STOCK_BARCODE == outputRequestProductId)
|
|
;
|
|
|
|
if (productInfo != null)
|
|
{
|
|
//根据device Code 判断路径可用性
|
|
if (!string.IsNullOrEmpty(productInfo.DEVICE_CODE) && !string.IsNullOrEmpty(checkDestinationId.AREA))
|
|
{
|
|
var ioControlRoute = ioControlRouteRepository.GetRouteByStartDeviceAndControlRouteCode(productInfo.DEVICE_CODE, checkDestinationId.AREA);
|
|
if (ioControlRoute is { CONTROL_ROUTE_STATUS: 1 })
|
|
{
|
|
var endStationId = whCellRepository.GetCell(ioControlRoute.END_DEVICE);
|
|
if (endStationId!=null)
|
|
{
|
|
MANAGE_MAIN manageMain = new MANAGE_MAIN
|
|
{
|
|
requestNumber = outputRequest.outputRequestId,
|
|
//20180811,gh修改,临时使用,使用plan_id字段,区别指定条码要胎的流程,该流程取货空后不做任何处理
|
|
PLAN_ID = 1,
|
|
MANAGE_TYPE_CODE = "ManageDown",
|
|
STOCK_BARCODE = productInfo.STOCK_BARCODE,
|
|
START_CELL_ID = productInfo.CELL_ID,
|
|
END_CELL_ID = endStationId.CELL_ID,
|
|
MANAGE_OPERATOR = "AUTO", // wyb 自动出库
|
|
MANAGE_BEGIN_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
MANAGE_STATUS = "WaitingSend",
|
|
MANAGE_LEVEL = string.Empty,
|
|
MANAGE_REMARK = string.Empty,
|
|
keepRequestInMemoryEvenIfMechanicalIssue = true,
|
|
DESTINATIONID = outputRequest.evacuationPost,
|
|
TargetOutputDateInUtc = Convert.ToDateTime(outputRequest.expectedCompletionDate) ,
|
|
CELL_MODEL = productInfo.CELL_MODEL,
|
|
//tlt20210913:添加CV标志
|
|
POPULATIONNUMBER = "TO_CV",
|
|
};
|
|
//Add task and control task
|
|
bResult = manageTaskService.CreateOutputTaskFromGiraf(manageMain, productInfo.CELL_ID, true, out sResult);
|
|
if (bResult)
|
|
{
|
|
returnJsonString.status = "1";
|
|
returnJsonString.evacuationPost = outputRequest.evacuationPost;
|
|
returnJsonString.estimatedExitTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
returnJsonString.errorDetails += $"RefusedBecauseUnknownEvacuationPost{outputRequestProductId}";
|
|
}
|
|
else
|
|
{
|
|
returnJsonString.status = "0";
|
|
returnJsonString.evacuationPost = string.Empty;
|
|
returnJsonString.estimatedExitTime =string.Empty;
|
|
returnJsonString.errorDetails += $"Create Task have errors:{sResult[..200]}";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//终点信息不对
|
|
returnJsonString.status = "3";
|
|
returnJsonString.evacuationPost = string.Empty;
|
|
returnJsonString.estimatedExitTime = string.Empty;
|
|
returnJsonString.errorDetails += $"RefusedBecauseUnknownEvacuationPost{outputRequestProductId}";
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//判断路径信息不全,无法进行判断
|
|
//未找到指定条码
|
|
returnJsonString.status = "3";
|
|
returnJsonString.evacuationPost = string.Empty;
|
|
returnJsonString.estimatedExitTime = string.Empty;
|
|
returnJsonString.errorDetails += $"RefusedBecauseUnknownPost{outputRequestProductId}";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
//未找到指定条码
|
|
returnJsonString.status = "4";
|
|
returnJsonString.evacuationPost = string.Empty;
|
|
returnJsonString.estimatedExitTime = string.Empty;
|
|
returnJsonString.errorDetails += $"RefusedBecauseLackOfBarcode{outputRequestProductId}";
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//无可用的轮胎号列表
|
|
returnJsonString.status = "3";
|
|
returnJsonString.evacuationPost = string.Empty;
|
|
returnJsonString.estimatedExitTime = string.Empty;
|
|
returnJsonString.errorDetails = "RefusedBecauseEmptyProductIds";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
returnJsonString.status = "3";
|
|
returnJsonString.evacuationPost = string.Empty;
|
|
returnJsonString.estimatedExitTime = string.Empty;
|
|
returnJsonString.errorDetails = "RefusedBecauseUnknownPostNumber";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
//当前入参为空
|
|
returnJsonString.status = "3";
|
|
returnJsonString.evacuationPost = string.Empty;
|
|
returnJsonString.estimatedExitTime = string.Empty;
|
|
returnJsonString.errorDetails = "RefusedBecauseEmptyInputParameter";
|
|
}
|
|
return returnJsonString;
|
|
}
|
|
|
|
|
|
[HttpPost("BySku")]
|
|
public void OutputRequestBySku(OutputRequestBySku.RootObjectForOutputRequestBySku outputRequest)
|
|
{
|
|
|
|
}
|
|
|
|
[HttpPut]
|
|
public void UpdateOutputRequest(UpdateOutputRequest.RootObjectForUpdateOutputRequest updateOutputRequest)
|
|
{
|
|
|
|
}
|
|
|
|
[HttpPost("Cancel")]
|
|
public void CancelOutputRequest(CancelOutputRequest.RootObjectForCancelOutputRequest cancelOutputRequest)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|