写入plc信息

20260122
1 year ago
parent d1ac75ddec
commit a1de882869

@ -22,7 +22,7 @@ namespace CommonFunc.Tools
{
int Result;
int Rack = 0;
int Slot = 0;
int Slot = 1;
Result = Client.ConnectTo(ipaddress, Rack, Slot);
if (Result == 0)

@ -3,6 +3,7 @@ using CommonFunc.Tools;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -273,8 +274,7 @@ where res.taskcode = '0' and equipmentCode = 'C6' and res.OrderCode is not null
('{CommonFunc.Common.GetUUID()}', '{LoginUser.UserId}', '{LoginUser.UserName}', '{type}', GetDate(),
'-', 'w2', '{status}', '{deviceCode}','{remark}','{orderCode}');";
}
string sql = $@"update pro_order_workorder set status = '{status}' where workorder_code = '{orderCode}'";
sqlList.Add(sql);
sqlList.Add(logSql);
bool issucc = Utils.netClientDBHelper.executeBatchSql(sqlList);
@ -1222,7 +1222,7 @@ where machine_code = 'X1' and bind_status = '0' order by update_time DESC";
string date = DateTime.Parse(workDate).ToString("yyyy-MM-dd");
string sql = $@"select workorder_id,product_name,product_code
from pro_order_workorder
where prod_line_code like '%{deviceCode}%' and product_date='{date}' and parent_order='0' order by parent_order";
where prod_line_code like '%{deviceCode}%' and product_date='{date}' and status='w2' and del_flag='0' and parent_order='0' order by parent_order";
//string sql = $@"select workorder_id,product_name
// from pro_order_workorder
// where prod_line_code like '%{deviceCode}% and status='w2''";
@ -1561,7 +1561,7 @@ where machine_code = 'X1' and bind_status = '0' order by update_time DESC";
return null;
}
public void UpdateMesTableSelf(string id, string text, string text1,string isFinal)
public void UpdateMesTableSelf(string id, string text, string text1, string isFinal)
{
string sql = $@"update [dbo].[mes_table_self] set bz='{text}',create_by='{text1}',is_final='{isFinal}' where id='{id}'";
Utils.netClientDBHelper.executeUpdate(sql);
@ -1569,7 +1569,8 @@ where machine_code = 'X1' and bind_status = '0' order by update_time DESC";
public List<string> GetBatchCode(string workId)
{
string sql = $@"select batch_code from pro_order_workorder_batch where workorder_id='{workId}'";
//string sql = $@"select batch_code from pro_order_workorder_batch where workorder_id='{workId}'";
string sql = $@"select a.batch_code from pro_order_workorder_batch a join pro_order_workorder b on a.workorder_id=b.workorder_id where b.workorder_id='{workId}' and b.status='w2' and a.del_flag='0'";
DataSet ds = Utils.netClientDBHelper.getDataSet(sql);
List<string> list = new List<string>();
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
@ -1589,18 +1590,110 @@ where machine_code = 'X1' and bind_status = '0' order by update_time DESC";
return Utils.netClientDBHelper.executeUpdate(sql);
}
public string GetProOrderWorkorderBatchStatusById(string workorderId,string batch_code)
public string GetProOrderWorkorderBatchStatusById(string workorderId, string batch_code)
{
string sql = $@"select qc_status from [dbo].[pro_order_workorder_batch] where workorder_id='{workorderId}' and batch_code='{batch_code}' and del_flag='0'";
DataSet ds = Utils.netClientDBHelper.getDataSet(sql);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0]["qc_status"].ToString();
}else
}
else
{
return "";
}
}
public DataTable GetBaseProduct(string productCode)
{
string sql = $@"select product_desc_en,box_type,umrez from base_product where product_code='{productCode}'";
DataSet ds = Utils.netClientDBHelper.getDataSet(sql);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0];
}
return null;
}
public DataTable GetBaseProductAtt(string productCode)
{
string adjustedProductCode = productCode.Length > 7 ? productCode.Substring(7) : productCode;
string sql = $@"select pack_type from base_product_attached where product_code='{adjustedProductCode}'";
DataSet ds = Utils.netClientDBHelper.getDataSet(sql);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0];
}
return null;
}
public bool UpdateProWorkBatchInWork(string lineCode, string batchCode, string workorderCode, string productCode, string productName, string productdescen, string boxType, string packType, string umrez, string status, string productDate)
{
string sql = $@"update pro_workbatch_inwork set workorder_code='{workorderCode}',batch='{batchCode}',product_code='{productCode}',status='{status}',product_name='{productName}',product_name_en='{productdescen}',box_type='{boxType}',pack_type='{packType}',umrez='{umrez}',product_date='{productDate}' where line_code='{lineCode}' ";
return Utils.netClientDBHelper.executeUpdate(sql) > 0;
}
public DataTable GetProductSize(string productCode)
{
string sql = $"SELECT length,width,height from base_product where product_code='{productCode}'";
DataSet ds = Utils.netClientDBHelper.getDataSet(sql);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0];
}
return null;
}
public DataTable GetWcsPlcPoint(string[] plcPointNo, string equip)
{
string plcPointNoStr = "";
foreach (string item in plcPointNo)
{
plcPointNoStr += $"'{item}',";
}
plcPointNoStr = plcPointNoStr.TrimEnd(',');
string sql = $"SELECT * FROM wcs_plc_point WHERE plc_point_no IN ({plcPointNoStr}) and equip='{equip}'";
DataSet ds = Utils.netClientDBHelper.getDataSet(sql);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0];
}
return null;
}
public bool UpdateProWorkBatchInWorkStatus(string lineCode, string status)
{
string sql = $@"update pro_workbatch_inwork set status='{status}' where line_code='{lineCode}' ";
return Utils.netClientDBHelper.executeUpdate(sql) > 0;
}
public bool UpdateProWorkBatchInWorkBatchCode(string lineCode, string batchCode, string status,string productCode,string productName)
{
string sql = $@"update pro_workbatch_inwork set batch='{batchCode}',product_code='{productCode}',product_name='{productName}',status='{status}' where line_code='{lineCode}' ";
return Utils.netClientDBHelper.executeUpdate(sql) > 0;
}
public DataTable GetMesBoxInfo(string box_type)
{
string sql = $"select * from mes_box where box_type='{box_type}' and del_flag='0'";
DataSet ds = Utils.netClientDBHelper.getDataSet(sql);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0];
}
return null;
}
public string GetWorkOrderParentStatus(string workorderCode)
{
string sql = $@"select status from pro_order_workorder where workorder_code='{workorderCode}' and parent_order='0'";
DataSet ds = Utils.netClientDBHelper.getDataSet(sql);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0]["status"].ToString();
}
return "";
}
}
public class MesTableSelfDetialModel
{

@ -752,11 +752,27 @@ where product_code = '{productCode.Replace("0000000", "")}' and line_code = '{de
return null;
}
public DataTable GetOrderInfo(string workorderID)
{
string sql = $@"select workorder.factory_code,workorder.product_date as plan_time, workorder.workorder_id,workorder.workorder_code, product_code,product_name,
product_spc,shifts.shift_desc,prod_line_code,workorder.status,route_code,quantity_split,unit,workorder.shift_id,workorder.belong_work_order
from pro_order_workorder workorder
left JOIN base_shifts_t shifts on workorder.shift_id = shifts.shift_id
where 1=1 and
workorder.workorder_code ='{workorderID}'";
DataSet dtset = Utils.netClientDBHelper.getDataSet(sql);
if (dtset != null && dtset.Tables.Count > 0 && dtset.Tables[0].Rows.Count > 0)
{
return dtset.Tables[0];
}
return null;
}
public DataTable GetSubOrderInfo(string workorderID)
{
string sql = $@"select workorder.factory_code,workorder.product_date as plan_time, workorder.workorder_id,workorder.workorder_code, product_code,product_name,
product_spc,shifts.shift_desc,prod_line_code,workorder.status,route_code,quantity_split,unit,workorder.shift_id
product_spc,shifts.shift_desc,prod_line_code,workorder.status,route_code,quantity_split,unit,workorder.shift_id,workorder.belong_work_order
from pro_order_workorder workorder
left JOIN base_shifts_t shifts on workorder.shift_id = shifts.shift_id
where 1=1 and
@ -1113,7 +1129,17 @@ where detail.parent_work_order = '{processid}'"; //where CONVERT(VARCHAR(10), w
return Utils.netClientDBHelper.executeUpdate(sql1) > 0 ? true : false;
}
/// <summary>
/// 更新湿料计划同步状态、工单状态
/// </summary>
/// <returns></returns>
public bool UpdateSycnFlagByBelongWorkOrder(string belongWorkOrderId, string deviceCode, string user, string status)
{
string sql1 = $@"update pro_order_workorder set status = '{status}',workorder_name = '{deviceCode}', update_by = '{LoginUser.UserName}',attr3='{user}',update_time = GETDATE(),start_work_time = GETDATE() where belong_work_order = '{belongWorkOrderId}' ";
LogHelper.instance.log.Info("开始工单SQl:" + sql1);
return Utils.netClientDBHelper.executeUpdate(sql1) > 0 ? true : false;
}
/// <summary>
/// 删除薪酬录入
/// </summary>
@ -1168,7 +1194,11 @@ where detail.parent_work_order = '{processid}'"; //where CONVERT(VARCHAR(10), w
('{CommonFunc.Common.GetUUID()}', '{LoginUser.UserId}', '{LoginUser.UserName}', '{type}', GetDate(),
'', 'w2', '{status}', '{deviceCode}','{remark}','{orderCode}','{materialCode}','{materialDesc}','{LoginUser.Version}','{LoginUser.CurrDeviceIP}');";
}
//if (status == "w3")
//{
// string sql = $@"update pro_order_workorder set status = '{status}',update_time = GETDATE(),end_work_time = GETDATE() where workorder_code = '{orderCode}'";
// sqlList.Add(sql);
//}
sqlList.Add(logSql);
bool issucc = Utils.netClientDBHelper.executeBatchSql(sqlList);

@ -10,9 +10,9 @@
<!--车间编码-->
<add key="SiteCode" value="999" />
<!--设备编码-->
<add key="DeviceCode" value="C7" />
<add key="DeviceCode" value="C4" />
<!--上位机类型 0:工单准备1成型机\shoupei2烘房,3:人员登录-->
<add key="ClientMode" value="0" />
<add key="ClientMode" value="1" />
<add key="SerialPort" value="COM5" />
<add key="DryingHouseList" value="H16,H17,H18"/>
<!--线体编码-->

@ -37,7 +37,7 @@ namespace XGL
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
//Task线程内未捕获异常处理事件
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;//Task异常
Common.ApplicationDicStr = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
Common.ThriftConfigIp = ConfigurationManager.AppSettings["thriftIp"];
Common.ThriftConfigPort = ConfigurationManager.AppSettings["thriftPort"];

