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.
462 lines
24 KiB
462 lines
24 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using Michelin_WebAPI.Data;
|
|
using Michelin_WebAPI.Entities;
|
|
using Michelin_WebAPI.Repositories.Interface;
|
|
using Michelin_WebAPI.TaskServices.Interface;
|
|
using Microsoft.EntityFrameworkCore.Storage;
|
|
using System.Linq;
|
|
using AutoMapper;
|
|
using Microsoft.Extensions.Logging;
|
|
using Michelin_WebAPI.Helper;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Michelin_WebAPI.TaskServices.Implement
|
|
{
|
|
public class ManagePreOut:IManagePreOut
|
|
{
|
|
private readonly MichelinDBContext _context;
|
|
private readonly IMapper _mapper;
|
|
private readonly IManageRepository _manageRepository;
|
|
private readonly IWhCellRepository _whCellRepository;
|
|
private readonly IStorageRepository _storageRepository;
|
|
private readonly IManageHelper _manageHelper;
|
|
private readonly ILogger<ManagePreOut> _logger;
|
|
public ManagePreOut(IManageRepository manageRepository, IWhCellRepository whCellRepository, IStorageRepository storageRepository, IManageHelper manageHelper, MichelinDBContext context, IMapper mapper, ILogger<ManagePreOut> logger)
|
|
{
|
|
_manageRepository = manageRepository;
|
|
_whCellRepository = whCellRepository;
|
|
_storageRepository = storageRepository;
|
|
_manageHelper = manageHelper;
|
|
_context = context;
|
|
_mapper = mapper;
|
|
_logger = logger;
|
|
}
|
|
|
|
|
|
public bool FabricateListCreate(List<MANAGE_MAIN> manageMains, out string sResult)
|
|
{
|
|
//检查当前的manageMains中的雪花ID是否为同一个
|
|
|
|
var snowFlakeList = manageMains.Select(x => x.BUCKET_GROUP).Distinct();
|
|
//tlt20231211:当前雪花ID有问题:需要进行重新赋值,将所有的雪花ID重新赋值
|
|
if (snowFlakeList.Any())
|
|
{
|
|
_logger.LogInformation($"1.ManageMains with old bucket_group number :{JsonConvert.SerializeObject(snowFlakeList)}");
|
|
|
|
var bucketGroup = SnowFlake.SnowflakeIDcreator.nextId().ToString();
|
|
|
|
foreach (var manageMain in manageMains)
|
|
{
|
|
manageMain.BUCKET_GROUP = bucketGroup;
|
|
}
|
|
_logger.LogInformation($"2.Because the bucket_group number is not same, Modified the Bucket_Group number :{bucketGroup};ManageMains :{JsonConvert.SerializeObject(manageMains.Select(x => new { x.STOCK_BARCODE, x.BUCKET_GROUP }).Distinct())} ");
|
|
|
|
}
|
|
|
|
bool bResult = true;
|
|
sResult = string.Empty;
|
|
var transaction = _context.Database.BeginTransaction();
|
|
try
|
|
{
|
|
|
|
|
|
|
|
foreach (var manageMain in manageMains)
|
|
{
|
|
var bucketMain =
|
|
_storageRepository.GetStorageMainByBucket(manageMain.STOCK_BARCODE);
|
|
var bucketLists = _storageRepository.GetStorageLists(bucketMain.STORAGE_ID);
|
|
|
|
var lstManageList = new List<MANAGE_LIST>();
|
|
//根据autoMapper映射变量信息
|
|
lstManageList.AddRange(bucketLists.Select(storageList => _mapper.Map<MANAGE_LIST>(storageList)));
|
|
//tlt20230717:设置GOODS_PROPERTY8为本次出库桶数量
|
|
foreach (var manageList in lstManageList)
|
|
{
|
|
manageList.GOODS_PROPERTY8 = manageMains.Count.ToString();
|
|
}
|
|
bResult = ManageCreate(manageMain, lstManageList, false, true, false, out sResult);
|
|
if (!bResult)
|
|
break;
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
bResult = false;
|
|
Console.WriteLine(ex.Message);
|
|
sResult = ex.Message;
|
|
_logger.LogError($"FabricateListCreate Exception:{ex.Message}");
|
|
}
|
|
finally
|
|
{
|
|
if (bResult)
|
|
{
|
|
transaction.Commit();
|
|
}
|
|
else
|
|
{
|
|
transaction.Rollback();
|
|
}
|
|
}
|
|
|
|
return bResult;
|
|
}
|
|
|
|
|
|
public bool ManageCreate(MANAGE_MAIN mMANAGE_MAIN,
|
|
List<MANAGE_LIST> lsMANAGE_LIST,
|
|
bool bTrans,
|
|
bool bAutoSendControl,
|
|
bool bComplete, out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
sResult = string.Empty;
|
|
int MANAGE_ID = 0;
|
|
|
|
WH_CELL mWH_CELL_START = _whCellRepository.GetCell(mMANAGE_MAIN.START_CELL_ID);
|
|
WH_CELL mWH_CELL_END = _whCellRepository.GetCell(mMANAGE_MAIN.END_CELL_ID);
|
|
|
|
try
|
|
{
|
|
|
|
|
|
_manageRepository.AddManageMain(mMANAGE_MAIN, out var manage_id);
|
|
foreach (var mMANAGE_LIST in lsMANAGE_LIST)
|
|
{
|
|
mMANAGE_LIST.MANAGE_ID = manage_id;
|
|
mMANAGE_LIST.PLAN_LIST_ID = 0;
|
|
_manageRepository.AddManageList(mMANAGE_LIST);
|
|
}
|
|
|
|
if (mWH_CELL_START != null)
|
|
{
|
|
mWH_CELL_START.RUN_STATUS = "Selected";
|
|
bResult = _whCellRepository.UpdateCellStatus(mWH_CELL_START);
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = $"Update start position {mWH_CELL_START.CELL_CODE}status error\n{sResult}";
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (mWH_CELL_END != null)
|
|
{
|
|
mWH_CELL_END.RUN_STATUS = "Selected";
|
|
bResult = _whCellRepository.UpdateCellStatus(mWH_CELL_END);
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = $"Update end position {mWH_CELL_END.CELL_CODE} status error\n{sResult}";
|
|
|
|
|
|
|
|
return false;
|
|
}
|
|
}
|
|
MANAGE_ID = mMANAGE_MAIN.MANAGE_ID;
|
|
//当出库任务为主库区,并且是立库区
|
|
if (mWH_CELL_START is {WAREHOUSE_ID: 1, AREA_ID: 1})
|
|
{
|
|
//倒库逻辑:
|
|
//tlt:判断预留倒库货位是否有货
|
|
//首先判断当前出库货位是否为远端货位
|
|
if (mWH_CELL_START.CELL_FORK_TYPE == "Far")
|
|
{
|
|
//判断近端是否有货:通过CELL_GROUP来判断当前货位的近端货位状态
|
|
WH_CELL dtCell = _context.Wh_Cell.FirstOrDefault(x =>
|
|
x.CELL_CODE != mWH_CELL_START.CELL_CODE && x.CELL_GROUP == mWH_CELL_START.CELL_CODE && x.CELL_FORK_TYPE == "Near" && x.CELL_STATUS != "Nohave");
|
|
|
|
|
|
//近端货位有货
|
|
if ( dtCell!=null)
|
|
{
|
|
//近端托盘判断:是否有任务存在
|
|
if (dtCell.RUN_STATUS != "Selected")
|
|
{
|
|
//无任务存在就要执行移库操作
|
|
//创建移库管理任务
|
|
MANAGE_MAIN mManageMain = new MANAGE_MAIN();
|
|
List<MANAGE_LIST> lstManageList = new List<MANAGE_LIST>();
|
|
//获取库存主信息
|
|
STORAGE_MAIN sStorageMain = _storageRepository.GetStorageMainByCellId(dtCell.CELL_ID);
|
|
List<STORAGE_LIST> tempStorageList;
|
|
if (sStorageMain != null)
|
|
{
|
|
tempStorageList = _storageRepository.GetStorageLists(sStorageMain.STORAGE_ID);
|
|
|
|
}
|
|
else
|
|
{
|
|
//错误:未找到库存信息
|
|
sResult = "未找到近端库存信息";
|
|
bResult = false;
|
|
|
|
return false;
|
|
}
|
|
|
|
//添加管理任务
|
|
mManageMain.STOCK_BARCODE = sStorageMain.STOCK_BARCODE;
|
|
mManageMain.MANAGE_STATUS = "WaitingSend";
|
|
mManageMain.MANAGE_TYPE_CODE = "ManageMove";
|
|
mManageMain.MANAGE_BEGIN_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
mManageMain.START_CELL_ID = sStorageMain.CELL_ID;
|
|
//终止货位获取:根据货货位分配原则来进行分配
|
|
|
|
bool tResult = GetMoveEndPosition(dtCell, out int endCellId);
|
|
//当前巷道预留倒库货位
|
|
|
|
if (tResult)
|
|
{
|
|
mManageMain.END_CELL_ID = endCellId;
|
|
}
|
|
else
|
|
{
|
|
//无可用货位
|
|
sResult = "未找到倒库货位,无法倒库";
|
|
bResult = false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
mManageMain.MANAGE_OPERATOR = "AutoMove";
|
|
mManageMain.MANAGE_LEVEL = string.Empty;
|
|
mManageMain.MANAGE_REMARK = string.Empty;
|
|
|
|
//tlt20220629:新属性添加
|
|
mManageMain.WEIGHT_PALLET = sStorageMain.WEIGHT_PALLET;
|
|
mManageMain.PG_CODE = sStorageMain.PG_CODE;
|
|
mManageMain.TRANSACTION_NUMBER = sStorageMain.TRANSACTION_NUMBER;
|
|
mManageMain.BUCKET_NUMBER = sStorageMain.BUCKET_NUMBER;
|
|
mManageMain.BUCKET_GROUP = sStorageMain.BUCKET_GROUP;
|
|
mManageMain.OperationRequestID = sStorageMain.OperationRequestID;
|
|
mManageMain.OperationToExecuteID = sStorageMain.OperationToExecuteID;
|
|
mManageMain.VirtualNameMachinePalletizer = sStorageMain.VirtualNameMachinePalletizer;
|
|
mManageMain.MFDCode = sStorageMain.MFDCode;
|
|
mManageMain.MATIND = sStorageMain.MATIND;
|
|
mManageMain.NIP = sStorageMain.NIP;
|
|
mManageMain.IMP = sStorageMain.IMP;
|
|
mManageMain.ItemIdentification = sStorageMain.ItemIdentification;
|
|
mManageMain.ItemTraceability = sStorageMain.ItemTraceability;
|
|
mManageMain.ItemHdvDate = sStorageMain.ItemHdvDate;
|
|
mManageMain.ItemHdvTime = sStorageMain.ItemHdvTime;
|
|
mManageMain.ItemFabricationDate = sStorageMain.ItemFabricationDate;
|
|
mManageMain.ItemFabricationTime = sStorageMain.ItemFabricationTime;
|
|
|
|
|
|
//添加list
|
|
foreach (STORAGE_LIST mSTORAGE_LIST in tempStorageList)
|
|
{
|
|
//根据映射关系添加信息
|
|
var mManageList = _mapper.Map<MANAGE_LIST>(mSTORAGE_LIST);
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
lstManageList.Add(mManageList);
|
|
|
|
}
|
|
//根据终止节点下移库任务
|
|
|
|
bResult = _manageHelper.ManageMoveTaskCreate(mManageMain,
|
|
lstManageList,
|
|
false,
|
|
false,
|
|
true, out sResult);
|
|
}
|
|
|
|
}
|
|
else //无货的情况下,查看货位状态
|
|
{
|
|
//查看近端货位是否有入库任务
|
|
WH_CELL dtCELL = _context.Wh_Cell.First(x => x.CELL_GROUP == mWH_CELL_START.CELL_CODE &&
|
|
x.CELL_FORK_TYPE == "Near" &&
|
|
x.WAREHOUSE_ID == mWH_CELL_START.WAREHOUSE_ID);
|
|
|
|
if (dtCELL.RUN_STATUS == "Selected")
|
|
{
|
|
MANAGE_MAIN manageMain =
|
|
_context.Manage_Main.FirstOrDefault(x => x.END_CELL_ID == dtCELL.CELL_ID);
|
|
if (manageMain != null)
|
|
{
|
|
mMANAGE_MAIN.MANAGE_REMARK = "Block";
|
|
_manageRepository.UpdateManageMain(mMANAGE_MAIN);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if (bAutoSendControl)
|
|
{
|
|
bResult = _manageHelper.ManageDownLoad(mMANAGE_MAIN.STOCK_BARCODE, false, out sResult);
|
|
}
|
|
|
|
if (!bResult)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
sResult = $"Bucket {mMANAGE_MAIN.STOCK_BARCODE} create the unloading task success!";
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
bResult = false;
|
|
|
|
sResult = ex.Message;
|
|
}
|
|
//finally
|
|
//{
|
|
// if (bResult)
|
|
// {
|
|
// transaction.Commit();
|
|
// }
|
|
// else
|
|
// {
|
|
// transaction.Rollback();
|
|
// }
|
|
//}
|
|
return bResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取移库货位
|
|
/// </summary>
|
|
/// <param name="dtCell"></param>
|
|
/// <param name="endCellId"></param>
|
|
/// <returns></returns>
|
|
public bool GetMoveEndPosition(WH_CELL dtCell, out int endCellId)
|
|
{
|
|
_logger.LogInformation($"Function:GetMoveEndPosition; start cell code:{dtCell.CELL_CODE};the begin time:{DateTime.Now.ToString(CultureInfo.InvariantCulture)}");
|
|
endCellId = 0;
|
|
#region 旧逻辑
|
|
//var list = _context.Reserve_Cell.Where(y => y.DEVICE_CODE == dtCell.DEVICE_CODE).ToList();
|
|
//var nearList = _context.Wh_Cell.Where(y => y.CELL_STATUS == "Nohave" && y.RUN_STATUS == "Enable" && y.CELL_FORK_TYPE == "Near" && y.WAREHOUSE_ID == dtCell.WAREHOUSE_ID && y.DEVICE_CODE == dtCell.DEVICE_CODE).ToList();
|
|
|
|
//whCells = _context.Wh_Cell.Where(x =>
|
|
// x.DEVICE_CODE == dtCell.DEVICE_CODE && x.CELL_FORK_TYPE == "Far" &&
|
|
// x.CELL_STATUS == "Nohave" && x.RUN_STATUS == "Enable" && x.CELL_TYPE == "Cell" &&
|
|
// x.CELL_STORAGE_TYPE == "SinglePallet" && !list.Select(y => y.CELL_CODE).Contains(x.CELL_CODE) && nearList.Select(z => z.CELL_CODE).Contains(x.CELL_GROUP))
|
|
// .OrderBy(y => y.CELL_Y)
|
|
// .ThenByDescending(z => z.CELL_X).ThenBy(w => w.CELL_Z).ToList();
|
|
//tlt20240109:替换获取货位逻辑
|
|
|
|
|
|
//var whCells = _context.Wh_Cell.FromSqlRaw($@"SELECT CELL_ID,CELL_CODE,CELL_GROUP
|
|
// FROM WH_CELL WHERE DEVICE_CODE = '{dtCell.DEVICE_CODE}'
|
|
// AND CELL_FORK_TYPE = 'Near'
|
|
// AND CELL_STATUS = 'Nohave'
|
|
// AND RUN_STATUS = 'Enable'
|
|
// AND CELL_TYPE = 'Cell'
|
|
// AND CELL_STORAGE_TYPE = 'SinglePallet'
|
|
// AND CELL_ID NOT IN ( SELECT CELL_ID FROM RESERVE_CELL )
|
|
// AND CELL_GROUP IN ( SELECT CELL_CODE FROM V_STORAGE_LIST WHERE DEVICE_CODE = '{dtCell.DEVICE_CODE}' AND RUN_STATUS = 'Enable' AND CELL_STATUS = 'Full' AND CELL_FORK_TYPE = 'Far' )
|
|
// ORDER BY CELL_Y,CELL_X DESC, CELL_Z").ToList();
|
|
#endregion
|
|
|
|
var whCells = _context.Wh_Cell.FromSqlRaw($@"SELECT CELL_ID, WAREHOUSE_ID,AREA_ID,LOGIC_ID,CELL_NAME,CELL_CODE,CELL_TYPE,DEVICE_CODE,CELL_Z,CELL_X,CELL_Y,CELL_INOUT,CELL_MODEL,CELL_STATUS,RUN_STATUS,CELL_FORK_TYPE,CELL_LOGICAL_NAME,LANE_WAY,CELL_GROUP,SHELF_TYPE,SHELF_NEIGHBOUR,CELL_STORAGE_TYPE,LOCK_DEVICE_CODE,CELL_WIDTH,CELL_HEIGHT,LOCK_CELL_ID,BELONG_AREA,BELONG_ZCQ_ID,CELL_FLAG,CELL_TRANS_FLAG
|
|
FROM WH_CELL WHERE DEVICE_CODE = '{dtCell.DEVICE_CODE}'
|
|
AND CELL_FORK_TYPE = 'Far'
|
|
AND CELL_STATUS = 'Nohave'
|
|
AND RUN_STATUS = 'Enable'
|
|
AND CELL_TYPE = 'Cell'
|
|
AND CELL_STORAGE_TYPE = 'SinglePallet'
|
|
AND CELL_ID NOT IN ( SELECT CELL_ID FROM RESERVE_CELL )
|
|
AND CELL_CODE IN ( SELECT CELL_GROUP FROM WH_CELL WHERE DEVICE_CODE = '{dtCell.DEVICE_CODE}' AND RUN_STATUS = 'Enable' AND CELL_STATUS = 'Nohave' AND CELL_FORK_TYPE = 'Near' )
|
|
ORDER BY CELL_Y,CELL_X DESC, CELL_Z").ToList();
|
|
|
|
#region 旧逻辑
|
|
//Where(x =>
|
|
// x.DEVICE_CODE == dtCell.DEVICE_CODE && x.CELL_FORK_TYPE == "Far" &&
|
|
// x.CELL_STATUS == "Nohave" && x.RUN_STATUS == "Enable" && x.CELL_TYPE == "Cell" &&
|
|
// x.CELL_STORAGE_TYPE == "SinglePallet" && !list.Select(y => y.CELL_ID).Contains(x.CELL_ID) && nearList.Select(z => z.CELL_CODE).Contains(x.CELL_GROUP))
|
|
//.OrderBy(y => y.CELL_Y)
|
|
//.ThenByDescending(z => z.CELL_X).ThenBy(w => w.CELL_Z).ToList();
|
|
#endregion
|
|
//tlt20240109:选择远端有货且无任务,近端无货的货位
|
|
if (whCells.Count > 0)
|
|
{
|
|
//返回数值
|
|
string temp = whCells[0].CELL_CODE;
|
|
endCellId = whCells[0].CELL_ID;//返回第一个符合条件的数值
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
#region 旧逻辑
|
|
//var farList = _context.Wh_Cell.Where(y => y.CELL_STATUS == "Full" && y.RUN_STATUS == "Enable" && y.CELL_FORK_TYPE == "Far" && y.WAREHOUSE_ID == dtCell.WAREHOUSE_ID && y.DEVICE_CODE == dtCell.DEVICE_CODE).ToList();
|
|
|
|
//whCells = _context.Wh_Cell.Where(x =>
|
|
// x.DEVICE_CODE == dtCell.DEVICE_CODE && x.CELL_FORK_TYPE == "Near" &&
|
|
// x.CELL_STATUS == "Nohave" && x.RUN_STATUS == "Enable" && x.CELL_TYPE == "Cell" &&
|
|
// x.CELL_STORAGE_TYPE == "SinglePallet" && !list.Select(y => y.CELL_CODE).Contains(x.CELL_CODE) && farList.Select(z => z.CELL_CODE).Contains(x.CELL_GROUP))
|
|
// .OrderBy(y => y.CELL_Y).ThenByDescending(z => z.CELL_X).ThenBy(w => w.CELL_Z).ToList();
|
|
#endregion
|
|
//获取远端有货,近端无货的货位,远端存在同属性货位
|
|
whCells = _context.Wh_Cell.FromSqlRaw($@"SELECT CELL_ID, WAREHOUSE_ID,AREA_ID,LOGIC_ID,CELL_NAME,CELL_CODE,CELL_TYPE,DEVICE_CODE,CELL_Z,CELL_X,CELL_Y,CELL_INOUT,CELL_MODEL,CELL_STATUS,RUN_STATUS,CELL_FORK_TYPE,CELL_LOGICAL_NAME,LANE_WAY,CELL_GROUP,SHELF_TYPE,SHELF_NEIGHBOUR,CELL_STORAGE_TYPE,LOCK_DEVICE_CODE,CELL_WIDTH,CELL_HEIGHT,LOCK_CELL_ID,BELONG_AREA,BELONG_ZCQ_ID,CELL_FLAG,CELL_TRANS_FLAG
|
|
FROM WH_CELL WHERE DEVICE_CODE = '{dtCell.DEVICE_CODE}'
|
|
AND CELL_FORK_TYPE = 'Near'
|
|
AND CELL_STATUS = 'Nohave'
|
|
AND RUN_STATUS = 'Enable'
|
|
AND CELL_TYPE = 'Cell'
|
|
AND CELL_STORAGE_TYPE = 'SinglePallet'
|
|
AND CELL_ID NOT IN ( SELECT CELL_ID FROM RESERVE_CELL )
|
|
AND CELL_GROUP IN ( SELECT CELL_CODE FROM V_STORAGE_LIST WHERE DEVICE_CODE = '{dtCell.DEVICE_CODE}' AND RUN_STATUS = 'Enable' AND CELL_STATUS = 'Full' AND CELL_FORK_TYPE = 'Far' )
|
|
ORDER BY CELL_Y,CELL_X DESC, CELL_Z").ToList();
|
|
if (whCells.Count > 0)
|
|
{
|
|
endCellId = whCells[0].CELL_ID;//返回第一个符合条件的数值
|
|
}
|
|
else
|
|
{
|
|
#region 旧逻辑
|
|
//whCells = _context.Wh_Cell.Where(x =>
|
|
// x.DEVICE_CODE == dtCell.DEVICE_CODE && x.CELL_FORK_TYPE == "Near" &&
|
|
// x.CELL_STATUS == "Nohave" && x.RUN_STATUS == "Enable" && x.CELL_TYPE == "Cell" &&
|
|
// x.CELL_STORAGE_TYPE == "SinglePallet" && list.Select(y => y.CELL_CODE).Contains(x.CELL_CODE))
|
|
// .OrderBy(y => y.CELL_Y).ThenByDescending(z => z.CELL_X).ThenBy(w => w.CELL_Z).ToList();
|
|
#endregion
|
|
//选取本巷道的预留货位
|
|
whCells = _context.Wh_Cell.FromSqlRaw($@"SELECT CELL_ID, WAREHOUSE_ID,AREA_ID,LOGIC_ID,CELL_NAME,CELL_CODE,
|
|
CELL_TYPE,DEVICE_CODE,CELL_Z,CELL_X,CELL_Y,CELL_INOUT,CELL_MODEL,
|
|
CELL_STATUS,RUN_STATUS,CELL_FORK_TYPE,CELL_LOGICAL_NAME,LANE_WAY,
|
|
CELL_GROUP,SHELF_TYPE,SHELF_NEIGHBOUR,CELL_STORAGE_TYPE,LOCK_DEVICE_CODE,
|
|
CELL_WIDTH,CELL_HEIGHT,LOCK_CELL_ID,BELONG_AREA,BELONG_ZCQ_ID,CELL_FLAG,CELL_TRANS_FLAG
|
|
FROM WH_CELL WHERE DEVICE_CODE = '{dtCell.DEVICE_CODE}'
|
|
AND CELL_FORK_TYPE = 'Near'
|
|
AND CELL_STATUS = 'Nohave'
|
|
AND RUN_STATUS = 'Enable'
|
|
AND CELL_TYPE = 'Cell'
|
|
AND CELL_STORAGE_TYPE = 'SinglePallet'
|
|
AND CELL_ID IN ( SELECT CELL_ID FROM RESERVE_CELL WHERE DEVICE_CODE = '{dtCell.DEVICE_CODE}' AND FLAG = 1 )
|
|
ORDER BY CELL_Y,CELL_X DESC, CELL_Z").ToList();
|
|
if (whCells.Count > 0)
|
|
{
|
|
endCellId = whCells[0].CELL_ID;//返回第一个符合条件的数值
|
|
|
|
}
|
|
else
|
|
{
|
|
//报错:当前巷道无可用倒库货位
|
|
return false;
|
|
}
|
|
|
|
}
|
|
}
|
|
_logger.LogInformation($"Function:GetMoveEndPosition; start cell code:{dtCell.CELL_CODE};end cell code:{whCells[0]?.CELL_CODE};the end time:{DateTime.Now.ToString(CultureInfo.InvariantCulture)}");
|
|
|
|
return true;
|
|
}
|
|
|
|
}
|
|
}
|