using IWareDataAccess.EF;
|
using IWareDataAccess.Entity.Base;
|
using IWareDataAccess.Helper;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IWareDataAccess.Base.PLACE
|
{
|
public static class PlaceSqlFunc
|
{
|
|
/// <summary>
|
/// 搜索表
|
/// </summary>
|
/// <param name="keyValue"></param>
|
/// <param name="page"></param>
|
/// <returns></returns>
|
public static List<BASE_PLACE> Search(PlaceWebEntity webEntity, int page,int onePageNum, out string msg)
|
{
|
msg = "";
|
using (Model edm = new Model())
|
{
|
var f = PredicateBuilder.True<BASE_PLACE>();
|
//便利所有属性
|
Type type = webEntity.GetType();
|
foreach (var i in type.GetProperties())
|
{
|
object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
|
if (i.PropertyType == typeof(String))
|
{
|
string value;
|
if (v != null)
|
{
|
value = v.ToString();
|
f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
|
}
|
}
|
else
|
{
|
if (v != null)
|
{
|
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
|
}
|
}
|
}
|
|
List<BASE_PLACE> list = edm.BASE_PLACE.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
|
|
return list;
|
}
|
}
|
|
|
/// <summary>
|
/// 搜索视图
|
/// </summary>
|
/// <param name="keyValue"></param>
|
/// <param name="page"></param>
|
/// <returns></returns>
|
public static List<View_BASE_PLACE> SearchView(PlaceWebEntity webEntity, int page, int onePageNum, out string msg)
|
{
|
msg = "";
|
using (Model edm = new Model())
|
{
|
var f = PredicateBuilder.True<View_BASE_PLACE>();
|
|
//便利所有属性
|
Type type = webEntity.GetType();
|
foreach (var i in type.GetProperties())
|
{
|
object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
|
if (i.PropertyType == typeof(String))
|
{
|
string value;
|
if (v != null)
|
{
|
value = v.ToString();
|
f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
|
}
|
}
|
else
|
{
|
if (v != null)
|
{
|
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
|
}
|
}
|
}
|
|
List<View_BASE_PLACE> list = edm.View_BASE_PLACE.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
|
|
return list;
|
}
|
}
|
|
|
/// <summary>
|
/// 搜索视图数量
|
/// </summary>
|
/// <param name="keyValue"></param>
|
/// <param name="page"></param>
|
/// <returns></returns>
|
public static int SearchViewNum(PlaceWebEntity webEntity)
|
{
|
using (Model edm = new Model())
|
{
|
var f = PredicateBuilder.True<View_BASE_PLACE>();
|
//便利所有属性
|
Type type = webEntity.GetType();
|
foreach (var i in type.GetProperties())
|
{
|
object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
|
if (i.PropertyType == typeof(String))
|
{
|
string value;
|
if (v != null)
|
{
|
value = v.ToString();
|
f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
|
}
|
}
|
else
|
{
|
if (v != null)
|
{
|
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
|
}
|
}
|
}
|
|
int num = edm.View_BASE_PLACE.Where(f.Compile()).Count();
|
|
return num;
|
}
|
}
|
|
/// <summary>
|
/// 添加修改库位
|
/// </summary>
|
/// <param name="role"></param>
|
/// <returns></returns>
|
public static bool AddOrUpdate(PlaceWebEntity webPlace,out string msg)
|
{
|
msg = "";
|
using (Model edm = new Model())
|
{
|
//查询是否已存在此库位
|
BASE_PLACE place = edm.BASE_PLACE.FirstOrDefault(x=>x.PLACE==webPlace.place);
|
if (place == null)
|
{
|
//无此库位,属于新建
|
place = new BASE_PLACE();
|
}
|
place.PLACE = webPlace.place?? place.PLACE;
|
place.ROW = webPlace.row ??place.ROW ;
|
place.COL = webPlace.col??place.COL;
|
place.LAYER = webPlace.layer??place.LAYER;
|
place.SRMID = webPlace.srmId??place.SRMID;
|
place.ISFULL = webPlace.isFull??place.ISFULL;
|
place.ISLOCK = webPlace.isLock ?? place.ISLOCK;
|
|
if (!string.IsNullOrEmpty(webPlace.placeType))
|
{
|
BASE_PLACETYPE placeType = edm.BASE_PLACETYPE.FirstOrDefault(x => x.PLACETYPE == webPlace.placeType);
|
if (placeType != null)
|
{
|
place.PLACETYPEID = placeType.ID;
|
}
|
}
|
edm.BASE_PLACE.AddOrUpdateExtension(place);
|
if (edm.SaveChanges() > 0)
|
{
|
return true;
|
}
|
else
|
{
|
msg = "修改失败";
|
return false;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 获取库位信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
public static List<PlaceEntity> GetPlace(int taskType,int isStartPlace, out string msg)
|
{
|
try
|
{
|
msg = "";
|
List<PlaceEntity> placelst = new List<PlaceEntity>();
|
using (Model md = new Model())
|
{
|
switch (taskType)
|
{
|
case 1://入库
|
if (isStartPlace==1)
|
{
|
var lst = md.BASE_PRODUCTIONLINE.Where(x => x.ISDESTINATION == 1 && x.PRODUCTIONLINENAME.Contains("入口")).ToList();
|
if (lst != null && lst.Count>0)
|
{
|
lst.ForEach(x =>
|
{
|
placelst.Add(new PlaceEntity()
|
{
|
placeCode=x.PRODUCTIONLINECODE,
|
placeName=x.PRODUCTIONLINENAME
|
});
|
});
|
}
|
|
}else
|
{
|
var srmtask = md.SrmTask.Where(x => x.HASFINISHED == 0).ToList();
|
var maintask = md.TASK_TASK.Where(x => x.HASFINISHED == 0).ToList();
|
var emptyplace = md.BASE_PLACE.Where(x => x.ISFULL == 0 && x.ISLOCK == 0).ToList();
|
if (emptyplace != null && emptyplace.Count>0)
|
{
|
emptyplace.ForEach(x =>
|
{
|
bool bs = true;
|
bool bm = true;
|
if (srmtask != null || maintask != null)
|
{
|
int srmid = int.Parse(x.PLACE.Split('-')[0].ToString());
|
bs = srmtask.FirstOrDefault(y => (x.PLACE.Contains(y.SOURCEPLACE) || x.PLACE.Contains(y.TOPLACE)) && y.USESRMID == srmid) == null ? true : false;
|
bm = maintask.FirstOrDefault(y => y.SOURCEPLACE.Contains(x.PLACE) || y.TOPLACE.Contains(x.PLACE)) == null ? true : false;
|
}
|
if (bs&&bm)
|
{
|
placelst.Add(new PlaceEntity()
|
{
|
placeCode = x.PLACE,
|
placeName = x.PLACE
|
});
|
}
|
});
|
}
|
}
|
break;
|
case 2://出库
|
if (isStartPlace == 1)
|
{
|
// var srmtask = md.SrmTasks.Where(x => x.HASFINISHED == 0).ToList();
|
var maintask = md.TASK_TASK.Where(x => x.HASFINISHED == 0 && x.TASKSTATUS!="任务删除").ToList();
|
var place = md.BASE_PLACE.Where(x => x.ISFULL == 1 && x.ISLOCK == 0).ToList();
|
if (place != null && place.Count > 0)
|
{
|
place.ForEach(x =>
|
{
|
bool bs = true;
|
bool bm = true;
|
if (maintask != null)
|
{
|
//int srmid = int.Parse(x.PLACE.Split('-')[0].ToString());
|
// bs = srmtask.FirstOrDefault(y => (x.PLACE.Contains(y.SOURCEPLACE) || x.PLACE.Contains(y.TOPLACE)) && y.USESRMID == srmid) == null ? true : false;
|
bm = maintask.FirstOrDefault(y => y.SOURCEPLACE.Contains(x.PLACE) || y.TOPLACE.Contains(x.PLACE)) == null ? true : false;
|
}
|
if (bs && bm)
|
{
|
placelst.Add(new PlaceEntity()
|
{
|
placeCode = x.PLACE,
|
placeName = x.PLACE
|
});
|
}
|
});
|
}
|
}
|
else
|
{
|
var lst = md.BASE_PRODUCTIONLINE.Where(x => x.ISDESTINATION == 0 && x.PRODUCTIONLINENAME.Contains("出口")).ToList();
|
if (lst != null && lst.Count > 0)
|
{
|
lst.ForEach(x =>
|
{
|
placelst.Add(new PlaceEntity()
|
{
|
placeCode = x.PRODUCTIONLINECODE,
|
placeName = x.PRODUCTIONLINENAME,
|
});
|
});
|
}
|
}
|
break;
|
case 3://移库
|
var srmtasks = md.SrmTask.Where(x => x.HASFINISHED == 0).ToList();
|
var maintasks = md.TASK_TASK.Where(x => x.HASFINISHED == 0).ToList();
|
var places = md.BASE_PLACE.Where(x => x.ISFULL == 1 && x.ISLOCK == 0).ToList();
|
if (places != null && places.Count > 0)
|
{
|
places.ForEach(x =>
|
{
|
bool bs = true;
|
bool bm = true;
|
if (srmtasks != null|| maintasks != null)
|
{
|
int srmid = int.Parse(x.PLACE.Split('-')[0].ToString());
|
bs = srmtasks.FirstOrDefault(y => (x.PLACE.Contains(y.SOURCEPLACE) || x.PLACE.Contains(y.TOPLACE)) && y.USESRMID == srmid) == null ? true : false;
|
bm = maintasks.FirstOrDefault(y => y.SOURCEPLACE.Contains(x.PLACE) || y.TOPLACE.Contains(x.PLACE)) == null ? true : false;
|
}
|
if (bs && bm)
|
{
|
placelst.Add(new PlaceEntity()
|
{
|
placeCode = x.PLACE,
|
placeName = x.PLACE
|
|
});
|
}
|
});
|
}
|
break;
|
|
}
|
return placelst;
|
}
|
|
}
|
catch (Exception ex)
|
{
|
msg = "获取失败!";
|
return new List<PlaceEntity>();
|
}
|
}
|
|
|
public static PlaceStatusCountEntity GetAllStatusPlaceCount(int storageNo, out string msg)
|
{
|
try
|
{
|
msg = "";
|
|
using (Model md = new Model())
|
{
|
var placealllst = md.BASE_PLACE.Where(x => x.PLACE.Contains("-")).ToList();
|
var pvcviealllst = md.View_BASE_PLACE_VS_CONTAINER.Where(x => x.place.Contains("-")).ToList();
|
var placelst = md.BASE_PLACE.Where(x => x.SRMID == storageNo).ToList();
|
var lockplace=placelst.Where(x=>x.ISLOCK==1).Count();
|
var emptyplace=placelst.Where(x=>x.ISFULL==0&&x.ISLOCK==0).Count();
|
var cpc = pvcviealllst.Where(x => x.srmId == storageNo && string.IsNullOrEmpty(x.itemName)).ToList().Count();
|
var ipc = pvcviealllst.Where(x => x.srmId == storageNo && !string.IsNullOrEmpty(x.containerName)).Select(x => x.place).ToList().Distinct().Count();
|
PlaceStatusCountEntity psclst = new PlaceStatusCountEntity();
|
psclst.lPlaceCount = lockplace;
|
psclst.cPlaceCount = cpc;
|
psclst.iPlaceCount = ipc;
|
psclst.ePlaceCount = emptyplace;
|
|
var lockallplace = placealllst.Where(x => x.ISLOCK == 1).Count();
|
var emptyallplace = placealllst.Where(x => x.ISFULL == 0 && x.ISLOCK == 0).Count();
|
var callpc = pvcviealllst.Where(x => string.IsNullOrEmpty(x.containerName)).ToList().Count();
|
var iallpc = pvcviealllst.Where(x => !string.IsNullOrEmpty(x.containerName)).Select(x => x.place).ToList().Distinct().Count();
|
psclst.lAllPlaceCount = lockallplace;
|
psclst.cAllPlaceCount = callpc;
|
psclst.iAllPlaceCount = iallpc;
|
psclst.eAllPlaceCount = emptyallplace;
|
|
return psclst;
|
}
|
|
}
|
catch (Exception ex)
|
{
|
msg = "获取失败!";
|
return new PlaceStatusCountEntity();
|
}
|
}
|
|
public static List<PlaceEntity> GetAllPlaceInfo(int storageNo, int row, out string msg)
|
{
|
try
|
{
|
msg = "";
|
List<PlaceEntity> placelst = new List<PlaceEntity>();
|
using (Model md = new Model())
|
{
|
|
var pvcvilst = md.View_BASE_PLACE_VS_CONTAINER.Where(x => x.srmId == storageNo).ToList();
|
var place = md.BASE_PLACE.Where(x => x.SRMID == storageNo && x.ROW == row).ToList();
|
int maxcol = (int)place.Select(x => x.COL).ToList().Max();
|
int maxlary = (int)place.Select(x => x.LAYER).ToList().Max();
|
if (place != null && place.Count > 0)
|
{
|
for (int i = 1; i <= maxlary; i++)
|
{
|
for (int j = 1; j <= maxcol; j++)
|
{
|
|
int states = 0;
|
var pl=place.FirstOrDefault(x=>x.LAYER==i&&x.COL==j);
|
if (pl != null)
|
{
|
var pvcvi = pvcvilst.FirstOrDefault(y => y.place == pl.PLACE);
|
if (pvcvi != null)
|
{
|
if (pl.ISFULL == 1)
|
{
|
if (string.IsNullOrEmpty(pvcvi.itemName))
|
{
|
states = 1;//空器具
|
}
|
else
|
{
|
states = 2;//有货
|
}
|
}
|
else
|
{
|
states = 0;//空库位
|
}
|
}
|
else
|
{
|
if (pl.ISLOCK == 1)
|
{
|
states = 3;//锁定
|
}
|
else
|
{
|
states = 0;
|
}
|
}
|
}
|
else
|
{
|
string colv = (i >= 10) ? i.ToString() : "0" + i.ToString();
|
string layv = (i >= 10) ? j.ToString() : "0" + j.ToString();
|
pl = new BASE_PLACE();
|
pl.PLACE = storageNo + "-0" + row + "-" + colv + "-" + layv;
|
pl.PLACE="";
|
states=99;
|
pl.COL=j;
|
pl.ROW = row;
|
pl.LAYER=i;
|
}
|
|
|
placelst.Add(new PlaceEntity()
|
{
|
placeCode = pl.PLACE,
|
placeName = pl.PLACE,
|
placeStates = states,
|
col = pl.COL,
|
row = pl.ROW,
|
layer = pl.LAYER
|
|
});
|
|
}
|
}
|
}
|
return placelst;
|
}
|
|
}
|
catch (Exception ex)
|
{
|
msg = "获取失败!";
|
return new List<PlaceEntity>();
|
}
|
}
|
|
public static List<View_BASE_PLACE_VS_CONTAINER> GetPVCVIInfo(string placeName, out string msg)
|
{
|
try
|
{
|
msg = "";
|
List<View_BASE_PLACE_VS_CONTAINER> placelst = new List<View_BASE_PLACE_VS_CONTAINER>();
|
using (Model md = new Model())
|
{
|
placelst = md.View_BASE_PLACE_VS_CONTAINER.Where(x => x.place == placeName).ToList();
|
if (placelst != null && placelst.Count > 0)
|
{
|
return placelst;
|
}else
|
{
|
return null;
|
}
|
|
}
|
|
}
|
catch (Exception ex)
|
{
|
msg = "获取失败!";
|
return new List<View_BASE_PLACE_VS_CONTAINER>();
|
}
|
}
|
}
|
}
|