@ -97,13 +97,21 @@ namespace XGL
private void InitVersion()
{
string fileName = "vsion.txt"; // 指定要操作的文件名
string filePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName); // 构建完整的文件路径
try
{
string fileName = "vsion.txt"; // 指定要操作的文件名
string filePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName); // 构建完整的文件路径
string fileContent = File.ReadAllText(filePath);
string fileContent = File.ReadAllText(filePath);
lbVersion.Content = fileContent;
LoginUser.Version = fileContent;
lbVersion.Content = fileContent;
LoginUser.Version = fileContent;
}
catch
{
}
}
private void btnlogin_Click(object sender, RoutedEventArgs e)

@ -3,15 +3,15 @@
<Recommand>强烈建议:对数据库以及本软件的参数更改,不要在此页进行.可以通过系统配置页进行更新.</Recommand>
<!--服务器上的业务数据库--><!--
-->
<MESNetClientConnectionString>vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlF0tM4FO8qPh090fSbocpFrq1jWXNjwNnL+PpPtMzMa3twenC59knc+hzG9+/BpVUziKe0re5+K7EarPL+O+z1yYkea4KSxvd0pYaBws8NBUfRakxq8PBtNc1SFWCuPGjfGL/ZHZr/yKO3oLzGk4KHKBgHdnI182Gw68ADwmuC5BzxvlYPefyby8TkSEmemNvt81w7QBmU5M=</MESNetClientConnectionString>
<!--<MESNetClientConnectionString>vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlF0tM4FO8qPh090fSbocpFrq1jWXNjwNnL+PpPtMzMa3twenC59knc+hzG9+/BpVUziKe0re5+K7EarPL+O+z1yYkea4KSxvd0pYaBws8NBUfRakxq8PBtNc1SFWCuPGjfGL/ZHZr/yKO3oLzGk4KHKBgHdnI182Gw68ADwmuC5BzxvlYPefyby8TkSEmemNvt81w7QBmU5M=</MESNetClientConnectionString>-->
<!--
--><!--云数据库--><!--
-->
<CloudConnectionString>vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlF0tM4FO8qPh090fSbocpFrq1jWXNjwNnXgKYRJ9zN5oAHgVngDpmr/dw8Hc1dHuNE73NlxQdTq/+57SfWg+Ya5uD7N8RaXKNRAP0mCGTNtIXcAyKOR1JdH+n1t3euTba</CloudConnectionString>
<!--<CloudConnectionString>vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlF0tM4FO8qPh090fSbocpFrq1jWXNjwNnXgKYRJ9zN5oAHgVngDpmr/dw8Hc1dHuNE73NlxQdTq/+57SfWg+Ya5uD7N8RaXKNRAP0mCGTNtIXcAyKOR1JdH+n1t3euTba</CloudConnectionString>-->
<!--本地的业务数据库-->
<MESClientConnectionString>vadMWi9D6ZBkwIr78LoLmGwiSCvVnpY3nMB7IyQlxFiV2OD5s5WUgOabwGwWK3THofFvPL2rHpOvJVIvtz0oZU/NFQyT8KQlbk0rHjUXoU7wgRdUumDJ1RrSFmIjPm8S</MESClientConnectionString>
<!--榄菊业务数据库-->
<!--<MESNetClientConnectionString>vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlHbduXNDkc8suJwqe10me6ktk8XD3QU91w41/fcxqaq/+4SEgJrXDqR11H6yLI6j0e+twOEf+dgxO2izAFRQ8gHi3LlPP+MhoPB53b/3a/Jd77lDX8gemUvFsAcxEIF0V/c/nkoIAT6M+WIrSSS1icw6HuVSEjGl1zPqinhBhfvehu5cxP02aD/dmOZJEXtBdPUgLuwVFLRI=</MESNetClientConnectionString>-->
<MESNetClientConnectionString>vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlHbduXNDkc8suJwqe10me6ktk8XD3QU91w41/fcxqaq/+4SEgJrXDqR11H6yLI6j0e+twOEf+dgxO2izAFRQ8gHi3LlPP+MhoPB53b/3a/Jd77lDX8gemUvFsAcxEIF0V/c/nkoIAT6M+WIrSSS1icw6HuVSEjGl1zPqinhBhfvehu5cxP02aD/dmOZJEXtBdPUgLuwVFLRI=</MESNetClientConnectionString>
<!--榄菊云数据库-->
<!--<CloudConnectionString>vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlHbduXNDkc8suJwqe10me6ktk8XD3QU91ML11cYCqHcHmTXJFsNQamIbW3UEpkjgNPUcBwRfgP6AWftvk9YFyv7y7/6nzX/c+6z6xMDIdcjYVvfteU+7YtOQhJXTfF5ScosAA0GliBfD8dWAunW+ZCos5LemAj2xb2wvvCxlbnrof8IunWslCaBEAGrdC/KhE0qEfNbxydwc=</CloudConnectionString>-->
<CloudConnectionString>vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlHbduXNDkc8suJwqe10me6ktk8XD3QU91ML11cYCqHcHmTXJFsNQamIbW3UEpkjgNPUcBwRfgP6AWftvk9YFyv7y7/6nzX/c+6z6xMDIdcjYVvfteU+7YtOQhJXTfF5ScosAA0GliBfD8dWAunW+ZCos5LemAj2xb2wvvCxlbnrof8IunWslCaBEAGrdC/KhE0qEfNbxydwc=</CloudConnectionString>
</ConnectionConfig>

@ -10,7 +10,7 @@
<!--车间编码-->
<add key="SiteCode" value="1000" />
<!--设备编码-->
<add key="DeviceCode" value="XL01" />
<add key="DeviceCode" value="XL02" />
<!--上位机类型 0:工单准备1成型机\shoupei2烘房,3:人员登录,4:称重系统-->
<add key="ClientMode" value="1" />
@ -94,6 +94,10 @@
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.3.11" newVersion="1.3.3.11" />
</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>
</assemblyBinding>
</runtime>
</configuration>

