Browse Source

BC316装配准时化 排序

master
dequan.zhang 3 years ago
parent
commit
c938728967
  1. 1
      APP/QMAPP.Web/App_Data/PCPower.xml
  2. 35
      APPQ5/QMAPP.FJC.DAL/ProductionPlan/WorkOrderDAL.cs
  3. 9
      APPQ5/QMAPP.FJC.Entity/ProductionPlan/WorkOrder.cs
  4. 7
      APPQ5/QMAPP.FJC.TRACING/DAHandler/DataAcquirer.cs
  5. 5
      APPQ5/QMAPP.FJC.TRACING/DAInterface/DAArgs.cs
  6. 6
      APPQ5/QMAPP.FJC.TRACING/DataValidators/PlanValidator.cs
  7. 27
      APPQ5/QMAPP.WinForm/App.config
  8. 6
      APPQ5/QMAPP.WinForm/Forms/Operation/BZDPasswordForm.cs
  9. 9
      APPQ5/QMAPP.WinForm/Forms/Operation/BZDRePrintForm.cs
  10. 1654
      APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm_316.Designer.cs
  11. 3843
      APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm_316.cs
  12. 686
      APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm_316.resx
  13. 39
      APPQ5/QMAPP.WinForm/MainForm.Designer.cs
  14. 47
      APPQ5/QMAPP.WinForm/MainForm.cs
  15. 1
      APPQ5/QMAPP.WinForm/Menu.xml
  16. 14
      APPQ5/QMAPP.WinForm/QMAPP.WinForm.csproj
  17. 128
      QMAPP.BoraUpgrade.BLL/BoraUpgradeRouteBLL.cs
  18. 422
      QMAPP.BoraUpgrade.BLL/PrintCodeRouteHelper.cs
  19. 6
      QMAPP.BoraUpgrade.BLL/ProduceShift.cs
  20. 149
      QMAPP.BoraUpgrade.BLL/ProductHelper.cs
  21. 27
      QMAPP.BoraUpgrade.BLL/ProductMaxCodeBLL.cs
  22. 36
      QMAPP.BoraUpgrade.BLL/Properties/AssemblyInfo.cs
  23. 75
      QMAPP.BoraUpgrade.BLL/QMAPP.BoraUpgrade.BLL.csproj
  24. 47
      QMAPP.BoraUpgrade.BLL/VirtualMaterialBLL.cs
  25. 27
      QMAPP.BoraUpgrade.BLL/WorkCellHelper.cs
  26. 256
      QMAPP.BoraUpgrade.BLL/WorkOrderBLL.cs
  27. 36
      QMAPP.BoraUpgrade.Common/Config.cs
  28. 26
      QMAPP.BoraUpgrade.Common/Enum.cs
  29. 36
      QMAPP.BoraUpgrade.Common/Properties/AssemblyInfo.cs
  30. 57
      QMAPP.BoraUpgrade.Common/QMAPP.BoraUpgrade.Common.csproj
  31. 2612
      QMAPP.BoraUpgrade.Common/SqlHelper.cs
  32. 77
      QMAPP.BoraUpgrade.DAL/BoraUpgradeRouteDAL.cs
  33. 57
      QMAPP.BoraUpgrade.DAL/PrintCodeRouteDataAccess.cs
  34. 304
      QMAPP.BoraUpgrade.DAL/ProductDataAccess.cs
  35. 46
      QMAPP.BoraUpgrade.DAL/ProductMaxCodeDAL.cs
  36. 36
      QMAPP.BoraUpgrade.DAL/Properties/AssemblyInfo.cs
  37. 78
      QMAPP.BoraUpgrade.DAL/QMAPP.BoraUpgrade.DAL.csproj
  38. 43
      QMAPP.BoraUpgrade.DAL/VirtualMaterialDAL.cs
  39. 54
      QMAPP.BoraUpgrade.DAL/WorkCellDAL.cs
  40. 979
      QMAPP.BoraUpgrade.DAL/WorkOrderDAL.cs
  41. 36
      QMAPP.BoraUpgrade.Entity/Properties/AssemblyInfo.cs
  42. 58
      QMAPP.BoraUpgrade.Entity/QMAPP.BoraUpgrade.Entity.csproj
  43. 39
      QMAPP.BoraUpgrade.Entity/T_AW_PRODUCT.cs
  44. 104
      QMAPP.BoraUpgrade.Entity/T_CC_PrintCodeRoute.cs
  45. 33
      QMAPP.BoraUpgrade.Entity/T_MD_MATERIAL.cs
  46. 134
      QMAPP.BoraUpgrade.Entity/T_QD_BoraUpgradeRoute.cs
  47. 21
      QMAPP.BoraUpgrade.Entity/T_QD_VirtualMaterial.cs
  48. 62
      QMSolution.sln
  49. 44
      ServicesCenter/WCF/QMFrameWork.WebServiceHost/Web.config

1
APP/QMAPP.Web/App_Data/PCPower.xml

@ -37,6 +37,7 @@
<PowerInfo PowerID="CD82040000" PowerDes="门板跳序终检" PowerType="item" ActionList="" Visible="true" Seq="3" SuperID="CD82000000"></PowerInfo>
<PowerInfo PowerID="CD82050000" PowerDes="门板FIS补码" PowerType="item" ActionList="" Visible="true" Seq="1" SuperID="CD82000000"></PowerInfo>
<PowerInfo PowerID="CD82060000" PowerDes="TJ门板计划标签打印" PowerType="item" ActionList="" Visible="true" Seq="9" SuperID="CD82000000"></PowerInfo>
<PowerInfo PowerID="CD82070000" PowerDes="BC316总成装配" PowerType="item" ActionList="" Visible="true" Seq="9" SuperID="CD82000000"></PowerInfo>
<PowerInfo PowerID="CD83000000" PowerDes="返修工位" PowerType="group" ActionList="" Visible="true" Seq="1" SuperID=""></PowerInfo>
<PowerInfo PowerID="CD83010000" PowerDes="质量操作" PowerType="item" ActionList="" Visible="true" Seq="1" SuperID="CD83000000"></PowerInfo>

35
APPQ5/QMAPP.FJC.DAL/ProductionPlan/WorkOrderDAL.cs

@ -802,6 +802,41 @@ namespace QMAPP.FJC.DAL.ProductionPlan
}
}
/// <summary>
/// 获取指定工位第一条的派工单
/// </summary>
/// <param name="workloccode"></param>
/// <returns></returns>
public WorkOrder GetNewFirstOrderInLoc(string orderplan_pid, string mouldcode)
{
try
{
List<DataParameter> parameters = new List<DataParameter>();
StringBuilder sql = new StringBuilder();
sql.AppendLine("SELECT TOP 1 W.* ");
sql.AppendLine(" ,P.[IGNORE_FISBREAK] ");
sql.AppendFormat(" FROM [T_PP_WORKORDER] AS W ");
sql.AppendFormat(" LEFT JOIN [T_PP_ORDERPLAN] AS P ");
sql.AppendFormat(" ON P.[PID]=W.[ORDERPLANID] ");
sql.AppendFormat(" LEFT JOIN [T_MD_MATERIAL] AS M ");
sql.AppendFormat(" ON W.[MATERIAL_CODE]=M.[MATERIAL_CODE] ");
sql.AppendFormat(" WHERE W.[PID]=@orderplan_pid ");
sql.AppendLine(" AND W.[STATE]<>'4' ");
sql.AppendFormat(" ORDER BY W.[PRI],W.[PLAN_DATE],P.PLAN_SEQ,W.[SEQ],W.[MATERIAL_CODE] ");
parameters.Add(new DataParameter("orderplan_pid", orderplan_pid));
parameters.Add(new DataParameter("mouldcode", mouldcode));
using (var session = AppDataFactory.CreateMainSession())
{
return session.Get<WorkOrder>(sql.ToString(), parameters.ToArray());
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 获取工序下匹配的派工单
/// </summary>

9
APPQ5/QMAPP.FJC.Entity/ProductionPlan/WorkOrder.cs

@ -176,6 +176,15 @@ namespace QMAPP.FJC.Entity.ProductionPlan
/// </summary>
public string FIS_ASMSETCODE { get; set; }
/// <summary>
///
/// </summary>
public string InitNo { get; set; }
/// <summary>
///
/// </summary>
public string No { get; set; }
}
}

7
APPQ5/QMAPP.FJC.TRACING/DAHandler/DataAcquirer.cs

@ -72,6 +72,13 @@ namespace QMAPP.FJC.TRACING.DAHandler
log.AppendFormat("LOADCH:{0}ms\t", stopwatch.ElapsedMilliseconds);
stopwatch.Start();
//20220501 DQZhang BC316 生产计划获取 FIS计划排序后的第一条(321654)
if (data.WorkLocState.CurrentState.WORKCELL_CODE == "ASSEMBLE_BC316")
{
data.WorkLocState.CurrentState.ORDERPLAN_PID = Args.WorkerPid;
}
if (data.OrderPlan == null)
{
if (!string.IsNullOrWhiteSpace(data.WorkLocState.CurrentState.ORDERPLAN_PID))

5
APPQ5/QMAPP.FJC.TRACING/DAInterface/DAArgs.cs

@ -51,5 +51,10 @@ namespace QMAPP.FJC.TRACING.DAInterface
/// 附加数据
/// </summary>
public Dictionary<string, string> AttachData { get; set; }
/// <summary>
/// fis计划PID
/// </summary>
public string WorkerPid { get; set; }
}
}

6
APPQ5/QMAPP.FJC.TRACING/DataValidators/PlanValidator.cs

@ -27,7 +27,11 @@ namespace QMAPP.FJC.TRACING.DataValidators
if (data.WorkLocState.WORKCELL_CODE == "ASSEMBLE_BC316")
{
//20210120 DQzhang 获取当前工位第一条派工单
workorder = workorderdal.GetFirstOrderInLoc(data.WorkLocState.WORKCELL_CODE, data.MouldCode);
//workorder = workorderdal.GetFirstOrderInLoc(data.WorkLocState.WORKCELL_CODE, data.MouldCode);
//20220501 DQzhang 用pid 获取重新排序后的第一条派工单
workorder = workorderdal.GetNewFirstOrderInLoc(data.WorkLocState.CurrentState.ORDERPLAN_PID, data.MouldCode);
}
//-----------------------------------------------------------------------------------------------

27
APPQ5/QMAPP.WinForm/App.config

@ -2,22 +2,37 @@
<configuration>
<connectionStrings>
<!--主数据库连接-->
<!--<add name="maindb" connectionString="Data Source=119.3.213.202,13315;Initial Catalog=ADIENT_CD_MES;User Id=sa;Password=ChangkeTec@2020;" providerName="System.Data.SqlClient" />
<add name="maindbBZD" connectionString="Data Source=119.3.213.202,13315;Initial Catalog=BZD;User Id=sa;Password=ChangkeTec@2020;" providerName="System.Data.SqlClient"/>-->
<!--<add name="maindb" connectionString="Data Source=10.117.133.48;Initial Catalog=ADIENT_TJ_MES;User Id=sa;Password=ASDqwe123!@#;" providerName="System.Data.SqlClient"/>-->
<!--<add name="maindb" connectionString="Data Source=10.111.144.98;Initial Catalog=ADIENT_CD_MES;User Id=sa;Password=Password2018;" providerName="System.Data.SqlClient"/>
<add name="maindbBZD" connectionString="Data Source=10.111.144.98;Initial Catalog=BZD;User Id=sa;Password=Password2018;" providerName="System.Data.SqlClient"/>-->
<add name="maindb" connectionString="Data Source=.;Initial Catalog=ADIENT_CD_MES;User Id=sa;Password=Microsoft2008;" providerName="System.Data.SqlClient"/>
<add name="maindbBZD" connectionString="Data Source=.;Initial Catalog=BZD;User Id=sa;Password=Microsoft2008;" providerName="System.Data.SqlClient"/>
<add name="maindb" connectionString="Data Source=10.111.144.98;Initial Catalog=ADIENT_CD_MES;User Id=sa;Password=Password2018;" providerName="System.Data.SqlClient"/>
<add name="maindbBZD" connectionString="Data Source=10.111.144.98;Initial Catalog=BZD;User Id=sa;Password=Password2018;" providerName="System.Data.SqlClient"/>
<!--<add name="maindb" connectionString="Data Source=123.56.115.74;Initial Catalog=ADIENT_TJ_MES;User Id=sa;Password=qwe123$%^;" providerName="System.Data.SqlClient" />-->
</connectionStrings>
<appSettings>
<!--装配排序 star-->
<add key="发运器具容量" value="6"/>
<add key="装配排序工序" value="ASSEMBLE_BC316"/>
<add key="先装A面" value="true"/>
<!--<add key="并线发运产线" value="IPFY"/>
<add key="并线发运本体条码正则" value="^(UP|CFAA-)[a-zA-Z0-9]+$"/>
<add key="并线装配前置工序" value="IP_SWELD_4"/>
--><!--设备编号,设备名称,工位编号,产线编号--><!--
<add key="并线装配基础信息" value="4A-AE0001;VW331 IP 装配夹具;IP_ASSEMBLY;BORAIPASSY"/>-->
<!--装配排序 end-->
<!---->
<add key="AssemblyPrintingTemplatePath" value="C:\MES\打印模板\AssemblyPrintingTemplatePath.grf" />
<add key="ZCZP" value=" 17S" />

6
APPQ5/QMAPP.WinForm/Forms/Operation/BZDPasswordForm.cs

@ -26,6 +26,7 @@ namespace QMAPP.WinForm.Forms.Operation
Product _CurrentProduct = null;
private OperationForm _parentForm;
private OperationForm_316 operationForm_316;
public BZDPasswordForm(OperationForm parentForm)
{
@ -35,6 +36,11 @@ namespace QMAPP.WinForm.Forms.Operation
_parentForm = parentForm;
}
public BZDPasswordForm(OperationForm_316 operationForm_316)
{
this.operationForm_316 = operationForm_316;
}
#region 打印按钮
/// <summary>

9
APPQ5/QMAPP.WinForm/Forms/Operation/BZDRePrintForm.cs

@ -19,7 +19,7 @@ namespace QMAPP.WinForm.Forms.Operation
Product _CurrentProduct = null;
private OperationForm _parentForm;
private OperationForm_316 operationForm_316;
public BZDRePrintForm(OperationForm parentForm)
{
@ -29,6 +29,11 @@ namespace QMAPP.WinForm.Forms.Operation
_parentForm = parentForm;
}
public BZDRePrintForm(OperationForm_316 operationForm_316)
{
this.operationForm_316 = operationForm_316;
}
#region 打印按钮
/// <summary>
@ -107,7 +112,7 @@ namespace QMAPP.WinForm.Forms.Operation
//};
////_agent.InvokeServiceFunction<DataResult<int>>(B9BasicService.ProductBLL_Insert.ToString(), ProductNew);
//DataResult<int> result;//判断是否成功
//result =_agent.InvokeServiceFunction<DataResult<int>>(B9BasicService.ProductBLL_Insert.ToString(), ProductNew);
//result = _agent.InvokeServiceFunction<DataResult<int>>(B9BasicService.ProductBLL_Insert.ToString(), ProductNew);
//if (!result.IsSuccess)
//{
// MessageBox.Show(result.Msg);

1654
APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm_316.Designer.cs

File diff suppressed because it is too large

3843
APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm_316.cs

File diff suppressed because it is too large

686
APPQ5/QMAPP.WinForm/Forms/Operation/OperationForm_316.resx

