|
|
@@ -3,6 +3,7 @@ using LocalhostMES.Enums;
|
|
|
using LocalhostMES.Models;
|
|
|
using SqlSugar;
|
|
|
using System;
|
|
|
+using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Runtime.InteropServices;
|
|
|
@@ -51,10 +52,10 @@ namespace LocalhostMES.DataBase
|
|
|
EnsureLocalhostPartInfoColumns();
|
|
|
// 您的数据库操作代码
|
|
|
}
|
|
|
- catch (AggregateException ex)
|
|
|
+ catch ( AggregateException ex )
|
|
|
{
|
|
|
// 遍历所有内部异常
|
|
|
- foreach (var inner in ex.InnerExceptions)
|
|
|
+ foreach ( var inner in ex.InnerExceptions )
|
|
|
{
|
|
|
Console.WriteLine($"内部异常: {inner.Message}");
|
|
|
Console.WriteLine(inner.StackTrace);
|
|
|
@@ -62,20 +63,20 @@ namespace LocalhostMES.DataBase
|
|
|
// 或者只取第一个
|
|
|
// var actualException = ex.InnerException;
|
|
|
}
|
|
|
- catch (SqlSugarException ex)
|
|
|
+ catch ( SqlSugarException ex )
|
|
|
{
|
|
|
Console.WriteLine($"错误消息:{ex.Message}");
|
|
|
Console.WriteLine($"内部异常:{ex.InnerException?.Message}");
|
|
|
Console.WriteLine($"堆栈:{ex.StackTrace}");
|
|
|
// 也可以记录日志
|
|
|
}
|
|
|
- catch (Exception e)
|
|
|
+ catch ( Exception e )
|
|
|
{
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -127,19 +128,21 @@ namespace LocalhostMES.DataBase
|
|
|
else
|
|
|
{
|
|
|
var list = Db.Queryable<WorkOrderInfo>().
|
|
|
- Select(it=>new WorkOrderInfo
|
|
|
- {OrderNo=it.OrderNo,
|
|
|
+ Select(it=>new WorkOrderInfo
|
|
|
+ {
|
|
|
+ OrderNo=it.OrderNo,
|
|
|
LineCode=it.LineCode,
|
|
|
- CreateTime=it.CreateTime,
|
|
|
- EndTime=it.EndTime,
|
|
|
+ CreateTime=it.CreateTime,
|
|
|
+ EndTime=it.EndTime,
|
|
|
IsLocalhost=it.IsLocalhost,
|
|
|
- MaterialCode=it.MaterialCode,
|
|
|
+ MaterialCode=it.MaterialCode,
|
|
|
MaterialName=it.MaterialName,
|
|
|
PlannedQuantity=it.PlannedQuantity,
|
|
|
- StartTime=it.StartTime,
|
|
|
+ StartTime=it.StartTime,
|
|
|
Status=it.Status,
|
|
|
- WorkOrderNo=it.WorkOrderNo,
|
|
|
- CompletedQuantity=SqlFunc.Subqueryable<SnInfo>().Where(s=>s.WorkOrderNo==it.WorkOrderNo && s.IsUsed).Count() }).ToList();
|
|
|
+ WorkOrderNo=it.WorkOrderNo,
|
|
|
+ CompletedQuantity=SqlFunc.Subqueryable<SnInfo>().Where(s=>s.WorkOrderNo==it.WorkOrderNo && s.IsUsed).Count()
|
|
|
+ }).ToList();
|
|
|
NormalizeWorkOrderStatus(list);
|
|
|
return list;
|
|
|
}
|
|
|
@@ -147,17 +150,17 @@ namespace LocalhostMES.DataBase
|
|
|
|
|
|
private static void NormalizeWorkOrderStatus(List<WorkOrderInfo> workOrders)
|
|
|
{
|
|
|
- if (workOrders == null || workOrders.Count == 0)
|
|
|
+ if ( workOrders == null || workOrders.Count == 0 )
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
var changed = false;
|
|
|
- foreach (var workOrder in workOrders)
|
|
|
+ foreach ( var workOrder in workOrders )
|
|
|
{
|
|
|
- if (workOrder.PlannedQuantity > 0 &&
|
|
|
+ if ( workOrder.PlannedQuantity > 0 &&
|
|
|
workOrder.CompletedQuantity >= workOrder.PlannedQuantity &&
|
|
|
- workOrder.Status != "6")
|
|
|
+ workOrder.Status != "6" )
|
|
|
{
|
|
|
workOrder.Status = "6";
|
|
|
Db.Updateable<WorkOrderInfo>()
|
|
|
@@ -168,7 +171,7 @@ namespace LocalhostMES.DataBase
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (changed)
|
|
|
+ if ( changed )
|
|
|
{
|
|
|
NotifyChanged(MesDataScope.WorkOrder);
|
|
|
}
|
|
|
@@ -224,6 +227,60 @@ namespace LocalhostMES.DataBase
|
|
|
return Db.Queryable<SnInfo>().ToList();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public static SnInfo SelectSnInfoForStation(string workOrderNo,StationType type)
|
|
|
+ {
|
|
|
+ if ( workOrderNo != null )
|
|
|
+ {
|
|
|
+ var query=Db.Queryable<SnInfo>();
|
|
|
+ switch ( type )
|
|
|
+ {
|
|
|
+ case StationType.OP10:
|
|
|
+ break;
|
|
|
+ case StationType.OP20L:
|
|
|
+ case StationType.OP20R:
|
|
|
+ query = query.Where(it => it.OP20State==false);
|
|
|
+ break;
|
|
|
+ case StationType.OP30L:
|
|
|
+ case StationType.OP30R:
|
|
|
+ query = query.Where(it => it.OP30State == false);
|
|
|
+ break;
|
|
|
+ case StationType.OP40L:
|
|
|
+ case StationType.OP40R:
|
|
|
+ query = query.Where(it => it.OP40State == false);
|
|
|
+ break;
|
|
|
+ case StationType.OP50L:
|
|
|
+ case StationType.OP50R:
|
|
|
+ query = query.Where(it => it.OP50State == false);
|
|
|
+ break;
|
|
|
+ case StationType.OP60L:
|
|
|
+ case StationType.OP60R:
|
|
|
+ query = query.Where(it => it.OP60State == false);
|
|
|
+ break;
|
|
|
+ case StationType.OP70L:
|
|
|
+ case StationType.OP70R:
|
|
|
+ query = query.Where(it => it.OP70State == false);
|
|
|
+ break;
|
|
|
+ case StationType.OP80L:
|
|
|
+ case StationType.OP80R:
|
|
|
+ query = query.Where(it => it.OP80State == false);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ List<SnInfo> snInfos= query.Where(it => it.WorkOrderNo == workOrderNo).OrderBy(it => it.GenerateTime).Take(1).ToList();
|
|
|
+ if ( snInfos.Count != 0 )
|
|
|
+ {
|
|
|
+ return snInfos[ 0 ];
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public static bool InsertSnInfo(SnInfo info)
|
|
|
{
|
|
|
|
|
|
@@ -238,7 +295,7 @@ namespace LocalhostMES.DataBase
|
|
|
public static bool InsertSnInfos(List<SnInfo> info)
|
|
|
{
|
|
|
|
|
|
- if (Db.Storageable(info).ExecuteCommand() == info.Count)
|
|
|
+ if ( Db.Storageable(info).ExecuteCommand() == info.Count )
|
|
|
{
|
|
|
NotifyChanged(MesDataScope.Sn);
|
|
|
return true;
|
|
|
@@ -257,6 +314,53 @@ namespace LocalhostMES.DataBase
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ public static bool UpdateSnInfo(string sn,string workorder,StationType type)
|
|
|
+ {
|
|
|
+ var query= Db.Updateable<SnInfo>().Where(it => it.Sn == sn&&it.WorkOrderNo==workorder);
|
|
|
+
|
|
|
+ switch ( type )
|
|
|
+ {
|
|
|
+ case StationType.OP10:
|
|
|
+ break;
|
|
|
+ case StationType.OP20L:
|
|
|
+ case StationType.OP20R:
|
|
|
+ query= query.SetColumns(it => it.OP20State == true);
|
|
|
+ break;
|
|
|
+ case StationType.OP30L:
|
|
|
+ case StationType.OP30R:
|
|
|
+ query = query.SetColumns(it => it.OP30State == false);
|
|
|
+ break;
|
|
|
+ case StationType.OP40L:
|
|
|
+ case StationType.OP40R:
|
|
|
+ query = query.SetColumns(it => it.OP40State == false);
|
|
|
+ break;
|
|
|
+ case StationType.OP50L:
|
|
|
+ case StationType.OP50R:
|
|
|
+ query = query.SetColumns(it => it.OP50State == false);
|
|
|
+ break;
|
|
|
+ case StationType.OP60L:
|
|
|
+ case StationType.OP60R:
|
|
|
+ query = query.SetColumns(it => it.OP60State == false);
|
|
|
+ break;
|
|
|
+ case StationType.OP70L:
|
|
|
+ case StationType.OP70R:
|
|
|
+ query = query.SetColumns(it => it.OP70State == false);
|
|
|
+ break;
|
|
|
+ case StationType.OP80L:
|
|
|
+ case StationType.OP80R:
|
|
|
+ query = query.SetColumns(it => it.OP80State == false);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if ( query.ExecuteCommand() == 1 )
|
|
|
+ {
|
|
|
+ NotifyChanged(MesDataScope.Sn);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
public static bool DeleteSnInfo(SnInfo info)
|
|
|
{
|
|
|
|
|
|
@@ -386,32 +490,33 @@ namespace LocalhostMES.DataBase
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
public static List<LocalhostPartInfo> SelectPartInfo(StationType stationType)
|
|
|
{
|
|
|
- return Db.Queryable<LocalhostPartInfo>().Where(it => it.StationType == stationType).ToList();
|
|
|
+ return Db.Queryable<LocalhostPartInfo>().Where(it => it.StationType == stationType).ToList();
|
|
|
+ }
|
|
|
+ public static List<LocalhostPartInfo> SelectPartInfo(string _materialCode, string stationCode)
|
|
|
+ {
|
|
|
+ return Db.Queryable<LocalhostPartInfo>().Where(it => it.StationCode == stationCode&&it.MaterialCode==_materialCode).ToList();
|
|
|
}
|
|
|
-
|
|
|
public static bool InsertPartInfo(LocalhostPartInfo info)
|
|
|
{
|
|
|
var ok = Db.Storageable(info).ExecuteCommand() > 0;
|
|
|
- if (ok)
|
|
|
+ if ( ok )
|
|
|
{
|
|
|
NotifyChanged(MesDataScope.KeyPart);
|
|
|
}
|
|
|
-
|
|
|
return ok;
|
|
|
}
|
|
|
|
|
|
public static int InsertPartInfos(List<LocalhostPartInfo> infos)
|
|
|
{
|
|
|
- if (infos == null || infos.Count == 0)
|
|
|
+ if ( infos == null || infos.Count == 0 )
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
var affected = Db.Storageable(infos).ExecuteCommand();
|
|
|
- if (affected > 0)
|
|
|
+ if ( affected > 0 )
|
|
|
{
|
|
|
NotifyChanged(MesDataScope.KeyPart);
|
|
|
}
|
|
|
@@ -424,14 +529,17 @@ namespace LocalhostMES.DataBase
|
|
|
var ok = Db.Deleteable<LocalhostPartInfo>()
|
|
|
.Where(it => it.StationType == stationType && it.PartNum == partNum)
|
|
|
.ExecuteCommand() >= 1;
|
|
|
- if (ok)
|
|
|
+ if ( ok )
|
|
|
{
|
|
|
NotifyChanged(MesDataScope.KeyPart);
|
|
|
}
|
|
|
|
|
|
return ok;
|
|
|
}
|
|
|
-
|
|
|
+ /// <summary>
|
|
|
+ /// 零件
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
public static List<ParkingLot> SelectParkingLot()
|
|
|
{
|
|
|
return Db.Queryable<ParkingLot>().OrderBy(it => it.Id).ToList();
|
|
|
@@ -440,7 +548,7 @@ namespace LocalhostMES.DataBase
|
|
|
public static bool InsertParkingLot(ParkingLot info)
|
|
|
{
|
|
|
var ok = Db.Storageable(info).ExecuteCommand() > 0;
|
|
|
- if (ok)
|
|
|
+ if ( ok )
|
|
|
{
|
|
|
NotifyChanged(MesDataScope.ParkingLot);
|
|
|
}
|
|
|
@@ -451,7 +559,7 @@ namespace LocalhostMES.DataBase
|
|
|
public static bool UpdateParkingLot(ParkingLot info)
|
|
|
{
|
|
|
var ok = Db.Updateable(info).Where(it => it.Id == info.Id).ExecuteCommand() == 1;
|
|
|
- if (ok)
|
|
|
+ if ( ok )
|
|
|
{
|
|
|
NotifyChanged(MesDataScope.ParkingLot);
|
|
|
}
|
|
|
@@ -462,7 +570,7 @@ namespace LocalhostMES.DataBase
|
|
|
public static bool DeleteParkingLot(int id)
|
|
|
{
|
|
|
var ok = Db.Deleteable<ParkingLot>().Where(it => it.Id == id).ExecuteCommand() == 1;
|
|
|
- if (ok)
|
|
|
+ if ( ok )
|
|
|
{
|
|
|
NotifyChanged(MesDataScope.ParkingLot);
|
|
|
}
|