using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Data;
using System.Linq;
using System.Text;
using WMS.Entity.BllAsnEntity;
using WMS.Entity.BllCheckEntity;
using WMS.Entity.BllSoEntity;
using WMS.Entity.Context;
using WMS.Entity.LogEntity;
using WMS.Entity.SysEntity;
namespace WMS.DAL
{
public class Common
{
//public static readonly DataContext Db = new DataContext();
///
/// 获取深度为1的储位号(根据深度为2的储位号)
///
/// 仓库号
/// 储位号
///
public SysStorageLocat GetLocateNoDepth1(string houseNo, string locateNo)
{
try
{
var Db = DataContext.Db;
var ceshi = Db.Queryable()
.Where(m => m.IsDel == "0" && m.WareHouseNo == houseNo && m.LocatNo == locateNo).ToList();
//获取储位信息
var sql = $@"select * from SysStorageLocat where WareHouseNo = '{houseNo}' and LocatNo = '{locateNo}'; ";
var locate = Db.Ado.SqlQuery(sql).First();
if (locate == null)
{
throw new Exception($"未查询到仓库号为{houseNo}、储位号为{locateNo}的信息");
}
//获取深度为2的储位信息
var sql2 = $@"select * from SysStorageLocat where WareHouseNo = '{houseNo}' and row = {locate.Row} and [Column] = {locate.Column} and Layer = {locate.Layer} and Depth = '01'; ";
var data = Db.Ado.SqlQuery(sql2).First();
if (data == null)
{
throw new Exception($"未查询到仓库号为{houseNo}、储位号为{locateNo}的里面储位信息");
}
return data;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
///
/// 获取深度为2的储位号(根据深度为1的储位号)
///
/// 仓库号
/// 储位号
///
public SysStorageLocat GetLocateNoDepth2(string houseNo, string locateNo)
{
try
{
var Db = DataContext.Db;
//获取储位信息
var sql = $@"select * from SysStorageLocat where WareHouseNo = '{houseNo}' and LocatNo = '{locateNo}'; ";
var locate = Db.Ado.SqlQuery(sql).First();
if (locate == null)
{
throw new Exception($"未查询到仓库号为{houseNo}、储位号为{locateNo}的信息");
}
//获取深度为2的储位信息
var sql2 = $@"select * from SysStorageLocat where WareHouseNo = '{houseNo}' and row = {locate.Row} and [Column] = {locate.Column} and Layer = {locate.Layer} and Depth = '02'; ";
var data = Db.Ado.SqlQuery(sql2).First();
if (data == null)
{
throw new Exception($"未查询到仓库号为{houseNo}、储位号为{locateNo}的里面储位信息");
}
return data;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
///
/// 根据前缀获取最大单据号
///
/// 单据前缀
///
public string GetMaxNo(string codeFlag)
{
try
{
var maxNo = "";
//获取异常号
maxNo = SelectMaxNo(codeFlag);
if (!string.IsNullOrEmpty(maxNo))
{
maxNo = maxNo.Substring(codeFlag.Length);
}
//获取数据库时间八位
string date = DateTime.Now.ToString("yyyyMMdd").Trim();
string no = "";
if (string.IsNullOrEmpty(maxNo))
{
no = codeFlag + date + "00001";
}
else
{
if (maxNo.Substring(0, 8) == date)
{
int lastNo = Convert.ToInt32(maxNo.Substring(8, 5)) + 1;
no = codeFlag + date + (lastNo.ToString().PadLeft(5, '0'));
}
else
{
no = codeFlag + date + "00001";
}
}
return no;
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
///
/// 根据前缀判断出当前最大单据号
///
/// 单据前缀
///
public string SelectMaxNo(string codeFlag)
{
try
{
string orderNo = "";
if (codeFlag == InOutFlag.SO.ToString())//出库
{
var list = DataContext.Db.Queryable().Where(m => m.SONo.StartsWith("SO")).ToList();
orderNo = list.Max(a => a.SONo);
}
if (codeFlag == InOutFlag.WSO.ToString())//波次出库
{
}
else if (codeFlag == InOutFlag.ASN.ToString())//入库
{
var list = DataContext.Db.Queryable().Where(m => m.ASNNo.StartsWith("ASN")).ToList();
orderNo = list.Select(a => a.ASNNo).Max();
}
else if (codeFlag == InOutFlag.PM.ToString())//移库
{
}
else if (codeFlag == InOutFlag.CR.ToString())//盘点
{
var list = DataContext.Db.Queryable().Where(m => m.CRNo.StartsWith("CR")).ToList();
orderNo = list.Select(a => a.CRNo).Max();
}
else if (codeFlag == InOutFlag.TK.ToString())//任务
{
var list = DataContext.Db.Queryable().Where(m => m.TaskNo.StartsWith("TK")).ToList();
orderNo = list.Max(m=>m.TaskNo);
}
else if (codeFlag == InOutFlag.EX.ToString())//异常
{
var list = DataContext.Db.Queryable().Where(m => m.ExceptionNo.StartsWith("EX")).ToList();
orderNo = list.Max(a => a.ExceptionNo);
}
return orderNo;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
///
/// 执行sql语句获取行数
///
/// 查询语句
/// 行数
public int GetRowCount(string sqlString)
{
try
{
var db = DataContext.Db;
var rowCount = db.Ado.GetInt(sqlString);
return rowCount;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
///
/// 判断托盘是否在入库中
///
/// 托盘号
///
public LogTask GetImTask(string palletNo)
{
try
{
var db = DataContext.Db;
//查询托盘是否有正在入库的任务
var imTask = db.Queryable().First(m => m.PalletNo == palletNo && m.IsDel == "0" && m.Status == "1");
return imTask;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
public enum InOutFlag
{
///
/// 入库单
///
[Description("入库单")]
ASN,
///
/// 出库单
///
[Description("出库单")]
SO,
///
/// 波次出库单
///
[Description("波次出库单")]
WSO,
///
/// 出库单
///
[Description("盘点单")]
CR,
///
/// 移库单
///
[Description("移库单")]
PM,
///
/// 任务
///
[Description("任务")]
TK,
///
/// 异常号
///
[Description("异常")]
EX
}
}