add-添加登录

foamRearStore
liuwf 8 months ago
parent a64d7a5273
commit 97ab6ed5e3

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

@ -5,7 +5,6 @@ using HighWayIot.Repository.service;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Windows.Forms;
namespace Aucma.Scada.Business namespace Aucma.Scada.Business
{ {
@ -60,7 +59,7 @@ namespace Aucma.Scada.Business
/// 下传执行计划 /// 下传执行计划
/// </summary> /// </summary>
/// <param name="planInfo"></param> /// <param name="planInfo"></param>
public delegate void NextPassExecutePlanInfo(ExecutePlanInfo planInfo,BaseSpaceInfo spaceInfo = null); public delegate void NextPassExecutePlanInfo(ExecutePlanInfo planInfo, BaseSpaceInfo spaceInfo = null);
public event NextPassExecutePlanInfo NextPassExecutePlanInfoEvent; public event NextPassExecutePlanInfo NextPassExecutePlanInfoEvent;
/// <summary> /// <summary>
@ -139,25 +138,25 @@ namespace Aucma.Scada.Business
/// </summary> /// </summary>
/// <param name="productPlanCode"></param> /// <param name="productPlanCode"></param>
/// <param name="transmitAmount"></param> /// <param name="transmitAmount"></param>
public bool PlanTransmitByProductPlan(string productPlanCode, int transmitAmount,BaseSpaceInfo spaceInfo = null) public bool PlanTransmitByProductPlan(string productPlanCode, int transmitAmount, BaseSpaceInfo spaceInfo = null)
{ {
bool result = false; bool result = false;
try try
{ {
// 先删除多余未完成的组装执行计划 // 先删除多余未完成的组装执行计划
List<ExecutePlanInfo> exePlans = _executePlanInfoService.GetExecutePlanInfosByProductLineCode(appConfig.stationCode,true); List<ExecutePlanInfo> exePlans = _executePlanInfoService.GetExecutePlanInfosByProductLineCode(appConfig.stationCode, true);
if(exePlans != null && exePlans.Count>5) if (exePlans != null && exePlans.Count > 5)
{ {
exePlans = exePlans.OrderBy(x => x.createdTime).ToList(); exePlans = exePlans.OrderBy(x => x.createdTime).ToList();
List<ExecutePlanInfo> tempList = exePlans.Take(exePlans.Count-5).ToList(); List<ExecutePlanInfo> tempList = exePlans.Take(exePlans.Count - 5).ToList();
foreach (var exePlan in tempList) foreach (var exePlan in tempList)
{ {
_executePlanInfoService.DeleteExecutePlanInfoByPlanCode(exePlan.executePlanCode); _executePlanInfoService.DeleteExecutePlanInfoByPlanCode(exePlan.executePlanCode);
} }
} }
var productPlanInfo = _productPlanInfoService.GetProductPlanByPlanCode(productPlanCode); var productPlanInfo = _productPlanInfoService.GetProductPlanByPlanCode(productPlanCode);
if (productPlanInfo != null) if (productPlanInfo != null)
@ -175,7 +174,7 @@ namespace Aucma.Scada.Business
if (spaceInfo == null) if (spaceInfo == null)
{//下总装计划 筛选货道 {//下总装计划 筛选货道
spaceInfo = GetSpaceInfoByMaterialTypeEvent?.Invoke(appConfig.foamStoreCode, executePlanInfo.materialCode); spaceInfo = GetSpaceInfoByMaterialTypeEvent?.Invoke(appConfig.foamStoreCode, executePlanInfo.materialCode);
if(transmitAmount > spaceInfo.spaceStock) if (transmitAmount > spaceInfo.spaceStock)
{ {
//弹框提示 //弹框提示
PrintMessageEvent?.Invoke($"收到出库计划数:{transmitAmount},匹配到货道:{spaceInfo.spaceCode},库存数:{spaceInfo.spaceStock},已自动将计划数改为库存!"); PrintMessageEvent?.Invoke($"收到出库计划数:{transmitAmount},匹配到货道:{spaceInfo.spaceCode},库存数:{spaceInfo.spaceStock},已自动将计划数改为库存!");
@ -201,7 +200,7 @@ namespace Aucma.Scada.Business
GetEexecutePlanInfosByProductLineCode(); GetEexecutePlanInfosByProductLineCode();
// 直接下达 2023-12-20 // 直接下达 2023-12-20
ExecutePlanInfo_NextPass(executePlanInfo.executePlanCode, "",spaceInfo); ExecutePlanInfo_NextPass(executePlanInfo.executePlanCode, "", spaceInfo);
} }
} }
} }
@ -287,7 +286,7 @@ namespace Aucma.Scada.Business
/// 下传计划 /// 下传计划
/// </summary> /// </summary>
/// <param name="planCode"></param> /// <param name="planCode"></param>
public ExecutePlanInfo ExecutePlanInfo_NextPass(string planCode, string nowPlanCode,BaseSpaceInfo spaceInfo = null) public ExecutePlanInfo ExecutePlanInfo_NextPass(string planCode, string nowPlanCode, BaseSpaceInfo spaceInfo = null)
{ {
ExecutePlanInfo planInfo = null; ExecutePlanInfo planInfo = null;
try try
@ -308,7 +307,7 @@ namespace Aucma.Scada.Business
if (planInfo != null) if (planInfo != null)
{ {
//传给出库 //传给出库
NextPassExecutePlanInfoEvent?.Invoke(planInfo,spaceInfo); NextPassExecutePlanInfoEvent?.Invoke(planInfo, spaceInfo);
planInfo.executeStatus = 2; planInfo.executeStatus = 2;
planInfo.beginTime = DateTime.Now; planInfo.beginTime = DateTime.Now;

@ -111,7 +111,7 @@
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="App.config" />
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>
<ItemGroup /> <ItemGroup />

@ -1,20 +1,14 @@
using Aucma.Core.Scanner; using Aucma.Scada.Model.domain;
using Aucma.Scada.HikRobot;
using Aucma.Scada.Model.domain;
using Aucma.Scada.Model.dto; using Aucma.Scada.Model.dto;
using HighWayIot.Config; using HighWayIot.Config;
using HighWayIot.Log4net; using HighWayIot.Log4net;
using HighWayIot.Repository.service; using HighWayIot.Repository.service;
using HighWayIot.TouchSocket; using HighWayIot.TouchSocket;
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Timers;
using static Aucma.Core.Scanner.MvCodeHelper;
using static Aucma.Scada.Business.InStoreTaskHandle;
namespace Aucma.Scada.Business namespace Aucma.Scada.Business
{ {
@ -75,7 +69,7 @@ namespace Aucma.Scada.Business
/// 初始化入库任务 /// 初始化入库任务
/// </summary> /// </summary>
/// <param name="message"></param> /// <param name="message"></param>
public delegate void RefreshInStoreTask(RealTaskInfo taskInfos,bool isFinsih = false); public delegate void RefreshInStoreTask(RealTaskInfo taskInfos, bool isFinsih = false);
public event RefreshInStoreTask RefreshInStoreTaskEvent; public event RefreshInStoreTask RefreshInStoreTaskEvent;
/// <summary> /// <summary>
@ -164,7 +158,7 @@ namespace Aucma.Scada.Business
try try
{ {
List<RealTaskInfo> outTasks = _taskInfoService.GetAllTaskInfoByStoreCode(appConfig.foamStoreCode, 2); List<RealTaskInfo> outTasks = _taskInfoService.GetAllTaskInfoByStoreCode(appConfig.foamStoreCode, 2);
if (outTasks == null || outTasks.Count==0) if (outTasks == null || outTasks.Count == 0)
{ {
//没有正在出库的任务,释放信号量,可以入库 //没有正在出库的任务,释放信号量,可以入库
_isBlocked = false; _isBlocked = false;
@ -175,7 +169,8 @@ namespace Aucma.Scada.Business
_isBlocked = true; _isBlocked = true;
} }
}catch(Exception ex) }
catch (Exception ex)
{ {
Console.WriteLine(ex.ToString()); Console.WriteLine(ex.ToString());
} }
@ -204,7 +199,7 @@ namespace Aucma.Scada.Business
string materialType = SubStringMaterialCode(materialCode); string materialType = SubStringMaterialCode(materialCode);
// 加防呆,判断任务表是否有任务了 // 加防呆,判断任务表是否有任务了
#region Delete By wenjy 2023-10-30 11:41:00 取消通过数据库获取货道数量、在途量改为通过PLC获取货道信息 #region Delete By wenjy 2023-10-30 11:41:00 取消通过数据库获取货道数量、在途量改为通过PLC获取货道信息
// var spaceInfo = _spaceInfoService.InStoreGetSpaceInfoByMaterialType(appConfig.foamStoreCode, materialType); // var spaceInfo = _spaceInfoService.InStoreGetSpaceInfoByMaterialType(appConfig.foamStoreCode, materialType);
#endregion #endregion
// 筛选货道的时候,不能选择正在出库的货道 // 筛选货道的时候,不能选择正在出库的货道
var spaceInfo = GetSpaceInfoByMaterialType(appConfig.foamStoreCode, materialType); var spaceInfo = GetSpaceInfoByMaterialType(appConfig.foamStoreCode, materialType);
@ -242,8 +237,8 @@ namespace Aucma.Scada.Business
/// </summary> /// </summary>
public void ExceptionInstore(string spaceCode) public void ExceptionInstore(string spaceCode)
{ {
BaseSpaceInfo space = _spaceInfoService.GetSpaceInfoBySpaceCode(appConfig.foamStoreCode,spaceCode); BaseSpaceInfo space = _spaceInfoService.GetSpaceInfoBySpaceCode(appConfig.foamStoreCode, spaceCode);
if(space != null) if (space != null)
{ {
CreateInStoreTask(space, ""); CreateInStoreTask(space, "");
} }
@ -305,8 +300,8 @@ namespace Aucma.Scada.Business
Thread.Sleep(2000); Thread.Sleep(2000);
while (true) while (true)
{ {
PassDownFoamTask(); PassDownFoamTask();
Thread.Sleep(500); Thread.Sleep(500);
} }
}); });
} }
@ -327,7 +322,7 @@ namespace Aucma.Scada.Business
{ {
PrintLogInfoMessage($"下发泡后入库任务:{taskInfo.taskCode};仓库{taskInfo.storeCode};货道:{taskInfo.spaceCode}"); PrintLogInfoMessage($"下发泡后入库任务:{taskInfo.taskCode};仓库{taskInfo.storeCode};货道:{taskInfo.spaceCode}");
int result = taskHandle.SendFoamTask_InStore(taskInfo); int result = taskHandle.SendFoamTask_InStore(taskInfo);
if (result==1) if (result == 1)
{ {
PrintLogInfoMessage($"泡后入库任务:{taskInfo.taskCode}下发成功等待PLC执行反馈"); PrintLogInfoMessage($"泡后入库任务:{taskInfo.taskCode}下发成功等待PLC执行反馈");
@ -342,7 +337,7 @@ namespace Aucma.Scada.Business
RefreshInStoreTaskEvent?.Invoke(taskInfo); RefreshInStoreTaskEvent?.Invoke(taskInfo);
} }
else if(result==2) else if (result == 2)
{ {
PrintLogInfoMessage("泡后入库任务下发失败PLC接收任务未就绪"); PrintLogInfoMessage("泡后入库任务下发失败PLC接收任务未就绪");
} }
@ -355,7 +350,7 @@ namespace Aucma.Scada.Business
else else
{ {
logHelper.Info("未获取到需要下发的泡后入库任务"); logHelper.Info("未获取到需要下发的泡后入库任务");
// PrintLogInfoMessage("未获取到需要下发的泡后入库任务"); // PrintLogInfoMessage("未获取到需要下发的泡后入库任务");
} }
} }
catch (Exception ex) catch (Exception ex)
@ -416,7 +411,7 @@ namespace Aucma.Scada.Business
} }
catch (Exception ex) catch (Exception ex)
{ {
logHelper.Info("InStoreAllBySpaceCode异常:"+ex.Message.ToString()); logHelper.Info("InStoreAllBySpaceCode异常:" + ex.Message.ToString());
} }
} }
@ -582,7 +577,8 @@ namespace Aucma.Scada.Business
{ {
groups = info.GroupBy(x => x.materialType).Select(y => new FoamStoreStockDto() { materialType = y.Key, storeStock = y.Sum(bs => bs.spaceStock) }).ToList(); groups = info.GroupBy(x => x.materialType).Select(y => new FoamStoreStockDto() { materialType = y.Key, storeStock = y.Sum(bs => bs.spaceStock) }).ToList();
} }
}catch(Exception ex) }
catch (Exception ex)
{ {
PrintLogErrorMessage("库存统计异常", ex); PrintLogErrorMessage("库存统计异常", ex);
} }
@ -600,7 +596,7 @@ namespace Aucma.Scada.Business
BaseSpaceInfo result = null; BaseSpaceInfo result = null;
try try
{ {
List<BaseSpaceInfo> info = _spaceInfoService.GetBaseSpaceInfosByMaterialType(storeCode, materialType,1); List<BaseSpaceInfo> info = _spaceInfoService.GetBaseSpaceInfosByMaterialType(storeCode, materialType, 1);
if (info != null) if (info != null)
{ {
@ -615,13 +611,13 @@ namespace Aucma.Scada.Business
} }
var list = info.Where(x => x.spaceStatus == 1 && x.spaceStock > 0 ? x.spaceCapacity > (x.spaceStock + x.onRouteAmount) : 1 == 1).ToList(); var list = info.Where(x => x.spaceStatus == 1 && x.spaceStock > 0 ? x.spaceCapacity > (x.spaceStock + x.onRouteAmount) : 1 == 1).ToList();
if(list==null || list.Count == 0) if (list == null || list.Count == 0)
{ {
list = _spaceInfoService.GetEmptySpaceInfo(appConfig.foamStoreCode); list = _spaceInfoService.GetEmptySpaceInfo(appConfig.foamStoreCode);
} }
if (list.Count > 0) if (list.Count > 0)
{ {
result = list.OrderByDescending(x => x.spaceStock).First(); result = list.OrderByDescending(x => x.spaceStock).First();
} }
} }
} }
@ -683,7 +679,7 @@ namespace Aucma.Scada.Business
public BaseSpaceInfo GetSpaceInfo(string spaceCode) public BaseSpaceInfo GetSpaceInfo(string spaceCode)
{ {
return _spaceInfoService.GetSpaceInfoBySpaceCode(appConfig.foamStoreCode,spaceCode); return _spaceInfoService.GetSpaceInfoBySpaceCode(appConfig.foamStoreCode, spaceCode);
} }
} }