@ -0,0 +1,686 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="dgcMouldCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcMouldName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="daname.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="statename.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="datype.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="materialtypename.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcDAMaterialCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="davalue.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="daresult.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Pid.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="tsbCancel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
6wqkj0ytAAAAAElFTkSuQmCC
</value>
</data>
<data name="tsbPass.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
/wBje5EY7FfaeAAAAABJRU5ErkJggg==
</value>
</data>
<data name="tsbRecovery.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="tsbConnect.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABLSSURBVGhDvVkJlFvVeRbGlPQ0SWlKMQkxxGw5sQNxVjAN
Li0hlJO0SVrS5RBOSk9y2BJKSM5pWiBpwuJgswwY23jBC97HMx6Px7NrRrN6pJFGM5JGGkkzo2W0j/Zd
epLe1+9qJDI4JrQ5mHvON/e9p/f0vu/f7n81ivdryABk/hFz7dLvDPF55T3u+UDHuxEpk2mhXENpaT7f
veKaEFU7/eDGuWSKJOjPlmCKFqAO5tDvyaDLlUanI4X2uRQ6ZpPo4/GoOw0TPw+mJJToitrjH6yQOnkR
CsF8GTqS7vBmccqdwQlnGifmU2gSmE3hhD2JRmsCxy1xHDHF8NZUFG9NRnBYH0YLz7V8JpKR3iYOuSyk
XBghdeJiDpD4aDiPNh+Jk7yY28TsIRYyaKWlT1FMC4WcpPWbbQk0zcTQZI6i0RTG4akEDk5EsV/txUFN
CCp+HsmU3g6z990bdavkyhVMxQvoZhj0hvLoDxeqUPK4O5hHhz9XFdL6togkTjKEmumJYzYJR2bKODxd
RKMhgImJzWiesGPveB57RiNoHptEbPZlSFKmJuJ98oRIPzEv5iUMRcroj8jQxIvQJiSME5pEEWdjBQwx
lPoW8+gK5HCGHmldyOKkW0KLI10VMWw5hVnjo1CalGg2ujCkPwLlRCu6NKexbYShOPoLZIc+DI/6AYQT
6fdHxFLBK8OfiUAVAYxRE+biOpgyMixM2plMGWbCmC5Bn5QwRmEDDK3uQAHtvhR6XHa0OuNodMjosw7D
Zbwfw9NN2DsNdE+pkNJ9BknNp6Hu/ykCw7ehqL4G1p67sLvTAn+iVBPxB4YTK3aVfiG+GynfNzEX7oA/
qUQqsQOeXADuIuApluEulOHIV2DNVWBgdRmPZ9FHsRPu08ibr8OQYwj9c2qo7IPotaqhNA9AZWyHVf84
cto1yOivR9F4BTJTa1CcvBIG5f14udWFAwMe+KK5P0yEIC/mQvowSr6bgfAdxDcRi+yEK1NEpCwhwvoe
ZfkMl4BQsQhPIQ8bRUylZQwnKMCrgnm+AXrHAeTMNyBnug45w/U1XIscCaf1NyI7fQ2ytk8iM3M1JP0V
0Pc8gFc649jeF8UeVQxhelZw+T+LeJt8bgRSaC3k6FdRid8LJB5CLrwJ+fhBxPMZZCpAll+aqZQhJXcj
ne7CAr3ii3ZgOmLFeMiKMwHAbX8Q5ekrKODTyFuuRtF+BQqzVyJv+zhxFXLWJaQpKDt6LZyqr6NXuRWj
g6+grWc/jgxHkOX3inAWEVEl+W6jXm1K5Tik9E5Uon+HSuzrkBP/Djn+NJBuIOs3kUiYIfHbyiUHyvlR
SIUpZAqzyMQPoeK9G3nvPcjP34bg3H207M0oWK9BwX4lCg5a2fM1SL7voeDcgBxF5KxXE6sZQtchOboW
qdEbkRmmdwavRX5oNXRdP8CwyVvzAkXwvb9XiLihkOmATKKV6LdQiRDRJyhiM3KJVuTTGlQKBhSLWUCa
paAOVNJN9NJWyEFaO/Rtzl9ExbMGsvPDKDkvg+S6CiXvrSgH/hWV0KPEf/D8X1C0fgwFy0dQMP8pCtOE
6TLkjZchO3k50kMfR7D3c7B3fg1jbQ/C63fXRCxFyO+MuvWlohNSah8qiZ+iEtiIcvD7DKP/BFINCIRs
iHHBkaQCSoz/UjmGlESUwoQHidIc4pIZ8aIOMXomkhvmAtWHcGYYi/lZBLNWBDJG+FIGeJKTcEc64Aqd
giPUgflgN2b9HbB5WjDjasaM7ThGjGocm5BwUuNCG1dw0yIrYUDGTFC8+xwv1AUU0qdRjv0YJf9NKHvu
Rtn/APKhZxHxt8AT9ICL8NsuLFXyCPFcmwxCF7ZgIjrLhc4GQ3wWxrgDpoSTswuGqAP6sA1aGkAdmMGo
14xBtwkqpwX98zPom7Og125Bj5WwWNA1bUGniTCa0G3Qo11vwintNJrOTuLEuB9nzECeMSw4VEedfLHo
hRR/gaRvYPVZi7L3Lsbrv0FjGMXEfBqBVAmFSoktcZFPVFCWgvBRTP/ET2DsUcCmuxYO41q4Z26Bx/bX
8Nrvhs9+D7y2v4V35m+wMH0rXFPr4NCtxvzYZbAPr4R9UAH7wEWwq4h+Qkn0EF1E5wrYOi6GrW0FzKc+
BONhBYaUT6GHkZuXyucRkNOhtHg/SgurqgJKvtsheb+HUf0QrBEJCZo+VwyhVPSwm8yjlDfBSwEj+p8h
avgQiqHP0Xu3Q07/PcvT95gfP2QuPcjjH7IA3A85+S0Wg42QwzdBDl2Fiv9PUFm4CBW3AhUnMU/MEXbC
SlgUKJsVkAwKZLUrkepXwKB+Gt3nChCjUikgGzvMpH0IRedfoDj7WUiOvwRYUbSTTdD5JASlEqLFAtLF
GBO3k7nSCQ8FjE49iaj5ShQjd6KcvBeVzMOo5P4bcv55Ygvk3POoZJ/kM48wt77LynYHyuF1TOpV9PKl
DFUSdV+EspOYJ2YJO2ElZi6CZLoIuYmVrEwKmDTn8YAYlXIKUmI/yousDvZVyM+sZen7MlyGh9A53IOx
hRwcuTIW8nw4cQpy5GUU4/uxQK+ojb9Cwnojyol/JMmHeMOvWMp2AMXDRBNxZOk89wy98wgr2ndYGG6l
Fz4F2f8RyN4VkBfYTbsIekKmJ+RZgp6QhSfoheLUSuRGFDCPP4Xe5QLq4ZPLWSFFn4HkvgZ5+2oqXw3N
yE+4GnrQPpuFhl2nJR5BJtSAUuDnrE4/gxR7Dgtc0DSmTUjaPk8BD0DO/NcSWek0UDrLxWKS8xhFtPGt
OxlOTwLJ7wPRO4HFz7A3/3N6eSVAAaAAOAgKAAWAAlATIBkoYFgBi/ZpKOf4VWxjagKW6mo22Y+Caz0k
5+XIz34KJctqOMfvQaPRhz62zyp/gavrIjLuh1Fy30cR/4xi+DG42UqMmzZTwC0U8DAFPEcBtLwgX2GA
ySnOTPWSmm89SgGbKIB5Eb2HAj4H+K9kU3UJl2xSofWrApgHVQE2YoYCpilAeGBIAav2l6xaIhfrAuSl
ri+72MCl/cMozFzHBWUNYFmFycH78NIpM1q5Mel0J9FFHg7XDibbV1mdNiIfuA9OiQKMLyJp3YBy/EcU
sJkCGDYlWp7kl96R5rmBAk5SwItsSx6hgG+wiVrP3uMTtP4f/db6dfI164OJXDFRwCQFMAesuv9h6T2P
gFzoGWRnPoq84QaEdV/C9Oi9ONa+Cy+fcXBXlaCIBDcoEkYcZ7n0U4D9s8h5vwEH+xTN1BYkWTrLMcZ3
+nkSZcxLDBtheUG+4ue5hm89xmr0GyBOD4TpgQA94KUHXPRAPXSEAEG+Zv2qACMF6FciO8BSPfErqM4n
IB/6JTKGj6FsWI2Rvscxov45FufuQqN5EU12sauKoXFOwoC9H1njZymUzdfcX2GuIGNM/wISZuZAhDmQ
YIxnmQMFxnyRYSMsL8jnz/A6cyD5FK3PHAgxB/zMgYXLGTrMgTr5eujUrA/Gf1UAq1BWxTVD/2sMOM4j
IL2wBSkNu8TJGxAZX4/GkSF0WfVotgTQaEmiyRrDcVsBqhklha5FTr8aafNGttAso9pnkTCwCoXuhUwv
IPUMQ4Vkc4x5ETbC8uI8+SwQe5TW/wdafwOtz1B1fZTWX/G7oSOsT/Jg/FemKEC3JGBO/wwGKSBbFyDL
Swdx9x4kxz5JYjdyl3QDtrXpcdBQwDETiU/HcIIb8qMzEjqnx5GcvKkqIGXaCAsjZEj9C8QnuPj574S8
+F0uVhSRpCdSTNgUYz7JsEnQ8lXy/wQEub/wrmPiriL5S99Jvh46NfJg/FcmlwRk+hSY1z/LTRIFcCP1
DgExfxviY0zgiTWwqu5BQ6sZRw0kPRXBUWOUQuI4YfLBPfFdFPXcgOjWIGn4KkwsMgMjP0dU/cdcwb/A
cL+DIr4DRESpZKwLj4hZnC8KywvyjH331ST/EZKn9ZeHzTnkwVW4KoArcUapgEP/HIaXC0CtPU0nbMiN
XwuL6tvYdGwau/oXcKT6G06kOh+ZiqPJ4MaU+gn41Bu5HbyanrgdU9x9KVVPIMJFpuRYw9ZgHRenW2ll
xniIiRpktQmKhOW5j2HjoeVdgvxlJH7xb63+LuTB8KlMUMA4BfQq4JzchBGnELAU+rxjaSErl4u06lcw
2vEDNHSHcXQijIPjizikC+PwBAXoF3FwMoU9OglnR59DTvMJxPUbMRkHd1CPY5HxKdn/DBXHKsjuT5Eo
E9RDS3tYKsW8wHM3Y97JsJmn5QX5OvFlCfsO8gK0flWAhq0EG0bX5G/eKUAMIUL8JpawPIaW5qfxWk8Y
hzQhHFCH8JaGIijkoDaKEzo77NoHkWGO5NVXITVxC7TcwCuFAManZLkEFdulbAVI0MEV1skS6WSdF7OD
1WaOCTvLmLcxbOrEa6XyfJYX5KGnAC2/e4wCuhVYmHoBoxSQyS8TUP/9Jbw4g4YTZ7FrgOTPBrGfODBG
Eeog9mpS6NK0I8dEz6ivh3foNnT3vwFVEOjrfRQhxmdxeiVbEEalXcQ1S6Od9X2Wi5SY7Tx/L+Isl+eS
h44CxmsCOhXwTG3GWdc5AuqDeYFjJLx7wI99wwHsG6GI0SXsO0uv8Mnw2IbqbzjbWnXYoQxgMEQPdP8I
Ibq3aKIAEpIFuTrR5YTrpM8lXicviC8nz9ABrV/RUMAoBXQo4DVswdj5BNR/ttA7U9je68XeQT/eHAxg
7xBRFePHnpEkV+gfwzewAdtJ/vi4D6oABXRSAN1bZMNVJhm5TnI5BOE6ziVet7pAnXiNPGj9yhgFcPOT
alfAZ3wJ6vMKqG0TRXk6SNK7lD68qaIIekNg36AXbwymoR9+Es6+O7C1O4DDYz4ouaNRdvwIQVonz9Wy
RBJi5ZSFkDrEeR0kWwXvk2npKkhaJuEqGDIyicskLtPygnyJFa4wuBKJ0wr4jS+DW+Tzh1DdC9MLabze
6cGePh92C/RTTD8FqGLQDv4SLae3o6GDyT3iQQ8bzt72x+BrVSB99lLkx1egOLGCvUsN4ng5dDVoa+D9
VWgI9cWMdeIsMUqMEMMXo6C6GGnlpYg0U4DhVYy72VLlziNg+WjTLuL1jgXspol3MaR2Kf3Y2zePg8pJ
vNbmrl7bP+BBJ63R0/oQnEcViPSsRJLlNMO2N8vePctZHNchdlQZIs2mrArem+Y2Mc0KVgXrfIq5JMpl
uovHAvRsok2BcMsl8OxjCOkboP19AupeSGZL2E/rb6OIXTTzzu4l7GDo7O7lMa/t66cHWNL6ep6F9dRq
OHrWw6VcB3ffWs4Cn4G7Oq8jbsJC/81w9t4Mb/96uHvXc/4CXL2fh7fvSzz/IrzKL8NHeHsEvgJfzy3E
rfB1b4Cn83Y4W9YhMHMcWhotzd1hlfD5Rl2EJ5zHDgrY1r6AN7pIvnMBO7t+e7y33w+1u0KXZqFzxaBz
x/nlcYw7Y29DQ1Q/s/swbAnC5ApDZQxwjmDQFIDVm8DodADmhQS0MwHo5tMwcd9q5BbW5M7zeh6WhQJm
PAXYfUXYfGWoTDIyhSWO7zrqIhyBHLYzZLYSQsz2ds4UtO2MG3t7/TD5y7CFWVxYTqe5JhiJSbb/em4F
dISGOaIlhs1JdBoyGLNl0DwWw6A5hSMDixi05PEWK1rXVA6HGKYntGU06YAmrYyTYmYn3siu/Dg3eAJH
hoHT4zK3lO8hQIy6CHcoh50k3XDSiR0kvo1iXie28/itvgAOsZYepDcO9vl57sMBAVax/b1ED0tyF3Oo
3YuTTPrWERcaVQ7sabNiW4sFmw4ZsPmIES8d43mzGy8dmsNxPhdOlNguyEjlzgXDJ8/eocbtPUf9xkhS
QiPL6YuN83itxcWFzIWtp1x4laKEsFdPOqpoaK6hyYFXmubxygmCz7x4bA7NXE+G2Jq3qhdxjGvMHoai
MITwrvj81zvNOM31J1fvNN+vURchlSpQW+J4/ZQTm/nCV0l0a4sTWyngNYHmJYjrr1KAQMMJzhTw0tE5
tI1FoJ7LoceQwmltEsdG46xkMexjed7XHcQ0t67V93FNWv4PcTEvh7j2/x5CRF1INFlEj45llqRfODKL
LST38vF5vEprv0bCDZxfosAt4rPDS/jNWza0qaOYcJXQby6gfTKPE5ocDo9muepnoJ0vLpGtveOCjKoF
lr0gnpagMcdwmOX1dVp700E7njtgw/MH7NhKIbsZZm8w3HZQ6FZ6oXM8jkl3GaOzEgZtJfRMl3DGIKFl
QoLJW65anTtFSISYy5ULJGa5N8QQx+F4ERb2UWOmKE4z1tUzadiDFRjcJegcJYyRtJoYny/RCxVMeWTo
3TK0Thlqh4yzczKGZ2WorDKUFhmtUzKmfUtd8gXzyrlClo8UK4WfuzVfDeK4Dh83Qd6YjAXCHZHhIhxh
GbMhmaJlWAMyjF65eq/4Lr7iwghYPoSQCv9cMGt90ENYrQr++YPxnpZXKP4XKL1QoagEuVsAAAAASUVO
RK5CYII=
</value>
</data>
<data name="tsbPrint.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
Ae6xxmll7eSUAAAAAElFTkSuQmCC
</value>
</data>
<data name="tsbSearch.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
SUVORK5CYII=
</value>
</data>
<metadata name="dgcMListMaterialName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcMListMaterialCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcMListQty.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcMListMaterialName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcMListMaterialCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcMListQty.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="InitNo.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcOrderNo.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcSeq.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcMaterialCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcMaterialName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcState.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcPlanDate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgcShift.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="No.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PRODUCTCODE.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PRODUCTCODESTR.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MOLDNUMBER.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="OPERATEDDATE.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PPID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PROID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="OPERATESTATE.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>127, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>49</value>
</metadata>
</root>

39
APPQ5/QMAPP.WinForm/MainForm.Designer.cs

@ -33,8 +33,8 @@
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.btnInjectGroup = new System.Windows.Forms.ToolStripMenuItem();
this.btnInjectPrint = new System.Windows.Forms.ToolStripMenuItem();
this.btnInjectPut = new System.Windows.Forms.ToolStripMenuItem(); //
this.btnInjectPutNEW = new System.Windows.Forms.ToolStripMenuItem(); //
this.btnInjectPut = new System.Windows.Forms.ToolStripMenuItem();
this.btnInjectPutNEW = new System.Windows.Forms.ToolStripMenuItem();
this.btnInjectPrintForm = new System.Windows.Forms.ToolStripMenuItem();
this.线ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.btnvVWSinglePrint = new System.Windows.Forms.ToolStripMenuItem();
@ -57,8 +57,8 @@
this.btnUserOut = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiWarehouse = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiPutIn = new System.Windows.Forms.ToolStripMenuItem();
this.TJtsmiPutIn = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTakeOut = new System.Windows.Forms.ToolStripMenuItem();
this.TJtsmiPutIn = new System.Windows.Forms.ToolStripMenuItem();
this.TJtsmiTakeOut = new System.Windows.Forms.ToolStripMenuItem();
this.tsiShipment = new System.Windows.Forms.ToolStripMenuItem();
this.FrmPlace = new System.Windows.Forms.ToolStripMenuItem();
@ -76,6 +76,7 @@
this.tsslblOPCStatus = new System.Windows.Forms.ToolStripStatusLabel();
this.tsslblIps = new System.Windows.Forms.ToolStripStatusLabel();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.bC316总成装配ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.SuspendLayout();
@ -133,7 +134,7 @@
this.btnInjectPutNEW.Text = "注塑投料新版";
this.btnInjectPutNEW.Click += new System.EventHandler(this.btnInjectPutNEW_Click);
//
// btnInjectPutNEW
// btnInjectPrintForm
//
this.btnInjectPrintForm.Name = "btnInjectPrintForm";
this.btnInjectPrintForm.Size = new System.Drawing.Size(188, 28);
@ -193,7 +194,8 @@
this.PrintCodeToolStripMenuItem,
this.tsmiPrintPlanlabel,
this.TJtsmiPrintPlanlabel,
this.tsmDPAssmblyItem});
this.tsmDPAssmblyItem,
this.bC316总成装配ToolStripMenuItem});
this.btnOperateGroup.Name = "btnOperateGroup";
this.btnOperateGroup.Size = new System.Drawing.Size(94, 28);
this.btnOperateGroup.Text = "加工工位";
@ -201,28 +203,28 @@
// btnOperateStation
//
this.btnOperateStation.Name = "btnOperateStation";
this.btnOperateStation.Size = new System.Drawing.Size(224, 28);
this.btnOperateStation.Size = new System.Drawing.Size(241, 28);
this.btnOperateStation.Text = "加工操作";
this.btnOperateStation.Click += new System.EventHandler(this.btnOperateStation_Click);
//
// PrintCodeToolStripMenuItem
//
this.PrintCodeToolStripMenuItem.Name = "PrintCodeToolStripMenuItem";
this.PrintCodeToolStripMenuItem.Size = new System.Drawing.Size(224, 28);
this.PrintCodeToolStripMenuItem.Size = new System.Drawing.Size(241, 28);
this.PrintCodeToolStripMenuItem.Text = "总成装配条码打印";
this.PrintCodeToolStripMenuItem.Click += new System.EventHandler(this.PrintCodeToolStripMenuItem_Click);
//
// tsmiPrintPlanlabel
//
this.tsmiPrintPlanlabel.Name = "tsmiPrintPlanlabel";
this.tsmiPrintPlanlabel.Size = new System.Drawing.Size(224, 28);
this.tsmiPrintPlanlabel.Size = new System.Drawing.Size(241, 28);
this.tsmiPrintPlanlabel.Text = "门板计划标签打印";
this.tsmiPrintPlanlabel.Click += new System.EventHandler(this.tsmiPrintPlanlabel_Click);
//
// TJtsmiPrintPlanlabel
//
this.TJtsmiPrintPlanlabel.Name = "TJtsmiPrintPlanlabel";
this.TJtsmiPrintPlanlabel.Size = new System.Drawing.Size(224, 28);
this.TJtsmiPrintPlanlabel.Size = new System.Drawing.Size(241, 28);
this.TJtsmiPrintPlanlabel.Text = "TJ门板计划标签打印";
this.TJtsmiPrintPlanlabel.Click += new System.EventHandler(this.TJtsmiPrintPlanlabel_Click);
//
@ -230,7 +232,7 @@
//
this.tsmDPAssmblyItem.Name = "tsmDPAssmblyItem";
this.tsmDPAssmblyItem.ShowShortcutKeys = false;
this.tsmDPAssmblyItem.Size = new System.Drawing.Size(224, 28);
this.tsmDPAssmblyItem.Size = new System.Drawing.Size(241, 28);
this.tsmDPAssmblyItem.Text = "门板FIS补码";
this.tsmDPAssmblyItem.Click += new System.EventHandler(this.tsmDPAssmblyItem_Click);
//
@ -295,7 +297,7 @@
this.tsmiPutIn,
this.tsmiTakeOut,
this.TJtsmiPutIn,
this.TJtsmiTakeOut,});
this.TJtsmiTakeOut});
this.tsmiWarehouse.Name = "tsmiWarehouse";
this.tsmiWarehouse.Size = new System.Drawing.Size(112, 28);
this.tsmiWarehouse.Text = "出入库管理";
@ -313,7 +315,6 @@
this.tsmiTakeOut.Size = new System.Drawing.Size(170, 28);
this.tsmiTakeOut.Text = "计划外出库";
this.tsmiTakeOut.Click += new System.EventHandler(this.tsmiTakeOut_Click);
//
// TJtsmiPutIn
//
@ -322,7 +323,7 @@
this.TJtsmiPutIn.Text = "TJ入库管理";
this.TJtsmiPutIn.Click += new System.EventHandler(this.TJtsmiPutIn_Click);
//
// tsmiTakeOut
// TJtsmiTakeOut
//
this.TJtsmiTakeOut.Name = "TJtsmiTakeOut";
this.TJtsmiTakeOut.Size = new System.Drawing.Size(170, 28);
@ -341,14 +342,14 @@
// FrmPlace
//
this.FrmPlace.Name = "FrmPlace";
this.FrmPlace.Size = new System.Drawing.Size(152, 28);
this.FrmPlace.Size = new System.Drawing.Size(169, 28);
this.FrmPlace.Text = "仪表发运";
this.FrmPlace.Click += new System.EventHandler(this.FrmPlace_Click);
//
// TJFrmPlace
//
this.TJFrmPlace.Name = "TJFrmPlace";
this.TJFrmPlace.Size = new System.Drawing.Size(152, 28);
this.TJFrmPlace.Size = new System.Drawing.Size(169, 28);
this.TJFrmPlace.Text = "TJ门板发运";
this.TJFrmPlace.Click += new System.EventHandler(this.TJFrmPlace_Click);
//
@ -455,6 +456,13 @@
this.timer1.Interval = 5000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// bC316总成装配ToolStripMenuItem
//
this.bC316总成装配ToolStripMenuItem.Name = "bC316总成装配ToolStripMenuItem";
this.bC316总成装配ToolStripMenuItem.Size = new System.Drawing.Size(241, 28);
this.bC316总成装配ToolStripMenuItem.Text = "BC316总成装配";
this.bC316总成装配ToolStripMenuItem.Click += new System.EventHandler(this.bC316总成装配ToolStripMenuItem_Click);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@ -529,6 +537,7 @@
private System.Windows.Forms.ToolStripStatusLabel tsslblIps;
private System.Windows.Forms.ToolStripMenuItem tsmiUserManage;
private System.Windows.Forms.ToolStripMenuItem tsmiDefectRecording;
private System.Windows.Forms.ToolStripMenuItem bC316总成装配ToolStripMenuItem;
}
}

