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