@ -1,4 +1,5 @@
using CommonFunc;
using CentralControl.BaseData;
using CommonFunc;
using CommonFunc.Tools;
using System;
using System.Collections.Generic;
@ -158,6 +159,7 @@ namespace XGLFinishPro
private int LoginStatus = 0;
private int JudgeLogin()
{
DateTime dt1 = DateTime.Now;
try
{

@ -131,7 +131,7 @@ namespace XGLFinishPro.Tools
/// <param name="dOOnOff">启停状态</param>
public void DOControl(DOName dOName, DOOnOff dOOnOff)
{
//ComOn();
ComOn();
serialPort.Write(new byte[] { 0xE3, 0x01, 0x09, (byte)dOName, (byte)dOOnOff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0, 12);
}

@ -1,65 +1,92 @@
<Window x:Class="XGLFinishPro.Views.ExecReportWorkWin"
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:hc="https://handyorg.github.io/handycontrol"
xmlns:local="clr-namespace:XGLFinishPro.Views"
xmlns:convert="clr-namespace:XGLFinishPro.Tools"
mc:Ignorable="d"
Title="CheckUserWin" Height="750" Width="1350" WindowStartupLocation="CenterScreen" WindowStyle="None" Loaded="Window_Loaded">
<Window
x:Class="XGLFinishPro.Views.ExecReportWorkWin"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:convert="clr-namespace:XGLFinishPro.Tools"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:local="clr-namespace:XGLFinishPro.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="CheckUserWin"
Width="1350"
Height="750"
Loaded="Window_Loaded"
WindowStartupLocation="CenterScreen"
WindowStyle="None"
mc:Ignorable="d">
<Window.Resources>
<ResourceDictionary>
<!--ComboBox下拉按钮-->
<Style TargetType="ToggleButton" x:Key="ComboxStyleBtn">
<!-- ComboBox下拉按钮 -->
<Style x:Key="ComboxStyleBtn" TargetType="ToggleButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border x:Name="Back" Background="#F7FDF7" BorderThickness="1" BorderBrush="Transparent">
<Path Name="PathFill" Fill="Blue" Width="8" Height="6" StrokeThickness="0" Data="M5,0 L10,10 L0,10 z" RenderTransformOrigin="0.5,0.5" Stretch="Fill">
<Border
x:Name="Back"
Background="#F7FDF7"
BorderBrush="Transparent"
BorderThickness="1">
<Path
Name="PathFill"
Width="8"
Height="6"
Data="M5,0 L10,10 L0,10 z"
Fill="Blue"
RenderTransformOrigin="0.5,0.5"
Stretch="Fill"
StrokeThickness="0">
<Path.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="180"/>
<TranslateTransform/>
<ScaleTransform />
<SkewTransform />
<RotateTransform Angle="180" />
<TranslateTransform />
</TransformGroup>
</Path.RenderTransform>
</Path>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="PathFill" Property="Fill" Value="White"></Setter>
<Setter TargetName="Back" Property="Background" Value="#3697A4"></Setter>
<Setter TargetName="Back" Property="BorderBrush" Value="#3697A4"></Setter>
<Setter TargetName="PathFill" Property="Fill" Value="White" />
<Setter TargetName="Back" Property="Background" Value="#3697A4" />
<Setter TargetName="Back" Property="BorderBrush" Value="#3697A4" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="ComboBox" x:Key="ComboBoxStyle">
<Style x:Key="ComboBoxStyle" TargetType="ComboBox">
<Setter Property="ItemContainerStyle">
<Setter.Value>
<!--ComBoxItem #59CA4F #81D779-->
<!-- ComBoxItem #59CA4F #81D779 -->
<Style TargetType="ComboBoxItem">
<Setter Property="Height" Value="60"></Setter>
<Setter Property="MinHeight" Value="22"></Setter>
<Setter Property="MinWidth" Value="60"></Setter>
<Setter Property="Height" Value="60" />
<Setter Property="MinHeight" Value="22" />
<Setter Property="MinWidth" Value="60" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<Border Name="Back" Background="Transparent" CornerRadius="5,5,5,5"
RenderTransformOrigin="0.5,0.5" BorderThickness="0,0,0,0" BorderBrush="Blue" >
<ContentPresenter ContentSource="{Binding Source}" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5,0,0,0"></ContentPresenter>
<Border
Name="Back"
Background="Transparent"
BorderBrush="Blue"
BorderThickness="0,0,0,0"
CornerRadius="5,5,5,5"
RenderTransformOrigin="0.5,0.5">
<ContentPresenter
Margin="5,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
ContentSource="{Binding Source}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Back" Property="Background" Value="LightGray"></Setter>
<Setter TargetName="Back" Property="Background" Value="LightGray" />
</Trigger>
<Trigger Property="IsHighlighted" Value="True">
<Setter TargetName="Back" Property="Background" Value="LightGray"></Setter>
<Setter TargetName="Back" Property="Background" Value="LightGray" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
@ -73,24 +100,64 @@
<ControlTemplate TargetType="ComboBox">
<Grid Background="#F7FDF7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.7*"/>
<ColumnDefinition Width="0.3*" MaxWidth="30"/>
<ColumnDefinition Width="0.7*" />
<ColumnDefinition Width="0.3*" MaxWidth="30" />
</Grid.ColumnDefinitions>
<TextBox x:Name="PART_EditableTextBox" Grid.Column="0" IsReadOnly="{TemplateBinding IsReadOnly}" FontSize="18" VerticalContentAlignment="Center" Text="{TemplateBinding Text}"></TextBox>
<Border Grid.Column="0" BorderThickness="1,1,0,1" BorderBrush="LightGray" CornerRadius="1,0,0,1">
<TextBox
x:Name="PART_EditableTextBox"
Grid.Column="0"
VerticalContentAlignment="Center"
FontSize="18"
IsReadOnly="{TemplateBinding IsReadOnly}"
Text="{TemplateBinding Text}" />
<Border
Grid.Column="0"
BorderBrush="LightGray"
BorderThickness="1,1,0,1"
CornerRadius="1,0,0,1" />
<Border
Grid.Column="1"
BorderBrush="LightGray"
BorderThickness="0,1,1,1"
CornerRadius="0,1,1,0">
<ToggleButton
ClickMode="Press"
IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
Style="{StaticResource ComboxStyleBtn}" />
</Border>
<Border Grid.Column="1" BorderThickness="0,1,1,1" BorderBrush="LightGray" CornerRadius="0,1,1,0">
<ToggleButton Style="{StaticResource ComboxStyleBtn}" IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press"></ToggleButton>
</Border>
<Popup IsOpen="{TemplateBinding IsDropDownOpen}" Placement="Bottom" x:Name="Popup" Focusable="False" AllowsTransparency="True" PopupAnimation="Slide">
<Border CornerRadius="1" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{TemplateBinding ActualWidth}" x:Name="DropDown" SnapsToDevicePixels="True">
<Popup
x:Name="Popup"
AllowsTransparency="True"
Focusable="False"
IsOpen="{TemplateBinding IsDropDownOpen}"
Placement="Bottom"
PopupAnimation="Slide">
<Border
x:Name="DropDown"
MinWidth="{TemplateBinding ActualWidth}"
MaxHeight="{TemplateBinding MaxDropDownHeight}"
CornerRadius="1"
SnapsToDevicePixels="True">
<Border.Effect>
<DropShadowEffect Color="Black" BlurRadius="2" ShadowDepth="0" Opacity="0.5"/>
<DropShadowEffect
BlurRadius="2"
Opacity="0.5"
ShadowDepth="0"
Color="Black" />
</Border.Effect>
<ScrollViewer Margin="4,6,4,6" Style="{DynamicResource ScrollViewerStyle}" MaxHeight="{TemplateBinding MaxDropDownHeight}" SnapsToDevicePixels="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" CanContentScroll="True">
<!-- StackPanel 用于显示子级,方法是将 IsItemsHost 设置为 True -->
<StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" Background="White"/>
<ScrollViewer
MaxHeight="{TemplateBinding MaxDropDownHeight}"
Margin="4,6,4,6"
CanContentScroll="True"
HorizontalScrollBarVisibility="Auto"
SnapsToDevicePixels="True"
Style="{DynamicResource ScrollViewerStyle}"
VerticalScrollBarVisibility="Auto">
<!-- StackPanel 用于显示子级,方法是将 IsItemsHost 设置为 True -->
<StackPanel
Background="White"
IsItemsHost="True"
KeyboardNavigation.DirectionalNavigation="Contained" />
</ScrollViewer>
</Border>
</Popup>
@ -100,14 +167,17 @@
</Setter>
</Style>
<Style TargetType="TextBox">
<Setter Property="Height" Value="40"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="Background" Value="Red"></Setter>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template" >
<Setter Property="Height" Value="40" />
<Setter Property="Margin" Value="5" />
<Setter Property="Background" Value="Red" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border BorderThickness="2" CornerRadius="8" Background="#f2f3f5">
<Border
Background="#f2f3f5"
BorderThickness="2"
CornerRadius="8">
<ScrollViewer x:Name="PART_ContentHost" />
</Border>
</ControlTemplate>
@ -115,50 +185,54 @@
</Setter>
</Style>
<Style TargetType="Label">
<Setter Property="Margin" Value="15,0,0,0"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Margin" Value="15,0,0,0" />
<Setter Property="Foreground" Value="Black" />
</Style>
<Style x:Key="CustomCellStyle" TargetType="DataGridCell">
<Setter Property="Foreground" Value="Black" />
<Setter Property="TextBlock.TextAlignment" Value="Center" />
<Setter Property="TextBlock.FontSize" Value="22" />
<Setter Property="BorderThickness" Value="0 0 1 1" />
<Setter Property="BorderThickness" Value="0,0,1,1" />
</Style>
<SolidColorBrush x:Key="EvenRowBackground" Color="#E0E0E0"/>
<SolidColorBrush x:Key="OddRowBackground" Color="#FFFFFF"/>
<SolidColorBrush x:Key="EvenRowBackground" Color="#E0E0E0" />
<SolidColorBrush x:Key="OddRowBackground" Color="#FFFFFF" />
<Style x:Key="DataGridRowStyle" TargetType="DataGridRow">
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="BorderBrush" Value="LightGray"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="{StaticResource EvenRowBackground}"/>
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="BorderBrush" Value="LightGray" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Background" Value="{StaticResource EvenRowBackground}" />
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="{StaticResource OddRowBackground}"/>
<Setter Property="Background" Value="{StaticResource OddRowBackground}" />
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="btnKey" TargetType="Button">
<Setter Property="Width" Value="120"/>
<Setter Property="Height" Value="43"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontSize" Value="22"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Right"/>
<Setter Property="Template" >
<Setter Property="Width" Value="120" />
<Setter Property="Height" Value="43" />
<Setter Property="Foreground" Value="White" />
<Setter Property="FontSize" Value="22" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Back" Background="#2B7EE6" BorderThickness="2" CornerRadius="10">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Border
x:Name="Back"
Background="#2B7EE6"
BorderThickness="2"
CornerRadius="10">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Back" Property="Background" Value="#3697A4"></Setter>
<Setter TargetName="Back" Property="BorderBrush" Value="#3697A4"></Setter>
<Setter TargetName="Back" Property="Background" Value="#3697A4" />
<Setter TargetName="Back" Property="BorderBrush" Value="#3697A4" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
@ -167,23 +241,27 @@
</Style>
<Style x:Key="btnCancelKey" TargetType="Button">
<Setter Property="Width" Value="120"/>
<Setter Property="Height" Value="43"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontSize" Value="22"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Right"/>
<Setter Property="Template" >
<Setter Property="Width" Value="120" />
<Setter Property="Height" Value="43" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="FontSize" Value="22" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Back" Background="#f2f3f5" BorderThickness="2" CornerRadius="10">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Border
x:Name="Back"
Background="#f2f3f5"
BorderThickness="2"
CornerRadius="10">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Back" Property="Background" Value="#3697A4"></Setter>
<Setter TargetName="Back" Property="BorderBrush" Value="#3697A4"></Setter>
<Setter TargetName="Back" Property="Background" Value="#3697A4" />
<Setter TargetName="Back" Property="BorderBrush" Value="#3697A4" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
@ -193,56 +271,147 @@
</Style>
</ResourceDictionary>
</Window.Resources>
<Grid >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="200"/>
<RowDefinition Height="500"/>
<RowDefinition Height="40" />
<RowDefinition Height="200" />
<RowDefinition Height="500" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.ColumnSpan="2" x:Name="lbTitle" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black" FontSize="24" Content="报工" FontWeight="Bold"></Label>
<ScrollViewer x:Name="scrollViewer" Grid.Row="1" Grid.ColumnSpan="2" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Label
x:Name="lbTitle"
Grid.Row="0"
Grid.ColumnSpan="2"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Content="报工"
FontSize="24"
FontWeight="Bold"
Foreground="Black" />
<ScrollViewer
x:Name="scrollViewer"
Grid.Row="1"
Grid.ColumnSpan="2"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<Grid x:Name="MyGrid" Grid.Row="1" Grid.ColumnSpan="2">
<Grid
x:Name="MyGrid"
Grid.Row="1"
Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Row="1">
<Label Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Content="当前工单:"></Label>
<Label x:Name="lbCurrOrderNo" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Content="202311010001" Width="260"></Label>
<StackPanel
Grid.Row="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Orientation="Horizontal">
<Label
Grid.Row="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Content="当前工单:"
FontSize="24" />
<Label
x:Name="lbCurrOrderNo"
Grid.Row="1"
Width="260"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Content="202311010001"
FontSize="24" />
</StackPanel>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Row="1" Grid.Column="1">
<Label Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Content="报工数量:"></Label>
<TextBox x:Name="txtQuantity" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Width="260" TextChanged="txtQuantity_TextChanged"></TextBox>
<StackPanel
Grid.Row="1"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Orientation="Horizontal">
<Label
Grid.Row="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Content="报工数量:"
FontSize="24" />
<TextBox
x:Name="txtQuantity"
Grid.Row="1"
Width="260"
HorizontalAlignment="Left"
VerticalAlignment="Center"
FontSize="24"
TextChanged="txtQuantity_TextChanged" />
<Button
Grid.Row="2"
Grid.Column="1"
Margin="20,0"
Click="ReadOrder_Click"
Content="获取"
Style="{StaticResource btnKey}"
Visibility="Collapsed" />
</StackPanel>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Row="2">
<Label Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Content="辅助工时:"></Label>
<TextBox x:Name="txtWorkTime" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Width="260" TextChanged="txtWorkTime_TextChanged"></TextBox>
<StackPanel
Grid.Row="2"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Orientation="Horizontal">
<Label
Grid.Row="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Content="辅助工时:"
FontSize="24" />
<TextBox
x:Name="txtWorkTime"
Grid.Row="1"
Width="260"
HorizontalAlignment="Left"
VerticalAlignment="Center"
FontSize="24"
TextChanged="txtWorkTime_TextChanged" />
</StackPanel>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Row="2" Grid.Column="1">
<Label Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Content="辅助人数:"></Label>
<TextBox x:Name="txtUserCount" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Width="260" TextChanged="txtUserCount_TextChanged"></TextBox>
<StackPanel
Grid.Row="2"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Orientation="Horizontal">
<Label
Grid.Row="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Content="辅助人数:"
FontSize="24" />
<TextBox
x:Name="txtUserCount"
Grid.Row="1"
Width="260"
HorizontalAlignment="Left"
VerticalAlignment="Center"
FontSize="24"
TextChanged="txtUserCount_TextChanged" />
</StackPanel>
@ -251,15 +420,58 @@
<Label Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Content="母单人数:"></Label>
<TextBox x:Name="txtFOUserCount" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Width="260" TextChanged="txtFOUserCount_TextChanged"></TextBox>
</StackPanel>-->
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Row="13" Grid.Column="0" Grid.ColumnSpan="2">
<Label Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Content="成本中心:"></Label>
<ComboBox x:Name="comboBoxCostCenter" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Width="360" Height="50"
Style="{StaticResource ComboBoxStyle}" SelectionChanged="comboBoxCostCenter_SelectionChanged"></ComboBox>
<StackPanel
Grid.Row="13"
Grid.Column="0"
Grid.ColumnSpan="2"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Orientation="Horizontal">
<Label
Grid.Row="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Content="成本中心:"
FontSize="24" />
<ComboBox
x:Name="comboBoxCostCenter"
Grid.Row="1"
Width="360"
Height="50"
HorizontalAlignment="Left"
VerticalAlignment="Center"
FontSize="24"
SelectionChanged="comboBoxCostCenter_SelectionChanged"
Style="{StaticResource ComboBoxStyle}" />
</StackPanel>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Row="13" Grid.Column="1" Grid.ColumnSpan="2">
<Label Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Content="批 次 号:"></Label>
<ComboBox x:Name="comboBoxBatch" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="24" Margin="2,5,0,0" Width="360" Height="50" Style="{StaticResource ComboBoxStyle}"></ComboBox>
<TextBlock Text="* 不选批次号则默认为该工单报工&#x0a;* 不选批次号则无法创建批次成品检验任务" Foreground="Red" VerticalAlignment="Center" TextWrapping="Wrap" />
<StackPanel
Grid.Row="13"
Grid.Column="1"
Grid.ColumnSpan="2"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Orientation="Horizontal">
<Label
Grid.Row="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Content="批 次 号:"
FontSize="24" />
<ComboBox
x:Name="comboBoxBatch"
Grid.Row="1"
Width="360"
Height="50"
Margin="2,5,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
FontSize="24"
Style="{StaticResource ComboBoxStyle}" />
<TextBlock
VerticalAlignment="Center"
Foreground="Red"
Text="* 不选批次号则默认为该工单报工&#x0a;* 不选批次号则无法创建批次成品检验任务"
TextWrapping="Wrap" />
</StackPanel>
@ -274,27 +486,34 @@
</Grid.Background>-->
<Grid Grid.Row="2" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="380"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="380" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DataGrid x:Name="dgConsumeInfo" Grid.Row="0" Grid.ColumnSpan="2" Background="#0000"
GridLinesVisibility="All" HorizontalGridLinesBrush="AliceBlue" VerticalGridLinesBrush="AliceBlue"
AlternatingRowBackground="LightGray"
RowBackground="White"
LoadingRow="dgConsumeInfo_LoadingRow"
CanUserAddRows="False"
AutoGenerateColumns="False"
HeadersVisibility="Column"
SelectionMode="Single"
CellEditEnding="dgConsumeInfo_CellEditEnding"
RowStyle="{StaticResource DataGridRowStyle}"
CellStyle="{StaticResource CustomCellStyle}" MinRowHeight="35">
<DataGrid.ColumnHeaderStyle >
<DataGrid
x:Name="dgConsumeInfo"
Grid.Row="0"
Grid.ColumnSpan="2"
AlternatingRowBackground="LightGray"
AutoGenerateColumns="False"
Background="#0000"
CanUserAddRows="False"
CellEditEnding="dgConsumeInfo_CellEditEnding"
CellStyle="{StaticResource CustomCellStyle}"
GridLinesVisibility="All"
HeadersVisibility="Column"
HorizontalGridLinesBrush="AliceBlue"
LoadingRow="dgConsumeInfo_LoadingRow"
MinRowHeight="35"
RowBackground="White"
RowStyle="{StaticResource DataGridRowStyle}"
SelectionMode="Single"
VerticalGridLinesBrush="AliceBlue">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Height" Value="48" />
@ -304,41 +523,148 @@
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTemplateColumn Header=" 序号" Width="50" MinWidth="10" IsReadOnly="True">
<DataGridTemplateColumn
Width="50"
MinWidth="10"
Header=" 序号"
IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow}}, Path=Header}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,0,0"></TextBlock>
<TextBlock
Margin="10,0,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridRow}}, Path=Header}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--如果新增列,需要调整用量的取值序号-->
<DataGridTextColumn Width="250" Header="组件编码" Binding="{Binding material_code1}" IsReadOnly="True"/>
<DataGridTextColumn Width="250" Header="组件编码" Binding="{Binding material_code}" Visibility="Hidden" IsReadOnly="True"/>
<DataGridTextColumn Width="350" Header="组件名称" Binding="{Binding material_name}" IsReadOnly="True"/>
<DataGridTextColumn Width="100" Header="单位" Binding="{Binding unit}" IsReadOnly="True"/>
<DataGridTextColumn Width="100" Header="反冲标识" Binding="{Binding recoil}" IsReadOnly="True"/>
<DataGridTextColumn Width="120" Header="领取数" Binding="{Binding quantity}" IsReadOnly="True" />
<DataGridTextColumn Width="120" Header="实际用量" Binding="{Binding qty}" IsReadOnly="False"></DataGridTextColumn>
<DataGridTextColumn Width="100" Header="母单" Binding="{Binding parent_work_order}" IsReadOnly="True" Visibility="Hidden"/>
<DataGridTextColumn Width="180" Header="母单" Binding="{Binding workorder_code_sap}" IsReadOnly="True" />
<DataGridTextColumn Width="100" Header="备注" Binding="{Binding remark}" IsReadOnly="False" />
<!-- 如果新增列,需要调整用量的取值序号 -->
<DataGridTextColumn
Width="250"
Binding="{Binding material_code1}"
Header="组件编码"
IsReadOnly="True" />
<DataGridTextColumn
Width="250"
Binding="{Binding material_code}"
Header="组件编码"
IsReadOnly="True"
Visibility="Hidden" />
<DataGridTextColumn
Width="350"
Binding="{Binding material_name}"
Header="组件名称"
IsReadOnly="True" />
<DataGridTextColumn
Width="100"
Binding="{Binding unit}"
Header="单位"
IsReadOnly="True" />
<DataGridTextColumn
Width="100"
Binding="{Binding recoil}"
Header="反冲标识"
IsReadOnly="True" />
<DataGridTextColumn
Width="120"
Binding="{Binding quantity}"
Header="领取数"
IsReadOnly="True" />
<DataGridTextColumn
Width="120"
Binding="{Binding qty}"
Header="实际用量"
IsReadOnly="False" />
<DataGridTextColumn
Width="100"
Binding="{Binding parent_work_order}"
Header="母单"
IsReadOnly="True"
Visibility="Hidden" />
<DataGridTextColumn
Width="180"
Binding="{Binding workorder_code_sap}"
Header="母单"
IsReadOnly="True" />
<DataGridTextColumn
Width="100"
Binding="{Binding remark}"
Header="备注"
IsReadOnly="False" />
<!--<DataGridTextColumn Width="250" Header="物料组" Binding="{Binding productGroup}" IsReadOnly="True"/>
<DataGridTextColumn Width="250" Header="组名称" Binding="{Binding productGroupName}" IsReadOnly="True"/>-->
</DataGrid.Columns>
</DataGrid>
<Label x:Name="tbMsg" Width="600" Height="40" Grid.Row="1" Grid.ColumnSpan="2" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Center" FontSize="24" Foreground="Red" FontWeight="Bold"></Label>
<CheckBox Content="最终报工" Height="auto" Grid.Row="2" Margin="15,20,0,0" FontSize="10" ToolTip="选择后将结束该工单" IsChecked="False" HorizontalAlignment="Left" VerticalContentAlignment="Center" Click="xuanze9_Click" Name="xuanze9" Checked="xuanze9_Checked">
<CheckBox.LayoutTransform >
<Label
x:Name="tbMsg"
Grid.Row="1"
Grid.ColumnSpan="2"
Width="600"
Height="40"
VerticalAlignment="Center"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
FontSize="24"
FontWeight="Bold"
Foreground="Red" />
<CheckBox
Name="xuanze9"
Grid.Row="2"
Height="auto"
Margin="15,20,0,0"
HorizontalAlignment="Left"
VerticalContentAlignment="Center"
Checked="xuanze9_Checked"
Click="xuanze9_Click"
Content="最终报工"
FontSize="10"
IsChecked="False"
ToolTip="选择后将结束该工单">
<CheckBox.LayoutTransform>
<ScaleTransform ScaleX="2" ScaleY="2" />
</CheckBox.LayoutTransform>
</CheckBox>
<Label Grid.Row="2" FontSize="24" Content="效率原因:" Margin="230,20,313,0" ></Label>
<ComboBox x:Name="xiaolv" Grid.Row="2" FontSize="24" Margin="362,20,112,0" Style="{StaticResource ComboBoxStyle}"/>
<Label Grid.Row="2" FontSize="24" Content="影响时间:" Margin="10,20,545,0" Grid.Column="1"></Label>
<TextBox x:Name="txtWorkTime2" Grid.Row="2" FontSize="24" Margin="135,20,328,7" Grid.Column="1"/>
<Button x:Name="btnOK" Grid.Row="2" Grid.Column="1" Style="{StaticResource btnKey}" Content="确定" Margin="30,20,20,0" Click="btnOK_Click"/>
<Button x:Name="yingxiang" Grid.Row="2" Grid.Column="1" Style="{StaticResource btnCancelKey}" Background="Gray" Content="取消" Margin="30,20,170,0" Click="btnCancel_Click"/>
<Label
Grid.Row="2"
Margin="230,20,313,0"
Content="效率原因:"
FontSize="24" />
<ComboBox
x:Name="xiaolv"
Grid.Row="2"
Margin="362,20,112,0"
FontSize="24"
Style="{StaticResource ComboBoxStyle}" />
<Label
Grid.Row="2"
Grid.Column="1"
Margin="10,20,545,0"
Content="影响时间:"
FontSize="24" />
<TextBox
x:Name="txtWorkTime2"
Grid.Row="2"
Grid.Column="1"
Margin="135,20,328,7"
FontSize="24" />
<Button
x:Name="btnOK"
Grid.Row="2"
Grid.Column="1"
Margin="30,20,20,0"
Click="btnOK_Click"
Content="确定"
Style="{StaticResource btnKey}" />
<Button
x:Name="yingxiang"
Grid.Row="2"
Grid.Column="1"
Margin="30,20,170,0"
Background="Gray"
Click="btnCancel_Click"
Content="取消"
Style="{StaticResource btnCancelKey}" />
</Grid>
</Grid>
</Window>

