| | |
| | | <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> |
| | | <Deterministic>true</Deterministic> |
| | | <TargetFrameworkProfile /> |
| | | <IsWebBootstrapper>false</IsWebBootstrapper> |
| | | <PublishUrl>publish\</PublishUrl> |
| | | <Install>true</Install> |
| | | <InstallFrom>Disk</InstallFrom> |
| | |
| | | <MapFileExtensions>true</MapFileExtensions> |
| | | <ApplicationRevision>0</ApplicationRevision> |
| | | <ApplicationVersion>1.0.0.%2a</ApplicationVersion> |
| | | <IsWebBootstrapper>false</IsWebBootstrapper> |
| | | <UseApplicationTrust>false</UseApplicationTrust> |
| | | <BootstrapperEnabled>true</BootstrapperEnabled> |
| | | </PropertyGroup> |
| | |
| | | <DefineConstants>TRACE</DefineConstants> |
| | | <ErrorReport>prompt</ErrorReport> |
| | | <WarningLevel>4</WarningLevel> |
| | | </PropertyGroup> |
| | | <PropertyGroup> |
| | | <SignManifests>true</SignManifests> |
| | | </PropertyGroup> |
| | | <PropertyGroup> |
| | | <SignAssembly>true</SignAssembly> |
| | | </PropertyGroup> |
| | | <PropertyGroup> |
| | | <ManifestCertificateThumbprint>C8059AFDFCE52C60DA32D8A0FE8AB2F99859D6B0</ManifestCertificateThumbprint> |
| | | </PropertyGroup> |
| | | <PropertyGroup> |
| | | <ManifestKeyFile>HH.WCS.QingXigongchang_TemporaryKey.pfx</ManifestKeyFile> |
| | | </PropertyGroup> |
| | | <PropertyGroup> |
| | | <TargetZone>LocalIntranet</TargetZone> |
| | | </PropertyGroup> |
| | | <PropertyGroup> |
| | | <GenerateManifests>true</GenerateManifests> |
| | | </PropertyGroup> |
| | | <PropertyGroup> |
| | | <ApplicationManifest>Properties\app.manifest</ApplicationManifest> |
| | | </PropertyGroup> |
| | | <ItemGroup> |
| | | <Reference Include="Microsoft.Owin, Version=4.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
| | |
| | | <ItemGroup> |
| | | <Content Include="原物料方法概述.txt" /> |
| | | <None Include="App.config" /> |
| | | <None Include="HH.WCS.QingXigongchang_TemporaryKey.pfx" /> |
| | | <None Include="packages.config" /> |
| | | <Content Include="Static\css\app.d545ec97.css"> |
| | | <CopyToOutputDirectory>Always</CopyToOutputDirectory> |
| | |
| | | <Content Include="Static\js\chunk-vendors.3e768dfe.js.map"> |
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> |
| | | </Content> |
| | | <None Include="Properties\app.manifest" /> |
| | | <None Include="Static\js\app.829e775c.js.map"> |
| | | <CopyToOutputDirectory>Always</CopyToOutputDirectory> |
| | | </None> |
| | |
| | | using Microsoft.Owin.Hosting; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Linq; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Diagnostics; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Net; |
| | | using System.Net.Sockets; |
| | | using System.Net.WebSockets; |
| | |
| | | GetTask(Monitor.BottTask),// 纸箱自动中转 |
| | | GetTask(Monitor.AutoRunABD), |
| | | GetTask(Monitor.AutoRun13TSJ), |
| | | GetTask(Monitor.ZdzyABArea), |
| | | GetTask(Monitor.Qchc), |
| | | |
| | | |
| | | //GetTask(Monitor.AutoTK_PE),//提扣 - PE膜出入库 |
| | | //GetTask(Monitor.chargeCCD),//YWL 入库工单。未使用。 |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> |
| | | <assemblyIdentity version="1.0.0.0" name="MyApplication.app" /> |
| | | <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> |
| | | <security> |
| | | <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> |
| | | <!-- UAC 清单选项 |
| | | 如果想要更改 Windows 用户帐户控制级别,请使用 |
| | | 以下节点之一替换 requestedExecutionLevel 节点。 |
| | | |
| | | <requestedExecutionLevel level="asInvoker" uiAccess="false" /> |
| | | <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> |
| | | <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> |
| | | |
| | | 指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。 |
| | | 如果你的应用程序需要此虚拟化来实现向后兼容性,则移除此 |
| | | 元素。 |
| | | --> |
| | | <requestedExecutionLevel level="asInvoker" uiAccess="false" /> |
| | | </requestedPrivileges> |
| | | <applicationRequestMinimum> |
| | | <PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" /> |
| | | <defaultAssemblyRequest permissionSetReference="Custom" /> |
| | | </applicationRequestMinimum> |
| | | </security> |
| | | </trustInfo> |
| | | <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> |
| | | <application> |
| | | <!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的 |
| | | Windows 版本的列表。取消评论适当的元素, |
| | | Windows 将自动选择最兼容的环境。 --> |
| | | <!-- Windows Vista --> |
| | | <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />--> |
| | | <!-- Windows 7 --> |
| | | <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />--> |
| | | <!-- Windows 8 --> |
| | | <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />--> |
| | | <!-- Windows 8.1 --> |
| | | <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />--> |
| | | <!-- Windows 10 --> |
| | | <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />--> |
| | | </application> |
| | | </compatibility> |
| | | <!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行 |
| | | 自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需 |
| | | 选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应 |
| | | 在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。 |
| | | |
| | | 将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation --> |
| | | <!-- |
| | | <application xmlns="urn:schemas-microsoft-com:asm.v3"> |
| | | <windowsSettings> |
| | | <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> |
| | | <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware> |
| | | </windowsSettings> |
| | | </application> |
| | | --> |
| | | <!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) --> |
| | | <!-- |
| | | <dependency> |
| | | <dependentAssembly> |
| | | <assemblyIdentity |
| | | type="win32" |
| | | name="Microsoft.Windows.Common-Controls" |
| | | version="6.0.0.0" |
| | | processorArchitecture="*" |
| | | publicKeyToken="6595b64144ccf1df" |
| | | language="*" |
| | | /> |
| | | </dependentAssembly> |
| | | </dependency> |
| | | --> |
| | | </assembly> |
| | |
| | | "自由线段表": "TN_0021", |
| | | "移库工单表": "TN_0026", |
| | | "物料表": "TN_0005", |
| | | "库容表": "TN_0071", |
| | | "入库排锁表": "TN_0041", |
| | | "富勒托盘下发": "TN_0037", |
| | | "任务类型转换表": "TN_0043", |
| | | "备货单表": "TN_0057", |
| | | "库库转运": "TN_0068", |
| | | "领料单子表": "TN_0053", |
| | | "AGV设备信息": "TN_0042", |
| | | "原物料工单表": "TN_0071", |
| | | "库库转运": "TN_0076" |
| | | "原物料工单表": "TN_0066", |
| | | "AGV设备信息": "TN_0042" |
| | | } |
| | |
| | | using HH.WCS.QingXigongchang.core; |
| | | using HH.WCS.QingXigongchang.dispatch; |
| | | using HH.WCS.QingXigongchang.process; |
| | | using Newtonsoft.Json; |
| | | using System.Collections.Generic; |
| | | using System.Web.Http; |
| | |
| | | "自由线段表": "TN_0021", |
| | | "移库工单表": "TN_0026", |
| | | "物料表": "TN_0005", |
| | | "库容表": "TN_0071", |
| | | "入库排锁表": "TN_0041", |
| | | "富勒托盘下发": "TN_0037", |
| | | "任务类型转换表": "TN_0043", |
| | | "备货单表": "TN_0057", |
| | | "库库转运": "TN_0068", |
| | | "领料单子表": "TN_0053", |
| | | "AGV设备信息": "TN_0042", |
| | | "原物料工单表": "TN_0071", |
| | | "库库转运": "TN_0076" |
| | | "原物料工单表": "TN_0066", |
| | | "AGV设备信息": "TN_0042" |
| | | } |
| | |
| | | <?xml version="1.0" encoding="utf-8" ?> |
| | | <Custom> |
| | | <HostToAgvServerUrl>http://192.168.1.146:9988/HostToAGV.cgi</HostToAgvServerUrl> |
| | | <HostToAgvServerUrl>http://10.140.3.100:9988/HostToAGV.cgi</HostToAgvServerUrl> |
| | | <OITcpServerUrl>http://127.0.0.1:5102</OITcpServerUrl> |
| | | <SqlServer>Data Source=192.168.1.137;Initial Catalog=OIMobox;User ID=sa;Password=Am123123</SqlServer> |
| | | <AgvSqlServer></AgvSqlServer> |
| | | <FuleServerUrl>http://127.0.0.1:5102</FuleServerUrl> |
| | | <repoNo>仓库编码</repoNo> |
| | | <!--胚盖上报--> |
| | | <MesServerUrl>http://127.0.0.1:5102</MesServerUrl> |
| | | <factoryCode>工厂编号</factoryCode> |
| | | <fromSystem>来源系统:MOBOX</fromSystem> |
| | | <SqlServer>Data Source=10.140.3.100;Initial Catalog=OIMobox;User ID=sa;Password=qaz-123456</SqlServer> |
| | | <AgvSqlServer>Data Source=10.140.3.100;Initial Catalog=QX_AGV;User ID=sa;Password=qaz-123456</AgvSqlServer> |
| | | <FuleServerUrl>http://yst-open-zuul.idc.yst.com.cn/api/yst-open-proxy/</FuleServerUrl> |
| | | <repoNo>QX00102</repoNo> |
| | | <securityKey>ebf0bfbbe98542b4804de03bc4ef0a70</securityKey> |
| | | <tokenfrom>MOBOX</tokenfrom> |
| | | |
| | | <securityKey></securityKey> |
| | | <tokenfrom></tokenfrom> |
| | | |
| | | <FactoryCode>工厂编码</FactoryCode> |
| | | <TaskReportUrl>http://127.0.0.1:6666</TaskReportUrl> |
| | | <TaskReportKey></TaskReportKey> |
| | | <FactoryName>工厂名称</FactoryName> |
| | | <OneSign>唯一标识</OneSign> |
| | | <FactoryCode>20B1</FactoryCode> |
| | | <TaskReportUrl>http://yst-open-zuul.idc.yst.com.cn/api/yst-open-proxy</TaskReportUrl> |
| | | <TaskReportKey>ebf0bfbbe98542b4804de03bc4ef0a70</TaskReportKey> |
| | | <FactoryName>青溪</FactoryName> |
| | | <OneSign>0050</OneSign> |
| | | |
| | | <!--plc信息,deviceType=1 自动门 deviceType=2 瓶盖机-无菌盖 deviceType=3 瓶盖机-水盖 deviceType=4 翻斗机(水盖) deviceType=5 翻斗机(无菌盖 v1/v2) deviceType=6 翻斗机(无菌盖 v6) deviceType=7 翻斗机(无菌盖 v8) |
| | | <FactoryCode>20B1</FactoryCode> |
| | | <TaskReportUrl>http://yst-open-zuul-qa.idc.yst.com.cn/api/yst-open-proxy</TaskReportUrl> |
| | | <TaskReportKey>9b42bdc3f0a94b3f9c31e72d1ab42ea7</TaskReportKey> |
| | | <FactoryName>青溪</FactoryName> |
| | | <OneSign>0050</OneSign> |
| | | {"address":"10.122.160.35","deviceName":"1号无菌盖机","deviceNo":[],"location":["YLWJG1005","YLWJG1006"],"deviceType":2,"enable":0}, |
| | | {"address":"10.122.160.36","deviceName":"2号无菌盖机","deviceNo":[],"location":["YLWJG1003","YLWJG1004"],"deviceType":2,"enable":0}, |
| | | {"address":"10.122.160.37","deviceName":"3号无菌盖机","deviceNo":[],"location":["YLWJG1001","YLWJG1002"],"deviceType":2,"enable":0}, |
| | |
| | | {"address":"10.122.160.33","deviceName":"门plc4","deviceNo":["9","10"],"location":[],"deviceType":1,"enable":1}, |
| | | {"address":"10.122.160.34","deviceName":"门plc5","deviceNo":["11","12"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.162","deviceName":"550","deviceNo":["1"],"location":["CX-2","CX-1"],"deviceType":9,"enable":1}, |
| | | |
| | | {"address":"10.140.3.162","deviceName":"550","deviceNo":["1"],"location":["CX-2","CX-1"],"deviceType":9,"enable":1}, |
| | | {"address":"10.140.3.100","deviceName":"CX2","FuLeLineNo":"QX3","deviceNo":[],"location":["CX2-2","CX2-1","5LCX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16",],"deviceType":9,"enable":1}, |
| | | 瓶坯入库区 |
| | | taskPri 默认值60 --> |
| | | <!-- |
| | | 1 门(独立门) |
| | | 2 无菌盖 |
| | | 3 水盖 |
| | | 4 水盖翻斗机 入库堆叠,人工解。 出库从出库位出到线边 空框进人工区, |
| | | 5 瓶坯翻斗机 |
| | | 6 无菌翻斗机 正常出入库流程 堆叠,入库,出线边 空框进人工区, |
| | | 4 水盖翻斗机 |
| | | 5 无菌翻斗机 |
| | | 6 电梯 |
| | | 8 瓶坯 |
| | | 9 水线 成品 |
| | | 10 水线翻斗机 人工放线边 空框进人工区, |
| | | 11 提升机 电梯机 |
| | | 9 水线 |
| | | --> |
| | | <deviceInfo> |
| | | <![CDATA[ |
| | | [ |
| | | {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"550","deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1}, |
| | | {"address":"10.140.3.163","deviceName":"注塑机","FuLeLineNo":"注塑机","deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1}, |
| | | {"address":"10.140.3.161","deviceName":"翻斗机","FuLeLineNo":"翻斗机","deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1}, |
| | | {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"青溪成品仓QX1输送线","deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, |
| | | {"address":"10.140.3.163","deviceName":"注塑机","deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1}, |
| | | |
| | | {"address":"10.140.3.175","deviceName":"注塑机3","deviceNo":["","664"],"location":["ZSJ3-1","ZSJ3-2"],"deviceType":8,"enable":1}, |
| | | |
| | | {"address":"10.140.3.176","deviceName":"注塑机4","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1}, |
| | | |
| | | {"address":"10.140.3.150","deviceName":"注塑机5","deviceNo":["","659"],"location":["ZSJ5-1","ZSJ5-2"],"deviceType":8,"enable":1}, |
| | | |
| | | {"address":"10.140.3.161","deviceName":"翻斗机","deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1}, |
| | | |
| | | {"address":"10.140.3.181","deviceName":"3线翻斗机","deviceNo":["","979"],"location":["SXFDJ1"],"deviceType":5,"enable":1}, |
| | | |
| | | {"address":"10.140.3.182","deviceName":"4线翻斗机","deviceNo":["","969"],"location":["SHIFDJ1"],"deviceType":5,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.162","deviceName":"门plc1","deviceNo":["1"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.169","deviceName":"5L550","FuLeLineNo":"5L550","deviceNo":[],"location":["5LCX-3","5LCX-2","5LCX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1}, |
| | | {"address":"10.140.3.165","deviceName":"5L注塑机","FuLeLineNo":"5L注塑机","deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1}, |
| | | {"address":"10.140.3.167","deviceName":"5L翻斗机","FuLeLineNo":"5L翻斗机","deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1}, |
| | | {"address":"10.140.3.169","deviceName":"5L550","FuLeLineNo":"青溪成品仓QX2输送线","deviceNo":[],"location":["5LCX-3","5LCX-2","5LCX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.177","deviceName":"CX3","FuLeLineNo":"青溪成品仓QX3输送线","deviceNo":[],"location":["CX3-2","CX3-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.178","deviceName":"CX4","FuLeLineNo":"青溪成品仓QX4输送线","deviceNo":[],"location":["CX4-2","CX4-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.165","deviceName":"5L注塑机","deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1}, |
| | | {"address":"10.140.3.167","deviceName":"5L翻斗机","deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1}, |
| | | |
| | | {"address":"10.140.3.155","deviceName":"门plc2","deviceNo":["2"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.155","deviceName":"一楼搬2楼","deviceNo":[],"location":["踢踢踢"],"deviceType":11,"enable":1}, |
| | | {"address":"10.140.3.179","deviceName":"门plc3","deviceNo":["3"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.180","deviceName":"门plc4","deviceNo":["4"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.190","deviceName":"QX3无菌盖翻斗机","deviceNo":["","8"],"location":["QX3FDJ-1"],"deviceType":6,"areaPriy":["QX3QX4MKRK"],"enable":1}, |
| | | |
| | | {"address":"10.140.3.191","deviceName":"QX4无菌盖翻斗机","deviceNo":["","9"],"location":["QX4FDJ-1"],"deviceType":6,"areaPriy":["QX3QX4MKRK"],"enable":1}, |
| | | {"address":"10.140.3.193","deviceName":"一号无菌盖机","deviceNo":[],"location":["WJG1-1","WJG1-2"],"deviceType":2,"areaPriy":["QX3QX4MKRK"],"enable":1}, |
| | | |
| | | {"address":"10.140.3.189","deviceName":"水盖机","deviceNo":[],"location":["SGJ-1","SGJ-2"],"deviceType":3,"areaPriy":["QX3QX4MKRK"],"enable":1}, |
| | | |
| | | {"address":"10.140.3.195","deviceName":"二号无菌盖机","deviceNo":[],"location":["RHWJGJ-1","RHWJGJ-2"],"deviceType":2,"areaPriy":["QX3QX4MKRK"],"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.192","deviceName":"门plc6","deviceNo":["5"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.183","deviceName":"门plc7","deviceNo":["13"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.194","deviceName":"门plc8","deviceNo":["12"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.188","deviceName":"门plc9","deviceNo":["7"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.185","deviceName":"门plc10","deviceNo":["15","185"],"location":[""],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.186","deviceName":"门plc11","deviceNo":["186"],"location":[""],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.196","deviceName":"门plc12","deviceNo":["6"],"location":[""],"deviceType":1,"enable":1}, |
| | | {"address":"192.168.1.142","deviceName":"T1提升机","deviceNo":[""],"location":["YWLT1TSJ"],"areaPriy":["YWLT1TSJCD"],"deviceType":13,"enable":1}, |
| | | {"address":"192.168.10.86","deviceName":"T2提升机","deviceNo":[""],"location":["YWLSXBQTSJ"],"areaPriy":[],"deviceType":13,"enable":1}, |
| | | |
| | | {"address":"10.140.3.197","deviceName":"门plc16","deviceNo":["16"],"location":[""],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.184","deviceName":"瓶盖550翻斗机","deviceNo":["","184"],"location":["SGFDJ-1"],"deviceType":4,"areaPriy":["PGMKCK"],"enable":1}, |
| | | |
| | | {"address":"10.140.3.187","deviceName":"瓶盖5L翻斗机","deviceNo":["","187"],"location":["SXFDJ-1"],"deviceType":10,"areaPriy":["PGMKCK"],"enable":1}, |
| | | |
| | | {"address":"10.140.3.170","deviceName":"T2提升机","deviceNo":[""],"taskPri":50,"location":["YWLT2TSJ"],"areaPriy":["YWLT2TSJCD"],"deviceType":13,"enable":1}, |
| | | {"address":"10.140.9.167","deviceName":"T1提升机","deviceNo":[""],"taskPri":50,"location":["YWLT1TSJ"],"areaPriy":["YWLT1TSJCD"],"deviceType":13,"enable":1}, |
| | | |
| | | ]]]> |
| | | |
| | | |
| | | </deviceInfo> |
| | | |
| | | |
| | | <!-- |
| | | DoorNo 上报的门号。 184,185都定的门号10 |
| | | {"address":"10.140.3.170","deviceName":"T2提升机","deviceNo":[""],"location":["YWLT2TSJ"],"areaPriy":["YWLT2TSJCD"],"deviceType":13,"enable":1} |
| | | DoorNo 上报的门号。 184,185 自定的门号10 |
| | | deviceNo ,给184,185 自己定2个门号。写这里。 |
| | | SignOpen 开门信号。 与deviceNo 1:1 对应 |
| | | SignClose 关门信号。 与deviceNo 1:1 对应 |
| | |
| | | --> |
| | | <DoorOneToMany> |
| | | <![CDATA[[ |
| | | {"DoorNo":"10","deviceNo":["184","15"],"SignOpen":["21","21"],"SignClose":["20","20"]}, |
| | | {"DoorNo":"10","deviceNo":["184","185"],"SignOpen":["21","21"],"SignClose":["20","20"]}, |
| | | {"DoorNo":"11","deviceNo":["187","186"],"SignOpen":["21","21"],"SignClose":["20","20"]}, |
| | | ]]]> |
| | | </DoorOneToMany> |
| | | |
| | | <!-- |
| | | NotUsingBolArea 非即产满框位。 瓶盖的入库堆叠位,翻斗机出库线边位 |
| | | UsingBolArea 即产满框位 这个翻斗机配置就行了 |
| | | NotUsingEmpty 非即产空框位,空框堆叠位 翻斗机入库堆叠位,瓶盖的出库线边位 |
| | | UsingEmpty 即产空框位。 这个瓶盖配置就行了 |
| | | --> |
| | | <BOLArea> |
| | | <![CDATA[[ |
| | | {"DeviceName":"无菌瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":2}, |
| | | {"DeviceName":"水盖瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":3}, |
| | | {"DeviceName":"水盖翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":4}, |
| | | {"DeviceName":"无菌翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":6}, |
| | | {"DeviceName":"水线翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":10}, |
| | | ]]]> |
| | | </BOLArea> |
| | | |
| | | <!-- |
| | | |
| | | --> |
| | | <!-- 下线位置配置。 从上到下分排,从左到右 分列 --> |
| | | <!-- 下线位置配置。 |
| | | |
| | | {"address":"10.140.3.185","deviceName":"550翻斗机","deviceNo":["","10"],"location":["SGFDJ-1"],"deviceType":6,"enable":1}, |
| | | |
| | | {"address":"10.140.3.186","deviceName":"5L翻斗机","deviceNo":["","11"],"location":["SXFDJ-1"],"deviceType":6,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.190","deviceName":"门plc5","deviceNo":["12"],"location":[],"deviceType":1,"enable":1},从上到下分排,从左到右 分列 --> |
| | | <!-- |
| | | 1-1号无菌2号无菌3号无菌 |
| | | 2 - 1号水盖 |
| | |
| | | ]]]> |
| | | </inStockCacheBit>--> |
| | | <!-- |
| | | agv小车的取放点位 |
| | | |
| | | Location:货位编码 |
| | | StartBit:作为起点时的站点 |
| | | EndBit:作为终点时的站点 |
| | | --> |
| | | |
| | | <MoreSites> |
| | | <![CDATA[[ |
| | | {"Location":"JCJYKK-1P-1L-1C","StartBit":178,"EndBit":1335}, |
| | | {"Location":"JCJYKK-1P-2L-1C","StartBit":175,"EndBit":1336}, |
| | | {"Location":"JCJYMK-1P-1L-1C","StartBit":184,"EndBit":1333}, |
| | | {"Location":"JCJYMK-1P-2L-1C","StartBit":181,"EndBit":1334}, |
| | | {"Location":"JCJYMK-1P-3L-1C","StartBit":1372,"EndBit":1418}, |
| | | {"Location":"JCJYMK-1P-4L-1C","StartBit":1374,"EndBit":1419}, |
| | | {"Location":"接驳区&BACK","StartBit":1374,"EndBit":1419}, |
| | | {"Location":"JCJYKK1-1","StartBit":3372,"EndBit":3372}, |
| | | {"Location":"JCJYKK2-1","StartBit":3370,"EndBit":3370}, |
| | | {"Location":"JCJYKK3-1","StartBit":3367,"EndBit":3367}, |
| | | {"Location":"JCJYKK1-4","StartBit":3368,"EndBit":3368}, |
| | | {"Location":"550JCJYMK1-1","StartBit":1425,"EndBit":1424}, |
| | | {"Location":"550JCJYMK2-1","StartBit":1426,"EndBit":1423}, |
| | | {"Location":"550JCJYMK3-1","StartBit":1478,"EndBit":1477}, |
| | | {"Location":"550JCJYMK4-1","StartBit":3506,"EndBit":3505}, |
| | | {"Location":"5LJCJYMK1-1","StartBit":1488,"EndBit":1487}, |
| | | {"Location":"5LJCJYMK2-1","StartBit":1489,"EndBit":1486}, |
| | | {"Location":"5LJCJYMK3-1","StartBit":1335,"EndBit":178}, |
| | | {"Location":"5LJCJYMK4-1","StartBit":1336,"EndBit":1528}, |
| | | {"Location":"SXJCJY1-1","StartBit":3485,"EndBit":3484}, |
| | | {"Location":"SXJCJY2-1","StartBit":3482,"EndBit":3481}, |
| | | {"Location":"SXJCJY3-1","StartBit":3483,"EndBit":3480}, |
| | | {"Location":"SXJCJY4-1","StartBit":3487,"EndBit":3486}, |
| | | {"Location":"SIXJCJY1-1","StartBit":3471,"EndBit":3470}, |
| | | {"Location":"SIXJCJY2-1","StartBit":3469,"EndBit":3468}, |
| | | {"Location":"SIXJCJY3-1","StartBit":3466,"EndBit":3465}, |
| | | {"Location":"QXZXZZQ1-1","StartBit":5450,"EndBit":5523}, |
| | | {"Location":"QXZXZZQ1-2","StartBit":5455,"EndBit":5524}, |
| | | {"Location":"QXZXZZQ1-3","StartBit":5454,"EndBit":5525}, |
| | | {"Location":"QXZXZZQ1-4","StartBit":5453,"EndBit":5526}, |
| | | {"Location":"QXZXZZQ1-5","StartBit":5452,"EndBit":5527}, |
| | | {"Location":"QXZXZZQ1-6","StartBit":5451,"EndBit":5528}, |
| | | {"Location":"QXZXZZQ1-7","StartBit":5463,"EndBit":5529}, |
| | | {"Location":"QXZXZZQ1-8","StartBit":5464,"EndBit":5530}, |
| | | {"Location":"QXZXZZQ2-1","StartBit":5497,"EndBit":5562}, |
| | | {"Location":"QXZXZZQ2-2","StartBit":5502,"EndBit":5561}, |
| | | {"Location":"QXZXZZQ2-3","StartBit":5501,"EndBit":5560}, |
| | | {"Location":"QXZXZZQ2-4","StartBit":5500,"EndBit":5559}, |
| | | {"Location":"QXZXZZQ2-5","StartBit":5499,"EndBit":5558}, |
| | | {"Location":"QXZXZZQ2-6","StartBit":5498,"EndBit":5557}, |
| | | {"Location":"QXZXZZQ2-7","StartBit":5503,"EndBit":5556}, |
| | | {"Location":"QXZXZZQ2-8","StartBit":5504,"EndBit":5555}, |
| | | {"Location":"QXZXZZQ3-1","StartBit":5506,"EndBit":5570}, |
| | | {"Location":"QXZXZZQ3-2","StartBit":5511,"EndBit":5569}, |
| | | {"Location":"QXZXZZQ3-3","StartBit":5510,"EndBit":5568}, |
| | | {"Location":"QXZXZZQ3-4","StartBit":5509,"EndBit":5567}, |
| | | {"Location":"QXZXZZQ3-5","StartBit":5508,"EndBit":5566}, |
| | | {"Location":"QXZXZZQ3-6","StartBit":5507,"EndBit":5565}, |
| | | {"Location":"QXZXZZQ3-7","StartBit":5512,"EndBit":5564}, |
| | | {"Location":"QXZXZZQ3-8","StartBit":5513,"EndBit":5563}, |
| | | {"Location":"QXZXZZQ4-1","StartBit":5515,"EndBit":5578}, |
| | | {"Location":"QXZXZZQ4-2","StartBit":5520,"EndBit":5577}, |
| | | {"Location":"QXZXZZQ4-3","StartBit":5519,"EndBit":5576}, |
| | | {"Location":"QXZXZZQ4-4","StartBit":5518,"EndBit":5575}, |
| | | {"Location":"QXZXZZQ4-5","StartBit":5517,"EndBit":5574}, |
| | | {"Location":"QXZXZZQ4-6","StartBit":5516,"EndBit":5573}, |
| | | {"Location":"QXZXZZQ4-7","StartBit":5521,"EndBit":5572}, |
| | | {"Location":"QXZXZZQ4-8","StartBit":5522,"EndBit":5571}, |
| | | {"Location":"WJBQJBQ1-1&BACK","StartBit":7445,"EndBit":7443}, |
| | | {"Location":"WJBQJBQ2-1&BACK","StartBit":7446,"EndBit":7444}, |
| | | ]]]> |
| | | </MoreSites> |
| | | <!--配置 即产 空/满 库区,非即产库 空/满 区 |
| | | 1.即产满 |
| | | 2.即产空 |
| | | 3 非即产满 |
| | | 4.非即产空 |
| | | <!-- |
| | | |
| | | {"DeviceName":"4L5L线翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":10}, |
| | | --> |
| | | <AreaSet> |
| | | <BOLArea> |
| | | <![CDATA[[ |
| | | {"Area":"JCJYKK","AreaType":2}, |
| | | {"DeviceName":"一号无菌盖机","NotUsingBolArea":"","UsingBolArea":"XQX3JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX3WJGJCJYKK","deviceType":2}, |
| | | |
| | | {"DeviceName":"二号无菌盖机","NotUsingBolArea":"","UsingBolArea":"XQX4JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX3WJGJCJYKK","deviceType":2}, |
| | | {"DeviceName":"QX3无菌盖翻斗机","NotUsingBolArea":"QX3QX4MKRK","UsingBolArea":"XQX3JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX34WJGJCJYKK","deviceType":6}, |
| | | {"DeviceName":"QX4无菌盖翻斗机","NotUsingBolArea":"QX3QX4MKRK","UsingBolArea":"XQX4JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX34WJGJCJYKK","deviceType":6}, |
| | | {"DeviceName":"水盖机","NotUsingBolArea":"SGHRCW","UsingBolArea":"SGJCJYMK","NotUsingEmpty":"PGKKCK","UsingEmpty":"SGJCJYKK","deviceType":3}, |
| | | {"DeviceName":"瓶盖550翻斗机","NotUsingBolArea":"SGHCW","UsingBolArea":"SGJCJYMK","NotUsingEmpty":"SGKKHRCW","UsingEmpty":"SGJCJYKK","deviceType":4}, |
| | | {"DeviceName":"瓶盖5L翻斗机","NotUsingBolArea":"SGRGHCW","UsingBolArea":"","NotUsingEmpty":"SGKKHRCW","UsingEmpty":"","deviceType":10}, |
| | | |
| | | ]]]> |
| | | </AreaSet> |
| | | </BOLArea> |
| | | |
| | | </Custom> |
| | | |
| | |
| | | static List<string> ABlist = new List<string> { "YWLAQWJ", "YWLBQWJ" }; |
| | | static List<string> CDlist = new List<string> { "YWLCQSX", "YWLDQWJ" }; |
| | | static bool InworkLock = false; |
| | | //Dictionary<string, List<RowLock>> RGRowList = new Dictionary<string, List<RowLock>>(); |
| | | public static List<RowLock> RGRow = new List<RowLock>(); |
| | | /// <summary> |
| | | /// 原材料 检测各流转位置。 写入托盘货位s_type 中 下一个目的地。就开始中转。 |
| | | /// 原物料纸箱,入库堆叠区转运 YWLRGDD--人工堆叠区 |
| | |
| | | { |
| | | try |
| | | { |
| | | |
| | | var lolist = LocationHelper.GetAreaNormalLocList(area);// LocationHelper.GetList<Location>(x => x.S_AREA_CODE == area && x.S_LOCK_STATE != "报废"); |
| | | var lgrow = lolist.GroupBy(x => x.N_ROW).OrderBy(x => x.Key); |
| | | Dictionary<string, List<Location>> dsll = new Dictionary<string, List<Location>>(); |
| | |
| | | if (!cntritems.Any()) |
| | | continue; |
| | | var cir1 = cntritems.First(); |
| | | |
| | | |
| | | //只筛选纸箱物料的库区数据。 |
| | | if (!string.IsNullOrEmpty(cir1.S_ITEM_NAME) && cir1.S_ITEM_NAME.Contains("纸箱-")) |
| | | if (dsll.TryGetValue(cir1.S_ITEM_CODE, out List<Location> ll)) |
| | |
| | | } |
| | | } |
| | | if (dsll.Any()) |
| | | { |
| | | foreach (var r in dsll) |
| | | { |
| | | foreach (var rows in r.Value.GroupBy(x => x.N_ROW).OrderBy(x => x.Key)) |
| | |
| | | //else |
| | | var ccr = _clrel0.S_TYPE.Split(','); |
| | | string EdnRarea = ccr.First(); |
| | | |
| | | if (EdnRarea == "YWLBQWJ" || EdnRarea == "YWLWJJB")//到B区的移库工单最多只能生成两条任务 |
| | | { |
| | | //查询任务数 |
| | | List<string> AreaLi = new List<string>() { "YWLBQWJ", "YWLWJJB" }; |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var list = db.Queryable<Location>().Where(a => AreaLi.Contains(a.S_AREA_CODE) && a.S_LOCK_STATE == "入库锁").ToList(); |
| | | if (list.Count() >= 2) |
| | | { |
| | | LogHelper.Info($"CreateTransport- CreateTask Error" + $"终点库区为YWLRGDD或者YWLWJJB 则最多只能生成两个任务"); |
| | | continue; |
| | | } |
| | | } |
| | | string Last = string.Join(",", ccr.Skip(1)); |
| | | |
| | | if (ABlist.Contains(EdnRarea)) |
| | | { |
| | | var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "入库锁" || x.S_LOCK_STATE == "出库锁")); |
| | | if (ls.Any()) |
| | | //var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "入库锁")); |
| | | if (ls.Count() > 1) |
| | | { |
| | | LogHelper.Info($"{EdnRarea}任务数1管制2"); |
| | | continue; |
| | | } |
| | | } |
| | | if (CDlist.Contains(EdnRarea)) |
| | | { |
| | | var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_STATE == "入库锁"); |
| | | //var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "入库锁")); |
| | | if (ls.Count() > 2) |
| | | { |
| | | LogHelper.Info($"{EdnRarea}任务数1管制3"); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | //else if (CDlist.Contains(EdnRarea)) |
| | | //{ |
| | | // var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "入库锁")).ToList(); |
| | | // if (ls.Count() > 2) |
| | | // { |
| | | // LogHelper.Info($"CD区入库任务管制最大数3 {EdnRarea}"); |
| | | // continue; |
| | | // } |
| | | //} |
| | | var cntritems = ContainerHelper.GetCntrItemRel(_clrel0.S_CNTR_CODE); |
| | | if (!cntritems.Any()) |
| | | continue; |
| | |
| | | if (CDlist.Contains(EdnRarea)) |
| | | { |
| | | isCd = true; |
| | | inlockLis = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "入库锁").ToList(); |
| | | inlock = inlockLis.FirstOrDefault(); |
| | | //inlockLis = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "入库锁").ToList(); |
| | | //if (inlockLis.Count() > 0) |
| | | //{ |
| | | // inlock = inlockLis.FirstOrDefault(); |
| | | //} |
| | | inlock = RGRow.FirstOrDefault(); |
| | | if (inlock != null) |
| | | { |
| | | //当入库的任务能放满一排并且还有余的时候 开第二排 |
| | | //先判断起点有多少相同的 能入的物料 |
| | | if (_cl.S_AREA_CODE == "YWLRGDD")//判断起点是否是人工堆叠区 |
| | | { |
| | | inlockLis = RGRow.FindAll(e => e.S_AREA_CODE == EdnRarea && e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME).ToList(); |
| | | //然后判断人工堆叠区需要入库多少托同品种物料 startMum |
| | | //货位 托盘 物料表联查 |
| | | LogHelper.Info($"查起点有多少同品种的物料 开始"); |
| | | var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); |
| | | ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == _clrel0.S_TYPE); |
| | | var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).Includes(e => e.LocCntrRel, p => p.CntrItemRel).ToList(); |
| | | var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList(); |
| | | LogHelper.Info($"起点要入CD的有多少托盘数量为{lstCanOutL.Count()}"); |
| | | //判断终点排能入多少 少于入库托盘数则多开一排 EndMum |
| | | var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "无" && inlockLis.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList(); |
| | | LogHelper.Info($"终点CD排有多少空托能入{lstCanOutL.Count()}"); |
| | | if (lstCanOutL.Count <= EndMum.Count()) |
| | | { |
| | | arloclist = arloclist.FindAll(x => inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); |
| | |
| | | { |
| | | arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (_cl.S_AREA_CODE == "YWLRGDD") |
| | | { |
| | | //查询是否有已经入了的排 |
| | | var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); |
| | | ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == EdnRarea); |
| | | var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList(); |
| | | LogHelper.Info($"终点有相同的物料的货位有{lstCanOutL.Count()}"); |
| | | if (lstCanOutL.Count() > 0) |
| | | { |
| | | var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "无" && lstCanOutL.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList(); |
| | | if (EndMum.Count() > 0) |
| | | { |
| | | arloclist = arloclist.FindAll(x => lstCanOutL.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(x => x.Key)) |
| | |
| | | var sign = Settings.GetTimeStamp(); |
| | | var res = TaskProcess.CreateTransport(sign, _cl.S_LOC_CODE, endbit.S_LOC_CODE, "原物料搬运-纸箱", _clrel.Select(x => x.S_CNTR_CODE).ToList(), 1, endbit.N_CURRENT_NUM + 1, 1, 50, Last);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : ""); |
| | | LogHelper.Info($"{r.Key}原物料搬运 {sign} 任务 ,创建{res} "); |
| | | if (res && inlock == null && isCd) |
| | | if (CDlist.Contains(endbit.S_AREA_CODE) && res) |
| | | { |
| | | LogHelper.Info($"添加内存排锁"); |
| | | var ggf = inlockLis.Find(e => e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && e.S_AREA_CODE == endbit.S_AREA_CODE && e.N_ROW == endbit.N_ROW); |
| | | LogHelper.Info($"添加内存排锁 是否查询到数据:{JsonConvert.SerializeObject(ggf)}"); |
| | | if (ggf == null) |
| | | { |
| | | var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "入库锁", S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW }; |
| | | WCSHelper.Do(db => db.Insertable(rrrr).ExecuteCommand()); |
| | | inlockLis.Add(rrrr); |
| | | LogHelper.Info($"添加内存排锁 添加数据到内存排锁中:{JsonConvert.SerializeObject(inlockLis)}"); |
| | | } |
| | | } |
| | | //if (res && inlock == null && isCd) |
| | | //{ |
| | | // var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "入库锁", S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW }; |
| | | // LogHelper.Info($"原物料入库 添加排锁信息{JsonConvert.SerializeObject(rrrr)} "); |
| | | // WCSHelper.Do(db => db.Insertable(rrrr).ExecuteCommand()); |
| | | //} |
| | | if (EdnRarea == "YWLWJJB") InworkLock = false; |
| | | break; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | else if (InworkLock) InworkLock = false; |
| | | } |
| | | else if (InworkLock) |
| | | { |
| | | InworkLock = false; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | S_NOTE = cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim(), |
| | | S_ITEM_CODE = cir.S_ITEM_CODE, |
| | | S_ITEM_NAME = cir.S_ITEM_NAME, |
| | | S_BATCH_NO = cir.S_BATCH_NO, |
| | | S_CJ_NAME = cir.S_CJ_NAME, |
| | | S_CNTR_CODE = cir.S_CNTR_CODE |
| | | }) |
| | | .ToList(); |
| | | /// 人工堆叠区纸箱 和 标签 是按标识+物料筛选进行入库转运。 |
| | | /// 物料名称包含对应种类进行入库。 |
| | | foreach (var item in locsFirstA) |
| | | { |
| | | if (!string.IsNullOrEmpty(item.S_BATCH_NO)) |
| | | { |
| | | item.S_NOTE = item.S_NOTE + "&" + item.S_BATCH_NO; |
| | | } |
| | | } |
| | | var locsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("标签-") && x.S_TYPE == WJ_BQ.RK_BBHJQ); |
| | | var SlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("标签-") && x.S_TYPE == SX_BQ.RK_BBHJQ); |
| | | var TKlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("提扣-")); |
| | |
| | | { |
| | | try |
| | | { |
| | | // var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "无菌标签出库" && x.WorkType == 6 && x.SQL_State == "执行中").FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList(); |
| | | var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "无菌标签出库" && x.WorkType == 6 && x.SQL_State == "执行中").FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList(); |
| | | if (!yuworders.Any()) |
| | | { |
| | |
| | | var tklist = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 1 && x.SQL_State == "执行中"); |
| | | if (!Syuworders.Any()) |
| | | { |
| | | //水线标签入库 |
| | | YwlBQ_CreInwork(SlocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); |
| | | } |
| | | if (tklist.Count() > 0) |
| | | { |
| | | var tk = tklist.FirstOrDefault(); |
| | | |
| | | var loc = LocationHelper.GetLoc(plc.location[0]); |
| | | if (loc.N_CURRENT_NUM > 0 && loc.S_LOCK_STATE == "无") |
| | | { |
| | |
| | | LogHelper.CErrorLog($"{tk.SQL_WorkNo}-{tk.SQL_PLineNo} 退库工单开启,绑定的 零整 标记"); |
| | | } |
| | | Location Endbit = null; |
| | | // var hjs = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == SX_BQ.RK_BBHJQ).FindAll(x => x.S_LOCK_STATE == "无" && x.N_CURRENT_NUM == 0); |
| | | // var hjs = db.Queryable<Location>().Where(l => l.S_AREA_CODE == SX_BQ.RK_BBHJQ && l.S_LOCK_STATE.Trim() == "无").ToList(); |
| | | var hjs = LocationHelper.GetAreaNormalLocList(SX_BQ.RK_BBHJQ, true, false); |
| | | Endbit = hjs.FindAll(x => x.N_LAYER == (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3))).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); |
| | | if (Endbit != null) |
| | |
| | | { |
| | | //return; |
| | | ///起点数据。 终点库区 堆叠层数。 |
| | | YwlPETK_CreInwork(PElocsFirst, "YWLTKMKQ", "提扣叉运", 3);//提扣入库--PE膜 |
| | | YwlPETK_CreInwork(TKlocsFirst, "YWLTKMKQ", "收缩膜叉运", 1); // PE入库 --提扣 |
| | | YwlPETK_CreInwork(PElocsFirst, "YWLTKMKQ", "收缩膜叉运", 2);//PE膜 |
| | | YwlPETK_CreInwork(TKlocsFirst, "YWLTKMKQ", "提扣叉运", 1); //提扣 |
| | | //YwlPETKtkOrder("YWLZSXBKQ", "YWLTKMKQ", "收缩膜叉运"); |
| | | //YwlPETKOutOrder("YWLTKMKQ", "YWLZSXBKQ", "收缩膜叉运");// PE中出库 |
| | | |
| | |
| | | string v = "YWLTKMKQ"; |
| | | var rklist = LocationHelper.GetRowLock(v); |
| | | int hof = (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3)); |
| | | |
| | | var inlock = rklist.Find(x => x.S_LOCK_SRC == (cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim() + hof) && x.S_LOCK_STATE.Contains("入库锁")); |
| | | Location EndBit = null; |
| | | var NormalList = LocationHelper.GetAreaNormalLocList(v); |
| | |
| | | { |
| | | var s_type = ContainerHelper.GetCntrItemRel(CNTR.FirstOrDefault().S_CNTR_CODE).FirstOrDefault()?.N_BQ_TRAY_TYPE ?? 0; |
| | | Location Endbit = null; |
| | | if (area == area/* WJ_BQ.RK_BQJBQ*/) |
| | | { |
| | | //if (area == area/* WJ_BQ.RK_BQJBQ*/) |
| | | //{ |
| | | var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, true, false); |
| | | Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3))).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); |
| | | if (Endbit != null) |
| | |
| | | var re = TaskProcess.CreateTransport("", lastfull.S_LOC_CODE.Trim(), Endbit.S_LOC_CODE, "标签叉运-线边标签退库", CNTR.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, 1, 62); |
| | | LogHelper.CSucessLog($"from {lastfull.S_LOC_CODE} to {Endbit.S_LOC_CODE} 标签叉运-接驳标签退库 ,创建{re}"); |
| | | } |
| | | } |
| | | // } |
| | | |
| | | //else |
| | | //{ |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 入库退库。 知道 零头满托。正常匹配。 |
| | | /// </summary> |
| | |
| | | foreach (var ptR in klocsFirst.GroupBy(x => x.N_ROW).OrderBy(x => x.Key)) |
| | | { |
| | | Location EndBit = null; |
| | | var rsfull = ptR.OrderBy(X => X.N_COL).ToList().FindAll(x => x.N_CURRENT_NUM > 0).LastOrDefault(); |
| | | var ptrlist = ptR.OrderBy(X => X.N_COL).ToList(); |
| | | var rsfull = ptrlist.FindAll(x => x.N_CURRENT_NUM > 0).LastOrDefault(); |
| | | if (rsfull != null) |
| | | { |
| | | var cntrlist = ptrlist.FindAll(x => x.S_LOC_CODE == rsfull.S_LOC_CODE).Select(x => x.S_CNTR_CODE); |
| | | var rklist = LocationHelper.GetRowLock(v); |
| | | var inlock = rklist.Find(x => x.S_AREA_CODE == v && x.S_LOCK_SRC == (rsfull.S_NOTE + rsfull.HalfOrFull) && x.S_LOCK_STATE.Contains("入库锁")); |
| | | var NormalList = LocationHelper.GetAreaNormalLocList(v); |
| | |
| | | { |
| | | var srloclist = rs.OrderBy(x => x.N_COL).ToList(); |
| | | var lastfull = srloclist.FindAll(x => x.N_CURRENT_NUM > 0).LastOrDefault(); |
| | | EndBit = srloclist.Find(x => x.S_LOCK_STATE == "无" && x.N_CURRENT_NUM < Math.Min(x.N_CAPACITY, v1) && x.S_LOCK_STATE != "报废" && x.N_COL >= (lastfull?.N_COL ?? 0)); |
| | | EndBit = srloclist.Find(x => x.S_LOCK_STATE == "无" && (x.N_CURRENT_NUM + cntrlist.Count()) <= Math.Min(x.N_CAPACITY, v1) && x.S_LOCK_STATE != "报废" && x.N_COL >= (lastfull?.N_COL ?? 0)); |
| | | if (EndBit != null) |
| | | break; |
| | | } |
| | |
| | | } |
| | | if (EndBit != null) |
| | | { |
| | | var res = TaskProcess.CreateTransport("", rsfull.S_LOC_CODE.Trim(), EndBit.S_LOC_CODE, v2 + "-入库", new List<string> { rsfull.S_CNTR_CODE }, rsfull.N_CURRENT_NUM, EndBit.N_CURRENT_NUM + 1, 1, 62); |
| | | var res = TaskProcess.CreateTransport("", rsfull.S_LOC_CODE.Trim(), EndBit.S_LOC_CODE, v2 + "-入库", cntrlist.ToList(), rsfull.N_CURRENT_NUM + 1 - cntrlist.Count(), EndBit.N_CURRENT_NUM + 1, 1, 62); |
| | | LogHelper.CSucessLog($"from {rsfull.S_LOC_CODE} to {EndBit.S_LOC_CODE} {(v2 + "-入库")} ,创建{res} "); |
| | | |
| | | if (res && inlock == null) |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | private static void YwlBQ_CreSXOutOrder(Settings.deviceInfo plc, List<YWLWorkOrder> yuworders) |
| | | { |
| | |
| | | public int Row { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 原物料纸箱出库 |
| | | /// AB区物料不足自动转运 |
| | | /// </summary> |
| | | public static void AutoRun13TSJ() |
| | | public static void ZdzyABArea() |
| | | { |
| | | Action<YWLWorkOrder> _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好 = (od) => |
| | | try |
| | | { |
| | | var chi = new SqlHelper<object>().GetInstance(); |
| | | var newDb = chi.CopyNew(); |
| | | foreach (var PLC in Settings.GetDeviceInfoList().FindAll(X => X.deviceType == 13 && X.enable == 1)) |
| | | { |
| | | string pline = PLC.deviceName; |
| | | if (PLC.deviceName.Contains("T2")) |
| | | pline = "T2提升机-纸箱"; |
| | | |
| | | var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "执行中"); |
| | | if (orkOrd.Any()) |
| | | { |
| | | foreach (var od in orkOrd) |
| | | { |
| | | var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW); |
| | | //查询可用货位有多少 |
| | | List<string> Ky = new List<string>() { "无", "出库锁", "入库锁" }; |
| | | var loclistK = loclist.FindAll(x => Ky.Contains(x.S_LOCK_STATE)).Count(); |
| | | var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "无").Count(); |
| | | LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 出库余量判断是否需要转运。-{count}< 总共能用的货位数{loclistK} -7"); |
| | | if (count <= loclistK - 7) |
| | | { |
| | | LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}对应工单的{od.S_ROW} 物料数量不足。触发转运。"); |
| | | // 先看是否有到该库区的转运任务。 |
| | | var zxs = LocationHelper.GetList<YWLZXtake>(X => X.S_ZX_STATE == "执行" && X.S_END_AREA == od.S_ROW); |
| | | //1.查看物料是否匹配。 |
| | | var itemTRUN = zxs.Any(x => x.S_ITEM_CODE == od.SQL_ItemCode && x.S_ITEM_NAME == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME); |
| | | if (itemTRUN) |
| | | { //有到该库区的 物料转运任务了。 不需要继续了 。 |
| | | |
| | | var zxs = LocationHelper.GetList<YWLZXtake>(X => X.S_ZX_STATE == "执行" && X.S_END_AREA == od.S_ROW).ToList(); |
| | | //查询是否有重复的工单在执行 |
| | | var ggf = zxs.Find(x => x.S_ITEM_CODE == od.SQL_ItemCode && x.S_ITEM_NAME == od.SQL_ItemName); |
| | | if (ggf != null) |
| | | { |
| | | LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}已经存在转运了无需触发转运。"); |
| | | return; |
| | | continue; |
| | | } |
| | | //1.查看物料是否匹配。 |
| | | //var itemTRUN = zxs.Any(x => x.S_ITEM_CODE == od.SQL_ItemCode && x.S_ITEM_NAME == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME); |
| | | //if (itemTRUN) |
| | | //{ //有到该库区的 物料转运任务了。 不需要继续了 。 |
| | | |
| | | // LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}已经存在转运了无需触发转运。"); |
| | | // return; |
| | | //} |
| | | //人工转运没指定物料,我会自动写回转运单 物料数据。 |
| | | |
| | | //找CD 区 哪里有这个物料。 |
| | | Dictitems TrunStart = null; |
| | | Dictitems TrunStart = new Dictitems(); |
| | | foreach (var area in CDlist) |
| | | { |
| | | if (dsi.TryGetValue(area, out var dictitems1)) |
| | | { |
| | | var arearowsloc = LocationHelper.GetAreaNormalLocList(area); |
| | | foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME)) |
| | | { |
| | | if (arearowsloc.Exists(x => x.N_ROW == d.Row)) |
| | | { |
| | | TrunStart = d; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); |
| | | |
| | | LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}触发转运。转运来源是{JsonConvert.SerializeObject(TrunStart)}"); |
| | | if (TrunStart != null) |
| | | WCSHelper.Do(db => |
| | | //ca.And((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName && t.S_CJ_NAME == od.S_CJ_NAME); |
| | | var lstCanOutL = newDb.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName && t.S_CJ_NAME == od.S_CJ_NAME).ToList(); |
| | | if (!lstCanOutL.Any()) |
| | | { |
| | | db.Insertable(new YWLZXtake |
| | | lstCanOutL = newDb.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName).ToList(); |
| | | } |
| | | //List<string> CRk = new List<string>() { "出库锁", "入库锁" }; |
| | | //var EndMum = newDb.Queryable<Location>().Where(l => l.S_AREA_CODE == area && CRk.Contains(l.S_LOCK_STATE)).ToList(); |
| | | //var RowLock = EndMum.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList(); |
| | | //foreach (var item in RowLock) |
| | | //{ |
| | | // lstCanOutL.RemoveAll(e => e.N_ROW == item.N_ROW); |
| | | //} |
| | | if (lstCanOutL.Count() > 0) |
| | | { |
| | | //var LstCan = newDb.Queryable<LocCntrRel>().Where(a => lstCanOutL.Select(e => e.S_LOC_CODE).ToList().Contains(a.S_LOC_CODE)).ToList(); |
| | | var loc = lstCanOutL.OrderBy(e => e.T_FULL_TIME).FirstOrDefault(); |
| | | TrunStart.area = area; |
| | | TrunStart.Row = loc.N_ROW; |
| | | } |
| | | //if (dsi.TryGetValue(area, out var dictitems1)) |
| | | //{ |
| | | |
| | | // var arearowsloc = LocationHelper.GetAreaNormalLocList(area); |
| | | // foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME)) |
| | | // { |
| | | // if (arearowsloc.Exists(x => x.N_ROW == d.Row)) |
| | | // { |
| | | // TrunStart = d; |
| | | // break; |
| | | // } |
| | | // } |
| | | //} |
| | | } |
| | | LogHelper.Info($"ZdzyABArea{od.SQL_WorkNo}触发转运。转运来源是{JsonConvert.SerializeObject(TrunStart)}"); |
| | | if (TrunStart?.area != null) |
| | | { |
| | | var ggft = new YWLZXtake() |
| | | { |
| | | SQL_WorkNo = "CKD" + DateTime.Now.Ticks.ToString(), |
| | | S_START_AREA = TrunStart.area, |
| | | N_START_ROW = TrunStart.Row, |
| | | S_END_AREA = od.S_ROW, |
| | |
| | | S_ITEM_NAME = od.SQL_ItemName, |
| | | S_CJ_NAME = od.S_CJ_NAME, |
| | | S_ZZ_AREA = (od.S_ROW == "YWLAQWJ" ? "YWLWJJB" : od.S_ROW) |
| | | }).ExecuteCommand(); |
| | | }); |
| | | }; |
| | | var gf = newDb.Insertable(ggft).ExecuteCommand(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //var TaskSiggg = Settings.GetTimeStamp(); |
| | | //var list = new List<string>() { "YWLAQWJ", "YWLBQWJ", "YWLCQSX", "YWLDQWJ" }; |
| | | //var WorkOrder = new List<YWLWorkOrder>(); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | LogHelper.Info($"ZdzyABArea 触发转运 报错:{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 原物料纸箱出库 |
| | | /// </summary> |
| | | public static void AutoRun13TSJ() |
| | | { |
| | | |
| | | //Action<YWLWorkOrder> _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好 = (od) => |
| | | //{ |
| | | // LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}对应工单的{od.S_ROW} 物料数量不足。触发转运。"); |
| | | // // 先看是否有到该库区的转运任务。 |
| | | // var zxs = LocationHelper.GetList<YWLZXtake>(X => X.S_ZX_STATE == "执行" && X.S_END_AREA == od.S_ROW); |
| | | // //1.查看物料是否匹配。 |
| | | // var itemTRUN = zxs.Any(x => x.S_ITEM_CODE == od.SQL_ItemCode && x.S_ITEM_NAME == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME); |
| | | // if (itemTRUN) |
| | | // { //有到该库区的 物料转运任务了。 不需要继续了 。 |
| | | |
| | | // LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}已经存在转运了无需触发转运。"); |
| | | // return; |
| | | // } |
| | | // //人工转运没指定物料,我会自动写回转运单 物料数据。 |
| | | |
| | | // //找CD 区 哪里有这个物料。 |
| | | // Dictitems TrunStart = null; |
| | | // foreach (var area in CDlist) |
| | | // { |
| | | // if (dsi.TryGetValue(area, out var dictitems1)) |
| | | // { |
| | | // var arearowsloc = LocationHelper.GetAreaNormalLocList(area); |
| | | // foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME)) |
| | | // { |
| | | // if (arearowsloc.Exists(x => x.N_ROW == d.Row)) |
| | | // { |
| | | // TrunStart = d; |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | // LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}触发转运。转运来源是{JsonConvert.SerializeObject(TrunStart)}"); |
| | | // if (TrunStart != null) |
| | | // WCSHelper.Do(db => |
| | | // { |
| | | // db.Insertable(new YWLZXtake |
| | | // { |
| | | // S_START_AREA = TrunStart.area, |
| | | // N_START_ROW = TrunStart.Row, |
| | | // S_END_AREA = od.S_ROW, |
| | | // S_ZX_STATE = "执行", |
| | | // S_ITEM_CODE = od.SQL_ItemCode, |
| | | // S_ITEM_NAME = od.SQL_ItemName, |
| | | // S_CJ_NAME = od.S_CJ_NAME, |
| | | // S_ZZ_AREA = (od.S_ROW == "YWLAQWJ" ? "YWLWJJB" : od.S_ROW) |
| | | // }).ExecuteCommand(); |
| | | // }); |
| | | //}; |
| | | foreach (var PLC in Settings.GetDeviceInfoList().FindAll(X => X.deviceType == 13 && X.enable == 1)) |
| | | { |
| | | string pline = PLC.deviceName; |
| | |
| | | if (locs.Find(x => x.N_CURRENT_NUM > 0) != null) //拆垛有货 不判断 |
| | | continue; |
| | | can = true; |
| | | |
| | | //var source1 = orkOrd.FirstOrDefault(); |
| | | //foreach (var item in list) |
| | | //{ |
| | | // YWLWorkOrder source = new YWLWorkOrder(); |
| | | // source.SQL_PLineNo = source1.SQL_PLineNo; |
| | | // source.FuLe_PLine_No = source1.FuLe_PLine_No; |
| | | // source.SQL_LinkLineNO = source1.SQL_LinkLineNO; |
| | | // source.SQL_Area = item; |
| | | // source.SQL_UsingNow = source1.SQL_UsingNow; |
| | | // source.SQL_State = source1.SQL_State; |
| | | // source.SQL_WorkNo = source1.SQL_WorkNo; |
| | | // source.SQL_ItemCode = source1.SQL_ItemCode; |
| | | // source.SQL_ItemName = source1.SQL_ItemName; |
| | | // source.SQL_charge = source1.SQL_charge; |
| | | // source.SQL_Total = source1.SQL_Total; |
| | | // source.SQL_PLAN_END = source1.SQL_PLAN_END; |
| | | // source.SQL_Modify_TIme = source1.SQL_Modify_TIme; |
| | | // source.OutNum = source1.OutNum; |
| | | // source.WorkType = source1.WorkType; |
| | | // source.MidArea = source1.MidArea; |
| | | // source.TagOver = source1.TagOver; |
| | | // source.TagOverTime = source1.TagOverTime; |
| | | // source.S_BQ_TRAY_TYPE = source1.S_BQ_TRAY_TYPE; |
| | | // source.S_CJ_NAME = source1.S_CJ_NAME; |
| | | // source.S_ROW = item; |
| | | // WorkOrder.Add(source); |
| | | //} |
| | | } |
| | | |
| | | orkOrd = orkOrd.FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10); |
| | |
| | | { |
| | | var l2 = new List<string>() { "YWLAQWJ", "YWLBQWJ" };//, "YWLCQSX", "YWLDQWJ" }; |
| | | l2.Remove(od.S_ROW); |
| | | l2.Remove(od.TagOver); |
| | | var odsr = new List<string> { od.TagOver, od.S_ROW }.Concat(l2).Distinct().ToList(); |
| | | //l2.Remove(od.TagOver); |
| | | //var odsr = new List<string> { od.TagOver, od.S_ROW }.Concat(l2).Distinct().ToList(); |
| | | var odsr = new List<string> { od.S_ROW }.Concat(l2).Distinct().ToList(); |
| | | |
| | | ///汇总仓库里最大层是几层。 |
| | | Dictitems Lart = null; |
| | | foreach (var area in odsr)//od.S_ROW.Split('$')) |
| | | { |
| | | if (string.IsNullOrEmpty(area)) continue; |
| | | |
| | | if (string.IsNullOrEmpty(area)) |
| | | { |
| | | continue; |
| | | } |
| | | if (dsi.TryGetValue(area, out var dictitems1)) |
| | | { |
| | | foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME)) |
| | | foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName)) |
| | | { |
| | | if (Lart == null) |
| | | Lart = d; |
| | |
| | | |
| | | foreach (var area in v) //.Concat(od.S_ROW.Split('$')).Distinct()) |
| | | { |
| | | if (ABlist.Contains(area)) |
| | | { |
| | | //AreaRowlist = LocationHelper.GetAreaNormalLocList(area);YWLBQWJ |
| | | // var AreaRowlist = LocationHelper.GetAreaNormalLocList("YWLAQWJ").Union(LocationHelper.GetAreaNormalLocList("YWLBQWJ")).ToList(); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); |
| | | ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName && (o.S_AREA_CODE == "YWLAQWJ" || o.S_AREA_CODE == "YWLBQWJ")); |
| | | var lstCanOutL = db.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList(); |
| | | if (lstCanOutL.Count() > 0) |
| | | { |
| | | var rl = lstCanOutL.OrderBy(e => e.T_FULL_TIME).FirstOrDefault(); |
| | | _clrel = LocationHelper.GetLocCntrRel(rl.S_LOC_CODE); |
| | | //板型相同 |
| | | var _clrel0 = _clrel.OrderByDescending(xx => xx.T_CREATE).First(); |
| | | if (rl != null) |
| | | { |
| | | StartBit = rl; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"AutoRun13TSJ 机台:{pline} 物料编码:{od.SQL_ItemCode}物料名称:{od.SQL_ItemName} AB区缺料"); |
| | | } |
| | | |
| | | |
| | | //if (rl == null) continue; |
| | | //_clrel = LocationHelper.GetLocCntrRel(rl.S_LOC_CODE); |
| | | ////板型相同 |
| | | //var _clrel0 = _clrel.OrderByDescending(xx => xx.T_CREATE).First(); |
| | | //LogHelper.Info("AutoRun13TSJ" + rl.S_LOC_CODE + "识别托盘类型。" + JsonConvert.SerializeObject(_clrel0)); |
| | | //var _clcntitem = ContainerHelper.GetCntrItemRel(_clrel0.S_CNTR_CODE.Trim()).FirstOrDefault(); |
| | | //LogHelper.Info("AutoRun13TSJ" + rl.S_LOC_CODE + "识别托盘上的物料信息。" + JsonConvert.SerializeObject(_clcntitem)); |
| | | //if (_clcntitem != null) |
| | | //{ |
| | | // LogHelper.Info("AutoRun13TSJ" + "相互是否匹配 _clcntitem S_ITEM_CODE:" + _clcntitem.S_ITEM_CODE + " od" + od.SQL_ItemCode + " _clcntitem S_ITEM_NAME:" + _clcntitem.S_ITEM_NAME + "od: " + od.SQL_ItemName + " od.S_CJ_NAME:" + od.S_CJ_NAME + "结果:" + (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName && _clcntitem.S_CJ_NAME == od.S_CJ_NAME)); |
| | | // if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName) |
| | | // { |
| | | // StartBit = rl; |
| | | // break; |
| | | // } |
| | | //} |
| | | |
| | | } |
| | | else |
| | | { |
| | | var AreaRowlist = LocationHelper.GetAreaNormalLocList(area); |
| | | foreach (var item in AreaRowlist.GroupBy(x => x.N_ROW)) |
| | | { |
| | |
| | | if (_clcntitem != null) |
| | | { |
| | | LogHelper.Info("AutoRun13TSJ" + "相互是否匹配 _clcntitem S_ITEM_CODE:" + _clcntitem.S_ITEM_CODE + " od" + od.SQL_ItemCode + " _clcntitem S_ITEM_NAME:" + _clcntitem.S_ITEM_NAME + "od: " + od.SQL_ItemName + " od.S_CJ_NAME:" + od.S_CJ_NAME + "结果:" + (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName && _clcntitem.S_CJ_NAME == od.S_CJ_NAME)); |
| | | if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName && _clcntitem.S_CJ_NAME == od.S_CJ_NAME) |
| | | if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName) |
| | | { |
| | | StartBit = rl; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (StartBit != null) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | if (StartBit == null) |
| | | { |
| | |
| | | //检测指定库区的物料排总数量 |
| | | if (dsi.TryGetValue(od.S_ROW, out var dictitems1)) |
| | | { |
| | | var rows = dictitems1.Select(x => x.Row).Distinct(); |
| | | var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW && rows.Contains(x.N_ROW)); |
| | | var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "无").Sum(x => x.N_CURRENT_NUM); |
| | | LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 出库余量判断是否需要转运。-{count}< 5"); |
| | | if (count < 5) |
| | | { |
| | | autoTurn = true; |
| | | _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好(od); |
| | | } |
| | | //var rows = dictitems1.Select(x => x.Row).Distinct(); |
| | | //var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW && rows.Contains(x.N_ROW)); |
| | | ////查询可用货位有多少 |
| | | //List<string> Ky = new List<string>() { "无", "出库锁", "入库锁" }; |
| | | //var loclistK = loclist.FindAll(x => Ky.Contains(x.S_LOCK_STATE)).Count(); |
| | | //var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "无").Sum(x => x.N_CURRENT_NUM); |
| | | //LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 出库余量判断是否需要转运。-{count}< 总共能用的货位数{loclistK} -7"); |
| | | //if (count < loclistK - 7) |
| | | //{ |
| | | // autoTurn = true; |
| | | // _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好(od); |
| | | //} |
| | | } |
| | | } |
| | | Location Endbit = null; |
| | |
| | | b = TaskProcess.CreateTransport(od.SQL_WorkNo, StartBit.S_LOC_CODE, jbbit, "原物料搬运-纸箱", crs, StartBit.N_CURRENT_NUM - crs.Count + 1, 1, crs.Count, PLC.taskPri, "", Endbit.S_LOC_CODE); |
| | | else |
| | | b = TaskProcess.CreateTransport(od.SQL_WorkNo, StartBit.S_LOC_CODE, Endbit.S_LOC_CODE, "原物料搬运-纸箱", crs, StartBit.N_CURRENT_NUM - crs.Count + 1, 1, crs.Count, PLC.taskPri); |
| | | |
| | | if (b) |
| | | { |
| | | var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "出库锁", S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW }; |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | od.TagOverTime = DateTime.Now; |
| | | od.TagOver = StartBit.S_AREA_CODE; |
| | | var ggf = db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver }).ExecuteCommand(); |
| | | LogHelper.Info($"上提升机任务 更新工单的时间影响行数: {ggf}"); |
| | | |
| | | var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "出库锁", S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW }; |
| | | |
| | | //给终点锁定住 |
| | | if (od.S_ROW == "YWLCQSX" || od.S_ROW == "YWLDQWJ") |
| | | { |
| | |
| | | // } |
| | | //} |
| | | //else db.Insertable(r).ExecuteCommand(); |
| | | od.TagOverTime = DateTime.Now; |
| | | od.TagOver = StartBit.S_AREA_CODE; |
| | | db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver }).ExecuteCommand(); |
| | | |
| | | //break; |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好(od); |
| | | } |
| | | //else |
| | | //{ |
| | | // _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好(od); |
| | | //} |
| | | } |
| | | } |
| | | } |
| | |
| | | if (dsi.TryGetValue(area, out dictitems)) |
| | | { |
| | | var ill = dictitems.Find(x => x.Row == rl.N_ROW && x.ItemCode == _clcntitem.S_ITEM_CODE && x.ItemName == _clcntitem.S_ITEM_NAME && _clcntitem.S_CJ_NAME == x.S_CJ_NAME); |
| | | if (ill == null) |
| | | { |
| | | ill = dictitems.Find(x => x.Row == rl.N_ROW && x.ItemCode == _clcntitem.S_ITEM_CODE && x.ItemName == _clcntitem.S_ITEM_NAME); |
| | | } |
| | | |
| | | if (ill != null) |
| | | { |
| | | if (rl.N_CURRENT_NUM > ill.ItemLayer) |
| | |
| | | LogHelper.Info($"AutoRunABD abcd物料汇总完成 >>{ReadCCK}|| {dsi.Count}"); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 格式化内存排锁 |
| | | /// </summary> |
| | | public static void Qchc() |
| | | { |
| | | try |
| | | { |
| | | LogHelper.Info($"内存中的排锁表中的数据" + $"{JsonConvert.SerializeObject(RGRow)}"); |
| | | if (RGRow.Count() > 0) |
| | | { |
| | | var locs = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == "YWLRGDD" && x.S_LOCK_STATE == "出库锁").ToList(); |
| | | if (locs.Count() == 0) |
| | | { |
| | | RGRow = new List<RowLock>(); |
| | | LogHelper.Info($"格式化内存中的排锁" + $"{JsonConvert.SerializeObject(RGRow)}"); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Info($"格式化内存中的排锁 失败" + $"{ex.Message}"); |
| | | } |
| | | } |
| | | public static void chargeCCD() |
| | | { |
| | | var ods = LocationHelper.GetList<YWLWorkOrder>(x => x.WorkType == 2 && x.SQL_State == "执行中"); |
| | |
| | | var locS = LocationHelper.GetAreaNormalLocList(ODs.Key); |
| | | foreach (var od in ODs) |
| | | { |
| | | if (od.S_END_AREA == "YWLBQWJ" || od.S_END_AREA == "YWLAQWJ")//到B区的移库工单最多只能生成两条任务 |
| | | { |
| | | |
| | | //查询任务数 |
| | | List<string> AreaLi = new List<string>() { "YWLBQWJ", "YWLWJJB" }; |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var list = db.Queryable<Location>().Where(a => AreaLi.Contains(a.S_AREA_CODE) && a.S_LOCK_STATE == "入库锁").ToList(); |
| | | if (list.Count() >= 2) |
| | | { |
| | | LogHelper.Info($"CreateTransport- CreateTask Error" + $"终点库区为YWLRGDD或者YWLWJJB 则最多只能生成两个任务"); |
| | | continue; |
| | | } |
| | | } |
| | | LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 开始 》》》"); |
| | | if (string.IsNullOrEmpty(od.S_ZZ_AREA) && string.IsNullOrEmpty(od.S_END_AREA)) |
| | | { |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Web.Configuration; |
| | | using System.Xml.Schema; |
| | | using static HH.WCS.QingXigongchang.api.ApiModel; |
| | | |
| | | namespace HH.WCS.QingXigongchang.core |
| | |
| | | && wmsTask.S_B_STATE.Trim() != "强制完成" |
| | | && wmsTask.S_B_STATE.Trim() != "取消") |
| | | { |
| | | if (model.State < 8 || model.State > 1000) |
| | | if (model.State < 10 || model.State > 1000) |
| | | { |
| | | if (model.State < 7 && string.IsNullOrEmpty(model.ForkliftNo)) |
| | | { |
| | |
| | | if (r.ResultCode != -1) |
| | | TaskHelper.BeEnd(wmsTask); |
| | | break; |
| | | case 9://强制取消 //起点解绑锁释放 终点锁释放 |
| | | |
| | | r = TaskProcess.OperateStatus(wmsTask, 9); |
| | | if (r.ResultCode != -1) |
| | | { |
| | | wmsTask.T_END_TIME = DateTime.Now; |
| | | TaskHelper.UpdateStatus(wmsTask, "取消"); |
| | | } |
| | | break; |
| | | |
| | | |
| | | case 1101://取货申请 - |
| | |
| | | using System.Linq; |
| | | using System.Net; |
| | | using System.Net.Sockets; |
| | | using System.Text.RegularExpressions; |
| | | |
| | | namespace HH.WCS.QingXigongchang.device |
| | | { |
| | |
| | | Console.WriteLine(remote_ip + "" + message); |
| | | if (message.Substring(0, 4) == "3f00" && message.Substring(message.Length - 4) == "0d0a") |
| | | { |
| | | //显示消息 |
| | | var list = Regex.Split(message, "0d0a", RegexOptions.IgnoreCase).Distinct().ToList(); |
| | | foreach (var item in list) |
| | | { |
| | | if (!string.IsNullOrEmpty(item)) |
| | | { |
| | | string msg = message.Replace(@"0d", "").Replace(@"0a", "").Replace(@"0d0a", "").Trim(); |
| | | PlcHelper.Receive(remote_ip, msg); |
| | | } |
| | | } |
| | | //显示消息 |
| | | //string msg = message.Replace(@"0d", "").Replace(@"0a", "").Replace(@"0d0a", "").Trim(); |
| | | //PlcHelper.Receive(remote_ip, msg); |
| | | Array.Clear(buffers[remote_ip], 0, buffers[remote_ip].Length);//清空当前IP Buffer |
| | | } |
| | | else |
| | |
| | | return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; |
| | | } |
| | | } |
| | | public static bool AddTaskNew(int ts, int pri, string taskNo, Dictionary<string, string> dic) |
| | | { |
| | | var res = NDC.AddNewOrderNew(ts, pri, taskNo, dic); |
| | | if (res != null && (res.Res.ErrCode == 0 || res.Res.ErrCode == 50009)) |
| | | { |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 修改优先级 |
| | | /// </summary> |
| | | /// <param name="taskNo">任务号</param> |
| | | /// <param name="paramNo">优先级</param> |
| | | /// <returns></returns> |
| | | public static bool ChangeParamPri(string taskNo, int paramNo = 0) |
| | | { |
| | | bool bResult = false; |
| | | var dic = new Dictionary<string, string>(); |
| | | dic.Add("No", taskNo); |
| | | if (paramNo >= 0) |
| | | { |
| | | dic.Add("Pri", paramNo.ToString()); |
| | | } |
| | | dic.Add("IKey", ""); |
| | | var result = ChangeOrder(dic); |
| | | if (result.Res.ErrCode == 0) { bResult = true; } |
| | | return bResult; |
| | | } |
| | | |
| | | public static AGVResult AddNewOrderNew(int ts, int pri, string taskNo, Dictionary<string, string> param) |
| | | { |
| | | //< Req >< Order TS = '1' Pri = '1' No = 'TN2302020001' Ext1 = '' Ext2 = '' N_CNTR_COUNT = '' >< Param Name = 'From' Value = '2' />< Param Name = 'To' Value = '1' /></ Order ></ Req > |
| | | |
| | | var bufin = GetReqStrNew(ts, pri, taskNo, param); |
| | | |
| | | try |
| | | { |
| | | LogHelper.Info($"任务下发结果 OrderAdd req={bufin}", "NDC"); |
| | | var result = callClient.OrderAdd(bufin); |
| | | LogHelper.Info($"任务下发结果 OrderAdd req={bufin} res={result}", "NDC"); |
| | | // Console.WriteLine($"任务下发结果 OrderAdd req={bufin} res={result}"); |
| | | //LogHelper.Info(result.bufout, "ts"); |
| | | return GetResult(result); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogHelper.Info($"任务下发失败 OrderAdd req={bufin} res={e.Message}", "NDC"); |
| | | //Console.WriteLine($"任务下发失败 AddNewOrder req={bufin} res={e.Message}"); |
| | | return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; |
| | | } |
| | | |
| | | } |
| | | private static string GetReqStrNew(int ts, int pri, string taskNo, Dictionary<string, string> param) |
| | | { |
| | | /*<Req> |
| | | <Order TS='5' Pri='80' No='666' NoCallback='0' Ext1='' Ext2='' Ext3=''> |
| | | <Param Name='From' Value='10' /> |
| | | <Param Name='To' Value='20' /> |
| | | <Param Name='FRow' Value='1' /> |
| | | <Param Name='TRow' Value='7' /> |
| | | <Param Name='DispInfo' Value='1' /> |
| | | <Param Name='CtrlVal' Value='12' /> |
| | | <Param Name='ChgTo' Value='2' /> |
| | | <Param Name='Flow' Value='111' /> |
| | | <Param Name='Tlow' Value='222' /> |
| | | </Order> |
| | | </Req>*/ |
| | | var sb = new StringBuilder(); |
| | | sb.Append($"<Req><Order TS='{ts}' Pri='{pri}' No='{taskNo}'>"); |
| | | |
| | | foreach (var kv in param) |
| | | { |
| | | sb.Append($"<Param Name='{kv.Key}' Value='{kv.Value}'/>"); |
| | | } |
| | | sb.Append("</Order></Req>"); |
| | | return sb.ToString(); |
| | | } |
| | | |
| | | public static AGVResult CancelOrder(int ts, Dictionary<string, string> param, string RORDERs = "") |
| | | { |
| | |
| | | G:\1AGIT\WCS\HH.WCS.Mobox\农夫清溪\obj\Debug\HH.WCS.Q.FBA0BAD2.Up2Date |
| | | G:\1AGIT\WCS\HH.WCS.Mobox\农夫清溪\obj\Debug\HH.WCS.QingXigongchang.exe |
| | | G:\1AGIT\WCS\HH.WCS.Mobox\农夫清溪\obj\Debug\HH.WCS.QingXigongchang.pdb |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\js\chunk-vendors.3e768dfe.js.map |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\favicon.ico |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\index.html |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\js\chunk-vendors.3e768dfe.js |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\W.html |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\TableSetting.json |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\css\app.d545ec97.css |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\js\app.829e775c.js |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\settings.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\js\app.829e775c.js.map |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\HH.WCS.QingXigongchang.exe.config |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\HH.WCS.QingXigongchang.exe |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\HH.WCS.QingXigongchang.pdb |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Newtonsoft.Json.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Buffers.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Memory.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Numerics.Vectors.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Threading.Tasks.Extensions.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Buffers.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Memory.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Numerics.Vectors.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Threading.Tasks.Extensions.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.csproj.AssemblyReference.cache |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.csproj.SuggestedBindingRedirects.cache |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.exe.config |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.csproj.CoreCompileInputs.cache |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.Q.FBA0BAD2.Up2Date |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.exe |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.pdb |
| | | G:\1AGIT\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.csproj.AssemblyReference.cache |
| | | G:\1AGIT\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.csproj.SuggestedBindingRedirects.cache |
| | | G:\1AGIT\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.exe.config |
| | |
| | | G:\1AGIT\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.Q.FBA0BAD2.Up2Date |
| | | G:\1AGIT\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.exe |
| | | G:\1AGIT\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.pdb |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\js\chunk-vendors.3e768dfe.js.map |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\favicon.ico |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\index.html |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\js\chunk-vendors.3e768dfe.js |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\W.html |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\TableSetting.json |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\css\app.d545ec97.css |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\js\app.829e775c.js |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\settings.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Static\js\app.829e775c.js.map |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\HH.WCS.QingXigongchang.exe.config |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\HH.WCS.QingXigongchang.exe |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\HH.WCS.QingXigongchang.pdb |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Microsoft.Owin.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Microsoft.Owin.Host.HttpListener.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Microsoft.Owin.Hosting.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Newtonsoft.Json.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\NLog.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Owin.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\SqlSugar.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Buffers.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Memory.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Net.Http.Formatting.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Numerics.Vectors.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Runtime.InteropServices.RuntimeInformation.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Threading.Tasks.Extensions.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Web.Http.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Web.Http.Owin.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Topshelf.dll |
| | |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Microsoft.Owin.Hosting.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Newtonsoft.Json.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\NLog.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Buffers.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Memory.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Net.Http.Formatting.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Numerics.Vectors.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Threading.Tasks.Extensions.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Web.Http.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\System.Web.Http.Owin.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Topshelf.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\Topshelf.NLog.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\zh-Hans\System.Net.Http.Formatting.resources.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\zh-Hans\System.Web.Http.resources.dll |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.csproj.AssemblyReference.cache |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.csproj.SuggestedBindingRedirects.cache |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.exe.config |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.csproj.CoreCompileInputs.cache |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.Q.FBA0BAD2.Up2Date |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.exe |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.pdb |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\HH.WCS.QingXigongchang.exe.manifest |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\bin\Debug\HH.WCS.QingXigongchang.application |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.TrustInfo.xml |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.exe.manifest |
| | | E:\GitProject\HH-0014_NongFu_QingXi\HH.WCS.QingXiNongfu\obj\Debug\HH.WCS.QingXigongchang.application |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | private static void Analysis13(string data, deviceInfo plc) |
| | | { |
| | | //用于 出库时 是否可以直达 提升机。 00 后面还需增加退料工单处理。 |
| | |
| | | si = "0"; |
| | | |
| | | } |
| | | else if (data.Contains("11"))// && (ods.Find(x => x.SQL_PLineNo.Contains("纸箱")) != null || plc.deviceName.Contains("T1")) |
| | | if (data.Contains("11"))// && (ods.Find(x => x.SQL_PLineNo.Contains("纸箱")) != null || plc.deviceName.Contains("T1")) |
| | | { |
| | | //if (!ods.Any()) |
| | | // return; |
| | |
| | | if (_cl.N_CURRENT_NUM > 0 || _clrel.Any()) |
| | | { |
| | | LogHelper.Info($" time:{_clrel0?.T_CREATE} = s_type:{_clrel0.S_TYPE}"); |
| | | if (_clrel.Any()) |
| | | //if (DateTime.Now.Subtract(_clrel0.T_CREATE).TotalSeconds < 10 || !string.IsNullOrEmpty(_clrel0.S_TYPE)) |
| | | // goto ballll; |
| | | //plg 2025年6月23日 去除10秒时间限制 |
| | | if (_clrel.Any()) |
| | | { |
| | | if (od?.SQL_PLineNo == "T1提升机") |
| | | { |
| | | if (!string.IsNullOrEmpty(_clrel0.S_TYPE)) |
| | | goto ballll; |
| | | } |
| | | else |
| | | { |
| | | if (DateTime.Now.Subtract(_clrel0.T_CREATE).TotalSeconds < 3 || !string.IsNullOrEmpty(_clrel0.S_TYPE)) |
| | | goto ballll; |
| | | |
| | | } |
| | | } |
| | | LocationHelper.DoAction(db => |
| | | { |
| | | db.Deleteable(_clrel).ExecuteCommand(); |
| | |
| | | if (sBit != null) |
| | | { |
| | | var sign = Settings.GetTimeStamp(); |
| | | var res = TaskProcess.CreateTransport(sign, sBit.S_LOC_CODE, _cl.S_LOC_CODE, "原物料搬运-纸箱", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sBit.N_CURRENT_NUM, 1, 1, 50);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : ""); |
| | | var res = TaskProcess.CreateTransport(sign, sBit.S_LOC_CODE, _cl.S_LOC_CODE, "原物料搬运-纸箱", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sBit.N_CURRENT_NUM, 1, 1, 60);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : ""); |
| | | LogHelper.Info($"原物料搬运 上提升机。 {sign} 任务 ,创建{res} "); |
| | | //var res = TaskProcess.CreateTransport(sign, sBit.S_LOC_CODE, _cl.S_LOC_CODE, "原物料搬运-纸箱", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sBit.N_CURRENT_NUM, 1, 1, 50);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : ""); |
| | | //LogHelper.Info($"原物料搬运 上提升机。 {sign} 任务 ,创建{res} "); |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | CacheBitCancelUpdate(mst, out r, true); |
| | | } |
| | | if (state == 9) |
| | | { |
| | | CacheBitUpdate(mst, load: true); |
| | | var g = LocationHelper.UnLockLoc(mst.S_END_LOC.Trim()); |
| | | var T = LocationHelper.UnLockLoc(mst.S_START_LOC.Trim()); |
| | | } |
| | | return r; |
| | | } |
| | | |
| | |
| | | else return false; |
| | | } |
| | | } |
| | | //else if (taskType.Contains("收缩膜叉运-入库") || taskType.Contains("收缩膜叉运-入库") || taskType.Contains("收缩膜叉运-货架出提升机")) |
| | | //{ |
| | | // var ts = 5; |
| | | // start = LocationHelper.GetAgvSite(mst.S_START_LOC);//起点站点 |
| | | // end = LocationHelper.GetAgvSite(mst.S_END_LOC);//终点站点 |
| | | // var dic = new Dictionary<string, string>(); |
| | | // dic.Add("From", start.ToString()); |
| | | // dic.Add("To", end.ToString()); |
| | | // dic.Add("FUNC", "0"); |
| | | // dic.Add("DATA", "0"); |
| | | // int height = 0; |
| | | // var itemcode = ""; |
| | | // var ItemLayer = 0; |
| | | // var db = new SqlHelper<object>().GetInstance(); |
| | | // var cirs = ContainerHelper.GetCntrItemRel(mst.S_CNTRS.Split(',').ToList().FirstOrDefault()).First(); |
| | | // LogHelper.Info($"原物料 收缩膜叉运 容器物料表数据{JsonConvert.SerializeObject(cirs)}", "HosttoagvTask"); |
| | | // if (cirs != null) |
| | | // { |
| | | // var ItemF = db.Queryable<ItemInfo>().Where(a => a.S_ITEM_CODE == cirs.S_ITEM_CODE).First(); |
| | | // itemcode = ItemF.S_ITEM_CODE; |
| | | // ItemLayer = ItemF.ItemLayer; |
| | | // if (mst.N_START_LAYER < 3 || mst.N_END_LAYER < 3) |
| | | // { |
| | | // height = ItemF.trayHeight; |
| | | // } |
| | | // else |
| | | // { |
| | | // height = ItemF.trayHeight1; |
| | | // } |
| | | // } |
| | | // dic.Add("ItemHeight", height.ToString()); |
| | | // dic.Add("StaItemHeight", "0"); |
| | | // dic.Add("TrayType", $"{mst.N_START_LAYER}{mst.N_END_LAYER}"); |
| | | // var ggh = NDC.AddTaskNew(ts, mst.N_PRIORITY, mst.S_TASK_NO, dic); |
| | | // if (ggh) |
| | | // { |
| | | // TaskHelper.UpdateStatus(mst, "已推送"); |
| | | // result = true; |
| | | // GeneralInterFaceFunc(mst, 8 + ""); |
| | | // } |
| | | //} |
| | | |
| | | //else if ( mst.S_END_LAREA == "WJBQDDKQ" || mst.S_END_LAREA == "SXBQDDKQ"|| mst.S_START_LAREA == "WJBQDDKQ" ||mst.S_START_LAREA == "SXBQDDKQ" ) |
| | | //{ |
| | | // if (start == 0) |
| | |
| | | <?xml version="1.0" encoding="utf-8" ?> |
| | | <Custom> |
| | | <HostToAgvServerUrl>http://192.168.1.146:9988/HostToAGV.cgi</HostToAgvServerUrl> |
| | | <HostToAgvServerUrl>http://10.140.3.100:9988/HostToAGV.cgi</HostToAgvServerUrl> |
| | | <OITcpServerUrl>http://127.0.0.1:5102</OITcpServerUrl> |
| | | <SqlServer>Data Source=192.168.1.137;Initial Catalog=OIMobox;User ID=sa;Password=Am123123</SqlServer> |
| | | <AgvSqlServer></AgvSqlServer> |
| | | <FuleServerUrl>http://127.0.0.1:5102</FuleServerUrl> |
| | | <repoNo>仓库编码</repoNo> |
| | | <!--胚盖上报--> |
| | | <MesServerUrl>http://127.0.0.1:5102</MesServerUrl> |
| | | <factoryCode>工厂编号</factoryCode> |
| | | <fromSystem>来源系统:MOBOX</fromSystem> |
| | | <SqlServer>Data Source=10.140.3.100;Initial Catalog=OIMobox;User ID=sa;Password=qaz-123456</SqlServer> |
| | | <AgvSqlServer>Data Source=10.140.3.100;Initial Catalog=QX_AGV;User ID=sa;Password=qaz-123456</AgvSqlServer> |
| | | <FuleServerUrl>http://yst-open-zuul.idc.yst.com.cn/api/yst-open-proxy/</FuleServerUrl> |
| | | <repoNo>QX00102</repoNo> |
| | | <securityKey>ebf0bfbbe98542b4804de03bc4ef0a70</securityKey> |
| | | <tokenfrom>MOBOX</tokenfrom> |
| | | |
| | | <securityKey></securityKey> |
| | | <tokenfrom></tokenfrom> |
| | | |
| | | <FactoryCode>工厂编码</FactoryCode> |
| | | <TaskReportUrl>http://127.0.0.1:6666</TaskReportUrl> |
| | | <TaskReportKey></TaskReportKey> |
| | | <FactoryName>工厂名称</FactoryName> |
| | | <OneSign>唯一标识</OneSign> |
| | | <FactoryCode>20B1</FactoryCode> |
| | | <TaskReportUrl>http://yst-open-zuul.idc.yst.com.cn/api/yst-open-proxy</TaskReportUrl> |
| | | <TaskReportKey>ebf0bfbbe98542b4804de03bc4ef0a70</TaskReportKey> |
| | | <FactoryName>青溪</FactoryName> |
| | | <OneSign>0050</OneSign> |
| | | |
| | | <!--plc信息,deviceType=1 自动门 deviceType=2 瓶盖机-无菌盖 deviceType=3 瓶盖机-水盖 deviceType=4 翻斗机(水盖) deviceType=5 翻斗机(无菌盖 v1/v2) deviceType=6 翻斗机(无菌盖 v6) deviceType=7 翻斗机(无菌盖 v8) |
| | | <FactoryCode>20B1</FactoryCode> |
| | | <TaskReportUrl>http://yst-open-zuul-qa.idc.yst.com.cn/api/yst-open-proxy</TaskReportUrl> |
| | | <TaskReportKey>9b42bdc3f0a94b3f9c31e72d1ab42ea7</TaskReportKey> |
| | | <FactoryName>青溪</FactoryName> |
| | | <OneSign>0050</OneSign> |
| | | {"address":"10.122.160.35","deviceName":"1号无菌盖机","deviceNo":[],"location":["YLWJG1005","YLWJG1006"],"deviceType":2,"enable":0}, |
| | | {"address":"10.122.160.36","deviceName":"2号无菌盖机","deviceNo":[],"location":["YLWJG1003","YLWJG1004"],"deviceType":2,"enable":0}, |
| | | {"address":"10.122.160.37","deviceName":"3号无菌盖机","deviceNo":[],"location":["YLWJG1001","YLWJG1002"],"deviceType":2,"enable":0}, |
| | |
| | | {"address":"10.122.160.33","deviceName":"门plc4","deviceNo":["9","10"],"location":[],"deviceType":1,"enable":1}, |
| | | {"address":"10.122.160.34","deviceName":"门plc5","deviceNo":["11","12"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.162","deviceName":"550","deviceNo":["1"],"location":["CX-2","CX-1"],"deviceType":9,"enable":1}, |
| | | |
| | | {"address":"10.140.3.162","deviceName":"550","deviceNo":["1"],"location":["CX-2","CX-1"],"deviceType":9,"enable":1}, |
| | | {"address":"10.140.3.100","deviceName":"CX2","FuLeLineNo":"QX3","deviceNo":[],"location":["CX2-2","CX2-1","5LCX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16",],"deviceType":9,"enable":1}, |
| | | 瓶坯入库区 |
| | | taskPri 默认值60 --> |
| | | <!-- |
| | | 1 门(独立门) |
| | | 2 无菌盖 |
| | | 3 水盖 |
| | | 4 水盖翻斗机 入库堆叠,人工解。 出库从出库位出到线边 空框进人工区, |
| | | 5 瓶坯翻斗机 |
| | | 6 无菌翻斗机 正常出入库流程 堆叠,入库,出线边 空框进人工区, |
| | | 4 水盖翻斗机 |
| | | 5 无菌翻斗机 |
| | | 6 电梯 |
| | | 8 瓶坯 |
| | | 9 水线 成品 |
| | | 10 水线翻斗机 人工放线边 空框进人工区, |
| | | 11 提升机 电梯机 |
| | | 9 水线 |
| | | --> |
| | | <deviceInfo> |
| | | <![CDATA[ |
| | | [ |
| | | {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"550","deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1}, |
| | | {"address":"10.140.3.163","deviceName":"注塑机","FuLeLineNo":"注塑机","deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1}, |
| | | {"address":"10.140.3.161","deviceName":"翻斗机","FuLeLineNo":"翻斗机","deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1}, |
| | | {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"青溪成品仓QX1输送线","deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, |
| | | {"address":"10.140.3.163","deviceName":"注塑机","deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1}, |
| | | |
| | | {"address":"10.140.3.175","deviceName":"注塑机3","deviceNo":["","664"],"location":["ZSJ3-1","ZSJ3-2"],"deviceType":8,"enable":1}, |
| | | |
| | | {"address":"10.140.3.176","deviceName":"注塑机4","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1}, |
| | | |
| | | {"address":"10.140.3.150","deviceName":"注塑机5","deviceNo":["","659"],"location":["ZSJ5-1","ZSJ5-2"],"deviceType":8,"enable":1}, |
| | | |
| | | {"address":"10.140.3.161","deviceName":"翻斗机","deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1}, |
| | | |
| | | {"address":"10.140.3.181","deviceName":"3线翻斗机","deviceNo":["","979"],"location":["SXFDJ1"],"deviceType":5,"enable":1}, |
| | | |
| | | {"address":"10.140.3.182","deviceName":"4线翻斗机","deviceNo":["","969"],"location":["SHIFDJ1"],"deviceType":5,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.162","deviceName":"门plc1","deviceNo":["1"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.169","deviceName":"5L550","FuLeLineNo":"5L550","deviceNo":[],"location":["5LCX-3","5LCX-2","5LCX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1}, |
| | | {"address":"10.140.3.165","deviceName":"5L注塑机","FuLeLineNo":"5L注塑机","deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1}, |
| | | {"address":"10.140.3.167","deviceName":"5L翻斗机","FuLeLineNo":"5L翻斗机","deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1}, |
| | | {"address":"10.140.3.169","deviceName":"5L550","FuLeLineNo":"青溪成品仓QX2输送线","deviceNo":[],"location":["5LCX-3","5LCX-2","5LCX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.177","deviceName":"CX3","FuLeLineNo":"青溪成品仓QX3输送线","deviceNo":[],"location":["CX3-2","CX3-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.178","deviceName":"CX4","FuLeLineNo":"青溪成品仓QX4输送线","deviceNo":[],"location":["CX4-2","CX4-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.165","deviceName":"5L注塑机","deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1}, |
| | | {"address":"10.140.3.167","deviceName":"5L翻斗机","deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1}, |
| | | |
| | | {"address":"10.140.3.155","deviceName":"门plc2","deviceNo":["2"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.155","deviceName":"一楼搬2楼","deviceNo":[],"location":["踢踢踢"],"deviceType":11,"enable":1}, |
| | | {"address":"10.140.3.179","deviceName":"门plc3","deviceNo":["3"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.180","deviceName":"门plc4","deviceNo":["4"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.190","deviceName":"QX3无菌盖翻斗机","deviceNo":["","8"],"location":["QX3FDJ-1"],"deviceType":6,"areaPriy":["QX3QX4MKRK"],"enable":1}, |
| | | |
| | | {"address":"10.140.3.191","deviceName":"QX4无菌盖翻斗机","deviceNo":["","9"],"location":["QX4FDJ-1"],"deviceType":6,"areaPriy":["QX3QX4MKRK"],"enable":1}, |
| | | {"address":"10.140.3.193","deviceName":"一号无菌盖机","deviceNo":[],"location":["WJG1-1","WJG1-2"],"deviceType":2,"areaPriy":["QX3QX4MKRK"],"enable":1}, |
| | | |
| | | {"address":"10.140.3.189","deviceName":"水盖机","deviceNo":[],"location":["SGJ-1","SGJ-2"],"deviceType":3,"areaPriy":["QX3QX4MKRK"],"enable":1}, |
| | | |
| | | {"address":"10.140.3.195","deviceName":"二号无菌盖机","deviceNo":[],"location":["RHWJGJ-1","RHWJGJ-2"],"deviceType":2,"areaPriy":["QX3QX4MKRK"],"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.192","deviceName":"门plc6","deviceNo":["5"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.183","deviceName":"门plc7","deviceNo":["13"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.194","deviceName":"门plc8","deviceNo":["12"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.188","deviceName":"门plc9","deviceNo":["7"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.185","deviceName":"门plc10","deviceNo":["15","185"],"location":[""],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.186","deviceName":"门plc11","deviceNo":["186"],"location":[""],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.196","deviceName":"门plc12","deviceNo":["6"],"location":[""],"deviceType":1,"enable":1}, |
| | | {"address":"192.168.1.142","deviceName":"T1提升机","deviceNo":[""],"location":["YWLT1TSJ"],"areaPriy":["YWLT1TSJCD"],"deviceType":13,"enable":1}, |
| | | {"address":"192.168.10.86","deviceName":"T2提升机","deviceNo":[""],"location":["YWLSXBQTSJ"],"areaPriy":[],"deviceType":13,"enable":1}, |
| | | |
| | | {"address":"10.140.3.197","deviceName":"门plc16","deviceNo":["16"],"location":[""],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.184","deviceName":"瓶盖550翻斗机","deviceNo":["","184"],"location":["SGFDJ-1"],"deviceType":4,"areaPriy":["PGMKCK"],"enable":1}, |
| | | |
| | | {"address":"10.140.3.187","deviceName":"瓶盖5L翻斗机","deviceNo":["","187"],"location":["SXFDJ-1"],"deviceType":10,"areaPriy":["PGMKCK"],"enable":1}, |
| | | |
| | | {"address":"10.140.3.170","deviceName":"T2提升机","deviceNo":[""],"taskPri":50,"location":["YWLT2TSJ"],"areaPriy":["YWLT2TSJCD"],"deviceType":13,"enable":1}, |
| | | {"address":"10.140.9.167","deviceName":"T1提升机","deviceNo":[""],"taskPri":50,"location":["YWLT1TSJ"],"areaPriy":["YWLT1TSJCD"],"deviceType":13,"enable":1}, |
| | | |
| | | ]]]> |
| | | |
| | | |
| | | </deviceInfo> |
| | | |
| | | |
| | | <!-- |
| | | DoorNo 上报的门号。 184,185都定的门号10 |
| | | {"address":"10.140.3.170","deviceName":"T2提升机","deviceNo":[""],"location":["YWLT2TSJ"],"areaPriy":["YWLT2TSJCD"],"deviceType":13,"enable":1} |
| | | DoorNo 上报的门号。 184,185 自定的门号10 |
| | | deviceNo ,给184,185 自己定2个门号。写这里。 |
| | | SignOpen 开门信号。 与deviceNo 1:1 对应 |
| | | SignClose 关门信号。 与deviceNo 1:1 对应 |
| | |
| | | --> |
| | | <DoorOneToMany> |
| | | <![CDATA[[ |
| | | {"DoorNo":"10","deviceNo":["184","15"],"SignOpen":["21","21"],"SignClose":["20","20"]}, |
| | | {"DoorNo":"10","deviceNo":["184","185"],"SignOpen":["21","21"],"SignClose":["20","20"]}, |
| | | {"DoorNo":"11","deviceNo":["187","186"],"SignOpen":["21","21"],"SignClose":["20","20"]}, |
| | | ]]]> |
| | | </DoorOneToMany> |
| | | |
| | | <!-- |
| | | NotUsingBolArea 非即产满框位。 瓶盖的入库堆叠位,翻斗机出库线边位 |
| | | UsingBolArea 即产满框位 这个翻斗机配置就行了 |
| | | NotUsingEmpty 非即产空框位,空框堆叠位 翻斗机入库堆叠位,瓶盖的出库线边位 |
| | | UsingEmpty 即产空框位。 这个瓶盖配置就行了 |
| | | --> |
| | | <BOLArea> |
| | | <![CDATA[[ |
| | | {"DeviceName":"无菌瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":2}, |
| | | {"DeviceName":"水盖瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":3}, |
| | | {"DeviceName":"水盖翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":4}, |
| | | {"DeviceName":"无菌翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":6}, |
| | | {"DeviceName":"水线翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":10}, |
| | | ]]]> |
| | | </BOLArea> |
| | | |
| | | <!-- |
| | | |
| | | --> |
| | | <!-- 下线位置配置。 从上到下分排,从左到右 分列 --> |
| | | <!-- 下线位置配置。 |
| | | |
| | | {"address":"10.140.3.185","deviceName":"550翻斗机","deviceNo":["","10"],"location":["SGFDJ-1"],"deviceType":6,"enable":1}, |
| | | |
| | | {"address":"10.140.3.186","deviceName":"5L翻斗机","deviceNo":["","11"],"location":["SXFDJ-1"],"deviceType":6,"enable":1}, |
| | | |
| | | |
| | | {"address":"10.140.3.190","deviceName":"门plc5","deviceNo":["12"],"location":[],"deviceType":1,"enable":1},从上到下分排,从左到右 分列 --> |
| | | <!-- |
| | | 1-1号无菌2号无菌3号无菌 |
| | | 2 - 1号水盖 |
| | |
| | | ]]]> |
| | | </inStockCacheBit>--> |
| | | <!-- |
| | | agv小车的取放点位 |
| | | |
| | | Location:货位编码 |
| | | StartBit:作为起点时的站点 |
| | | EndBit:作为终点时的站点 |
| | | --> |
| | | |
| | | <MoreSites> |
| | | <![CDATA[[ |
| | | {"Location":"JCJYKK-1P-1L-1C","StartBit":178,"EndBit":1335}, |
| | | {"Location":"JCJYKK-1P-2L-1C","StartBit":175,"EndBit":1336}, |
| | | {"Location":"JCJYMK-1P-1L-1C","StartBit":184,"EndBit":1333}, |
| | | {"Location":"JCJYMK-1P-2L-1C","StartBit":181,"EndBit":1334}, |
| | | {"Location":"JCJYMK-1P-3L-1C","StartBit":1372,"EndBit":1418}, |
| | | {"Location":"JCJYMK-1P-4L-1C","StartBit":1374,"EndBit":1419}, |
| | | {"Location":"接驳区&BACK","StartBit":1374,"EndBit":1419}, |
| | | {"Location":"JCJYKK1-1","StartBit":3372,"EndBit":3372}, |
| | | {"Location":"JCJYKK2-1","StartBit":3370,"EndBit":3370}, |
| | | {"Location":"JCJYKK3-1","StartBit":3367,"EndBit":3367}, |
| | | {"Location":"JCJYKK1-4","StartBit":3368,"EndBit":3368}, |
| | | {"Location":"550JCJYMK1-1","StartBit":1425,"EndBit":1424}, |
| | | {"Location":"550JCJYMK2-1","StartBit":1426,"EndBit":1423}, |
| | | {"Location":"550JCJYMK3-1","StartBit":1478,"EndBit":1477}, |
| | | {"Location":"550JCJYMK4-1","StartBit":3506,"EndBit":3505}, |
| | | {"Location":"5LJCJYMK1-1","StartBit":1488,"EndBit":1487}, |
| | | {"Location":"5LJCJYMK2-1","StartBit":1489,"EndBit":1486}, |
| | | {"Location":"5LJCJYMK3-1","StartBit":1335,"EndBit":178}, |
| | | {"Location":"5LJCJYMK4-1","StartBit":1336,"EndBit":1528}, |
| | | {"Location":"SXJCJY1-1","StartBit":3485,"EndBit":3484}, |
| | | {"Location":"SXJCJY2-1","StartBit":3482,"EndBit":3481}, |
| | | {"Location":"SXJCJY3-1","StartBit":3483,"EndBit":3480}, |
| | | {"Location":"SXJCJY4-1","StartBit":3487,"EndBit":3486}, |
| | | {"Location":"SIXJCJY1-1","StartBit":3471,"EndBit":3470}, |
| | | {"Location":"SIXJCJY2-1","StartBit":3469,"EndBit":3468}, |
| | | {"Location":"SIXJCJY3-1","StartBit":3466,"EndBit":3465}, |
| | | {"Location":"QXZXZZQ1-1","StartBit":5450,"EndBit":5523}, |
| | | {"Location":"QXZXZZQ1-2","StartBit":5455,"EndBit":5524}, |
| | | {"Location":"QXZXZZQ1-3","StartBit":5454,"EndBit":5525}, |
| | | {"Location":"QXZXZZQ1-4","StartBit":5453,"EndBit":5526}, |
| | | {"Location":"QXZXZZQ1-5","StartBit":5452,"EndBit":5527}, |
| | | {"Location":"QXZXZZQ1-6","StartBit":5451,"EndBit":5528}, |
| | | {"Location":"QXZXZZQ1-7","StartBit":5463,"EndBit":5529}, |
| | | {"Location":"QXZXZZQ1-8","StartBit":5464,"EndBit":5530}, |
| | | {"Location":"QXZXZZQ2-1","StartBit":5497,"EndBit":5562}, |
| | | {"Location":"QXZXZZQ2-2","StartBit":5502,"EndBit":5561}, |
| | | {"Location":"QXZXZZQ2-3","StartBit":5501,"EndBit":5560}, |
| | | {"Location":"QXZXZZQ2-4","StartBit":5500,"EndBit":5559}, |
| | | {"Location":"QXZXZZQ2-5","StartBit":5499,"EndBit":5558}, |
| | | {"Location":"QXZXZZQ2-6","StartBit":5498,"EndBit":5557}, |
| | | {"Location":"QXZXZZQ2-7","StartBit":5503,"EndBit":5556}, |
| | | {"Location":"QXZXZZQ2-8","StartBit":5504,"EndBit":5555}, |
| | | {"Location":"QXZXZZQ3-1","StartBit":5506,"EndBit":5570}, |
| | | {"Location":"QXZXZZQ3-2","StartBit":5511,"EndBit":5569}, |
| | | {"Location":"QXZXZZQ3-3","StartBit":5510,"EndBit":5568}, |
| | | {"Location":"QXZXZZQ3-4","StartBit":5509,"EndBit":5567}, |
| | | {"Location":"QXZXZZQ3-5","StartBit":5508,"EndBit":5566}, |
| | | {"Location":"QXZXZZQ3-6","StartBit":5507,"EndBit":5565}, |
| | | {"Location":"QXZXZZQ3-7","StartBit":5512,"EndBit":5564}, |
| | | {"Location":"QXZXZZQ3-8","StartBit":5513,"EndBit":5563}, |
| | | {"Location":"QXZXZZQ4-1","StartBit":5515,"EndBit":5578}, |
| | | {"Location":"QXZXZZQ4-2","StartBit":5520,"EndBit":5577}, |
| | | {"Location":"QXZXZZQ4-3","StartBit":5519,"EndBit":5576}, |
| | | {"Location":"QXZXZZQ4-4","StartBit":5518,"EndBit":5575}, |
| | | {"Location":"QXZXZZQ4-5","StartBit":5517,"EndBit":5574}, |
| | | {"Location":"QXZXZZQ4-6","StartBit":5516,"EndBit":5573}, |
| | | {"Location":"QXZXZZQ4-7","StartBit":5521,"EndBit":5572}, |
| | | {"Location":"QXZXZZQ4-8","StartBit":5522,"EndBit":5571}, |
| | | {"Location":"WJBQJBQ1-1&BACK","StartBit":7445,"EndBit":7443}, |
| | | {"Location":"WJBQJBQ2-1&BACK","StartBit":7446,"EndBit":7444}, |
| | | ]]]> |
| | | </MoreSites> |
| | | <!--配置 即产 空/满 库区,非即产库 空/满 区 |
| | | 1.即产满 |
| | | 2.即产空 |
| | | 3 非即产满 |
| | | 4.非即产空 |
| | | <!-- |
| | | |
| | | {"DeviceName":"4L5L线翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":10}, |
| | | --> |
| | | <AreaSet> |
| | | <BOLArea> |
| | | <![CDATA[[ |
| | | {"Area":"JCJYKK","AreaType":2}, |
| | | {"DeviceName":"一号无菌盖机","NotUsingBolArea":"","UsingBolArea":"XQX3JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX3WJGJCJYKK","deviceType":2}, |
| | | |
| | | {"DeviceName":"二号无菌盖机","NotUsingBolArea":"","UsingBolArea":"XQX4JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX3WJGJCJYKK","deviceType":2}, |
| | | {"DeviceName":"QX3无菌盖翻斗机","NotUsingBolArea":"QX3QX4MKRK","UsingBolArea":"XQX3JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX34WJGJCJYKK","deviceType":6}, |
| | | {"DeviceName":"QX4无菌盖翻斗机","NotUsingBolArea":"QX3QX4MKRK","UsingBolArea":"XQX4JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX34WJGJCJYKK","deviceType":6}, |
| | | {"DeviceName":"水盖机","NotUsingBolArea":"SGHRCW","UsingBolArea":"SGJCJYMK","NotUsingEmpty":"PGKKCK","UsingEmpty":"SGJCJYKK","deviceType":3}, |
| | | {"DeviceName":"瓶盖550翻斗机","NotUsingBolArea":"SGHCW","UsingBolArea":"SGJCJYMK","NotUsingEmpty":"SGKKHRCW","UsingEmpty":"SGJCJYKK","deviceType":4}, |
| | | {"DeviceName":"瓶盖5L翻斗机","NotUsingBolArea":"SGRGHCW","UsingBolArea":"","NotUsingEmpty":"SGKKHRCW","UsingEmpty":"","deviceType":10}, |
| | | |
| | | ]]]> |
| | | </AreaSet> |
| | | </BOLArea> |
| | | |
| | | </Custom> |
| | | |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8" ?> |
| | | <Custom> |
| | | <HostToAgvServerUrl>http://192.168.1.146:9988/HostToAGV.cgi</HostToAgvServerUrl> |
| | | <OITcpServerUrl>http://127.0.0.1:5102</OITcpServerUrl> |
| | | <SqlServer>Data Source=192.168.1.137;Initial Catalog=OIMobox;User ID=sa;Password=Am123123</SqlServer> |
| | | <AgvSqlServer></AgvSqlServer> |
| | | <FuleServerUrl>http://127.0.0.1:5102</FuleServerUrl> |
| | | <repoNo>仓库编码</repoNo> |
| | | <!--胚盖上报--> |
| | | <MesServerUrl>http://127.0.0.1:5102</MesServerUrl> |
| | | <factoryCode>工厂编号</factoryCode> |
| | | <fromSystem>来源系统:MOBOX</fromSystem> |
| | | |
| | | <securityKey></securityKey> |
| | | <tokenfrom></tokenfrom> |
| | | |
| | | <FactoryCode>工厂编码</FactoryCode> |
| | | <TaskReportUrl>http://127.0.0.1:6666</TaskReportUrl> |
| | | <TaskReportKey></TaskReportKey> |
| | | <FactoryName>工厂名称</FactoryName> |
| | | <OneSign>唯一标识</OneSign> |
| | | |
| | | <!--plc信息,deviceType=1 自动门 deviceType=2 瓶盖机-无菌盖 deviceType=3 瓶盖机-水盖 deviceType=4 翻斗机(水盖) deviceType=5 翻斗机(无菌盖 v1/v2) deviceType=6 翻斗机(无菌盖 v6) deviceType=7 翻斗机(无菌盖 v8) |
| | | {"address":"10.122.160.35","deviceName":"1号无菌盖机","deviceNo":[],"location":["YLWJG1005","YLWJG1006"],"deviceType":2,"enable":0}, |
| | | {"address":"10.122.160.36","deviceName":"2号无菌盖机","deviceNo":[],"location":["YLWJG1003","YLWJG1004"],"deviceType":2,"enable":0}, |
| | | {"address":"10.122.160.37","deviceName":"3号无菌盖机","deviceNo":[],"location":["YLWJG1001","YLWJG1002"],"deviceType":2,"enable":0}, |
| | | {"address":"192.168.1.87","deviceName":"1号水盖机","deviceNo":[],"location":["SGJNB5","SGJNB6"],"deviceType":3,"enable":1}, |
| | | {"address":"10.122.160.39","deviceName":"2号水盖机","deviceNo":[],"location":["SGJNB3","SGJNB4"],"deviceType":3,"enable":0}, |
| | | {"address":"10.122.160.40","deviceName":"3号水盖机","deviceNo":[],"location":["SGJNB7","SGJNB8"],"deviceType":3,"enable":0}, |
| | | {"address":"10.122.160.41","deviceName":"4号水盖机","deviceNo":[],"location":["SGJNB1","SGJNB2"],"deviceType":3,"enable":0}, |
| | | |
| | | {"address":"10.122.160.42","deviceName":"V1/V2","deviceNo":["","13"],"location":["FDJ5469"],"deviceType":5,"enable":1}, |
| | | {"address":"10.122.160.43","deviceName":"V3/V7","deviceNo":["","14"],"location":["FDJ5457"],"deviceType":4,"enable":1}, |
| | | {"address":"127.0.0.1","deviceName":"V6","deviceNo":["","15"],"location":["FDJ5458"],"deviceType":6,"enable":1}, |
| | | |
| | | {"address":"10.122.160.46","deviceName":"V8","deviceNo":["","16"],"location":["CCC3"],"deviceType":7,"enable":0}, |
| | | {"address":"10.122.160.45","deviceName":"V4/V5","deviceNo":["","door1"],"location":["FDJ5459"],"deviceType":4,"enable":0}, |
| | | |
| | | {"address":"10.122.160.30","deviceName":"门plc1","deviceNo":["1","2"],"location":[],"deviceType":1,"enable":1}, |
| | | {"address":"10.122.160.31","deviceName":"门plc2","deviceNo":["4","3"],"location":[],"deviceType":1,"enable":1}, |
| | | {"address":"10.122.160.32","deviceName":"门plc3","deviceNo":["7","6","8","5"],"location":[],"deviceType":1,"enable":1}, |
| | | {"address":"10.122.160.33","deviceName":"门plc4","deviceNo":["9","10"],"location":[],"deviceType":1,"enable":1}, |
| | | {"address":"10.122.160.34","deviceName":"门plc5","deviceNo":["11","12"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.162","deviceName":"550","deviceNo":["1"],"location":["CX-2","CX-1"],"deviceType":9,"enable":1}, |
| | | |
| | | 瓶坯入库区 |
| | | taskPri 默认值60 --> |
| | | <!-- |
| | | 1 门(独立门) |
| | | 2 无菌盖 |
| | | 3 水盖 |
| | | 4 水盖翻斗机 入库堆叠,人工解。 出库从出库位出到线边 空框进人工区, |
| | | 5 瓶坯翻斗机 |
| | | 6 无菌翻斗机 正常出入库流程 堆叠,入库,出线边 空框进人工区, |
| | | 8 瓶坯 |
| | | 9 水线 成品 |
| | | 10 水线翻斗机 人工放线边 空框进人工区, |
| | | 11 提升机 电梯机 |
| | | --> |
| | | <deviceInfo> |
| | | <![CDATA[ |
| | | [ |
| | | {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"550","deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1}, |
| | | {"address":"10.140.3.163","deviceName":"注塑机","FuLeLineNo":"注塑机","deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1}, |
| | | {"address":"10.140.3.161","deviceName":"翻斗机","FuLeLineNo":"翻斗机","deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1}, |
| | | |
| | | {"address":"10.140.3.162","deviceName":"门plc1","deviceNo":["1"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.169","deviceName":"5L550","FuLeLineNo":"5L550","deviceNo":[],"location":["5LCX-3","5LCX-2","5LCX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1}, |
| | | {"address":"10.140.3.165","deviceName":"5L注塑机","FuLeLineNo":"5L注塑机","deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1}, |
| | | {"address":"10.140.3.167","deviceName":"5L翻斗机","FuLeLineNo":"5L翻斗机","deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1}, |
| | | |
| | | {"address":"10.140.3.155","deviceName":"门plc2","deviceNo":["2"],"location":[],"deviceType":1,"enable":1}, |
| | | |
| | | {"address":"10.140.3.155","deviceName":"一楼搬2楼","deviceNo":[],"location":["踢踢踢"],"deviceType":11,"enable":1}, |
| | | {"address":"10.140.3.196","deviceName":"门plc12","deviceNo":["6"],"location":[""],"deviceType":1,"enable":1}, |
| | | {"address":"192.168.1.142","deviceName":"T1提升机","deviceNo":[""],"location":["YWLT1TSJ"],"areaPriy":["YWLT1TSJCD"],"deviceType":13,"enable":1}, |
| | | {"address":"192.168.10.86","deviceName":"T2提升机","deviceNo":[""],"location":["YWLSXBQTSJ"],"areaPriy":[],"deviceType":13,"enable":1}, |
| | | |
| | | ]]]> |
| | | </deviceInfo> |
| | | |
| | | |
| | | <!-- |
| | | DoorNo 上报的门号。 184,185都定的门号10 |
| | | deviceNo ,给184,185 自己定2个门号。写这里。 |
| | | SignOpen 开门信号。 与deviceNo 1:1 对应 |
| | | SignClose 关门信号。 与deviceNo 1:1 对应 |
| | | 185 门号15 |
| | | 184,186,187 自定义 |
| | | --> |
| | | <DoorOneToMany> |
| | | <![CDATA[[ |
| | | {"DoorNo":"10","deviceNo":["184","15"],"SignOpen":["21","21"],"SignClose":["20","20"]}, |
| | | {"DoorNo":"11","deviceNo":["187","186"],"SignOpen":["21","21"],"SignClose":["20","20"]}, |
| | | ]]]> |
| | | </DoorOneToMany> |
| | | |
| | | <!-- |
| | | NotUsingBolArea 非即产满框位。 瓶盖的入库堆叠位,翻斗机出库线边位 |
| | | UsingBolArea 即产满框位 这个翻斗机配置就行了 |
| | | NotUsingEmpty 非即产空框位,空框堆叠位 翻斗机入库堆叠位,瓶盖的出库线边位 |
| | | UsingEmpty 即产空框位。 这个瓶盖配置就行了 |
| | | --> |
| | | <BOLArea> |
| | | <![CDATA[[ |
| | | {"DeviceName":"无菌瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":2}, |
| | | {"DeviceName":"水盖瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":3}, |
| | | {"DeviceName":"水盖翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":4}, |
| | | {"DeviceName":"无菌翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":6}, |
| | | {"DeviceName":"水线翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":10}, |
| | | ]]]> |
| | | </BOLArea> |
| | | <!-- |
| | | |
| | | --> |
| | | <!-- 下线位置配置。 从上到下分排,从左到右 分列 --> |
| | | <!-- |
| | | 1-1号无菌2号无菌3号无菌 |
| | | 2 - 1号水盖 |
| | | 3-下线空框出库位 |
| | | 34-下线空框位 - 出库缓存。 |
| | | 4-下线空框入库位 |
| | | 5-即产满框水盖 |
| | | 6-即产满框无菌盖 |
| | | 7-即产空框 |
| | | 8-废料 |
| | | 9-上线即产满无菌 |
| | | 10-上线即产满水盖 |
| | | 11-入库空 |
| | | 12-即产空 |
| | | 13-出库满水盖 |
| | | 14-出库满无菌 |
| | | --> |
| | | <!--<inStockCacheBit> |
| | | <![CDATA[ |
| | | [ |
| | | {"location":"","locationType":1,"deviceName":"1号瓶坯"} |
| | | ]]]> |
| | | </inStockCacheBit>--> |
| | | <!-- |
| | | agv小车的取放点位 |
| | | |
| | | Location:货位编码 |
| | | StartBit:作为起点时的站点 |
| | | EndBit:作为终点时的站点 |
| | | --> |
| | | |
| | | <MoreSites> |
| | | <![CDATA[[ |
| | | {"Location":"JCJYKK-1P-1L-1C","StartBit":178,"EndBit":1335}, |
| | | {"Location":"JCJYKK-1P-2L-1C","StartBit":175,"EndBit":1336}, |
| | | {"Location":"JCJYMK-1P-1L-1C","StartBit":184,"EndBit":1333}, |
| | | {"Location":"JCJYMK-1P-2L-1C","StartBit":181,"EndBit":1334}, |
| | | {"Location":"JCJYMK-1P-3L-1C","StartBit":1372,"EndBit":1418}, |
| | | {"Location":"JCJYMK-1P-4L-1C","StartBit":1374,"EndBit":1419}, |
| | | {"Location":"接驳区&BACK","StartBit":1374,"EndBit":1419}, |
| | | ]]]> |
| | | </MoreSites> |
| | | <!--配置 即产 空/满 库区,非即产库 空/满 区 |
| | | 1.即产满 |
| | | 2.即产空 |
| | | 3 非即产满 |
| | | 4.非即产空 |
| | | --> |
| | | <AreaSet> |
| | | <![CDATA[[ |
| | | {"Area":"JCJYKK","AreaType":2}, |
| | | ]]]> |
| | | </AreaSet> |
| | | |
| | | </Custom> |
| | | |
| | |
| | | using HH.WCS.QingXigongchang.process; |
| | | using HH.WCS.QingXigongchang.util; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Linq; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Security.Cryptography; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using static HH.WCS.QingXigongchang.dispatch.NDC; |
| | | |
| | | namespace HH.WCS.QingXigongchang.wms |
| | | { |
| | |
| | | using HH.WCS.QingXigongchang.dispatch; |
| | | using HH.WCS.QingXigongchang.process; |
| | | using HH.WCS.QingXigongchang.util; |
| | | using Newtonsoft.Json; |
| | | using NLog.Fluent; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace HH.WCS.QingXigongchang.wms |
| | | { |
| | |
| | | { |
| | | var fromLoc = LocationHelper.GetLoc(from); |
| | | var endLoc = LocationHelper.GetLoc(to); |
| | | |
| | | var chi = new SqlHelper<object>().GetInstance(); |
| | | var newDb = chi.CopyNew(); |
| | | //NDCHelper.ChangeParam(taskNo, agvsite, 2); |
| | | //NDCHelper.ChangeParam(taskNo, 2, 6); |
| | | |
| | | if (fromLoc.S_AREA_CODE == "YWLRGDD") |
| | | { |
| | | //查询任务表 要求是只能生成两个任务 起点库区为YWLRGDD hh_plg 2025年6月9日 |
| | | List<string> TaskState = new List<string>() { "完成", "取消" }; |
| | | var TaskListNum = LocationHelper.GetList<WMSTask>(x => x.S_START_LAREA == "YWLRGDD" && !TaskState.Contains(x.S_B_STATE)); |
| | | if (TaskListNum.Count() >= 2) |
| | | |
| | | var TaskListNum = newDb.Queryable<Location>().Where(l => l.S_AREA_CODE == "YWLRGDD" && l.S_LOCK_STATE == "出库锁").ToList(); |
| | | if (TaskListNum.Count() >= 3) |
| | | { |
| | | LogHelper.Info($"CreateTransport- CreateTask Error" + $"起点库区为YWLRGDD 则最多只能生成两个任务"); |
| | | LogHelper.Info($"CreateTransport- CreateTask Error" + $"起点库区为YWLRGDD 则最多只能生成三个任务"); |
| | | return false; |
| | | } |
| | | } |
| | |
| | | } |
| | | internal static void End(WMSTask task) |
| | | { |
| | | var db = new SqlHelper<WMSTask>().GetInstance(); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | |
| | | //plg 2025年6月13日 10:42:24 |
| | | if (task.S_END_LAREA == "YWLWJJB" && task.S_START_LAREA != "YWLRGDD" && !string.IsNullOrEmpty(task.S_TWO_END_LOC)) |
| | | if (task.S_END_LAREA == "YWLYLTKQ" || task.S_END_LAREA == "YWLTKKTQ") |
| | | { |
| | | var model = db.Queryable<Location>().Where(a => a.S_LOC_CODE == task.S_TWO_END_LOC).First(); |
| | | if (model != null) |
| | | //查询出库锁YWLWJJB |
| | | var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == "YWLWJJB" && x.S_LOCK_STATE == "出库锁"); |
| | | if (ls.Any()) |
| | | { |
| | | //先解锁终点 在锁定 |
| | | db.Ado.BeginTran(); |
| | | try |
| | | var tas = db.Queryable<WMSTask>().Where(a => a.S_START_LOC == ls.First().S_LOC_CODE).ToList().FirstOrDefault(); |
| | | if (tas.S_B_STATE == "已推送") |
| | | { |
| | | model.S_LOCK_STATE = "无"; |
| | | var res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0; |
| | | LogHelper.Info(task.S_TWO_END_LOC + "LockLoc:锁结果" + res); |
| | | db.Ado.CommitTran(); |
| | | NDC.ChangeParamPri(tas.S_TASK_NO, 70); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | db.Ado.RollbackTran(); |
| | | LogHelper.Info("CreateTask 失败 " + ex.Message); |
| | | } |
| | | } |
| | | ////plg 2025年6月13日 10:42:24 |
| | | //if (task.S_END_LAREA == "YWLWJJB" && task.S_START_LAREA != "YWLRGDD" && !string.IsNullOrEmpty(task.S_TWO_END_LOC)) |
| | | //{ |
| | | // var model = db.Queryable<Location>().Where(a => a.S_LOC_CODE == task.S_TWO_END_LOC).First(); |
| | | // if (model != null) |
| | | // { |
| | | // //先解锁终点 在锁定 |
| | | // db.Ado.BeginTran(); |
| | | // try |
| | | // { |
| | | // model.S_LOCK_STATE = "无"; |
| | | // var res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0; |
| | | // LogHelper.Info(task.S_TWO_END_LOC + "LockLoc:锁结果" + res); |
| | | // db.Ado.CommitTran(); |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // db.Ado.RollbackTran(); |
| | | // LogHelper.Info("CreateTask 失败 " + ex.Message); |
| | | // } |
| | | |
| | | LogHelper.Info(task.S_TWO_END_LOC + "二段任务 开始。 "); |
| | | var b = TaskProcess.CreateTransport(task.S_SRC_NO, task.S_END_LOC, task.S_TWO_END_LOC, "原物料搬运-纸箱", task.S_CNTRS.Split(',').ToList(), task.N_START_LAYER, 1, task.N_CNTR_COUNT, task.N_PRIORITY); |
| | | //if (b) |
| | | //{ |
| | | // if (task != null) |
| | | // { |
| | | // task.S_B_STATE = "完成"; |
| | | // task.T_END_TIME = DateTime.Now; |
| | | // db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_END_TIME }).ExecuteCommand(); |
| | | // LogHelper.Info(task.S_TWO_END_LOC + "二段任务 开始。 "); |
| | | // var b = TaskProcess.CreateTransport(task.S_SRC_NO, task.S_END_LOC, task.S_TWO_END_LOC, "原物料搬运-纸箱", task.S_CNTRS.Split(',').ToList(), task.N_START_LAYER, 1, task.N_CNTR_COUNT, task.N_PRIORITY); |
| | | // //if (b) |
| | | // //{ |
| | | // // if (task != null) |
| | | // // { |
| | | // // task.S_B_STATE = "完成"; |
| | | // // task.T_END_TIME = DateTime.Now; |
| | | // // db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_END_TIME }).ExecuteCommand(); |
| | | // // } |
| | | // //} |
| | | // } |
| | | //} |
| | | } |
| | | } |
| | | if (task != null) |
| | | { |
| | | task.S_B_STATE = "完成"; |
| | |
| | | /// 弃用, 改为记录上次库区- |
| | | /// </summary> |
| | | public string TagOver { get; internal set; } = ""; |
| | | |
| | | public DateTime? TagOverTime { get; internal set; } |
| | | public string S_BQ_TRAY_TYPE { get; internal set; } = ""; |
| | | /// <summary> |
| | |
| | | [SuGG("库库转运")] |
| | | public class YWLZXtake : BaseModel |
| | | { |
| | | public string SQL_WorkNo { get; set; } |
| | | public string S_START_AREA { get; set; } |
| | | public int N_START_ROW { get; set; } |
| | | public string S_ZZ_AREA { get; set; } |
| | |
| | | public int N_LAYER { get; internal set; } |
| | | public string S_ITEM_CODE { get; internal set; } |
| | | public string S_ITEM_NAME { get; internal set; } |
| | | |
| | | public string S_BATCH_NO { get; internal set; } |
| | | |
| | | public string S_CJ_NAME { get; set; } |
| | | } |
| | | |
| | |
| | | public string S_ITEM_CODE { get; set; } |
| | | public string S_ITEM_NAME { get; set; } |
| | | public int trayHeight { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 原料pe膜三层TS高度 |
| | | /// </summary> |
| | | public int trayHeight1 { get; set; } |
| | | public int ItemLayer { get; set; } |
| | | |
| | | //物料所在托盘的可堆叠层数。 《》与货位容量取 最小值。 |