安睿特接口
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

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; }
}
}
}