@ -94,13 +94,13 @@ namespace XGLFinishPro.Views
this.lbCurrOrderNo.Content = orderNumber.TrimStart('0');
this._workOrderId = selectedRow["workorder_id"].ToString();
object obi = selectedRow["batch_quantity"];
_orderQuntity = selectedRow["quantity_split"].ToString();
this.txtQuantity.Text = selectedRow["batch_quantity"].ToString();
this.comboBoxBatch.Text = selectedRow["batch_code"].ToString();
_siteCode = siteCode;
DataTable dtCount = userDbWareHouse.GetBatcxiaolvCount();
if (dtCount!=null&& dtCount.Rows.Count>0)
if (dtCount != null && dtCount.Rows.Count > 0)
{
if (dtCount != null && dtCount.Rows.Count > 0)
{
@ -199,7 +199,7 @@ namespace XGLFinishPro.Views
// return;
}
}
else
else
{
//判断是否为最后一个批次,如果是最后一个批次,则必须最终报工
DataTable dtCount = userDbWareHouse.GetBatchReportedCount(_workOrdercode);
@ -222,7 +222,7 @@ namespace XGLFinishPro.Views
}
}
}
}
catch (Exception ex)
{
@ -230,7 +230,7 @@ namespace XGLFinishPro.Views
LogHelper.instance.log.Error("报工检验数据有效性时发生了异常:" + ex.Message);
btnOK.IsEnabled = true;
return;
}
btnOK.IsEnabled = false;
_useMan = this.txtUserCount.Text;
@ -286,7 +286,7 @@ namespace XGLFinishPro.Views
}
catch (Exception ex)
{
CustomMessageBox.Show("报工失败"+ ex.Message, CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
CustomMessageBox.Show("报工失败" + ex.Message, CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
LogHelper.instance.log.Error("报工失败3" + ex.Message);
}
@ -301,7 +301,7 @@ namespace XGLFinishPro.Views
dicUserCount.Clear();
bool isScucc = false;
for (int i = 0; i < dynamicUserCountTextBoxes.Count; i++)
{
{
if (!Regex.IsMatch(dynamicUserCountTextBoxes[i + 1].Text, @"^\d+$"))
{
// 输入是一个有效的数字,包括小数
@ -325,7 +325,7 @@ namespace XGLFinishPro.Views
bool isScucc = false;
for (int i = 0; i < dynamicWorkTimeTextBoxes.Count; i++)
{
if (!Regex.IsMatch(dynamicWorkTimeTextBoxes[i+1].Text, @"^\d+(\.\d+)?$"))
if (!Regex.IsMatch(dynamicWorkTimeTextBoxes[i + 1].Text, @"^\d+(\.\d+)?$"))
{
// 输入是一个有效的数字,包括小数
this.tbMsg.Content = "工时含有非法字符!";
@ -334,7 +334,7 @@ namespace XGLFinishPro.Views
}
else
{
dicWorkTime.Add(i, dynamicWorkTimeTextBoxes[i+1].Text);
dicWorkTime.Add(i, dynamicWorkTimeTextBoxes[i + 1].Text);
this.tbMsg.Content = "";
isScucc = true;
}
@ -343,7 +343,7 @@ namespace XGLFinishPro.Views
}
private bool ReportWork()
{
{
//获取报工编码
string newReportCode = "";
try
@ -377,13 +377,13 @@ namespace XGLFinishPro.Views
string isEndReport = _isEndReport == true ? "1" : "0";
string xiaolv1 = "";
string shijian = "";
if (xiaolv.SelectedIndex==-1)
if (xiaolv.SelectedIndex == -1)
{
xiaolv1= null;
xiaolv1 = null;
}
else
{
xiaolv1=xiaolv.SelectedItem.ToString();
xiaolv1 = xiaolv.SelectedItem.ToString();
}
if (txtWorkTime2.Text.IsNullOrEmpty())
{
@ -480,7 +480,7 @@ namespace XGLFinishPro.Views
//createCheckProductTask createCheckProductTask = new createCheckProductTask();
//createCheckProductTask.checkLoc = deviceCode;
//createCheckProductTask.factoryCode = Utils.GetAppSetting("SiteCode");
return false;
//if (result.code == 200)
//{
@ -511,14 +511,14 @@ namespace XGLFinishPro.Views
foreach (var row in dgConsumeInfo.Items)
{
var selectedConsumeRow = (row as DataRowView);
var qty = selectedConsumeRow["qty"].ToString() == "" ? "0" : selectedConsumeRow["qty"].ToString();
var remark = selectedConsumeRow["remark"].ToString();
string insertConsumeSql = formingMachineService.GetInsertConsumeInfoSql(selectedConsumeRow, newReportCode, _siteCode);
reportWorkSqlList.Add(insertConsumeSql);
LogHelper.instance.log.Error("报工SQL生成"+ insertConsumeSql);
LogHelper.instance.log.Error("报工SQL生成" + insertConsumeSql);
#region
//// 获取 DataGridRow
//var dataGridRow = dgConsumeInfo.ItemContainerGenerator.ContainerFromItem(row) as DataGridRow;
@ -550,7 +550,7 @@ namespace XGLFinishPro.Views
#endregion
}
}
LogHelper.instance.log.Error("准备执行插入SQL"+ reportWorkSqlList.Count+"条");
LogHelper.instance.log.Error("准备执行插入SQL" + reportWorkSqlList.Count + "条");
bool isReportSuccess = formingMachineService.GetExecuteReportWorkSql(reportWorkSqlList);
if (isReportSuccess)
{
@ -688,14 +688,15 @@ namespace XGLFinishPro.Views
lbl.FontSize = 24;
lbl.VerticalAlignment = VerticalAlignment.Center;
lbl.HorizontalAlignment = HorizontalAlignment.Left;
if (sort=="一")
if (sort == "一")
{
lbl.Content = "半品工单工时:";
}else if (sort == "二")
}
else if (sort == "二")
{
lbl.Content = "子半品工单工时:";
}
TextBox textBox = new TextBox();
textBox.FontSize = 24;
textBox.Width = 260;
@ -716,7 +717,7 @@ namespace XGLFinishPro.Views
{
lblUserCount.Content = "子半品工单工时人数:";
}
myStackPanelWorkTime.Children.Add(lbl);
myStackPanelWorkTime.Children.Add(textBox);
Grid.SetRow(myStackPanelWorkTime, 3 + sortNo);
@ -809,7 +810,7 @@ namespace XGLFinishPro.Views
}
//绑定
dgConsumeInfo.ItemsSource = dtCosumeData.DefaultView;
dgConsumeInfo.ItemsSource = dtCosumeData.DefaultView;
}
private void CreateBaseQty()
@ -956,7 +957,7 @@ namespace XGLFinishPro.Views
textBox.Text = string.Empty;
}
}
}
}
}
@ -971,7 +972,7 @@ namespace XGLFinishPro.Views
if (xuanze9.IsChecked == true)
{
_isEndReport = true;
//dgConsumeInfo
}
else
@ -1002,14 +1003,14 @@ namespace XGLFinishPro.Views
DataTable dt = formingMachineService.GetOrderReportSumQty(this._workOrdercode);
//如果没报过工,按照只有一个批次处理
if (dt == null || dt.Rows.Count == 0)
{
{
double qty = Convert.ToDouble(this.txtQuantity.Text);
rate = qty / Convert.ToDouble(_orderQuntity);
}
else
{
double qty = Convert.ToDouble(dt.Rows[0][0])+ Convert.ToDouble(this.txtQuantity.Text);
double qty = Convert.ToDouble(dt.Rows[0][0]) + Convert.ToDouble(this.txtQuantity.Text);
rate = qty / Convert.ToDouble(_orderQuntity);
}
return rate;
@ -1034,65 +1035,90 @@ namespace XGLFinishPro.Views
{
}
private void ReadOrder_Click(object sender, RoutedEventArgs e)
{
int count = 0;
bool isSuccess = false;
while (count++ < 3)
{
try
{
LanJu_Operator.plc.Connection(LanJu_Operator.PlcIp);
int number = int.Parse(_deviceCode.Substring(2));
isSuccess = true;
break;
}
catch
{
LanJu_Operator.plc = new PlcHelper();
}
}
if (!isSuccess)
{
CustomMessageBox.Show("读取失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return;
}
}
}
public class CostCenter
{
public string factory_code { get; set; }
public string factory_name { get; set; }
}
public class createCheckProductTask
{
/// <summary>
/// 工厂编码
/// </summary>
public string factoryCode { get; set; }
/// <summary>
/// 批次号
/// </summary>
public string incomeBatchNo { get; set; }
/// <summary>
/// orderNo订单号
/// </summary>
public string orderNo { get; set; }
/// <summary>
/// 物料名称
/// </summary>
public string materialName { get; set; }
/// <summary>
/// 物料编码
/// </summary>
public string materialCode { get; set; }
/// <summary>
/// 检测类型固定 checkTypeSC首次检验 checkTypeHF烘房检验
/// </summary>
public string checkType { get; set; }
/// <summary>
/// product
/// </summary>
public string typeCode { get; set; }
/// <summary>
/// 收货数量
/// </summary>
public string quality { get; set; }
/// <summary>
/// 单位
/// </summary>
public string unit { get; set; }
/// <summary>
/// 车间名称
/// </summary>
public string carName { get; set; }
/// <summary>
/// 车间编码
/// </summary>
public string carCode { get; set; }
/// <summary>
/// 生产时间 格式yyyy-MM-dd HH:mm:ss
/// </summary>
public string produceDate { get; set; }
/// <summary>
/// 检测地点
/// </summary>
public string checkLoc { get; set; }
}
public class createCheckProductTask
{
/// <summary>
/// 工厂编码
/// </summary>
public string factoryCode { get; set; }
/// <summary>
/// 批次号
/// </summary>
public string incomeBatchNo { get; set; }
/// <summary>
/// orderNo订单号
/// </summary>
public string orderNo { get; set; }
/// <summary>
/// 物料名称
/// </summary>
public string materialName { get; set; }
/// <summary>
/// 物料编码
/// </summary>
public string materialCode { get; set; }
/// <summary>
/// 检测类型固定 checkTypeSC首次检验 checkTypeHF烘房检验
/// </summary>
public string checkType { get; set; }
/// <summary>
/// product
/// </summary>
public string typeCode { get; set; }
/// <summary>
/// 收货数量
/// </summary>
public string quality { get; set; }
/// <summary>
/// 单位
/// </summary>
public string unit { get; set; }
/// <summary>
/// 车间名称
/// </summary>
public string carName { get; set; }
/// <summary>
/// 车间编码
/// </summary>
public string carCode { get; set; }
/// <summary>
/// 生产时间 格式yyyy-MM-dd HH:mm:ss
/// </summary>
public string produceDate { get; set; }
/// <summary>
/// 检测地点
/// </summary>
public string checkLoc { get; set; }
}
}

