You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
516 lines
23 KiB
516 lines
23 KiB
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Net.Sockets;
|
|
using System.Text;
|
|
using XS_DAL;
|
|
using XS_Model;
|
|
|
|
namespace XS_BLL
|
|
{
|
|
/// <summary>
|
|
/// 码垛任务生成
|
|
/// </summary>
|
|
public class ZH_BLL
|
|
{
|
|
#region 全局参数
|
|
/// <summary>
|
|
/// 接口地址,请求路径
|
|
/// </summary>
|
|
public static string InterfaceAdd = Global.upper_WMSURL + "product/alloc";//请求路径
|
|
/// <summary>
|
|
/// 接口名称,接口日志文件名
|
|
/// </summary>
|
|
public static string InterfaceName = "PALLETIZING_COUNT";
|
|
/// <summary>
|
|
/// 接口描述
|
|
/// </summary>
|
|
public static string InterfaceNote = "码垛机任务生成";
|
|
/// <summary>
|
|
/// 接口流向
|
|
/// </summary>
|
|
public static string InterfaceFlow = "WCS==>>WMS";
|
|
/// <summary>
|
|
/// 请求JSON
|
|
/// </summary>
|
|
public static string reqJson = string.Empty;
|
|
/// <summary>
|
|
/// 反馈JSON
|
|
/// </summary>
|
|
public static string retJson = string.Empty;
|
|
/// <summary>
|
|
/// 贴标机
|
|
/// </summary>
|
|
public static Socket socketSendPrint201;
|
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
/// 码垛计数
|
|
/// </summary>
|
|
public static void PALLETIZING_COUNT()
|
|
{
|
|
IO_CONTROL model = new IO_CONTROL();
|
|
List<IO_CONTROL> acModelList = new List<IO_CONTROL>();
|
|
IO_CONTROL model2 = new IO_CONTROL();
|
|
List<IO_CONTROL> acModelList2 = new List<IO_CONTROL>();
|
|
|
|
ZH_pallet zhmodel = new ZH_pallet();
|
|
List<ZH_pallet> zhModelList = new List<ZH_pallet>();
|
|
List<ZH_pallet> zhModelList2 = new List<ZH_pallet>();
|
|
List<ZH_pallet> zhModelList3 = new List<ZH_pallet>();
|
|
List<ZH_pallet> zhModelList4 = new List<ZH_pallet>();
|
|
IO_INTERFACE_PALLET pALLET = new IO_INTERFACE_PALLET();
|
|
List<IO_INTERFACE_PALLET> pALLETList = new List<IO_INTERFACE_PALLET>();
|
|
List<IO_CONTROL> chaiduo = new List<IO_CONTROL>();
|
|
IO_CONTROL model4 = new IO_CONTROL();
|
|
IO_CONTROL model5 = new IO_CONTROL();
|
|
IO_INTERFACE_TASK_STATE_LOG stModel = new IO_INTERFACE_TASK_STATE_LOG();
|
|
List<IO_INTERFACE_TASK_STATE_LOG> ItlModel = new List<IO_INTERFACE_TASK_STATE_LOG>();
|
|
List<IO_CONTROL_APPLY> APPLYModelList = new List<IO_CONTROL_APPLY>();
|
|
IO_CONTROL_APPLY APPLYModle = new IO_CONTROL_APPLY();
|
|
int zhcount;
|
|
int zhcount2;
|
|
string coujian = string.Empty;
|
|
|
|
model4.Delete("taskflag in (3) and CONTROL_STATUS=999");
|
|
|
|
#region 生成码垛任务
|
|
/*
|
|
//acModelList = model.GetModelList("taskflag=2 and CONTROL_STATUS = 999");
|
|
ItlModel = stModel.GetModelList();
|
|
if (ItlModel.Count > 0)
|
|
{
|
|
coujian = ItlModel.Select(c => c.testingRandomPointCode).First();
|
|
}
|
|
try
|
|
{
|
|
|
|
foreach (var item in acModelList)
|
|
{
|
|
pALLETList = pALLET.GetModelList("productCode='" + item.CONTORL_BATCH + "'");
|
|
int pacount = pALLETList.Select(c => c.qty).First();
|
|
|
|
int GOODS_COUNT;
|
|
int GOODS_COUNT2;
|
|
string CONTROL_ID = item.CONTROL_ID;
|
|
if (item.CONTROL_FLAG == "1")
|
|
{
|
|
zhModelList = zhmodel.GetModelList(" Device=" + coujian);
|
|
//查询有没有正在执行的任务
|
|
acModelList2 = model2.GetModelList("taskflag = 3 and END_DEVICE_CODE='" + coujian+"'");
|
|
if (zhModelList.Count == 0&& acModelList2.Count==0)
|
|
{
|
|
model4 = new IO_CONTROL();
|
|
model4 = item;
|
|
model4.CONTROL_ID = Convert.ToString(UtilityBLL.GetTempManageIdx());
|
|
model4.START_DEVICE_CODE = item.END_DEVICE_CODE;
|
|
model4.END_DEVICE_CODE = coujian;
|
|
model4.CONTROL_STATUS = 0;
|
|
model4.CONTROL_BEGIN_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
model4.taskflag = 3;
|
|
if (model4.Insert())
|
|
{
|
|
model5.Delete("taskflag=2 and CONTROL_ID='" + CONTROL_ID + "'");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
zhcount = Convert.ToInt32(zhModelList.Select(c => c.qty).First());
|
|
if (pacount > zhcount && acModelList2.Count == 0)
|
|
{
|
|
model4 = new IO_CONTROL();
|
|
model4 = item;
|
|
model4.CONTROL_ID = Convert.ToString(UtilityBLL.GetTempManageIdx());
|
|
model4.START_DEVICE_CODE = item.END_DEVICE_CODE;
|
|
model4.END_DEVICE_CODE = coujian;
|
|
model4.CONTROL_STATUS = 0;
|
|
model4.CONTROL_BEGIN_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
model4.taskflag = 3;
|
|
if (model4.Insert())
|
|
{
|
|
model5.Delete("taskflag=2 and CONTROL_ID='" + CONTROL_ID + "'");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (item.END_DEVICE_CODE == "12041")
|
|
{
|
|
|
|
//判断工位码垛任务的数量
|
|
zhModelList = zhmodel.GetModelList(" Device=12014");
|
|
if (zhModelList.Count == 0)
|
|
{
|
|
zhcount = 0;
|
|
}
|
|
else
|
|
{
|
|
zhcount = Convert.ToInt32(zhModelList.Select(c => c.qty).First());
|
|
}
|
|
zhModelList2 = zhmodel.GetModelList(" Device=12011");
|
|
if (zhModelList2.Count == 0)
|
|
{
|
|
zhcount2 = 0;
|
|
}
|
|
else
|
|
{
|
|
zhcount2 = Convert.ToInt32(zhModelList2.Select(c => c.qty).First());
|
|
}
|
|
//查询有没有满垛任务
|
|
zhModelList3 = zhmodel.GetModelList("GOODS_COUNT in(1,2) and Device=12014");
|
|
if (zhModelList3.Count == 0)
|
|
{
|
|
GOODS_COUNT = 0;
|
|
}
|
|
else
|
|
{
|
|
GOODS_COUNT = 1;
|
|
}
|
|
zhModelList4 = zhmodel.GetModelList("GOODS_COUNT in(1,2) and Device=12011");
|
|
if (zhModelList4.Count == 0)
|
|
{
|
|
GOODS_COUNT2 = 0;
|
|
}
|
|
else
|
|
{
|
|
GOODS_COUNT2 = 1;
|
|
}
|
|
|
|
//码垛任务生成
|
|
if (coujian != "12014" && GOODS_COUNT == 0 && (zhcount2 == 0 || coujian == "12011"))
|
|
{
|
|
//查询有没有正在执行的任务
|
|
acModelList2 = model2.GetModelList("taskflag = 3 and END_DEVICE_CODE='12014'");
|
|
if (acModelList2.Count == 0)
|
|
{
|
|
model4 = new IO_CONTROL();
|
|
model4 = item;
|
|
model4.CONTROL_ID = Convert.ToString(UtilityBLL.GetTempManageIdx());
|
|
model4.START_DEVICE_CODE = item.END_DEVICE_CODE;
|
|
model4.END_DEVICE_CODE = "12014";
|
|
model4.CONTROL_STATUS = 0;
|
|
model4.CONTROL_BEGIN_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
model4.taskflag = 3;
|
|
if (model4.Insert())
|
|
{
|
|
model5.Delete("taskflag=2 and CONTROL_ID='" + CONTROL_ID + "'");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (coujian != "12011" && GOODS_COUNT2 == 0)
|
|
{
|
|
//查询有没有正在执行的任务
|
|
acModelList2 = model2.GetModelList("taskflag = 3 and END_DEVICE_CODE='12011'");
|
|
if (acModelList2.Count == 0)
|
|
{
|
|
model4 = new IO_CONTROL();
|
|
model4 = item;
|
|
model4.CONTROL_ID = Convert.ToString(UtilityBLL.GetTempManageIdx());
|
|
model4.START_DEVICE_CODE = item.END_DEVICE_CODE;
|
|
model4.END_DEVICE_CODE = "12011";
|
|
model4.CONTROL_STATUS = 0;
|
|
model4.CONTROL_BEGIN_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
model4.taskflag = 3;
|
|
if (model4.Insert())
|
|
{
|
|
model5.Delete("taskflag=2 and CONTROL_ID='" + CONTROL_ID + "'");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (item.END_DEVICE_CODE == "12045")
|
|
{
|
|
//判断工位是否有码垛任务
|
|
zhModelList = zhmodel.GetModelList(" Device=12008");
|
|
if (zhModelList.Count == 0)
|
|
{
|
|
zhcount = 0;
|
|
}
|
|
else
|
|
{
|
|
zhcount = Convert.ToInt32(zhModelList.Select(c => c.qty).First());
|
|
}
|
|
zhModelList2 = zhmodel.GetModelList(" Device=12007");
|
|
if (zhModelList2.Count == 0)
|
|
{
|
|
zhcount2 = 0;
|
|
}
|
|
else
|
|
{
|
|
zhcount2 = Convert.ToInt32(zhModelList2.Select(c => c.qty).First());
|
|
}
|
|
|
|
//查询有没有满垛任务
|
|
zhModelList3 = zhmodel.GetModelList("GOODS_COUNT in (1,2) and Device=12008");
|
|
if (zhModelList3.Count == 0)
|
|
{
|
|
GOODS_COUNT = 0;
|
|
}
|
|
else
|
|
{
|
|
GOODS_COUNT = 1;
|
|
}
|
|
zhModelList4 = zhmodel.GetModelList("GOODS_COUNT in (1,2) and Device=12007");
|
|
if (zhModelList4.Count == 0)
|
|
{
|
|
GOODS_COUNT2 = 0;
|
|
}
|
|
else
|
|
{
|
|
GOODS_COUNT2 = 1;
|
|
}
|
|
|
|
//码垛任务生成
|
|
if (coujian != "12008" && GOODS_COUNT == 0 && (zhcount2 == 0|| coujian == "12007"))
|
|
{
|
|
//查询有没有正在执行的任务
|
|
acModelList2 = model2.GetModelList("taskflag = 3 and END_DEVICE_CODE='12008'");
|
|
if (acModelList2.Count == 0)
|
|
{
|
|
model4 = new IO_CONTROL();
|
|
model4 = item;
|
|
model4.CONTROL_ID = Convert.ToString(UtilityBLL.GetTempManageIdx());
|
|
model4.START_DEVICE_CODE = item.END_DEVICE_CODE;
|
|
model4.END_DEVICE_CODE = "12008";
|
|
model4.CONTROL_STATUS = 0;
|
|
model4.CONTROL_BEGIN_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
model4.taskflag = 3;
|
|
if (model4.Insert())
|
|
{
|
|
model5.Delete("taskflag=2 and CONTROL_ID='" + CONTROL_ID + "'");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (coujian != "12007" && GOODS_COUNT2 == 0)
|
|
{
|
|
//查询有没有正在执行的任务
|
|
acModelList2 = model2.GetModelList("taskflag = 3 and END_DEVICE_CODE='12007'");
|
|
if (acModelList2.Count == 0)
|
|
{
|
|
model4 = new IO_CONTROL();
|
|
model4 = item;
|
|
model4.CONTROL_ID = Convert.ToString(UtilityBLL.GetTempManageIdx());
|
|
model4.START_DEVICE_CODE = item.END_DEVICE_CODE;
|
|
model4.END_DEVICE_CODE = "12007";
|
|
model4.CONTROL_STATUS = 0;
|
|
model4.CONTROL_BEGIN_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
model4.taskflag = 3;
|
|
if (model4.Insert())
|
|
{
|
|
model5.Delete("taskflag=2 and CONTROL_ID='" + CONTROL_ID + "'");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
new DisplaySet().ErrorAddListBoxItem(InterfaceName, ex.Message);
|
|
new DisplaySet().AddListBoxItem(InterfaceName, ex.Message);
|
|
|
|
UtilityBLL.CreateINTERFACE_LOG(InterfaceName, InterfaceFlow, reqJson, ex.Message, InterfaceNote);
|
|
|
|
LogHelper.ErrorLog(ex);
|
|
}
|
|
*/
|
|
#endregion
|
|
#region 质检物料满托计算
|
|
/*
|
|
pALLETList= pALLET.GetModelList("productCode=(select productCode from IO_INTERFACE_TASK_STATE_LOG where testingRandomPointCode='"+coujian+"')");
|
|
foreach (var item in pALLETList)
|
|
{
|
|
manduo = (Convert.ToInt32(item.palletArrangePlatoon) * Convert.ToInt32(item.palletArrangeLie)) * 2;
|
|
|
|
zhModelList= zhmodel.GetModelList("Device="+coujian);
|
|
foreach (var item1 in zhModelList)
|
|
{
|
|
if (item1.qty == manduo)
|
|
{
|
|
//如果质测工位码垛数量等于满垛物料的一半
|
|
zhmodel.Update("GOODS_COUNT=1", "Device=" + coujian);
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
#endregion
|
|
#region 拆垛完成申请
|
|
zhModelList = zhmodel.GetModelList("Device=12007");
|
|
acModelList = model.GetModelList("CONTROL_STATUS =77 and taskflag = 12 and CONTROL_FLAG='2'");
|
|
|
|
List<IO_CONTROL> temp = model.GetModelList(" CONTROL_STATUS=999 and taskflag=12 and CONTROL_FLAG='2' and END_DEVICE_CODE='12008'");
|
|
if (acModelList.Count > 0 && acModelList.Count > 0)
|
|
{
|
|
if (zhModelList.Count == 0)
|
|
{
|
|
zhcount = 0;
|
|
}
|
|
else
|
|
{
|
|
zhcount = Convert.ToInt32(zhModelList.Select(c => c.qty).First());
|
|
}
|
|
zhcount2 = Convert.ToInt32(acModelList.Select(c => c.GOODS_NUM).First());
|
|
if (zhcount == zhcount2)
|
|
{
|
|
zhmodel.Update("GOODS_COUNT = 1", "Device=" + zhModelList.Select(c => c.Device).First());
|
|
}
|
|
else
|
|
{
|
|
string OLD_STOCK_BARCODE = temp.Count > 0 ? temp[0].STOCK_BARCODE : "";
|
|
zhmodel.Update($" stockUp = 1 ,OLD_STOCK_BARCODE = '{OLD_STOCK_BARCODE}', qty_count = {zhcount2}", "Device=" + zhModelList.Select(c => c.Device).First());
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
#region 生成拆垛任务
|
|
acModelList = model.GetModelList("CONTROL_STATUS =77 and taskflag = 12 and CONTROL_FLAG='2'");
|
|
foreach (var item in acModelList)
|
|
{
|
|
try
|
|
{
|
|
|
|
zhModelList = zhmodel.GetModelList("Device=12007");
|
|
if (zhModelList.Count == 0)
|
|
{
|
|
zhcount = 0;
|
|
}
|
|
else
|
|
{
|
|
zhcount = Convert.ToInt32(zhModelList.Select(c => c.qty).First());
|
|
}
|
|
//没有拆垛任务的时候
|
|
chaiduo = model.GetModelList("taskflag = 3 and END_DEVICE_CODE=12007");
|
|
|
|
if (chaiduo.Count == 0 && (zhcount == 0 || item.GOODS_NUM > zhcount))
|
|
{
|
|
model4 = new IO_CONTROL();
|
|
model4 = item;
|
|
model4.CONTROL_ID = Convert.ToString(UtilityBLL.GetTempManageIdx());
|
|
model4.START_DEVICE_CODE = "12008";
|
|
model4.END_DEVICE_CODE = "12007";
|
|
model4.CONTROL_STATUS = 0;
|
|
model4.STOCK_BARCODE = "";
|
|
model4.CONTROL_BEGIN_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
model4.taskflag = 3;
|
|
model4.Insert();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
new DisplaySet().ErrorAddListBoxItem(InterfaceName, ex.Message);
|
|
new DisplaySet().AddListBoxItem(InterfaceName, ex.Message);
|
|
|
|
UtilityBLL.CreateINTERFACE_LOG(InterfaceName, InterfaceFlow, reqJson, retJson + ex.Message, InterfaceNote);
|
|
|
|
LogHelper.ErrorLog(ex);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 堆垛机取货时校验托盘
|
|
APPLYModelList = APPLYModle.GetModelList("DEVICE_CODE in (11001,11002)");
|
|
foreach (var item in APPLYModelList)
|
|
{/*
|
|
try
|
|
{
|
|
|
|
string STOCK_BARCODE = item.STOCK_BARCODE.Substring(0, 7);
|
|
if (!STOCK_BARCODE.Equals("1111111"))
|
|
{
|
|
acModelList = model.GetModelList("taskflag = 11 and CONTROL_TASK_TYPE=3");
|
|
foreach (var item1 in acModelList)
|
|
{
|
|
int fromRoadwayCode = Convert.ToInt32(item1.START_DEVICE_CODE.Substring(1, 1));
|
|
if (item.DEVICE_CODE.Equals("11002") && (fromRoadwayCode == 1 || fromRoadwayCode == 2))
|
|
{
|
|
if (!item.STOCK_BARCODE.Equals(item1.STOCK_BARCODE))
|
|
{
|
|
model.Update("STOCK_BARCODE='" + item.STOCK_BARCODE + "'");
|
|
}
|
|
}
|
|
else if (item.DEVICE_CODE.Equals("11001") && (fromRoadwayCode == 3 || fromRoadwayCode == 4))
|
|
{
|
|
if (!item.STOCK_BARCODE.Equals(item1.STOCK_BARCODE))
|
|
{
|
|
model.Update("STOCK_BARCODE='" + item.STOCK_BARCODE + "'");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
APPLYModle.Delete("CONTROL_APPLY_ID=" + item.CONTROL_APPLY_ID);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
new DisplaySet().ErrorAddListBoxItem(InterfaceName, ex.Message);
|
|
new DisplaySet().AddListBoxItem(InterfaceName, ex.Message);
|
|
|
|
UtilityBLL.CreateINTERFACE_LOG(InterfaceName, InterfaceFlow, reqJson, ex.Message, InterfaceNote);
|
|
|
|
LogHelper.ErrorLog(ex);
|
|
}
|
|
*/
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
/// <summary>
|
|
/// 托盘申请 实体类
|
|
/// </summary>
|
|
public class ZH_pallet
|
|
{
|
|
/// <summary>
|
|
/// 任务号
|
|
/// </summary>
|
|
public string taskNo { get; set; }
|
|
/// <summary>
|
|
/// 子任务号
|
|
/// </summary>
|
|
public string subTaskNo { get; set; }
|
|
/// <summary>
|
|
/// 资源点
|
|
/// </summary>
|
|
public string Device { get; set; }
|
|
/// <summary>
|
|
/// 托盘号
|
|
/// </summary>
|
|
public string STOCK_BARCODE { get; set; }
|
|
/// <summary>
|
|
/// 托盘状态 0 不可用,1 可用
|
|
/// </summary>
|
|
public string Gflag { get; set; }
|
|
/// <summary>
|
|
/// 是否是托盘 0 托盘 1物料
|
|
/// </summary>
|
|
public string Mflag { get; set; }
|
|
/// <summary>
|
|
/// 码垛数量
|
|
/// </summary>
|
|
public int qty { get; set; }
|
|
/// <summary>
|
|
/// 强制满垛
|
|
/// </summary>
|
|
public string GOODS_COUNT { get; set; }
|
|
|
|
/// <summary>
|
|
/// 物料SN码
|
|
/// </summary>
|
|
public string SN { get; set; }
|
|
|
|
|
|
}
|
|
}
|
|
|
|
}
|