using HH.WCS.NongFuChaYuan.OtherService; using SqlSugar; using System; using System.Collections.Generic; namespace HH.WCS.NongFuChaYuan.WmsService { /// /// 工单、设备状态管理 /// public class WCSHelper { static WCSHelper() { } #region 大明山WCS业务处理 /// /// 大明上-查询工单信息--执行中 /// /// /// public static List GetDaMingShanAnalysisOrderWork(string orderType) { var order = new SqlHelper().GetList(a => a.S_ORDER_TYPE == orderType && a.S_WorkState == "执行中"); return order; } /// /// 大明山-查询工单信息 /// /// /// public static List GetDaMingShanAnalysisOrderWorkType(string orderType, string newbatch, string deviceName) { var order = new SqlHelper().GetList(a => a.S_ORDER_TYPE == orderType && a.S_BatchNo == newbatch && a.S_PLineNo == deviceName); return order; } /// /// 插入工单信息 /// /// /// internal static bool DaMingShanInsertWork(WorkOrder wmsTask) { var db = new SqlHelper().GetInstance(); return db.Insertable(wmsTask).ExecuteCommand() > 0; } /// /// 更改工单信息:托规、批次号、物料层数 /// /// /// /// internal static bool UpdateWorkInfo(WorkOrder task, string batchNo = "", string itemLayer = "") { var res = false; var db = new SqlHelper().GetInstance(); //task.S_TrayRules = trayRule; task.S_BatchNo = batchNo; task.S_ItemLayer = itemLayer; db.Updateable(task).UpdateColumns(it => new { it.S_BatchNo, it.S_ItemLayer }).ExecuteCommand(); return res; } /// /// 查询托盘信息-全部-为了对比当前是否为正常下线 /// /// /// public static List GetDaMingShanTrayInfoAllList(string deviceName) { var order = new SqlHelper().GetList(a => a.deviceName == deviceName); return order; } /// /// 创建数据中间表表 /// /// public static void CreateMiddleTable() { //var order = new SqlHelper().CreateTable();//富勒传输托盘信息表 //var order1 = new SqlHelper().CreateTable();//设备信号时间中间表 var order2 = new SqlHelper().CreateTable();//成品下线库位中间表 } /// /// 淳安-插入设备信息 /// /// /// internal static bool DaMingShangInsertDeviceState(DaMingShanDeviceState deviceState) { var db = new SqlHelper().GetInstance(); return db.Insertable(deviceState).ExecuteCommand() > 0; } /// /// 淳安-更改设备状态:时间-状态 /// /// /// 0-默认无动作 1-第一次收到下线信号 /// 第一次收到信号时更新时间;取货完成复位时间 /// internal static bool UpdateDaMingShanDeviceState(DaMingShanDeviceState deviceInfo, string status, string dateTime, string extData = "") { var res = false; var db = new SqlHelper().GetInstance(); deviceInfo.DeviceState = status; deviceInfo.DeviceTime = dateTime; db.Updateable(deviceInfo).UpdateColumns(it => new { it.DeviceState, it.DeviceTime }).ExecuteCommand(); return res; } /// /// 查询当前设备信息 /// /// /// public static DaMingShanDeviceState GetDaMingShanDeviceState(string deviceName) { var order = new SqlHelper().Get(a => a.DeviceName == deviceName, a => a.DeviceTime, true); return order; } /// /// 查询托盘信息-下线时间之前的数据 /// /// /// public static List GetDaMingShanTrayInfoList(string positionCode, string deviceName) { var exp = Expressionable.Create(); exp.And(it => it.deviceName == deviceName); exp.AndIF(!string.IsNullOrEmpty(positionCode), it => it.positionCode == positionCode); //var order = new SqlHelper().GetList(a => Convert.ToDateTime(a.dateTime.Trim()) < Convert.ToDateTime(dateTime) && a.deviceName == deviceName); var order = new SqlHelper().GetList(exp.ToExpression()); return order; } /// /// 大明山-查询工单信息--执行中或者暂停 /// /// /// public static WorkOrder GetWorkOrder(string lineNo) { var order = new SqlHelper().Get(a => a.S_PLineNo.Trim() == lineNo && (a.S_WorkState == "执行中"), a => a.T_CREATE, true); return order; } /// /// 大明山-查询工单信息--执行中或者暂停 /// /// /// public static PGWorkOrder GetPGWorkOrder(string lineNo) { var order = new SqlHelper().Get(a => a.S_PLineNo.Trim() == lineNo && (a.S_WorkState == "执行中"), a => a.T_CREATE, true); return order; } public static List GetWorkOrder1(string lineNo) { var db = new SqlHelper().GetInstance(); var order = db.Queryable().Where(a => a.S_PLineNo.Trim() == lineNo && a.S_WorkState == "执行中").ToList(); return order; } public static ItemRel GetItemrel(string itemcode, string itemmodel) { var db = new SqlHelper().GetInstance(); var order = db.Queryable().Where(a => a.S_ITEM_CODE == itemcode && a.S_ITEM_MODEL == itemmodel).First(); return order; } internal static bool DaMingShanInsertAnalysisMoveLib(DaMingShanAnalysisMoveLib info) { var db = new SqlHelper().GetInstance(); var oldinfo = db.Queryable().Where(a => a.DeviceName == info.DeviceName && a.Batch == info.Batch && a.RowNo == info.RowNo).First(); if (oldinfo == null) { return db.Insertable(info).ExecuteCommand() > 0; } else { return true; } } /// /// 通过产线号结束自动移库工单 并删除中间表信息 /// /// internal void EndYiKuWorkOrder(string S_PLineNo, string BatchNo, string oldbatch) { var db = new SqlHelper().GetInstance(); var info = db.Deleteable().Where(a => a.DeviceName == S_PLineNo && a.Batch == oldbatch).ExecuteCommand(); var workorder = db.Queryable().Where(a => a.S_PLineNo == S_PLineNo && a.S_BatchNo == BatchNo && a.S_WorkState.Trim() == "执行中" && a.S_ORDER_TYPE.Trim() == "自动移库").ToList(); workorder.ForEach(a => { a.S_WorkState = "已完成"; db.Updateable(a).UpdateColumns(it => new { it.S_WorkState }).ExecuteCommand(); }); } internal static void UpdateDaMingShanInsertAnalysisMoveLib(string endbit) { var db = new SqlHelper().GetInstance(); var oldinfo = db.Queryable().Where(a => a.S_LOC_CODE.Trim() == endbit).First(); if (oldinfo != null) { string rowNo = oldinfo.N_ROW; var info = db.Queryable().Where(a => a.N_ROW == rowNo && a.N_CURRENT_NUM > 0).First(); if (info == null) { //删除中间表对应的数据 var Libinfo = db.Queryable().Where(a => a.RowNo == rowNo).First(); if (Libinfo != null) { db.Deleteable().Where(a => a.RowNo == rowNo).ExecuteCommand(); } } } } #endregion } }