@ -210,14 +210,14 @@ namespace Aucma.Scada.Business
Thread.Sleep(5000); Thread.Sleep(5000);
continue; continue;
} }
IPlc _plc = _plcDictionary[appConfig.foamStoreCode]; IPlc _plc = _plcDictionary[appConfig.foamStoreCode];
if (_plc != null) if (_plc != null)
{ {
_plc.writeInt32ByAddress("D7020", 1); _plc.writeInt32ByAddress("D7020", 1);
Thread.Sleep(1000); Thread.Sleep(1000);
_plc.writeInt32ByAddress("D7020", 0); _plc.writeInt32ByAddress("D7020", 0);
Thread.Sleep(1000); Thread.Sleep(1000);
} }
} }
} }
catch (Exception ex) catch (Exception ex)

@ -144,7 +144,7 @@ namespace Aucma.Scada.Business
if (spaceInfo != null) if (spaceInfo != null)
{ {
spaceInfo.unusualFlag = spaceInfo.unusualFlag == 1 ? 2 : 1; spaceInfo.unusualFlag = spaceInfo.unusualFlag == 1 ? 2 : 1;
result = _spaceInfoService.UpdateSpaceInfo(spaceInfo); result = _spaceInfoService.UpdateSpaceInfo(spaceInfo);
logHelper.Info($"修改仓库:{storeCode};货道:{spaceCode};异常标识:{spaceInfo.unusualFlag};修改{(result == true ? "" : "")}"); logHelper.Info($"修改仓库:{storeCode};货道:{spaceCode};异常标识:{spaceInfo.unusualFlag};修改{(result == true ? "" : "")}");
} }

