This commit is contained in:
jl
2023-12-05 14:35:20 +08:00
parent 9d64ef5d7a
commit 40557a235e
11 changed files with 501 additions and 511 deletions

View File

@ -9,11 +9,12 @@ using Epost.Common;
using Epost.DAL.Cache;
using Epost.DAL.Enum;
using Epost.Model;
using Epost.Model.resource;
namespace Epost.BLL
{
public class OrderControlBLL
public class OrderControlBLL
{
OrderBLL orderbll = new OrderBLL();
OrdersQueueBLL queueBLL = new OrdersQueueBLL();
@ -24,13 +25,13 @@ namespace Epost.BLL
AddressstorageBLL addrBLL = new AddressstorageBLL();
UserModelCacheDAL UserCacheDAL = new UserModelCacheDAL();
BoxQueueBLL queueboxBLL = new BoxQueueBLL();
SkuInfoBLL skuBLL = new SkuInfoBLL();
SkuInfoBLL skuBLL = new SkuInfoBLL();
ShowMesCacheDAL msgCache = new ShowMesCacheDAL();
LocationCacheDAL locCache = new LocationCacheDAL();
BoxCodeCacheDAL boxcache = new BoxCodeCacheDAL();
private static object lockobj = new object();
private static object lockobj = new object();
private static object lockJobDown = new object();
private static object showmes = new object();
public static bool OrisShow = false;
@ -49,18 +50,18 @@ namespace Epost.BLL
downCacheDAL.ClearJobDownList();
locCache.ClearScanList();
queueBLL.UpdateQueueState();
// queueboxBLL.UpdateQueueState();
// queueboxBLL.UpdateQueueState();
orderbll.UpOrderstate();
UserCacheDAL.ClearUserCodeList();
boxcache.ClearBoxList();
ResultModel resultModel = comBLL.Initialization_M();
GetOrderQueue(); //加载任务显示器信息
// GetOrderQueue(); //加载任务显示器信息
LogHelper.WriteLogInfo("初始化@@@@@@@@@@@@----V20200727-1---");
return resultModel;
@ -188,7 +189,7 @@ namespace Epost.BLL
{
LogHelper.WriteLogInfo("结束作业!");
OrisShow = false;
Thread.Sleep(500);
comBLL.CloseALL_M();
@ -235,7 +236,7 @@ namespace Epost.BLL
#region
public ResultModel Job_Down(string tblock)
{
lock (lockJobDown)
{
string[] nlist = tblock.Split('-');
@ -305,7 +306,7 @@ namespace Epost.BLL
}
}
//绑箱中
#endregion
#region
@ -340,7 +341,7 @@ namespace Epost.BLL
skulist = queueDT.Rows[0]["sku"].ToString();
LogHelper.WriteLogInfo("=======" + qmodel.UserCode + "=====" + area + "区===sku=" + skulist);
}
if (data.Loc == "check")//任意回显标签拍下 熄灭回显设备
{
List<JobModel> rejob = jobList.FindAll(m => m.Block == block && m.Area == area && m.State == 1 && m.Sku == queueDT.Rows[0]["sku"].ToString());
@ -366,11 +367,11 @@ namespace Epost.BLL
#region sku
JobCache.UpdateJobModelList(rejob, EcommendType.Execute);
#endregion
}
}
else if (data.Result == "4")//■按键拍下
{
data.Parameter = "0";
jobdown_start(data, job, block, area, jobList);
jobdown_start(data, job, block, area, jobList);
}
else
{
@ -387,119 +388,119 @@ namespace Epost.BLL
#region
public void jobdown_start(ResultMessageModel data, List<JobModel> job, string block, string area, List<JobModel> jobList)
{
int truequantity = 0;
int checkquantity = 0;
string scanstr = data.Parameter;
if (!string.IsNullOrEmpty(scanstr))
{
truequantity = Convert.ToInt32(scanstr);
}
if (job.Any())
{
List<JobModel> downlist = new List<JobModel>();
JobModel model = job.FirstOrDefault();
{
//int truequantity = 0;
//int checkquantity = 0;
//string scanstr = data.Parameter;
//if (!string.IsNullOrEmpty(scanstr))
//{
// truequantity = Convert.ToInt32(scanstr);
//}
//if (job.Any())
//{
// List<JobModel> downlist = new List<JobModel>();
// JobModel model = job.FirstOrDefault();
//List<JobModel> manyList = job.FindAll(m => m.ManyState == 1 && m.Tolocation == model.Tolocation);
//if (manyList.Any())//合并显示数据
//{
// //List<JobModel> manyList = job.FindAll(m => m.ManyState == 1 && m.Tolocation == model.Tolocation);
// //if (manyList.Any())//合并显示数据
// //{
// downlist.AddRange(manyList);
// LogHelper.WriteLogInfo("合并显示数据=========="+ manyList .Count+ "==================");
//}
//else
//{
downlist.Add(model);
// }
//修改订单状态
orderbll.UpdateOrderState_Car(downlist, model, truequantity, checkquantity);
LogHelper.WriteLogInfo(data.Address + "=========------------------" + data.Parameter);
bool skuInish = orderbll.IsFinishWork(1, block, "", area, model.Sku);
model.State = 3;
if (skuInish)
{
LogHelper.WriteLogInfo("区SKU拣选完成--------------");
//删除sku缓存信息
List<ResultMessageModel> scanlist = downCacheDAL.GetPlanJobDownList().FindAll(p => p.Parameter == model.Sku && p.Command == "QUERY_SPECIAL_STATUS" && p.Area == area);
downCacheDAL.UpdateJobDownModelList(scanlist, EdownCommend.Execute);
//熄灭通道灯
comBLL.DISPLAY_LIGHT_BLOCK(block, area, "0");
// // downlist.AddRange(manyList);
// // LogHelper.WriteLogInfo("合并显示数据=========="+ manyList .Count+ "==================");
// //}
// //else
// //{
// downlist.Add(model);
// // }
// //修改订单状态
// orderbll.UpdateOrderState_Car(downlist, model, truequantity, checkquantity);
// LogHelper.WriteLogInfo(data.Address + "=========------------------" + data.Parameter);
// bool skuInish = orderbll.IsFinishWork(1, block, "", area, model.Sku);
// model.State = 3;
// if (skuInish)
// {
// LogHelper.WriteLogInfo("区SKU拣选完成--------------");
// //删除sku缓存信息
// List<ResultMessageModel> scanlist = downCacheDAL.GetPlanJobDownList().FindAll(p => p.Parameter == model.Sku && p.Command == "QUERY_SPECIAL_STATUS" && p.Area == area);
// downCacheDAL.UpdateJobDownModelList(scanlist, EdownCommend.Execute);
// //熄灭通道灯
// comBLL.DISPLAY_LIGHT_BLOCK(block, area, "0");
#region
List<JobModel> offList = jobList.FindAll(m => m.Block == block && m.Area == area && m.State == 3 && m.Sku == model.Sku);
if (offList.Any())
{
comBLL.LED_OFF_CLEAR(offList);
}
#endregion
// #region 熄灭当前区显示
// List<JobModel> offList = jobList.FindAll(m => m.Block == block && m.Area == area && m.State == 3 && m.Sku == model.Sku);
// if (offList.Any())
// {
// comBLL.LED_OFF_CLEAR(offList);
// }
// #endregion
#region
OrdersQueueModel qumodel = new OrdersQueueModel();
qumodel.State = 3;
qumodel.Taskblock = block;
qumodel.Taskarea = area;
qumodel.Sku = model.Sku;
qumodel.Matchid = model.Matchid;
qumodel.UserCode = model.UserCode;
queueBLL.UpdateQueueTaskArea_Car(qumodel);
#endregion
// #region 修改任务队列状
// OrdersQueueModel qumodel = new OrdersQueueModel();
// qumodel.State = 3;
// qumodel.Taskblock = block;
// qumodel.Taskarea = area;
// qumodel.Sku = model.Sku;
// qumodel.Matchid = model.Matchid;
// qumodel.UserCode = model.UserCode;
// queueBLL.UpdateQueueTaskArea_Car(qumodel);
// #endregion
#region
showSummaryMes(model.Sku, block, area, Convert.ToInt32(block), null, model.Tolocation, model.Matchid);
#endregion
// #region 刷新波次信
// showSummaryMes(model.Sku, block, area, Convert.ToInt32(block), null, model.Tolocation, model.Matchid);
// #endregion
Thread.Sleep(30);
#region
bool blockfinish = orderbll.IsFinishWorkByCar(1, model.Matchid, block);
if (blockfinish)
{
#region
ShowMessageModel_M show = new ShowMessageModel_M();
show.Title = "当前波次分播完成";
show.Contents = "拍下熄灭所有设备\r请扫描继续作业";
show.Color = EnumHelper.EMToDescriptionString(LightColor.Color.Green);
show.Qty = "0";
show.Type = 8;
show.Block = block;
show.Islock = false;
show.IsTwinkle = 1;
show.No = "01";
comBLL.ShowBoxMessage_M(show);
#endregion
// Thread.Sleep(30);
// #region 整条通道当前用户所有任务分播结
// bool blockfinish = orderbll.IsFinishWorkByCar(1, model.Matchid, block);
// if (blockfinish)
// {
// #region 点亮显示
// ShowMessageModel_M show = new ShowMessageModel_M();
// show.Title = "当前波次分播完成";
// show.Contents = "拍下熄灭所有设备\r请扫描继续作业";
// show.Color = EnumHelper.EMToDescriptionString(LightColor.Color.Green);
// show.Qty = "0";
// show.Type = 8;
// show.Block = block;
// show.Islock = false;
// show.IsTwinkle = 1;
// show.No = "01";
// comBLL.ShowBoxMessage_M(show);
// #endregion
bool allfinish = orderbll.IsFinishWorkByCar(1, model.Matchid);
if (allfinish)//判断整个波次是否已完成
{ //更新state状态为已完成
orderbll.UpdateStateByCar(model.Matchid);
}
//删除波次信息
List<UserCodeModel> ulist = UserCacheDAL.GetUserCodeList().FindAll(m => m.Block == block);
UserCacheDAL.UpdateUserCodeList(ulist, EUserCommend.Execute);
// bool allfinish = orderbll.IsFinishWorkByCar(1, model.Matchid);
// if (allfinish)//判断整个波次是否已完成
// { //更新state状态为已完成
// orderbll.UpdateStateByCar(model.Matchid);
// }
// //删除波次信息
// List<UserCodeModel> ulist = UserCacheDAL.GetUserCodeList().FindAll(m => m.Block == block);
// UserCacheDAL.UpdateUserCodeList(ulist, EUserCommend.Execute);
}
#endregion
// }
// #endregion
#region sku播完回传
// orderbll.UpdateStateByCar(model.Matchid, "", model.Sku);
// #region 区内sku播完回传
// // orderbll.UpdateStateByCar(model.Matchid, "", model.Sku);
#endregion
// #endregion
#region sku
JobCache.UpdateJobModelList(offList, EcommendType.Execute);
#endregion
// #region 清除当前区已做完的sku
// JobCache.UpdateJobModelList(offList, EcommendType.Execute);
// #endregion
}
// }
// }
}
}
#endregion
#region M系列
public void DisplayJob_M(string tblock)
{
lock (lockobj)
{
@ -561,71 +562,30 @@ namespace Epost.BLL
#region
foreach (JobModel item in nowJoblist.ToArray())
{
#region
if (queueDT.Rows[0]["lightcolor"].ToString() == EnumHelper.EMToDescriptionString(LightColor.Color.Blue))
{
LabelParamModel locklamodel = new LabelParamModel();
locklamodel.Address = item.Address.ToString();
locklamodel.ControlIP = item.ControlIP.ToString();
locklamodel.Command = "LOCK";
locklamodel.Parameter = "11111000";
locklamodel.Type = "N";
list.Add(locklamodel);
}
#endregion
// else
//{
List<JobModel> manyJoblist = nowJoblist.FindAll(m => m.Tolocation == item.Tolocation);
int quantity = item.Quantity;
LabelParamModel lamodel = new LabelParamModel();
lamodel.Address = item.Address.ToString();
lamodel.ControlIP = item.ControlIP.ToString();
lamodel.Command = "DISPLAY_JOB";
#region
//if (manyJoblist.Count > 1)
//{
// if (manyJoblist.FindAll(m => m.State == 0).Any())
// {
// foreach (JobModel mitem in manyJoblist)
// {
// quantity += mitem.Quantity;
// mitem.State = 1;
// mitem.ManyState = 1;
// }
// }
//}
#endregion
lamodel.Uid = item.ID;
lamodel.Type = "N";
lamodel.Quantity = quantity.ToString();
lamodel.Uid = item.ID;
lamodel.Mode = queueDT.Rows[0]["lightcolor"].ToString() + "0";
list.Add(lamodel);
//}
item.State = 1;
item.ColorCode = queueDT.Rows[0]["lightcolor"].ToString();
#region
//先熄灭
comBLL.Ledonoff_dengdai("0", "");
Thread.Sleep(100);
comBLL.display_dengdai(item.Tolocation, "2");
#endregion
item.State = 3;
item.DisplayTime = DateTime.Now;
#region
orderbll.UpdateOrderState_Car(item.Matchid, item.Tolocation, "3");
model.State = 3;
bool allfinish = orderbll.IsFinishWorkByCar(1, item.Matchid);
if (allfinish)//判断整个波次是否已完成
{ //更新state状态为已完成
orderbll.UpdateStateByCar(item.Matchid);
//删除波次信息
List<UserCodeModel> ulist = UserCacheDAL.GetUserCodeList();
UserCacheDAL.UpdateUserCodeList(ulist, EUserCommend.Execute);
}
#endregion
}
#endregion
#region
comBLL.DISPLAY_LIGHT_BLOCK(model.Taskblock, model.Taskarea, "1");
#endregion
if (list != null && list.Count > 0)
{
LogHelper.WriteLogInfo("添加到点亮的list————————————————————" + list.Count);
comBLL.DISPLAY_JOBALL(list);
}
}
else
{//无任务
@ -633,22 +593,15 @@ namespace Epost.BLL
model.State = 3;
}
#endregion
if (jobList.Any())
{
var finishList = jobList.FindAll(p => p.State == 0);
if (!finishList.Any())
{
queueBLL.UpdateQueueOrderState(model);//缓存队列状态修改
}
}
queueBLL.UpdateQueueOrderState(model);//缓存队列状态修改
}
else {
else
{
LogHelper.WriteLogInfo("还有未完成任务" + isJobList.Count);
foreach (JobModel item in isJobList)
{
LogHelper.WriteLogInfo("还有未完成任务"+item.Address+item.ID);
LogHelper.WriteLogInfo("还有未完成任务" + item.Address + item.ID);
}
}
}
@ -672,37 +625,38 @@ namespace Epost.BLL
if (!ulist.Any())
{
//手动加波次信息
DataTable matdt = orderbll.GetMatchOrderList();
if (matdt != null && matdt.Rows.Count > 0)
if (scanStr.Substring(0, 1) == "S") //扫描分播墙号
{
UserCodeModel umodel = new UserCodeModel();
umodel.Matchid = matdt.Rows[0]["matchid"].ToString();
umodel.Matchid = data.Parameter;//分播墙号
matchid = data.Parameter;
umodel.Block = sblock;
umodel.Area = sarea;
UserCacheDAL.UpdateUserCodeList(new List<UserCodeModel> { umodel }, EUserCommend.Create);
LogHelper.WriteLogInfo("扫描播种墙号" + data.Parameter);
}
else
{
LogHelper.WriteLogInfo(scanStr + "请扫描正确的播种墙号");
}
}
ulist = UserCacheDAL.GetUserCodeList().FindAll(m => m.Block == sblock && m.Area == sarea);
if (ulist.Any())
{ matchid = ulist.FirstOrDefault().Matchid; }
#endregion
if (data.Type == "5")//中分扫描枪
{
zhongfenBind(ulist, scanStr, data);
downCacheDAL.UpdateJobDownModelList(new List<ResultMessageModel> { data }, EdownCommend.Execute);
}
else if (data.Type == "6")//播种扫描枪
else
{
ulist = UserCacheDAL.GetUserCodeList().FindAll(m => m.Block == sblock && m.Area == sarea);
if (ulist.Any())
{ matchid = ulist.FirstOrDefault().Matchid; }
xifenBind(ulist, scanStr, data, matchid, isnum);
#endregion
if (data.Type == "6")//播种扫描枪
{
xifenBind(ulist, scanStr, data, matchid, isnum);
downCacheDAL.UpdateJobDownModelList(new List<ResultMessageModel> { data }, EdownCommend.Execute);
}
downCacheDAL.UpdateJobDownModelList(new List<ResultMessageModel> { data }, EdownCommend.Execute);
}
return res;
}
catch (Exception ex)
@ -780,7 +734,7 @@ namespace Epost.BLL
{
foreach (AddressstorageModel item in Arealist)
{
DataTable skudt = orderbll.GetSumList("", scanStr, item.block,item.area);
DataTable skudt = orderbll.GetSumList("", scanStr, item.block, item.area);
if (skudt != null && skudt.Rows.Count > 0)
{
//规格
@ -827,7 +781,7 @@ namespace Epost.BLL
}
}
}
#endregion
}
@ -838,26 +792,7 @@ namespace Epost.BLL
#region
public void xifenBind(List<UserCodeModel> ulist, string scanStr, ResultMessageModel data, string matchid, bool isnum)
{
//if (ulist.Any())
//{
// UserCodeModel usermodel = ulist.FirstOrDefault();
//if (string.IsNullOrEmpty(usermodel.UserCode) && scanStr.Substring(0, 1) != "U")//
//{
// #region 提示先扫描工号
// ShowMessageModel_M show = new ShowMessageModel_M();
// show.Title = "请先扫描工号!";
// show.Contents = "";
// show.Color = EnumHelper.EMToDescriptionString(LightColor.Color.Red);
// show.Block = sblock;
// show.Area = sarea;
// show.Type = 8;
// show.Islock = true;
// comBLL.ShowBoxMessage_M(show);
// downCacheDAL.UpdateJobDownModelList(new List<ResultMessageModel> { data }, EdownCommend.Execute);
// #endregion
//}
//else
//{
if (scanStr.Substring(0, 1) == "U")
{
@ -875,7 +810,7 @@ namespace Epost.BLL
show.Area = data.Area;
show.Type = 8;
show.Islock = true;
comBLL.ShowBoxMessage_M(show);
#endregion
}
@ -921,14 +856,14 @@ namespace Epost.BLL
#region SKU
//根据扫描商品内码获取商品码
data.ScanCode = data.Parameter;
DataTable sinfodt = skuBLL.GetSkuInfoList(data.Parameter);
string location = string.Empty;
if (sinfodt != null && sinfodt.Rows.Count > 0)
{
scanStr = sinfodt.Rows[0]["sku"].ToString();
location = data.Parameter;// sinfodt.Rows[0]["tolocation"].ToString();
}
data.Parameter = scanStr;
//DataTable sinfodt = skuBLL.GetSkuInfoList(data.Parameter);
//string location = string.Empty;
//if (sinfodt != null && sinfodt.Rows.Count > 0)
//{
// scanStr = sinfodt.Rows[0]["sku"].ToString();
// location = data.Parameter;// sinfodt.Rows[0]["tolocation"].ToString();
//}
//data.Parameter = scanStr;
DataTable skudt = queueBLL.GetOrderQueue(data.Block, data.Area, "3");
List<ResultMessageModel> scanlist = downCacheDAL.GetPlanJobDownList().FindAll(m => m.Address == data.Address && m.Parameter == scanStr && m.Parameter != "888888" && m.Block == data.Block && m.Area == data.Area);
@ -954,18 +889,17 @@ namespace Epost.BLL
if (ulist.Any())
{
UserCodeModel umodel = ulist.FirstOrDefault();
data.Port = OrderDt.Rows[0]["matchid"].ToString();
OrdersQueueModel qmodel = new OrdersQueueModel();
qmodel.Sku = scanStr;
qmodel.Taskblock = data.Block;
qmodel.Taskarea = data.Area;
qmodel.UserCode = umodel.UserCode;
qmodel.Matchid = umodel.Matchid;
qmodel.Location = location;
qmodel.Location = scanStr;
qmodel.Lightcolor = EnumHelper.EMToDescriptionString(LightColor.Color.Red);
queueBLL.insertQueueOrders(qmodel);
//提示需要拣货总量/商品名称
showSummaryMes(scanStr, data.Block, data.Area, 1, data, "", OrderDt.Rows[0]["matchid"].ToString());
//showSummaryMes(scanStr, data.Block, data.Area, 1, data, "", OrderDt.Rows[0]["matchid"].ToString());
}
else
@ -976,50 +910,21 @@ namespace Epost.BLL
}
else
{
#region
DataTable echoDt = orderbll.GetOrderList_echo(matchid, scanStr, data.Area, data.Block);
if (echoDt != null && echoDt.Rows.Count > 0)
{
if (ulist.Any())
{
UserCodeModel umodel = ulist.FirstOrDefault();
data.Port = echoDt.Rows[0]["matchid"].ToString();
OrdersQueueModel qmodel = new OrdersQueueModel();
qmodel.Sku = scanStr;
qmodel.Taskblock = data.Block;
qmodel.Taskarea = data.Area;
qmodel.UserCode = umodel.UserCode;
qmodel.Matchid = umodel.Matchid;
// qmodel.Location = location;
qmodel.Lightcolor = EnumHelper.EMToDescriptionString(LightColor.Color.Blue);
queueBLL.insertQueueOrders(qmodel);
//提示需要拣货总量/商品名称
Mes_Echo(scanStr, data.Block, data.Area, 1, data, "", echoDt.Rows[0]["matchid"].ToString(), false);
}
else
{
LogHelper.WriteLogInfo("未扫描波次信息", LogHelper.Log_Type.ERROR);
}
//提示无任务
ShowMessageModel_M show = new ShowMessageModel_M();
show.Title = "商品:" + scanStr + "当前区无任务!";
show.Color = EnumHelper.EMToDescriptionString(LightColor.Color.Red);
show.Block = data.Block;
show.Area = data.Area;
show.Type = 8;
show.Islock = false;
comBLL.ShowBoxMessage_M(show);
downCacheDAL.UpdateJobDownModelList(new List<ResultMessageModel> { data }, EdownCommend.Execute);
}
else
{
//提示无任务
ShowMessageModel_M show = new ShowMessageModel_M();
show.Title = "商品:" + scanStr + "当前区无任务!";
show.Color = EnumHelper.EMToDescriptionString(LightColor.Color.Red);
show.Block = data.Block;
show.Area = data.Area;
show.Type = 8;
show.Islock = false;
comBLL.ShowBoxMessage_M(show);
downCacheDAL.UpdateJobDownModelList(new List<ResultMessageModel> { data }, EdownCommend.Execute);
}
#endregion
}
}
@ -1086,8 +991,8 @@ namespace Epost.BLL
}
if (data != null)
{
show.Contents = data.ScanCode + "(" + scanStr + ")" + "\r"+ mes;
show.Contents = data.ScanCode + "(" + scanStr + ")" + "\r" + mes;
sku = data.Parameter;
}
show.Color = EnumHelper.EMToDescriptionString(LightColor.Color.Blue);
@ -1244,7 +1149,7 @@ namespace Epost.BLL
int discount = Convert.ToInt32(sudt.Rows[0]["discount"].ToString());
//整件总数
int SumCkQuantity = 0; //Convert.ToInt32(sudt.Rows[0]["SumCkQuantity"].ToString());
//散件总数
//散件总数
int SumQuantity = Convert.ToInt32(sudt.Rows[0]["SumQuantity"].ToString());
//if (discount != 1)
//{
@ -1261,11 +1166,11 @@ namespace Epost.BLL
if (qdt != null && qdt.Rows.Count > 0)
{
show.Contents = qdt.Rows[0]["location"].ToString() + "(" + scanStr + ")" + "\r"+ mes;//sudt.Rows[0]["goodscode"].ToString().Replace(';','\r');
show.Contents = qdt.Rows[0]["location"].ToString() + "(" + scanStr + ")" + "\r" + mes;//sudt.Rows[0]["goodscode"].ToString().Replace(';','\r');
}
if (data != null)
{
show.Contents = data.ScanCode + "(" + scanStr + ")" + "\r"+ mes;// sudt.Rows[0]["goodscode"].ToString().Replace(';', '\r');
show.Contents = data.ScanCode + "(" + scanStr + ")" + "\r" + mes;// sudt.Rows[0]["goodscode"].ToString().Replace(';', '\r');
sku = data.Parameter;
}
show.Color = EnumHelper.EMToDescriptionString(LightColor.Color.Green);