970 lines
35 KiB
C#
970 lines
35 KiB
C#
using Epost.Common;
|
|
using Epost.DAL;
|
|
using Epost.DAL.Enum;
|
|
using Epost.Model;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using ComposerSDK;
|
|
using Epost.DAL.Cache;
|
|
using Epost.Model.resource;
|
|
using System.Threading;
|
|
using System.Configuration;
|
|
|
|
namespace Epost.BLL
|
|
{
|
|
public class OrderBLL
|
|
{
|
|
BoxPickBLL pickBLL = new BoxPickBLL();
|
|
OrdersDAL dal = new OrdersDAL();
|
|
|
|
OrdersQueueBLL queueBLL = new OrdersQueueBLL();
|
|
BoxQueueBLL queueboxBLL = new BoxQueueBLL();
|
|
CommandDAL comDAL = new CommandDAL();
|
|
CommandBLL comBLL = new CommandBLL();
|
|
AddressstorageBLL addrBLL = new AddressstorageBLL();
|
|
JobModelCacheDAL JobCache = new JobModelCacheDAL();
|
|
JobDownCacheDAL downCacheDAL = new JobDownCacheDAL();
|
|
LocationCacheDAL LocCacheDAL = new LocationCacheDAL();
|
|
UserModelCacheDAL UserCacheDAL = new UserModelCacheDAL();
|
|
private static object lockbox = new object();
|
|
|
|
|
|
|
|
#region 查询控制器列表
|
|
public DataTable getControlList(int type = 0)
|
|
{
|
|
return dal.getControlList(type);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 查询控制器下所有标签地址
|
|
public DataTable getLabelList(string controlid)
|
|
{
|
|
return dal.getLabelList(controlid);
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 查询控制器下所有标签地址
|
|
public DataTable getLabelList()
|
|
{
|
|
return dal.getLabelList();
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 查询控制器下所有通道灯地址
|
|
public DataTable getLightList(string controlid)
|
|
{
|
|
return dal.getLightList(controlid);
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 查询订单所在区
|
|
public DataTable GetArea(string block, string area, string way)
|
|
{
|
|
|
|
|
|
return dal.GetArea(block, area, way);
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 拆单
|
|
public bool packOrder(ResultMessageModel data, List<JobModel> job, string block, string area, string type)
|
|
{
|
|
//将当前任务拆分成两条数据
|
|
bool isback = true;
|
|
//int truequantity = 0;
|
|
//int checkquantity = 0;
|
|
//string scanstr = data.Parameter;
|
|
//checkquantity = Convert.ToInt32(ConvertHexHelper.ConvertString(scanstr.Substring(scanstr.IndexOf("\n") + 1, 2), 16, 10));
|
|
//truequantity = Convert.ToInt32(ConvertHexHelper.ConvertString(scanstr.Substring(scanstr.IndexOf("\t") + 1, 5), 16, 10));
|
|
|
|
//if (job.Any())
|
|
//{
|
|
|
|
// List<JobModel> downlist = new List<JobModel>();
|
|
// JobModel model = job.FirstOrDefault();
|
|
// //调整数量出错
|
|
|
|
// if (truequantity > model.Quantity || checkquantity > model.CheckQuantity)
|
|
// {
|
|
// isback = false;
|
|
// }
|
|
// if (isback)
|
|
// {
|
|
// downlist.Add(model);
|
|
// //修改订单状态
|
|
// UpdateOrderState_Car(downlist, model, truequantity, checkquantity);
|
|
// //拆单
|
|
// List<OrdersModel> orlist = dal.getorders(model.BatchId);
|
|
// if (orlist.Any())
|
|
// {
|
|
// OrdersModel ormodel = orlist.FirstOrDefault();
|
|
// if (model.Quantity >= truequantity)
|
|
// {
|
|
// ormodel.quantity = model.Quantity - truequantity;
|
|
// }
|
|
// if (model.CheckQuantity >= checkquantity)
|
|
// {
|
|
// ormodel.checkquantity = model.CheckQuantity - checkquantity;
|
|
// }
|
|
// LogHelper.WriteLogInfo("拆单开始");
|
|
// //获取最大的batchid
|
|
// DataTable batDt = dal.getordersBatchid((ormodel.batchid).ToString());
|
|
// if (batDt != null && batDt.Rows.Count > 0)
|
|
// {
|
|
// int no = 1;
|
|
// string batchid = batDt.Rows[0]["batchid"].ToString();
|
|
// if (batchid.Contains("_"))
|
|
// {
|
|
|
|
// int start = batchid.IndexOf("_") + 1;
|
|
// int end = batchid.Length - start;
|
|
// no = Convert.ToInt32(batchid.Substring(start, end)) + 1;
|
|
// batchid = batchid.Substring(0, start - 1);
|
|
|
|
|
|
// }
|
|
// ormodel.batchid = batchid + "_" + no.ToString();
|
|
// ormodel.lotno = batchid;
|
|
// dal.InsertOrder(ormodel);
|
|
// }
|
|
// else
|
|
// {
|
|
// LogHelper.WriteLogInfo("查询唯一编号异常!");
|
|
// }
|
|
|
|
// }
|
|
// //////
|
|
// if (type == "1")//type 1换箱拆单 2缺货拆单
|
|
// {
|
|
// ChangeBoxModel cgmodel = new ChangeBoxModel();
|
|
// cgmodel.Shopid = model.ShopID;
|
|
// cgmodel.Address = data.Address;
|
|
// cgmodel.Controlip = data.IP;
|
|
// CgCache.UpdateBoxList(new List<ChangeBoxModel> { cgmodel }, EChangeboxCommend.Create);//将换箱门店信息存储
|
|
// }
|
|
// ///////
|
|
|
|
// }
|
|
|
|
//}
|
|
return isback;
|
|
}
|
|
#endregion
|
|
|
|
#region 绑箱\换箱 type:1绑箱 2 换箱
|
|
public bool ChangeBox(ResultMessageModel data, int type, string block = "", string area = "")
|
|
{
|
|
bool bo = false;
|
|
DataTable dt = queueboxBLL.getOrderqueueByAddr(data.Address, data.IP, "3");
|
|
if (type == 1)
|
|
{
|
|
dt = queueboxBLL.getOrderqueueByAddr(data.Address, data.IP);
|
|
}
|
|
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
string shopcode = dt.Rows[0]["shopid"].ToString();
|
|
List<ResultMessageModel> dnList = downCacheDAL.GetPlanJobDownList().FindAll(m => m.Status == "2" && m.Command == "QUERY_SPECIAL_STATUS" && m.Parameter.Contains(shopcode));
|
|
string boxcode = string.Empty;//箱号
|
|
string traycode = string.Empty;//托盘号
|
|
if (dnList.Any())
|
|
{
|
|
foreach (ResultMessageModel item in dnList)
|
|
{
|
|
if (item.Parameter.Contains("C"))
|
|
{
|
|
boxcode = item.Parameter;
|
|
}
|
|
else if (item.Parameter.Contains("P"))
|
|
{
|
|
traycode = item.Parameter;
|
|
}
|
|
}
|
|
|
|
if (type == 1)
|
|
{
|
|
bo = queueboxBLL.UpdateBoxCode(dt.Rows[0]["id"].ToString(), boxcode, traycode);
|
|
}
|
|
|
|
|
|
string matchid = dt.Rows[0]["matchid"].ToString();
|
|
bo = dal.bindBox(boxcode, matchid, shopcode, traycode);
|
|
if (bo)
|
|
{
|
|
if (type == 2)
|
|
{
|
|
//当前区恢复作业,设备灯亮起
|
|
queueBLL.updateOrderQueue(block, area);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
LogHelper.WriteLogInfo("绑定箱号执行失败!");
|
|
|
|
}
|
|
downCacheDAL.UpdateJobDownModelList(dnList, EdownCommend.Execute);
|
|
}
|
|
return bo;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
#region 删除任务
|
|
public void REMOVE_JOB(string address, string ip, string no)
|
|
{
|
|
no = ConvertHexHelper.ConvertString(no, 10, 16).PadLeft(2, '0');
|
|
|
|
LabelParamModel lb = new LabelParamModel();
|
|
lb.Address = address;
|
|
lb.Parameter = no;
|
|
lb.ControlIP = ip;
|
|
comDAL.REMOVE_JOB(lb);
|
|
}
|
|
#endregion
|
|
|
|
#region 标签显示器M系列
|
|
/// <summary>
|
|
/// 标签显示器
|
|
/// </summary>
|
|
/// <param name="address">设备地址</param>
|
|
/// <param name="ip">控制器IP</param>
|
|
/// <param name="msg">显示信息</param>
|
|
/// <param name="islock">是否锁定1锁定2解锁</param>
|
|
/// <param name="color">颜色</param>
|
|
/// <param name="isHex">是否转16进制 true 转16进制</param>
|
|
/// <param name="isTwinkle">是否闪烁 true闪烁/param>
|
|
public void ShowMessage(string address, string ip, string msg, int islock, string color, bool isHex, bool isTwinkle)
|
|
{
|
|
try
|
|
{
|
|
|
|
|
|
string no = ConvertHexHelper.ConvertString("1", 10, 16).PadLeft(2, '0');
|
|
LabelParamModel lb = new LabelParamModel();
|
|
lb.Address = address;
|
|
lb.ControlIP = ip;
|
|
|
|
string qty = msg;
|
|
string lc = "030NQ\n";
|
|
if (isTwinkle)
|
|
{
|
|
lc = "030NQ\n";
|
|
}
|
|
if (isHex)
|
|
{
|
|
qty = ConvertHexHelper.ConvertString(msg, 10, 16);
|
|
|
|
}
|
|
|
|
lb.Parameter = no + color + lc + qty;
|
|
comDAL.DISPLAY_JOB(lb);
|
|
if (islock == 1)
|
|
{
|
|
lb.Parameter = "11111000";
|
|
comDAL.LOCK(lb);
|
|
}
|
|
else if (islock == 2)
|
|
{
|
|
lb.Parameter = "11111000";
|
|
comDAL.UNLOCK(lb);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.WriteLogInfo("点亮标签显示器异常:" + ex.Message);
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 修改订单状态
|
|
public void UpdateOrderState(List<JobModel> downlist, JobModel model, int truequantity)
|
|
{
|
|
|
|
|
|
// string boxcode = scanList.FirstOrDefault().Parameter;
|
|
if (downlist.Count > 1)
|
|
{
|
|
int nowqty = truequantity;
|
|
if (truequantity != downlist.Sum(m => m.Quantity))
|
|
{
|
|
foreach (JobModel jobmo in downlist.ToArray())
|
|
{
|
|
|
|
if (nowqty > jobmo.Quantity)
|
|
{
|
|
nowqty = nowqty - jobmo.Quantity;
|
|
dal.UpdateWorkState(jobmo.OrderID, jobmo.Quantity, jobmo.Tolocation, jobmo.BatchId);
|
|
}
|
|
else
|
|
{
|
|
dal.UpdateWorkState(jobmo.OrderID, nowqty, jobmo.Tolocation, jobmo.BatchId);
|
|
nowqty = 0;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach (JobModel jobmo in downlist.ToArray())
|
|
{
|
|
dal.UpdateWorkState(jobmo.OrderID, jobmo.Quantity, jobmo.Tolocation, jobmo.BatchId);
|
|
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dal.UpdateWorkState(model.OrderID, truequantity, model.Tolocation, model.BatchId);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 修改订单状态
|
|
public void UpdateOrderState_Car(List<JobModel> downlist, JobModel model, int truequantity, int checkquaantity = 0)
|
|
{
|
|
if (downlist.Count > 1)
|
|
{
|
|
int nowqty = truequantity;
|
|
if (truequantity != downlist.Sum(m => m.Quantity))
|
|
{
|
|
foreach (JobModel jobmo in downlist.ToArray())
|
|
{
|
|
|
|
if (nowqty > jobmo.Quantity)
|
|
{
|
|
nowqty = nowqty - jobmo.Quantity;
|
|
dal.UpdateWorkState_Car(jobmo.Matchid, jobmo.Quantity, jobmo.Sku, jobmo.ID, checkquaantity, model.UserCode);
|
|
}
|
|
else
|
|
{
|
|
dal.UpdateWorkState_Car(jobmo.Matchid, jobmo.Quantity, jobmo.Sku, jobmo.ID, checkquaantity, model.UserCode);
|
|
nowqty = 0;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach (JobModel jobmo in downlist.ToArray())
|
|
{
|
|
dal.UpdateWorkState_Car(jobmo.Matchid, jobmo.Quantity, jobmo.Sku, jobmo.ID, checkquaantity, model.UserCode);
|
|
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
dal.UpdateWorkState_Car(model.Matchid, truequantity, model.Sku, model.ID, checkquaantity, model.UserCode);
|
|
}
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 绑定任务列表
|
|
public void BindJobByLocation(ResultMessageModel data)
|
|
{
|
|
try
|
|
{
|
|
string scanStr = data.Parameter.Trim();
|
|
DataTable dt = dal.GetSkuList(scanStr);
|
|
List<OrderListModel> list = new List<OrderListModel>();
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow item in dt.Rows)
|
|
{
|
|
OrderListModel model = new OrderListModel();
|
|
model.Goodsname = item["goodsname"].ToString();
|
|
model.Location = scanStr;
|
|
model.Sku = item["sku"].ToString();
|
|
model.State = 0;
|
|
list.Add(model);
|
|
}
|
|
LocCacheDAL.ClearScanList();
|
|
LocCacheDAL.UpdateLocModelList(list, ELCommend.Create);
|
|
downCacheDAL.UpdateJobDownModelList(new List<ResultMessageModel> { data }, EdownCommend.Execute);
|
|
}
|
|
else
|
|
{
|
|
//无数据
|
|
}
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.WriteLogInfo("绑定任务异常:" + ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//换箱
|
|
#region 换箱
|
|
public void changeBox_ClearJOB(string sblock, string sarea, string address, string controlip)
|
|
{
|
|
//清除当前区任务缓存
|
|
string boxcode = string.Empty;
|
|
string traycode = string.Empty;
|
|
string shopid = string.Empty;
|
|
List<JobModel> jobList = JobCache.GetPlanJobList();
|
|
List<JobModel> clearlist = jobList.FindAll(m => m.Block == sblock && m.Area == sarea);
|
|
List<JobModel> shoplist = jobList.FindAll(m => m.Block == sblock && m.Area == sarea && m.Address == address && m.ControlIP == controlip);
|
|
if (shoplist.Any())
|
|
{
|
|
LogHelper.WriteLogInfo("=====huanxiang");
|
|
JobModel shopmodel = shoplist.FirstOrDefault();
|
|
boxcode = shopmodel.BoxCode;
|
|
traycode = shopmodel.TrayCode;
|
|
shopid = shopmodel.ShopID;
|
|
}
|
|
JobCache.UpdateJobModelList(clearlist, EcommendType.Complete);
|
|
//熄灭当前区所有设备
|
|
DataTable addt = addrBLL.getAddresslist(sblock, sarea, "1");
|
|
List<LabelParamModel> adlist = new List<LabelParamModel>();
|
|
if (addt != null && addt.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow item in addt.Rows)
|
|
{
|
|
LabelParamModel admodel = new LabelParamModel();
|
|
admodel.Address = item["address"].ToString();
|
|
admodel.ControlIP = item["controlip"].ToString();
|
|
admodel.Parameter = "01";
|
|
admodel.Command = "REMOVE_JOB";
|
|
admodel.Timeout = "0.5";
|
|
adlist.Add(admodel);
|
|
|
|
}
|
|
comBLL.DISPLAY_JOBALL(adlist);
|
|
}
|
|
//点亮当前货位对应设备提示扫箱号
|
|
LabelParamModel model = new LabelParamModel();
|
|
model.Address = address;
|
|
model.ControlIP = controlip;
|
|
// model.Parameter = comBLL.GETDISPLAYJOBPAR_CN("07", "000100", "3", "请扫描箱号!", "", "", "", "", "门店号:" + shopid + "\r箱 号:" + boxcode + "\r托盘号:" + traycode, "");
|
|
comBLL.DISPLAY_JOB_M(model, true, true);
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 恢复当前标签拣货
|
|
public void displayJob_err(string address, string controlip, JobModel job)
|
|
{
|
|
LabelParamModel lamodel = new LabelParamModel();
|
|
|
|
lamodel.Address = address;
|
|
lamodel.ControlIP = controlip;
|
|
lamodel.Command = "DISPLAY_JOB";
|
|
string qty = ConvertHexHelper.ConvertString(job.Quantity.ToString(), 10, 16); //拣货数量
|
|
string CheckQuantity = ConvertHexHelper.ConvertString(job.CheckQuantity.ToString(), 10, 16); //拣货数量
|
|
// lamodel.Parameter = comBLL.GETDISPLAYJOBPAR_CN("01", job.ColorCode, "0", job.GoodsName, CheckQuantity, job.WholeUnit, qty, job.Unit, job.Sku, job.UserCode);//item.UserCode
|
|
comBLL.DISPLAY_JOB_M(lamodel, true, false);
|
|
}
|
|
#endregion
|
|
public void BindJobListBySku(string sku)
|
|
{
|
|
try
|
|
{
|
|
List<OrderListModel> dnList = LocCacheDAL.GetLocationList().FindAll(m => m.State == 0 && m.Sku == sku);
|
|
if (dnList.Any())
|
|
{
|
|
OrderListModel data = dnList.FirstOrDefault();
|
|
string lockation = data.Location;
|
|
bool bo = bindOrder(lockation, sku);
|
|
if (bo)
|
|
{
|
|
LocCacheDAL.UpdateLocModelList(new List<OrderListModel> { data }, ELCommend.Update);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.WriteLogInfo("绑定任务异常:" + ex.Message);
|
|
}
|
|
}
|
|
public bool bindOrder(string sku, string block, string matchid = "", string usercode = "", string area = "", int sort = 0, string lightColor = "010000")
|
|
{
|
|
|
|
// 加入拣货队列
|
|
OrdersQueueModel unmodel = new OrdersQueueModel();
|
|
unmodel.Sku = sku;
|
|
unmodel.Location = "";
|
|
unmodel.Taskarea = area;
|
|
unmodel.Taskblock = block;
|
|
unmodel.State = 0;
|
|
unmodel.Matchid = matchid;
|
|
unmodel.UserCode = usercode;
|
|
unmodel.Sort = sort;
|
|
unmodel.Lightcolor = lightColor;
|
|
bool qubo = queueBLL.insertQueueOrders(unmodel);
|
|
return qubo;
|
|
}
|
|
public void bindShop(string shopcode, string usercode, List<ResultMessageModel> list, ResultMessageModel data)
|
|
{
|
|
|
|
// 加入拣货队列
|
|
OrdersQueueModel unmodel = new OrdersQueueModel();
|
|
unmodel.Shopid = shopcode;
|
|
unmodel.Taskarea = "1";
|
|
unmodel.Taskblock = "1";
|
|
unmodel.State = 0;
|
|
unmodel.UserCode = usercode;
|
|
bool qubo = queueBLL.insertQueueOrders(unmodel);
|
|
if (qubo)
|
|
{
|
|
if (!string.IsNullOrEmpty(usercode))
|
|
{//清除工号条码
|
|
LogHelper.WriteLogInfo("清除工号条码:" + usercode + "--------------------");
|
|
|
|
UserCacheDAL.ClearUserCodeList();
|
|
}
|
|
|
|
////任务缓存
|
|
//List<JobModel> joblist = GetOrderList(shopcode);
|
|
//修改箱条码状态
|
|
//data.Port = shopcode;
|
|
list.Add(data);
|
|
downCacheDAL.UpdateJobDownModelList(list, EdownCommend.Update);
|
|
//修改数据表箱条码状态
|
|
pickBLL.UpdateBoxPick(shopcode);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 查询第一个作业区
|
|
public string getOrderArea(string block, string sku)
|
|
{
|
|
return dal.getOrderArea(block, sku);
|
|
}
|
|
#endregion
|
|
|
|
#region 查询标签所在区
|
|
public DataTable getArea(string address, string ip)
|
|
{
|
|
return dal.getArea(address, ip);
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 清除显示标签
|
|
public void ClearLight(string block)
|
|
{
|
|
DataTable addrDt = addrBLL.getAddressByBlock(block.PadLeft(2, '0'));
|
|
if (addrDt != null && addrDt.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in addrDt.Rows)
|
|
{
|
|
LabelParamModel labelModel = new LabelParamModel();
|
|
labelModel.ControlIP = dr["ControlIP"].ToString();
|
|
labelModel.Address = dr["Address"].ToString();
|
|
labelModel.Parameter = "01";
|
|
comDAL.REMOVE_JOB(labelModel);
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 挂起订单
|
|
public void HangupOrder(string block, ResultMessageModel data)
|
|
{
|
|
List<JobModel> jobList = JobCache.GetPlanJobList();
|
|
if (string.IsNullOrEmpty(block))
|
|
{
|
|
DataTable blockDt = addrBLL.getBlock(data.Address, "2", data.IP);
|
|
if (blockDt != null && blockDt.Rows.Count > 0)
|
|
{
|
|
block = blockDt.Rows[0]["Block"].ToString();
|
|
}
|
|
}
|
|
|
|
LogHelper.WriteLogInfo("取消作业-----------------------------------------------");
|
|
//取消当前作业订单
|
|
List<JobModel> canceljob = jobList.FindAll(m => m.State == 1 && m.Block == block);
|
|
#region 清除显示标签
|
|
|
|
ClearLight(block);
|
|
#endregion
|
|
|
|
#region 清除当前区标签
|
|
|
|
if (canceljob != null && canceljob.Count > 0)
|
|
{
|
|
JobModel model = canceljob.FirstOrDefault();
|
|
List<JobModel> list = jobList.FindAll(m => m.OrderID == model.OrderID);
|
|
foreach (JobModel item in list)
|
|
{
|
|
LabelParamModel labelModel = new LabelParamModel();
|
|
labelModel.ControlIP = item.ControlIP;
|
|
labelModel.Address = item.Address;
|
|
labelModel.Parameter = "01";
|
|
comDAL.REMOVE_JOB(labelModel);
|
|
}
|
|
dal.UpOrderState(model.OrderID);
|
|
JobCache.UpdateJobModelList(list, EcommendType.Complete);
|
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 取消订单
|
|
public bool DelOrder(string orderid)
|
|
{
|
|
|
|
//bool t = dal.DelOrder(orderid);
|
|
|
|
//return t;
|
|
return true;
|
|
}
|
|
#endregion
|
|
|
|
#region 修改订单为未作业
|
|
public bool UpOrderstate()
|
|
{
|
|
try
|
|
{
|
|
return dal.UpOrderstate();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.WriteLogInfo("修改订单为未开始" + ex.Message);
|
|
return false;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 获取订单信息
|
|
//public DataTable GetOrderList_Car(string sku)
|
|
//{
|
|
// return dal.GetOrderList_Car(sku);
|
|
//}
|
|
#endregion
|
|
|
|
#region 获取订单信息
|
|
public List<JobModel> GetOrderList(string matchid, string block, string sku = "", string area = "", string UserCode = "")
|
|
{
|
|
try
|
|
{
|
|
|
|
List<JobModel> list = new List<JobModel>();
|
|
DataTable OrderDt = dal.GetOrderList_Car(matchid, sku, area, block);
|
|
bool isecho = false;
|
|
if (OrderDt == null || OrderDt.Rows.Count == 0)//回显
|
|
{
|
|
OrderDt = dal.GetOrderList_echo(matchid, sku, area, block);
|
|
isecho = true;
|
|
|
|
}
|
|
if (OrderDt != null && OrderDt.Rows.Count > 0)
|
|
{
|
|
string usercode = string.Empty;
|
|
string lightcolor = string.Empty;
|
|
DataTable udt = dal.GetOrderUseerXCode(matchid, sku, area, block);
|
|
if (udt != null && udt.Rows.Count > 0)
|
|
{
|
|
usercode = udt.Rows[0]["usercode"].ToString();
|
|
lightcolor = udt.Rows[0]["lightcolor"].ToString();
|
|
}
|
|
if (string.IsNullOrEmpty(lightcolor))
|
|
{
|
|
lightcolor = EnumHelper.EMToDescriptionString(LightColor.Color.Red);
|
|
}
|
|
foreach (DataRow item in OrderDt.Rows)
|
|
{
|
|
#region 任务缓存信息
|
|
JobModel demodel = new JobModel();
|
|
demodel.OrderID = item["orderid"].ToString();
|
|
demodel.BatchId = item["BatchId"].ToString();
|
|
demodel.ID = item["ID"].ToString();
|
|
demodel.GoodsName = item["GoodsName"].ToString();
|
|
demodel.GoodsType = item["GoodsType"].ToString();
|
|
demodel.Quantity = Convert.ToInt32(item["Quantity"].ToString());
|
|
demodel.CheckQuantity = Convert.ToInt32(item["CheckQuantity"].ToString());
|
|
demodel.Sku = item["Sku"].ToString();
|
|
demodel.Tolocation = item["Tolocation"].ToString();
|
|
demodel.Matchid = item["Matchid"].ToString();
|
|
demodel.ShopID = item["shopid"].ToString();
|
|
demodel.BoxCode = item["boxcode"].ToString();
|
|
demodel.LotNo = item["LotNo"].ToString();
|
|
demodel.Discount = item["Discount"].ToString();
|
|
demodel.ProdArea = item["ProdArea"].ToString();
|
|
demodel.ColorCode = item["corlorcode"].ToString();
|
|
demodel.WholeUnit = item["WholeUnit"].ToString();
|
|
demodel.Unit = item["Unit"].ToString();
|
|
demodel.TrayCode = item["bkbarcode"].ToString();
|
|
#region 获取库位信息
|
|
demodel.Block = item["Block"].ToString();
|
|
demodel.Area = item["Area"].ToString();
|
|
demodel.Address = item["address"].ToString();
|
|
demodel.UserCode = usercode;
|
|
demodel.ColorCode = lightcolor;
|
|
demodel.Bkaddress = "0";
|
|
demodel.Addresstype = "1";
|
|
demodel.ControlID = "";
|
|
demodel.ControlIP = item["ControlIP"].ToString();
|
|
//demodel.Layer = item["Layer"].ToString();
|
|
//demodel.Slist = item["Slist"].ToString();
|
|
//demodel.Zone = item["zone"].ToString();
|
|
//demodel.TaskType =Convert.ToInt32(item["tasktype"].ToString());
|
|
|
|
#endregion
|
|
demodel.State = 0;
|
|
demodel.TaskArea = Convert.ToInt32(item["area"].ToString());
|
|
demodel.TaskBlock = Convert.ToInt32(item["block"].ToString());
|
|
demodel.No = "01";
|
|
if (isecho)
|
|
{
|
|
demodel.No = "04";
|
|
demodel.ColorCode = EnumHelper.EMToDescriptionString(LightColor.Color.Blue);
|
|
}
|
|
list.Add(demodel);
|
|
if (!isecho) {
|
|
//修改数据为已读
|
|
dal.UpOrder_Car(item["Matchid"].ToString(), item["sku"].ToString(), item["id"].ToString());
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
else
|
|
{
|
|
LogHelper.WriteLogInfo("查询无任务================");
|
|
|
|
OrdersQueueModel qmodel = new OrdersQueueModel();
|
|
qmodel.Sku = sku;
|
|
qmodel.Matchid = matchid;
|
|
qmodel.UserCode = UserCode;
|
|
qmodel.Taskblock = block;
|
|
qmodel.Taskarea = area;
|
|
qmodel.State = 3;
|
|
queueBLL.UpdateQueueTaskArea_Car(qmodel);
|
|
}
|
|
|
|
|
|
#region 添加任务缓存
|
|
JobCache.UpdateJobModelList(list, EcommendType.Create);
|
|
#endregion
|
|
|
|
|
|
|
|
return list;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
LogHelper.WriteLogInfo("获取订单信息:" + ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 获取拣货小车待拣货位信息
|
|
public List<LocationModel> GetLocationInfo(string shelves)
|
|
{
|
|
try
|
|
{
|
|
|
|
List<LocationModel> list = new List<LocationModel>();
|
|
DataTable dt = dal.GetLocationInfo(shelves);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow item in dt.Rows)
|
|
{
|
|
LocationModel model = new LocationModel();
|
|
model.Location = item["tolocation"].ToString();
|
|
model.Count = dt.Rows.Count;
|
|
model.Goodsname = item["Goodsname"].ToString();
|
|
list.Add(model);
|
|
}
|
|
}
|
|
|
|
return list;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
LogHelper.WriteLogInfo("获取拣货小车待拣货位信息:" + ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region 清除通道灯
|
|
public void Light_OFF(string block, string area, string way)
|
|
{
|
|
DataTable dtlist = GetArea(block, area, way);
|
|
if (dtlist != null && dtlist.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow lig in dtlist.Rows)
|
|
{
|
|
string contrlIp = lig["controlIp"].ToString();
|
|
string addr = lig["address"].ToString();
|
|
string addresstype = ConvertHexHelper.ConvertString(lig["addresstype"].ToString(), 10, 16).PadLeft(2, '0');
|
|
if (!string.IsNullOrEmpty(addr))
|
|
{
|
|
LabelParamModel lb = new LabelParamModel();
|
|
lb.Address = addr;
|
|
lb.Parameter = addresstype + "0";
|
|
lb.ControlIP = contrlIp;
|
|
comDAL.DISPLAY_LIGHT(lb);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 修改订单信息
|
|
public bool UpdateOrderstate(string orderid)
|
|
{
|
|
return dal.UpdateOrderstate(orderid);
|
|
}
|
|
#endregion
|
|
|
|
#region 查询波次是否开始作业
|
|
public bool getMatchWork(string matchid)
|
|
{
|
|
return dal.getMatchWork(matchid);
|
|
}
|
|
#endregion
|
|
|
|
#region 修改订单信息
|
|
public bool Updatestate(string matchid,string readdate)
|
|
{
|
|
return dal.Updatestate(matchid,readdate);
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 查询波次列表
|
|
public List<MatchModel> getMatchList(string strwhere)
|
|
{
|
|
return dal.getMatchList(strwhere);
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
#region 查询波次通道列表
|
|
public DataTable getShopBlockList(string matchid)
|
|
{
|
|
return dal.getShopBlockList(matchid);
|
|
}
|
|
#endregion
|
|
|
|
|
|
public DataTable GetMatchOrderList()
|
|
{
|
|
return dal.GetMatchOrderList();
|
|
}
|
|
|
|
public DataTable GetAreaByMatch(string matchid, string block)
|
|
{
|
|
return dal.GetAreaByMatch(matchid, block);
|
|
}
|
|
public DataTable GetMatchSumList(string matchid, string block)
|
|
{
|
|
return dal.GetMatchSumList(matchid, block);
|
|
}
|
|
|
|
public bool isTask(string block, string area)
|
|
{
|
|
return dal.isTask(block, area);
|
|
}
|
|
public string GetGoodsname(string sku)
|
|
{
|
|
return dal.GetGoodsname(sku);
|
|
}
|
|
public DataTable GetSumList(string matchid, string sku, string block = "", string area = "")
|
|
{
|
|
return dal.GetSumList(matchid, sku, block, area);
|
|
}
|
|
public DataTable GetSumList_Echo(string matchid, string sku, string block, string area = "")
|
|
{
|
|
return dal.GetSumList_Echo(matchid, sku, block, area);
|
|
}
|
|
//查询sku对应的所有任务
|
|
public DataTable getOrderListBysku(string block, string sku)
|
|
{
|
|
return dal.getOrderListBysku(block, sku);
|
|
}
|
|
|
|
public bool UpOrderStateBybat(string id)
|
|
{
|
|
return dal.UpOrderStateBybat(id);
|
|
}
|
|
|
|
|
|
|
|
public bool IsFinishWorkByCar(int endcount, string matchid, string block="")
|
|
{
|
|
return dal.IsFinishWorkByCar(endcount, matchid, block);
|
|
}
|
|
|
|
public bool UpdateStateByCar(string matchid, string block = "", string sku = "")
|
|
{
|
|
return dal.UpdateStateByCar(matchid, block, sku);
|
|
}
|
|
|
|
public bool IsFinishWork(int endcount, string block, string usercode = "", string area = "", string sku = "", string shopid = "", string matchid = "")
|
|
{
|
|
return dal.IsFinishWork(endcount, block, usercode, area, sku, shopid, matchid);
|
|
}
|
|
|
|
|
|
public DataTable GetMatchOrder()
|
|
{
|
|
return dal.GetMatchOrder();
|
|
}
|
|
|
|
|
|
#region 获取订单信息
|
|
public DataTable GetOrderList_Car(string matchid, string sku, string sarea, string sblock)
|
|
{
|
|
return dal.GetOrderList_Car(matchid, sku, sarea, sblock);
|
|
}
|
|
#endregion
|
|
#region 获取订单信息
|
|
public DataTable GetOrderList_echo(string matchid, string sku, string sarea, string sblock)
|
|
{
|
|
return dal.GetOrderList_echo(matchid, sku, sarea, sblock);
|
|
}
|
|
#endregion
|
|
}
|
|
}
|