47
APPQ5/QMAPP.WinForm/MainForm.cs

@ -23,6 +23,7 @@ using System.ServiceModel.Configuration;
using QMAPP.WinForm.Forms.RePrint;
using QMAPP.WinForm.Forms.TianJin;
namespace QMAPP.WinForm
{
/// <summary>
@ -551,20 +552,20 @@ namespace QMAPP.WinForm
private void PrintCodeToolStripMenuItem_Click(object sender, EventArgs e)
{
//Form f = Application.OpenForms["PrintForm"]; //查找是否打开过Form1窗体
//if (f == null) //没打开过
//{
// PrintForm form = new PrintForm();
// ClientContext.SetUserAuth(form);
// //new KeyEvent().SetKeyToTxt(form);
// form.MdiParent = this;
// form.Show(); //重新new一个Show出来
//}
//else
//{
// f.WindowState = FormWindowState.Normal;
// f.Focus(); //打开过就让其获得焦点
//}
Form f = Application.OpenForms["PrintForm"]; //查找是否打开过Form1窗体
if (f == null) //没打开过
{
PrintForm form = new PrintForm();
ClientContext.SetUserAuth(form);
//new KeyEvent().SetKeyToTxt(form);
form.MdiParent = this;
form.Show(); //重新new一个Show出来
}
else
{
f.WindowState = FormWindowState.Normal;
f.Focus(); //打开过就让其获得焦点
}
return;
}
@ -1151,5 +1152,23 @@ namespace QMAPP.WinForm
f.Focus(); //打开过就让其获得焦点
}
}
private void bC316总成装配ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form f = Application.OpenForms["OperationForm_316"]; //查找是否打开过Form1窗体
if (f == null) //没打开过
{
OperationForm_316 form = new OperationForm_316();
new KeyEvent().SetKeyToTxt(form);
ClientContext.SetUserAuth(form);
form.MdiParent = this;
form.Show(); //重新new一个Show出来
}
else
{
f.WindowState = FormWindowState.Normal;
f.Focus(); //打开过就让其获得焦点
}
}
}
}

1
APPQ5/QMAPP.WinForm/Menu.xml

@ -36,6 +36,7 @@
<PowerInfo PowerID="CD82040000" PowerDes="门板跳序终检" ButtonName="tsmiInspectSkipping"/>
<PowerInfo PowerID="CD82050000" PowerDes="门板FIS补码" ButtonName="tsmDPAssmblyItem"/>
<PowerInfo PowerID="CD82060000" PowerDes="TJ门板计划标签打印" ButtonName="TJtsmiPrintPlanlabel"/>
<PowerInfo PowerID="CD82070000" PowerDes="BC316总成装配" ButtonName="bC316总成装配ToolStripMenuItem"/>
<PowerInfo PowerID="CD83000000" ButtonName=""/>
<PowerInfo PowerID="CD83010000" PowerDes="返修界面" ButtonName="btnMendOperate"/>

14
APPQ5/QMAPP.WinForm/QMAPP.WinForm.csproj

@ -452,6 +452,12 @@
<Compile Include="Forms\Operation\MainOperationCompleteForm.designer.cs">
<DependentUpon>MainOperationCompleteForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Operation\OperationForm_316.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\Operation\OperationForm_316.Designer.cs">
<DependentUpon>OperationForm_316.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Operation\PrintPlanLabel.cs">
<SubType>Form</SubType>
</Compile>
@ -1143,6 +1149,10 @@
<EmbeddedResource Include="Forms\Operation\MainOperationCompleteForm.resx">
<DependentUpon>MainOperationCompleteForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Operation\OperationForm_316.resx">
<DependentUpon>OperationForm_316.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Operation\PrintPlanLabel.resx">
<DependentUpon>PrintPlanLabel.cs</DependentUpon>
</EmbeddedResource>
@ -1589,6 +1599,10 @@
<Project>{604FB24F-7706-497C-BEC7-27D7B6B5A82C}</Project>
<Name>QMAPP.Entity</Name>
</ProjectReference>
<ProjectReference Include="..\..\QMAPP.BoraUpgrade.BLL\QMAPP.BoraUpgrade.BLL.csproj">
<Project>{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}</Project>
<Name>QMAPP.BoraUpgrade.BLL</Name>
</ProjectReference>
<ProjectReference Include="..\QMAPP.FJC.BLL\QMAPP.FJC.BLL.csproj">
<Project>{82A4D3A5-844B-49E0-9D06-0C2B273EF1F0}</Project>
<Name>QMAPP.FJC.BLL</Name>

128
QMAPP.BoraUpgrade.BLL/BoraUpgradeRouteBLL.cs

@ -0,0 +1,128 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.DAL;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.BLL
{
/// <summary>
/// 宝来升级路由业务层
/// </summary>
public class BoraUpgradeRouteBLL
{
/// <summary>
/// 获取全部宝来升级路由列表
/// </summary>
/// <returns></returns>
public static List<T_QD_BoraUpgradeRoute> GetBoraUpgradeRouteList()
{
List<T_QD_BoraUpgradeRoute> returnVal = new List<T_QD_BoraUpgradeRoute>();
DataTable dataTable = BoraUpgradeRouteDAL.GetBoraUpgradeRouteList();
if ( dataTable.Rows.Count != 0 )
{
foreach (DataRow currRow in dataTable.Rows)
{
T_QD_BoraUpgradeRoute newBoraUpgradeRoute = new T_QD_BoraUpgradeRoute();
newBoraUpgradeRoute.BoraRouteID = int.Parse( currRow["BoraRouteID"].ToString() );
newBoraUpgradeRoute.WorkCell_Code = currRow["WorkCell_Code"].ToString();
newBoraUpgradeRoute.NextWorkCell_Code = currRow["NextWorkCell_Code"].ToString();
newBoraUpgradeRoute.Machine_Code = currRow["Machine_Code"].ToString();
newBoraUpgradeRoute.RouteRegular = currRow["RouteRegular"].ToString();
newBoraUpgradeRoute.RouteDirection = int.Parse(currRow["RouteDirection"].ToString());
newBoraUpgradeRoute.IsProductCode = bool.Parse(currRow["IsProductCode"].ToString());
newBoraUpgradeRoute.IsClear = bool.Parse(currRow["IsClear"].ToString());
newBoraUpgradeRoute.IsDeleted = bool.Parse( currRow["IsDeleted"].ToString() );
newBoraUpgradeRoute.CreateTime = DateTime.Parse( currRow["CreateTime"].ToString() );
newBoraUpgradeRoute.ModeCode = currRow["ModeCode"].ToString();
if (!string.IsNullOrWhiteSpace(currRow["EmptyDAICount"].ToString()))
{
newBoraUpgradeRoute.EmptyDAICount = int.Parse(currRow["EmptyDAICount"].ToString());
}
else
{
newBoraUpgradeRoute.EmptyDAICount = -1;
}
returnVal.Add(newBoraUpgradeRoute);
}
}
return returnVal;
}
/// <summary>
/// 根据工位编码获取宝来升级路由实例
/// </summary>
/// <param name="WorkCell_Code">工位编码</param>
/// <returns></returns>
public static T_QD_BoraUpgradeRoute GetBoraUpgradeRouteByWorkCell(string WorkCell_Code)
{
T_QD_BoraUpgradeRoute returnVal = new T_QD_BoraUpgradeRoute();
DataTable dataTable = BoraUpgradeRouteDAL.GetBoraUpgradeRouteByWorkCell( WorkCell_Code );
if (dataTable.Rows.Count != 0)
{
foreach (DataRow currRow in dataTable.Rows)
{
returnVal.BoraRouteID = int.Parse(currRow["BoraRouteID"].ToString());
returnVal.WorkCell_Code = currRow["WorkCell_Code"].ToString();
returnVal.NextWorkCell_Code = currRow["NextWorkCell_Code"].ToString();
returnVal.Machine_Code = currRow["Machine_Code"].ToString();
returnVal.RouteRegular = currRow["RouteRegular"].ToString();
returnVal.RouteDirection = int.Parse(currRow["RouteDirection"].ToString());
returnVal.IsProductCode = bool.Parse(currRow["IsProductCode"].ToString());
returnVal.IsClear = bool.Parse(currRow["IsClear"].ToString());
returnVal.IsDeleted = bool.Parse(currRow["IsDeleted"].ToString());
returnVal.CreateTime = DateTime.Parse(currRow["CreateTime"].ToString());
if ( string.IsNullOrWhiteSpace(currRow["EmptyDAICount"].ToString()) )
{
returnVal.EmptyDAICount = int.Parse(currRow["EmptyDAICount"].ToString());
}
else
{
returnVal.EmptyDAICount = -1;
}
break;
}
}
else
{
returnVal = null;
}
return returnVal;
}
}
}

422
QMAPP.BoraUpgrade.BLL/PrintCodeRouteHelper.cs

@ -0,0 +1,422 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.DAL;
using QMAPP.BoraUpgrade.Entity;
using System.Text.RegularExpressions;
namespace QMAPP.BoraUpgrade.BLL
{
public class PrintCodeRouteHelper
{
#region 获取全部打码规则
/// <summary>
/// 获取全部打码规则
/// </summary>
/// <returns></returns>
public static List<T_CC_PrintCodeRoute> GetAllPrintCodeRouteList()
{
List<T_CC_PrintCodeRoute> returnVal = null;
DataTable dataSrouce = PrintCodeRouteDataAccess.GetPrintCodeRouteAllList();
if (dataSrouce.Rows.Count > 0)
{
returnVal = new List<T_CC_PrintCodeRoute>();
foreach (DataRow currDataRow in dataSrouce.Rows)
{
T_CC_PrintCodeRoute newPrintCodeRoute = new T_CC_PrintCodeRoute();
newPrintCodeRoute.PrintCodeRouteID = int.Parse(currDataRow[0].ToString());
newPrintCodeRoute.BarCodeRule = currDataRow[1].ToString();
newPrintCodeRoute.MachineName = currDataRow[2].ToString();
newPrintCodeRoute.MachineCode = currDataRow[3].ToString();
newPrintCodeRoute.Material_Code = currDataRow[4].ToString();
newPrintCodeRoute.WorkCell_Code = currDataRow[5].ToString();
newPrintCodeRoute.WorkLoc_Code = currDataRow[6].ToString();
newPrintCodeRoute.WorkCenter = currDataRow[7].ToString();
newPrintCodeRoute.Matrail_Type = currDataRow[8].ToString();
newPrintCodeRoute.IsProduct = bool.Parse(currDataRow[9].ToString());
newPrintCodeRoute.IsAppend = bool.Parse(currDataRow[10].ToString());
newPrintCodeRoute.Color = int.Parse(currDataRow["Color"].ToString());
newPrintCodeRoute.MachineID = currDataRow["MachineID"].ToString();
returnVal.Add(newPrintCodeRoute);
}
}
return returnVal;
}
#endregion
#region
/// <summary>
/// 处理打码路由
/// </summary>
/// <param name="ProductCode">产品码</param>
/// <param name="WorkCell_Code">工位码</param>
public static T_CC_PrintCodeRoute ProcessPrintCodeRoute(List<T_CC_PrintCodeRoute> ePrintCodeRouteList, string ProductCode, string WorkCell_Code)
{
T_CC_PrintCodeRoute returnVal = null;
//提取产品信息
T_AW_PRODUCT eProduct = ProductHelper.GetProductByProductCode(ProductCode);
if (eProduct == null)
{
#region 处理新增
foreach ( T_CC_PrintCodeRoute ePrintCodeRoute in ePrintCodeRouteList )
{
//匹配工位
T_CC_PrintCodeRoute eMatchingPrintCodeRoute =
ePrintCodeRouteList.Find(s => s.WorkCell_Code == WorkCell_Code);
//判断是否存在匹配
if ( eMatchingPrintCodeRoute == null )
{
break;
}
//changed by wrx 20200312 Regex.IsMatch("A3ZQZC202003120003", "1")=true Regex.IsMatch("A3ZQZC202003", "1")=false 不知道为什么
string realProductCode = string.Empty;
string createTime = string.Empty;
string color = string.Empty;
string machineID = string.Empty;
if ( ProductCode.Length == 29 )
{
realProductCode = ProductCode.Substring(0, 23);
createTime = string.Format("20{0}-{1}-{2} {3}:{4}:{5}", ProductCode.Substring(11, 2), ProductCode.Substring(13, 2), ProductCode.Substring(15, 2),
ProductCode.Substring(17, 2), ProductCode.Substring(19, 2), ProductCode.Substring(21, 2)
);
color = ProductCode.Substring(23, 1);
machineID = ProductCode.Substring(24, 1);
}
else
{
return null;
}
if (System.Text.RegularExpressions.Regex.IsMatch(realProductCode, ePrintCodeRoute.BarCodeRule) == true
&& ePrintCodeRoute.WorkCell_Code.ToUpper().Trim() == WorkCell_Code.ToUpper().Trim()
&& ePrintCodeRoute.BarCodeRule != "1" && ePrintCodeRoute.BarCodeRule != "2" && ePrintCodeRoute.BarCodeRule != "3"
&& color == ePrintCodeRoute.Color.ToString() && machineID == ePrintCodeRoute.MachineID
)
{
if (eMatchingPrintCodeRoute.IsProduct == true)
{
//判断是否追加
if (eMatchingPrintCodeRoute.IsAppend == true)
{
#region 组成新增产品实例
T_AW_PRODUCT newProduct = new T_AW_PRODUCT();
newProduct.PID = Guid.NewGuid().ToString();
newProduct.PRODUCTTYPE = string.Empty;
newProduct.PRODUCTCODE = ProductCode;
newProduct.PRODUCTSOURCE = "0";
newProduct.MACHINENAME = ePrintCodeRoute.MachineName;
newProduct.MACHINECODDE = ePrintCodeRoute.MachineCode;
newProduct.MATERIAL_CODE = ePrintCodeRoute.Material_Code;
newProduct.STATUS = "0";
newProduct.OUTFLAG = "0";
newProduct.CAPACITY = 1;
newProduct.USINGCOUNT = 0;
newProduct.WORKCELL_CODE = ePrintCodeRoute.WorkCell_Code;
newProduct.WORKLOC_CODE = ePrintCodeRoute.WorkLoc_Code;
newProduct.WORKCENTER_CODE = ePrintCodeRoute.WorkCenter;
newProduct.MATERIAL_TYPE = ePrintCodeRoute.Matrail_Type;
newProduct.USINGSTATE = "0";
newProduct.CREATEDATE = DateTime.Parse(createTime);
#endregion
//新增
ProductHelper.Insert(newProduct);
}
}
//非产品
if (eMatchingPrintCodeRoute.IsProduct == false)
{
returnVal = eMatchingPrintCodeRoute;
}
break;
}
}
#endregion
}
else
{
if (ePrintCodeRouteList == null || ePrintCodeRouteList.Count == 0) return null;
//匹配工位
List<T_CC_PrintCodeRoute> eMatchingPrintCodeRouteList =
ePrintCodeRouteList.FindAll(s => s.WorkCell_Code == WorkCell_Code);
#region 处理更新
foreach (T_CC_PrintCodeRoute ePrintCodeRoute in eMatchingPrintCodeRouteList)
{
if ( System.Text.RegularExpressions.Regex.IsMatch(ProductCode, ePrintCodeRoute.BarCodeRule) == false )
{
break;
}
//changed by wrx 20200312 Regex.IsMatch("A3ZQZC202003120003", "1")=true Regex.IsMatch("A3ZQZC202003", "1")=false 不知道为什么
if (ePrintCodeRoute.WorkCell_Code.ToUpper().Trim() == WorkCell_Code.ToUpper().Trim() && ePrintCodeRoute.IsAppend == false && eProduct.USINGSTATE == "0"
&& ePrintCodeRoute.BarCodeRule != "1" && ePrintCodeRoute.BarCodeRule != "2" && ePrintCodeRoute.BarCodeRule != "3")
{
T_AW_PRODUCT modifyProduct = new T_AW_PRODUCT();
modifyProduct.PID = eProduct.PID;
//modifyProduct.MATERIAL_CODE = ePrintCodeRoute.Material_Code;
modifyProduct.WORKCELL_CODE = ePrintCodeRoute.WorkCell_Code;
modifyProduct.WORKLOC_CODE = ePrintCodeRoute.WorkLoc_Code;
modifyProduct.WORKCENTER_CODE = ePrintCodeRoute.WorkCenter;
modifyProduct.MATERIAL_TYPE = ePrintCodeRoute.Matrail_Type;
ProductHelper.Modify(modifyProduct);
}
}
#endregion
}
return returnVal;
}
public static void SaveLLightBarCode(List<T_CC_PrintCodeRoute> pPrintCodeRouteList,string pProductCode,string pWorkCellCode)
{
foreach(T_CC_PrintCodeRoute route in pPrintCodeRouteList)
{
if(System.Text.RegularExpressions.Regex.IsMatch(pProductCode, route.BarCodeRule) == true && route.WorkCell_Code == pWorkCellCode)
{
DataTable exsitTable = PrintCodeRouteDataAccess.GetExsitProductCodeQty(pProductCode, pWorkCellCode);
if(exsitTable.Rows.Count == 0)
{
T_AW_PRODUCT newProduct = new T_AW_PRODUCT();
newProduct.PID = Guid.NewGuid().ToString();
newProduct.PRODUCTTYPE = string.Empty;
newProduct.PRODUCTCODE = pProductCode;
newProduct.PRODUCTSOURCE = "0";
newProduct.MACHINENAME = route.MachineName;
newProduct.MACHINECODDE = route.MachineCode;
newProduct.MATERIAL_CODE = route.Material_Code;
newProduct.STATUS = "0";
newProduct.OUTFLAG = "0";
newProduct.CAPACITY = 1;
newProduct.USINGCOUNT = 0;
newProduct.WORKCELL_CODE = route.WorkCell_Code;
newProduct.WORKLOC_CODE = route.WorkLoc_Code;
newProduct.WORKCENTER_CODE = route.WorkCenter;
newProduct.MATERIAL_TYPE = route.Matrail_Type;
newProduct.USINGSTATE = "0";
newProduct.CREATEDATE = DateTime.Now;
#endregion
//新增
ProductHelper.Insert(newProduct);
}
//else
//{
// T_AW_PRODUCT modifyProduct = new T_AW_PRODUCT();
// modifyProduct.PID = exsitTable.Rows[0]["PID"].ToString();
// //modifyProduct.MATERIAL_CODE = ePrintCodeRoute.Material_Code;
// modifyProduct.WORKCELL_CODE = route.WorkCell_Code;
// modifyProduct.WORKLOC_CODE = route.WorkLoc_Code;
// modifyProduct.WORKCENTER_CODE = route.WorkCenter;
// modifyProduct.MATERIAL_TYPE = route.Matrail_Type;
// ProductHelper.Modify(modifyProduct);
//}
return;
}
}
}
#region 处理打码路由
/// <summary>
/// 处理打码路由
/// </summary>
/// <param name="ProductCode">产品码</param>
/// <param name="WorkCell_Code">工位码</param>
public static T_CC_PrintCodeRoute ProcessPrintCodeRoute(List<T_CC_PrintCodeRoute> ePrintCodeRouteList, string ProductCode)
{
T_CC_PrintCodeRoute returnVal = null;
//提取产品信息
T_AW_PRODUCT eProduct = ProductHelper.GetProductByProductCode(ProductCode);
if (eProduct == null)
{
#region 处理新增
foreach (T_CC_PrintCodeRoute ePrintCodeRoute in ePrintCodeRouteList)
{
//changed by wrx 20200312 Regex.IsMatch("A3ZQZC202003120003", "1")=true Regex.IsMatch("A3ZQZC202003", "1")=false 不知道为什么
string realProductCode = string.Empty;
string createTime = string.Empty;
string color = string.Empty;
string machineID = string.Empty;
if (ProductCode.Length == 29)
{
realProductCode = ProductCode.Substring(0, 23);
createTime = string.Format("20{0}-{1}-{2} {3}:{4}:{5}", ProductCode.Substring(11, 2), ProductCode.Substring(13, 2), ProductCode.Substring(15, 2),
ProductCode.Substring(17, 2), ProductCode.Substring(19, 2), ProductCode.Substring(21, 2)
);
color = ProductCode.Substring(23, 1);
machineID = ProductCode.Substring(24, 1);
}
else
{
return null;
}
if (System.Text.RegularExpressions.Regex.IsMatch(realProductCode, ePrintCodeRoute.BarCodeRule) == true
&& ePrintCodeRoute.BarCodeRule != "1" && ePrintCodeRoute.BarCodeRule != "2" && ePrintCodeRoute.BarCodeRule != "3"
&& color == ePrintCodeRoute.Color.ToString() && machineID == ePrintCodeRoute.MachineID
)
{
#region 组成新增产品实例
T_AW_PRODUCT newProduct = new T_AW_PRODUCT();
newProduct.PID = Guid.NewGuid().ToString();
newProduct.PRODUCTTYPE = string.Empty;
newProduct.PRODUCTCODE = ProductCode;
newProduct.PRODUCTSOURCE = "0";
newProduct.MACHINENAME = ePrintCodeRoute.MachineName;
newProduct.MACHINECODDE = ePrintCodeRoute.MachineCode;
newProduct.MATERIAL_CODE = ePrintCodeRoute.Material_Code;
newProduct.STATUS = "0";
newProduct.OUTFLAG = "0";
newProduct.CAPACITY = 1;
newProduct.USINGCOUNT = 0;
newProduct.WORKCELL_CODE = ePrintCodeRoute.WorkCell_Code;
newProduct.WORKLOC_CODE = ePrintCodeRoute.WorkLoc_Code;
newProduct.WORKCENTER_CODE = ePrintCodeRoute.WorkCenter;
newProduct.MATERIAL_TYPE = ePrintCodeRoute.Matrail_Type;
newProduct.USINGSTATE = "0";
newProduct.CREATEDATE = DateTime.Parse(createTime);
#endregion
//新增
ProductHelper.Insert(newProduct);
break;
}
}
#endregion
}
return returnVal;
}
#endregion
}
}