@ -1,11 +1,6 @@
using Aucma.Core.Scanner; using HighWayIot.Config;
using Aucma.Scada.HikRobot;
using HighWayIot.Config;
using HighWayIot.Log4net;
using HighWayIot.Plc; using HighWayIot.Plc;
using System; using System;
using System.Threading;
using System.Threading.Tasks;
namespace Aucma.Scada.Business namespace Aucma.Scada.Business
{ {
@ -63,7 +58,7 @@ namespace Aucma.Scada.Business
{ {
try try
{ {
// MvCodeHelper.CloseAllDevice(); // MvCodeHelper.CloseAllDevice();
} }
catch (Exception ex) catch (Exception ex)
{ {

@ -1,5 +1,4 @@
using Aucma.Core.Scanner; using Aucma.Scada.Model.domain;
using Aucma.Scada.Model.domain;
using HighWayIot.Config; using HighWayIot.Config;
using HighWayIot.Log4net; using HighWayIot.Log4net;
using HighWayIot.Repository.service; using HighWayIot.Repository.service;
@ -9,8 +8,6 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms;
using static Aucma.Scada.Business.OutStoreTaskHandle;
namespace Aucma.Scada.Business namespace Aucma.Scada.Business
{ {
@ -125,14 +122,14 @@ namespace Aucma.Scada.Business
_recordOutStoreService = registerServices.GetService<IRecordOutStoreService>(); _recordOutStoreService = registerServices.GetService<IRecordOutStoreService>();
_recordProductfinishService = registerServices.GetService<IRecordProductfinishService>(); _recordProductfinishService = registerServices.GetService<IRecordProductfinishService>();
assemblyPlanBusiness.NextPassExecutePlanInfoEvent += PlanHandle; assemblyPlanBusiness.NextPassExecutePlanInfoEvent += PlanHandle;
// MvCodeHelper.OutMaterialCodeStrEvent += OutStoreFinishHandle; // MvCodeHelper.OutMaterialCodeStrEvent += OutStoreFinishHandle;
TouchSocketBusiness.OutMaterialCodeStrEvent += OutStoreFinishHandle; TouchSocketBusiness.OutMaterialCodeStrEvent += OutStoreFinishHandle;
//assemblyPlanBusiness.PrintLogAndRefreshEvent += PrintLogInfoMessage; //assemblyPlanBusiness.PrintLogAndRefreshEvent += PrintLogInfoMessage;
assemblyPlanBusiness.GetSpaceInfoByMaterialTypeEvent += GetSpaceInfoByMaterialType; assemblyPlanBusiness.GetSpaceInfoByMaterialTypeEvent += GetSpaceInfoByMaterialType;
taskHandleBusiness.OutStoreAnswerEvent += OutStoreAnswer; taskHandleBusiness.OutStoreAnswerEvent += OutStoreAnswer;
// taskHandleBusiness.OutStoreFinsihEvent += OutStoreFinish; // taskHandleBusiness.OutStoreFinsihEvent += OutStoreFinish;
// test(); // test();
StartPassDown(); StartPassDown();
} }
public void test() public void test()
@ -148,7 +145,7 @@ namespace Aucma.Scada.Business
/// 接收下达的组装计划根据BOM获取需要出库的泡后、内胆物料信息 /// 接收下达的组装计划根据BOM获取需要出库的泡后、内胆物料信息
/// </summary> /// </summary>
/// <param name="planInfo"></param> /// <param name="planInfo"></param>
private void PlanHandle(ExecutePlanInfo planInfo,BaseSpaceInfo spaceInfo = null) private void PlanHandle(ExecutePlanInfo planInfo, BaseSpaceInfo spaceInfo = null)
{ {
lock (string.Empty) lock (string.Empty)
{ {
@ -158,7 +155,7 @@ namespace Aucma.Scada.Business
{ {
var bomInfo = _bomInfoService.GetBomInfoByMaterialCode(planInfo.materialCode); var bomInfo = _bomInfoService.GetBomInfoByMaterialCode(planInfo.materialCode);
if (bomInfo==null) if (bomInfo == null)
{ {
PrintLogInfoMessage($"物料:{planInfo.materialCode}获取Bom信息为空"); PrintLogInfoMessage($"物料:{planInfo.materialCode}获取Bom信息为空");
return; return;
@ -180,15 +177,15 @@ namespace Aucma.Scada.Business
// Thread.Sleep(500); // Thread.Sleep(500);
// } // }
//} //}
// else // 指定货道出一个或者整道出 // else // 指定货道出一个或者整道出
// { // {
for (int i = 0; i < planInfo.planAmount - planInfo.completeAmount; i++) for (int i = 0; i < planInfo.planAmount - planInfo.completeAmount; i++)
{ {
string taskCode = System.Guid.NewGuid().ToString("N").Substring(0, 7); string taskCode = System.Guid.NewGuid().ToString("N").Substring(0, 7);
OutStore(appConfig.foamStoreCode, bomInfo, planInfo.executePlanCode, taskCode, spaceInfo); OutStore(appConfig.foamStoreCode, bomInfo, planInfo.executePlanCode, taskCode, spaceInfo);
Thread.Sleep(500); Thread.Sleep(500);
} }
// } // }
} }
@ -202,7 +199,7 @@ namespace Aucma.Scada.Business
/// <param name="storeCode"></param> /// <param name="storeCode"></param>
/// <param name="bomInfo"></param> /// <param name="bomInfo"></param>
/// <param name="planCode"></param> /// <param name="planCode"></param>
private void OutStore(string storeCode, BaseBomInfo bomInfo, string planCode, string taskCode,BaseSpaceInfo spaceInfo = null) private void OutStore(string storeCode, BaseBomInfo bomInfo, string planCode, string taskCode, BaseSpaceInfo spaceInfo = null)
{ {
try try
{ {
@ -248,39 +245,39 @@ namespace Aucma.Scada.Business
bool result = false; bool result = false;
try try
{ {
#region 出库任务赋值 #region 出库任务赋值
RealTaskInfo realTaskInfo = new RealTaskInfo(); RealTaskInfo realTaskInfo = new RealTaskInfo();
// 执行计划编号 // 执行计划编号
realTaskInfo.planCode = planCode; realTaskInfo.planCode = planCode;
realTaskInfo.taskType = 2; realTaskInfo.taskType = 2;
realTaskInfo.taskCode = taksCode; realTaskInfo.taskCode = taksCode;
realTaskInfo.taskModel = taskModel; realTaskInfo.taskModel = taskModel;
realTaskInfo.storeCode = spaceInfo.storeCode; realTaskInfo.storeCode = spaceInfo.storeCode;
realTaskInfo.spaceCode = spaceInfo.spaceCode; realTaskInfo.spaceCode = spaceInfo.spaceCode;
realTaskInfo.spaceName = spaceInfo.spaceName; realTaskInfo.spaceName = spaceInfo.spaceName;
realTaskInfo.materialType = spaceInfo.materialType; realTaskInfo.materialType = spaceInfo.materialType;
realTaskInfo.planAmount = 1; realTaskInfo.planAmount = 1;
realTaskInfo.taskStatus = 1; realTaskInfo.taskStatus = 1;
realTaskInfo.createTime = DateTime.Now; realTaskInfo.createTime = DateTime.Now;
#endregion #endregion
result = _taskInfoService.AddTaskInfo(realTaskInfo); result = _taskInfoService.AddTaskInfo(realTaskInfo);
if (result) if (result)
{ {
// 禁止入库 // 禁止入库
spaceInfo.inStoreFlag = 2; spaceInfo.inStoreFlag = 2;
_spaceInfoService.UpdateSpaceInfo(spaceInfo); _spaceInfoService.UpdateSpaceInfo(spaceInfo);
PrintLogInfoMessage("出库任务创建成功"); PrintLogInfoMessage("出库任务创建成功");
RefreshOutStoreTaskEvent?.Invoke(); RefreshOutStoreTaskEvent?.Invoke();
// UpdateSpaceAndDetial(spaceInfo, spaceDetail); // UpdateSpaceAndDetial(spaceInfo, spaceDetail);
} }
else else
{ {
PrintLogInfoMessage("出库任务创建失败"); PrintLogInfoMessage("出库任务创建失败");
} }
} }
catch (Exception ex) catch (Exception ex)
@ -337,13 +334,13 @@ namespace Aucma.Scada.Business
//{ //{
// spaceInfo.spaceStock = spaceInfo.spaceStock + 1; // spaceInfo.spaceStock = spaceInfo.spaceStock + 1;
//} //}
// spaceInfo.outRouteAmount += 1; // spaceInfo.outRouteAmount += 1;
// _spaceInfoService.UpdateSpaceInfo(spaceInfo); // _spaceInfoService.UpdateSpaceInfo(spaceInfo);
} }
#region 轮询获取出库任务下发至PLC等待PLC执行反馈完成后再次下发 #region 轮询获取出库任务下发至PLC等待PLC执行反馈完成后再次下发
private SemaphoreSlim semaphore = new SemaphoreSlim(0); private SemaphoreSlim semaphore = new SemaphoreSlim(0);
private int completedTasks = 0; private int completedTasks = 0;
private int taskAmount = 2; private int taskAmount = 2;
@ -379,9 +376,9 @@ namespace Aucma.Scada.Business
if (taskInfo != null) if (taskInfo != null)
{ {
// PrintLogInfoMessage($"下发泡后出库任务:{taskInfo.taskCode};仓库{taskInfo.storeCode};货道:{taskInfo.spaceCode}"); // PrintLogInfoMessage($"下发泡后出库任务:{taskInfo.taskCode};仓库{taskInfo.storeCode};货道:{taskInfo.spaceCode}");
int result = taskHandleBusiness.SendFoamTask_OutStore(taskInfo); int result = taskHandleBusiness.SendFoamTask_OutStore(taskInfo);
if (result==1) if (result == 1)
{ {
PrintLogInfoMessage($"出库任务:{taskInfo.taskCode}下发成功等待PLC执行反馈"); PrintLogInfoMessage($"出库任务:{taskInfo.taskCode}下发成功等待PLC执行反馈");
@ -392,20 +389,20 @@ namespace Aucma.Scada.Business
_taskInfoService.UpdateTaskInfo(taskInfo); _taskInfoService.UpdateTaskInfo(taskInfo);
//刷新出库任务界面 //刷新出库任务界面
RefreshOutStoreTaskEvent?.Invoke(); RefreshOutStoreTaskEvent?.Invoke();
// RefreshScanMateriaCodeEvent?.Invoke(taskInfo.materialCode, taskInfo.materialType, taskInfo.spaceName, taskInfo.storeCode); // RefreshScanMateriaCodeEvent?.Invoke(taskInfo.materialCode, taskInfo.materialType, taskInfo.spaceName, taskInfo.storeCode);
} }
else if (result == 2) else if (result == 2)
{ {
// PrintLogInfoMessage("泡后出库任务下发失败PLC接收任务未就绪"); // PrintLogInfoMessage("泡后出库任务下发失败PLC接收任务未就绪");
} }
else else
{ {
// PrintLogInfoMessage($"泡后出库任务:{taskInfo.taskCode}下发失败请排除PLC连接"); // PrintLogInfoMessage($"泡后出库任务:{taskInfo.taskCode}下发失败请排除PLC连接");
} }
} }
else else
{ {
// PrintLogInfoMessage("未获取到需要下发的出库任务"); // PrintLogInfoMessage("未获取到需要下发的出库任务");
} }
} }
catch (Exception ex) catch (Exception ex)
@ -446,7 +443,7 @@ namespace Aucma.Scada.Business
PrintLogInfoMessage("出库应答成功,自动释放信号量,进行下发新任务"); PrintLogInfoMessage("出库应答成功,自动释放信号量,进行下发新任务");
semaphore.Release(); semaphore.Release();
// 视为出库完成,后续改为监测在库数 // 视为出库完成,后续改为监测在库数
// OutStoreFinish(storeCode, taskCode); // OutStoreFinish(storeCode, taskCode);
} }
@ -509,7 +506,7 @@ namespace Aucma.Scada.Business
#endregion #endregion
} }
// _taskInfoService.DeleteTaskInfoByCode(taskInfo); // _taskInfoService.DeleteTaskInfoByCode(taskInfo);
// 查询该型号的类型任务按照时间排序删除第一条, 清除任务信息 // 查询该型号的类型任务按照时间排序删除第一条, 清除任务信息
_taskInfoService.DeleteFirstTaskByStoreCode(appConfig.foamStoreCode, 2); _taskInfoService.DeleteFirstTaskByStoreCode(appConfig.foamStoreCode, 2);
#region 添加出库记录 #region 添加出库记录
@ -561,7 +558,7 @@ namespace Aucma.Scada.Business
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogErrorMessage("出库完成逻辑处理异常:"+ ex); PrintLogErrorMessage("出库完成逻辑处理异常:" + ex);
} }
finally finally
{ {
@ -613,7 +610,7 @@ namespace Aucma.Scada.Business
var productInfo = _productPlanInfoService.GetProductPlanByPlanCode(executeInfo.productPlanCode); var productInfo = _productPlanInfoService.GetProductPlanByPlanCode(executeInfo.productPlanCode);
if (productInfo != null) if (productInfo != null)
{ {
if(productInfo.completeAmount==0) if (productInfo.completeAmount == 0)
{ {
productInfo.beginTime = DateTime.Now; productInfo.beginTime = DateTime.Now;
} }
@ -704,7 +701,7 @@ namespace Aucma.Scada.Business
/// <summary> /// <summary>
public bool DeleteAllTaskByStoreCode(string storeCode, int taskType) public bool DeleteAllTaskByStoreCode(string storeCode, int taskType)
{ {
return _taskInfoService.DeleteAllTaskByStoreCode(storeCode, taskType); return _taskInfoService.DeleteAllTaskByStoreCode(storeCode, taskType);
} }
/// <summary> /// <summary>
@ -723,9 +720,9 @@ namespace Aucma.Scada.Business
{ {
#region 创建mes执行任务关联生产计划 #region 创建mes执行任务关联生产计划
var productPlanInfo = _productPlanInfoService.GetProductPlanInfosByMaterialCode(spaceInfo.materialType); var productPlanInfo = _productPlanInfoService.GetProductPlanInfosByMaterialCode(spaceInfo.materialType);
if(productPlanInfo != null) if (productPlanInfo != null)
{ {
result = assemblyPlanBusiness.PlanTransmitByProductPlan(productPlanInfo.planCode, 1,spaceInfo); result = assemblyPlanBusiness.PlanTransmitByProductPlan(productPlanInfo.planCode, 1, spaceInfo);
} }
#endregion #endregion
else else
@ -773,7 +770,7 @@ namespace Aucma.Scada.Business
#endregion #endregion
else else
{ {
for(int i = 1; i <= spaceInfo.spaceStock; i++) for (int i = 1; i <= spaceInfo.spaceStock; i++)
{ {
result = this.CreateOutStoreTask(spaceInfo, System.Guid.NewGuid().ToString("N").Substring(0, 7), System.Guid.NewGuid().ToString("N").Substring(0, 10), 1); result = this.CreateOutStoreTask(spaceInfo, System.Guid.NewGuid().ToString("N").Substring(0, 7), System.Guid.NewGuid().ToString("N").Substring(0, 10), 1);
if (!result) if (!result)
@ -861,19 +858,19 @@ namespace Aucma.Scada.Business
try try
{ {
List<BaseSpaceInfo> info = _spaceInfoService.GetBaseSpaceInfosByMaterialType(storeCode, materialType,2); List<BaseSpaceInfo> info = _spaceInfoService.GetBaseSpaceInfosByMaterialType(storeCode, materialType, 2);
if (info != null && info.Count>0) if (info != null && info.Count > 0)
{ {
foreach (BaseSpaceInfo item in info) foreach (BaseSpaceInfo item in info)
{ {
var spaceInfo = taskHandleBusiness.ReadSpaceInfoByPlc(item); var spaceInfo = taskHandleBusiness.ReadSpaceInfoByPlc(item);
item.spaceStock = spaceInfo.spaceStock; item.spaceStock = spaceInfo.spaceStock;
item.onRouteAmount = spaceInfo.onRouteAmount; item.onRouteAmount = spaceInfo.onRouteAmount;
} }
result = info.OrderByDescending(x => x.spaceStock).First(); result = info.OrderByDescending(x => x.spaceStock).First();
} }
else else
@ -888,5 +885,6 @@ namespace Aucma.Scada.Business
return result; return result;
} }
} } }
}

@ -81,7 +81,7 @@ namespace Aucma.Scada.Business
{ {
_plcDictionary = _pool.GetAll(); _plcDictionary = _pool.GetAll();
_taskInfoService = registerServices.GetService<IRealTaskInfoService>(); _taskInfoService = registerServices.GetService<IRealTaskInfoService>();
// RealReadFinish(); // RealReadFinish();
} }
@ -97,7 +97,7 @@ namespace Aucma.Scada.Business
while (true) while (true)
{ {
RealTaskInfo task = GetTaskInfoByTaskStatus(appConfig.foamStoreCode).OrderBy(x => x.createTime).FirstOrDefault(); RealTaskInfo task = GetTaskInfoByTaskStatus(appConfig.foamStoreCode).OrderBy(x => x.createTime).FirstOrDefault();
if(task != null) if (task != null)
{ {
_plcDictionary = _pool.GetAll(); _plcDictionary = _pool.GetAll();
if (_plcDictionary.Count > 0) if (_plcDictionary.Count > 0)
@ -163,24 +163,24 @@ namespace Aucma.Scada.Business
if (_plc != null) if (_plc != null)
{ {
if (_plc.readInt32ByAddress(plcConfig.out_foam_answer) == 1) if (_plc.readInt32ByAddress(plcConfig.out_foam_answer) == 1)
{ {
logHelper.Info("泡后出库应答字为1货道号:" + plcConfig.out_foam_spaceCode + ";写" + short.Parse(taskInfo.spaceCode.Substring(5, 1))); logHelper.Info("泡后出库应答字为1货道号:" + plcConfig.out_foam_spaceCode + ";写" + short.Parse(taskInfo.spaceCode.Substring(5, 1)));
//写入货道号 //写入货道号
_plc.writeInt32ByAddress(plcConfig.out_foam_spaceCode, short.Parse(taskInfo.spaceCode.Substring(5, 1))); _plc.writeInt32ByAddress(plcConfig.out_foam_spaceCode, short.Parse(taskInfo.spaceCode.Substring(5, 1)));
//写入出库数量 //写入出库数量
_plc.writeInt32ByAddress(plcConfig.out_foam_amount, taskInfo.planAmount); _plc.writeInt32ByAddress(plcConfig.out_foam_amount, taskInfo.planAmount);
//写入完成后读取应答字进行复位 //写入完成后读取应答字进行复位
ReadAnswer_OutStore(taskInfo); ReadAnswer_OutStore(taskInfo);
result = 1; result = 1;
} }
else else
{ {
result = 2; result = 2;
logHelper.Info("应答字为2下发新任务plc未就绪"); logHelper.Info("应答字为2下发新任务plc未就绪");
} }
} }
else else
@ -213,27 +213,27 @@ namespace Aucma.Scada.Business
if (_plc != null) if (_plc != null)
{ {
do do
{
//读取PLC应答字为2时上位机清空写入的出库内容
if (_plc.readInt32ByAddress(plcConfig.out_foam_answer) == 2)
{ {
//读取PLC应答字为2时上位机清空写入的出库内容
if (_plc.readInt32ByAddress(plcConfig.out_foam_answer) == 2)
{
logHelper.Info("出库应答字写3应答字为2货道号:" + plcConfig.out_foam_spaceCode + ";复位写0"); logHelper.Info("出库应答字写3应答字为2货道号:" + plcConfig.out_foam_spaceCode + ";复位写0");
//写入货道号 //写入货道号
_plc.writeInt32ByAddress(plcConfig.out_foam_spaceCode, 0); _plc.writeInt32ByAddress(plcConfig.out_foam_spaceCode, 0);
//写入应答字3 //写入应答字3
_plc.writeInt32ByAddress(plcConfig.out_foam_answer, 3); _plc.writeInt32ByAddress(plcConfig.out_foam_answer, 3);
//写入出库数量 //写入出库数量
_plc.writeInt32ByAddress(plcConfig.out_foam_amount, 0); _plc.writeInt32ByAddress(plcConfig.out_foam_amount, 0);
isFlag = false; isFlag = false;
OutStoreAnswerEvent?.Invoke(appConfig.foamStoreCode, taskInfo.taskCode); OutStoreAnswerEvent?.Invoke(appConfig.foamStoreCode, taskInfo.taskCode);
} }
Thread.Sleep(500); Thread.Sleep(500);
} while (isFlag); } while (isFlag);
} }
else else
@ -266,9 +266,9 @@ namespace Aucma.Scada.Business
if (_plc != null) if (_plc != null)
{ {
spaceInfo.spaceStock = _plc.readInt32ByAddress(spaceAddress.onStore); spaceInfo.spaceStock = _plc.readInt32ByAddress(spaceAddress.onStore);
spaceInfo.onRouteAmount = _plc.readInt32ByAddress(spaceAddress.onRoute); spaceInfo.onRouteAmount = _plc.readInt32ByAddress(spaceAddress.onRoute);
// spaceInfo.spaceStatus = _plc.readInt32ByAddress(spaceAddress.spaceStatus); // spaceInfo.spaceStatus = _plc.readInt32ByAddress(spaceAddress.spaceStatus);
} }

@ -61,9 +61,11 @@ namespace Aucma.Scada.Business
services.AddSingleton<IRecordInStoreService, RecordInStoreServiceImpl>(); services.AddSingleton<IRecordInStoreService, RecordInStoreServiceImpl>();
services.AddSingleton<IRecordOutStoreService, RecordOutStoreServiceImpl>(); services.AddSingleton<IRecordOutStoreService, RecordOutStoreServiceImpl>();
services.AddSingleton<IRecordProductfinishService, RecordProductfinishServiceImpl>(); services.AddSingleton<IRecordProductfinishService, RecordProductfinishServiceImpl>();
services.AddSingleton<IPrintBarCodeServices, PrintBarCodeServicesImpl>(); services.AddSingleton<IPrintBarCodeServices, PrintBarCodeServicesImpl>();
services.AddSingleton<IMaterialCompletionServices, MaterialCompletionServiceImpl>(); services.AddSingleton<IMaterialCompletionServices, MaterialCompletionServiceImpl>();
services.AddSingleton<IBaseMaterialInfoService, BaseMaterialInfoServiceImpl>();
services.AddSingleton<IBaseTeamMembersServices, BaseTeamMembersServiceImpl>();
} }
public T GetService<T>() public T GetService<T>()

@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<runtime> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" /> <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0" /> <bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" /> <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.116.0" newVersion="1.0.116.0" /> <bindingRedirect oldVersion="0.0.0.0-1.0.116.0" newVersion="1.0.116.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.122.21.1" newVersion="4.122.21.1" /> <bindingRedirect oldVersion="0.0.0.0-4.122.21.1" newVersion="4.122.21.1" />
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
</configuration> </configuration>

@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<runtime> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" /> <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0" /> <bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" /> <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.116.0" newVersion="1.0.116.0" /> <bindingRedirect oldVersion="0.0.0.0-1.0.116.0" newVersion="1.0.116.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.122.21.1" newVersion="4.122.21.1" /> <bindingRedirect oldVersion="0.0.0.0-4.122.21.1" newVersion="4.122.21.1" />
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
</configuration> </configuration>

@ -1 +1 @@
fc3d09b7d5a7b7e0dc9fb01d4cdd7deca8d1e7c3 516fbde1671d57c1c728c6069525b853ce724988

@ -181,3 +181,52 @@ E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Business\obj\Debug\Auc
E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.csproj.CopyComplete E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.csproj.CopyComplete
E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.dll E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.dll
E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.pdb E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Aucma.Scada.Business.dll.config
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Aucma.Scada.Business.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Aucma.Scada.Business.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Aucma.Scada.HikRobot.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Aucma.Scada.Model.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Common.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Config.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Log4net.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Plc.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Repository.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.TouchSocket.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Microsoft.Bcl.AsyncInterfaces.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Microsoft.Extensions.DependencyInjection.Abstractions.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Microsoft.Extensions.DependencyInjection.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\System.Reactive.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\System.Reactive.Windows.Threading.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\System.Threading.Tasks.Extensions.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\MvCodeReaderSDK.Net.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\SqlSugar.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Newtonsoft.Json.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\log4net.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HslCommunication.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\TouchSocket.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\TouchSocket.Core.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Aucma.Scada.HikRobot.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Aucma.Scada.Model.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Common.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Config.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Log4net.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Plc.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Repository.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.Repository.dll.config
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\HighWayIot.TouchSocket.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Microsoft.Extensions.DependencyInjection.xml
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Microsoft.Extensions.DependencyInjection.Abstractions.xml
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\System.Reactive.xml
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\System.Reactive.Windows.Threading.xml
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\System.Threading.Tasks.Extensions.xml
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Newtonsoft.Json.xml
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\TouchSocket.xml
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\TouchSocket.Core.xml
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.csproj.AssemblyReference.cache
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.csproj.CoreCompileInputs.cache
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.csproj.CopyComplete
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\obj\Debug\Aucma.Scada.Business.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Business\bin\Debug\Microsoft.Bcl.AsyncInterfaces.xml

@ -3,8 +3,6 @@ using HighWayIot.Log4net;
using MvCodeReaderSDKNet; using MvCodeReaderSDKNet;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
@ -100,7 +98,7 @@ namespace Aucma.Scada.HikRobot
} }
private void Grab(int index,MvCodeReader.MV_CODEREADER_DEVICE_INFO_LIST stDevList, MvCodeReader.MV_CODEREADER_DEVICE_INFO stDevInfo,MvCodeReader device) private void Grab(int index, MvCodeReader.MV_CODEREADER_DEVICE_INFO_LIST stDevList, MvCodeReader.MV_CODEREADER_DEVICE_INFO stDevInfo, MvCodeReader device)
{ {
try try
{ {
@ -196,7 +194,7 @@ namespace Aucma.Scada.HikRobot
RefreshLogMessageEvent?.Invoke("Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]"); RefreshLogMessageEvent?.Invoke("Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
if (!string.IsNullOrEmpty(strCode)) if (!string.IsNullOrEmpty(strCode))
{ {
if(strCode != lastStr) if (strCode != lastStr)
{ {
RefreshMaterialCodeStrEvent?.Invoke(strCode); RefreshMaterialCodeStrEvent?.Invoke(strCode);
} }
@ -215,7 +213,8 @@ namespace Aucma.Scada.HikRobot
} }
} while (false); } while (false);
}); });
}catch(Exception ex) }
catch (Exception ex)
{ {
logHelper.Error("扫码异常", ex); logHelper.Error("扫码异常", ex);
} }

@ -1,15 +1,10 @@
using MvCodeReaderSDKNet; using HighWayIot.Config;
using HighWayIot.Log4net;
using MvCodeReaderSDKNet;
using System; using System;
using System.Collections.Generic;
using System.Drawing;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text; using System.Text;
using System.Threading.Tasks;
using System.Threading; using System.Threading;
using static System.Runtime.CompilerServices.RuntimeHelpers;
using HighWayIot.Log4net;
using HighWayIot.Config;
using System.Security.Policy;
namespace Aucma.Core.Scanner namespace Aucma.Core.Scanner
{ {
public class MvCodeHelper public class MvCodeHelper
@ -189,9 +184,9 @@ namespace Aucma.Core.Scanner
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)
{ {
// 刷新扫码器状态 // 刷新扫码器状态
RefreshStateEvent?.Invoke("入库",false); RefreshStateEvent?.Invoke("入库", false);
RefreshStateEvent?.Invoke("入库", false); RefreshStateEvent?.Invoke("入库", false);
Thread.Sleep(1000 * 10); Thread.Sleep(1000 * 10);
Console.WriteLine("Enum device failed:{0:x8}", nRet); Console.WriteLine("Enum device failed:{0:x8}", nRet);
break; break;
@ -200,9 +195,9 @@ namespace Aucma.Core.Scanner
if (0 == stDevList.nDeviceNum) if (0 == stDevList.nDeviceNum)
{ {
// 刷新扫码器状态 // 刷新扫码器状态
RefreshStateEvent?.Invoke("入库", false); RefreshStateEvent?.Invoke("入库", false);
RefreshStateEvent?.Invoke("入库", false); RefreshStateEvent?.Invoke("入库", false);
Thread.Sleep(1000 * 10); Thread.Sleep(1000 * 10);
break; break;
@ -237,7 +232,7 @@ namespace Aucma.Core.Scanner
{ {
Console.WriteLine("未找到入库扫码器"); Console.WriteLine("未找到入库扫码器");
// 刷新扫码器状态 // 刷新扫码器状态
RefreshStateEvent?.Invoke("入库", false); RefreshStateEvent?.Invoke("入库", false);
Thread.Sleep(1000 * 30); Thread.Sleep(1000 * 30);
break; break;
} }
@ -249,7 +244,7 @@ namespace Aucma.Core.Scanner
{ {
Console.WriteLine("Create device failed:{0:x8}", nRet); Console.WriteLine("Create device failed:{0:x8}", nRet);
// 刷新扫码器状态 // 刷新扫码器状态
RefreshStateEvent?.Invoke("入库", false); RefreshStateEvent?.Invoke("入库", false);
break; break;
} }
@ -260,12 +255,12 @@ namespace Aucma.Core.Scanner
{ {
Console.WriteLine("Open device failed:{0:x8}", nRet); Console.WriteLine("Open device failed:{0:x8}", nRet);
// 刷新扫码器状态 // 刷新扫码器状态
RefreshStateEvent?.Invoke("入库", false); RefreshStateEvent?.Invoke("入库", false);
break; break;
} }
// 刷新扫码器状态 // 刷新扫码器状态
RefreshStateEvent?.Invoke("入库", true); RefreshStateEvent?.Invoke("入库", true);
// ch:注册回调函数 | en:Register image callback // ch:注册回调函数 | en:Register image callback
ImageCallback = new MvCodeReader.cbOutputEx2delegate(ShellImageCallbackFunc); ImageCallback = new MvCodeReader.cbOutputEx2delegate(ShellImageCallbackFunc);
nRet = device.MV_CODEREADER_RegisterImageCallBackEx2_NET(ImageCallback, IntPtr.Zero); nRet = device.MV_CODEREADER_RegisterImageCallBackEx2_NET(ImageCallback, IntPtr.Zero);
@ -273,7 +268,7 @@ namespace Aucma.Core.Scanner
{ {
Console.WriteLine("Register image callback failed!"); Console.WriteLine("Register image callback failed!");
// 刷新扫码器状态 // 刷新扫码器状态
RefreshStateEvent?.Invoke("入库", false); RefreshStateEvent?.Invoke("入库", false);
break; break;
} }
@ -283,7 +278,7 @@ namespace Aucma.Core.Scanner
{ {
Console.WriteLine("Start grabbing failed:{0:x8}", nRet); Console.WriteLine("Start grabbing failed:{0:x8}", nRet);
// 刷新扫码器状态 // 刷新扫码器状态
RefreshStateEvent?.Invoke("入库", false); RefreshStateEvent?.Invoke("入库", false);
break; break;
} }
@ -305,7 +300,7 @@ namespace Aucma.Core.Scanner
} }
// Console.ReadLine(); // Console.ReadLine();
// 刷新扫码器状态 // 刷新扫码器状态
RefreshStateEvent?.Invoke("入库", false); RefreshStateEvent?.Invoke("入库", false);
// ch:停止抓图 | en:Stop grabbing // ch:停止抓图 | en:Stop grabbing
nRet = device.MV_CODEREADER_StopGrabbing_NET(); nRet = device.MV_CODEREADER_StopGrabbing_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)

@ -1,5 +1,4 @@
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下 // 有关程序集的一般信息由以下

@ -1 +1 @@
3eb32e1004be51a33739d5edaf789c03063b8825 065b42af0f016c8371a20da874f175173870f8c3

@ -49,3 +49,20 @@ E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Auc
E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.csproj.CopyComplete E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.csproj.CopyComplete
E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.dll E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.dll
E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.pdb E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\Aucma.Scada.HikRobot.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\Aucma.Scada.HikRobot.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\HighWayIot.Config.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\HighWayIot.Log4net.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\MvCodeReaderSDK.Net.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\HighWayIot.Common.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\log4net.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\Newtonsoft.Json.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\HighWayIot.Config.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\HighWayIot.Log4net.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\HighWayIot.Common.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\bin\Debug\Newtonsoft.Json.xml
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.csproj.AssemblyReference.cache
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.csproj.CoreCompileInputs.cache
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.csproj.CopyComplete
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.HikRobot\obj\Debug\Aucma.Scada.HikRobot.pdb

@ -44,6 +44,7 @@
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="domain\BaseTeamMembers.cs" />
<Compile Include="domain\BaseMaterialInfo.cs" /> <Compile Include="domain\BaseMaterialInfo.cs" />
<Compile Include="domain\MaterialCompletion.cs" /> <Compile Include="domain\MaterialCompletion.cs" />
<Compile Include="domain\PrintBarCode.cs" /> <Compile Include="domain\PrintBarCode.cs" />

@ -0,0 +1,87 @@
using SqlSugar;
namespace Aucma.Scada.Model.domain
{
/// <summary>
/// 班组信息
/// </summary>
[SugarTable("BASE_TEAMMEMBERS", "AUCMA_MES")]
public class BaseTeamMembers
{
/// <summary>
/// 主键标识
///</summary>
[SugarColumn(ColumnName = "OBJ_ID", IsPrimaryKey = true, IsIdentity = true)]
public int ObjId { get; set; }
/// <summary>
/// 班组编号
/// </summary>
[SugarColumn(ColumnName = "TEAM_CODE")]
public string TeamCode { get; set; }
/// <summary>
/// 班组名称
/// </summary>
[SugarColumn(ColumnName = "TEAM_NAME")]
public string TeamName { get; set; }
/// <summary>
/// 班组负责人
/// </summary>
[SugarColumn(ColumnName = "TEAM_HEAD")]
public string TeamHead { get; set; }
/// <summary>
/// 所属产线/工位
/// </summary>
[SugarColumn(ColumnName = "PRODUCT_LINE_CODE")]
public string ProductLineCode { get; set; }
/// <summary>
/// 是否标识
/// </summary>
[SugarColumn(ColumnName = "IS_FLAG")]
public int IsFlag { get; set; }
/// <summary>
/// 创建人
/// </summary>
[SugarColumn(ColumnName = "CREATED_BY")]
public string CreatedBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[SugarColumn(ColumnName = "CREATED_TIME")]
public string CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(ColumnName = "UPDATED_BY")]
public string UpdatedBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(ColumnName = "UPDATED_TIME")]
public string UpdatedTime { get; set; }
/// <summary>
/// 开始时间
/// </summary>
[SugarColumn(ColumnName = "START_TIME")]
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
[SugarColumn(ColumnName = "END_TIME")]
public string EndTime { get; set; }
/// <summary>
/// 吃饭时间
/// </summary>
[SugarColumn(ColumnName = "DINE_TIME")]
public string DingTime { get; set; }
}
}

@ -1,7 +1,5 @@
using System; using SqlSugar;
using System.Collections.Generic; using System;
using System.Linq;
using SqlSugar;
namespace Aucma.Scada.Model.domain namespace Aucma.Scada.Model.domain
{ {
/// <summary> /// <summary>
@ -13,63 +11,63 @@ namespace Aucma.Scada.Model.domain
/// <summary> /// <summary>
/// 主键标识 /// 主键标识
///</summary> ///</summary>
[SugarColumn(ColumnName="OBJ_ID" ,IsPrimaryKey = true ,OracleSequenceName = "SEQ_RECORD_INSTORE")] [SugarColumn(ColumnName = "OBJ_ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_RECORD_INSTORE")]
public decimal objId { get; set; } public decimal objId { get; set; }
/// <summary> /// <summary>
/// 仓库编号 /// 仓库编号
///</summary> ///</summary>
[SugarColumn(ColumnName="STORE_CODE" )] [SugarColumn(ColumnName = "STORE_CODE")]
public string storeCode { get; set; } public string storeCode { get; set; }
/// <summary> /// <summary>
/// 仓库区域 /// 仓库区域
///</summary> ///</summary>
[SugarColumn(ColumnName="STORE_AREA" )] [SugarColumn(ColumnName = "STORE_AREA")]
public string storeArea { get; set; } public string storeArea { get; set; }
/// <summary> /// <summary>
/// 货道编号 /// 货道编号
///</summary> ///</summary>
[SugarColumn(ColumnName="SPACE_CODE" )] [SugarColumn(ColumnName = "SPACE_CODE")]
public string spaceCode { get; set; } public string spaceCode { get; set; }
/// <summary> /// <summary>
/// 物料类型 /// 物料类型
///</summary> ///</summary>
[SugarColumn(ColumnName="MATERIAL_TYPE" )] [SugarColumn(ColumnName = "MATERIAL_TYPE")]
public string materialType { get; set; } public string materialType { get; set; }
/// <summary> /// <summary>
/// 物料编号 /// 物料编号
///</summary> ///</summary>
[SugarColumn(ColumnName="MATERIAL_CODE" )] [SugarColumn(ColumnName = "MATERIAL_CODE")]
public string materialCode { get; set; } public string materialCode { get; set; }
/// <summary> /// <summary>
/// 入库数量 /// 入库数量
///</summary> ///</summary>
[SugarColumn(ColumnName="IN_STORE_AMOUNT" )] [SugarColumn(ColumnName = "IN_STORE_AMOUNT")]
public decimal? inStoreAmount { get; set; } public decimal? inStoreAmount { get; set; }
/// <summary> /// <summary>
/// 入库时间 /// 入库时间
///</summary> ///</summary>
[SugarColumn(ColumnName="IN_STORE_TIME" )] [SugarColumn(ColumnName = "IN_STORE_TIME")]
public DateTime? inStoreTime { get; set; } public DateTime? inStoreTime { get; set; }
/// <summary> /// <summary>
/// 物料条码编号 /// 物料条码编号
///</summary> ///</summary>
[SugarColumn(ColumnName="BARCODE_CODE" )] [SugarColumn(ColumnName = "BARCODE_CODE")]
public string barcodeCode { get; set; } public string barcodeCode { get; set; }
/// <summary> /// <summary>
/// 物料名称 /// 物料名称
///</summary> ///</summary>
[SugarColumn(ColumnName="MATERIAL_NAME" )] [SugarColumn(ColumnName = "MATERIAL_NAME")]
public string materialName { get; set; } public string materialName { get; set; }
/// <summary> /// <summary>
/// 入库方式0-正常1-异常) /// 入库方式0-正常1-异常)
///</summary> ///</summary>
[SugarColumn(ColumnName="ENTRY_PATTERN" )] [SugarColumn(ColumnName = "ENTRY_PATTERN")]
public short? entryPattern { get; set; } public short? entryPattern { get; set; }
/// <summary> /// <summary>
/// 是否标识 /// 是否标识
///</summary> ///</summary>
[SugarColumn(ColumnName="IS_FLAG" )] [SugarColumn(ColumnName = "IS_FLAG")]
public short? isFlag { get; set; } public short? isFlag { get; set; }
} }
} }

@ -1,7 +1,5 @@
using System; using SqlSugar;
using System.Collections.Generic; using System;
using System.Linq;
using SqlSugar;
namespace Aucma.Scada.Model.domain namespace Aucma.Scada.Model.domain
{ {
/// <summary> /// <summary>
@ -13,63 +11,63 @@ namespace Aucma.Scada.Model.domain
/// <summary> /// <summary>
/// 主键标识 /// 主键标识
///</summary> ///</summary>
[SugarColumn(ColumnName="OBJ_ID" ,IsPrimaryKey = true ,OracleSequenceName = "SEQ_RECORD_OUTSTORE")] [SugarColumn(ColumnName = "OBJ_ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_RECORD_OUTSTORE")]
public decimal objId { get; set; } public decimal objId { get; set; }
/// <summary> /// <summary>
/// 仓库编号 /// 仓库编号
///</summary> ///</summary>
[SugarColumn(ColumnName="STORE_CODE" )] [SugarColumn(ColumnName = "STORE_CODE")]
public string storeCode { get; set; } public string storeCode { get; set; }
/// <summary> /// <summary>
/// 仓库区域 /// 仓库区域
///</summary> ///</summary>
[SugarColumn(ColumnName="STORE_AREA" )] [SugarColumn(ColumnName = "STORE_AREA")]
public string storeArea { get; set; } public string storeArea { get; set; }
/// <summary> /// <summary>
/// 货道编号 /// 货道编号
///</summary> ///</summary>
[SugarColumn(ColumnName="SPACE_CODE" )] [SugarColumn(ColumnName = "SPACE_CODE")]
public string spaceCode { get; set; } public string spaceCode { get; set; }
/// <summary> /// <summary>
/// 物料编号 /// 物料编号
///</summary> ///</summary>
[SugarColumn(ColumnName="MATERIAL_CODE" )] [SugarColumn(ColumnName = "MATERIAL_CODE")]
public string materialCode { get; set; } public string materialCode { get; set; }
/// <summary> /// <summary>
/// 物料名称 /// 物料名称
///</summary> ///</summary>
[SugarColumn(ColumnName="MATERIAL_NAME" )] [SugarColumn(ColumnName = "MATERIAL_NAME")]
public string materialName { get; set; } public string materialName { get; set; }
/// <summary> /// <summary>
/// 出库数量 /// 出库数量
///</summary> ///</summary>
[SugarColumn(ColumnName="OUT_STORE_AMOUNT" )] [SugarColumn(ColumnName = "OUT_STORE_AMOUNT")]
public decimal? outStoreAmount { get; set; } public decimal? outStoreAmount { get; set; }
/// <summary> /// <summary>
/// 出库时间 /// 出库时间
///</summary> ///</summary>
[SugarColumn(ColumnName="OUT_STORE_TIME" )] [SugarColumn(ColumnName = "OUT_STORE_TIME")]
public DateTime? outStoreTime { get; set; } public DateTime? outStoreTime { get; set; }
/// <summary> /// <summary>
/// 物料条码编号 /// 物料条码编号
///</summary> ///</summary>
[SugarColumn(ColumnName="BARCODE_CODE" )] [SugarColumn(ColumnName = "BARCODE_CODE")]
public string barcodeCode { get; set; } public string barcodeCode { get; set; }
/// <summary> /// <summary>
/// 物料类型 /// 物料类型
///</summary> ///</summary>
[SugarColumn(ColumnName="MATERIAL_TYPE" )] [SugarColumn(ColumnName = "MATERIAL_TYPE")]
public string materialType { get; set; } public string materialType { get; set; }
/// <summary> /// <summary>
/// 出库方式0-正常1-异常) /// 出库方式0-正常1-异常)
///</summary> ///</summary>
[SugarColumn(ColumnName="EXIT_PATTERN" )] [SugarColumn(ColumnName = "EXIT_PATTERN")]
public short? exitPattern { get; set; } public short? exitPattern { get; set; }
/// <summary> /// <summary>
/// 是否标识 /// 是否标识
///</summary> ///</summary>
[SugarColumn(ColumnName="IS_FLAG" )] [SugarColumn(ColumnName = "IS_FLAG")]
public decimal? isFlag { get; set; } public decimal? isFlag { get; set; }
} }
} }

@ -1,7 +1,5 @@
using System; using SqlSugar;
using System.Collections.Generic; using System;
using System.Linq;
using SqlSugar;
namespace Aucma.Scada.Model.domain namespace Aucma.Scada.Model.domain
{ {
/// <summary> /// <summary>
@ -13,37 +11,37 @@ namespace Aucma.Scada.Model.domain
/// <summary> /// <summary>
/// 主键标识 /// 主键标识
///</summary> ///</summary>
[SugarColumn(ColumnName="OBJ_ID" ,IsPrimaryKey = true ,OracleSequenceName = "SEQ_RECORD_PRODUCTFINISH")] [SugarColumn(ColumnName = "OBJ_ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_RECORD_PRODUCTFINISH")]
public decimal objId { get; set; } public decimal objId { get; set; }
/// <summary> /// <summary>
/// 计划编号 /// 计划编号
///</summary> ///</summary>
[SugarColumn(ColumnName="PLAN_CODE" )] [SugarColumn(ColumnName = "PLAN_CODE")]
public string planCode { get; set; } public string planCode { get; set; }
/// <summary> /// <summary>
/// 物料编号 /// 物料编号
///</summary> ///</summary>
[SugarColumn(ColumnName="MATERIAL_CODE" )] [SugarColumn(ColumnName = "MATERIAL_CODE")]
public string materialCode { get; set; } public string materialCode { get; set; }
/// <summary> /// <summary>
/// 计划工位 /// 计划工位
///</summary> ///</summary>
[SugarColumn(ColumnName="PRODUCTLINE_CODE" )] [SugarColumn(ColumnName = "PRODUCTLINE_CODE")]
public string productlineCode { get; set; } public string productlineCode { get; set; }
/// <summary> /// <summary>
/// 完成数量 /// 完成数量
///</summary> ///</summary>
[SugarColumn(ColumnName="COMPLETE_AMOUNT" )] [SugarColumn(ColumnName = "COMPLETE_AMOUNT")]
public decimal? completeAmount { get; set; } public decimal? completeAmount { get; set; }
/// <summary> /// <summary>
/// 记录时间 /// 记录时间
///</summary> ///</summary>
[SugarColumn(ColumnName="RECORD_TIME" )] [SugarColumn(ColumnName = "RECORD_TIME")]
public DateTime? recordTime { get; set; } public DateTime? recordTime { get; set; }
/// <summary> /// <summary>
/// 是否标识 /// 是否标识
///</summary> ///</summary>
[SugarColumn(ColumnName="IS_FLAG" )] [SugarColumn(ColumnName = "IS_FLAG")]
public decimal? isFlag { get; set; } public decimal? isFlag { get; set; }
} }
} }

@ -1,9 +1,5 @@
using SqlSugar; using SqlSugar;
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Aucma.Scada.Model.domain namespace Aucma.Scada.Model.domain
{ {

@ -1,10 +1,4 @@
using System; namespace Aucma.Scada.Model.dto
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Aucma.Scada.Model.dto
{ {
public class FoamStoreStockDto public class FoamStoreStockDto
{ {

@ -1 +1 @@
c1df4a405465ec99296e7191ac19178349a56569 60e1a3b4d3e1418dd026799d4bbe00624d5973b6

@ -22,3 +22,11 @@ E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.
E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.csproj.CopyComplete E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.csproj.CopyComplete
E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.dll E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.dll
E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.pdb E:\c#\AUCMA\最新代码整合\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Model\bin\Debug\Aucma.Scada.Model.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Model\bin\Debug\Aucma.Scada.Model.pdb
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Model\bin\Debug\SqlSugar.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.csproj.AssemblyReference.cache
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.csproj.CoreCompileInputs.cache
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.csproj.CopyComplete
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.dll
E:\c#\AUCMA\最新代码整合\登录版\泡后库\foam\Aucma.Scada.Model\obj\Debug\Aucma.Scada.Model.pdb

@ -21,6 +21,26 @@
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.122.21.1" newVersion="4.122.21.1" /> <bindingRedirect oldVersion="0.0.0.0-4.122.21.1" newVersion="4.122.21.1" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.4" newVersion="7.0.0.4" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<!--<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>-->
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
</configuration> </configuration>

@ -2,10 +2,18 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Aucma.Scada.UI" xmlns:local="clr-namespace:Aucma.Scada.UI"
StartupUri="MainWindow.xaml"> StartupUri="LoginPageView.xaml">
<Application.Resources> <Application.Resources>
<!--Button样式-->
<ResourceDictionary> <ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="templates/style/resourceStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesign3.Defaults.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Secondary/MaterialDesignColor.Lime.xaml" />
</ResourceDictionary.MergedDictionaries>
<!--Button样式-->
<Style x:Key="TextBoxStyle" TargetType="TextBox"> <Style x:Key="TextBoxStyle" TargetType="TextBox">
<Setter Property="BorderThickness" Value="0"/> <Setter Property="BorderThickness" Value="0"/>
<Setter Property="BorderBrush" Value="Transparent"/> <Setter Property="BorderBrush" Value="Transparent"/>
@ -20,10 +28,6 @@
</Setter.Value> </Setter.Value>
</Setter> </Setter>
</Style> </Style>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="templates/style/resourceStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary> </ResourceDictionary>
</Application.Resources> </Application.Resources>
</Application> </Application>

@ -40,13 +40,13 @@ namespace Aucma.Scada.UI
else else
{ {
mainBusiness.InitPlc(); mainBusiness.InitPlc();
// mainBusiness.InitHikRobot(); // mainBusiness.InitHikRobot();
} }
} }
private void Application_Exit(object sender, ExitEventArgs e) private void Application_Exit(object sender, ExitEventArgs e)
{ {
mainBusiness.DisConnectPlc(); mainBusiness.DisConnectPlc();
// mainBusiness.ExitHikRobot(); // mainBusiness.ExitHikRobot();
logHelper.Info("程序退出"); logHelper.Info("程序退出");
} }

@ -14,6 +14,8 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@ -59,6 +61,18 @@
<Reference Include="LiveCharts.Wpf, Version=0.9.7.0, Culture=neutral, PublicKeyToken=0bc1f845d1ebb8df, processorArchitecture=MSIL"> <Reference Include="LiveCharts.Wpf, Version=0.9.7.0, Culture=neutral, PublicKeyToken=0bc1f845d1ebb8df, processorArchitecture=MSIL">
<HintPath>..\packages\LiveCharts.Wpf.0.9.7\lib\net45\LiveCharts.Wpf.dll</HintPath> <HintPath>..\packages\LiveCharts.Wpf.0.9.7\lib\net45\LiveCharts.Wpf.dll</HintPath>
</Reference> </Reference>
<Reference Include="MaterialDesignColors, Version=3.0.0.0, Culture=neutral, PublicKeyToken=df2a72020bd7962a, processorArchitecture=MSIL">
<HintPath>..\packages\MaterialDesignColors.3.0.0\lib\net462\MaterialDesignColors.dll</HintPath>
</Reference>
<Reference Include="MaterialDesignThemes.Wpf, Version=5.0.0.0, Culture=neutral, PublicKeyToken=df2a72020bd7962a, processorArchitecture=MSIL">
<HintPath>..\packages\MaterialDesignThemes.5.0.0\lib\net462\MaterialDesignThemes.Wpf.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.7.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Xaml.Behaviors, Version=1.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.39\lib\net45\Microsoft.Xaml.Behaviors.dll</HintPath>
</Reference>
<Reference Include="MySql.Data"> <Reference Include="MySql.Data">
<HintPath>..\HighWayIot.Library\MySql.Data.dll</HintPath> <HintPath>..\HighWayIot.Library\MySql.Data.dll</HintPath>
</Reference> </Reference>
@ -69,10 +83,29 @@
<HintPath>..\HighWayIot.Library\SqlSugar.dll</HintPath> <HintPath>..\HighWayIot.Library\SqlSugar.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Data.SQLite"> <Reference Include="System.Data.SQLite">
<HintPath>..\HighWayIot.Library\System.Data.SQLite.dll</HintPath> <HintPath>..\HighWayIot.Library\System.Data.SQLite.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Text.Json, Version=7.0.0.4, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.7.0.4\lib\net462\System.Text.Json.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\MvvmLightLibs.5.4.1.1\lib\net45\System.Windows.Interactivity.dll</HintPath> <HintPath>..\packages\MvvmLightLibs.5.4.1.1\lib\net45\System.Windows.Interactivity.dll</HintPath>
</Reference> </Reference>
@ -99,6 +132,7 @@
<Compile Include="Converter\ShellInventory\StatusLabelConverter.cs" /> <Compile Include="Converter\ShellInventory\StatusLabelConverter.cs" />
<Compile Include="Converter\TaskInfo\TaskStatusConverter.cs" /> <Compile Include="Converter\TaskInfo\TaskStatusConverter.cs" />
<Compile Include="Converter\TaskInfo\TaskTypeConverter.cs" /> <Compile Include="Converter\TaskInfo\TaskTypeConverter.cs" />
<Compile Include="Model\Result.cs" />
<Compile Include="Model\typeGridModel.cs" /> <Compile Include="Model\typeGridModel.cs" />
<Compile Include="Page\AssemblyPlan\AssemblyPlanControl.xaml.cs"> <Compile Include="Page\AssemblyPlan\AssemblyPlanControl.xaml.cs">
<DependentUpon>AssemblyPlanControl.xaml</DependentUpon> <DependentUpon>AssemblyPlanControl.xaml</DependentUpon>
@ -148,6 +182,9 @@
<Compile Include="Page\TaskInfo\TaskInfoControl.xaml.cs"> <Compile Include="Page\TaskInfo\TaskInfoControl.xaml.cs">
<DependentUpon>TaskInfoControl.xaml</DependentUpon> <DependentUpon>TaskInfoControl.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="LoginPageView.xaml.cs">
<DependentUpon>LoginPageView.xaml</DependentUpon>
</Compile>
<Compile Include="RecordControl.xaml.cs"> <Compile Include="RecordControl.xaml.cs">
<DependentUpon>RecordControl.xaml</DependentUpon> <DependentUpon>RecordControl.xaml</DependentUpon>
</Compile> </Compile>
@ -165,6 +202,7 @@
<Compile Include="viewModel\LogInfoViewModel.cs" /> <Compile Include="viewModel\LogInfoViewModel.cs" />
<Compile Include="viewModel\MainViewModel.cs" /> <Compile Include="viewModel\MainViewModel.cs" />
<Compile Include="viewModel\OutStoreInfo\OutStoreInfoViewModel.cs" /> <Compile Include="viewModel\OutStoreInfo\OutStoreInfoViewModel.cs" />
<Compile Include="viewModel\LoginPageViewModel.cs" />
<Compile Include="viewModel\RecordViewModel.cs" /> <Compile Include="viewModel\RecordViewModel.cs" />
<Compile Include="viewModel\InventoryInfo\ShellInventoryViewModel.cs" /> <Compile Include="viewModel\InventoryInfo\ShellInventoryViewModel.cs" />
<Compile Include="viewModel\TaskInfo\TaskInfoViewModel.cs" /> <Compile Include="viewModel\TaskInfo\TaskInfoViewModel.cs" />
@ -244,6 +282,10 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="LoginPageView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="RecordControl.xaml"> <Page Include="RecordControl.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
@ -267,6 +309,8 @@
<DependentUpon>Settings.settings</DependentUpon> <DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput> <DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile> </Compile>
<Resource Include="templates\image\Newlog.png" />
<Resource Include="templates\image\login-background.png" />
<Resource Include="templates\image\Green.png"> <Resource Include="templates\image\Green.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource> </Resource>
@ -335,4 +379,11 @@
<Resource Include="templates\image\background.jpg" /> <Resource Include="templates\image\background.jpg" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\MaterialDesignThemes.5.0.0\build\MaterialDesignThemes.targets" Condition="Exists('..\packages\MaterialDesignThemes.5.0.0\build\MaterialDesignThemes.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MaterialDesignThemes.5.0.0\build\MaterialDesignThemes.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MaterialDesignThemes.5.0.0\build\MaterialDesignThemes.targets'))" />
</Target>
</Project> </Project>

@ -0,0 +1,73 @@
<Window x:Class="Aucma.Scada.UI.LoginPageView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:local="clr-namespace:Aucma.Scada.UI"
mc:Ignorable="d"
Title="登录"
x:Name="MainWindow"
FontFamily="Microsoft YaHei"
WindowStartupLocation="CenterScreen"
WindowState="Maximized" d:DesignWidth="1200" d:DesignHeight="900"
>
<Window.Background>
<ImageBrush ImageSource="/templates/image/login-background.png" />
</Window.Background>
<Border Margin="5" Background="Transparent">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="2*"/>
<RowDefinition/>
</Grid.RowDefinitions>
<UniformGrid Grid.Row="0">
<StackPanel HorizontalAlignment="Left">
<!--<Image Source="/Assets/Images/Newlog.png" Width="100" />-->
</StackPanel>
</UniformGrid>
<UniformGrid Grid.Row="1" Margin="0 10">
<Border BorderThickness="4" CornerRadius="5" x:Name="DialogHost" Width="400" Height="350" VerticalAlignment="Center" HorizontalAlignment="Center" >
<StackPanel Background="White">
<ComboBox Margin="0 50 0 0" BorderThickness="1" FontSize="18"
x:Name="selectTeamComboBox" ItemsSource="{Binding TeamMembersList}"
Width="300"
materialDesign:HintAssist.Hint="班组"
SelectedValuePath="TeamCode"
DisplayMemberPath="TeamName"
BorderBrush="#DCDCDC"
Style="{StaticResource MaterialDesignOutlinedComboBox}">
</ComboBox>
<TextBox Margin="0 10 0 0"
x:Name="txtUserName"
Width="300"
FontSize="18"
BorderBrush="#DCDCDC"
materialDesign:HintAssist.Hint="用户名"
BorderThickness="1"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
<PasswordBox Margin="0 10 0 0" Width="300" FontSize="18" x:Name="txtPassword"
materialDesign:HintAssist.Hint="密码" BorderThickness="1" BorderBrush="#DCDCDC"
Style="{StaticResource MaterialDesignOutlinedPasswordBox}" />
<Button Margin="0 20 0 0"
x:Name="loginBtn"
Width="300"
Height="53"
BorderBrush="Transparent"
Command="{Binding LoginCommand}" Click="loginBtn_Click"
materialDesign:ButtonAssist.CornerRadius="10" Background="#4285DE" Foreground="#DDFFFFFF"
Content="登录" />
</StackPanel>
</Border>
</UniformGrid>
<UniformGrid Grid.Row="2">
</UniformGrid>
</Grid>
</Border>
</Window>

@ -0,0 +1,72 @@
using Aucma.Scada.Model.domain;
using Aucma.Scada.UI.viewModel;
using HighWayIot.Common;
using System;
using System.Windows;
namespace Aucma.Scada.UI
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class LoginPageView : Window
{
private static readonly Lazy<LoginPageView> _instance = new Lazy<LoginPageView>(() => new LoginPageView());
public static LoginPageView Instance => _instance.Value;
LoginPageViewModel loginViewModel = new LoginPageViewModel();
public LoginPageView()
{
InitializeComponent();
this.DataContext = loginViewModel;
Closing += LoginPageView_Closing; // 订阅窗口关闭事件
}
private void LoginPageView_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
System.Environment.Exit(0);
}
private void loginBtn_Click(object sender, RoutedEventArgs e)
{
string userName = txtUserName.Text;
string passWord = txtPassword.Password;
BaseTeamMembers teamMembers = (BaseTeamMembers)this.selectTeamComboBox.SelectedItem;
if (teamMembers == null)
{
MessageBox.Show("请选择班组!", "系统提醒");
return;
}
// 非空校验,账号密码正则校验
if (string.IsNullOrWhiteSpace(userName))
{
MessageBox.Show("用户名不可为空!", "系统提醒");
return;
}
if (string.IsNullOrWhiteSpace(passWord))
{
MessageBox.Show("密码不可为空!", "系统提醒");
return;
}
// 登录校验
txtUserName.Text = "";
txtPassword.Password = "";
loginViewModel.Login(teamMembers, userName, passWord, this);
}
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
// 弹出系统键盘
OSKHelper.OpenOsk();
}
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
// 隐藏系统键盘
OSKHelper.CloseOsk();
}
}
}

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Aucma.Scada.UI" FontFamily="Microsoft YaHei" xmlns:local="clr-namespace:Aucma.Scada.UI" FontFamily="Microsoft YaHei"
WindowStartupLocation="CenterScreen" WindowStartupLocation="CenterScreen"
mc:Ignorable="d" mc:Ignorable="d" Name="window"
Title="SCADA" Height="1080" Width="1920" Icon="Icon.png" Title="SCADA" Height="1080" Width="1920" Icon="Icon.png"
WindowState="Maximized" WindowStyle="None" ResizeMode="NoResize"> WindowState="Maximized" WindowStyle="None" ResizeMode="NoResize">
<Window.Background> <Window.Background>
@ -29,7 +29,7 @@
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/> <ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/> <ColumnDefinition Width="7*"/>
<ColumnDefinition Width="2*"/> <ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<!--<StackPanel Grid.Row="0" > <!--<StackPanel Grid.Row="0" >
--> -->
@ -54,21 +54,17 @@
<TextBlock Text="澳柯玛生产控制系统" FontSize="42" Foreground="White" FontWeight="Bold"/> <TextBlock Text="澳柯玛生产控制系统" FontSize="42" Foreground="White" FontWeight="Bold"/>
</StackPanel> </StackPanel>
<StackPanel Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Right"> <StackPanel Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0 20 0 0" >
<Grid> <Grid>
<!--<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>-->
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="*"/> <RowDefinition/>
<RowDefinition Height="*"/> <RowDefinition/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding ShiftStr}" FontSize="25" Foreground="White" FontWeight="Bold" Margin="0,0,30,0"/> <StackPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Grid.Row="1" Text="{Binding CurrentDateTime}" FontSize="20" Foreground="White" FontWeight="Bold" Margin="0,0,30,0"/> <TextBlock Grid.Column="0" Text="{Binding TeamName}" FontSize="20" Foreground="White" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<!--<TextBlock Grid.Column="1" Text="|" FontSize="25" Foreground="White" FontWeight="Bold" Margin="0,0,30,0"/> <TextBlock Grid.Column="1" Text="{Binding CurrentDateTime}" FontSize="18" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<TextBlock Grid.Column="2" Text="SCADA" FontSize="25" Foreground="White" FontWeight="Bold" Margin="0,0,10,0"/>-->
</StackPanel>
</Grid> </Grid>
</StackPanel> </StackPanel>
</Grid> </Grid>
@ -92,8 +88,8 @@
<!--<Button Content="日 志" x:Name="logInfo" Command="{Binding ControlOnClickCommand}" CommandParameter="{Binding Name,ElementName=logInfo}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="0,0,10,0"/>--> <!--<Button Content="日 志" x:Name="logInfo" Command="{Binding ControlOnClickCommand}" CommandParameter="{Binding Name,ElementName=logInfo}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="0,0,10,0"/>-->
<!--<Button Content="记 录" x:Name="record" Command="{Binding ControlOnClickCommand}" CommandParameter="{Binding Name,ElementName=record}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="0,0,10,0"/>--> <!--<Button Content="记 录" x:Name="record" Command="{Binding ControlOnClickCommand}" CommandParameter="{Binding Name,ElementName=record}" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="0,0,10,0"/>-->
<Button Content="键 盘" Command="{Binding OpenSystemKeyboardCommand}" Style="{StaticResource BUTTON_AGREE}" Width="80" Height="40" Background="#4285DE" BorderBrush="#FF36B5C1" Margin="5 0" FontSize="17"/> <Button Content="键 盘" Command="{Binding OpenSystemKeyboardCommand}" Style="{StaticResource BUTTON_AGREE}" Width="80" Height="40" Background="#4285DE" BorderBrush="#FF36B5C1" Margin="5 0" FontSize="17"/>
<Button Content="最小化" x:Name="Minimized" Command="{Binding FormControlCommand}" CommandParameter="{Binding Name,ElementName=Minimized}" Style="{StaticResource BUTTON_AGREE}" Width="80" Height="40" Background="#FF9900" BorderBrush="#FF9900" Margin="5 0" FontSize="17"/> <Button Content="最小化" x:Name="Minimized" Command="{Binding MinCommand}" CommandParameter="{Binding ElementName=window}" Style="{StaticResource BUTTON_AGREE}" Width="80" Height="40" Background="#FF9900" BorderBrush="#FF9900" Margin="5 0" FontSize="17"/>
<Button Content="退 出" x:Name="Exit" Command="{Binding FormControlCommand}" CommandParameter="{Binding Name,ElementName=Exit}" Style="{StaticResource BUTTON_AGREE}" Width="80" Height="40" Background="#FF0033" BorderBrush="#FF0033" Margin="5 0" FontSize="17"/> <Button Content="退 出" x:Name="Exit" Command="{Binding CloseCommand}" CommandParameter="{Binding ElementName=window}" Style="{StaticResource BUTTON_AGREE}" Width="80" Height="40" Background="#FF0033" BorderBrush="#FF0033" Margin="5 0" FontSize="17"/>
</StackPanel> </StackPanel>
<StackPanel Height="50" Orientation="Horizontal" HorizontalAlignment="Right"> <StackPanel Height="50" Orientation="Horizontal" HorizontalAlignment="Right">

@ -1,19 +1,22 @@
using Aucma.Scada.UI.viewModel; using Aucma.Scada.UI.viewModel;
using System.Windows; using System;
namespace Aucma.Scada.UI namespace Aucma.Scada.UI
{ {
/// <summary> /// <summary>
/// MainWindow.xaml 的交互逻辑 /// MainWindow.xaml 的交互逻辑
/// </summary> /// </summary>
public partial class MainWindow : Window public partial class MainWindow
{ {
public MainWindow() private static readonly Lazy<MainWindow> _instance = new Lazy<MainWindow>(() => new MainWindow());
public static MainWindow Instance => _instance.Value;
private MainWindow()
{ {
InitializeComponent(); InitializeComponent();
MainViewModel mainViewModel = new MainViewModel(); MainViewModel mainViewModel = new MainViewModel();
this.DataContext = mainViewModel; this.DataContext = mainViewModel;
} }
} }
} }

@ -0,0 +1,21 @@
namespace Aucma.Scada.UI.Model
{
/**
*
* */
public class Result
{
/// <summary>
/// 返回结果
/// </summary>
public string msg { get; set; }
/// <summary>
/// 返回状态
/// </summary>
public int code { get; set; }
/// <summary>
/// 返回令牌
/// </summary>
public string token { get; set; }
}
}

@ -1,10 +1,4 @@
using System; namespace Aucma.Scada.UI.Model
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Aucma.Scada.UI.Model
{ {
public class typeGridModel public class typeGridModel
{ {

@ -1,18 +1,6 @@
using Aucma.Scada.Model.domain; using Aucma.Scada.Model.domain;
using Aucma.Scada.UI.viewModel.AssemblyPlan; using Aucma.Scada.UI.viewModel.AssemblyPlan;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace Aucma.Scada.UI.Page.AssemblyPlan namespace Aucma.Scada.UI.Page.AssemblyPlan
{ {

@ -1,18 +1,5 @@
using Aucma.Scada.UI.viewModel.AssemblyPlan; using Aucma.Scada.UI.viewModel.AssemblyPlan;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace Aucma.Scada.UI.Page.AssemblyPlan namespace Aucma.Scada.UI.Page.AssemblyPlan
{ {

@ -1,6 +1,5 @@
using Aucma.Scada.Business; using Aucma.Scada.Business;
using Aucma.Scada.UI.viewModel.InStoreInfo; using Aucma.Scada.UI.viewModel.InStoreInfo;
using HighWayIot.Config;
using System; using System;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Windows; using System.Windows;
@ -59,7 +58,8 @@ namespace Aucma.Scada.UI.Page.InStoreInfo
MessageBox.Show("请输入1-9的货道编号!"); MessageBox.Show("请输入1-9的货道编号!");
} }
} }
}catch (Exception ex) }
catch (Exception ex)
{ {
} }

@ -1,19 +1,5 @@
using Aucma.Scada.UI.viewModel; using Aucma.Scada.UI.viewModel.InventoryInfo;
using Aucma.Scada.UI.viewModel.InventoryInfo;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Aucma.Scada.UI.Page.InventoryInfo namespace Aucma.Scada.UI.Page.InventoryInfo
{ {

@ -1,17 +1,5 @@
using Aucma.Scada.UI.viewModel.InventoryInfo; using Aucma.Scada.UI.viewModel.InventoryInfo;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace Aucma.Scada.UI.Page.InventoryInfo namespace Aucma.Scada.UI.Page.InventoryInfo
{ {

@ -1,19 +1,6 @@
using Aucma.Scada.UI.viewModel.AssemblyPlan; using Aucma.Scada.UI.viewModel.InventoryInfo;
using Aucma.Scada.UI.viewModel.InventoryInfo;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Aucma.Scada.UI.Page.InventoryInfo namespace Aucma.Scada.UI.Page.InventoryInfo
{ {
@ -22,11 +9,11 @@ namespace Aucma.Scada.UI.Page.InventoryInfo
/// </summary> /// </summary>
public partial class SelectType : Window public partial class SelectType : Window
{ {
private SelectTypeViewModel viewModel = null; private SelectTypeViewModel viewModel = null;
public SelectType(int ncount,string spaceCode) public SelectType(int ncount, string spaceCode)
{ {
InitializeComponent(); InitializeComponent();
viewModel = new SelectTypeViewModel(ncount,spaceCode); viewModel = new SelectTypeViewModel(ncount, spaceCode);
this.DataContext = viewModel; this.DataContext = viewModel;
viewModel.closeEvent += closeWindow; viewModel.closeEvent += closeWindow;
} }
@ -38,7 +25,7 @@ namespace Aucma.Scada.UI.Page.InventoryInfo
private void closeWindow() private void closeWindow()
{ {
this.Close(); this.Close();
} }
} }
} }

@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<runtime> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" /> <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0" /> <bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" /> <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.116.0" newVersion="1.0.116.0" /> <bindingRedirect oldVersion="0.0.0.0-1.0.116.0" newVersion="1.0.116.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.122.21.1" newVersion="4.122.21.1" /> <bindingRedirect oldVersion="0.0.0.0-4.122.21.1" newVersion="4.122.21.1" />
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
</configuration> </configuration>

@ -21,12 +21,32 @@
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.122.21.1" newVersion="4.122.21.1" /> <bindingRedirect oldVersion="0.0.0.0-4.122.21.1" newVersion="4.122.21.1" />
</dependentAssembly> </dependentAssembly>
</assemblyBinding> <dependentAssembly>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.4" newVersion="7.0.0.4" />
</dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" /> <bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly> </dependentAssembly>
<!--<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>-->
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
</configuration> </configuration>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save