@ -27,7 +27,7 @@ namespace XGLFinishPro.Views
/// <summary>
/// LanJu_Check_Report.xaml 的交互逻辑
/// </summary>
public partial class LanJu_Check_Report
public partial class LanJu_Check_Report:Window
{
private string belong_to = string.Empty;
private List<MesTableSelfDetialModel> data;
@ -100,10 +100,7 @@ namespace XGLFinishPro.Views
bz = string.Empty,
report_name = "CheckReport"
};
//if (!string.IsNullOrEmpty(productName))
//{
dbService.InsertMesTableSelf(mesTableSelf);
//}
}
belong_to = mesTableSelf.id;

@ -825,10 +825,6 @@ namespace XGLFinishPro.Views
{
foreach (DataRow row in dataTable.Rows)
{
if (orderWorks.Where(t => t.WorkName == row["product_name"].ToString()).Any())
{
continue;
}
orderWorks.Add(new OrderWork()
{
WorkId = row["workorder_id"].ToString(),

@ -490,7 +490,7 @@ Background="#F2F3F5"
Grid.Row="0"
Grid.Column="9"
>
<Button
<Button
Style="{StaticResource btnKey}"
Visibility="Collapsed"
HorizontalAlignment="Right"
@ -502,7 +502,7 @@ Background="#F2F3F5"
Content="辅助人员"></Button>
</StackPanel>
</StackPanel>
</ScrollViewer>
<DataGrid
@ -517,7 +517,6 @@ Background="#F2F3F5"
AlternationCount="2"
SelectedIndex="0"
RowStyle="{StaticResource DataGridRowStyle}"
LoadingRow="dgWorkOrderInfo_LoadingRow"
HeadersVisibility="Column"
CellStyle="{StaticResource CustomCellStyle}"
@ -577,7 +576,7 @@ Background="#F2F3F5"
<DataGridTextColumn Width="250" Header="产品编码" Binding="{Binding product_code}" />
<DataGridTextColumn Width="200" Header="工单/SFC" Binding="{Binding workorder_code}" />
<DataGridTextColumn Width="180" Header="工单code" Visibility="Hidden" Binding="{Binding workorder_id}" />
<DataGridTextColumn Width="180" Header="工单code" Visibility="Hidden" Binding="{Binding workorder_id}" />
<DataGridTextColumn Width="100" Header="生产顺序" Binding="{Binding sort_no}" />
<DataGridTextColumn Width="250" Header="计划时间" Binding="{Binding plan_time, StringFormat={}{0:yyyy-MM-dd HH:mm:ss}}" />
<DataGridTextColumn Width="250" Header="单位" Binding="{Binding unit}" />

@ -1,4 +1,5 @@
using CommonFunc;
using CentralControl.BaseData;
using CommonFunc;
using CommonFunc.Tools;
using HandyControl.Tools.Extension;
using Newtonsoft.Json;
@ -29,6 +30,10 @@ namespace XGLFinishPro.Views
/// </summary>
public partial class LanJu_Operator : UserControl
{
public static string PlcIp= "172.18.15.20";
public static bool isSuccess = false;
public static bool IsWrite = false;
public static PlcHelper plc = new PlcHelper();
FormingMachineService formingMachineService = new FormingMachineService();
FinishProdDBService userDbWareHouse = new FinishProdDBService();
public static LanJu_Operator lanJu_Operator;
@ -37,6 +42,26 @@ namespace XGLFinishPro.Views
Timer timerDeciveState = new Timer();
string _workOrderCode = "";
userDB usdb = new userDB();
private readonly Dictionary<string, string> _dic = new Dictionary<string, string>()
{
{"XL01","1" },
{"XL02","2" },
{"XL03","3" },
{"XL04","4" },
{"XL05","5" },
{"XL06","6" },
{"XL07","7" },
{"XL08","8" },
{"XL09","9" },
{"XL10","A" },
{"XL11","B" },
{"XL12","C" },
{"XL13","D" },
{"XL14","E" },
{"XL15","F" },
{"XL16","G" },
{"XL17","H" },
};
public enum WindowID
{
frame
@ -45,6 +70,7 @@ namespace XGLFinishPro.Views
{
InitializeComponent();
WindowChange(WindowID.frame);
//WritePlcBoxMessage("000000010101000115");
}
@ -352,11 +378,11 @@ namespace XGLFinishPro.Views
CustomMessageBox.Show("只有活动中的工单才支持暂停!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return;
}
PauseOrderWin pauseOrderWin = new PauseOrderWin();
if (pauseOrderWin.ShowDialog() == true)
{
PauseRecoverOrderS(workordercode, "w4", pauseOrderWin);
ProWorkBatchInWork("w4", dgWorkOrderInfo.SelectedItem as DataRowView, 2);
GetWorkOrderInfo();
}
//MessageBoxResult result = MessageBox.Show("你确定要暂停该工单吗?", "温馨提示", MessageBoxButton.YesNo, MessageBoxImage.Information);
@ -371,17 +397,7 @@ namespace XGLFinishPro.Views
{
CustomMessageBox.Show("操作失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
}
DataTable dtSubOrders = userDbWareHouse.GetSubOrderInfo(workordercode);
if (dtSubOrders != null)
{
// 递归更新子单状态
foreach (DataRow subOrder in dtSubOrders.Rows)
{
UpdateOrderStatus(subOrder["workorder_code"].ToString());
}
}
return true;
return UpdateOrderStatus(workordercode, status);
}
private void btnRecover_Click(object sender, RoutedEventArgs e)
@ -415,6 +431,7 @@ namespace XGLFinishPro.Views
if (pauseOrderWin.ShowDialog() == true)
{
PauseRecoverOrderS(workordercode, "w2", pauseOrderWin);
ProWorkBatchInWork("w2", dgWorkOrderInfo.SelectedItem as DataRowView, 2);
//formingMachineService.UpdateWorkOrder(workordercode, "w2", pauseOrderWin.remark, pauseOrderWin.type, deviceCode);
GetWorkOrderInfo();
}
@ -499,10 +516,11 @@ namespace XGLFinishPro.Views
// return;
//}
#region 添加验证
string workorderId = selectedRow["workorder_id"].ToString();
string batch_code = selectedRow["batch_code"].ToString();
string qc_status = selectedRow["qc_status"].ToString();
if (qc_status != "2"||qc_status != "首检完成")
if (qc_status != "2" && selectedRow["status"].ToString() != "w4")
{
CustomMessageBox.Show("该工单未首检,请重新选择!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return;
@ -514,6 +532,7 @@ namespace XGLFinishPro.Views
return;
}
#endregion
ExecReportWorkWin execReport = new ExecReportWorkWin(selectedRow, deviceCode, Utils.GetAppSetting("SiteCode"));
if (execReport.ShowDialog() == true)
@ -521,6 +540,24 @@ namespace XGLFinishPro.Views
string materialCode = (dgWorkOrderInfo.SelectedItem as DataRowView)["product_code"].ToString();
string materialDesc = (dgWorkOrderInfo.SelectedItem as DataRowView)["product_name"].ToString();
userDbWareHouse.InsertOperationLog((dgWorkOrderInfo.SelectedItem as DataRowView)["workorder_code"].ToString(), "w3", "", "工单报工", deviceCode, materialCode, materialDesc);
bool isProwork = true;
DataRowView dataRowView = dgWorkOrderInfo.SelectedItem as DataRowView;
foreach (var selectItem in dgWorkOrderInfo.Items)
{
if (selectItem is DataRowView selectRow)
{
string v = selectRow["BtnTest"].ToString();
if (selectRow["BtnTest"].ToString() == "结束" && selectRow["batch_code"].ToString() != dataRowView["batch_code"].ToString())
{
isProwork = false;
break;
}
}
}
if (isProwork)
{
ProWorkBatchInWork("w3", dataRowView, 2);
}
////获取报工编码
//string newReportCode = "";
//DataTable dtNewReportCode = formingMachineService.GetReportCode();
@ -632,12 +669,6 @@ namespace XGLFinishPro.Views
CustomMessageBox.Show("请选择要开始的工单!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return;
}
// 创建JsonSerializerSettings实例并配置其属性来忽略自引用循环
var settings = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
Formatting = Formatting.Indented
};
if (dgWorkOrderInfo.SelectedItem is DataRowView selectedRow)
{
string rowContent = string.Join(", ", selectedRow.Row.ItemArray);
@ -650,20 +681,30 @@ namespace XGLFinishPro.Views
string workorderID = (dgWorkOrderInfo.SelectedItem as DataRowView)["workorder_code"].ToString();
string status = (dgWorkOrderInfo.SelectedItem as DataRowView)["status"].ToString();
LogHelper.instance.log.Info("记录开始工单状态:" + status + ", 开始工单号为:" + workorderID);
if (!status.Equals("w1"))
if (status != "w1")
{
if (status != "")
string st = string.Empty;
if (status == "w2")
{
if (status.Equals("w2"))
{
CustomMessageBox.Show("该工单已经活动中,请勿再次开始工单!!!");
return;
}
string st = status.Equals("w1") ? "未派发" : status.Equals("w3") ? "已报工" : status.Equals("w0") ? "未派发" : "已暂停";
LogHelper.instance.log.Info("该工单不符合条件,请检查工单状态,当前工单状态为:" + st);
CustomMessageBox.Show("该工单不符合条件,请检查工单状态,当前工单状态为:" + st, CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
CustomMessageBox.Show("该工单已经活动中,请勿再次开始工单!!!");
return;
}
else if (status == "w0")
{
st = "未派发";
}
else if (status == "w3")
{
st = "已报工";
}
else if (status == "w4")
{
st = "已暂停";
}
LogHelper.instance.log.Info("该工单不符合条件,请检查工单状态,当前工单状态为:" + st);
CustomMessageBox.Show("该工单不符合条件,请检查工单状态,当前工单状态为:" + st, CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
GetWorkOrderInfo();
return;
}
CustomMessageBoxResult result = CustomMessageBox.Show("你确定要开始工单么?", CustomMessageBoxButton.OKCancel, CustomMessageBoxIcon.Warning);
if (result == CustomMessageBoxResult.Cancel)
@ -678,7 +719,7 @@ namespace XGLFinishPro.Views
}
LogHelper.instance.log.Info("查询到当前正在活动的工单数量为" + orderCount);
//更新工单状态
if (!UpdateOrderStatus(workorderID))
if (!UpdateOrderStatus(workorderID, "w2"))
{
LogHelper.instance.log.Info("开始工单返回失败");
CustomMessageBox.Show("开始工单失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
@ -689,6 +730,8 @@ namespace XGLFinishPro.Views
string materialCode = (dgWorkOrderInfo.SelectedItem as DataRowView)["product_code"].ToString();
string materialDesc = (dgWorkOrderInfo.SelectedItem as DataRowView)["product_name"].ToString();
userDbWareHouse.InsertOperationLog(workorderID, "w2", "", "开始工单", deviceCode, materialCode, materialDesc);
ProWorkBatchInWork("w2", dgWorkOrderInfo.SelectedItem as DataRowView, 0);
WritePlcBoxMessage(materialCode);
// await CallCheckApi("checkTypeSCXJ");20240403赵啸林因为切线方案调整要求取消上位机生成巡检任务的功能
GetWorkOrderInfo();
}
@ -699,6 +742,69 @@ namespace XGLFinishPro.Views
}
}
/// <summary>
///
/// </summary>
/// <param name="status"></param>
/// <param name="dataRow"></param>
/// <param name="type">0:开始工单要更改基本信息1只改批次号2只改状态</param>
/// <returns></returns>
private bool ProWorkBatchInWork(string status, DataRowView dataRow, int type)
{
var lineCode = deviceCode;
var batchCode = dataRow["batch_code"].ToString();
var productCode = dataRow["product_code"].ToString();
var workorderCode = dataRow["workorder_code"].ToString();
var productName = dataRow["product_name"].ToString();
DataTable dtBaseProduct = formingMachineService.GetBaseProduct(productCode);
DataTable dtBaseProductAtt = formingMachineService.GetBaseProductAtt(productCode);
//string parentStatus = formingMachineService.GetWorkOrderParentStatus(workorderCode);
//if (!string.IsNullOrEmpty(parentStatus))
//{
// status = parentStatus;
//}
if (dtBaseProduct == null || dtBaseProduct.Rows.Count == 0)
{
CustomMessageBox.Show("未找到该产品箱型信息!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return false;
}
if (dtBaseProductAtt == null || dtBaseProductAtt.Rows.Count == 0)
{
CustomMessageBox.Show("未找到该产品垛型属性信息!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return false;
}
string productdescen = dtBaseProduct.Rows[0]["product_desc_en"].ToString();
//string boxType = dtBaseProduct.Rows[0]["box_type"].ToString();
_dic.TryGetValue(deviceCode, out var boxType);
string umrez = dtBaseProduct.Rows[0]["umrez"].ToString();
string packType = dtBaseProductAtt.Rows[0]["pack_type"].ToString();
if (type == 0)
{
batchCode = "";
if (!formingMachineService.UpdateProWorkBatchInWork(lineCode, batchCode, workorderCode, productCode, productName, productdescen, boxType, packType, umrez, status, LoginUser.WorkDate))
{
CustomMessageBox.Show("更新打印机表状态失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return false;
}
}
else if (type == 1)
{
if (!formingMachineService.UpdateProWorkBatchInWorkBatchCode(lineCode, batchCode, status,productCode,productName))
{
CustomMessageBox.Show("更新打印机表状态失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return false;
}
}
else if (type == 2)
{
if (!formingMachineService.UpdateProWorkBatchInWorkStatus(lineCode, status))
{
CustomMessageBox.Show("更新打印机表状态失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return false;
}
}
return true;
}
private int GetActivedOrdersCount(string deviceCode, string workDate)
{
@ -709,7 +815,7 @@ namespace XGLFinishPro.Views
return count;
}
private bool UpdateOrderStatus(string workorderID)
private bool UpdateOrderStatus(string workorderID, string status)
{
try
{
@ -718,27 +824,45 @@ namespace XGLFinishPro.Views
{
name = "无-0";
}
//更新工单状态
var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID, deviceCode, name);
if (!updatestatus)
DataTable dtSubOrders = userDbWareHouse.GetOrderInfo(workorderID);
if (dtSubOrders != null && dtSubOrders.Rows.Count > 0)
{
CustomMessageBox.Show("开始工单失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
LogHelper.instance.log.Info("开始工单失败");
return false;
}
else
{
LogHelper.instance.log.Info("开始工单正常");
}
DataTable dtSubOrders = userDbWareHouse.GetSubOrderInfo(workorderID);
if (dtSubOrders != null)
{
// 递归更新子单状态
foreach (DataRow subOrder in dtSubOrders.Rows)
string remarks = status == "w2" ? "开始工单" : "暂停工单";
var belong_work_order = dtSubOrders.Rows[0]["belong_work_order"].ToString();
var updatestatus = userDbWareHouse.UpdateSycnFlagByBelongWorkOrder(belong_work_order, deviceCode, name, status);
if (!updatestatus)
{
UpdateOrderStatus(subOrder["workorder_code"].ToString());
CustomMessageBox.Show($"{remarks}失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
LogHelper.instance.log.Info($"{remarks}失败");
return false;
}
else
{
LogHelper.instance.log.Info($"{remarks}正常");
}
}
//更新工单状态
//var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID, deviceCode, name);
//if (!updatestatus)
//{
// CustomMessageBox.Show("开始工单失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
// LogHelper.instance.log.Info("开始工单失败");
// return false;
//}
//else
//{
// LogHelper.instance.log.Info("开始工单正常");
//}
//DataTable dtSubOrders = userDbWareHouse.GetSubOrderInfo(workorderID);
//if (dtSubOrders != null)
//{
// // 递归更新子单状态
// foreach (DataRow subOrder in dtSubOrders.Rows)
// {
// UpdateOrderStatus(subOrder["workorder_code"].ToString());
// }
//}
}
catch (Exception ex)
{
@ -1010,6 +1134,20 @@ namespace XGLFinishPro.Views
if (content == "开始")
{
attr1 = "1";
if (row["status"].ToString() != "w2")
{
CustomMessageBox.Show("只有已经活动的工单才能开始批次!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return;
}
//if (!isSuccess && !IsWrite)
//{
// CustomMessageBoxResult customMessageBoxResult = CustomMessageBox.Show("是否需要再次同步尺寸信息?", CustomMessageBoxButton.YesNo, CustomMessageBoxIcon.Question);
// if (customMessageBoxResult == CustomMessageBoxResult.Yes)
// {
// WritePlcBoxMessage(row["product_code"].ToString());
// }
//}
ProWorkBatchInWork("w2", dgWorkOrderInfo.SelectedItem as DataRowView, 1);
}
else if (content == "结束")
{
@ -1028,6 +1166,110 @@ namespace XGLFinishPro.Views
}
}
private void WritePlcBoxMessage(string productCode)
{
int count = 0;
try
{
IsWrite = true;
if (dgWorkOrderInfo.SelectedItem is DataRowView dataRowView)
{
Task.Run(() =>
{
try
{
DataTable dt = formingMachineService.GetProductSize(productCode);
int number = int.Parse(deviceCode.Substring(2));
string height = "heigh" + number.ToString();
string width1 = "width" + number.ToString();
string length1 = "long" + number.ToString();
string[] plcPointNo = { height, width1, length1 };
DataTable pointsDt = formingMachineService.GetWcsPlcPoint(plcPointNo, "ProductSize");
if (pointsDt == null || pointsDt.Rows.Count == 0)
{
return;
}
if (dt != null && dt.Rows.Count > 0)
{
string heigh = dt.Rows[0]["height"].ToString();
string width = dt.Rows[0]["width"].ToString();
string length = dt.Rows[0]["length"].ToString();
short h = Convert.ToInt16(Convert.ToDecimal(heigh));
short w = Convert.ToInt16(Convert.ToDecimal(width));
short l = Convert.ToInt16(Convert.ToDecimal(length));
while (count < 5)
{
try
{
count++;
plc.Connection(PlcIp);
if (pointsDt != null && pointsDt.Rows.Count > 0)
{
foreach (DataRow row in pointsDt.Rows)
{
if (row["plc_point_no"].ToString() == height)
{
plc.Write(new PlcSetting() {
PlcAddress= row["plc_point_address"].ToString() ,
PlcValueLength="2"
}, h);
}
else if (row["plc_point_no"].ToString() == width1)
{
plc.Write(new PlcSetting()
{
PlcAddress = row["plc_point_address"].ToString(),
PlcValueLength = "2"
}, w);
}
else if (row["plc_point_no"].ToString() == length1)
{
plc.Write(new PlcSetting()
{
PlcAddress = row["plc_point_address"].ToString(),
PlcValueLength = "2"
}, l);
}
LogHelper.instance.log.Info($"写入PLC尺寸信息成功新高度{h},新宽度{w},新长度{l}");
}
isSuccess = true;
break;
}
}
catch (Exception ex)
{
isSuccess = false;
LogHelper.instance.log.Info($"写入PLC尺寸信息失败第{count}次重试{ex}");
plc = new PlcHelper();
}
}
if (!isSuccess)
{
Dispatcher.Invoke(() =>
{
CustomMessageBox.Show("同步数据到PLC尺寸信息失败", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
});
}
}
}
catch
{
}
});
}
}
catch
{
}
finally
{
IsWrite = false;
}
}
}
public class ReportWorkModel
{

@ -242,7 +242,7 @@ namespace XGLFinishPro.Views
//更新工单状态
//var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID);
if (!UpdateOrderStatus(workorderID))
if (!UpdateOrderStatus(workorderID,"w2"))
{
CustomMessageBox.Show("开始工单失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
}
@ -413,29 +413,45 @@ namespace XGLFinishPro.Views
}
}
private bool UpdateOrderStatus(string workorderID)
private bool UpdateOrderStatus(string workorderID,string status)
{
string name = LoginUser.UserName + "-" + LoginUser.UserCode;
if (name.IsNullOrEmpty())
{
name = "无-0";
}
//更新工单状态
var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID, deviceCode, name);
if (!updatestatus)
DataTable dtSubOrders = userDbWareHouse.GetOrderInfo(workorderID);
if (dtSubOrders != null && dtSubOrders.Rows.Count > 0)
{
CustomMessageBox.Show("开始工单失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
return false;
}
DataTable dtSubOrders = userDbWareHouse.GetSubOrderInfo(workorderID);
if (dtSubOrders != null)
{
// 递归更新子单状态
foreach (DataRow subOrder in dtSubOrders.Rows)
var belong_work_order = dtSubOrders.Rows[0]["belong_work_order"].ToString();
var updatestatus = userDbWareHouse.UpdateSycnFlagByBelongWorkOrder(belong_work_order, deviceCode, name, status);
if (!updatestatus)
{
UpdateOrderStatus(subOrder["workorder_code"].ToString());
CustomMessageBox.Show("开始工单失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
LogHelper.instance.log.Info("开始工单失败");
return false;
}
else
{
LogHelper.instance.log.Info("开始工单正常");
}
}
////更新工单状态
//var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID, deviceCode, name);
//if (!updatestatus)
//{
// CustomMessageBox.Show("开始工单失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
// return false;
//}
//DataTable dtSubOrders = userDbWareHouse.GetSubOrderInfo(workorderID);
//if (dtSubOrders != null)
//{
// // 递归更新子单状态
// foreach (DataRow subOrder in dtSubOrders.Rows)
// {
// UpdateOrderStatus(subOrder["workorder_code"].ToString());
// }
//}
return true;
}

@ -121,7 +121,7 @@
<TextBox Name="zhongliang" FontSize="18" BorderThickness="0" Margin="1,1,1,1" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" Width="360"></TextBox>
</Border>
<Border BorderThickness="1" CornerRadius="3" BorderBrush="#404040" Background="#2F82E7" Grid.Row="5" Height="32" Margin="88,0,304,8" Width="80">
<Button Content="称 重" BorderThickness="0" FontSize="16" Foreground="White" Background="#2F82E7" Click="Button_Click_1"/>
<Button Content="称 重" BorderThickness="0" FontSize="16" Foreground="White" Background="#2F82E7" Click="Button_Click_1" Height="30" VerticalAlignment="Top"/>
</Border>
<Border BorderThickness="1" CornerRadius="3" Visibility="Hidden" BorderBrush="#404040" Background="#2F82E7" Grid.Row="5" Height="32" Margin="200,-5,1,1" Width="80">
<Button Content="去皮" BorderThickness="0" FontSize="16" Foreground="White" Background="#2F82E7"/>

@ -113,7 +113,9 @@ namespace XGLFinishPro.Views
// 设置其他串口参数,如数据位、校验位等
serialPort.DataBits = 8;
//校验协议
serialPort.Parity = Parity.None;
//停止位数
serialPort.StopBits = StopBits.One;
try
{

@ -193,6 +193,9 @@
<Reference Include="PdfSharpCore, Version=1.3.60.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\PdfSharpCore.1.3.60\lib\netstandard2.0\PdfSharpCore.dll</HintPath>
</Reference>
<Reference Include="S7.Net, Version=0.20.0.0, Culture=neutral, PublicKeyToken=d5812d469e84c693, processorArchitecture=MSIL">
<HintPath>..\packages\S7netplus.0.20.0\lib\net462\S7.Net.dll</HintPath>
</Reference>
<Reference Include="SixLabors.Fonts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d998eea7b14cab13, processorArchitecture=MSIL">
<HintPath>..\packages\SixLabors.Fonts.1.0.0\lib\netstandard2.0\SixLabors.Fonts.dll</HintPath>
</Reference>
@ -212,8 +215,8 @@
<Reference Include="System.Drawing.Design" />
<Reference Include="System.EnterpriseServices" />
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
<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.Net.Http" />
<Reference Include="System.Numerics" />

@ -11,11 +11,12 @@
<package id="MySql.Data" version="6.8.8" targetFramework="net40" requireReinstallation="true" />
<package id="PdfiumViewer" version="2.13.0.0" targetFramework="net48" />
<package id="PdfSharpCore" version="1.3.60" targetFramework="net48" />
<package id="S7netplus" version="0.20.0" targetFramework="net48" />
<package id="SharpZipLib" version="1.3.3" targetFramework="net48" />
<package id="SixLabors.Fonts" version="1.0.0" targetFramework="net48" />
<package id="SixLabors.ImageSharp" version="1.0.4" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Memory" version="4.5.4" targetFramework="net48" />
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.0" targetFramework="net48" />
</packages>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,23 @@
The MIT License (MIT)
Copyright (c) .NET Foundation and Contributors
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -0,0 +1,309 @@
.NET Core uses third-party libraries or other resources that may be
distributed under licenses different than the .NET Core software.
In the event that we accidentally failed to list a required notice, please
bring it to our attention. Post an issue or email us:
dotnet@microsoft.com
The attached notices are provided for information only.
License notice for Slicing-by-8
-------------------------------
http://sourceforge.net/projects/slicing-by-8/
Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
This software program is licensed subject to the BSD License, available at
http://www.opensource.org/licenses/bsd-license.html.
License notice for Unicode data
-------------------------------
http://www.unicode.org/copyright.html#License
Copyright © 1991-2017 Unicode, Inc. All rights reserved.
Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Unicode data files and any associated documentation
(the "Data Files") or Unicode software and any associated documentation
(the "Software") to deal in the Data Files or Software
without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, and/or sell copies of
the Data Files or Software, and to permit persons to whom the Data Files
or Software are furnished to do so, provided that either
(a) this copyright and permission notice appear with all copies
of the Data Files or Software, or
(b) this copyright and permission notice appear in associated
Documentation.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT OF THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THE DATA FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder
shall not be used in advertising or otherwise to promote the sale,
use or other dealings in these Data Files or Software without prior
written authorization of the copyright holder.
License notice for Zlib
-----------------------
https://github.com/madler/zlib
http://zlib.net/zlib_license.html
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.11, January 15th, 2017
Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
*/
License notice for Mono
-------------------------------
http://www.mono-project.com/docs/about-mono/
Copyright (c) .NET Foundation Contributors
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the Software), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
License notice for International Organization for Standardization
-----------------------------------------------------------------
Portions (C) International Organization for Standardization 1986:
Permission to copy in any form is granted for use with
conforming SGML systems and applications as defined in
ISO 8879, provided this notice is included in all copies.
License notice for Intel
------------------------
"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License notice for Xamarin and Novell
-------------------------------------
Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Copyright (c) 2011 Novell, Inc (http://www.novell.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Third party notice for W3C
--------------------------
"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE
Status: This license takes effect 13 May, 2015.
This work is being provided by the copyright holders under the following license.
License
By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications:
The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
Disclaimers
THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders."
License notice for Bit Twiddling Hacks
--------------------------------------
Bit Twiddling Hacks
By Sean Eron Anderson
seander@cs.stanford.edu
Individually, the code snippets here are in the public domain (unless otherwise
noted) — feel free to use them however you please. The aggregate collection and
descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are
distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and
without even the implied warranty of merchantability or fitness for a particular
purpose.
License notice for Brotli
--------------------------------------
Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
compress_fragment.c:
Copyright (c) 2011, Google Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
decode_fuzzer.c:
Copyright (c) 2015 The Chromium Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."

@ -0,0 +1,355 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Memory</name>
</assembly>
<members>
<member name="T:System.Span`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.Span`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.Span`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.Clear">
</member>
<member name="M:System.Span`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.Span`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.Span`1.Empty">
<returns></returns>
</member>
<member name="M:System.Span`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Fill(`0)">
<param name="value"></param>
</member>
<member name="M:System.Span`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.Span`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.Span`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.Span`1.Length">
<returns></returns>
</member>
<member name="M:System.Span`1.op_Equality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.ArraySegment{T})~System.Span{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.Span{T})~System.ReadOnlySpan{T}">
<param name="span"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(T[])~System.Span{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Inequality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.ToArray">
<returns></returns>
</member>
<member name="M:System.Span`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
<member name="T:System.SpanExtensions">
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.Span{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan(System.String)">
<param name="text"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(System.ArraySegment{``0})">
<param name="arraySegment"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(``0[])">
<param name="array"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.CopyTo``1(``0[],System.Span{``0})">
<param name="array"></param>
<param name="destination"></param>
<typeparam name="T"></typeparam>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.Span{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="T:System.ReadOnlySpan`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Empty">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Length">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Equality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(System.ArraySegment{T})~System.ReadOnlySpan{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(T[])~System.ReadOnlySpan{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Inequality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.ToArray">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
</members>
</doc>

@ -0,0 +1,355 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Memory</name>
</assembly>
<members>
<member name="T:System.Span`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.Span`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.Span`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.Clear">
</member>
<member name="M:System.Span`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.Span`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.Span`1.Empty">
<returns></returns>
</member>
<member name="M:System.Span`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Fill(`0)">
<param name="value"></param>
</member>
<member name="M:System.Span`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.Span`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.Span`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.Span`1.Length">
<returns></returns>
</member>
<member name="M:System.Span`1.op_Equality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.ArraySegment{T})~System.Span{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.Span{T})~System.ReadOnlySpan{T}">
<param name="span"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(T[])~System.Span{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Inequality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.ToArray">
<returns></returns>
</member>
<member name="M:System.Span`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
<member name="T:System.SpanExtensions">
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.Span{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan(System.String)">
<param name="text"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(System.ArraySegment{``0})">
<param name="arraySegment"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(``0[])">
<param name="array"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.CopyTo``1(``0[],System.Span{``0})">
<param name="array"></param>
<param name="destination"></param>
<typeparam name="T"></typeparam>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.Span{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="T:System.ReadOnlySpan`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Empty">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Length">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Equality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(System.ArraySegment{T})~System.ReadOnlySpan{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(T[])~System.ReadOnlySpan{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Inequality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.ToArray">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
</members>
</doc>

@ -0,0 +1,355 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Memory</name>
</assembly>
<members>
<member name="T:System.Span`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.Span`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.Span`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.Clear">
</member>
<member name="M:System.Span`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.Span`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.Span`1.Empty">
<returns></returns>
</member>
<member name="M:System.Span`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Fill(`0)">
<param name="value"></param>
</member>
<member name="M:System.Span`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.Span`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.Span`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.Span`1.Length">
<returns></returns>
</member>
<member name="M:System.Span`1.op_Equality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.ArraySegment{T})~System.Span{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.Span{T})~System.ReadOnlySpan{T}">
<param name="span"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(T[])~System.Span{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Inequality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.ToArray">
<returns></returns>
</member>
<member name="M:System.Span`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
<member name="T:System.SpanExtensions">
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.Span{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan(System.String)">
<param name="text"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(System.ArraySegment{``0})">
<param name="arraySegment"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(``0[])">
<param name="array"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.CopyTo``1(``0[],System.Span{``0})">
<param name="array"></param>
<param name="destination"></param>
<typeparam name="T"></typeparam>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.Span{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="T:System.ReadOnlySpan`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Empty">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Length">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Equality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(System.ArraySegment{T})~System.ReadOnlySpan{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(T[])~System.ReadOnlySpan{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Inequality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.ToArray">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
</members>
</doc>

@ -0,0 +1 @@
32b491939fbd125f304031c35038b1e14b4e3958
Loading…
Cancel
Save