6
QMAPP.BoraUpgrade.BLL/ProduceShift.cs

@ -0,0 +1,6 @@
namespace QMAPP.BoraUpgrade.BLL
{
public class ProduceShiftOld
{
}
}

149
QMAPP.BoraUpgrade.BLL/ProductHelper.cs

@ -0,0 +1,149 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.DAL;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.BLL
{
public class ProductHelper
{
/// <summary>
/// 新增产品信息
/// </summary>
/// <param name="eProduct">产品实例</param>
/// <returns>成功 True 否则 False</returns>
public static bool Insert(T_AW_PRODUCT eProduct)
{
bool returnVal = false;
returnVal = ProductDataAccess.Insert(eProduct);
return returnVal;
}
public static int GetIsMilling(string productCode)
{
return ProductDataAccess.GetIsMilling(productCode);
}
/// <summary>
/// 根据ProductCode提取产品实例
/// </summary>
/// <param name="productCode">产品编号</param>
/// <returns></returns>
public static T_AW_PRODUCT GetProductByProductCode(string productCode)
{
T_AW_PRODUCT returnVal = null;
DataTable dataSrouce = ProductDataAccess.GetProductByProductCode(productCode);
if (dataSrouce.Rows.Count > 0)
{
returnVal = new T_AW_PRODUCT();
DataRow fristDataRow = dataSrouce.Rows[0];
returnVal.PID = fristDataRow[0].ToString();
returnVal.PRODUCTCODE = fristDataRow[2].ToString();
returnVal.MATERIAL_CODE = fristDataRow[6].ToString();
returnVal.PLAN_NO = fristDataRow[27].ToString();
returnVal.USINGCOUNT = int.Parse(fristDataRow["USINGCOUNT"].ToString());
returnVal.USINGSTATE = fristDataRow["USINGSTATE"].ToString();
}
return returnVal;
}
public static T_AW_PRODUCT GetProductByLoc(string productCode, string locCode)
{
T_AW_PRODUCT returnVal = null;
DataTable dataSrouce = ProductDataAccess.GetProductByLocCode(productCode, locCode);
if (dataSrouce.Rows.Count > 0)
{
returnVal = new T_AW_PRODUCT();
DataRow fristDataRow = dataSrouce.Rows[0];
returnVal.PID = fristDataRow["PID"].ToString();
returnVal.PRODUCTCODE = fristDataRow["PRODUCTCODE"].ToString();
returnVal.MATERIAL_CODE = fristDataRow["MATERIAL_CODE"].ToString();
returnVal.STATUS = fristDataRow["STATUS"].ToString();
returnVal.USINGSTATE = fristDataRow["USINGSTATE"].ToString();
returnVal.WORKCELL_CODE = fristDataRow["WORKCELL_CODE"].ToString();
returnVal.WORKLOC_CODE = fristDataRow["WORKLOC_CODE"].ToString();
returnVal.MACHINECODDE = fristDataRow["MACHINECODDE"].ToString();
if (!string.IsNullOrEmpty(fristDataRow["UPDATEDATE"].ToString()))
returnVal.UPDATEDATE = DateTime.Parse(fristDataRow["UPDATEDATE"].ToString());
if (!string.IsNullOrEmpty(fristDataRow["CREATEDATE"].ToString()))
returnVal.CREATEDATE = DateTime.Parse(fristDataRow["CREATEDATE"].ToString());
}
return returnVal;
}
public static DataTable GetBora3MCodes(string pMaterialCode)
{
return ProductDataAccess.GetBora3MCodes(pMaterialCode);
}
/// <summary>
/// 宝来3.0洗削后,将产品物料号,从宝来3.0的新物料号改回原物料号
/// </summary>
/// <param name="productCode">产品条码</param>
/// <param name="mCode">宝来物料号</param>
/// <param name="bora3MCode">宝来3.0物料号</param>
public static bool UpdateProductMaterialCode(string productCode, string mCode, string bora3MCode)
{
return ProductDataAccess.UpdateProductMaterialCode(productCode, mCode, bora3MCode);
}
public static DateTime GetSerivceTime()
{
return ProductDataAccess.GetServiceDateTime();
}
#region 修改产品信息
/// <summary>
/// 修改产品信息
/// </summary>
/// <param name="eProduct">产品信息实例</param>
/// <returns>成功 True 否则 False</returns>
public static bool Update(T_AW_PRODUCT eProduct)
{
bool returnVal = false;
returnVal = ProductDataAccess.Update(eProduct);
return returnVal;
}
public static bool Modify(T_AW_PRODUCT eProduct)
{
bool returnVal = false;
returnVal = ProductDataAccess.Modify(eProduct);
return returnVal;
}
#endregion
}
}

27
QMAPP.BoraUpgrade.BLL/ProductMaxCodeBLL.cs

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.DAL;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.BLL
{
public class ProductMaxCodeBLL
{
#region 根据工单ID提取物料列表
/// <summary>
/// 根据工单ID提取物料列表
/// </summary>
/// <returns></returns>
public static int GetProductMaxCode(string MATERIAL_TYPE_CODE, string GenerateDate, string ProductType)
{
return QMAPP.BoraUpgrade.DAL.ProductMaxCodeDAL.GetProductMaxCode(MATERIAL_TYPE_CODE, GenerateDate, ProductType);
}
#endregion
}
}

36
QMAPP.BoraUpgrade.BLL/Properties/AssemblyInfo.cs

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("QMAPP.BoraUpgrade.BLL")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("QMAPP.BoraUpgrade.BLL")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("109a6e75-15f1-49e5-a7fb-fd1555d79f46")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 内部版本号
// 修订号
//
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

75
QMAPP.BoraUpgrade.BLL/QMAPP.BoraUpgrade.BLL.csproj

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>QMAPP.BoraUpgrade.BLL</RootNamespace>
<AssemblyName>QMAPP.BoraUpgrade.BLL</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="BoraUpgradeRouteBLL.cs" />
<Compile Include="PrintCodeRouteHelper.cs" />
<Compile Include="ProduceShift.cs" />
<Compile Include="ProductHelper.cs" />
<Compile Include="ProductMaxCodeBLL.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="VirtualMaterialBLL.cs" />
<Compile Include="WorkCellHelper.cs" />
<Compile Include="WorkOrderBLL.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\APPQ5\QMAPP.FJC.Entity\QMAPP.FJC.Entity.csproj">
<Project>{17123cdd-0ba7-496f-8e4e-fcbabe0463ca}</Project>
<Name>QMAPP.FJC.Entity</Name>
</ProjectReference>
<ProjectReference Include="..\QMAPP.BoraUpgrade.DAL\QMAPP.BoraUpgrade.DAL.csproj">
<Project>{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}</Project>
<Name>QMAPP.BoraUpgrade.DAL</Name>
</ProjectReference>
<ProjectReference Include="..\QMAPP.BoraUpgrade.Entity\QMAPP.BoraUpgrade.Entity.csproj">
<Project>{0C8B7A06-ED56-4198-9386-B8EA1D176571}</Project>
<Name>QMAPP.BoraUpgrade.Entity</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

47
QMAPP.BoraUpgrade.BLL/VirtualMaterialBLL.cs

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.DAL;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.BLL
{
public class VirtualMaterialBLL
{
/// <summary>
/// 获取全部宝来升级路由列表
/// </summary>
/// <returns></returns>
public static List<T_QD_VirtualMaterial> GetVirtualMateialByWorkCellCode(string workCellCode)
{
List<T_QD_VirtualMaterial> returnVal = new List<T_QD_VirtualMaterial>();
DataTable dataTable = VirtualMaterialDAL.GetVirtualMaterialByWorkCellCode(workCellCode);
if (dataTable.Rows.Count != 0)
{
foreach (DataRow currRow in dataTable.Rows)
{
T_QD_VirtualMaterial newVirtualMaterial = new T_QD_VirtualMaterial();
newVirtualMaterial.PID = int.Parse( currRow["PID"].ToString() );
newVirtualMaterial.WorkCellCode = currRow["WorkCellCode"].ToString();
newVirtualMaterial.MaterialCode = currRow["MaterialCode"].ToString();
newVirtualMaterial.MaterialType = currRow["MaterialType"].ToString();
returnVal.Add(newVirtualMaterial);
}
}
return returnVal;
}
}
}

27
QMAPP.BoraUpgrade.BLL/WorkCellHelper.cs

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.DAL;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.BLL
{
public class WorkCellHelper
{
#region 根据当前工位码提取前序工位处理码
/// <summary>
/// 根据当前工位码提取前序工位处理码
/// </summary>
/// <returns></returns>
public static string GetPreWorkCellProccessCode(string currWorkCellCode,int _Count,int OutTime,string metairal_type)
{
return QMAPP.BoraUpgrade.DAL.WorkCellDAL.GetPreWorkCellProccessCode(currWorkCellCode, _Count, OutTime, metairal_type);
}
#endregion
}
}

256
QMAPP.BoraUpgrade.BLL/WorkOrderBLL.cs

@ -0,0 +1,256 @@
using System;
using System.Collections.Generic;
using System.Linq;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.DAL;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.BLL
{
public class WorkOrderBLL
{
/// <summary>
/// 获取全部宝来升级路由列表
/// </summary>
/// <returns></returns>
public static T_MD_MATERIAL GetMaterialListByWorkOrderID(string workOrderID, string materialType)
{
T_MD_MATERIAL newMaterial = new T_MD_MATERIAL();
DataTable dataTable = QMAPP.BoraUpgrade.DAL.WorkOrderDAL.GetMaterialByWorkOrderID(workOrderID, materialType);
if (dataTable.Rows.Count != 0)
{
foreach (DataRow currRow in dataTable.Rows)
{
newMaterial.PID = currRow["PID"].ToString();
newMaterial.MATERIAL_CODE = currRow["MATERIAL_CODE"].ToString();
newMaterial.MATERIAL_TYPE_CODE = currRow["MATERIAL_TYPE_CODE"].ToString();
newMaterial.UNIT_CODE = currRow["UNIT_CODE"].ToString();
newMaterial.MATERIAL_NAME = currRow["MATERIAL_NAME"].ToString();
newMaterial.MATERIAL_COMP = currRow["MATERIAL_COMP"].ToString();
newMaterial.REMARK = currRow["REMARK"].ToString();
newMaterial.CREATEUSER = currRow["CREATEUSER"].ToString();
newMaterial.CREATEDATE = DateTime.Parse(currRow["CREATEDATE"].ToString());
newMaterial.UPDATEUSER = currRow["UPDATEUSER"].ToString();
newMaterial.UPDATEDATE = currRow["UPDATEDATE"].ToString();
newMaterial.OUTSOURCE = currRow["OUTSOURCE"].ToString();
newMaterial.STD_QTY = int.Parse(currRow["STD_QTY"].ToString());
newMaterial.FLGDEL = currRow["FLGDEL"].ToString();
newMaterial.COLOR = currRow["COLOR"].ToString();
newMaterial.HBTYPE = currRow["HBTYPE"].ToString();
newMaterial.PROJECTCODE = currRow["PROJECTCODE"].ToString();
if ( !string.IsNullOrWhiteSpace(currRow["WEIGHT"].ToString()) )
{
newMaterial.WEIGHT = int.Parse(currRow["WEIGHT"].ToString());
}
newMaterial.MATERIAL_SHORT = currRow["MATERIAL_SHORT"].ToString();
newMaterial.WORKBIN_TYPE = currRow["WORKBIN_TYPE"].ToString();
newMaterial.CAPACITY = int.Parse(currRow["CAPACITY"].ToString());
newMaterial.FACTORY_CODE = currRow["FACTORY_CODE"].ToString();
}
}
return newMaterial;
}
/// <summary>
/// 查询fis工单
/// </summary>
/// <param name="state">0:未处理 1:已打印BZD 2:已器具排序</param>
/// <returns></returns>
public static DataTable GetFisOrder(string lineCode,int state,int pQty = 1000)
{
return WorkOrderDAL.GetFisOrders(lineCode, state, pQty);
}
/// <summary>
/// 修改fis订单的状态
/// </summary>
/// <param name="orderNo"></param>
/// <param name="state"></param>
/// <returns></returns>
public static bool UpdateFisOrderState(string pOrderNo, string pBzdCode, int state)
{
return WorkOrderDAL.UpdateFisOrderState(pOrderNo, pBzdCode, state);
}
/// <summary>
/// 终检排序扫描记录的保存 T_AW_FinalSortRecord
/// </summary>
/// <returns></returns>
public static bool SaveSacnOrderRecord(DataRow dataRow)
{
return WorkOrderDAL.SaveSacnOrderRecord(dataRow);
}
/// <summary>
/// A3车型,根据BZD条码获取物料号
/// </summary>
/// <param name="bzdCode"></param>
/// <returns></returns>
public static string GetA3MaterialCodeByBZD(string bzdCode)
{
return WorkOrderDAL.GetA3MaterialCodeByBZD(bzdCode);
}
/// <summary>
/// MPID码获取物料号
/// </summary>
/// <param name="bzdCode"></param>
/// <returns></returns>
public static string GetA3MaterialCodeByPID(string mpid)
{
return WorkOrderDAL.GetA3MaterialCodeByPID(mpid);
}
/// <summary>
/// BZD条码是否没有被使用
/// </summary>
/// <param name="pBzdCode"></param>
/// <returns></returns>
public static bool IsNoUsedBzdCode(string pBzdCode)
{
return WorkOrderDAL.IsNoUsedBzdCode(pBzdCode);
}
/// <summary>
/// 宝来仪表板,根据本体码查询总成数据
/// </summary>
/// <param name="productCode"></param>
/// <returns></returns>
public static DataTable GetMainInfo(string productCode)
{
return WorkOrderDAL.GetMainInfo(productCode);
}
/// <summary>
/// 根据扫描的本体码查找生产产品的总成零件号
/// 适合倒数第二工位 ,在product表找最新生产记录的物料号. 然后在pbomitem表找到pbomcode. 最后在pbom表找到总成零件号
/// </summary>
/// <param name="productCode"></param>
/// <returns></returns>
public static string GetPMaterialCode(string productCode)
{
return WorkOrderDAL.GetPMaterialCode(productCode);
}
/// <summary>
/// 校验该本体条码在该工序是否生产完成
/// </summary>
/// <param name="productCode"></param>
/// <param name="lastCellCode"></param>
/// <returns></returns>
public static bool VerifyLastCellOver(string productCode,string lastCellCode)
{
return WorkOrderDAL.VerifyLastCellOver(productCode, lastCellCode);
}
public static bool IsBarCodeRepet(string productCode )
{
return WorkOrderDAL.IsBarCodeRepet(productCode);
}
/// <summary>
/// 查询计划编号
/// </summary>
/// <param name="productCode"></param>
/// <returns></returns>
public static string GetPlanCode(string productCode)
{
return WorkOrderDAL.GetPlanCode(productCode);
}
/// <summary>
/// 获取班次信息
/// </summary>
/// <returns></returns>
public static List<FJC.Entity.Basic.ProduceShift> GetShiftList()
{
return WorkOrderDAL.GetShiftList();
}
public static string GetBoraBZDCode(string productCode, string materialCode)
{
return WorkOrderDAL.GetBoraBZDCode(productCode, materialCode);
}
public static string GetA3ProductCodeByBzd(string bzdCode)
{
return WorkOrderDAL.GetA3ProductCodeByBzd(bzdCode);
}
public static string GetA3ProductCreateByBzd(string bzdCode)
{
return WorkOrderDAL.GetA3ProductCreateByBzd(bzdCode);
}
public static string GetA3MpidCodeByBzd(string bzdCode)
{
return WorkOrderDAL.GetA3MpidCodeByBzd(bzdCode);
}
public static void SaveA3MainRecord( string[] basicData, string userID, string materialCode, string bzdCode, string productionCode,string lineCode)
{
WorkOrderDAL.SaveA3MainRecord(basicData, bzdCode, productionCode, userID, materialCode, lineCode);
}
public static DataTable GetStoreData(int count = 100)
{
return WorkOrderDAL.GetStoreData(count);
}
/// <summary>
/// 计划挂起
/// </summary>
public static void UpBills(List<DataRow> upRows)
{
List<DataRow> rows = upRows.Where(p => p.Field<int>("SendState") != 0).ToList();
if(rows.Count >0)
{
List<string> list = rows.Select(p => p.Field<string>("FisOrderNo")).ToList();
throw new Exception("挂起失败,因为编号为[" + string.Join(";", list) + "]的订单正在生产或发运状态中,不满足要求");
}
foreach(DataRow upRow in upRows)
{
WorkOrderDAL.UpdateFisSetState(upRow);
}
}
/// <summary>
/// 查询每天早8:30到第二天8:30的产量
/// </summary>
/// <returns></returns>
public static string GetDayYield()
{
return WorkOrderDAL.GetDayYield();
}
public static string GetA3DayYield()
{
return WorkOrderDAL.GetA3DayYield();
}
public static string GetBoraHDayYield()
{
return WorkOrderDAL.GetBoraHDayYield();
}
public static string GetBoraLDayYield()
{
return WorkOrderDAL.GetBoraLDayYield();
}
public static void UpBillsDispose(List<DataRow> upRows)
{
List<DataRow> rows = upRows.Where(p => p.Field<int>("SendState") != 9).ToList();
if (rows.Count > 0)
{
List<string> list = rows.Select(p => p.Field<string>("FisOrderNo")).ToList();
throw new Exception("取消挂起失败,因为编号为[" + string.Join(";", list) + "]的订单不属于挂起状态!");
}
//foreach (DataRow upRow in upRows)
//{
// WorkOrderDAL.UpdateFisSetStateDispose(upRow);
//}
WorkOrderDAL.UpdateFisSetStateDisposes(upRows);
}
public static void SaveStartIndex(int startIndex)
{
WorkOrderDAL.SaveStartIndex(startIndex);
}
public static int GetStartIndex()
{
return WorkOrderDAL.GetStartIndex();
}
}
}

