using HH.WCS.Hexafluo.util; using System; using System.Collections.Generic; namespace HH.WCS.Hexafluo.wms { /// /// 工单、设备状态管理 /// public class WCSHelper { static WCSHelper() { } /// /// 查询工单 /// /// /// public static WorkOrder GetWorkOrder(string lineNo) { var order = new SqlHelper().Get(a => a.SQL_PLineNo == lineNo && (a.SQL_State == "执行中" || a.SQL_State == "暂停"), a => a.T_CREATE, true); return order; } /// /// 查询审核的工单 /// /// /// public static WorkOrder GetWorkOrderVerify(string lineNo) { var order = new SqlHelper().Get(a => a.SQL_PLineNo == lineNo && a.SQL_State == "审核中", a => a.T_CREATE, true); return order; } public static WorkOrder GetWorkOrderByOrderNo(string orderNo) { var order = new SqlHelper().Get(a => a.SQL_WorkNo == orderNo); return order; } internal static bool UpdateWorkOrderAutoCompleteFalse(WorkOrder workOrder) { var db = new SqlHelper().GetInstance(); workOrder.SQL_AutoComplete = "否"; return db.Updateable(workOrder).UpdateColumns(it => new { it.SQL_AutoComplete }).ExecuteCommand() > 0; } /// /// 更新工单数量 /// /// /// internal static void UpdateWorkOrder(WorkOrder workOrder, int trayType) { try { var qty = string.IsNullOrEmpty(workOrder.SQL_PCNumber) ? 0 : int.Parse(workOrder.SQL_PCNumber); var total = string.IsNullOrEmpty(workOrder.SQL_Total) ? 0 : int.Parse(workOrder.SQL_Total); var usingNowTotal = string.IsNullOrEmpty(workOrder.SQL_UsingNowTotal) ? 0 : int.Parse(workOrder.SQL_UsingNowTotal); var current = string.IsNullOrEmpty(workOrder.SQL_Current) ? 0 : int.Parse(workOrder.SQL_Current); var db = new SqlHelper().GetInstance(); workOrder.SQL_Current = (current + qty).ToString(); //如果数量满了,并且没有切换过,可以结束,如果切换过,数量满了不结束,一直生产 if (current + qty == total && (string.IsNullOrEmpty(workOrder.SQL_AutoComplete) || workOrder.SQL_AutoComplete.Trim() == "是")) { //工单完成 workOrder.SQL_State = "已完成"; db.Updateable(workOrder).UpdateColumns(it => new { it.SQL_Current, it.SQL_State }).ExecuteCommand(); } else { db.Updateable(workOrder).UpdateColumns(it => new { it.SQL_Current }).ExecuteCommand(); } } catch (Exception ex) { LogHelper.Error("UpdateWorkOrder fail " + ex.Message, ex); } } internal static LinAreaInfo GetTipperCacheWorkOrderInfo(string connectArea) { //1.0 查货位容器表 var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.connectArea.Trim() == connectArea).First(); } internal static bool AddTipperCacheWorkOrderInfo(LinAreaInfo info) { var db = new SqlHelper().GetInstance(); return db.Insertable(info).ExecuteCommand() > 0; } internal static bool UpdateTipperCacheWorkOrderInfo(string connectArea, int selected) { var result = false; var db = new SqlHelper().GetInstance(); var area = db.Queryable().Where(a => a.connectArea.Trim() == connectArea).First(); if (area != null) { area.selected = selected; result = db.Updateable(area).UpdateColumns(it => new { it.selected }).ExecuteCommand() > 0; } return result; } internal static List GetTipperAreaMode(string connectArea, int rowMode) { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.connectArea.Trim() == connectArea && a.rowMode == rowMode).ToList(); } internal static LineAreaRowMode GetOneTipperAreaMode(string connectArea, int row) { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.connectArea.Trim() == connectArea && a.row == row).First(); } internal static bool UpdateTipperAreaRowMode(LineAreaRowMode model, int rowMode) { var db = new SqlHelper().GetInstance(); model.rowMode = rowMode; return db.Updateable(model).UpdateColumns(it => new { it.rowMode }).ExecuteCommand() > 0; } internal static bool AddElevatorTaskInfo(ElevatorTaskInfo info) { var db = new SqlHelper().GetInstance(); return db.Insertable(info).ExecuteCommand() > 0; } /// /// 获取一个执行中的电梯任务 /// /// internal static ElevatorTaskInfo GetOneWorkingElevatorTask() { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.state > 0).First(); } /// /// 获取一个已经分配电梯缓存位的任务 /// /// internal static ElevatorTaskInfo GetOneAssignedElevatorTask() { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => !string.IsNullOrEmpty(a.elevatorCacheBit.Trim())).First(); } /// /// 获取一个待处理的电梯任务 /// /// internal static ElevatorTaskInfo GetOnePendingElevatorTask() { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.state == 0 && string.IsNullOrEmpty(a.elevatorCacheBit.Trim())).First(); } internal static ElevatorTaskInfo GetElevatorTaskByBit(string bit) { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.elevatorCacheBit.Trim() == bit.Trim()).First(); } /// /// 获取同类型的电梯任务 /// /// /// /// internal static List GetOtherElevatorTask(string taskNo, int actionType) { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.actionType == actionType && a.sourceNo.Trim() != taskNo.Trim()).ToList(); } internal static ElevatorTaskInfo GetElevatorTask(string taskNo) { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.sourceNo.Trim() != taskNo.Trim()).First(); } internal static bool UpdateElevatorTask(string bit, int currState, int state) { var result = false; var db = new SqlHelper().GetInstance(); var model = db.Queryable().Where(a => a.elevatorCacheBit == bit && a.state == currState).First(); if (model != null) { model.state = state; result = db.Updateable(model).UpdateColumns(it => new { it.state }).ExecuteCommand() > 0; } return result; } internal static bool UpdateElevatorTask(ElevatorTaskInfo model, string cacheBit, int state) { var result = false; var db = new SqlHelper().GetInstance(); model.elevatorCacheBit = cacheBit; model.state = state; result = db.Updateable(model).UpdateColumns(it => new { it.elevatorCacheBit, it.state }).ExecuteCommand() > 0; return result; } internal static bool UpdateElevatorTask(string taskNo, int state) { var result = false; var db = new SqlHelper().GetInstance(); var model = db.Queryable().Where(a => a.sourceNo.Trim() == taskNo).First(); if (model != null) { model.state = state; result = db.Updateable(model).UpdateColumns(it => new { it.state }).ExecuteCommand() > 0; } return result; } internal static bool DeleteElevatorTaskByState(int state) { var db = new SqlHelper().GetInstance(); return db.Deleteable().Where(a => a.state == state).ExecuteCommand() > 0; } internal static bool DeleteElevatorTask(ElevatorTaskInfo taskInfo) { var db = new SqlHelper().GetInstance(); return db.Deleteable().Where(a => a.S_ID == taskInfo.S_ID).ExecuteCommand() > 0; } internal static bool DeleteElevatorTask(string no) { var db = new SqlHelper().GetInstance(); return db.Deleteable().Where(a => a.sourceNo.Trim() == no).ExecuteCommand() > 0; } internal static List GetAllOutgoPlan() { var db = new SqlHelper().GetInstance(); return db.Queryable().ToList(); } internal static OutgoPlan GetOutgoPlan(string itemCode) { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.itemCode.Trim() == itemCode).First(); } internal static bool AddOutgoPlan(OutgoPlan info) { var db = new SqlHelper().GetInstance(); return db.Insertable(info).ExecuteCommand() > 0; } } }