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 { /// /// 码垛任务生成 /// public class ZH_BLL { #region 全局参数 /// /// 接口地址,请求路径 /// public static string InterfaceAdd = Global.upper_WMSURL + "product/alloc";//请求路径 /// /// 接口名称,接口日志文件名 /// public static string InterfaceName = "PALLETIZING_COUNT"; /// /// 接口描述 /// public static string InterfaceNote = "码垛机任务生成"; /// /// 接口流向 /// public static string InterfaceFlow = "WCS==>>WMS"; /// /// 请求JSON /// public static string reqJson = string.Empty; /// /// 反馈JSON /// public static string retJson = string.Empty; /// /// 贴标机 /// public static Socket socketSendPrint201; #endregion /// /// 码垛计数 /// public static void PALLETIZING_COUNT() { IO_CONTROL model = new IO_CONTROL(); List acModelList = new List(); IO_CONTROL model2 = new IO_CONTROL(); List acModelList2 = new List(); ZH_pallet zhmodel = new ZH_pallet(); List zhModelList = new List(); List zhModelList2 = new List(); List zhModelList3 = new List(); List zhModelList4 = new List(); IO_INTERFACE_PALLET pALLET = new IO_INTERFACE_PALLET(); List pALLETList = new List(); List chaiduo = new List(); 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 ItlModel = new List(); List APPLYModelList = new List(); 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 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 } /// /// 托盘申请 实体类 /// public class ZH_pallet { /// /// 任务号 /// public string taskNo { get; set; } /// /// 子任务号 /// public string subTaskNo { get; set; } /// /// 资源点 /// public string Device { get; set; } /// /// 托盘号 /// public string STOCK_BARCODE { get; set; } /// /// 托盘状态 0 不可用,1 可用 /// public string Gflag { get; set; } /// /// 是否是托盘 0 托盘 1物料 /// public string Mflag { get; set; } /// /// 码垛数量 /// public int qty { get; set; } /// /// 强制满垛 /// public string GOODS_COUNT { get; set; } /// /// 物料SN码 /// public string SN { get; set; } } } }