36
QMAPP.BoraUpgrade.Common/Config.cs

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Configuration;
namespace QMAPP.BoraUpgrade.Common
{
/// <summary>
/// 配置信息类
/// CreateTime:2018.10.30
/// Author :陈冲
/// Mail :22367340@qq.com
/// </summary>
public class Config
{
/// <summary>
/// 主数据库文件
/// </summary>
public static string maindbConnectionString = ConfigurationManager.ConnectionStrings["maindb"].ToString();
//"Data Source=10.123.4.21;Initial Catalog=ADIENT_QD_MES;User Id=sa;Password=adient708!;";// providerName="System.Data.SqlClient"
//public static string a3dbConnectionString = ConfigurationManager.ConnectionStrings["a3db"]?.ToString();
public static string a3dbConnectionString = ConfigurationManager.ConnectionStrings["maindb"]?.ToString();
public static string bzdConnectionString = ConfigurationManager.ConnectionStrings["maindbBZD"].ToString();
//"Data Source=10.123.4.65;Initial Catalog=ADIENT_QD_MES_4;User Id=mes;Password=123u3M12912@2;";//
///// <summary>
///// FIS数据库文件(需要在QMAPP.WinForm的App.Config中配置)
///// </summary>
//public static string maindbMBConnectionString = ConfigurationManager.ConnectionStrings["maindbMB"].ToString();
}
}

26
QMAPP.BoraUpgrade.Common/Enum.cs

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QMAPP.BoraUpgrade.Common
{
public class Enum
{
/// <summary>
/// 路由方向
/// </summary>
public enum RouteDirection
{
/// <summary>
/// 向前
/// </summary>
Forward = 0,
/// <summary>
/// 向后
/// </summary>
Backward = 1
}
}
}

36
QMAPP.BoraUpgrade.Common/Properties/AssemblyInfo.cs

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("QMAPP.BoraUpgrade.Common")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("QMAPP.BoraUpgrade.Common")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("f9eea6dc-197f-41ef-8b8e-fd197af81bd1")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 内部版本号
// 修订号
//
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

57
QMAPP.BoraUpgrade.Common/QMAPP.BoraUpgrade.Common.csproj

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{2DEB0026-EF98-4E33-A132-2F46B5E646FE}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>QMAPP.BoraUpgrade.Common</RootNamespace>
<AssemblyName>QMAPP.BoraUpgrade.Common</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Config.cs" />
<Compile Include="Enum.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SqlHelper.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

2612
QMAPP.BoraUpgrade.Common/SqlHelper.cs

File diff suppressed because it is too large

77
QMAPP.BoraUpgrade.DAL/BoraUpgradeRouteDAL.cs

@ -0,0 +1,77 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.Common;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.DAL
{
/// <summary>
/// 宝来升级路由数据层
/// </summary>
public class BoraUpgradeRouteDAL
{
#region 根据ProductCode提取产品实例
/// <summary>
/// 获取全部宝来升级路由列表
/// </summary>
/// <returns></returns>
public static DataTable GetBoraUpgradeRouteList()
{
DataTable returnVal = new DataTable();
string sqlScript =
@"
Select
*
From [dbo].[T_QD_BoraUpgradeRoute]
Where IsDeleted = 0
";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlScript );
if ( dataSet.Tables.Count > 0 )
{
returnVal = dataSet.Tables[0];
}
return returnVal;
}
/// <summary>
/// 根据工位编码获取宝来升级路由实例
/// </summary>
/// <param name="WorkCell_Code">工位编码</param>
/// <returns></returns>
public static DataTable GetBoraUpgradeRouteByWorkCell(string WorkCell_Code)
{
DataTable returnVal = new DataTable();
string sqlScript =
@"
Select
Top 1 *
From [dbo].[T_QD_BoraUpgradeRoute]
Where IsDeleted = 0
And WorkCell_Code = '{0}'
";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, string.Format(sqlScript,WorkCell_Code) );
if (dataSet.Tables.Count > 0)
{
returnVal = dataSet.Tables[0];
}
return returnVal;
}
#endregion
}
}

57
QMAPP.BoraUpgrade.DAL/PrintCodeRouteDataAccess.cs

@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.Common;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.DAL
{
/// <summary>
/// 注塑条码打码-数据访问类
/// CreateTime:2019.10.18
/// Author :陈冲
/// Mail :22367340@qq.com
/// </summary>
public class PrintCodeRouteDataAccess
{
#region 获取全部打码规则
/// <summary>
/// 获取全部打码规则
/// </summary>
/// <param name="productCode">产品编号</param>
/// <returns></returns>
public static DataTable GetPrintCodeRouteAllList()
{
DataTable returnVal = new DataTable();
string sqlScript = @"Select * From [T_QD_PrintCodeRoute]";
DataSet dataSet = SqlHelper.ExecuteDataset(Config.maindbConnectionString, CommandType.Text,sqlScript);
if ( dataSet.Tables.Count > 0 )
{
returnVal = dataSet.Tables[0];
}
return returnVal;
}
public static DataTable GetExsitProductCodeQty(string productCode,string cellCode)
{
string sql = $"select * from T_AW_Product where ProductCode='{productCode}' and WorkCell_Code='{cellCode}'";
DataSet dataSet = SqlHelper.ExecuteDataset(Config.maindbConnectionString, CommandType.Text, sql);
DataTable dataTable = dataSet.Tables[0];
return dataTable;
}
#endregion
}
}

304
QMAPP.BoraUpgrade.DAL/ProductDataAccess.cs

@ -0,0 +1,304 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.Common;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.DAL
{
/// <summary>
/// 门板种子数据-数据访问类
/// CreateTime:2018.10.31
/// Author :陈冲
/// Mail :22367340@qq.com
/// </summary>
public class ProductDataAccess
{
#region 新增产品信息
/// <summary>
/// 新增产品信息
/// </summary>
/// <param name="eProduct">产品信息实例</param>
/// <returns>成功 True 否则 False</returns>
public static bool Insert(T_AW_PRODUCT eProduct)
{
bool returnVal = false;
string sqlScriptTemp =
@"
Insert Into T_AW_Product
(PID,ProductType,ProductCode,ProductSource,MachineCodde,Material_Code,[Status],IsParent,CurrentProcess,PRODUCELINE,PRODUCESHIFTNAME,PRODUCESHIFTTCODE,
OutFlag,UsingState,Capacity,UsingCount,CreateUser,UpdateUser,WorkCell_Code,WorkLoc_Code,WorkCenter_Code,
Team_code,EndofLine,MATERIAL_TYPE,CreateDate,UpdateDate,PLAN_NO)
Values
(
'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}',
'{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}',
'{20}','{21}','{22}','{23}',getdate(),getdate(),'{24}'
)";
string sqlScript =
string.Format(sqlScriptTemp,
eProduct.PID, eProduct.PRODUCTTYPE, eProduct.PRODUCTCODE, eProduct.PRODUCTSOURCE,
eProduct.MACHINECODDE, eProduct.MATERIAL_CODE, eProduct.STATUS, eProduct.ISPARENT, eProduct.CURRENTPROCESS,
eProduct.PRODUCELINE, eProduct.PRODUCESHIFTNAME, eProduct.PRODUCESHIFTTCODE, eProduct.OUTFLAG,
eProduct.USINGSTATE, eProduct.CAPACITY, eProduct.USINGCOUNT, eProduct.CREATEUSER, eProduct.UPDATEUSER,
eProduct.WORKCELL_CODE, eProduct.WORKLOC_CODE, eProduct.WORKCENTER_CODE, eProduct.TEAM_CODE,
eProduct.ENDOFLINE, eProduct.MATERIAL_TYPE, eProduct.PLAN_NO
);
try
{
//执行SQL
int count = SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, sqlScript);
if (count > 0)
{
returnVal = true;
}
}
catch (Exception)
{
//后续加入日志
throw;
}
return returnVal;
}
#endregion
#region wrx
/// <summary>
/// 是否铣削过
/// </summary>
/// <param name="productCode"></param>
/// <returns>1:已铣削 0:未铣削</returns>
public static int GetIsMilling(string productCode)
{
string sqlScript =
@"Select Top 1 * From [dbo].[T_AW_MillingRecord] Where BarCode = '{0}' Order By AddTime Desc";
DataSet dataSet = SqlHelper.ExecuteDataset(Config.maindbConnectionString, CommandType.Text, string.Format(sqlScript, productCode));
if (dataSet.Tables.Count > 0)
{
if(dataSet.Tables[0].Rows.Count > 0)
return 1;
}
return 0;
}
#endregion
#region 根据ProductCode提取产品实例
/// <summary>
/// 根据ProductCode提取产品实例
/// </summary>
/// <param name="productCode">产品编号</param>
/// <returns></returns>
public static DataTable GetProductByProductCode(string productCode)
{
DataTable returnVal = new DataTable();
string sqlScript =
@"Select Top 1 * From [dbo].[T_AW_PRODUCT] Where USINGSTATE<> 2 and PRODUCTCODE = '{0}' Order By CREATEDATE Desc";
DataSet dataSet = SqlHelper.ExecuteDataset(Config.maindbConnectionString, CommandType.Text, string.Format(sqlScript, productCode));
if (dataSet.Tables.Count > 0)
{
returnVal = dataSet.Tables[0];
}
return returnVal;
}
/// <summary>
/// 根据产品条码以及工位查询
/// </summary>
/// <param name="productCode"></param>
/// <param name="locCode"></param>
/// <returns></returns>
public static DataTable GetProductByLocCode(string productCode, string locCode)
{
DataTable returnVal = new DataTable();
string sqlScript =
@"Select Top 1 * From [dbo].[T_AW_PRODUCT] Where PRODUCTCODE = '{0}' and WORKLOC_CODE='{1}' Order By UPDATEDATE Desc,CREATEDATE Desc ";
DataSet dataSet = SqlHelper.ExecuteDataset(Config.maindbConnectionString, CommandType.Text, string.Format(sqlScript, productCode, locCode));
if (dataSet.Tables.Count > 0)
{
returnVal = dataSet.Tables[0];
}
return returnVal;
}
public static DateTime GetServiceDateTime()
{
StringBuilder sql = new StringBuilder();
try
{
string sqlScript = @"select GetDATE() as time ";
DataSet dataSet = SqlHelper.ExecuteDataset(Config.maindbConnectionString, CommandType.Text, string.Format(sqlScript));
if (dataSet.Tables.Count > 0)
{
string datetimestr = dataSet.Tables[0].Rows[0]["time"].ToString() ;
return DateTime.Parse(datetimestr);
}
return DateTime.Now;
}
catch (Exception ex)
{
throw ex;
}
}
public static DataTable GetBora3MCodes(string pMaterialCode)
{
DataTable table = null;
List<string> list = new List<string>();
string sqlScript = $" select * from T_BD_Bora3Materials where Bora3MCode ='{pMaterialCode}'";
DataSet dataSet = SqlHelper.ExecuteDataset(Config.maindbConnectionString, CommandType.Text, sqlScript);
if (dataSet.Tables.Count > 0)
{
table = dataSet.Tables[0];
//foreach (DataRow dataRow in table.Rows)
//{
// string pbom = dataRow["Bora3MCode"].ToString();
// if (!list.Contains(pbom) && !string.IsNullOrEmpty(pbom))
// {
// list.Add(pbom);
// }
//}
}
return table;
}
public static bool UpdateProductMaterialCode(string productCode, string mCode, string bora3MCode)
{
bool returnVal = false;
string sqlScriptTemp = @"Update T_AW_Product Set MATERIAL_CODE = '{0}' Where PRODUCTCODE = '{1}' ";
string sqlScript =
string.Format(sqlScriptTemp, mCode, productCode);
try
{
//执行SQL
int count = SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, sqlScript);
if (count > 0)
{
returnVal = true;
}
}
catch (Exception)
{
//后续加入日志
throw;
}
return returnVal;
}
#endregion
#region 修改产品信息
/// <summary>
/// 修改产品信息
/// </summary>
/// <param name="eProduct">产品信息实例</param>
/// <returns>成功 True 否则 False</returns>
public static bool Update(T_AW_PRODUCT eProduct)
{
bool returnVal = false;
string sqlScriptTemp =
@"
Update T_AW_Product Set PLAN_NO = '{0}' Where PID = '{1}'
";
string sqlScript =
string.Format(sqlScriptTemp,eProduct.PLAN_NO,eProduct.PID
);
try
{
//执行SQL
int count = SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, sqlScript);
if (count > 0)
{
returnVal = true;
}
}
catch (Exception)
{
//后续加入日志
throw;
}
return returnVal;
}
#endregion
#region 修改产品信息
/// <summary>
/// 修改产品信息
/// </summary>
/// <param name="eProduct">产品信息实例</param>
/// <returns>成功 True 否则 False</returns>
public static bool Modify(T_AW_PRODUCT eProduct)
{
bool returnVal = false;
string sqlScriptTemp =
@"
Update T_AW_Product Set WORKCELL_CODE = '{0}',WORKLOC_CODE = '{1}',WORKCENTER_CODE='{2}',MATERIAL_TYPE='{3}' Where PID = '{4}'
";
string sqlScript =
string.Format(sqlScriptTemp, eProduct.WORKCELL_CODE,eProduct.WORKLOC_CODE,eProduct.WORKCENTER_CODE, eProduct.MATERIAL_TYPE,eProduct.PID
);
try
{
//执行SQL
int count = SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, sqlScript);
if (count > 0)
{
returnVal = true;
}
}
catch (Exception)
{
//后续加入日志
throw;
}
return returnVal;
}
#endregion
}
}

46
QMAPP.BoraUpgrade.DAL/ProductMaxCodeDAL.cs

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.Common;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.DAL
{
public class ProductMaxCodeDAL
{
#region 根据工单ID提取物料列表
/// <summary>
/// 根据工单ID提取物料列表
/// </summary>
/// <returns></returns>
public static int GetProductMaxCode(string MATERIAL_TYPE_CODE, string GenerateDate, string ProductType)
{
int returnVal = 1;
string sqlScript =
@"
SELECT ISNULL(MAX(RIGHT(PRODUCTCODE,6)),0)
FROM T_AW_PRODUCT WHERE MATERIAL_TYPE='{0}'
AND DATEDIFF(day,CREATEDATE,'{1}')=0
AND PRODUCTCODE LIKE '{2}%';
";
sqlScript = string.Format(sqlScript, MATERIAL_TYPE_CODE,GenerateDate, ProductType);
string result =
SqlHelper.ExecuteScalar(Config.maindbConnectionString, CommandType.Text, sqlScript).ToString();
int.TryParse(result, out returnVal);
return returnVal+1;
}
#endregion
}
}

36
QMAPP.BoraUpgrade.DAL/Properties/AssemblyInfo.cs

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("QMAPP.BoraUpgrade.DAL")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("QMAPP.BoraUpgrade.DAL")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("9cffeca1-5f19-47f8-8e26-bf8c0363801c")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 内部版本号
// 修订号
//
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

