智能立体仓储WMS库位分配C#实现
最佳答案 问答题库688位专家为你答疑解惑
using System;
using System.Collections.Generic;
using Mirle.Def;
using System.Data;
using DataBase;
namespace DB.WMS.Fun
{
public class clsLocMst
{
/// <summary>
/// 確認儲位是否是外儲位
/// </summary>
/// <param name="sLoc"></param>
/// <param name="IsOutside"></param>
/// <param name="db"></param>
/// <returns></returns>
public int CheckLocIsOutside(string sLoc, ref bool IsOutside, ref string sLocDD, ref bool IsEmpty_DD, ref string BoxID_DD, DataBase.DB db)
{
try
{
int iRet = CheckLocIsOutside(sLoc, ref IsOutside, db);
if (iRet == DBResult.Success)
{
sLocDD = GetLocDD(sLoc, db);
if (string.IsNullOrWhiteSpace(sLocDD))
throw new Exception($"找不到{sLoc}的對照儲位!");
return CheckLocIsEmpty(sLocDD, ref IsEmpty_DD, ref BoxID_DD, db);
}
return iRet;
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return DBResult.Exception;
}
}
/// <summary>
/// 確認儲位是否是外儲位
/// </summary>
/// <param name="sLoc"></param>
/// <param name="IsOutside"></param>
/// <param name="db"></param>
/// <returns></returns>
public int CheckLocIsOutside(string sLoc, ref bool IsOutside, DataBase.DB db)
{
DataTable dtTmp = new DataTable();
try
{
string strEM = "";
string strSql = $"select IS_INSIDE from {Parameter.clsLocMst.TableName} where {Parameter.clsLocMst.Column.Loc} = '{sLoc}' ";
int iRet = db.GetDataTable(strSql, ref dtTmp, ref strEM);
if (iRet == DBResult.Success)
{
IsOutside = Convert.ToString(dtTmp.Rows[0][0]) == "N" ? true : false;
}
else
{
clsWriLog.Log.FunWriLog(WriLog.clsLog.Type.Error, $"{strSql} => {strEM}");
}
return iRet;
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return DBResult.Exception;
}
finally
{
dtTmp = null;
}
}
public bool FunTestConnection(DataBase.DB db)
{
DataTable dtTmp = new DataTable();
try
{
string strEM = "";
string strSql = $"select TOP (10) {Parameter.clsLocMst.Column.Loc} from {Parameter.clsLocMst.TableName} ";
int iRet = db.GetDataTable(strSql, ref dtTmp, ref strEM);
if (iRet == DBResult.Success)
{
return true;
}
else
{
clsWriLog.Log.FunWriLog(WriLog.clsLog.Type.Error, $"{strSql} => {strEM}");
return false;
}
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return false;
}
finally
{
dtTmp = null;
}
}
public string GetLocDD(string sLoc, DataBase.DB db)
{
DataTable dtTmp = new DataTable();
try
{
string strEM = "";
string strSql = $"select {Parameter.clsLocMst.Column.LocDD} from {Parameter.clsLocMst.TableName} where " +
$"{Parameter.clsLocMst.Column.Loc} = '{sLoc}' ";
int iRet = db.GetDataTable(strSql, ref dtTmp, ref strEM);
if (iRet == DBResult.Success)
{
return Convert.ToString(dtTmp.Rows[0][0]);
}
else
{
clsWriLog.Log.FunWriLog(WriLog.clsLog.Type.Error, $"{strSql} => {strEM}");
return string.Empty;
}
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return string.Empty;
}
finally
{
dtTmp = null;
}
}
public string GetLocDDandStatus(string sLoc, ref bool IsEmpty, DataBase.DB db)
{
DataTable dtTmp = new DataTable();
try
{
string strEM = "";
string strSql = $"select {Parameter.clsLocMst.Column.Loc}, {Parameter.clsLocMst.Column.StorageSts}, {Parameter.clsLocMst.Column.OperateSts} from {Parameter.clsLocMst.TableName} where " +
$"{Parameter.clsLocMst.Column.LocDD} = '{sLoc}' ";
int iRet = db.GetDataTable(strSql, ref dtTmp, ref strEM);
if (iRet == DBResult.Success)
{
IsEmpty = ((Convert.ToString(dtTmp.Rows[0][Parameter.clsLocMst.Column.StorageSts]).Trim().ToUpper() == clsConstValue.LocSts.Empty) &&
(Convert.ToString(dtTmp.Rows[0][Parameter.clsLocMst.Column.OperateSts]).Trim().ToUpper() == clsConstValue.LocSts.Normal));
return Convert.ToString(dtTmp.Rows[0][Parameter.clsLocMst.Column.Loc]);
}
else
{
clsWriLog.Log.FunWriLog(WriLog.clsLog.Type.Error, $"{strSql} => {strEM}");
return string.Empty;
}
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return string.Empty;
}
finally
{
dtTmp = null;
}
}
public int CheckLocIsEmpty(string sLoc, ref bool IsEmpty, DataBase.DB db)
{
DataTable dtTmp = new DataTable();
try
{
string strEM = "";
string strSql = $"select {Parameter.clsLocMst.Column.StorageSts} from {Parameter.clsLocMst.TableName} where {Parameter.clsLocMst.Column.Loc} = '{sLoc}' ";
int iRet = db.GetDataTable(strSql, ref dtTmp, ref strEM);
if (iRet == DBResult.Success)
{
IsEmpty = Convert.ToString(dtTmp.Rows[0][Parameter.clsLocMst.Column.StorageSts]).Trim().ToUpper() ==
clsConstValue.LocSts.Empty;
}
else
{
clsWriLog.Log.FunWriLog(WriLog.clsLog.Type.Error, $"{strSql} => {strEM}");
}
return iRet;
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return DBResult.Exception;
}
finally
{
dtTmp = null;
}
}
public int CheckLocIsEmpty(string sLoc, ref bool IsEmpty, ref string BoxID, DataBase.DB db)
{
DataTable dtTmp = new DataTable();
try
{
string strEM = "";
string strSql = $"select {Parameter.clsLocMst.Column.StorageSts}, {Parameter.clsLocMst.Column.BoxID} from " +
$"{Parameter.clsLocMst.TableName} where {Parameter.clsLocMst.Column.Loc} = '{sLoc}' ";
int iRet = db.GetDataTable(strSql, ref dtTmp, ref strEM);
if (iRet == DBResult.Success)
{
IsEmpty = Convert.ToString(dtTmp.Rows[0][Parameter.clsLocMst.Column.StorageSts]).Trim().ToUpper() == clsConstValue.LocSts.Empty;
BoxID = Convert.ToString(dtTmp.Rows[0][Parameter.clsLocMst.Column.BoxID]);
}
else
{
clsWriLog.Log.FunWriLog(WriLog.clsLog.Type.Error, $"{strSql} => {strEM}");
}
return iRet;
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return DBResult.Exception;
}
finally
{
dtTmp = null;
}
}
public int CheckLineByBoxID(string sBoxID, ref int StockerID, ref string sLoc, DataBase.DB db)
{
DataTable dtTmp = new DataTable();
try
{
string strSql = $"select * from {Parameter.clsLocMst.TableName} where {Parameter.clsLocMst.Column.BoxID} = '{sBoxID}' ";
string strEM = "";
int iRet = db.GetDataTable(strSql, ref dtTmp, ref strEM);
if (iRet == DBResult.Success)
{
StockerID = Convert.ToInt32(dtTmp.Rows[0][Parameter.clsLocMst.Column.EquNo]);
sLoc = Convert.ToString(dtTmp.Rows[0][Parameter.clsLocMst.Column.Loc]);
}
else clsWriLog.Log.FunWriLog(WriLog.clsLog.Type.Error, $"{strSql} => {strEM}");
return iRet;
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return DBResult.Exception;
}
finally
{
dtTmp = null;
}
}
public string funSearchEmptyLoc(string Equ_No, clsEnum.LocSts_Double locSts, DataBase.DB db)
{
string strEM = "";
DataTable dtTmp = new DataTable();
try
{
string sSQL = $"SELECT TOP 1 {Parameter.clsLocMst.Column.Loc} FROM " +
$"{Parameter.clsLocMst.TableName} WHERE {Parameter.clsLocMst.Column.StorageSts} = '" + clsConstValue.LocSts.Empty + "' ";
sSQL += $" AND {Parameter.clsLocMst.Column.OperateSts} = '{clsConstValue.LocSts.Normal}' and {Parameter.clsLocMst.Column.EquNo} = '" + Equ_No + "' ";
if (locSts == clsEnum.LocSts_Double.NNNN) //找外側空庫位
{
sSQL += $" AND {Parameter.clsLocMst.Column.Loc} IN (SELECT {Parameter.clsLocMst.Column.LocDD} FROM " +
$"{Parameter.clsLocMst.TableName}" +
$" WHERE {Parameter.clsLocMst.Column.StorageSts}='{clsConstValue.LocSts.Empty}' AND {Parameter.clsLocMst.Column.OperateSts} = '{clsConstValue.LocSts.Normal}'" +
$" AND IS_INSIDE = 'Y') ";
}
else if (locSts == clsEnum.LocSts_Double.SNNS)
{
sSQL += $" AND {Parameter.clsLocMst.Column.Loc} IN (SELECT {Parameter.clsLocMst.Column.LocDD} FROM " +
$"{Parameter.clsLocMst.TableName}" +
$" WHERE {Parameter.clsLocMst.Column.StorageSts} in ('{clsConstValue.LocSts.Full}','{clsConstValue.LocSts.NotFull}')" +
$" AND {Parameter.clsLocMst.Column.OperateSts} = '{clsConstValue.LocSts.Normal}' AND IS_INSIDE = 'N') ";
}
else if (locSts == clsEnum.LocSts_Double.ENNE)
{
sSQL += $" AND {Parameter.clsLocMst.Column.Loc} IN (SELECT {Parameter.clsLocMst.Column.LocDD} FROM " +
$"{Parameter.clsLocMst.TableName}" +
$" WHERE {Parameter.clsLocMst.Column.StorageSts} = '{clsConstValue.LocSts.EmptyBox}' AND {Parameter.clsLocMst.Column.OperateSts} = '{clsConstValue.LocSts.Normal}'" +
" AND IS_INSIDE = 'N') ";
}
else if (locSts == clsEnum.LocSts_Double.XNNX)
{
sSQL += $" AND {Parameter.clsLocMst.Column.Loc} IN (SELECT {Parameter.clsLocMst.Column.LocDD} FROM " +
$"{Parameter.clsLocMst.TableName}" +
$" WHERE {Parameter.clsLocMst.Column.OperateSts} = '{clsConstValue.LocSts.Block}' AND IS_INSIDE = 'N') ";
}
else { } //Single Deep
sSQL += $" ORDER BY {Parameter.clsLocMst.Column.BAY}, {Parameter.clsLocMst.Column.LEVEL}, {Parameter.clsLocMst.Column.ROW} DESC";
dtTmp = new DataTable();
string sNewLoc;
if (db.GetDataTable(sSQL, ref dtTmp, ref strEM) == DBResult.Success)
{
sNewLoc = dtTmp.Rows[0][Parameter.clsLocMst.Column.Loc].ToString();
}
else
{
sNewLoc = "";
}
return sNewLoc;
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return "";
}
finally
{
dtTmp = null;
}
}
public string funSearchEmptyLoc_Abnormal(string Equ_No, clsEnum.LocSts_Double locSts, string sSource, DataBase.DB db)
{
string sNewLoc = "";
string strEM = "";
DataTable dtTmp = new DataTable();
try
{
string sSQL = $"SELECT TOP 1 {Parameter.clsLocMst.Column.Loc} FROM " +
$"{Parameter.clsLocMst.TableName} WHERE {Parameter.clsLocMst.Column.StorageSts} = '" + clsConstValue.LocSts.Empty + "' ";
sSQL += $" AND {Parameter.clsLocMst.Column.OperateSts} = '{clsConstValue.LocSts.Normal}' and {Parameter.clsLocMst.Column.EquNo} = '" + Equ_No + "' ";
switch (sSource.Substring(0, 2))
{
case "09":
case "11":
sSQL += $" and SUBSTRING({Parameter.clsLocMst.Column.Loc},1,2) IN ('09','11') ";
break;
case "10":
case "12":
sSQL += $" and SUBSTRING({Parameter.clsLocMst.Column.Loc},1,2) IN ('10','12') ";
break;
case "13":
case "15":
sSQL += $" and SUBSTRING({Parameter.clsLocMst.Column.Loc},1,2) IN ('13','15') ";
break;
case "14":
case "16":
sSQL += $" and SUBSTRING({Parameter.clsLocMst.Column.Loc},1,2) IN ('14','16') ";
break;
case "17":
case "19":
sSQL += $" and SUBSTRING({Parameter.clsLocMst.Column.Loc},1,2) IN ('17','19') ";
break;
case "18":
case "20":
sSQL += $" and SUBSTRING({Parameter.clsLocMst.Column.Loc},1,2) IN ('18','20') ";
break;
default:
return "";
}
if (locSts == clsEnum.LocSts_Double.NNNN) //找外側空庫位
{
sSQL += $" AND {Parameter.clsLocMst.Column.Loc} IN (SELECT {Parameter.clsLocMst.Column.LocDD} FROM " +
$"{Parameter.clsLocMst.TableName}" +
$" WHERE {Parameter.clsLocMst.Column.StorageSts}='{clsConstValue.LocSts.Empty}' AND {Parameter.clsLocMst.Column.OperateSts} = '{clsConstValue.LocSts.Normal}'" +
$" AND IS_INSIDE = 'Y') ";
}
else if (locSts == clsEnum.LocSts_Double.SNNS)
{
sSQL += $" AND {Parameter.clsLocMst.Column.Loc} IN (SELECT {Parameter.clsLocMst.Column.LocDD} FROM " +
$"{Parameter.clsLocMst.TableName}" +
$" WHERE {Parameter.clsLocMst.Column.StorageSts} in ('{clsConstValue.LocSts.Full}','{clsConstValue.LocSts.NotFull}')" +
$" AND {Parameter.clsLocMst.Column.OperateSts} = '{clsConstValue.LocSts.Normal}' AND IS_INSIDE = 'N') ";
}
else if (locSts == clsEnum.LocSts_Double.ENNE)
{
sSQL += $" AND {Parameter.clsLocMst.Column.Loc} IN (SELECT {Parameter.clsLocMst.Column.LocDD} FROM " +
$"{Parameter.clsLocMst.TableName}" +
$" WHERE {Parameter.clsLocMst.Column.StorageSts} = '{clsConstValue.LocSts.EmptyBox}' AND {Parameter.clsLocMst.Column.OperateSts} = '{clsConstValue.LocSts.Normal}'" +
" AND IS_INSIDE = 'N') ";
}
else if (locSts == clsEnum.LocSts_Double.XNNX)
{
sSQL += $" AND {Parameter.clsLocMst.Column.Loc} IN (SELECT {Parameter.clsLocMst.Column.LocDD} FROM " +
$"{Parameter.clsLocMst.TableName}" +
$" WHERE {Parameter.clsLocMst.Column.OperateSts} = '{clsConstValue.LocSts.Block}' AND IS_INSIDE = 'N') ";
}
else return "";
sSQL += $" ORDER BY {Parameter.clsLocMst.Column.BAY}, {Parameter.clsLocMst.Column.LEVEL}, {Parameter.clsLocMst.Column.ROW} DESC";
dtTmp = new DataTable();
if (db.GetDataTable(sSQL, ref dtTmp, ref strEM) == DBResult.Success)
{
sNewLoc = dtTmp.Rows[0][Parameter.clsLocMst.Column.Loc].ToString();
}
else
{
sNewLoc = "";
}
return sNewLoc;
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return "";
}
finally
{
dtTmp = null;
}
}
public int funCheckCountForEmptyLoc(ref DataTable dtTmp, DataBase.DB db)
{
try
{
string strEM = "";
string strSql = $"select {clsConstValue.LineName.Line3} = (SELECT COUNT({Parameter.clsLocMst.Column.StorageSts}) from {Parameter.clsLocMst.TableName} WHERE ({Parameter.clsLocMst.Column.StorageSts} = '{clsConstValue.LocSts.Empty}' AND CRANE = '{clsConstValue.CraneName.Line3}')), " +
$"{clsConstValue.LineName.Line4} = (SELECT COUNT({Parameter.clsLocMst.Column.StorageSts}) from {Parameter.clsLocMst.TableName} WHERE ({Parameter.clsLocMst.Column.StorageSts} = '{clsConstValue.LocSts.Empty}' AND CRANE = '{clsConstValue.CraneName.Line4}')), " +
$"{clsConstValue.LineName.Line5} = (SELECT COUNT({Parameter.clsLocMst.Column.StorageSts}) from {Parameter.clsLocMst.TableName} WHERE ({Parameter.clsLocMst.Column.StorageSts} = '{clsConstValue.LocSts.Empty}' AND CRANE = '{clsConstValue.CraneName.Line5}'))";
int iRet = db.GetDataTable(strSql, ref dtTmp, ref strEM);
if (iRet != DBResult.Success)
{
clsWriLog.Log.FunWriLog(WriLog.clsLog.Type.Error, $"{strSql} => {strEM}");
}
return iRet;
}
catch (Exception ex)
{
var cmet = System.Reflection.MethodBase.GetCurrentMethod();
clsWriLog.Log.subWriteExLog(cmet.DeclaringType.FullName + "." + cmet.Name, ex.Message);
return DBResult.Exception;
}
}
}
}
99%的人还看了
相似问题
- ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)
- 关于新版的Maven创建Maven项目的时候只有Maven Archetype,而找不到Maven的这个问题
- debian 已安装命令找不到 解决方法
- springboot引入外部jar,package打包报错找不到程序包XXX
- 找不到模块“./App.vue”或其相应的类型声明。ts(2307)
- linux 启动引导找不到内核修复
- SpringBootWeb项目启动时报错端口号被占,又找不到哪个项目启动后没关,解决办法如下:
- 解决pycharm中,远程服务器上文件找不到的问题
- VMware下面的hgfs找不到共享文件夹的解决方法
- 新版本IntelliJ IDEA(如2023)中运行Spring Boot找不到VM options进行端口的修改的问题解决
猜你感兴趣
版权申明
本文"智能立体仓储WMS库位分配C#实现":http://eshow365.cn/6-36730-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 【JS】Chapter11-正则阶段案例
- 下一篇: threejs (二) 相机