78
QMAPP.BoraUpgrade.DAL/QMAPP.BoraUpgrade.DAL.csproj

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>QMAPP.BoraUpgrade.DAL</RootNamespace>
<AssemblyName>QMAPP.BoraUpgrade.DAL</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="BoraUpgradeRouteDAL.cs" />
<Compile Include="PrintCodeRouteDataAccess.cs" />
<Compile Include="ProductDataAccess.cs" />
<Compile Include="ProductMaxCodeDAL.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="VirtualMaterialDAL.cs" />
<Compile Include="WorkCellDAL.cs" />
<Compile Include="WorkOrderDAL.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\APPQ5\QMAPP.FJC.Entity\QMAPP.FJC.Entity.csproj">
<Project>{17123cdd-0ba7-496f-8e4e-fcbabe0463ca}</Project>
<Name>QMAPP.FJC.Entity</Name>
</ProjectReference>
<ProjectReference Include="..\APP\QMAPP.Entity\QMAPP.Entity.csproj">
<Project>{604fb24f-7706-497c-bec7-27d7b6b5a82c}</Project>
<Name>QMAPP.Entity</Name>
</ProjectReference>
<ProjectReference Include="..\QMAPP.BoraUpgrade.Common\QMAPP.BoraUpgrade.Common.csproj">
<Project>{2DEB0026-EF98-4E33-A132-2F46B5E646FE}</Project>
<Name>QMAPP.BoraUpgrade.Common</Name>
</ProjectReference>
<ProjectReference Include="..\QMAPP.BoraUpgrade.Entity\QMAPP.BoraUpgrade.Entity.csproj">
<Project>{0C8B7A06-ED56-4198-9386-B8EA1D176571}</Project>
<Name>QMAPP.BoraUpgrade.Entity</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

43
QMAPP.BoraUpgrade.DAL/VirtualMaterialDAL.cs

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.Common;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.DAL
{
public class VirtualMaterialDAL
{
#region 根据工单ID提取物料列表
/// <summary>
/// 根据工单ID提取物料列表
/// </summary>
/// <returns></returns>
public static DataTable GetVirtualMaterialByWorkCellCode(string workCellCode)
{
DataTable returnVal = new DataTable();
string sqlScript =
@"
Select * From T_QD_VirtualMaterial Where WorkCellCode = '{0}'
";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, string.Format(sqlScript, workCellCode));
if (dataSet.Tables.Count > 0)
{
returnVal = dataSet.Tables[0];
}
return returnVal;
}
#endregion
}
}

54
QMAPP.BoraUpgrade.DAL/WorkCellDAL.cs

@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.Common;
using QMAPP.BoraUpgrade.Entity;
namespace QMAPP.BoraUpgrade.DAL
{
public class WorkCellDAL
{
#region 根据当前工位码提取前序工位处理码
/// <summary>
/// 根据当前工位码提取前序工位处理码
/// </summary>
/// <returns></returns>
public static string GetPreWorkCellProccessCode(string currWorkCellCode, int _Count, int OutTime, string metairal_type)
{
string returnVal = string.Empty;
string sqlScript =
@"
select top {0} A.PRODUCTCODE as PRODUCTCODE from T_AW_MAINOPERATION A left join (Select PRODUCTCODE From T_AW_Product
Where WORKLOC_CODE = '{2}' And Material_Type = '{3}' And UPDATEDATE > DATEADD(hh,-{1},GETDATE() )) B ON A.PRODUCTCODE = B.PRODUCTCODE
WHERE A.UPDATEDATE > DATEADD(hh,-{1},GETDATE() )
And A.WorkCell_Code In
(
Select Pre_WorkCell_Code From [dbo].T_MD_PROCESS_ROUTE_WORKCELL_SEQ Where FLGDEL = 0 And WorkCell_Code = '{2}'
)
and B.PRODUCTCODE IS NULL
Order By A.OperatedDate Desc
";
string aa = string.Format(sqlScript, _Count, OutTime, currWorkCellCode, metairal_type);
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, string.Format(sqlScript, _Count, OutTime, currWorkCellCode, metairal_type));
if (dataSet.Tables[0].Rows.Count > 0)
{
returnVal = dataSet.Tables[0].Rows[dataSet.Tables[0].Rows.Count - 1][0].ToString();
}
return returnVal;
}
#endregion
}
}

979
QMAPP.BoraUpgrade.DAL/WorkOrderDAL.cs

@ -0,0 +1,979 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ref:
using System.Data;
using QMAPP.BoraUpgrade.Common;
using QMAPP.BoraUpgrade.Entity;
using QMAPP.FJC.Entity.Operation;
using QMAPP.FJC.Entity.Basic;
namespace QMAPP.BoraUpgrade.DAL
{
public class WorkOrderDAL
{
#region 根据工单ID提取物料列表
/// <summary>
/// 根据工单ID提取物料列表
/// </summary>
/// <returns></returns>
public static DataTable GetMaterialByWorkOrderID(string workOrderID, string material_Type)
{
DataTable returnVal = new DataTable();
string sqlScript =
@"
Select * From T_MD_MATERIAL Where Material_Code In
(
Select Material_Code From T_MD_PBOM_ITEM Where PBOM_CODE IN
(
Select PBOM_Code From dbo.T_PP_WORKORDER Where PID = '{0}'
) And FLGDEl = 0
)
And FLGDEl = 0
And Material_Type_Code Like '{1}%'
";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, string.Format(sqlScript, workOrderID, material_Type));
if (dataSet.Tables.Count > 0)
{
returnVal = dataSet.Tables[0];
}
return returnVal;
}
#endregion
static string GetOldFisOrderSql(string WORKCENTER_CODE, int pState, int pQty)
{
StringBuilder strSql = new StringBuilder();
//List<DataParameter> parameters = new List<DataParameter>();
strSql.Append(" SELECT TOP " + pQty);
strSql.Append(" T1.ORDER_NO,T1.BZDCode, T1.PID,T1.VWSEQ,T1.PRODNO,T1.CARSETDESC_CN, T1.CP5A,T1.[LINENO], ");
strSql.Append("T1.KIN,T1.VIN,T1.SCANSTATE, T2.WORKCENTER_CODE ");
strSql.Append(" FROM dbo.V_PP_FISORDER T1 ");
strSql.Append(" INNER JOIN dbo.V_PP_FISORDERSENDDETAIL T2 ");
strSql.Append(" on T1.PID=T2.FIS_PID ");
strSql.Append(" WHERE T1.scanstate=0 ");
//strSql.Append(" and LEFT(T1.VWSEQ,2)='" + pFistype + "' AND T1.flagdel=0 ");
strSql.Append(" AND T1.flagdel=0 ");
strSql.Append($" AND T1.State={pState} ");
if (!string.IsNullOrEmpty(WORKCENTER_CODE))
{
strSql.Append(" and T2.WORKCENTER_CODE='" + WORKCENTER_CODE + "'");
}
strSql.Append(" ORDER BY T1.CP5A ASC,T1.VWSEQ ASC,T1.PRODNO ASC ");
return strSql.ToString();
}
static string GetNewFisOrderSql(string WORKCENTER_CODE, int pState, int pQty)
{
//string fisSendState = "";
//if(pState ==10)
//{
// fisSendState = "AND T1.SendState=0 ";
//}
//else if (pState == 11)
//{
// fisSendState = "AND T1.SendState=9 ";
//}
//else if (pState == 12)
//{
// fisSendState = "AND ( T1.SendState=0 or T1.SendState=9 ) ";
//}
//else
//{
// fisSendState = $"AND T1.SendState={pState} ";
//}
//StringBuilder strSql = new StringBuilder();
////List<DataParameter> parameters = new List<DataParameter>();
//strSql.Append(" SELECT TOP " + pQty);
//strSql.Append(" T1.ORDER_NO,T1.BZDCode, T1.PID,T1.VWSEQ,T1.PRODNO,T1.CARSETDESC_CN, T1.CP5A,T1.[LINENO], T1.[SendState], ");
//strSql.Append("T1.KIN,T1.VIN,T1.SCANSTATE ,T1.WORKCENTER_CODE ");
//strSql.Append(" FROM dbo.V_PP_FISORDER_ZDQ T1 ");
//strSql.Append(" WHERE 1=1 ");
////strSql.Append(" and LEFT(T1.VWSEQ,2)='" + pFistype + "' AND T1.flagdel=0 ");
//strSql.Append(" AND T1.flagdel=0 ");
////strSql.Append($" AND T1.SendState={pState} "); //T1.State是发运状态. T1.SendState是T_AW_FisSendState表的状态 //and T1.CP5A > '202008150108' and T1.order_no is not null
//strSql.Append(fisSendState);
//if (!string.IsNullOrEmpty(WORKCENTER_CODE))
//{
// strSql.Append(" and T1.WORKCENTER_CODE='" + WORKCENTER_CODE + "'");
//}
//strSql.Append(" ORDER BY T1.CP5A ASC,T1.VWSEQ ASC,T1.PRODNO ASC ");
//strSql.Append(" WHERE T1.scanstate=0 ");
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT TOP " + pQty);
strSql.Append(" W.[PID] ");
strSql.Append(" ,W.[ORDERPLANID] ");
strSql.Append(" ,W.[ORDERPLAN_NO] ");
strSql.Append(" ,W.[ORDER_TYPE] ");
strSql.Append(" ,W.[SEQ] ");
strSql.Append(" ,W.[MATERIAL_CODE] ");
strSql.Append(" ,M.[MATERIAL_NAME] ");
strSql.Append(" ,W.[PBOM_CODE] ");
strSql.Append(" ,W.[QTY] ");
strSql.Append(" ,W.[COMPLETE_QTY] ");
strSql.Append(" ,W.[PLAN_DATE] ");
strSql.Append(" ,W.[SHIFT_CODE] ");
strSql.Append(" ,W.[WORKCENTER_CODE] ");
strSql.Append(" ,W.[WORKCENTER_NAME] ");
strSql.Append(" ,W.[WORKCELL_CODE] ");
strSql.Append(" ,W.[WORKCELL_NAME] ");
strSql.Append(" ,W.[WORKLOC_CODE] ");
strSql.Append(" ,W.[REMARK] ");
strSql.Append(" ,W.[EQPT_NAME] ");
strSql.Append(" ,W.[EQPT_CODE] ");
strSql.Append(" ,W.[STATE] ");
strSql.Append(" ,W.[MOULD_CODE] ");
strSql.Append(" ,W.[PRI] ");
strSql.Append(" ,W.[UPDATEDATE] ");
strSql.Append(" ,P.[IGNORE_FISBREAK] ");
strSql.Append(" ,P.[FIS_ASMSETCODE] ");
strSql.Append(" FROM [T_PP_WORKORDER] AS W WITH(NOLOCK) ");
strSql.Append(" LEFT JOIN [T_PP_ORDERPLAN] AS P WITH(NOLOCK) ");
strSql.Append(" ON P.[PID]=W.[ORDERPLANID] ");
strSql.Append(" LEFT JOIN [T_MD_MATERIAL] AS M WITH(NOLOCK)");
strSql.Append(" ON W.[MATERIAL_CODE] = M.[MATERIAL_CODE] ");
strSql.Append(" WHERE W.[WORKCELL_CODE] = '" + WORKCENTER_CODE + "'");
switch (pState)
{
case 1:
{
strSql.Append(" AND W.[STATE]<>4 ");
break;
}
case 2:
{
strSql.Append(" AND W.[STATE]=4 ");
break;
}
}
strSql.AppendFormat(" ORDER BY W.[UPDATEDATE],W.[PRI],W.[PLAN_DATE],P.PLAN_SEQ,W.[SEQ],W.[MATERIAL_CODE] ");
return strSql.ToString();
}
/// <summary>
/// 查询fis订单
/// </summary>
/// <param name="state">0:未处理 1:已打印BZD 2:已器具排序</param>
/// <returns></returns>
public static DataTable GetFisOrders( string WORKCENTER_CODE, int pState,int pQty)
{
#region
try
{
DataTable returnDt = null;
string sqlStr = GetNewFisOrderSql(WORKCENTER_CODE, pState, pQty);
//using (IDataSession session = AppDataFactory.CreateMainSession())
//{
// returnDt = session.GetTable(strSql.ToString(), parameters.ToArray());
//}
DataSet ds = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlStr);
returnDt = ds.Tables[0];
//逻辑说明
//FIS要货计划都有大众上线时间CP5A:201611011001表示2016年11月1号10点01分上线
//FIS要货计划都有一个大众顺序号VWSEQ: 018029或是029382,前两位01和02表示东厂和西厂,没有锦衣卫
//后面四位表示实际顺序号,所以9999台一轮回,
//实际出现的情况有可能出现同一个分钟上线的大众顺序号可能有两个
//如果出现019999和010001,实际的顺序是019999在前,010001在后,即上一个轮回的最后一条和下一个轮回的第一条
//如果这样前面的查询语句中就会把010001排在019999前面
//所以要处理这种情况。
//实现方式就是获取数据后,放到两个表中,这两个表相同,遍历第一个表,用记录和后一条记录比较,
//如果大众上线时间相同并且两个顺序号的差值在1000以上,一定是顺序出差,
//差值1000是个估计值,9999与1差值是9998,我们之前1000
//修改第二个表中的对应的数据
//极端情况出现一个大众上线时间对一个三个大众顺序号,
//这里一并处理
//if (returnDt.Rows.Count > 1)
//{
// //必须进行第一次循环
// bool flag = true;
// while (flag)
// {
// //复制表
// DataTable dt = returnDt.Copy();
// //是否进行了值的交换标记
// bool isChange = false;
// for (int i = 0; i < dt.Rows.Count; i++)
// {
// if (i == dt.Rows.Count - 1)
// continue;
// //获取当前行对象
// DataRow dr = dt.Rows[i];
// string cp5aDr = dr["CP5A"].ToString();
// int seqDr = Convert.ToInt32(dr["VWSEQ"].ToString().Substring(2));
// //获取下一行对象
// DataRow nextDr = dt.Rows[i + 1];
// string nextCp5a = nextDr["CP5A"].ToString();
// int nextSeq = Convert.ToInt32(nextDr["VWSEQ"].ToString().Substring(2));
// //如果两行记录的大众上线时间不相同
// //不需要比较
// if (cp5aDr != nextCp5a)
// continue;
// //如果大众上线时间相同并且前后值大于1000,
// //我们默认是
// if (nextSeq - seqDr > 1000)
// {
// returnDt.Rows[i]["PID"] = nextDr["PID"].ToString();
// returnDt.Rows[i]["VWSEQ"] = nextDr["VWSEQ"].ToString();
// returnDt.Rows[i]["PRODNO"] = nextDr["PRODNO"].ToString();
// returnDt.Rows[i]["CARSETDESC_CN"] = nextDr["CARSETDESC_CN"].ToString();
// returnDt.Rows[i]["CP5A"] = nextDr["CP5A"].ToString();
// returnDt.Rows[i]["LINENO"] = nextDr["LINENO"].ToString();
// returnDt.Rows[i]["KIN"] = nextDr["KIN"].ToString();
// returnDt.Rows[i]["VIN"] = nextDr["VIN"].ToString();
// returnDt.Rows[i]["SCANSTATE"] = nextDr["SCANSTATE"].ToString();
// returnDt.Rows[i + 1]["PID"] = dr["PID"].ToString();
// returnDt.Rows[i + 1]["VWSEQ"] = dr["VWSEQ"].ToString();
// returnDt.Rows[i + 1]["PRODNO"] = dr["PRODNO"].ToString();
// returnDt.Rows[i + 1]["CARSETDESC_CN"] = dr["CARSETDESC_CN"].ToString();
// returnDt.Rows[i + 1]["CP5A"] = dr["CP5A"].ToString();
// returnDt.Rows[i + 1]["LINENO"] = dr["LINENO"].ToString();
// returnDt.Rows[i + 1]["KIN"] = dr["KIN"].ToString();
// returnDt.Rows[i + 1]["VIN"] = dr["VIN"].ToString();
// returnDt.Rows[i + 1]["SCANSTATE"] = dr["SCANSTATE"].ToString();
// //设置值的交换标记值为true
// isChange = true;
// }
// }
// //将是否 交换标记值付给外层标记值
// //如果未进行交换,跳出while循环
// //如果进行了交换就得再次循环,放在一个大众上线时间对应两个以上大众顺序号的情况
// flag = isChange;
// }
//}
return returnDt;
}
catch (System.Exception ex)
{
throw ex;
}
#endregion
}
//public static DataTable GetFisOrder(int state)
//{
// DataTable returnVal = new DataTable();
// string sqlScript = $" select * from V_PP_FISORDER where State = {state}";
// DataSet dataSet = SqlHelper.ExecuteDataset(
// Config.maindbConnectionString, CommandType.Text, sqlScript);
// if (dataSet.Tables.Count > 0)
// {
// returnVal = dataSet.Tables[0];
// }
// return returnVal;
//}
/// <summary>
/// 更改状态
/// </summary>
/// <param name="orderNo"></param>
/// <param name="state"></param>
/// <returns></returns>
public static bool UpdateFisOrderState(string pOrderNo,string pBzdCode, int state)
{
string sqlScript = $" select * from T_AW_FisSendState where FisOrderNo = '{pOrderNo}'";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlScript);
DataTable dataTable = dataSet.Tables[0];
string saveSql = string.Empty;
if(dataTable.Rows.Count >0)
{
saveSql = $" update T_AW_FisSendState set State = {state},BZDCode ='{pBzdCode}' where FisOrderNo= '{pOrderNo}'";
}
else
{
saveSql = $" insert into T_AW_FisSendState(FisOrderNo,State,BZDCode) values('{pOrderNo}',{state},'{pBzdCode}')";
}
bool returnVal = false;
try
{
//执行SQL
int count = SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, saveSql);
if (count > 0)
{
returnVal = true;
}
}
catch (Exception ex)
{
//后续加入日志
throw;
}
return returnVal;
}
public static bool SaveSacnOrderRecord(DataRow dataRow)
{
string sqlScript = $" insert into T_AW_FinalSortRecord(BZDCode,ProductCode,[Desc],OrderNo,[LINENO]) " +
$" values('{dataRow["BZDCode"].ToString()}','{dataRow["ProductCode"].ToString()}','{dataRow["Desc"].ToString()}','{dataRow["OrderNo"].ToString()}','{dataRow["LINENO"].ToString()}') ";
bool returnVal = false;
try
{
//执行SQL
int count = SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, sqlScript);
if (count > 0)
{
returnVal = true;
}
}
catch (Exception)
{
//后续加入日志
throw;
}
return returnVal;
}
public static string GetA3MaterialCodeByBZD(string bzdCode)
{
//productCode = "052 998A4K501H %";
string pCode = bzdCode.Replace(" ", "");
string first = pCode.Substring(0, 3);
string companyCode = pCode.Substring(3, 3);
string vt = pCode.Substring(6, 1);
string cc = pCode.Substring(7, 1);
string sqlScript = $" select * from T_BD_BZDConfig where barcodeFist ='{first}' and Company_code='{companyCode}' and Vehicle_type='{vt}' and configColor='{cc}' ";
//DataSet dataSet = SqlHelper.ExecuteDataset(
// Config.a3dbConnectionString, CommandType.Text, sqlScript);
//DataTable dataTable = dataSet.Tables[0];
DataTable dataTable = GetDataTable(sqlScript, Config.bzdConnectionString);
if (dataTable.Rows.Count==0)
{
throw new Exception($"BZD条码{bzdCode}在表T_BD_BZDConfig中没找到物料号");
}
else if (dataTable.Rows.Count >1)
{
throw new Exception($"BZD条码{bzdCode}在表T_BD_BZDConfig中配置了多个物料号,目标不明确,请检查配置!");
}
else
{
return dataTable.Rows[0]["MATERIALCODDE"].ToString();
}
}
public static string GetA3MaterialCodeByPID(string mpid)
{
//productCode = "052 998A4K501H %";
//string pCode = bzdCode.Replace(" ", "");
//string first = pCode.Substring(0, 3);
//string companyCode = pCode.Substring(3, 3);
//string vt = pCode.Substring(6, 1);
//string cc = pCode.Substring(7, 1);
string sqlScript = $" select * from T_BD_BZDConfig where pid ='{mpid}' ";
//DataSet dataSet = SqlHelper.ExecuteDataset(
// Config.a3dbConnectionString, CommandType.Text, sqlScript);
//DataTable dataTable = dataSet.Tables[0];
DataTable dataTable = GetDataTable(sqlScript, Config.bzdConnectionString);
if (dataTable.Rows.Count == 0)
{
throw new Exception($"mpid条码{mpid}在表T_BD_BZDConfig中没找到物料号");
}
else if (dataTable.Rows.Count > 1)
{
throw new Exception($"mpid条码{mpid}在表T_BD_BZDConfig中配置了多个物料号,目标不明确,请检查配置!");
}
else
{
return dataTable.Rows[0]["MATERIALCODDE"].ToString();
}
}
public static bool IsNoUsedBzdCode(string pBzdCode)
{
string sqlScript = $" select * from T_AW_FisSendState where BZDCode ='{pBzdCode}' ";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlScript);
DataTable dataTable = dataSet.Tables[0];
if(dataTable.Rows.Count>0)
{
throw new Exception($"BZD条码{pBzdCode}已被使用,请重试!");
}
else
{
return true;
}
}
public static DataTable GetMainInfo(string productCode)
{
string sqlScript = $"select * from T_AW_MAIN where EPIDERMISCODE='{productCode}'";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlScript);
DataTable dataTable = dataSet.Tables[0];
return dataTable;
}
/// <summary>
/// 根据产品号查询物料号
/// 查询product表最新一条记录的物料号,然后联合bom查询总成零件号
/// </summary>
/// <param name="productCode"></param>
/// <returns></returns>
public static string GetPMaterialCode(string productCode)
{
string sqlScript = $" select Top 1 MATERIAL_CODE FROM [dbo].[T_AW_PRODUCT] where PRODUCTCODE='{productCode}' order by CREATEDATE desc ";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlScript);
DataTable dataTable = dataSet.Tables[0];
if(dataTable.Rows.Count >0)
{
string materialCode = dataTable.Rows[0]["MATERIAL_CODE"].ToString();
string mainSql = $" select a.MATERIAL_CODE from [T_MD_PBOM] a,[T_MD_PBOM_ITEM] b where a.PBOM_CODE = b.PBOM_CODE and b.MATERIAL_CODE = '{materialCode}'";
DataSet mainSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, mainSql);
DataTable mainTable = mainSet.Tables[0];
if(mainTable.Rows.Count == 0)
{
throw new Exception($"T_MD_PBOM_ITEM中没有查询到物料号{materialCode}的配置信息");
}
else if (mainTable.Rows.Count > 1)
{
throw new Exception($"物料号{materialCode} 在T_MD_PBOM_ITEM表中配置了多条记录,无法确定唯一产品零件号");
}
else
{
return mainTable.Rows[0]["MATERIAL_CODE"].ToString();
}
}
else
{
throw new Exception($"T_AW_PRODUCT表中没有查询到条码{productCode}产生的加工记录信息");
}
}
public static bool IsBarCodeRepet(string productCode)
{
string sqlScript = $" select * FROM [dbo].[T_AW_MAIN] where EPIDERMISCODE='{productCode}' ";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlScript);
DataTable mainTable = dataSet.Tables[0];
if (mainTable.Rows.Count == 0)
{
return false;
}
else
{
//planCode = mainTable.Rows[0]["PLAN_NO"].ToString();
return true;
}
}
public static bool VerifyLastCellOver(string productCode, string lastCellCode)
{
string sqlScript = $" select * FROM [dbo].[T_AW_MAINOPERATION] where PRODUCTCODE='{productCode}' AND WORKCELL_CODE='{lastCellCode}' ";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlScript);
DataTable mainTable = dataSet.Tables[0];
if(mainTable.Rows.Count == 0)
{
return false;
}
else
{
//planCode = mainTable.Rows[0]["PLAN_NO"].ToString();
return true;
}
}
/// <summary>
/// 根据条码查询计划编号
/// </summary>
/// <param name="productCode"></param>
/// <returns></returns>
public static string GetPlanCode(string productCode)
{
string sqlScript = $" select top 1 PLAN_NO FROM [dbo].[T_AW_PRODUCT] where PRODUCTCODE='{productCode}' AND PLAN_NO is not null ";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlScript);
DataTable mainTable = dataSet.Tables[0];
if (mainTable.Rows.Count == 0)
{
return null;
}
else
{
return mainTable.Rows[0]["PLAN_NO"].ToString();
}
}
/// <summary>
/// 根据条码查询计划编号
/// </summary>
/// <param name="productCode"></param>
/// <returns></returns>
public static string GetBoraBZDCode(string productCode,string materialCode)
{
string sqlScript = $" SELECT MAINCODE FROM [dbo].[T_AW_MAIN] WHERE EPIDERMISCODE = '{productCode}' AND MATERIAL_CODE = '{materialCode}' ";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlScript);
DataTable mainTable = dataSet.Tables[0];
if (mainTable.Rows.Count == 0)
{
return null;
}
else
{
return mainTable.Rows[0]["MAINCODE"].ToString();
}
}
/// <summary>
/// 根据BZD条码,在BZD库里面查询生产本体条码
/// </summary>
/// <param name="bzdCode"></param>
/// <returns></returns>
public static string GetA3ProductCodeByBzd(string bzdCode)
{
string sqlScript = $"select ProductCode from T_BD_BZDRecorder where BZDCODE='{bzdCode}'";
//DataSet dataSet = SqlHelper.ExecuteDataset(
// Config.bzdConnectionString, CommandType.Text, sqlScript);
//DataTable mainTable = dataSet.Tables[0];
DataTable mainTable = GetDataTable(sqlScript, Config.bzdConnectionString);
if (mainTable.Rows.Count == 0)
{
return null;
}
else
{
return mainTable.Rows[0]["ProductCode"].ToString();
}
}
/// <summary>
/// 根据BZD条码,在BZD库里面查询生产时间
/// </summary>
/// <param name="bzdCode"></param>
/// <returns></returns>
public static string GetA3ProductCreateByBzd(string bzdCode)
{
string sqlScript = $"select CREATEDATE from T_BD_BZDRecorder where BZDCODE='{bzdCode}'";
//DataSet dataSet = SqlHelper.ExecuteDataset(
// Config.bzdConnectionString, CommandType.Text, sqlScript);
//DataTable mainTable = dataSet.Tables[0];
DataTable mainTable = GetDataTable(sqlScript, Config.bzdConnectionString);
if (mainTable.Rows.Count == 0)
{
return null;
}
else
{
return mainTable.Rows[0]["CREATEDATE"].ToString();
}
}
/// <summary>
/// 根据BZD条码,在BZD库里面查询生产本体条码
/// </summary>
/// <param name="bzdCode"></param>
/// <returns></returns>
public static string GetA3MpidCodeByBzd(string bzdCode)
{
string sqlScript = $"select MPID from T_BD_BZDRecorder where BZDCODE='{bzdCode}'";
//DataSet dataSet = SqlHelper.ExecuteDataset(
// Config.bzdConnectionString, CommandType.Text, sqlScript);
//DataTable mainTable = dataSet.Tables[0];
DataTable mainTable = GetDataTable(sqlScript, Config.bzdConnectionString);
if (mainTable.Rows.Count == 0)
{
return null;
}
else
{
return mainTable.Rows[0]["Mpid"].ToString();
}
}
private static DataTable GetDataTable(string sql,string connStr)
{
DataSet dataSet = SqlHelper.ExecuteDataset(
connStr, CommandType.Text, sql);
DataTable mainTable = dataSet.Tables[0];
return mainTable;
}
public static List<ProduceShift> GetShiftList()
{
List<ProduceShift> list = new List<ProduceShift>();
string sqlScript = "SELECT M.PID ,M.PRODUCESHIFTNAME,M.PRODUCESHIFTTCODE,M.PSSTART,M.PSEND,M.PRODUCELINE,M.MEMO,M.CREATEUSER,M.CREATEDATE,M.UPDATEUSER,M.UPDATEDATE,C.USERNAME AS CREATEUSERNAME,U.USERNAME AS UPDATEUSERNAMEFROM FROM T_BD_PRODUCESHIFT M LEFT JOIN T_QM_USER C ON C.USERID=M.CREATEUSER LEFT JOIN T_QM_USER U ON U.USERID=M.UPDATEUSER ";
DataSet dataSet = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, sqlScript);
DataTable mainTable = dataSet.Tables[0];
foreach(DataRow dataRow in mainTable.Rows)
{
ProduceShift sf = new ProduceShift();
sf.PRODUCESHIFTNAME = dataRow["PRODUCESHIFTNAME"].ToString();
sf.PRODUCESHIFTTCODE = dataRow["PRODUCESHIFTTCODE"].ToString();
sf.PSSTART = string.IsNullOrEmpty( dataRow["PSSTART"].ToString()) ? DateTime.MinValue : DateTime.Parse(dataRow["PSSTART"].ToString());
sf.PSEND = string.IsNullOrEmpty(dataRow["PSEND"].ToString()) ? DateTime.MinValue : DateTime.Parse(dataRow["PSEND"].ToString());
sf.PRODUCELINE = dataRow["PRODUCELINE"].ToString();
list.Add(sf);
}
return list;
}
/// <summary>
/// 订单挂起
/// </summary>
/// <param name="dataRow"></param>
/// <returns></returns>
public static bool UpdateFisSetState(DataRow dataRow)
{
string searchsql = $" select * from T_AW_FisSendState where FisOrderNo='{dataRow["ORDER_NO"]}'";
DataTable dataTable = SqlHelper.ExecuteDataset(
Config.maindbConnectionString, CommandType.Text, searchsql).Tables[0];
string insertSql = string.Empty;
if(dataTable.Rows.Count >0)
{
insertSql = $"Update T_AW_FisSendState set State = 9 where ID ={dataTable.Rows[0]["ID"]}";
}
else
{
insertSql = $"insert into T_AW_FisSendState(FisOrderNo,State,BZDCode,Remark) values ('{dataRow["ORDER_NO"]}',9,'','挂起状态')";
}
bool returnVal = false;
try
{
//执行SQL
int count = SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, insertSql);
if (count > 0)
{
returnVal = true;
}
}
catch (Exception)
{
//后续加入日志
throw;
}
return returnVal;
}
public static DataTable GetStoreData(int count=100)
{
//string sql = $"select top {count} * from T_AW_MAIN where PRODUCELINE='A3IPASSY_STORE' order by CREATEDATE desc";
string sql = $@"select top {count} a.* ,b.MATERIAL_NAME FROM [T_AW_MAIN] a
left join T_MD_MATERIAL b on a.MATERIAL_CODE = b.MATERIAL_CODE
where PRODUCELINE = 'A3IPASSY_STORE' order by CREATEDATE desc";
DataTable dataTable = GetDataTable(sql, Config.a3dbConnectionString);
return dataTable;
}
public static void SaveA3MainRecord(string[] basicData, string bzdCode,string productionCode, string userID,string materialCode,string lineCode)
{
string searchSql = $" select * from T_AW_MAIN where MAINCODE='{bzdCode}'";
DataTable dataTable = GetDataTable(searchSql,Config.a3dbConnectionString);
if(dataTable.Rows.Count == 0)
{
DataTable materialInitTable = GetMaterialCodeInit(materialCode);
//string produceLine = "";
string workCellCode = "";
string workLocCode = "";
string workCenterCode = "";
string materialType = "";
if (materialInitTable.Rows.Count>0)
{
//produceLine = materialInitTable.Rows[0]["WORKCENTER_CODE_INIT"].ToString();
workCellCode = materialInitTable.Rows[0]["WORKCELL_CODE"].ToString();
workLocCode = materialInitTable.Rows[0]["WORKLOC_CODE"].ToString();
workCenterCode = materialInitTable.Rows[0]["WORKCENTER_CODE"].ToString();
materialType = materialInitTable.Rows[0]["MATERIAL_TYPE"].ToString();
}
string insertSql = $@"insert into T_AW_MAIN(PID,MAINCODE,EPIDERMISCODE,MACHINECODDE,PROCESSSTATE,STATUS,CURRENTPROCESS,COMPLETEFLAG,
PRODUCELINE,OUTFLAG,COMPLETETIME,CREATEUSER,CREATEDATE,UPDATEUSER,UPDATEDATE,WORKCELL_CODE,WORKLOC_CODE,WORKCENTER_CODE,MATERIAL_TYPE,MATERIAL_CODE) values
( '{Guid.NewGuid()}','{bzdCode}','{productionCode}','{basicData[0]}','1','0','15','1','{lineCode}','0','{DateTime.Now}','{userID}','{DateTime.Now}','{userID}','{DateTime.Now}',
'{workCellCode}','{workLocCode}','{workCenterCode}','{materialType}','{materialCode}')";
try
{
//执行SQL
int count = SqlHelper.ExecuteNonQuery(Config.a3dbConnectionString, CommandType.Text, insertSql);
}
catch (Exception)
{
//后续加入日志
throw;
}
}
//20210111 DQZhang T_AW_MAIN表已被触发器插入的记录补充字段内容
else if (dataTable.Rows.Count == 1)
{
DataTable materialInitTable = GetMaterialCodeInit(materialCode);
//string produceLine = "";
string workCellCode = "";
string workLocCode = "";
string workCenterCode = "";
string materialType = "";
if (materialInitTable.Rows.Count > 0)
{
//produceLine = materialInitTable.Rows[0]["WORKCENTER_CODE_INIT"].ToString();
workCellCode = materialInitTable.Rows[0]["WORKCELL_CODE"].ToString();
workLocCode = materialInitTable.Rows[0]["WORKLOC_CODE"].ToString();
workCenterCode = materialInitTable.Rows[0]["WORKCENTER_CODE"].ToString();
materialType = materialInitTable.Rows[0]["MATERIAL_TYPE"].ToString();
}
string insertSql = $@"UPDATE T_AW_MAIN SET MACHINECODDE='{basicData[0]}',PROCESSSTATE='1',STATUS='0',CURRENTPROCESS='15',COMPLETEFLAG='1',
PRODUCELINE='{lineCode}',OUTFLAG='0',COMPLETETIME='{DateTime.Now}',UPDATEUSER='{userID}',UPDATEDATE='{DateTime.Now}',
WORKCELL_CODE='{workCellCode}',WORKCENTER_CODE='{workCenterCode}',MATERIAL_TYPE='{materialType}' WHERE MAINCODE ='{bzdCode}' ";
try
{
//执行SQL
int count = SqlHelper.ExecuteNonQuery(Config.a3dbConnectionString, CommandType.Text, insertSql);
}
catch (Exception)
{
//后续加入日志
throw;
}
}
}
public static DataTable GetMaterialCodeInit(string materialCode)
{
string sql = $"select b.* FROM T_MD_MATERIAL a,T_BD_MATERIALCODEINIT b where a.MATERIAL_CODE = b.MATERIAL_CODE and a.MATERIAL_TYPE_CODE = b.MATERIAL_TYPE and a.MATERIAL_CODE = '{materialCode}'";
DataTable dataTable = GetDataTable(sql, Config.a3dbConnectionString);
return dataTable;
}
/// <summary>
/// 查询每天早8:30到第二天8:30的产量
/// </summary>
/// <returns></returns>
public static string GetDayYield()
{
string sql = $@" declare
@tt varchar(20) = format(GetDate(), 'HH:mm')
if @tt > '08:30'
select count(0) as c from T_AW_MAIN where CREATEDATE > format(GetDate(), 'yyyy-MM-dd') + ' 08:30:00.000'
and CREATEDATE < format(dateadd(day, 1, GetDate()), 'yyyy-MM-dd') + ' 08:30:00.000'
else
select count(0) as c from T_AW_MAIN where CREATEDATE > format(dateadd(day, -1, GetDate()), 'yyyy-MM-dd') + ' 08:30:00.000'
and CREATEDATE < format(GetDate(), 'yyyy-MM-dd') + ' 08:30:00.000'";
DataTable dataTable = GetDataTable(sql, Config.a3dbConnectionString);
return dataTable.Rows[0]["c"].ToString();
}
/// <summary>
/// 并线发运 A3每天产量
/// </summary>
/// <returns></returns>
public static string GetA3DayYield()
{
string sql = $@" declare
@tt varchar(20) = format(GetDate(), 'HH:mm')
if @tt > '08:30'
select count(0) as c from T_AW_MAIN where CREATEDATE > format(GetDate(), 'yyyy-MM-dd') + ' 08:30:00.000'
and CREATEDATE < format(dateadd(day, 1, GetDate()), 'yyyy-MM-dd') + ' 08:30:00.000'
else
select count(0) as c from T_AW_MAIN where CREATEDATE > format(dateadd(day, -1, GetDate()), 'yyyy-MM-dd') + ' 08:30:00.000'
and CREATEDATE < format(GetDate(), 'yyyy-MM-dd') + ' 08:30:00.000'";
DataTable dataTable = GetDataTable(sql, Config.a3dbConnectionString);
return dataTable.Rows[0]["c"].ToString();
}
/// <summary>
/// 并线发运 Bora高配每天产量
/// </summary>
/// <returns></returns>
public static string GetBoraHDayYield()
{
string sql = $@" declare
@tt varchar(20) = format(GetDate(), 'HH:mm')
if @tt > '08:30'
select count(0) as c from (select a.* ,b.MATERIAL_NAME FROM T_AW_MAIN a left join T_MD_MATERIAL b on a.MATERIAL_CODE = b.MATERIAL_CODE where MATERIAL_NAME like '%%' or MATERIAL_NAME like '%%' ) a
where CREATEDATE > format(GetDate(), 'yyyy-MM-dd') + ' 08:30:00.000'
and CREATEDATE < format(dateadd(day, 1, GetDate()), 'yyyy-MM-dd') + ' 08:30:00.000'
else
select count(0) as c from (select a.* ,b.MATERIAL_NAME FROM T_AW_MAIN a left join T_MD_MATERIAL b on a.MATERIAL_CODE = b.MATERIAL_CODE where MATERIAL_NAME like '%%' or MATERIAL_NAME like '%%' ) a
where CREATEDATE > format(dateadd(day, -1, GetDate()), 'yyyy-MM-dd') + ' 08:30:00.000'
and CREATEDATE < format(GetDate(), 'yyyy-MM-dd') + ' 08:30:00.000'";
DataTable dataTable = GetDataTable(sql, Config.maindbConnectionString);
return dataTable.Rows[0]["c"].ToString();
}
/// <summary>
/// 并线发运 Bora低配每天产量
/// </summary>
/// <returns></returns>
public static string GetBoraLDayYield()
{
string sql = $@" declare
@tt varchar(20) = format(GetDate(), 'HH:mm')
if @tt > '08:30'
select count(0) as c from (select a.* ,b.MATERIAL_NAME FROM T_AW_MAIN a left join T_MD_MATERIAL b on a.MATERIAL_CODE = b.MATERIAL_CODE where MATERIAL_NAME like '%%' or MATERIAL_NAME like '%%' ) a
where a.CREATEDATE > format(GetDate(), 'yyyy-MM-dd') + ' 08:30:00.000'
and a.CREATEDATE < format(dateadd(day, 1, GetDate()), 'yyyy-MM-dd') + ' 08:30:00.000'
else
select count(0) as c from (select a.* ,b.MATERIAL_NAME FROM T_AW_MAIN a left join T_MD_MATERIAL b on a.MATERIAL_CODE = b.MATERIAL_CODE where MATERIAL_NAME like '%%' or MATERIAL_NAME like '%%' ) a
where a.CREATEDATE > format(dateadd(day, -1, GetDate()), 'yyyy-MM-dd') + ' 08:30:00.000'
and a.CREATEDATE < format(GetDate(), 'yyyy-MM-dd') + ' 08:30:00.000'";
DataTable dataTable = GetDataTable(sql, Config.maindbConnectionString);
return dataTable.Rows[0]["c"].ToString();
}
/// <summary>
/// 取消挂起
/// </summary>
/// <param name="dataRow"></param>
/// <returns></returns>
public static bool UpdateFisSetStateDisposes(List<DataRow> upRows)
{
List<string> orderNoList = upRows.Select(p => p.Field<string>("ORDER_NO")).ToList();
string updateSql = $"Update T_AW_FisSendState set State = 0,Remark='取消挂起' where FisOrderNo in ('{string.Join("','", orderNoList)}') and State=9 ";
bool returnVal = false;
try
{
//执行SQL
int count = SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, updateSql);
if (count > 0)
{
returnVal = true;
}
}
catch (Exception ex)
{
//后续加入日志
throw;
}
return returnVal;
}
//public static bool UpdateFisSetStateDispose(DataRow dataRow)
//{
// string updateSql = $"Update T_AW_FisSendState set State = 0,Remark='取消挂起' where FisOrderNo ='{dataRow["ORDER_NO"]}' and State=9 ";
// bool returnVal = false;
// try
// {
// //执行SQL
// int count = SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, updateSql);
// if (count > 0)
// {
// returnVal = true;
// }
// }
// catch (Exception ex)
// {
// //后续加入日志
// throw;
// }
// return returnVal;
//}
public static void SaveStartIndex(int startIndex)
{
try
{
string updateSql = $"Update T_MD_StartIndex set [StartIndex]={startIndex}";
int count = SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, updateSql);
if (count == 0)
{
string insertSql = $" insert into T_MD_StartIndex(StartIndex) values ({startIndex})";
SqlHelper.ExecuteNonQuery(Config.maindbConnectionString, CommandType.Text, insertSql);
}
}
catch
{
throw;
}
}
public static int GetStartIndex()
{
string searchSql = $"select top 1 StartIndex from T_MD_StartIndex ";
DataTable dataTable = GetDataTable(searchSql, Config.maindbConnectionString);
if (dataTable.Rows.Count == 0) return 0;
try
{
return int.Parse(dataTable.Rows[0]["StartIndex"].ToString());
}
catch
{
return 0;
}
}
}
}

36
QMAPP.BoraUpgrade.Entity/Properties/AssemblyInfo.cs

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("QMAPP.BoraUpgrade.Entity")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("QMAPP.BoraUpgrade.Entity")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("eeceb388-1acb-45d0-b9e9-ce8e344773f1")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 内部版本号
// 修订号
//
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

58
QMAPP.BoraUpgrade.Entity/QMAPP.BoraUpgrade.Entity.csproj

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{0C8B7A06-ED56-4198-9386-B8EA1D176571}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>QMAPP.BoraUpgrade.Entity</RootNamespace>
<AssemblyName>QMAPP.BoraUpgrade.Entity</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="T_AW_PRODUCT.cs" />
<Compile Include="T_CC_PrintCodeRoute.cs" />
<Compile Include="T_MD_MATERIAL.cs" />
<Compile Include="T_QD_BoraUpgradeRoute.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="T_QD_VirtualMaterial.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

39
QMAPP.BoraUpgrade.Entity/T_AW_PRODUCT.cs

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QMAPP.BoraUpgrade.Entity
{
public class T_AW_PRODUCT
{
public string PID { get; set; }
public string PRODUCTTYPE { get; set; }
public string PRODUCTCODE { get; set; }
public string PRODUCTSOURCE { get; set; }
public string MACHINENAME { get; set; }
public string MACHINECODDE { get; set; }
public string MATERIAL_CODE { get; set; }
public string STATUS { get; set; }
public string ISPARENT { get; set; }
public string CURRENTPROCESS { get; set; }
public string PRODUCELINE { get; set; }
public string PRODUCESHIFTNAME { get; set; }
public string PRODUCESHIFTTCODE { get; set; }
public string OUTFLAG { get; set; }
public string USINGSTATE { get; set; }
public Nullable<int> CAPACITY { get; set; }
public Nullable<int> USINGCOUNT { get; set; }
public string CREATEUSER { get; set; }
public Nullable<System.DateTime> CREATEDATE { get; set; }
public string UPDATEUSER { get; set; }
public Nullable<System.DateTime> UPDATEDATE { get; set; }
public string WORKCELL_CODE { get; set; }
public string WORKLOC_CODE { get; set; }
public string WORKCENTER_CODE { get; set; }
public string TEAM_CODE { get; set; }
public string ENDOFLINE { get; set; }
public string MATERIAL_TYPE { get; set; }
public string PLAN_NO { get; set; }
}
}

104
QMAPP.BoraUpgrade.Entity/T_CC_PrintCodeRoute.cs

@ -0,0 +1,104 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QMAPP.BoraUpgrade.Entity
{
public class T_CC_PrintCodeRoute
{
public int PrintCodeRouteID
{
get;
set;
}
public string BarCodeRule
{
get;
set;
}
public string MachineName
{
get;
set;
}
public string MachineCode
{
get;
set;
}
public string Material_Code
{
get;
set;
}
public string WorkCell_Code
{
get;
set;
}
public string WorkLoc_Code
{
get;
set;
}
public string WorkCenter
{
get;
set;
}
public string Matrail_Type
{
get;
set;
}
public bool IsProduct
{
get;
set;
}
public bool IsAppend
{
get;
set;
}
public int Color
{
get;
set;
}
public string MachineID
{
get;
set;
}
}
}

33
QMAPP.BoraUpgrade.Entity/T_MD_MATERIAL.cs

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QMAPP.BoraUpgrade.Entity
{
public class T_MD_MATERIAL
{
public string PID { get; set; }
public string MATERIAL_CODE { get; set; }
public string MATERIAL_TYPE_CODE { get; set; }
public string UNIT_CODE { get; set; }
public string MATERIAL_NAME { get; set; }
public string MATERIAL_COMP { get; set; }
public string REMARK { get; set; }
public string CREATEUSER { get; set; }
public DateTime CREATEDATE { get; set; }
public string UPDATEUSER { get; set; }
public string UPDATEDATE { get; set; }
public string OUTSOURCE { get; set; }
public int STD_QTY { get; set; }
public string FLGDEL { get; set; }
public string COLOR { get; set; }
public string HBTYPE { get; set; }
public string PROJECTCODE { get; set; }
public int WEIGHT { get; set; }
public string MATERIAL_SHORT { get; set; }
public string WORKBIN_TYPE { get; set; }
public int CAPACITY { get; set; }
public string FACTORY_CODE { get; set; }
}
}

134
QMAPP.BoraUpgrade.Entity/T_QD_BoraUpgradeRoute.cs

@ -0,0 +1,134 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QMAPP.BoraUpgrade.Entity
{
/// <summary>
/// 青岛宝来升级路由
/// </summary>
public class T_QD_BoraUpgradeRoute
{
/// <summary>
/// 主键
/// </summary>
public int BoraRouteID
{
get;
set;
}
/// <summary>
/// 工作编号
/// </summary>
public string WorkCell_Code
{
get;
set;
}
/// <summary>
/// 路由正规则
/// </summary>
public string RouteRegular
{
get;
set;
}
/// <summary>
/// 下一跳路由
/// </summary>
public string NextWorkCell_Code
{
get;
set;
}
/// <summary>
/// 机器编码
/// </summary>
public string Machine_Code
{
get;
set;
}
/// <summary>
/// 路由方向
/// </summary>
public int RouteDirection
{
get;
set;
}
/// <summary>
/// 是否产品码
/// </summary>
public bool IsProductCode
{
get;
set;
}
/// <summary>
/// 是否清空
/// </summary>
public bool IsClear
{
get;
set;
}
/// <summary>
/// 是否删除
/// </summary>
public bool IsDeleted
{
get;
set;
}
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime
{
get;
set;
}
/// <summary>
/// 模架号
/// </summary>
public string ModeCode
{
get;
set;
}
/// <summary>
/// 空采集点数量
/// </summary>
public int EmptyDAICount
{
get;
set;
}
}
}

21
QMAPP.BoraUpgrade.Entity/T_QD_VirtualMaterial.cs

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QMAPP.BoraUpgrade.Entity
{
/// <summary>
/// 青岛宝来升级
/// </summary>
public class T_QD_VirtualMaterial
{
public int PID;
public string WorkCellCode;
public string MaterialCode;
public string MaterialType;
}
}

62
QMSolution.sln

@ -164,6 +164,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProcessFileSyncService", "P
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Stone.WinModuleTransWare", "APPQ5\Stone.WinModuleTransWare\Stone.WinModuleTransWare\Stone.WinModuleTransWare.csproj", "{3AECE013-AC67-4F6F-9DB4-36577345F428}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "QMAPP.BoraUpgrade", "QMAPP.BoraUpgrade", "{9E40BBDD-282A-4381-9263-0758B05B2B01}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QMAPP.BoraUpgrade.BLL", "QMAPP.BoraUpgrade.BLL\QMAPP.BoraUpgrade.BLL.csproj", "{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QMAPP.BoraUpgrade.DAL", "QMAPP.BoraUpgrade.DAL\QMAPP.BoraUpgrade.DAL.csproj", "{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QMAPP.BoraUpgrade.Common", "QMAPP.BoraUpgrade.Common\QMAPP.BoraUpgrade.Common.csproj", "{2DEB0026-EF98-4E33-A132-2F46B5E646FE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QMAPP.BoraUpgrade.Entity", "QMAPP.BoraUpgrade.Entity\QMAPP.BoraUpgrade.Entity.csproj", "{0C8B7A06-ED56-4198-9386-B8EA1D176571}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -816,6 +826,54 @@ Global
{3AECE013-AC67-4F6F-9DB4-36577345F428}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{3AECE013-AC67-4F6F-9DB4-36577345F428}.Release|x86.ActiveCfg = Release|Any CPU
{3AECE013-AC67-4F6F-9DB4-36577345F428}.Release|x86.Build.0 = Release|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Debug|x86.ActiveCfg = Debug|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Debug|x86.Build.0 = Debug|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Release|Any CPU.Build.0 = Release|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Release|x86.ActiveCfg = Release|Any CPU
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF}.Release|x86.Build.0 = Release|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Debug|x86.ActiveCfg = Debug|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Debug|x86.Build.0 = Debug|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Release|Any CPU.Build.0 = Release|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Release|x86.ActiveCfg = Release|Any CPU
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6}.Release|x86.Build.0 = Release|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Debug|x86.ActiveCfg = Debug|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Debug|x86.Build.0 = Debug|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Release|Any CPU.Build.0 = Release|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Release|x86.ActiveCfg = Release|Any CPU
{2DEB0026-EF98-4E33-A132-2F46B5E646FE}.Release|x86.Build.0 = Release|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Debug|x86.ActiveCfg = Debug|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Debug|x86.Build.0 = Debug|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Release|Any CPU.Build.0 = Release|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Release|x86.ActiveCfg = Release|Any CPU
{0C8B7A06-ED56-4198-9386-B8EA1D176571}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -889,6 +947,10 @@ Global
{EE178BC8-C580-4795-91E9-5687512B9310} = {10B7672E-97CF-4310-B2C8-6122B4662A48}
{72A36698-CCFB-4A72-BD12-765F440BE486} = {10B7672E-97CF-4310-B2C8-6122B4662A48}
{3AECE013-AC67-4F6F-9DB4-36577345F428} = {2C1B5D21-3E27-4C6A-86A6-DA56AAB311ED}
{0AC97127-BCF1-4FF0-A6F1-73EA38802ECF} = {9E40BBDD-282A-4381-9263-0758B05B2B01}
{10C2F3D0-4ACB-4D41-B7CC-168A55E099D6} = {9E40BBDD-282A-4381-9263-0758B05B2B01}
{2DEB0026-EF98-4E33-A132-2F46B5E646FE} = {9E40BBDD-282A-4381-9263-0758B05B2B01}
{0C8B7A06-ED56-4198-9386-B8EA1D176571} = {9E40BBDD-282A-4381-9263-0758B05B2B01}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {309CB55E-489B-416A-9661-6E854D0F3FC5}

44
ServicesCenter/WCF/QMFrameWork.WebServiceHost/Web.config

@ -10,7 +10,7 @@
<add key="sfversion" value="3.0" />
<!--配置数据字典-->
<add key="Dictionary" value="App_Data\Dictionary.xml"/>
<add key="ServiceCredentialID" value="d7911036-d36f-460f-a052-979628322df3" />
<!--服务调用凭据-->
<add key="ServiceCredential" value="123456"/>
@ -58,36 +58,26 @@
<!--指示灯控制器项目文件-->
<add key ="XGateProjectPath" value="D:\ADIENT_CD_MES.PTLInstallProject.xml"/>
<add key ="XGatePanelLight" value="Blue"/>
</appSettings>
<connectionStrings>
<!--主数据库连接-->
<add name="maindb" connectionString="Data Source=10.111.144.98;Initial Catalog=ADIENT_CD_MES;User Id=sa;Password=Password2018;max pool size=10240;" providerName="System.Data.SqlClient"/>
<add name="maindbBZD" connectionString="Data Source=10.111.144.98;Initial Catalog=BZD;User Id=sa;Password=Password2018;" providerName="System.Data.SqlClient"/>
<add name="maindbYBB" connectionString="Data Source=10.111.144.72;Initial Catalog=scCFAACDYBNCSNF;User Id=mesreaderdcs;Password=mesreaderdcs;" providerName="System.Data.SqlClient"/>
<add name="maindbNCSYBB" connectionString="Data Source=10.111.144.72;Initial Catalog=scCFAACDYBDY;User Id=mesreaderdcs;Password=mesreaderdcs;" providerName="System.Data.SqlClient"/>
<!--<add name="maindb" connectionString="Data Source=123.56.115.74;Initial Catalog=ADIENT_TJ_MES;User Id=sa;Password=qwe123$%^;" providerName="System.Data.SqlClient" />-->
<!--<add name="maindb" connectionString="Data Source=10.111.144.98;Initial Catalog=ADIENT_CD_MES;User Id=sa;Password=Password2018;max pool size=10240;" providerName="System.Data.SqlClient"/>
<add name="maindbBZD" connectionString="Data Source=10.111.144.98;Initial Catalog=BZD;User Id=sa;Password=Password2018;" providerName="System.Data.SqlClient"/>-->
<!--<add name="maindb" connectionString="Data Source=10.111.144.99;Initial Catalog=ADIENT_CD_MES9;User Id=sa;Password=Password2018;max pool size=10240;" providerName="System.Data.SqlClient"/>-->
<!--<add name="maindbYBB" connectionString="Data Source=10.111.144.72;Initial Catalog=scCFAACDYBNCSNF;User Id=mesreaderdcs;Password=mesreaderdcs;" providerName="System.Data.SqlClient"/>
<add name="maindbNCSYBB" connectionString="Data Source=10.111.144.72;Initial Catalog=scCFAACDYBDY;User Id=mesreaderdcs;Password=mesreaderdcs;" providerName="System.Data.SqlClient"/>-->
<!--<add name="maindb" connectionString="Data Source=10.117.133.48;Initial Catalog=ADIENT_TJ_MES;User Id=sa;Password=ASDqwe123!@#;" providerName="System.Data.SqlClient"/>-->
<!--<add name="maindbYBB" connectionString="Data Source=10.111.144.72;Initial Catalog=CdFisYbbNCSNF;User Id=mesreaderdcs;Password=mesreaderdcs;" providerName="System.Data.SqlClient"/>
<add name="maindbNCSYBB" connectionString="Data Source=10.111.144.72;Initial Catalog=CdFisYbbDY;User Id=mesreaderdcs;Password=mesreaderdcs;" providerName="System.Data.SqlClient"/>-->
<!--<add name="maindbBZD" connectionString="Data Source=10.111.144.99;Initial Catalog=BZD;User Id=sa;Password=Password2018;" providerName="System.Data.SqlClient"/>-->
<add name="maindb" connectionString="Data Source=.;Initial Catalog=ADIENT_CD_MES;User Id=sa;Password=Microsoft2008;" providerName="System.Data.SqlClient"/>
<add name="maindbBZD" connectionString="Data Source=.;Initial Catalog=BZD;User Id=sa;Password=Microsoft2008;" providerName="System.Data.SqlClient"/>
<!--<add name="maindb" connectionString="Data Source=10.114.50.240;Initial Catalog=ADIENT_QD_MES;Persist Security Info=True;User ID=qdmes;Password=Password1;" providerName="System.Data.SqlClient"/>
<add name="maindbMB" connectionString="Data Source=10.123.4.20;Initial Catalog=QdFisMB;Persist Security Info=True;User ID=sa;Password=qm;" providerName="System.Data.SqlClient"/>
<add name="maindbYBB" connectionString="Data Source=10.123.4.20;Initial Catalog=QdFisYBB;Persist Security Info=True;User ID=sa;Password=qm;" providerName="System.Data.SqlClient"/>-->
</connectionStrings>
<!--缓存设置-->
<cachingConfiguration defaultCacheManager="Cache Manager">
@ -189,7 +179,7 @@
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="GeneralServiceBehavior" name="QMFrameWork.WebServiceHost.GeneralService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="NoneSecurity" contract="QMFrameWork.WebServiceHost.IGeneralService">
<identity>
@ -198,7 +188,7 @@
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="GeneralServiceBehavior" name="QMFrameWork.WebServiceHost.OpcService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="NoneSecurity" contract="QMFrameWork.WebServiceHost.IOpcService">
<identity>
@ -216,7 +206,7 @@
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="GeneralServiceBehavior" name="QMFrameWork.WebServiceHost.LoginService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="NoneSecurity" contract="QMFrameWork.WebServiceHost.ILoginService">
<identity>
@ -225,7 +215,7 @@
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
@ -241,9 +231,9 @@
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.webServer>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<directoryBrowse enabled="true" />
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>

Loading…
Cancel
Save