2
schangxiang@126.com
2024-10-01 ffa9dc9c2d28c0b8d88b26d483ba9667e316db01
2
已添加760个文件
297004 ■■■■■ 文件已修改
.gitignore 403 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/DLL/HslCommunication.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/DLL/HslCommunication.xml 23728 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/LA24030_LuLiPackageLine_CC.sln 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/App.config 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/ConfigCommon.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/Program.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/Properties/Resources.Designer.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/Properties/Resources.resx 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/Properties/Settings.Designer.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/Properties/Settings.settings 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/Service.ico 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/ServiceClient.cs 566 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/ServiceClient.csproj 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/ServiceClient.designer.cs 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/ServiceClient.resx 303 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/ServiceSection.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/ServiceClient/Windows.cs 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/Program.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/ProjectInstaller.Designer.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/ProjectInstaller.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/ProjectInstaller.resx 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/Properties/AssemblyInfo.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/app.config 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/iWareDeleteTaskService.Designer.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/iWareDeleteTaskService.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/iWareDeleteTaskService.csproj 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/iWareDeleteTaskService.resx 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/DeleteTaskService/packages.config 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/Program.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/ProjectInstaller.Designer.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/ProjectInstaller.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/ProjectInstaller.resx 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/Properties/AssemblyInfo.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/app.config 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/iWarePastDueService.Designer.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/iWarePastDueService.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/iWarePastDueService.csproj 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/iWarePastDueService.resx 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/Services/PastDueService/packages.config 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/App - 本机.config 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/App - 现场.config 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/App.config 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/BLL/ConveyorBLL.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/BLL/MesBLL.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/BLL/RgvBLL.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/BLL/SalverMaterialBindBLL.cs 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/BLL/SrmBLL.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/DeviceDict.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/Helper/AgvRequestHelper.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/Helper/ControlHelper.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/Helper/FormHelper.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs 964 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/Helper/WmsRequestHelper.cs 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/MyMesService.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/SystemValue.cs 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/SystemValueUtil.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Common/SystemWarningMsg.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/Reference.cs 1314 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/Reference.svcmap 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/configuration.svcinfo 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/configuration91.svcinfo 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/iWareCC.RgvService.RgvView.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/iWareCC.RgvService.SdaResEntity.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/iWareSda.Devices._3_Rgv.RgvModel.xsd 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/iWareSda.Model.xsd 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/iWareSda.xsd 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/service1.wsdl 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/service2.xsd 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/RgvService/service21.xsd 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/Reference.cs 2049 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/Reference.svcmap 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/configuration.svcinfo 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/configuration91.svcinfo 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/iWareCC.SrmService.IsAllowSendTaskResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/iWareCC.SrmService.IsReadyResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/iWareCC.SrmService.SdaResEntity.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/iWareCC.SrmService.SrmEntity.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/iWareCC.SrmService.SrmView.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/iWareSda.SrmService.SrmEntity1.xsd 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/service.wsdl 331 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/service.xsd 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/service1.wsdl 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/service2.xsd 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/SrmService/service21.xsd 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/DeviceThreadFactory/DeviceThreadService/ConveyorThreadService/ConveyorThreadService.cs 506 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/DeviceThreadFactory/DeviceThreadService/RgvThreadService/RgvTaskThreadService.cs 1367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/DeviceThreadFactory/DeviceThreadService/SrmThreadService/SrmTaskThreadService.cs 1071 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/DeviceThreadFactory/DeviceThreadServiceFactory.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/DeviceThreadFactory/DeviceThreadServiceHandle.cs 480 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/FormCC.Designer.cs 6338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/FormCC.cs 3423 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/FormCC.resx 1514 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Forms/SrmStockForm.Designer.cs 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Forms/SrmStockForm.cs 783 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Forms/SrmStockForm.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Forms/SystemCheckForm.Designer.cs 342 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Forms/SystemCheckForm.cs 409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Forms/SystemCheckForm.resx 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/IwareICO.ico 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Logo.ico 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Program.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Properties/Resources.Designer.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Properties/Resources.resx 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Properties/Settings.Designer.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Properties/Settings.settings 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Resources/穿梭子母车(彩色).jpg 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Resources/穿梭母车1.jpg 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WCF/CCWcfService.cs 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WCF/ICCWcfService.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/AutoIssueInStoreTask.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/AutoSalverMaterialBindTask - 复制.cs 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/AutoSalverMaterialBindTask.cs 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/AutoUpdateEngineInfoTask.cs 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/EmptySalverTransferTask.cs 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/LineInSacnResult.cs 304 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/MainTaskDecompose.cs 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/MainTaskDecompose_ZPRK.cs 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/OutPlanTaskDecompose.cs 435 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/OutTaskRetryToMes.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/Place1014To1020Task.cs 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/WmsTask/VirtualTaskNoOutPlanTaskHandler.cs 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/iWareCC.csproj 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/BusinessHelper/BusinessHelper.cs 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/BusinessHelper/WCSConfigHelper.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/Dao/CommonDao.cs 554 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/Dao/_system~.ini 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/Globle/SysGloble.cs 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/Service/CommonService.cs 405 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/Service/_system~.ini 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/Conveyor_CacheEntity.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyorEntity.cs 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyorStationEntity.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyor_DB.cs 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEnumType/ESrmConveyorAlarm.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/CacheEntity.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm1_DB.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm2_DB.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/SrmEntity.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/SrmInfo.cs 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm_CacheEntity.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmAlarm.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmCmd.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmState.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Castle.Core.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Castle.Core.xml 5940 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Common.Logging.Core.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Common.Logging.Core.xml 876 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Common.Logging.Log4Net1213.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Common.Logging.Log4Net1213.xml 328 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Common.Logging.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Common.Logging.xml 2774 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/EntityFramework.SqlServer.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/EntityFramework.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Interop.OPCAutomation.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Newtonsoft.Json.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Newtonsoft.Json.xml 10752 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/OpcAccess.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Pager.XML 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/Pager.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/TwinCAT.Ads.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/TwinCatAdsAccess.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/WZ.Useful.Commons.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/log4net.dll 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/DLL/log4net.xml 31814 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Properties/Resources.Designer.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Properties/Resources.resx 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/AutoSizeFormClass.cs 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/Base64Helper.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/CSharpHelper.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/ClassHelper.cs 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/ComboBoxHelper.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/ConfigHelper.cs 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/DESHelper.cs 569 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/DataCache.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/DataTableHelper.cs 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/DateTimeHelper.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/EntityPropHelper.cs 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/EnumberHelper.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/ExcelHelper.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/FileHelper.cs 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/FolderHelper.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/HTTP/HTTPService.cs 545 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/HTTP/HttpHelper.cs 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/HTTP/SSLUtil.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/IEnumerableHelper.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/IntHelper.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/ListHelper.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/Log4Net/C_LogWriter.cs 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/Log4Net/Log4netHelper.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/Log4Net/LogType.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/LogTextHelper.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/MD5Helper.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/MachineHelper.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/MyBase64Helper.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/PageHelper.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/RandomHelper.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/StringHelper.cs 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/SysHelper.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/SysMessageUtil.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/TaskNoHelper.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/TextHelper.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/ThreadHelper.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/TreeHelper.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/ValidateDataHelper.cs 374 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/Utils/ZipHelper.cs 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/iWareCommon.csproj 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/log4net_iWare -编辑版.config 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCommon/log4net_iWare.config 677 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/AGV/AGVRetModel.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/AGV/AGVRetModelJSON.txt 965 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/BindableBase.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/Context.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/Device/DeviceCoordinat.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/EnumberEntity.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/Huffman.cs 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/IBuilder.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ICommonEntity.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/IDirector.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/IHandler.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/IService.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/IStrategy.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ITreeEntity.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/LZW.cs 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ListItem.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/MES/MesRetModel.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/MES/MesRetModel2.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/MES/MesRetProductModel.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/MES/MesUpdateOnlineStatusParamModel.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/MES/Mes_BtjReceiveModel.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/QueryParam.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ResponseListDataEntity.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ResponseListDataPageEntity.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ResponseSimpleDataEntity.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ResultModel/FunRetEntity.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ResultModel/MessageModel.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ResultModel/ResEntity.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/SalverMaterialBind/C_AnalyzeMaterialPostParam.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/SalverMaterialBind/C_Task_InStoreSlaverParam.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/SalverMaterialBind/MyCodeItems.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/SysUser.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/System/ColumnsModel.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/System/PropertieModel.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/TaskSequenceEntity.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ValidateModel.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/ValidateResModel.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/WMS/AddMainTaskPostParam.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/WMS/UpdateEngineInfoParam.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Entity/_system~.ini 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDbError.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/AGV/AGVState.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/DeviceTaskStatusEnum.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/EDevice.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/EDeviceType.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/ESrmAlarm.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Line/LineLocation.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Line/RgvErrorReason.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Line/RgvInOutFlag.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Line/RgvIsDie.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Line/RgvIsStock.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Line/RgvWorkMode.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Rgv/ERgvAlarm.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Rgv/ERgvBodyTest.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Rgv/ERgvCmd.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Rgv/ERgvEvent.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Rgv/ERgvMode.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Rgv/ERgvState.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Rgv/RgvLocation.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Srm/ESrmCmd.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Srm/ESrmForkPosition.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Srm/ESrmMode.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Srm/ESrmState.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/EDevice/Srm/ESrmTaskType.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/ExceptionEnum.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/PLC/PLCServiceTypeEnum.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/RequestStatusEnum.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/StackSequenceSortRule.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/Sys/LanguageEnum.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/Sys/ValidateIntEnum.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/TaskExcuteTypeEnum.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/ThreadDirectionEnum.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/AddTransferTaskEnum.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/DeviceTaskTypeEnum.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/MainInOutFlagEnum.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/MainTaskStatusEnum.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/MainTaskTypeEnum.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/MaterialTypeEnum.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/Plan/OutPlanStateEnum.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/Plan/OutPlanTypeEnum.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/Plan/OutTaskDetailStateEnum.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/Plan/OutTaskModeEnum.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/EnumType/XiGangPublicCommon/Salver_V_Station_StateEnum.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareModel/iWareModel.csproj 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/App.config 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Advertisement.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_BasicDataSet.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_BigMaterialStation.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_CodeItems.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_CodeSets.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_GenerateTaskNo.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_Material.cs 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_PersonHandlerRecord.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_Salver.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_Salver_V_Material.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_Salver_V_Station.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_Station.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_SysExceptionInfo.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Base_UserStation.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/DbModel.cs 2202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Device_AgvRealTime.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Device_RgvRealTime.cs 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Device_SrmRealTime.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Device_Warning.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/ExceptionInfo.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/HttpRequestRecord.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/MES_BTJReceiveReq.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/MES_OnLineReq.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/ModulePermission.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Modules.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/OperateLog.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/PasswordLib.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Permission.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Plan_OutTask.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Plan_OutTaskDetail.cs 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Plan_OutTaskDetailGroupOrderNo.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Role.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/RoleModulePermission.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Task_Main.cs 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Task_Part.cs 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Task_RequestLog.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Task_SalverMaterialBindRecord.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/TasksQz.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/TestMuchTableResult.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/UserRole.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_AllStationStore.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_AllStore.cs 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_AllTaskMain.cs 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_CodeItems.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_CurrentOrderNoList.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_EmptySrmStation.cs 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_Station.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_StationStore.cs 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_Store.cs 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_StoreMaterial.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_TaskMain.cs 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/V_TaskOutMain.cs 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Wms_BindPlateRecord.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Wms_EquipmentSituation.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Wms_ModifyOrderNoRecord.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Wms_NoMesSerialNumberMgr.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Wms_OrderNoRecord.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Wms_VirtualStore.cs 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/Wms_VirtualStoreRecord.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DBModel/sysUserInfo.cs 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/AgvHandler.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/Base_CodeItemsHandler.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/BasicDataSetHandler.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/ClearDataHandler.cs 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/DeviceRgvRealTimeHandler.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/DeviceSrmRealTimeHandler.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/DeviceWarningHandler.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/MainTaskHandler.cs 622 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/MaterialHandler.cs 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/MesService.cs 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/PartTaskHandler.cs 355 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/PersonHandlerRecordHandler.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/PlanOutTaskHandler.cs 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/SalverHandler.cs 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/Salver_Material_Handler.cs 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/Salver_Station_Handler.cs 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/StationHandler.cs 918 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/StoreHandler.cs 475 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/SysExceptionInfoHandler.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/TaskRequestLogHandler.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/DataAccess/Wms_EquipmentSituationHandler.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ExtendEntity/MatModel.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ExtendEntity/RealPlaceEntity.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ExtendEntity/SyncStockToMesEntity.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ExtendEntity/UDT_SYS_ExceptionInfo_Extend.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/MES/Mes_ResEntity.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ParamModel/InformIniInfoToTrussParam.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ParamModel/MesMatInfo.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ParamModel/Mes_BatchMat_Param.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ParamModel/Mes_BatchOrderUPIParam.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ParamModel/Srm_ItemParam.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ViewMode/AllMatStockViewForStockList.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ViewMode/BatchMatGatherView.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ViewMode/BatchMatView.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ViewMode/BatchOrderUPIView.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ViewMode/BoardLoadMaterialView.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ViewMode/MatStockCollectView.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Entity/ViewMode/PlaceLocationView.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/iWareSql.csproj 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareSql/packages.config 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/App.config 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/InterFaceTestForm.Designer.cs 295 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/InterFaceTestForm.cs 399 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/InterFaceTestForm.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/MainForm.Designer.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/MainForm.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/MainForm.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Model/SelLoadStatus.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Model/SelUnloadingTable.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Model/SimulatorCommonEntity.cs 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Model/TransTypeForOutStorageCompleted.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Model/TypeEnum.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Program.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Properties/Resources.Designer.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Properties/Resources.resx 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Properties/Settings.Designer.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Properties/Settings.settings 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/MesWebService1.disco 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/MesWebService1.wsdl 317 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/Reference.cs 746 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/Reference.svcmap 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.GetMesMatInfoResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.GetPlaceInfoResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.SawingConfirmResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.SendBatchUPIsResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.SendInStoreBatchMatsResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.SendOutStoreBatchMatsResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.SendSynchroMatPlaceToMesResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/configuration.svcinfo 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/MesWebService/configuration91.svcinfo 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/Reference.cs 971 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/Reference.svcmap 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/XiGang_iWareTestForm.SrmService.IsAllowSendTaskResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/XiGang_iWareTestForm.SrmService.IsReadyResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/XiGang_iWareTestForm.SrmService.SendSrmMoveResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/XiGang_iWareTestForm.SrmService.SrmEntity.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/configuration.svcinfo 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/configuration91.svcinfo 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/iWareSda.SrmService.SrmEntity.xsd 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/service.wsdl 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/service.xsd 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/SrmService/service1.xsd 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/Reference.cs 1463 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/Reference.svcmap 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/XiGang_iWareTestForm.TrussService.IsAllowSendTaskResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/XiGang_iWareTestForm.TrussService.IsReadyResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/XiGang_iWareTestForm.TrussService.TrussEntity.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/configuration.svcinfo 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/configuration91.svcinfo 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/iWareSda.TrussService.TrussEntity.xsd 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/service.wsdl 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/service.xsd 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Service References/TrussService/service1.xsd 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Utility/BLLHelpler.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Utility/CommonHelper.cs 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Utility/InterfaceSection.cs 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Utility/ReturnBody.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Utility/TestHelper.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/Utility/TextHelper.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/iWareTest/DialogForm/AddInStoreTaskForm.Designer.cs 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/iWareTest/DialogForm/AddInStoreTaskForm.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/iWareTest/DialogForm/AddInStoreTaskForm.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/iWareTest/DialogForm/TestBatchForm.Designer.cs 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/iWareTest/DialogForm/TestBatchForm.cs 761 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/iWareTest/DialogForm/TestBatchForm.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/iWareTest/RCSWCSTestForm.Designer.cs 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/iWareTest/RCSWCSTestForm.cs 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/iWareTest/RCSWCSTestForm.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/packages.config 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareTestForm/测试模拟器.csproj 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/App.config 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/CSharpTest.cs 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/OPCTest.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Properties/DataSources/iWareCC_ASRS.SrmConveyorService.SrmConveyorEntity.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Properties/DataSources/iWareCC_ASRS.SrmConveyorService.SrmConveyorStationEntity.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/MesWebService.disco 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/MesWebService.wsdl 317 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/Reference.cs 746 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/Reference.svcmap 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/configuration.svcinfo 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/configuration91.svcinfo 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.GetMesMatInfoResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.GetPlaceInfoResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SawingConfirmResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendBatchUPIsResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendInStoreBatchMatsResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendOutStoreBatchMatsResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendSynchroMatPlaceToMesResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/SrmTaskThreadServiceTest.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/Task_UnitTest.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/UPIs.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareUnitTest/iWareUnitTest.csproj 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/DLL/HslCommunication.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/DLL/HslCommunication.xml 23728 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/LA24030_LuLiPackageLine_SDA.sln 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/BusinessHelper/BusinessHelper.cs 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/BusinessHelper/WCSConfigHelper.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/Dao/CommonDao.cs 554 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/Dao/_system~.ini 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/Globle/SysGloble.cs 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/Service/CommonService.cs 405 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/Service/_system~.ini 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/Conveyor_CacheEntity.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyorEntity.cs 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyorStationEntity.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyor_DB.cs 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEnumType/ESrmConveyorAlarm.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/CacheEntity.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm1_DB.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm2_DB.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/SrmEntity.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/SrmInfo.cs 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm_CacheEntity.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmAlarm.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmCmd.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmState.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Castle.Core.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Castle.Core.xml 5940 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Common.Logging.Core.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Common.Logging.Core.xml 876 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Common.Logging.Log4Net1213.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Common.Logging.Log4Net1213.xml 328 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Common.Logging.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Common.Logging.xml 2774 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/EntityFramework.SqlServer.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/EntityFramework.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Interop.OPCAutomation.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Newtonsoft.Json.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Newtonsoft.Json.xml 10752 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/OpcAccess.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Pager.XML 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/Pager.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/TwinCAT.Ads.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/TwinCatAdsAccess.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/WZ.Useful.Commons.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/log4net.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/DLL/log4net.xml 31814 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Properties/Resources.Designer.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Properties/Resources.resx 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/AutoSizeFormClass.cs 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/Base64Helper.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/CSharpHelper.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/ClassHelper.cs 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/ComboBoxHelper.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/ConfigHelper.cs 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/DESHelper.cs 569 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/DataCache.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/DataTableHelper.cs 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/DateTimeHelper.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/EntityPropHelper.cs 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/EnumberHelper.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/ExcelHelper.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/FileHelper.cs 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/FolderHelper.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/HTTP/HTTPService.cs 545 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/HTTP/HttpHelper.cs 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/HTTP/SSLUtil.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/IEnumerableHelper.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/IntHelper.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/ListHelper.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/Log4Net/C_LogWriter.cs 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/Log4Net/Log4netHelper.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/Log4Net/LogType.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/LogTextHelper.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/MD5Helper.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/MachineHelper.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/MyBase64Helper.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/PageHelper.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/RandomHelper.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/StringHelper.cs 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/SysHelper.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/SysMessageUtil.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/TaskNoHelper.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/TextHelper.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/ThreadHelper.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/TreeHelper.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/ValidateDataHelper.cs 374 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/Utils/ZipHelper.cs 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/iWareCommon.csproj 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/log4net_iWare -编辑版.config 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareCommon/log4net_iWare.config 677 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/AGV/AGVRetModel.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/AGV/AGVRetModelJSON.txt 965 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/BindableBase.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/Context.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/Device/DeviceCoordinat.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/EnumberEntity.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/Huffman.cs 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/IBuilder.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ICommonEntity.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/IDirector.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/IHandler.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/IService.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/IStrategy.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ITreeEntity.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/LZW.cs 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ListItem.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/MES/MesRetModel.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/MES/MesRetModel2.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/MES/MesRetProductModel.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/MES/MesUpdateOnlineStatusParamModel.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/MES/Mes_BtjReceiveModel.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/QueryParam.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ResponseListDataEntity.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ResponseListDataPageEntity.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ResponseSimpleDataEntity.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ResultModel/FunRetEntity.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ResultModel/MessageModel.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ResultModel/ResEntity.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/SalverMaterialBind/C_AnalyzeMaterialPostParam.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/SalverMaterialBind/C_Task_InStoreSlaverParam.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/SalverMaterialBind/MyCodeItems.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/SysUser.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/System/ColumnsModel.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/System/PropertieModel.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/TaskSequenceEntity.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ValidateModel.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/ValidateResModel.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/WMS/AddMainTaskPostParam.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/WMS/UpdateEngineInfoParam.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Entity/_system~.ini 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDbError.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/AGV/AGVState.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/DeviceTaskStatusEnum.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/EDevice.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/EDeviceType.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/ESrmAlarm.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Line/LineLocation.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Line/RgvErrorReason.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Line/RgvInOutFlag.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Line/RgvIsDie.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Line/RgvIsStock.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Line/RgvWorkMode.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Rgv/ERgvAlarm.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Rgv/ERgvBodyTest.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Rgv/ERgvCmd.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Rgv/ERgvEvent.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Rgv/ERgvMode.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Rgv/ERgvState.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Rgv/RgvLocation.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Srm/ESrmCmd.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Srm/ESrmForkPosition.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Srm/ESrmMode.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Srm/ESrmState.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/EDevice/Srm/ESrmTaskType.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/ExceptionEnum.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/PLC/PLCServiceTypeEnum.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/RequestStatusEnum.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/StackSequenceSortRule.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/Sys/LanguageEnum.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/Sys/ValidateIntEnum.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/TaskExcuteTypeEnum.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/ThreadDirectionEnum.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/AddTransferTaskEnum.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/DeviceTaskTypeEnum.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/MainInOutFlagEnum.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/MainTaskStatusEnum.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/MainTaskTypeEnum.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/MaterialTypeEnum.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/Plan/OutPlanStateEnum.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/Plan/OutPlanTypeEnum.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/Plan/OutTaskDetailStateEnum.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/Plan/OutTaskModeEnum.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/EnumType/XiGangPublicCommon/Salver_V_Station_StateEnum.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareModel/iWareModel.csproj 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/App.config 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Common/SdaHelper.cs 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Common/Struct/WareSdaStruct.cs 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/EntityFramework.SqlServer.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/EntityFramework.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/Interop.OPCAutomation.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/Newtonsoft.Json.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/Newtonsoft.Json.xml 10752 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/OpcAccess.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/S7.Net.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/WZ.Useful.Commons.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/log4net.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/log4net.xml 31814 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/DLL/logtxt.dll 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/1-Srm/SrmModel/DB/SrmDB2Obj.cs 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/1-Srm/SrmModel/DB/SrmDBForRead.cs 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/1-Srm/SrmModel/DB/SrmDBForWrite.cs 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/1-Srm/SrmModel/SrmEntity.cs 665 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/1-Srm/SrmModel/SrmView.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/1-Srm/SrmModel/Srm_CacheEntity.cs 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/1-Srm/SrmService/ISrmService.cs 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/1-Srm/SrmService/SrmService.cs 619 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/2-Line/LineModel/DB/LineDB2Obj.cs 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/2-Line/LineModel/DB/LineDBForRead.cs 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/2-Line/LineModel/DB/LineDBForWrite.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/2-Line/LineModel/LineEntity.cs 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/2-Line/LineModel/LineView.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/2-Line/LineModel/Line_CacheEntity.cs 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/2-Line/LineService/ILineService.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/2-Line/LineService/LineService.cs 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/DB/HuscoLineDB2Obj.cs 348 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/DB/HuscoLineDBForRead.cs 341 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/DB/HuscoLineDBForWrite.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/HuscoLineEntity.cs 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/HuscoLineView.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/HuscoLine_CacheEntity.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-HuscoLine/HuscoLineService/HuscoLineService.cs 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-HuscoLine/HuscoLineService/IHuscoLineService.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-Rgv/RgvModel/DB/RgvComm.cs 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-Rgv/RgvModel/DB/RgvDB2Obj.cs 319 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-Rgv/RgvModel/DB/RgvDBForRead.cs 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-Rgv/RgvModel/DB/RgvDBForWrite.cs 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-Rgv/RgvModel/RgvEntity.cs 785 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-Rgv/RgvModel/RgvView.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-Rgv/RgvModel/Rgv_CacheEntity.cs 329 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-Rgv/RgvService/IRgvService.cs 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/3-Rgv/RgvService/RgvService.cs 605 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Interface/IDevice.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/IwareICO.ico 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/LOGO.ico 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Model/DeviceWarningInfo.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Model/SdaResEntity.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/PLCService/Default/AB_HslCommunicationService.cs 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/PLCService/Default/SS7.cs 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/PLCService/Default/Siemens_HslCommunicationService.cs 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/PLCService/Models/BasePlcParam.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/PLCService/Models/HslCommunicationParam.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/PLCService/Models/SS7Param.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/PLCService/PLCFactory.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/PLCService/PLCService.cs 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Program.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Properties/Resources.Designer.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Properties/Resources.resx 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Properties/Settings.Designer.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Properties/Settings.settings 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Robot.ico 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/SdaMainForm.Designer.cs 430 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/SdaMainForm.cs 1053 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/SdaMainForm.resx 11221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/iWareSda.csproj 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/packages.config 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/App.config 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/OPCTest.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Properties/DataSources/iWareCC_ASRS.SrmConveyorService.SrmConveyorEntity.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Properties/DataSources/iWareCC_ASRS.SrmConveyorService.SrmConveyorStationEntity.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/MesWebService.disco 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/MesWebService.wsdl 317 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/Reference.cs 746 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/Reference.svcmap 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/configuration.svcinfo 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/configuration91.svcinfo 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.GetMesMatInfoResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.GetPlaceInfoResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SawingConfirmResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendBatchUPIsResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendInStoreBatchMatsResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendOutStoreBatchMatsResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendSynchroMatPlaceToMesResponse.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/UPIs.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareUnitTest/iWareUnitTest.csproj 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,403 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
*.Development.json
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Oo]ut/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
/Admin.NET.Web.Entry/wwwroot/Upload/Default
/Admin.NET.Application/Service/Warehouse/WareDictData/Dto
#/DLL
/Admin.NET.Core/Entity/Receiving
/WebApplication1/WebService1.asmx.cs
/WebApplication1/WebService1.asmx
/WebApplication1/WebApplication1.csproj
/WebApplication1/Web.Release.config
/WebApplication1/Web.Debug.config
/WebApplication1/Web.config
/WebApplication1/Properties/AssemblyInfo.cs
/WebApplication1/packages.config
/前端测试文件/checkOrder
/iWare_RawMaterialWarehouse/Admin.NET.Web.Entry/wwwroot/Upload
# å¿½ç•¥çš„æ–‡ä»¶
/Admin.NET.Web.Entry/wwwroot/Upload
#/bin
#*.dll
/My_Admin.NET_Template_Web/node_modules
/node_modules
/bin/Debug
/Debug
/bin/Release
/Release
/iWare_RawMaterialWarehouse/Admin.NET.Database.Migrations/Migrations
/iWare_RawMaterialWarehouse/Admin.NET.Database.Migrations/Migrations
/iWare_RawMaterialWarehouse/Admin.NET.Web.Entry/wwwroot/CodeGen
/iWare_RawMaterialWarehouse/Admin.NET.Application/Admin.NET.Application.xml
/使用文档/PDManer文件/.back_My_Admin
/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations
/使用文档/PDManer文件/.back_原材料库标准化
/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml
/使用文档/PDManer文件/原材料库标准化-backup-20240426113843.chnr.json
/iWare_RawMaterialWarehouse_Web/public/config.js
/Old/iWare_RawMaterialWarehouse_Web_Old/package.json
/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Upload
/iWare_RawMaterialWarehouse_Web/stats.html
/iWare_RawMaterialWarehouse_Web/stats.html
/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/CodeGen
CC/DLL/HslCommunication.dll
Binary files differ
CC/DLL/HslCommunication.xml
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
CC/LA24030_LuLiPackageLine_CC.sln
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,146 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33213.308
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iWareCommon", "iWareCommon\iWareCommon.csproj", "{3583FCF0-92C7-406C-AD78-9FB7C11293CF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iWareCC", "iWareCC_ASRS\iWareCC.csproj", "{18F1DB2E-9327-4231-AFAE-9C94CE915B33}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iWareSql", "iWareSql\iWareSql.csproj", "{D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UnitTest", "UnitTest", "{50A3ECEF-B287-46BD-8271-AF2387438D62}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iWareUnitTest", "iWareUnitTest\iWareUnitTest.csproj", "{3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "测试模拟器", "iWareTestForm\测试模拟器.csproj", "{2131B852-113F-4142-9D77-4F9EC3ACEB19}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WindowsService", "WindowsService", "{EFCB42A5-5134-48AF-B268-E4D3326B4009}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServiceClient", "ServiceClient\ServiceClient.csproj", "{B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{8580575F-4F9A-4A4E-A3FD-28CB69E789E6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iWarePastDueService", "Services\PastDueService\iWarePastDueService.csproj", "{75ED6ACB-1EEB-499A-B375-EC8A404CF415}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iWareDeleteTaskService", "Services\DeleteTaskService\iWareDeleteTaskService.csproj", "{9CB520A4-F970-435C-B232-DB6363559D4C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iWareModel", "iWareModel\iWareModel.csproj", "{556A91F0-34D1-4D23-A1C7-F27E19D916D3}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Debug|Mixed Platforms = Debug|Mixed Platforms
        Debug|x86 = Debug|x86
        Release|Any CPU = Release|Any CPU
        Release|Mixed Platforms = Release|Mixed Platforms
        Release|x86 = Release|x86
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {3583FCF0-92C7-406C-AD78-9FB7C11293CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {3583FCF0-92C7-406C-AD78-9FB7C11293CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {3583FCF0-92C7-406C-AD78-9FB7C11293CF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {3583FCF0-92C7-406C-AD78-9FB7C11293CF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {3583FCF0-92C7-406C-AD78-9FB7C11293CF}.Debug|x86.ActiveCfg = Debug|Any CPU
        {3583FCF0-92C7-406C-AD78-9FB7C11293CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {3583FCF0-92C7-406C-AD78-9FB7C11293CF}.Release|Any CPU.Build.0 = Release|Any CPU
        {3583FCF0-92C7-406C-AD78-9FB7C11293CF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {3583FCF0-92C7-406C-AD78-9FB7C11293CF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {3583FCF0-92C7-406C-AD78-9FB7C11293CF}.Release|x86.ActiveCfg = Release|Any CPU
        {18F1DB2E-9327-4231-AFAE-9C94CE915B33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {18F1DB2E-9327-4231-AFAE-9C94CE915B33}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {18F1DB2E-9327-4231-AFAE-9C94CE915B33}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {18F1DB2E-9327-4231-AFAE-9C94CE915B33}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {18F1DB2E-9327-4231-AFAE-9C94CE915B33}.Debug|x86.ActiveCfg = Debug|Any CPU
        {18F1DB2E-9327-4231-AFAE-9C94CE915B33}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {18F1DB2E-9327-4231-AFAE-9C94CE915B33}.Release|Any CPU.Build.0 = Release|Any CPU
        {18F1DB2E-9327-4231-AFAE-9C94CE915B33}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {18F1DB2E-9327-4231-AFAE-9C94CE915B33}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {18F1DB2E-9327-4231-AFAE-9C94CE915B33}.Release|x86.ActiveCfg = Release|Any CPU
        {D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}.Debug|x86.ActiveCfg = Debug|Any CPU
        {D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}.Release|Any CPU.Build.0 = Release|Any CPU
        {D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {D0B38CD8-60AC-472C-8031-A03CF3C2E8A5}.Release|x86.ActiveCfg = Release|Any CPU
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}.Debug|x86.ActiveCfg = Debug|Any CPU
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}.Release|Any CPU.Build.0 = Release|Any CPU
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153}.Release|x86.ActiveCfg = Release|Any CPU
        {2131B852-113F-4142-9D77-4F9EC3ACEB19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {2131B852-113F-4142-9D77-4F9EC3ACEB19}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {2131B852-113F-4142-9D77-4F9EC3ACEB19}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {2131B852-113F-4142-9D77-4F9EC3ACEB19}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {2131B852-113F-4142-9D77-4F9EC3ACEB19}.Debug|x86.ActiveCfg = Debug|Any CPU
        {2131B852-113F-4142-9D77-4F9EC3ACEB19}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {2131B852-113F-4142-9D77-4F9EC3ACEB19}.Release|Any CPU.Build.0 = Release|Any CPU
        {2131B852-113F-4142-9D77-4F9EC3ACEB19}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {2131B852-113F-4142-9D77-4F9EC3ACEB19}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {2131B852-113F-4142-9D77-4F9EC3ACEB19}.Release|x86.ActiveCfg = Release|Any CPU
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}.Debug|x86.ActiveCfg = Debug|Any CPU
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}.Release|Any CPU.Build.0 = Release|Any CPU
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}.Release|x86.ActiveCfg = Release|Any CPU
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415}.Debug|Any CPU.ActiveCfg = Debug|x86
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415}.Debug|Mixed Platforms.Build.0 = Debug|x86
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415}.Debug|x86.ActiveCfg = Debug|x86
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415}.Debug|x86.Build.0 = Debug|x86
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415}.Release|Any CPU.ActiveCfg = Release|x86
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415}.Release|Mixed Platforms.ActiveCfg = Release|x86
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415}.Release|Mixed Platforms.Build.0 = Release|x86
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415}.Release|x86.ActiveCfg = Release|x86
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415}.Release|x86.Build.0 = Release|x86
        {9CB520A4-F970-435C-B232-DB6363559D4C}.Debug|Any CPU.ActiveCfg = Debug|x86
        {9CB520A4-F970-435C-B232-DB6363559D4C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
        {9CB520A4-F970-435C-B232-DB6363559D4C}.Debug|Mixed Platforms.Build.0 = Debug|x86
        {9CB520A4-F970-435C-B232-DB6363559D4C}.Debug|x86.ActiveCfg = Debug|x86
        {9CB520A4-F970-435C-B232-DB6363559D4C}.Debug|x86.Build.0 = Debug|x86
        {9CB520A4-F970-435C-B232-DB6363559D4C}.Release|Any CPU.ActiveCfg = Release|x86
        {9CB520A4-F970-435C-B232-DB6363559D4C}.Release|Mixed Platforms.ActiveCfg = Release|x86
        {9CB520A4-F970-435C-B232-DB6363559D4C}.Release|Mixed Platforms.Build.0 = Release|x86
        {9CB520A4-F970-435C-B232-DB6363559D4C}.Release|x86.ActiveCfg = Release|x86
        {9CB520A4-F970-435C-B232-DB6363559D4C}.Release|x86.Build.0 = Release|x86
        {556A91F0-34D1-4D23-A1C7-F27E19D916D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {556A91F0-34D1-4D23-A1C7-F27E19D916D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {556A91F0-34D1-4D23-A1C7-F27E19D916D3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {556A91F0-34D1-4D23-A1C7-F27E19D916D3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {556A91F0-34D1-4D23-A1C7-F27E19D916D3}.Debug|x86.ActiveCfg = Debug|Any CPU
        {556A91F0-34D1-4D23-A1C7-F27E19D916D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {556A91F0-34D1-4D23-A1C7-F27E19D916D3}.Release|Any CPU.Build.0 = Release|Any CPU
        {556A91F0-34D1-4D23-A1C7-F27E19D916D3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {556A91F0-34D1-4D23-A1C7-F27E19D916D3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {556A91F0-34D1-4D23-A1C7-F27E19D916D3}.Release|x86.ActiveCfg = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(NestedProjects) = preSolution
        {3302F4AE-FF0A-49CA-BF38-D6F7E16E2153} = {50A3ECEF-B287-46BD-8271-AF2387438D62}
        {2131B852-113F-4142-9D77-4F9EC3ACEB19} = {50A3ECEF-B287-46BD-8271-AF2387438D62}
        {B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E} = {EFCB42A5-5134-48AF-B268-E4D3326B4009}
        {8580575F-4F9A-4A4E-A3FD-28CB69E789E6} = {EFCB42A5-5134-48AF-B268-E4D3326B4009}
        {75ED6ACB-1EEB-499A-B375-EC8A404CF415} = {8580575F-4F9A-4A4E-A3FD-28CB69E789E6}
        {9CB520A4-F970-435C-B232-DB6363559D4C} = {8580575F-4F9A-4A4E-A3FD-28CB69E789E6}
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        VisualSVNWorkingCopyRoot = .
        SolutionGuid = {F9CA2CC3-85DB-4A04-8692-1EC016FC394A}
    EndGlobalSection
EndGlobal
CC/ServiceClient/App.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="ServiceSection" type="ServiceClient.ServiceSection,ServiceClient" />
  </configSections>
  <ServiceSection>
    <add name="iWarePastDueService" text="鲁丽木业过期料服务" path="\iWarePastDueService\iWarePastDueService.exe" />
    <add name="iWareDeleteTaskService" text="鲁丽木业定时删除任务服务" path="\iWareDeleteTaskService\iWareDeleteTaskService.exe" />
  </ServiceSection>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key="ClientSettingsProvider.ServiceUri" value="" />
  </appSettings>
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>
</configuration>
CC/ServiceClient/ConfigCommon.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
/*
 * CLR Version:4.0.30319.42000
 * NameSpace:WIP_common.CommonUtility
 * FileName:ConfigCommon
 * CurrentYear:2018
 * CurrentTime:2018/8/16 16:07:12
 * Author:shaocx
 *
 * <更新记录>
 * ver 1.0.0.0   2018/8/16 16:07:12 æ–°è¦ä½œæˆ (by shaocx)
 */
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ServiceClient
{
    [ConfigurationCollection(typeof(TheKeyValue))]
    public class TheKeyValueCollection : ConfigurationElementCollection        // è‡ªå®šä¹‰ä¸€ä¸ªé›†åˆ
    {
        new TheKeyValue this[string name]
        {
            get
            {
                return (TheKeyValue)base.BaseGet(name);
            }
        }
        // ä¸‹é¢äºŒä¸ªæ–¹æ³•中抽象类中必须要实现的。
        protected override ConfigurationElement CreateNewElement()
        {
            return new TheKeyValue();
        }
        protected override object GetElementKey(ConfigurationElement element)
        {
            return ((TheKeyValue)element).Name;
        }
    }
    public class TheKeyValue : ConfigurationElement
    {
        [ConfigurationProperty("name", IsRequired = true)]
        public string Name
        {
            get { return this["name"].ToString(); }
            set { this["name"] = value; }
        }
        [ConfigurationProperty("text", IsRequired = true)]
        public string Text
        {
            get { return this["text"].ToString(); }
            set { this["text"] = value; }
        }
        [ConfigurationProperty("path", IsRequired = true)]
        public string Path
        {
            get { return this["path"].ToString(); }
            set { this["path"] = value; }
        }
    }
}
CC/ServiceClient/Program.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace ServiceClient
{
    static class Program
    {
        /// <summary>
        /// åº”用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //1.这里判定是否已经有实例在运行
            //只运行一个实例
            Process instance = RunningInstance();
            if (instance == null)
            {
                //1.1 æ²¡æœ‰å®žä¾‹åœ¨è¿è¡Œ
                Application.Run(new ServiceClient());
            }
            else
            {
                //1.2 å·²ç»æœ‰ä¸€ä¸ªå®žä¾‹åœ¨è¿è¡Œ
                HandleRunningInstance(instance);
            }
        }
        //2.在进程中查找是否已经有实例在运行
        #region  ç¡®ä¿ç¨‹åºåªè¿è¡Œä¸€ä¸ªå®žä¾‹
        private static Process RunningInstance()
        {
            Process current = Process.GetCurrentProcess();
            Process[] processes = Process.GetProcessesByName(current.ProcessName);
            //遍历与当前进程名称相同的进程列表
            foreach (Process process in processes)
            {
                //如果实例已经存在则忽略当前进程
                if (process.Id != current.Id)
                {
                    //保证要打开的进程同已经存在的进程来自同一文件路径
                    if (Assembly.GetExecutingAssembly().Location.Replace("/", "") == current.MainModule.FileName)
                    {
                        //返回已经存在的进程
                        return process;
                    }
                }
            }
            return null;
        }
        //3.已经有了就把它激活,并将其窗口放置最前端
        private static void HandleRunningInstance(Process instance)
        {
            MessageBox.Show("程序已经启动!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            ShowWindowAsync(instance.MainWindowHandle, 1);  //调用api函数,正常显示窗口
            SetForegroundWindow(instance.MainWindowHandle); //将窗口放置最前端
        }
        [DllImport("User32.dll")]
        private static extern bool ShowWindowAsync(System.IntPtr hWnd, int cmdShow);
        [DllImport("User32.dll")]
        private static extern bool SetForegroundWindow(System.IntPtr hWnd);
        #endregion
    }
}
CC/ServiceClient/Properties/AssemblyInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// æœ‰å…³ç¨‹åºé›†çš„常规信息通过以下
// ç‰¹æ€§é›†æŽ§åˆ¶ã€‚更改这些特性值可修改
// ä¸Žç¨‹åºé›†å…³è”的信息。
[assembly: AssemblyTitle("ServiceClient")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ServiceClient")]
[assembly: AssemblyCopyright("Copyright Â©  2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// å°† ComVisible è®¾ç½®ä¸º false ä½¿æ­¤ç¨‹åºé›†ä¸­çš„类型
// å¯¹ COM ç»„件不可见。  å¦‚果需要从 COM è®¿é—®æ­¤ç¨‹åºé›†ä¸­çš„类型,
// åˆ™å°†è¯¥ç±»åž‹ä¸Šçš„ ComVisible ç‰¹æ€§è®¾ç½®ä¸º true。
[assembly: ComVisible(false)]
// å¦‚果此项目向 COM å…¬å¼€ï¼Œåˆ™ä¸‹åˆ— GUID ç”¨äºŽç±»åž‹åº“çš„ ID
[assembly: Guid("68de2463-ddb1-4c50-ab98-aac3a17e8aa8")]
// ç¨‹åºé›†çš„版本信息由下面四个值组成:
//
//      ä¸»ç‰ˆæœ¬
//      æ¬¡ç‰ˆæœ¬
//      ç”Ÿæˆå·
//      ä¿®è®¢å·
//
// å¯ä»¥æŒ‡å®šæ‰€æœ‰è¿™äº›å€¼ï¼Œä¹Ÿå¯ä»¥ä½¿ç”¨â€œç”Ÿæˆå·â€å’Œâ€œä¿®è®¢å·â€çš„默认值,
// æ–¹æ³•是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
CC/ServiceClient/Properties/Resources.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
//     æ­¤ä»£ç ç”±å·¥å…·ç”Ÿæˆã€‚
//     è¿è¡Œæ—¶ç‰ˆæœ¬:4.0.30319.42000
//
//     å¯¹æ­¤æ–‡ä»¶çš„æ›´æ”¹å¯èƒ½ä¼šå¯¼è‡´ä¸æ­£ç¡®çš„行为,并且如果
//     é‡æ–°ç”Ÿæˆä»£ç ï¼Œè¿™äº›æ›´æ”¹å°†ä¼šä¸¢å¤±ã€‚
// </auto-generated>
//------------------------------------------------------------------------------
namespace ServiceClient.Properties {
    using System;
    /// <summary>
    ///   ä¸€ä¸ªå¼ºç±»åž‹çš„资源类,用于查找本地化的字符串等。
    /// </summary>
    // æ­¤ç±»æ˜¯ç”± StronglyTypedResourceBuilder
    // ç±»é€šè¿‡ç±»ä¼¼äºŽ ResGen æˆ– Visual Studio çš„工具自动生成的。
    // è‹¥è¦æ·»åŠ æˆ–ç§»é™¤æˆå‘˜ï¼Œè¯·ç¼–è¾‘ .ResX æ–‡ä»¶ï¼Œç„¶åŽé‡æ–°è¿è¡Œ ResGen
    // (以 /str ä½œä¸ºå‘½ä»¤é€‰é¡¹),或重新生成 VS é¡¹ç›®ã€‚
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resources {
        private static global::System.Resources.ResourceManager resourceMan;
        private static global::System.Globalization.CultureInfo resourceCulture;
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }
        /// <summary>
        ///   è¿”回此类使用的缓存的 ResourceManager å®žä¾‹ã€‚
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ServiceClient.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        /// <summary>
        ///   ä½¿ç”¨æ­¤å¼ºç±»åž‹èµ„源类,为所有资源查找
        ///   é‡å†™å½“前线程的 CurrentUICulture å±žæ€§ã€‚
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
    }
}
CC/ServiceClient/Properties/Resources.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>
CC/ServiceClient/Properties/Settings.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
//------------------------------------------------------------------------------
// <auto-generated>
//     æ­¤ä»£ç ç”±å·¥å…·ç”Ÿæˆã€‚
//     è¿è¡Œæ—¶ç‰ˆæœ¬:4.0.30319.42000
//
//     å¯¹æ­¤æ–‡ä»¶çš„æ›´æ”¹å¯èƒ½ä¼šå¯¼è‡´ä¸æ­£ç¡®çš„行为,并且如果
//     é‡æ–°ç”Ÿæˆä»£ç ï¼Œè¿™äº›æ›´æ”¹å°†ä¼šä¸¢å¤±ã€‚
// </auto-generated>
//------------------------------------------------------------------------------
namespace ServiceClient.Properties {
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.1.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
        public static Settings Default {
            get {
                return defaultInstance;
            }
        }
        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("colServerName")]
        public string ServerName {
            get {
                return ((string)(this["ServerName"]));
            }
            set {
                this["ServerName"] = value;
            }
        }
        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("服务名称")]
        public string æœåŠ¡åç§° {
            get {
                return ((string)(this["服务名称"]));
            }
            set {
                this["服务名称"] = value;
            }
        }
    }
}
CC/ServiceClient/Properties/Settings.settings
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="ServiceClient.Properties" GeneratedClassName="Settings">
  <Profiles />
  <Settings>
    <Setting Name="ServerName" Type="System.String" Scope="User">
      <Value Profile="(Default)">colServerName</Value>
    </Setting>
    <Setting Name="服务名称" Type="System.String" Scope="User">
      <Value Profile="(Default)">服务名称</Value>
    </Setting>
  </Settings>
</SettingsFile>
CC/ServiceClient/Service.ico
CC/ServiceClient/ServiceClient.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,566 @@
using System;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
using System.Collections;
using System.Configuration;
namespace ServiceClient
{
    /// <summary>
    /// æ¦‚要描述
    /// </summary>
    public partial class ServiceClient : Form
    {
        #region å˜é‡
        /// <summary>
        /// å½“前打开日志路径
        /// </summary>
        private string strCurrentPath = "";
        /// <summary>
        /// ç›‘听日志委托
        /// </summary>
        /// <param name="strMessage"></param>
        public delegate void ListenNoteDelegate(string strMessage);
        public ListenNoteDelegate addMessage;
        /// <summary>
        /// è¯»å–日志文件的线程
        /// </summary>
        Thread readThread = null;
        ///获取服务地址
        string ServerPath = string.Empty;
        ///获取服务代码
        string ServerCode = string.Empty;
        ///获取服务名称
        string ServerName = string.Empty;
        #endregion
        #region æž„造函数
        /// <summary>
        /// æž„造函数
        /// </summary>
        public ServiceClient()
        {
            InitializeComponent();
        }
        #endregion
        #region è‡ªå®šä¹‰å‡½æ•°
        #region åˆ¤æ–­window服务是否启动
        /// <summary>
        /// åˆ¤æ–­Windows服务是否启动
        /// </summary>
        /// <returns></returns>
        private bool IsServiceStart()
        {
            ////定义返回值
            bool bStartStatus = false;
            try
            {
                ////判断是否服务启动状态
                if (Windows.IsRunning(ServerCode))
                {
                    bStartStatus = true;
                }
                ////根据是否开启服务设置按钮权限
                if (bStartStatus)
                {
                    this.btnOpenService.Enabled = false;
                    this.btnStopService.Enabled = true;
                }
                else
                {
                    this.btnOpenService.Enabled = true;
                    this.btnStopService.Enabled = false;
                }
                ////返回服务状态
                return bStartStatus;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        #endregion
        #region åŠ è½½æœåŠ¡
        /// <summary>
        /// åŠ è½½æœåŠ¡
        /// </summary>
        private void LoadServerData()
        {
            try
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("ServiceCode", typeof(string));
                dt.Columns.Add("ServiceName", typeof(string));
                dt.Columns.Add("ServiceState", typeof(string));
                dt.Columns.Add("ServicePath", typeof(string));
                #region åŠ è½½åŸºç¡€æœåŠ¡
                ServiceSection serviceSection=ServiceSection.GetConfig();
                foreach (TheKeyValue item in serviceSection.KeyValues)
                {
                    DataRow tbsRow = dt.NewRow();
                    tbsRow["ServiceCode"] = item.Name;
                    tbsRow["ServiceName"] =item.Text;
                    tbsRow["ServicePath"] = Application.StartupPath + item.Path;
                    if (Windows.isServiceIsExisted(item.Name))
                    {
                        ////判断是否服务启动状态
                        if (Windows.IsRunning(item.Name))
                        {
                            tbsRow["ServiceState"] = "服务正在运行";
                        }
                        else
                        {
                            tbsRow["ServiceState"] = "服务已停止";
                        }
                    }
                    else
                    {
                        tbsRow["ServiceState"] = "服务已卸载";
                    }
                    dt.Rows.Add(tbsRow);
                }
                //绑定数据
                ServiceList.DataSource = dt;
                #endregion
                #region æ ¼å¼åŒ–一下行颜色
                for (int i = 0; i < ServiceList.RowCount; i++)
                {
                    switch (ServiceList.Rows[i].Cells["ServiceState"].Value.ToString())
                    {
                        case "服务正在运行":
                            ServiceList.Rows[i].DefaultCellStyle.BackColor = btnOpenService.BackColor;
                            break;
                        case "服务已停止":
                        case "服务已卸载":
                            ServiceList.Rows[i].DefaultCellStyle.BackColor = btnUninstall.BackColor;
                            break;
                        default:
                            break;
                    }
                }
                #endregion
            }
            catch (Exception)
            {
                throw;
            }
        }
        #endregion
        #endregion
        #region è‡ªå®šä¹‰äº‹ä»¶
        #region åˆå§‹åŒ–事件
        /// <summary>
        /// åˆå§‹åŒ–事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmTCVMCClient_Load(object sender, EventArgs e)
        {
            LoadServerData();
            ////初始化任务栏图标
            string icon = Directory.GetCurrentDirectory() + "\\Service.ico";
            this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
            notifyIcon1.Icon = new Icon(icon);//指定一个图标
            notifyIcon1.Visible = false;
            //notifyIcon1.MouseMove += notifyIcon1_MouseMove;
            notifyIcon1.Click += new System.EventHandler(this.notifyIcon1_Click);
            addMessage = new ListenNoteDelegate(ListenNote);
        }
        #endregion
        #region å¼€å¯æœåŠ¡
        /// <summary>
        /// å¼€å¯æœåŠ¡
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpenService_Click(object sender, EventArgs e)
        {
            try
            {
                if (MessageBox.Show("确定要开启"+ ServerName + "服务?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
                {
                    if (Windows.StarmyService(ServerCode))//启动服务
                    {
                        if (Windows.IsRunning(ServerCode))//检查服务是否在运行
                        {
                            ////把日志文件展示在列表中
                            MessageBox.Show("开启" + ServerName + "成功!");
                            this.Invoke(addMessage, "开启" + ServerName + "成功!");
                            //更改服务状态
                            ServiceList.CurrentRow.Cells["ServiceState"].Value = "服务正在运行";
                            //设置一下按钮权限
                            ServiceList_Click(null, null);
                            return;
                        }
                        else
                        {
                            ////把日志文件展示在列表中
                            MessageBox.Show("开启" + ServerName + "成功!");
                            this.Invoke(addMessage, "开启" + ServerName + "成功!");
                            //设置一下按钮权限
                            IsServiceStart();
                            return;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ////把日志文件展示在列表中
                MessageBox.Show("开启" + ServerName + "异常:" + ex.Message);
                this.Invoke(addMessage, "开启" + ServerName + "异常:" + ex.Message);
            }
        }
        #endregion
        #region å…³é—­æœåŠ¡
        /// <summary>
        /// å…³é—­æœåŠ¡
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStopService_Click(object sender, EventArgs e)
        {
            try
            {
                if (MessageBox.Show("确定关闭"+ ServerName + "服务?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
                {
                    if (Windows.StopService(ServerCode))
                    {
                        if (Windows.IsRunning(ServerCode))//检查服务是否运行
                        {
                            MessageBox.Show("关闭" + ServerName + "失败!");
                            ////把日志文件展示在列表中
                            this.Invoke(addMessage, "关闭" + ServerName + "失败!");
                            return;
                        }
                        else
                        {
                            ////把日志文件展示在列表中
                            MessageBox.Show("关闭" + ServerName + "成功!");
                            this.Invoke(addMessage, "关闭" + ServerName + "成功!");
                            //更改服务状态
                            ServiceList.CurrentRow.Cells["ServiceState"].Value = "服务已停止";
                            //设置一下按钮权限
                            ServiceList_Click(null, null);
                            return;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ////把日志文件展示在列表中
                MessageBox.Show("关闭" + ServerName + "异常:" + ex.Message);
                this.Invoke(addMessage, "关闭" + ServerName + "异常:" + ex.Message);
            }
        }
        #endregion
        #region æµè§ˆæ—¥å¿—
        /// <summary>
        /// æµè§ˆæ—¥å¿—
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnViewLog_Click(object sender, EventArgs e)
        {
            ////打开一个文件
            OpenFileDialog OFD = new OpenFileDialog();
            ////设定打开的文件类型
            OFD.Filter = "日志文件(*.log)|*.log|文本文件(*.txt)|*.txt";
            ////确定打开时
            if (OFD.ShowDialog(this) == DialogResult.OK)
            {
                if (readThread != null)
                {
                    ////释放线程
                    readThread.Abort();
                }
                ////清空显示内容
                this.lbRealTimeNote.Items.Clear();
                ////给当前打开文件路径赋值
                strCurrentPath = OFD.FileName;
                ////读取日志文件
                readThread = new Thread(new ThreadStart(StreamReaderLogData));
                ////开启线程
                readThread.Start();
            }
        }
        #endregion
        #region è¯»å–日志文件
        /// <summary>
        /// è¯»å–日志文件
        /// </summary>
        private void StreamReaderLogData()
        {
            using (FileStream fs = new FileStream(strCurrentPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                ////读取打开的日志文件
                using (StreamReader sr = new StreamReader(fs, Encoding.Default))
                {
                    ////逐行读取
                    while (!sr.EndOfStream)
                    {
                        ////把日志文件展示在列表中
                        this.Invoke(addMessage, sr.ReadLine());
                    }
                }
            }
            ////释放线程
            readThread.Abort();
        }
        #endregion
        #region ç›‘听日志
        /// <summary>
        /// ç›‘听日志
        /// </summary>
        /// <param name="name"></param>
        public void ListenNote(string strMessage)
        {
            this.lbRealTimeNote.Items.Add(DateTime.Now + ":" + strMessage);
            ////让滚动条显示在最下面
            this.lbRealTimeNote.SelectedIndex = lbRealTimeNote.Items.Count - 1;
        }
        #endregion
        #region æœ€å°åŒ–隐藏在任务栏中
        /// <summary>
        /// æœ€å°åŒ–隐藏在任务栏中
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmTCVMCClient_SizeChanged(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.Hide(); //或者是this.Visible = false;
                this.notifyIcon1.Visible = true;
            }
        }
        #endregion
        #region å•击隐藏咋任务栏中的如表显示窗体
        /// <summary>
        /// å•击隐藏咋任务栏中的如表显示窗体
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void notifyIcon1_Click(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Normal)
            {
                this.WindowState = FormWindowState.Minimized;
                this.Hide();
            }
            else if (this.WindowState == FormWindowState.Minimized)
            {
                this.Show();
                this.WindowState = FormWindowState.Normal;
                this.Activate();
            }
        }
        #endregion
        #region æ°”泡提示
        /// <summary>
        /// æ°”泡提示
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void notifyIcon1_MouseMove(object sender, MouseEventArgs e)
        {
            notifyIcon1.BalloonTipText = "服务管理";
            notifyIcon1.ShowBalloonTip(5000);//显示气泡提示,参数为显示时间
        }
        #endregion
        #region å®‰è£…服务
        /// <summary>
        /// å®‰è£…服务
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnInstall_Click(object sender, EventArgs e)
        {
            try
            {
                if (MessageBox.Show("确定要安装"+ ServerName + "服务么?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
                {
                    IDictionary dictionary = new Hashtable();
                    if (Windows.InstallmyService(dictionary, ServerPath))//安装服务
                    {
                        ////把日志文件展示在列表中
                        MessageBox.Show("安装" + ServerName + "成功,未启动!");
                        this.Invoke(addMessage, "安装" + ServerName + "成功,未启动!");
                        //更改服务状态
                        ServiceList.CurrentRow.Cells["ServiceState"].Value = "服务已停止";
                        //设置一下按钮权限
                        ServiceList_Click(null, null);
                    }
                    else
                    {
                        ////把日志文件展示在列表中
                        MessageBox.Show(ServerName+"服务已经存在");
                        this.Invoke(addMessage,ServerName+"服务已经存在!");
                    }
                }
            }
            catch (Exception ex)
            {
                ////把日志文件展示在列表中
                MessageBox.Show(ServerName+"服务安装异常:" + ex.Message);
                this.Invoke(addMessage,ServerName + "服务安装异常:" + ex.Message);
            }
        }
        #endregion
        #region å¸è½½æœåŠ¡
        /// <summary>
        /// å¸è½½æœåŠ¡
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUninstall_Click(object sender, EventArgs e)
        {
            try
            {
                if (MessageBox.Show("确定要卸载"+ ServerName + "服务么?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
                {
                    IDictionary dictionary = new Hashtable();
                    if (Windows.UnInstallmyService(dictionary, ServerPath))//卸载服务
                    {
                        if (!Windows.isServiceIsExisted(ServerCode))//检查服务是否存在
                        {
                            ////把日志文件展示在列表中
                            MessageBox.Show("卸载" + ServerName + "成功!");
                            this.Invoke(addMessage, "卸载" + ServerName + "成功!");
                            //更改服务状态
                            ServiceList.CurrentRow.Cells["ServiceState"].Value = "服务已卸载";
                            //设置一下按钮权限
                            ServiceList_Click(null, null);
                        }
                        else
                        {
                            ////把日志文件展示在列表中
                            MessageBox.Show("卸载" + ServerName + "失败!");
                            this.Invoke(addMessage, "卸载" + ServerName + "失败!");
                        }
                    }
                    else
                    {
                        ////把日志文件展示在列表中
                        MessageBox.Show(ServerName + "已卸载!");
                        this.Invoke(addMessage, ServerName + "已卸载!");
                    }
                }
            }
            catch (Exception ex)
            {
                ////把日志文件展示在列表中
                MessageBox.Show(ServerName + "服务卸载异常:" + ex.Message);
                this.Invoke(addMessage, ServerName + "服务卸载异常:" + ex.Message);
            }
        }
        #endregion
        #region åˆ—表变化时触发事件
        /// <summary>
        /// åˆ—表变化时触发事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ServiceList_Click(object sender, EventArgs e)
        {
            try
            {
                if (ServiceList.CurrentRow == null) return;
                switch (ServiceList.CurrentRow.Cells["ServiceState"].Value.ToString())
                {
                    case "服务正在运行":
                        this.btnOpenService.Enabled = false;
                        this.btnStopService.Enabled = true;
                        this.btnInstall.Enabled = false;
                        this.btnUninstall.Enabled = false;
                        //ServiceList.CurrentRow.DefaultCellStyle.BackColor = btnOpenService.BackColor;
                        break;
                    case "服务已停止":
                        this.btnOpenService.Enabled = true;
                        this.btnStopService.Enabled = false;
                        this.btnInstall.Enabled = false;
                        this.btnUninstall.Enabled = true;
                        //ServiceList.CurrentRow.DefaultCellStyle.BackColor = btnUninstall.BackColor;
                        break;
                    case "服务已卸载":
                        this.btnOpenService.Enabled = false;
                        this.btnStopService.Enabled = false;
                        this.btnInstall.Enabled = true;
                        this.btnUninstall.Enabled = false;
                        //ServiceList.CurrentRow.DefaultCellStyle.BackColor = btnUninstall.BackColor;
                        break;
                    default:
                        this.btnOpenService.Enabled = false;
                        this.btnStopService.Enabled = false;
                        this.btnInstall.Enabled = false;
                        this.btnUninstall.Enabled = false;
                        //ServiceList.CurrentRow.DefaultCellStyle.BackColor = btnUninstall.BackColor;
                        break;
                }
                //取得服务代码
                ServerCode = ServiceList.CurrentRow.Cells["ServiceCode"].Value.ToString();
                ServerPath = ServiceList.CurrentRow.Cells["ServicePath"].Value.ToString();
                ServerName = ServiceList.CurrentRow.Cells["ServiceName"].Value.ToString();
            }
            catch (Exception)
            {
                throw;
            }
        }
        #endregion
        #endregion
        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            if (MessageBox.Show("真的要退出程序吗?", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            {
                e.Cancel = true;
            }
        }
    }
}
CC/ServiceClient/ServiceClient.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{B9DBDCA4-ECAA-419C-8FBB-7EA267B1F48E}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>ServiceClient</RootNamespace>
    <AssemblyName>ServiceClient</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile />
    <PublishUrl>发布\</PublishUrl>
    <Install>true</Install>
    <InstallFrom>Disk</InstallFrom>
    <UpdateEnabled>false</UpdateEnabled>
    <UpdateMode>Foreground</UpdateMode>
    <UpdateInterval>7</UpdateInterval>
    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
    <UpdatePeriodically>false</UpdatePeriodically>
    <UpdateRequired>false</UpdateRequired>
    <MapFileExtensions>true</MapFileExtensions>
    <ApplicationRevision>0</ApplicationRevision>
    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
    <IsWebBootstrapper>false</IsWebBootstrapper>
    <UseApplicationTrust>false</UseApplicationTrust>
    <BootstrapperEnabled>true</BootstrapperEnabled>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
    <UseVSHostingProcess>false</UseVSHostingProcess>
  </PropertyGroup>
  <PropertyGroup>
    <ApplicationIcon>Service.ico</ApplicationIcon>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.configuration" />
    <Reference Include="System.Configuration.Install" />
    <Reference Include="System.Core" />
    <Reference Include="System.ServiceProcess" />
    <Reference Include="System.Web.Extensions" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Deployment" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="ConfigCommon.cs" />
    <Compile Include="ServiceSection.cs" />
    <Compile Include="ServiceClient.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="ServiceClient.designer.cs">
      <DependentUpon>ServiceClient.cs</DependentUpon>
    </Compile>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Windows.cs" />
    <EmbeddedResource Include="ServiceClient.resx">
      <DependentUpon>ServiceClient.cs</DependentUpon>
      <SubType>Designer</SubType>
    </EmbeddedResource>
    <EmbeddedResource Include="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
      <SubType>Designer</SubType>
    </EmbeddedResource>
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
      <DesignTime>True</DesignTime>
    </Compile>
    <None Include="App.config" />
    <None Include="Properties\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
    </None>
    <Compile Include="Properties\Settings.Designer.cs">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <DesignTimeSharedInput>True</DesignTimeSharedInput>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <Content Include="Service.ico">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <BootstrapperPackage Include=".NETFramework,Version=v4.5">
      <Visible>False</Visible>
      <ProductName>Microsoft .NET Framework 4.5 %28x86 å’Œ x64%29</ProductName>
      <Install>true</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>
CC/ServiceClient/ServiceClient.designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,292 @@
namespace ServiceClient
{
    partial class ServiceClient
    {
        /// <summary>
        /// å¿…需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// æ¸…理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows çª—体设计器生成的代码
        /// <summary>
        /// è®¾è®¡å™¨æ”¯æŒæ‰€éœ€çš„æ–¹æ³• - ä¸è¦
        /// ä½¿ç”¨ä»£ç ç¼–辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServiceClient));
            this.groupBox1 = new System.Windows.Forms.GroupBox();
            this.btnUninstall = new System.Windows.Forms.Button();
            this.btnInstall = new System.Windows.Forms.Button();
            this.btnViewLog = new System.Windows.Forms.Button();
            this.btnStopService = new System.Windows.Forms.Button();
            this.btnOpenService = new System.Windows.Forms.Button();
            this.groupBox2 = new System.Windows.Forms.GroupBox();
            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
            this.ServiceList = new System.Windows.Forms.DataGridView();
            this.ServiceCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.ServiceName = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.ServiceState = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.ServicePath = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.lbRealTimeNote = new System.Windows.Forms.ListBox();
            this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
            this.groupBox1.SuspendLayout();
            this.groupBox2.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
            this.splitContainer1.Panel1.SuspendLayout();
            this.splitContainer1.Panel2.SuspendLayout();
            this.splitContainer1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.ServiceList)).BeginInit();
            this.SuspendLayout();
            //
            // groupBox1
            //
            this.groupBox1.Controls.Add(this.btnUninstall);
            this.groupBox1.Controls.Add(this.btnInstall);
            this.groupBox1.Controls.Add(this.btnViewLog);
            this.groupBox1.Controls.Add(this.btnStopService);
            this.groupBox1.Controls.Add(this.btnOpenService);
            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top;
            this.groupBox1.Location = new System.Drawing.Point(0, 0);
            this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox1.Name = "groupBox1";
            this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox1.Size = new System.Drawing.Size(1200, 101);
            this.groupBox1.TabIndex = 0;
            this.groupBox1.TabStop = false;
            this.groupBox1.Text = "工具栏";
            //
            // btnUninstall
            //
            this.btnUninstall.BackColor = System.Drawing.Color.Red;
            this.btnUninstall.Cursor = System.Windows.Forms.Cursors.Hand;
            this.btnUninstall.ForeColor = System.Drawing.Color.White;
            this.btnUninstall.Location = new System.Drawing.Point(560, 25);
            this.btnUninstall.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btnUninstall.Name = "btnUninstall";
            this.btnUninstall.Size = new System.Drawing.Size(137, 59);
            this.btnUninstall.TabIndex = 5;
            this.btnUninstall.Text = "卸载服务";
            this.btnUninstall.UseVisualStyleBackColor = false;
            this.btnUninstall.Click += new System.EventHandler(this.btnUninstall_Click);
            //
            // btnInstall
            //
            this.btnInstall.BackColor = System.Drawing.Color.Cyan;
            this.btnInstall.Cursor = System.Windows.Forms.Cursors.Hand;
            this.btnInstall.ForeColor = System.Drawing.Color.Black;
            this.btnInstall.Location = new System.Drawing.Point(381, 25);
            this.btnInstall.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btnInstall.Name = "btnInstall";
            this.btnInstall.Size = new System.Drawing.Size(137, 59);
            this.btnInstall.TabIndex = 4;
            this.btnInstall.Text = "安装服务";
            this.btnInstall.UseVisualStyleBackColor = false;
            this.btnInstall.Click += new System.EventHandler(this.btnInstall_Click);
            //
            // btnViewLog
            //
            this.btnViewLog.BackColor = System.Drawing.Color.Blue;
            this.btnViewLog.Cursor = System.Windows.Forms.Cursors.Hand;
            this.btnViewLog.ForeColor = System.Drawing.Color.White;
            this.btnViewLog.Location = new System.Drawing.Point(745, 25);
            this.btnViewLog.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btnViewLog.Name = "btnViewLog";
            this.btnViewLog.Size = new System.Drawing.Size(137, 59);
            this.btnViewLog.TabIndex = 3;
            this.btnViewLog.Text = "浏览日志";
            this.btnViewLog.UseVisualStyleBackColor = false;
            this.btnViewLog.Click += new System.EventHandler(this.btnViewLog_Click);
            //
            // btnStopService
            //
            this.btnStopService.BackColor = System.Drawing.Color.Red;
            this.btnStopService.Cursor = System.Windows.Forms.Cursors.Hand;
            this.btnStopService.ForeColor = System.Drawing.Color.White;
            this.btnStopService.Location = new System.Drawing.Point(204, 25);
            this.btnStopService.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btnStopService.Name = "btnStopService";
            this.btnStopService.Size = new System.Drawing.Size(137, 59);
            this.btnStopService.TabIndex = 2;
            this.btnStopService.Text = "关闭服务";
            this.btnStopService.UseVisualStyleBackColor = false;
            this.btnStopService.Click += new System.EventHandler(this.btnStopService_Click);
            //
            // btnOpenService
            //
            this.btnOpenService.BackColor = System.Drawing.Color.Aqua;
            this.btnOpenService.Cursor = System.Windows.Forms.Cursors.Hand;
            this.btnOpenService.ForeColor = System.Drawing.Color.Black;
            this.btnOpenService.Location = new System.Drawing.Point(29, 25);
            this.btnOpenService.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btnOpenService.Name = "btnOpenService";
            this.btnOpenService.Size = new System.Drawing.Size(137, 59);
            this.btnOpenService.TabIndex = 1;
            this.btnOpenService.Text = "开启服务";
            this.btnOpenService.UseVisualStyleBackColor = false;
            this.btnOpenService.Click += new System.EventHandler(this.btnOpenService_Click);
            //
            // groupBox2
            //
            this.groupBox2.Controls.Add(this.splitContainer1);
            this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill;
            this.groupBox2.Location = new System.Drawing.Point(0, 101);
            this.groupBox2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox2.Name = "groupBox2";
            this.groupBox2.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox2.Size = new System.Drawing.Size(1200, 518);
            this.groupBox2.TabIndex = 1;
            this.groupBox2.TabStop = false;
            this.groupBox2.Text = "实时日志";
            //
            // splitContainer1
            //
            this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.splitContainer1.Location = new System.Drawing.Point(4, 22);
            this.splitContainer1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.splitContainer1.Name = "splitContainer1";
            //
            // splitContainer1.Panel1
            //
            this.splitContainer1.Panel1.Controls.Add(this.ServiceList);
            //
            // splitContainer1.Panel2
            //
            this.splitContainer1.Panel2.Controls.Add(this.lbRealTimeNote);
            this.splitContainer1.Size = new System.Drawing.Size(1192, 492);
            this.splitContainer1.SplitterDistance = 558;
            this.splitContainer1.SplitterWidth = 5;
            this.splitContainer1.TabIndex = 1;
            //
            // ServiceList
            //
            this.ServiceList.AllowUserToAddRows = false;
            this.ServiceList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.ServiceList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
            this.ServiceCode,
            this.ServiceName,
            this.ServiceState,
            this.ServicePath});
            this.ServiceList.Dock = System.Windows.Forms.DockStyle.Fill;
            this.ServiceList.Location = new System.Drawing.Point(0, 0);
            this.ServiceList.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.ServiceList.Name = "ServiceList";
            this.ServiceList.ReadOnly = true;
            this.ServiceList.RowTemplate.Height = 23;
            this.ServiceList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
            this.ServiceList.Size = new System.Drawing.Size(558, 492);
            this.ServiceList.TabIndex = 0;
            this.ServiceList.Click += new System.EventHandler(this.ServiceList_Click);
            //
            // ServiceCode
            //
            this.ServiceCode.DataPropertyName = "ServiceCode";
            this.ServiceCode.HeaderText = "服务代码";
            this.ServiceCode.Name = "ServiceCode";
            this.ServiceCode.ReadOnly = true;
            //
            // ServiceName
            //
            this.ServiceName.DataPropertyName = "ServiceName";
            this.ServiceName.HeaderText = "服务名称";
            this.ServiceName.Name = "ServiceName";
            this.ServiceName.ReadOnly = true;
            this.ServiceName.Width = 175;
            //
            // ServiceState
            //
            this.ServiceState.DataPropertyName = "ServiceState";
            this.ServiceState.HeaderText = "服务状态";
            this.ServiceState.Name = "ServiceState";
            this.ServiceState.ReadOnly = true;
            //
            // ServicePath
            //
            this.ServicePath.DataPropertyName = "ServicePath";
            this.ServicePath.HeaderText = "服务地址";
            this.ServicePath.Name = "ServicePath";
            this.ServicePath.ReadOnly = true;
            this.ServicePath.Visible = false;
            //
            // lbRealTimeNote
            //
            this.lbRealTimeNote.BackColor = System.Drawing.Color.Black;
            this.lbRealTimeNote.Dock = System.Windows.Forms.DockStyle.Fill;
            this.lbRealTimeNote.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.lbRealTimeNote.ForeColor = System.Drawing.Color.Lime;
            this.lbRealTimeNote.FormattingEnabled = true;
            this.lbRealTimeNote.ItemHeight = 17;
            this.lbRealTimeNote.Location = new System.Drawing.Point(0, 0);
            this.lbRealTimeNote.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.lbRealTimeNote.Name = "lbRealTimeNote";
            this.lbRealTimeNote.Size = new System.Drawing.Size(629, 492);
            this.lbRealTimeNote.TabIndex = 0;
            //
            // notifyIcon1
            //
            this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
            this.notifyIcon1.Text = "服务";
            this.notifyIcon1.Visible = true;
            //
            // ServiceClient
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(1200, 619);
            this.Controls.Add(this.groupBox2);
            this.Controls.Add(this.groupBox1);
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.MaximizeBox = false;
            this.Name = "ServiceClient";
            this.ShowInTaskbar = false;
            this.Text = "伟本任务服务管理";
            this.Load += new System.EventHandler(this.FrmTCVMCClient_Load);
            this.SizeChanged += new System.EventHandler(this.FrmTCVMCClient_SizeChanged);
            this.groupBox1.ResumeLayout(false);
            this.groupBox2.ResumeLayout(false);
            this.splitContainer1.Panel1.ResumeLayout(false);
            this.splitContainer1.Panel2.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
            this.splitContainer1.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.ServiceList)).EndInit();
            this.ResumeLayout(false);
        }
        #endregion
        private System.Windows.Forms.GroupBox groupBox1;
        private System.Windows.Forms.Button btnViewLog;
        private System.Windows.Forms.Button btnStopService;
        private System.Windows.Forms.Button btnOpenService;
        private System.Windows.Forms.GroupBox groupBox2;
        private System.Windows.Forms.ListBox lbRealTimeNote;
        private System.Windows.Forms.Button btnInstall;
        private System.Windows.Forms.NotifyIcon notifyIcon1;
        private System.Windows.Forms.Button btnUninstall;
        private System.Windows.Forms.SplitContainer splitContainer1;
        private System.Windows.Forms.DataGridView ServiceList;
        private System.Windows.Forms.DataGridViewTextBoxColumn ServiceCode;
        private System.Windows.Forms.DataGridViewTextBoxColumn ServiceName;
        private System.Windows.Forms.DataGridViewTextBoxColumn ServiceState;
        private System.Windows.Forms.DataGridViewTextBoxColumn ServicePath;
    }
}
CC/ServiceClient/ServiceClient.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,303 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="ServiceCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="ServiceName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="ServiceState.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="ServicePath.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="ServiceCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="ServiceName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="ServiceState.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="ServicePath.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAA
        AAYAAAAJAAAACQAAAAYAAAAD////AERERBlNTU1ITExMQjo6Og5GRkYAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAMIhcAImNE
        AEKQYwBipXEAeat1AIWjbwGFi2EJeYtfAWJgPABAdHFrgJaWlu+SkpLkd3d3QYyMjAAuLi4FNzc3EwoK
        CgIHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAARVzsAQKdw
        AIfSjADE5pkA6O6dAPjyoAD+55kC/7WJMf+hjmH+v5M1+M+cLee+pnTp19ja/8/Pz/2SkpJlAAAAAWho
        aF6CgoLAX19fWg0NDQcsLCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQDAAAAAAAETTMAL69z
        AI7gkgDe8ZsA/fSZAP/zlgD/8pMA//KSAP/FizL/rqyo/8rLzf+qn4v/r5+D/7+6sP/e3t7/1dXV/4yM
        jL5eXl6BnZ2d47Gxsf+VlZXpcHBwP42NjQAUFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAkGAAAAAAABJJf
        AErXiwDH8JgA/PKUAP/xkAD/8Y4A//GOAP/xjgD/8Y0A/9ueRf/d3Nr/5eXl/9TU1P+zsrD/0NHR/97e
        3v/V1dX/u7u7/6ioqPy6urr/t7e3/66uruyPj487qKioABMTEwAAAAAAAAAAAAAAAAAAAAAAXj8AAAAA
        AAHAfgBS6JUA3vKXAP/xkgD/8ZAA//GRAP/xkwD/8ZUA/+mRAv/mjwH/6ZUO/9zGo//g4eP/5OTk/+Xl
        5f/l5eX/4eHh/9vb2//Pz8//wcHB/7i4uP+wsLD/oqKimSYmJgkiIiIQMjIyCEVFRQAAAAAAAAAAAMSH
        AAD1nQAA4JQAQ+6aAODylwD/8ZMA//GVAP/xmAD/8ZsA//KeAP/unAD/u5JG/6aPZ/+wjEv/tqaL/9zd
        3v/g4OD/3Nzc/9vb2//h4eH/6urq/+vr6//V1dX/tra2/6qqqv+IiIi8hISEm4qKisJ6enpk////AAAA
        AAAAAAAA7p0AAOydACbwnADO8ZgA//GXAP/ymgD/8p8A//KiAf/ypQP/9KgE/+GfEP+3rJT/vL7C/7e4
        uv/CwsP/1tbW/8rKyv/BwcH/xsbG/83Nzf/S0tL/4eHh/+3t7f/T09P/q6ur/6Kiov+oqKj/p6en/5KS
        krYjIyMOAAAAAOicAADlnAAJ8J0AofGaAP/ymgD/8p8B//OkCP/zqBL/86sd//SuJf/1sCj/2qdC/8K/
        uv/Kysv/y8vL/83Nzf/CwsL/s7Oz/7u7u//Z2dn/4uLi/9PT0/+6urr/ysrK/9/f3/+9vb3/o6Oj/6Oj
        pP+kpKT/m5ub2mVlZSXcmAAA9KAAAO6eAFLxnAD08pwB//OiCf/zpxr/860s//SxOf/0tUH/9bdH//W5
        Sv/ptlf/07+Y/8vGvv/Jycn/yMjI/7W1tf+ysrL/1dXV//T19f/7+/z/9vb3/9bW2P+srK3/ysrK/8fH
        x/+mpqb/paSi/6ajnOmenp6FeXl5EOmcAADnnAAM8J4At/KeAv/zoxH/9Kop//SxO//0tkf/9bpR//W9
        WP/1v17/9cFh//XCYf/tvF//yat0/7u3sv++vr7/tra2/7i4uf/Lx7//+fLj//747P/9+O7/6tzB/7Su
        pP+7vLz/wMDA/7Gys/+sn4j/wJAwwa57ERGygh4A758AAO2eAD/xnwHx86MU//SsMf/1s0T/9blR//a9
        Xf/2wWX/9sRs//bGcP/3yHP/5Ltv/66adv+ln5X/s7Oy/7m5uf/AwMD/vb6//6Sekf/JpVf/7rlD/+u2
        Ov+8lEH/s6+o/7q6u/+2trb/vLy8/7WzsP+gloL2e3Zsh0hLUQ7/qAcA76ABgvKiEP/zqzD/9bRI//W7
        V//2wGT/98Vu//fIdv/3y3z/986A//fPg//Xw57/qamq/7S0tf+0tLT/s7Oz/8jIyP/Ozs7/r6+w/5iR
        g/+nkmP/p5Jg/6qlmv/Ozs//t7e3/7Gxsf/ExMT/xsbG/7+/wP+nqKnWeXp7H+ScAArxog2486cp//Wy
        Rv/2u1n/9sJn//fHc//3y33/+M+E//jSiv/10o7/8NSe//Ht4/+9vb7/sLCw/7CwsP+wsLD/wsLC/+Hh
        4f/X19f/xcbH/8LDxv/Q0dP/5OTl/87Ozv+ysrL/vLy8/9DR0//MztH/yszO/8rDtcPEoVgP6qETHvGl
        Itj0rT3/9rlW//fCaP/3yHX/982A//jSif/51ZD/+NeV/+/ar//y693//v39/9PT0/+9vbz/xcK9/7a0
        sP+1tbX/1NTU/+/v7//u7u7/6+vr/+rq6v/a2tr/wMDA/7u7u//W1tf/2MCa/9q2g//Uv6L/365Z1/SV
        AB3upCYw8qgy5vSzSv/3v2P/+Md0//jNgf/504z/+deU//nam//33KP/9OvY//79/P//////+vr6//r6
        +f/u7ez/trW0/7m5uf+/v7//0dHR/+Tk5P/l5eX/29vb/8zMzf/MzMz/4eHh/+Dh4v/DnWL/6YgB/+2P
        D//jnjLm5KEdL/GnMjnzrD3r9bhW//fEbv/4zH7/+dOL//nYlf/63J7/+t6j//PhuP/8+vf/////////
        /////////////9DQ0P+zs7P/v7+//8XFxf/Lysr/0dHR/9bW1v/a2tr/5OTl/+/v7//u7u//6erq/8W9
        sv/Vhhj/7pQc/+DMruvexIk58Ko7NvSvRur2vF3/+Mh2//nRhv/615P/+tyd//rfpf/54av/+fHf////
        ////////////////////////2NjY/7y8vf/CwsL/0NDP/9/Xx//Z08f/4eLi/+jp6f/q2Lb/782N/+7o
        3f/t7vH/4NrR/9+TJv/rnjf/49rM6eHJmzXuq0Mn9LJN4fa+Y//4y3z/+dSN//ramf/636T/++Os//rl
        tP/89+r////////////////////////////6+vn/2tnW/8/Ozv/v7u3/+/nz/+Hbzv/h4eH/5+bm/+rG
        g//0tkH/8MVx/+zcvf/stFP/8JAA/+q0bf/m3Mrh47FUJuepSRTztFLL98Bm//jOgP/515L/+92e//vi
        qf/75rL//Om8//335/////////////////////////////7+/f/08ej/9/b1////////////6+fh/9/d
        2//l4tz/8cqD//W6Tv/zsDD/8aoZ//KcAf/xjwD/7Lt5/+fe0MrgoT8UzpU9AvO2V6D3wGf/+M6B//nZ
        lf/736L/++Wv//zpuv/87MD/+/LY/////v/////////////////////////////////9+e///vz4////
        ///18ev/597M/+3TpP/1yHT/9b9c//SyOP/zpgn/8pwA//CPAP/qvIH/5+HXoMRVAAL4vGAA8bZcYffA
        Z/34zoD/+tmV//vhpv/857X//Ou9//vtwv/58tv////////////////////////////9+/P//fPa//rq
        xv/8+PD////////9+v/87tP/+NCJ//fGcf/2v17/9bZE//OnEv/ymwD/7ZIQ/+vUtv3o4NFh7ezrAO+3
        YADutl4i9b9n2/jMe//62ZP/++Ko//zotv/87L7//O/E//nz3f////////////////////////////jz
        5v/y473/9eW9//n17f/47NT/++O1//jVkf/2zH//98Zx//W+Xf/1tUX/9Kkc//CZBP/otGz/7OHU3OjZ
        viLn1rkA5LFiAGUvDQDyvmiH98h1//nWjv/74qf//Oi0//vru//468H/+PTm//////////////////7+
        /v/+/fz//fz6//Tw5//w4sH/9fDk//Xp0P/21pn/79am//HUn//2xG7/9b1a//W0Q//0qBj/76Ii/+/Y
        t//s3ciJtHUAAePDkwAAAAAA775rAO27aSb1xnLX+dKF//vgof/65rH/8ebG//Lt2//9/Pv/////////
        /v/7+vb//Pv5//f06f/y7Nz/9vLo//Xv4v/68Nv/+OO3//Let//7+fb/+N+1//bBZ//1ulX/9bE9/+2o
        Kv/qtWH/7Ldq1+e1aibpvHkAAAAAAAAAAADYr2gA/+SEAPHCcGD3zXz1+9qW//vjqf/88NL//v79////
        ///+/ff//fbc//fw2P/07+L/9OzV//Lp0v/18ef/9erR//Hds//w3rr/+fbv///////34Lr/8cJ0//O5
        WP/wsUf/68yb//PjzvXpr19g////ANuDAAAAAAAAAAAAAAAAAADpvnAA4rdrB/PHdor504j8+96c//vl
        rv/679T//vz0//zz1v/87sH//O7D//rtx//768D/+enB//nx4P/27tv/+PDh//38/P/////////+//rg
        tP/2xnX/9LZQ/+2uSP/y2rX89u3gi96mTwfnvn8AAAAAAAAAAAAAAAAAAAAAAAAAAADwxHUA7L9wD/bM
        fpf31Y/78t2t//Lo0P/46L7//Oq5//zruv/86rr//Om4//zntf/85bH//OSw//vhrf/74rH//vbn///8
        9//75Lz/98Jr//SySf/tuWT/7M6j+/Tm05f16twP9OraAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AADtxXkA679uDvHQjoP24rrx/fjw//Xnxf/64qb//OWt//zmr//85a///OOs//vhqP/63qH/+tqZ//nV
        j//51JH/99OV//TAav/ytVT/7MF9/+/dw/Hx4tGD8d3EDvPjzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAADvxnYA5bpqBfPOhlL65LrK+fHg/PHdsv/32pr/+t2d//venv/63Jz/+tqZ//nX
        k//50ov/+MyA//fFcf/yw3f/77pq/+/Llv348efL9+3iU+nNpgXw38cAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXt38A///cAO/MiBn34rlu9ufLxe/bs/Lv0Zf+88+K//XO
        hv/1zIL/9sl7//bEc//zvmv/8Lln/u23afLru3fF8t3Dbvfs3hn///8A4bV/AAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZIgAHIAAADyz48U89yzS+7Y
        s4rr0aS87NCh2e3QouTtx4zk7cF/2evDib3ryZqL68+qS+7eyBT///8A9v3+AAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA//AQ//+AAI/+AAAH/AAAB/gAAAfwAAAB8AAAAeAAAADAAAAAwAAAAIAA
        AAGAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAGAAAABwAAAA+AA
        AAfgAAAH8AAAD/gAAB/8AAA//wAA//+AAf8=
</value>
  </data>
  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>51</value>
  </metadata>
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAA
        AAYAAAAJAAAACQAAAAYAAAAD////AERERBlNTU1ITExMQjo6Og5GRkYAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAMIhcAImNE
        AEKQYwBipXEAeat1AIWjbwGFi2EJeYtfAWJgPABAdHFrgJaWlu+SkpLkd3d3QYyMjAAuLi4FNzc3EwoK
        CgIHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAARVzsAQKdw
        AIfSjADE5pkA6O6dAPjyoAD+55kC/7WJMf+hjmH+v5M1+M+cLee+pnTp19ja/8/Pz/2SkpJlAAAAAWho
        aF6CgoLAX19fWg0NDQcsLCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQDAAAAAAAETTMAL69z
        AI7gkgDe8ZsA/fSZAP/zlgD/8pMA//KSAP/FizL/rqyo/8rLzf+qn4v/r5+D/7+6sP/e3t7/1dXV/4yM
        jL5eXl6BnZ2d47Gxsf+VlZXpcHBwP42NjQAUFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAkGAAAAAAABJJf
        AErXiwDH8JgA/PKUAP/xkAD/8Y4A//GOAP/xjgD/8Y0A/9ueRf/d3Nr/5eXl/9TU1P+zsrD/0NHR/97e
        3v/V1dX/u7u7/6ioqPy6urr/t7e3/66uruyPj487qKioABMTEwAAAAAAAAAAAAAAAAAAAAAAXj8AAAAA
        AAHAfgBS6JUA3vKXAP/xkgD/8ZAA//GRAP/xkwD/8ZUA/+mRAv/mjwH/6ZUO/9zGo//g4eP/5OTk/+Xl
        5f/l5eX/4eHh/9vb2//Pz8//wcHB/7i4uP+wsLD/oqKimSYmJgkiIiIQMjIyCEVFRQAAAAAAAAAAAMSH
        AAD1nQAA4JQAQ+6aAODylwD/8ZMA//GVAP/xmAD/8ZsA//KeAP/unAD/u5JG/6aPZ/+wjEv/tqaL/9zd
        3v/g4OD/3Nzc/9vb2//h4eH/6urq/+vr6//V1dX/tra2/6qqqv+IiIi8hISEm4qKisJ6enpk////AAAA
        AAAAAAAA7p0AAOydACbwnADO8ZgA//GXAP/ymgD/8p8A//KiAf/ypQP/9KgE/+GfEP+3rJT/vL7C/7e4
        uv/CwsP/1tbW/8rKyv/BwcH/xsbG/83Nzf/S0tL/4eHh/+3t7f/T09P/q6ur/6Kiov+oqKj/p6en/5KS
        krYjIyMOAAAAAOicAADlnAAJ8J0AofGaAP/ymgD/8p8B//OkCP/zqBL/86sd//SuJf/1sCj/2qdC/8K/
        uv/Kysv/y8vL/83Nzf/CwsL/s7Oz/7u7u//Z2dn/4uLi/9PT0/+6urr/ysrK/9/f3/+9vb3/o6Oj/6Oj
        pP+kpKT/m5ub2mVlZSXcmAAA9KAAAO6eAFLxnAD08pwB//OiCf/zpxr/860s//SxOf/0tUH/9bdH//W5
        Sv/ptlf/07+Y/8vGvv/Jycn/yMjI/7W1tf+ysrL/1dXV//T19f/7+/z/9vb3/9bW2P+srK3/ysrK/8fH
        x/+mpqb/paSi/6ajnOmenp6FeXl5EOmcAADnnAAM8J4At/KeAv/zoxH/9Kop//SxO//0tkf/9bpR//W9
        WP/1v17/9cFh//XCYf/tvF//yat0/7u3sv++vr7/tra2/7i4uf/Lx7//+fLj//747P/9+O7/6tzB/7Su
        pP+7vLz/wMDA/7Gys/+sn4j/wJAwwa57ERGygh4A758AAO2eAD/xnwHx86MU//SsMf/1s0T/9blR//a9
        Xf/2wWX/9sRs//bGcP/3yHP/5Ltv/66adv+ln5X/s7Oy/7m5uf/AwMD/vb6//6Sekf/JpVf/7rlD/+u2
        Ov+8lEH/s6+o/7q6u/+2trb/vLy8/7WzsP+gloL2e3Zsh0hLUQ7/qAcA76ABgvKiEP/zqzD/9bRI//W7
        V//2wGT/98Vu//fIdv/3y3z/986A//fPg//Xw57/qamq/7S0tf+0tLT/s7Oz/8jIyP/Ozs7/r6+w/5iR
        g/+nkmP/p5Jg/6qlmv/Ozs//t7e3/7Gxsf/ExMT/xsbG/7+/wP+nqKnWeXp7H+ScAArxog2486cp//Wy
        Rv/2u1n/9sJn//fHc//3y33/+M+E//jSiv/10o7/8NSe//Ht4/+9vb7/sLCw/7CwsP+wsLD/wsLC/+Hh
        4f/X19f/xcbH/8LDxv/Q0dP/5OTl/87Ozv+ysrL/vLy8/9DR0//MztH/yszO/8rDtcPEoVgP6qETHvGl
        Itj0rT3/9rlW//fCaP/3yHX/982A//jSif/51ZD/+NeV/+/ar//y693//v39/9PT0/+9vbz/xcK9/7a0
        sP+1tbX/1NTU/+/v7//u7u7/6+vr/+rq6v/a2tr/wMDA/7u7u//W1tf/2MCa/9q2g//Uv6L/365Z1/SV
        AB3upCYw8qgy5vSzSv/3v2P/+Md0//jNgf/504z/+deU//nam//33KP/9OvY//79/P//////+vr6//r6
        +f/u7ez/trW0/7m5uf+/v7//0dHR/+Tk5P/l5eX/29vb/8zMzf/MzMz/4eHh/+Dh4v/DnWL/6YgB/+2P
        D//jnjLm5KEdL/GnMjnzrD3r9bhW//fEbv/4zH7/+dOL//nYlf/63J7/+t6j//PhuP/8+vf/////////
        /////////////9DQ0P+zs7P/v7+//8XFxf/Lysr/0dHR/9bW1v/a2tr/5OTl/+/v7//u7u//6erq/8W9
        sv/Vhhj/7pQc/+DMruvexIk58Ko7NvSvRur2vF3/+Mh2//nRhv/615P/+tyd//rfpf/54av/+fHf////
        ////////////////////////2NjY/7y8vf/CwsL/0NDP/9/Xx//Z08f/4eLi/+jp6f/q2Lb/782N/+7o
        3f/t7vH/4NrR/9+TJv/rnjf/49rM6eHJmzXuq0Mn9LJN4fa+Y//4y3z/+dSN//ramf/636T/++Os//rl
        tP/89+r////////////////////////////6+vn/2tnW/8/Ozv/v7u3/+/nz/+Hbzv/h4eH/5+bm/+rG
        g//0tkH/8MVx/+zcvf/stFP/8JAA/+q0bf/m3Mrh47FUJuepSRTztFLL98Bm//jOgP/515L/+92e//vi
        qf/75rL//Om8//335/////////////////////////////7+/f/08ej/9/b1////////////6+fh/9/d
        2//l4tz/8cqD//W6Tv/zsDD/8aoZ//KcAf/xjwD/7Lt5/+fe0MrgoT8UzpU9AvO2V6D3wGf/+M6B//nZ
        lf/736L/++Wv//zpuv/87MD/+/LY/////v/////////////////////////////////9+e///vz4////
        ///18ev/597M/+3TpP/1yHT/9b9c//SyOP/zpgn/8pwA//CPAP/qvIH/5+HXoMRVAAL4vGAA8bZcYffA
        Z/34zoD/+tmV//vhpv/857X//Ou9//vtwv/58tv////////////////////////////9+/P//fPa//rq
        xv/8+PD////////9+v/87tP/+NCJ//fGcf/2v17/9bZE//OnEv/ymwD/7ZIQ/+vUtv3o4NFh7ezrAO+3
        YADutl4i9b9n2/jMe//62ZP/++Ko//zotv/87L7//O/E//nz3f////////////////////////////jz
        5v/y473/9eW9//n17f/47NT/++O1//jVkf/2zH//98Zx//W+Xf/1tUX/9Kkc//CZBP/otGz/7OHU3OjZ
        viLn1rkA5LFiAGUvDQDyvmiH98h1//nWjv/74qf//Oi0//vru//468H/+PTm//////////////////7+
        /v/+/fz//fz6//Tw5//w4sH/9fDk//Xp0P/21pn/79am//HUn//2xG7/9b1a//W0Q//0qBj/76Ii/+/Y
        t//s3ciJtHUAAePDkwAAAAAA775rAO27aSb1xnLX+dKF//vgof/65rH/8ebG//Lt2//9/Pv/////////
        /v/7+vb//Pv5//f06f/y7Nz/9vLo//Xv4v/68Nv/+OO3//Let//7+fb/+N+1//bBZ//1ulX/9bE9/+2o
        Kv/qtWH/7Ldq1+e1aibpvHkAAAAAAAAAAADYr2gA/+SEAPHCcGD3zXz1+9qW//vjqf/88NL//v79////
        ///+/ff//fbc//fw2P/07+L/9OzV//Lp0v/18ef/9erR//Hds//w3rr/+fbv///////34Lr/8cJ0//O5
        WP/wsUf/68yb//PjzvXpr19g////ANuDAAAAAAAAAAAAAAAAAADpvnAA4rdrB/PHdor504j8+96c//vl
        rv/679T//vz0//zz1v/87sH//O7D//rtx//768D/+enB//nx4P/27tv/+PDh//38/P/////////+//rg
        tP/2xnX/9LZQ/+2uSP/y2rX89u3gi96mTwfnvn8AAAAAAAAAAAAAAAAAAAAAAAAAAADwxHUA7L9wD/bM
        fpf31Y/78t2t//Lo0P/46L7//Oq5//zruv/86rr//Om4//zntf/85bH//OSw//vhrf/74rH//vbn///8
        9//75Lz/98Jr//SySf/tuWT/7M6j+/Tm05f16twP9OraAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AADtxXkA679uDvHQjoP24rrx/fjw//Xnxf/64qb//OWt//zmr//85a///OOs//vhqP/63qH/+tqZ//nV
        j//51JH/99OV//TAav/ytVT/7MF9/+/dw/Hx4tGD8d3EDvPjzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAADvxnYA5bpqBfPOhlL65LrK+fHg/PHdsv/32pr/+t2d//venv/63Jz/+tqZ//nX
        k//50ov/+MyA//fFcf/yw3f/77pq/+/Llv348efL9+3iU+nNpgXw38cAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXt38A///cAO/MiBn34rlu9ufLxe/bs/Lv0Zf+88+K//XO
        hv/1zIL/9sl7//bEc//zvmv/8Lln/u23afLru3fF8t3Dbvfs3hn///8A4bV/AAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZIgAHIAAADyz48U89yzS+7Y
        s4rr0aS87NCh2e3QouTtx4zk7cF/2evDib3ryZqL68+qS+7eyBT///8A9v3+AAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA//AQ//+AAI/+AAAH/AAAB/gAAAfwAAAB8AAAAeAAAADAAAAAwAAAAIAA
        AAGAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAGAAAABwAAAA+AA
        AAfgAAAH8AAAD/gAAB/8AAA//wAA//+AAf8=
</value>
  </data>
</root>
CC/ServiceClient/ServiceSection.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ServiceClient
{
    public sealed class ServiceSection : ConfigurationSection
    {
        private static readonly ConfigurationProperty s_property = new ConfigurationProperty(string.Empty, typeof(TheKeyValueCollection), null,
                                       ConfigurationPropertyOptions.IsDefaultCollection);
        [ConfigurationProperty("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
        public TheKeyValueCollection KeyValues
        {
            get
            {
                return (TheKeyValueCollection)base[s_property];
            }
        }
        public static ServiceSection GetConfig()
        {
            ServiceSection configSection = (ServiceSection)ConfigurationManager.GetSection("ServiceSection");
            if (configSection == null)
                throw new ConfigurationErrorsException("Section [ServiceSection] is not found.");
            return configSection;
        }
        public static ServiceSection GetConfig(string configPath)
        {
            var fileMap = new ExeConfigurationFileMap() { ExeConfigFilename = configPath };
            var config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
            ServiceSection configSection = (ServiceSection)config.GetSection("ServiceSection");
            if (configSection == null)
                throw new ConfigurationErrorsException("Section [ServiceSection] is not found.");
            return configSection;
        }
        /// <summary>
        /// èŽ·å–æŒ‡å®šçš„é…ç½®å¯¹è±¡
        /// </summary>
        /// <param name="keyName">配置名称</param>
        /// <returns></returns>
        public static TheKeyValue GetTheKeyValueCollection(string keyName)
        {
            ServiceSection configSection = (ServiceSection)ConfigurationManager.GetSection("ServiceSection");
            if (configSection == null)
                throw new ConfigurationErrorsException("Section [ServiceSection] is not found.");
            foreach (TheKeyValue item in configSection.KeyValues)
            {
                if (item.Name == keyName)
                    return item;
            }
            return null;
        }
    }
}
CC/ServiceClient/Windows.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,222 @@
using System;
using System.Collections;
using System.ServiceProcess;
using System.Windows.Forms;
using System.Configuration.Install;
using System.Diagnostics;
namespace ServiceClient
{
    class Windows
    {
        #region æ£€æŸ¥æœåŠ¡å­˜åœ¨çš„å­˜åœ¨æ€§
        /// <summary>
        /// æ£€æŸ¥æœåŠ¡å­˜åœ¨çš„å­˜åœ¨æ€§
        /// </summary>
        /// <param name=" NameService ">服务名</param>
        /// <returns>存在返回 true,否则返回 false;</returns>
        public static bool isServiceIsExisted(string NameService)
        {
            ServiceController[] services = ServiceController.GetServices();
            foreach (ServiceController s in services)
            {
                if (s.ServiceName.ToLower() == NameService.ToLower())
                {
                    return true;
                }
            }
            return false;
        }
        #endregion
        #region å®‰è£…Windows服务
        /// <summary>
        /// å®‰è£…Windows服务
        /// </summary>
        /// <param name="stateSaver">集合,当传递给 Install æ–¹æ³•时,stateSaver å‚数指定的 IDictionary åº”为空。</param>
        /// <param name="filepath">程序文件路径</param>
        public static bool InstallmyService(IDictionary stateSaver, string filepath)
        {
            try
            {
                if (filepath == "")
                {
                    return false;
                }
                AssemblyInstaller AssemblyInstaller1 = new AssemblyInstaller();
                AssemblyInstaller1.UseNewContext = true;
                AssemblyInstaller1.Path = filepath;
                stateSaver.Clear();
                AssemblyInstaller1.Install(stateSaver);
                AssemblyInstaller1.Commit(stateSaver);
                AssemblyInstaller1.Dispose();
                return true;
            }
            catch
            {
                throw;
            }
        }
        #endregion
        #region å¸è½½Windows服务
        /// <summary>
        /// å¸è½½Windows服务
        /// </summary>
        /// <param name="filepath">程序文件路径</param>
        public static bool UnInstallmyService(IDictionary stateSaver, string filepath)
        {
            try
            {
                if (filepath == "")
                {
                    return false;
                }
                AssemblyInstaller AssemblyInstaller1 = new AssemblyInstaller();
                AssemblyInstaller1.UseNewContext = true;
                AssemblyInstaller1.Path = filepath;
                AssemblyInstaller1.Uninstall(stateSaver);
                AssemblyInstaller1.Dispose();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        #endregion
        #region æ£€æŸ¥Windows服务是否在运行
        /// <summary>
        /// æ£€æŸ¥Windows服务是否在运行
        /// </summary>
        /// <param name="name">程序的服务名</param>
        public static bool IsRunning(string name)
        {
            bool IsRun = false;
            try
            {
                if (!isServiceIsExisted(name))
                {
                    return false;
                }
                ServiceController sc = new ServiceController(name);
                if (sc.Status == ServiceControllerStatus.StartPending ||
                    sc.Status == ServiceControllerStatus.Running)
                {
                    IsRun = true;
                }
                sc.Close();
            }
            catch
            {
                IsRun = false;
            }
            return IsRun;
        }
        #endregion
        #region å¯åЍWindows服务
        /// <summary>
        /// å¯åЍWindows服务
        /// </summary>
        /// <param name="name">程序的服务名</param>
        /// <returns>启动成功返回 true,否则返回 false;</returns>
        public static bool StarmyService(string name)
        {
            ServiceController sc = new ServiceController(name);
            if (sc.Status == ServiceControllerStatus.Stopped || sc.Status == ServiceControllerStatus.StopPending)
            {
                sc.Start();
                //sc.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 3, 0));//等待3min
            }
            else
            {
            }
            sc.Close();
            return true;
        }
        #endregion
        #region åœæ­¢Windows服务
        /// <summary>
        /// åœæ­¢Windows服务
        /// </summary>
        /// <param name="name">程序的服务名</param>
        /// <returns>停止成功返回 true,否则返回 false;</returns>
        public static bool StopmyService(string name)
        {
            ServiceController sc = new ServiceController(name);
            if (sc.Status == ServiceControllerStatus.Running ||
                sc.Status == ServiceControllerStatus.StartPending)
            {
                try
                {
                    sc.Stop();
                    sc.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 10));
                }
                catch (Exception exp)
                {
                    MessageBox.Show(exp.Message.ToString());
                }
            }
            else
            {
            }
            sc.Close();
            return true;
        }
        #endregion
        #region é‡å¯Windows服务
        /// <summary>
        /// é‡å¯Windows服务
        /// </summary>
        /// <param name="name">程序的服务名</param>
        /// <returns>重启成功返回 true,否则返回 false;</returns>
        public static bool RefreshmyService(string name)
        {
            return StopService(name) && StarmyService(name);
        }
        #endregion
        #region åœæ­¢æœåŠ¡ å‘½ä»¤å¼ºåˆ¶åœæ­¢
        /// <summary>
        ///  åœæ­¢æœåŠ¡
        /// Author:SunZhiXiang
        /// Time:2015-04-27 02:49:08
        /// </summary>
        /// <param name="name">The name.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public static bool StopService(string name)
        {
            try
            {
                while (true)
                {
                    if (Windows.IsRunning(name))//检查服务是否运行
                    {
                        //关闭服务
                        ProcessStartInfo psi = new ProcessStartInfo(@"cmd.exe", "/c  sc stop " + name + "");
                        psi.WindowStyle = ProcessWindowStyle.Hidden;
                        Process process = Process.Start(psi);
                    }
                    else
                    {
                        break;
                    }
                }
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        #endregion
    }
}
CC/Services/DeleteTaskService/Program.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
using System.ServiceProcess;
namespace iWareDeleteTaskService
{
    static class Program
    {
        /// <summary>
        /// åº”用程序的主入口点。
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
                new iWareDeleteTaskService()
            };
            ServiceBase.Run(ServicesToRun);
        }
    }
}
CC/Services/DeleteTaskService/ProjectInstaller.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
namespace iWareDeleteTaskService
{
    partial class ProjectInstaller
    {
        /// <summary>
        /// å¿…需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// æ¸…理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region ç»„件设计器生成的代码
        /// <summary>
        /// è®¾è®¡å™¨æ”¯æŒæ‰€éœ€çš„æ–¹æ³• - ä¸è¦
        /// ä½¿ç”¨ä»£ç ç¼–辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
            this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
            //
            // serviceProcessInstaller1
            //
            this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
            this.serviceProcessInstaller1.Password = null;
            this.serviceProcessInstaller1.Username = null;
            //
            // serviceInstaller1
            //
            this.serviceInstaller1.ServiceName = "iWareDeleteTaskService";
            this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
            this.serviceInstaller1.AfterInstall += new System.Configuration.Install.InstallEventHandler(this.serviceInstaller1_AfterInstall);
            //
            // ProjectInstaller
            //
            this.Installers.AddRange(new System.Configuration.Install.Installer[] {
            this.serviceProcessInstaller1,
            this.serviceInstaller1});
        }
        #endregion
        private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
        private System.ServiceProcess.ServiceInstaller serviceInstaller1;
    }
}
CC/Services/DeleteTaskService/ProjectInstaller.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using System.ComponentModel;
namespace iWareDeleteTaskService
{
    [RunInstaller(true)]
    public partial class ProjectInstaller : System.Configuration.Install.Installer
    {
        public ProjectInstaller()
        {
            InitializeComponent();
        }
        private void serviceInstaller1_AfterInstall(object sender, System.Configuration.Install.InstallEventArgs e)
        {
        }
    }
}
CC/Services/DeleteTaskService/ProjectInstaller.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="serviceProcessInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 59</value>
  </metadata>
  <metadata name="serviceInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>208, 17</value>
  </metadata>
  <metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
</root>
CC/Services/DeleteTaskService/Properties/AssemblyInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.InteropServices;
// æœ‰å…³ç¨‹åºé›†çš„常规信息通过以下
// ç‰¹æ€§é›†æŽ§åˆ¶ã€‚更改这些特性值可修改
// ä¸Žç¨‹åºé›†å…³è”的信息。
[assembly: AssemblyTitle("InMateRoomService")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("InMateRoomService")]
[assembly: AssemblyCopyright("Copyright Â©  2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// å°† ComVisible è®¾ç½®ä¸º false ä½¿æ­¤ç¨‹åºé›†ä¸­çš„类型
// å¯¹ COM ç»„件不可见。如果需要从 COM è®¿é—®æ­¤ç¨‹åºé›†ä¸­çš„类型,
// åˆ™å°†è¯¥ç±»åž‹ä¸Šçš„ ComVisible ç‰¹æ€§è®¾ç½®ä¸º true。
[assembly: ComVisible(false)]
// å¦‚果此项目向 COM å…¬å¼€ï¼Œåˆ™ä¸‹åˆ— GUID ç”¨äºŽç±»åž‹åº“çš„ ID
[assembly: Guid("89d63e8f-7b96-4482-9556-8c033cc21d02")]
// ç¨‹åºé›†çš„版本信息由下面四个值组成:
//
//      ä¸»ç‰ˆæœ¬
//      æ¬¡ç‰ˆæœ¬
//      å†…部版本号
//      ä¿®è®¢å·
//
// å¯ä»¥æŒ‡å®šæ‰€æœ‰è¿™äº›å€¼ï¼Œä¹Ÿå¯ä»¥ä½¿ç”¨â€œå†…部版本号”和“修订号”的默认值,
// æ–¹æ³•是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
CC/Services/DeleteTaskService/app.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <appSettings>
    <!--默认的任务删除服务时间间隔(单位:小时)-->
    <add key="DefaultDeleteTaskTime" value="24" />
  </appSettings>
  <connectionStrings>
    <add name="Edm" connectionString="data source=192.168.1.29;initial catalog=鲁丽木业202008;persist security info=True;user id=sa;password=123abccba;MultipleActiveResultSets=True;App=EntityFramework"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net1213">
        <arg key="configType" value="INLINE" />
      </factoryAdapter>
    </logging>
  </common>
  <log4net>
    <!--错误日志配置-->
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender" level="ERROR">
      <param name="File" value="d:\\Log\\iWareDeleteTaskService\\Error\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="MaxFileSize" value="10240" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd.LOG" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 å¸¸ ç±»ï¼š%c [%x] %n%m %n " />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="ERROR" />
      </filter>
    </appender>
    <!--消息日志配置-->
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender" level="INFO">
      <param name="File" value="d:\\Log\\iWareDeleteTaskService\\Info\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="MaxFileSize" value="10240" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd.LOG" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n消息时间:%d [%t] %n消息级别:%-5p %n消 æ¯ ç±»ï¼š%c [%x] %n%m %n " />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="INFO" />
      </filter>
    </appender>
    <root>
      <appender-ref ref="InfoAppender" />
      <appender-ref ref="ErrorAppender" />
    </root>
    <logger name="logerror">
      <level value="ALL" />
      <appender-ref ref="ErrorAppender" />
    </logger>
    <logger name="loginfo">
      <level value="ALL" />
      <appender-ref ref="InfoAppender" />
    </logger>
  </log4net>
  <!--
    We use quartz.config for this server, you can always use configuration section if you want to.
    Configuration section has precedence here.
  -->
  <!--
  <quartz >
  </quartz>
  -->
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.2.11.0" newVersion="1.2.11.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>
</configuration>
CC/Services/DeleteTaskService/iWareDeleteTaskService.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
namespace iWareDeleteTaskService
{
    partial class iWareDeleteTaskService
    {
        /// <summary>
        /// å¿…需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// æ¸…理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region ç»„件设计器生成的代码
        /// <summary>
        /// è®¾è®¡å™¨æ”¯æŒæ‰€éœ€çš„æ–¹æ³• - ä¸è¦
        /// ä½¿ç”¨ä»£ç ç¼–辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            //
            // QueryOrderService
            //
            this.ServiceName = "getERPorderService";
        }
        #endregion
    }
}
CC/Services/DeleteTaskService/iWareDeleteTaskService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
using Common.Logging;
using System;
using System.ServiceProcess;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using Newtonsoft.Json;
using iWareCommon.Utils;
using log4net;
using iWareSql.DataAccess;
using iWareSql.Orm;
namespace iWareDeleteTaskService
{
    /// <summary>
    /// ä»»åŠ¡åˆ é™¤æœåŠ¡
    /// </summary>
    public partial class iWareDeleteTaskService : ServiceBase
    {
        private static readonly string defaultTime = ConfigHelper.GetConfigString("DefaultDeleteTaskTime");
        static CancellationTokenSource cancelTokenSource = new CancellationTokenSource();
        private readonly Common.Logging.ILog logger;
        public iWareDeleteTaskService()
        {
            InitializeComponent();
            logger = Common.Logging.LogManager.GetLogger(GetType());
            Task.Factory.StartNew(PastDueMaterialThread, cancelTokenSource.Token);
        }
        protected override void OnStart(string[] args)
        {
            logger.Info("任务删除服务成功启动");
        }
        protected override void OnStop()
        {
            cancelTokenSource.Cancel();
            logger.Info("任务删除服务成功终止");
        }
        protected override void OnPause()
        {
        }
        protected override void OnContinue()
        {
        }
        private void PastDueMaterialThread()
        {
            //判断是否取消任务
            while (!cancelTokenSource.IsCancellationRequested)
            {
                try
                {
                    logger.Info("一次任务删除处理开始");
                    LogTextHelper.BatchDeleteLog();//删除文本日志
                    logger.Info("一次任务删除处理结束");
                }
                catch (Exception e)
                {
                    logger.Error("一次任务删除处理错误:" + e.Message, e);
                }
                //Thread.Sleep(5000);//休眠
                Thread.Sleep(Convert.ToInt32(defaultTime) * 60 * 60 * 1000);//休眠一天
                //*/
            }
        }
    }
}
CC/Services/DeleteTaskService/iWareDeleteTaskService.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{9CB520A4-F970-435C-B232-DB6363559D4C}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>iWareDeleteTaskService</RootNamespace>
    <AssemblyName>iWareDeleteTaskService</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
    <FileAlignment>512</FileAlignment>
    <PublishUrl>发布\</PublishUrl>
    <Install>true</Install>
    <InstallFrom>Disk</InstallFrom>
    <UpdateEnabled>false</UpdateEnabled>
    <UpdateMode>Foreground</UpdateMode>
    <UpdateInterval>7</UpdateInterval>
    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
    <UpdatePeriodically>false</UpdatePeriodically>
    <UpdateRequired>false</UpdateRequired>
    <MapFileExtensions>true</MapFileExtensions>
    <ApplicationRevision>0</ApplicationRevision>
    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
    <IsWebBootstrapper>false</IsWebBootstrapper>
    <UseApplicationTrust>false</UseApplicationTrust>
    <BootstrapperEnabled>true</BootstrapperEnabled>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <PlatformTarget>x86</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="Common.Logging">
      <HintPath>..\..\iWareCommon\DLL\Common.Logging.dll</HintPath>
    </Reference>
    <Reference Include="Common.Logging.Core">
      <HintPath>..\..\iWareCommon\DLL\Common.Logging.Core.dll</HintPath>
    </Reference>
    <Reference Include="Common.Logging.Log4Net1213">
      <HintPath>..\..\iWareCommon\DLL\Common.Logging.Log4Net1213.dll</HintPath>
    </Reference>
    <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\iWareCommon\DLL\EntityFramework.dll</HintPath>
    </Reference>
    <Reference Include="EntityFramework.SqlServer">
      <HintPath>..\..\iWareCommon\DLL\EntityFramework.SqlServer.dll</HintPath>
    </Reference>
    <Reference Include="log4net">
      <HintPath>..\..\iWareCommon\DLL\log4net.dll</HintPath>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\Lib\wip\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Configuration" />
    <Reference Include="System.Configuration.Install" />
    <Reference Include="System.Core" />
    <Reference Include="System.Management" />
    <Reference Include="System.Web.Extensions" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.ServiceProcess" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="ProjectInstaller.cs">
      <SubType>Component</SubType>
    </Compile>
    <Compile Include="ProjectInstaller.Designer.cs">
      <DependentUpon>ProjectInstaller.cs</DependentUpon>
    </Compile>
    <Compile Include="iWareDeleteTaskService.cs">
      <SubType>Component</SubType>
    </Compile>
    <Compile Include="iWareDeleteTaskService.Designer.cs">
      <DependentUpon>iWareDeleteTaskService.cs</DependentUpon>
    </Compile>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Include="ProjectInstaller.resx">
      <DependentUpon>ProjectInstaller.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="iWareDeleteTaskService.resx">
      <DependentUpon>iWareDeleteTaskService.cs</DependentUpon>
    </EmbeddedResource>
  </ItemGroup>
  <ItemGroup>
    <None Include="app.config">
      <SubType>Designer</SubType>
    </None>
    <None Include="packages.config" />
  </ItemGroup>
  <ItemGroup>
    <BootstrapperPackage Include=".NETFramework,Version=v4.5">
      <Visible>False</Visible>
      <ProductName>Microsoft .NET Framework 4.5 %28x86 å’Œ x64%29</ProductName>
      <Install>true</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\iWareCommon\iWareCommon.csproj">
      <Project>{3583fcf0-92c7-406c-ad78-9fb7c11293cf}</Project>
      <Name>iWareCommon</Name>
    </ProjectReference>
    <ProjectReference Include="..\..\iWareSql\iWareSql.csproj">
      <Project>{d0b38cd8-60ac-472c-8031-a03cf3c2e8a5}</Project>
      <Name>iWareSql</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>
CC/Services/DeleteTaskService/iWareDeleteTaskService.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
</root>
CC/Services/DeleteTaskService/packages.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Common.Logging" version="3.3.1" targetFramework="net45" />
  <package id="Common.Logging.Core" version="3.3.1" targetFramework="net45" />
  <package id="Common.Logging.Log4Net1213" version="3.3.1" targetFramework="net45" />
  <package id="log4net" version="2.0.3" targetFramework="net45" />
</packages>
CC/Services/PastDueService/Program.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
using System.ServiceProcess;
namespace iWarePastDueService
{
    static class Program
    {
        /// <summary>
        /// åº”用程序的主入口点。
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
                new iWarePastDueService()
            };
            ServiceBase.Run(ServicesToRun);
        }
    }
}
CC/Services/PastDueService/ProjectInstaller.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
namespace iWarePastDueService
{
    partial class ProjectInstaller
    {
        /// <summary>
        /// å¿…需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// æ¸…理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region ç»„件设计器生成的代码
        /// <summary>
        /// è®¾è®¡å™¨æ”¯æŒæ‰€éœ€çš„æ–¹æ³• - ä¸è¦
        /// ä½¿ç”¨ä»£ç ç¼–辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
            this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
            //
            // serviceProcessInstaller1
            //
            this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
            this.serviceProcessInstaller1.Password = null;
            this.serviceProcessInstaller1.Username = null;
            //
            // serviceInstaller1
            //
            this.serviceInstaller1.ServiceName = "iWarePastDueService";
            this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
            this.serviceInstaller1.AfterInstall += new System.Configuration.Install.InstallEventHandler(this.serviceInstaller1_AfterInstall);
            //
            // ProjectInstaller
            //
            this.Installers.AddRange(new System.Configuration.Install.Installer[] {
            this.serviceProcessInstaller1,
            this.serviceInstaller1});
        }
        #endregion
        private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
        private System.ServiceProcess.ServiceInstaller serviceInstaller1;
    }
}
CC/Services/PastDueService/ProjectInstaller.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using System.ComponentModel;
namespace iWarePastDueService
{
    [RunInstaller(true)]
    public partial class ProjectInstaller : System.Configuration.Install.Installer
    {
        public ProjectInstaller()
        {
            InitializeComponent();
        }
        private void serviceInstaller1_AfterInstall(object sender, System.Configuration.Install.InstallEventArgs e)
        {
        }
    }
}
CC/Services/PastDueService/ProjectInstaller.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="serviceProcessInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 59</value>
  </metadata>
  <metadata name="serviceInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>208, 17</value>
  </metadata>
  <metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
</root>
CC/Services/PastDueService/Properties/AssemblyInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.InteropServices;
// æœ‰å…³ç¨‹åºé›†çš„常规信息通过以下
// ç‰¹æ€§é›†æŽ§åˆ¶ã€‚更改这些特性值可修改
// ä¸Žç¨‹åºé›†å…³è”的信息。
[assembly: AssemblyTitle("InMateRoomService")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("InMateRoomService")]
[assembly: AssemblyCopyright("Copyright Â©  2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// å°† ComVisible è®¾ç½®ä¸º false ä½¿æ­¤ç¨‹åºé›†ä¸­çš„类型
// å¯¹ COM ç»„件不可见。如果需要从 COM è®¿é—®æ­¤ç¨‹åºé›†ä¸­çš„类型,
// åˆ™å°†è¯¥ç±»åž‹ä¸Šçš„ ComVisible ç‰¹æ€§è®¾ç½®ä¸º true。
[assembly: ComVisible(false)]
// å¦‚果此项目向 COM å…¬å¼€ï¼Œåˆ™ä¸‹åˆ— GUID ç”¨äºŽç±»åž‹åº“çš„ ID
[assembly: Guid("89d63e8f-7b96-4482-9556-8c033cc21d02")]
// ç¨‹åºé›†çš„版本信息由下面四个值组成:
//
//      ä¸»ç‰ˆæœ¬
//      æ¬¡ç‰ˆæœ¬
//      å†…部版本号
//      ä¿®è®¢å·
//
// å¯ä»¥æŒ‡å®šæ‰€æœ‰è¿™äº›å€¼ï¼Œä¹Ÿå¯ä»¥ä½¿ç”¨â€œå†…部版本号”和“修订号”的默认值,
// æ–¹æ³•是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
CC/Services/PastDueService/app.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <appSettings>
    <!--默认的过期料服务时间间隔(单位:小时)-->
    <add key="DefaultPastDueTime" value="24" />
  </appSettings>
  <connectionStrings>
    <add name="Edm" connectionString="data source=192.168.1.29;initial catalog=鲁丽木业202008;persist security info=True;user id=sa;password=123abccba;MultipleActiveResultSets=True;App=EntityFramework"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net1213">
        <arg key="configType" value="INLINE" />
      </factoryAdapter>
    </logging>
  </common>
  <log4net>
    <!--错误日志配置-->
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender" level="ERROR">
      <param name="File" value="d:\\Log\\iWarePastDueService\\Error\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="MaxFileSize" value="10240" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd.LOG" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 å¸¸ ç±»ï¼š%c [%x] %n%m %n " />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="ERROR" />
      </filter>
    </appender>
    <!--消息日志配置-->
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender" level="INFO">
      <param name="File" value="d:\\Log\\iWarePastDueService\\Info\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="MaxFileSize" value="10240" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd.LOG" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n消息时间:%d [%t] %n消息级别:%-5p %n消 æ¯ ç±»ï¼š%c [%x] %n%m %n " />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="INFO" />
      </filter>
    </appender>
    <root>
      <appender-ref ref="InfoAppender" />
      <appender-ref ref="ErrorAppender" />
    </root>
    <logger name="logerror">
      <level value="ALL" />
      <appender-ref ref="ErrorAppender" />
    </logger>
    <logger name="loginfo">
      <level value="ALL" />
      <appender-ref ref="InfoAppender" />
    </logger>
  </log4net>
  <!--
    We use quartz.config for this server, you can always use configuration section if you want to.
    Configuration section has precedence here.
  -->
  <!--
  <quartz >
  </quartz>
  -->
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.2.11.0" newVersion="1.2.11.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>
</configuration>
CC/Services/PastDueService/iWarePastDueService.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
namespace iWarePastDueService
{
    partial class iWarePastDueService
    {
        /// <summary>
        /// å¿…需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// æ¸…理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region ç»„件设计器生成的代码
        /// <summary>
        /// è®¾è®¡å™¨æ”¯æŒæ‰€éœ€çš„æ–¹æ³• - ä¸è¦
        /// ä½¿ç”¨ä»£ç ç¼–辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            //
            // QueryOrderService
            //
            this.ServiceName = "getERPorderService";
        }
        #endregion
    }
}
CC/Services/PastDueService/iWarePastDueService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
using Common.Logging;
using System;
using System.ServiceProcess;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using Newtonsoft.Json;
using iWareCommon.Utils;
using log4net;
using iWareSql.DataAccess;
namespace iWarePastDueService
{
    /// <summary>
    /// è¿‡æœŸæ–™æœåŠ¡
    /// </summary>
    public partial class iWarePastDueService : ServiceBase
    {
        private static readonly string defaultTime = ConfigHelper.GetConfigString("DefaultPastDueTime");
        static CancellationTokenSource cancelTokenSource = new CancellationTokenSource();
        private readonly Common.Logging.ILog logger;
        public iWarePastDueService()
        {
            InitializeComponent();
            logger = Common.Logging.LogManager.GetLogger(GetType());
            Task.Factory.StartNew(PastDueMaterialThread, cancelTokenSource.Token);
        }
        protected override void OnStart(string[] args)
        {
            logger.Info("过期料服务成功启动");
        }
        protected override void OnStop()
        {
            cancelTokenSource.Cancel();
            logger.Info("过期料服务成功终止");
        }
        protected override void OnPause()
        {
        }
        protected override void OnContinue()
        {
        }
        private void PastDueMaterialThread()
        {
            //判断是否取消任务
            while (!cancelTokenSource.IsCancellationRequested)
            {
                try
                {
                    logger.Info("一次过期料处理开始");
                    logger.Info("一次过期料处理结束");
                }
                catch (Exception e)
                {
                    logger.Error("一次过期料处理错误:" + e.Message, e);
                }
                //Thread.Sleep(5000);//休眠
                Thread.Sleep(Convert.ToInt32(defaultTime) * 60 * 60 * 1000);//休眠一天
                //*/
            }
        }
    }
}
CC/Services/PastDueService/iWarePastDueService.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{75ED6ACB-1EEB-499A-B375-EC8A404CF415}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>iWarePastDueService</RootNamespace>
    <AssemblyName>iWarePastDueService</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
    <FileAlignment>512</FileAlignment>
    <PublishUrl>发布\</PublishUrl>
    <Install>true</Install>
    <InstallFrom>Disk</InstallFrom>
    <UpdateEnabled>false</UpdateEnabled>
    <UpdateMode>Foreground</UpdateMode>
    <UpdateInterval>7</UpdateInterval>
    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
    <UpdatePeriodically>false</UpdatePeriodically>
    <UpdateRequired>false</UpdateRequired>
    <MapFileExtensions>true</MapFileExtensions>
    <ApplicationRevision>0</ApplicationRevision>
    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
    <IsWebBootstrapper>false</IsWebBootstrapper>
    <UseApplicationTrust>false</UseApplicationTrust>
    <BootstrapperEnabled>true</BootstrapperEnabled>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <PlatformTarget>x86</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="Common.Logging">
      <HintPath>..\..\iWareCommon\DLL\Common.Logging.dll</HintPath>
    </Reference>
    <Reference Include="Common.Logging.Core">
      <HintPath>..\..\iWareCommon\DLL\Common.Logging.Core.dll</HintPath>
    </Reference>
    <Reference Include="Common.Logging.Log4Net1213">
      <HintPath>..\..\iWareCommon\DLL\Common.Logging.Log4Net1213.dll</HintPath>
    </Reference>
    <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\iWareCommon\DLL\EntityFramework.dll</HintPath>
    </Reference>
    <Reference Include="EntityFramework.SqlServer">
      <HintPath>..\..\iWareCommon\DLL\EntityFramework.SqlServer.dll</HintPath>
    </Reference>
    <Reference Include="log4net">
      <HintPath>..\..\iWareCommon\DLL\log4net.dll</HintPath>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\Lib\wip\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Configuration" />
    <Reference Include="System.Configuration.Install" />
    <Reference Include="System.Core" />
    <Reference Include="System.Management" />
    <Reference Include="System.Web.Extensions" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.ServiceProcess" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="ProjectInstaller.cs">
      <SubType>Component</SubType>
    </Compile>
    <Compile Include="ProjectInstaller.Designer.cs">
      <DependentUpon>ProjectInstaller.cs</DependentUpon>
    </Compile>
    <Compile Include="iWarePastDueService.cs">
      <SubType>Component</SubType>
    </Compile>
    <Compile Include="iWarePastDueService.Designer.cs">
      <DependentUpon>iWarePastDueService.cs</DependentUpon>
    </Compile>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Include="ProjectInstaller.resx">
      <DependentUpon>ProjectInstaller.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="iWarePastDueService.resx">
      <DependentUpon>iWarePastDueService.cs</DependentUpon>
    </EmbeddedResource>
  </ItemGroup>
  <ItemGroup>
    <None Include="app.config">
      <SubType>Designer</SubType>
    </None>
    <None Include="packages.config" />
  </ItemGroup>
  <ItemGroup>
    <BootstrapperPackage Include=".NETFramework,Version=v4.5">
      <Visible>False</Visible>
      <ProductName>Microsoft .NET Framework 4.5 %28x86 å’Œ x64%29</ProductName>
      <Install>true</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\iWareCommon\iWareCommon.csproj">
      <Project>{3583fcf0-92c7-406c-ad78-9fb7c11293cf}</Project>
      <Name>iWareCommon</Name>
    </ProjectReference>
    <ProjectReference Include="..\..\iWareSql\iWareSql.csproj">
      <Project>{d0b38cd8-60ac-472c-8031-a03cf3c2e8a5}</Project>
      <Name>iWareSql</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>
CC/Services/PastDueService/iWarePastDueService.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
</root>
CC/Services/PastDueService/packages.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Common.Logging" version="3.3.1" targetFramework="net45" />
  <package id="Common.Logging.Core" version="3.3.1" targetFramework="net45" />
  <package id="Common.Logging.Log4Net1213" version="3.3.1" targetFramework="net45" />
  <package id="log4net" version="2.0.3" targetFramework="net45" />
</packages>
CC/iWareCC_ASRS/App - ±¾»ú.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <appSettings>
    <!-- æ˜¯å¦æ¨¡æ‹ŸPLC,发布一定是 FALSE -->
    <add key="IsSimulationPLC" value="true"/>
    <!-- æ˜¯å¦æ˜¯éšæœºå¯»æ‰¾åº“位,建议是false-->
    <add key="IsRandomFindPlace" value="false"/>
    <!-- è¥¿æ¸¯WMS的API-->
    <add key="XiGang_WMSApi" value="http://localhost:8084/api/"/>
    <!-- è¥¿æ¸¯WMS的发动机出库-->
    <add key="XiGang_WMSApi_OutStoreToMes" value="MES/OutStoreToMes"/>
    <!-- è¥¿æ¸¯WMS的组盘-->
    <add key="XiGang_WMSApi_SalverMaterialBind" value="Task_Main/SalverMaterialBind"/>
    <!-- è¥¿æ¸¯WMS的组盘下发-->
    <add key="XiGang_WMSApi_IssueInStoreTask" value="Task_Main/IssueInStoreTaskForCC"/>
    <!--AGV的主机host-->
    <add key="AgvHost" value="http://192.168.10.120:8088/"/>
    <!--AGV-获取机器人信息-->
    <add key="RobotsStatus" value="robotsStatus"/>
    <!-- æ˜¯å¦å¯ç”¨æ–°å…¥åº“口 -->
    <add key="IsEnableNewInStorePlace" value="false"/>
  </appSettings>
  <connectionStrings>
    <!--本地服务器-->
    <!--<add name="DbModel" connectionString="data source=localhost;initial catalog=XiGangWarehouse;persist security info=True;user id=sa;password=123abccba;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
    <!--云服务器-->
    <!--<add name="DbModel" connectionString="data source=120.53.244.200;initial catalog=XiGangWarehouse;persist security info=True;user id=xigang;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
    <!--shaocx本地2017-->
  <add name="DbModel" connectionString="data source=localhost;initial catalog=XiGangWarehouse;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
    <!--现场-->
    <!--<add name="DbModel" connectionString="data source=192.168.10.5;initial catalog=XiGangWarehouse;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service name="iWareCC.WCF.CCWcfService">
        <endpoint address="" binding="basicHttpBinding" contract="iWareCC.WCF.ICCWcfService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8734/Design_Time_Addresses/iWareCC.WCF/CCWcfService/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_ISrmService" />
        <binding name="BasicHttpBinding_IRgvService" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://192.168.10.5:8733/Design_Time_Addresses/iWareSda/SrmService/"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService"
        contract="SrmService.ISrmService" name="BasicHttpBinding_ISrmService" />
      <endpoint address="http://192.168.10.5:8733/Design_Time_Addresses/iWareSda/RgvService/"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRgvService"
        contract="RgvService.IRgvService" name="BasicHttpBinding_IRgvService" />
      <!-- <endpoint address="http://localhost:8733/Design_Time_Addresses/iWareSda/SrmService/"
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService"
       contract="SrmService.ISrmService" name="BasicHttpBinding_ISrmService" />
      <endpoint address="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRgvService"
        contract="RgvService.IRgvService" name="BasicHttpBinding_IRgvService" />-->
    </client>
  </system.serviceModel>
</configuration>
CC/iWareCC_ASRS/App - ÏÖ³¡.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <appSettings>
    <!-- æ˜¯å¦æ¨¡æ‹ŸPLC,发布一定是 FALSE -->
    <add key="IsSimulationPLC" value="true"/>
    <!-- æ˜¯å¦æ˜¯éšæœºå¯»æ‰¾åº“位,建议是false-->
    <add key="IsRandomFindPlace" value="false"/>
    <!-- è¥¿æ¸¯WMS的API-->
    <add key="XiGang_WMSApi" value="http://localhost:8084/api/"/>
    <!-- è¥¿æ¸¯WMS的发动机出库-->
    <add key="XiGang_WMSApi_OutStoreToMes" value="MES/OutStoreToMes"/>
    <!-- è¥¿æ¸¯WMS的组盘-->
    <add key="XiGang_WMSApi_SalverMaterialBind" value="Task_Main/SalverMaterialBind"/>
    <!-- è¥¿æ¸¯WMS的组盘下发-->
    <add key="XiGang_WMSApi_IssueInStoreTask" value="Task_Main/IssueInStoreTaskForCC"/>
    <!--AGV的主机host-->
    <add key="AgvHost" value="http://192.168.10.120:8088/"/>
    <!--AGV-获取机器人信息-->
    <add key="RobotsStatus" value="robotsStatus"/>
    <!-- æ˜¯å¦å¯ç”¨æ–°å…¥åº“口 -->
    <add key="IsEnableNewInStorePlace" value="false"/>
  </appSettings>
  <connectionStrings>
    <!--本地服务器-->
    <!--<add name="DbModel" connectionString="data source=localhost;initial catalog=XiGangWarehouse;persist security info=True;user id=sa;password=123abccba;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
    <!--云服务器-->
    <!--<add name="DbModel" connectionString="data source=120.53.244.200;initial catalog=XiGangWarehouse;persist security info=True;user id=xigang;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
    <!--shaocx本地2017-->
    <add name="DbModel" connectionString="data source=LAPTOP-9337IBI9\MSSQLSERVER2017;initial catalog=XiGangWarehouse;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
    <!--现场-->
    <!--<add name="DbModel" connectionString="data source=192.168.10.5;initial catalog=XiGangWarehouse;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service name="iWareCC.WCF.CCWcfService">
        <endpoint address="" binding="basicHttpBinding" contract="iWareCC.WCF.ICCWcfService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8734/Design_Time_Addresses/iWareCC.WCF/CCWcfService/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_ISrmService" />
        <binding name="BasicHttpBinding_IRgvService" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://192.168.10.5:8733/Design_Time_Addresses/iWareSda/SrmService/"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService"
        contract="SrmService.ISrmService" name="BasicHttpBinding_ISrmService" />
      <endpoint address="http://192.168.10.5:8733/Design_Time_Addresses/iWareSda/RgvService/"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRgvService"
        contract="RgvService.IRgvService" name="BasicHttpBinding_IRgvService" />
      <!-- <endpoint address="http://localhost:8733/Design_Time_Addresses/iWareSda/SrmService/"
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService"
       contract="SrmService.ISrmService" name="BasicHttpBinding_ISrmService" />
      <endpoint address="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRgvService"
        contract="RgvService.IRgvService" name="BasicHttpBinding_IRgvService" />-->
    </client>
  </system.serviceModel>
</configuration>
CC/iWareCC_ASRS/App.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <appSettings>
    <!-- æ˜¯å¦æ¨¡æ‹ŸPLC,发布一定是 FALSE -->
    <add key="IsSimulationPLC" value="true"/>
    <!-- æ˜¯å¦æ˜¯éšæœºå¯»æ‰¾åº“位,建议是false-->
    <add key="IsRandomFindPlace" value="false"/>
    <!-- è¥¿æ¸¯WMS的API-->
    <add key="XiGang_WMSApi" value="http://localhost:8084/api/"/>
    <!-- è¥¿æ¸¯WMS的发动机出库-->
    <add key="XiGang_WMSApi_OutStoreToMes" value="MES/OutStoreToMes"/>
    <!-- è¥¿æ¸¯WMS的组盘-->
    <add key="XiGang_WMSApi_SalverMaterialBind" value="Task_Main/SalverMaterialBind"/>
    <!-- è¥¿æ¸¯WMS的组盘下发-->
    <add key="XiGang_WMSApi_IssueInStoreTask" value="Task_Main/IssueInStoreTaskForCC"/>
    <!--AGV的主机host-->
    <add key="AgvHost" value="http://192.168.10.120:8088/"/>
    <!--AGV-获取机器人信息-->
    <add key="RobotsStatus" value="robotsStatus"/>
    <!-- æ˜¯å¦å¯ç”¨æ–°å…¥åº“口 -->
    <add key="IsEnableNewInStorePlace" value="false"/>
  </appSettings>
  <connectionStrings>
    <!--本地服务器-->
    <!--<add name="DbModel" connectionString="data source=localhost;initial catalog=XiGangWarehouse;persist security info=True;user id=sa;password=123abccba;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
    <!--云服务器-->
    <!--<add name="DbModel" connectionString="data source=120.53.244.200;initial catalog=XiGangWarehouse;persist security info=True;user id=xigang;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
    <!--shaocx本地2017-->
    <add name="DbModel" connectionString="data source=localhost;initial catalog=XiGangWarehouse;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
    <!--现场-->
    <!--<add name="DbModel" connectionString="data source=192.168.10.5;initial catalog=XiGangWarehouse;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service name="iWareCC.WCF.CCWcfService">
        <endpoint address="" binding="basicHttpBinding" contract="iWareCC.WCF.ICCWcfService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8734/Design_Time_Addresses/iWareCC.WCF/CCWcfService/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_ISrmService" />
        <binding name="BasicHttpBinding_IRgvService" />
        <binding name="BasicHttpBinding_IRgvService1" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://192.168.10.5:8733/Design_Time_Addresses/iWareSda/SrmService/"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService"
        contract="SrmService.ISrmService" name="BasicHttpBinding_ISrmService" />
      <endpoint address="http://192.168.10.5:8733/Design_Time_Addresses/iWareSda/RgvService/"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRgvService"
        contract="RgvService.IRgvService" name="BasicHttpBinding_IRgvService" />
      <endpoint address="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRgvService1"
        contract="RgvService.IRgvService" name="BasicHttpBinding_IRgvService1" />
    </client>
  </system.serviceModel>
</configuration>
CC/iWareCC_ASRS/BLL/ConveyorBLL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
using iWareCC.RgvService;
using iWareCC.SrmService;
using iWareCommon;
using iWareCommon.Utils;
using iWareModel;
using iWareSql;
using iWareSql.DataAccess;
using iWareSql.Entity.ParamModel;
using iWareSql.Orm;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace iWareCC.BLL
{
    /// <summary>
    /// è¾“送线的业务处理类
    /// </summary>
    public class ConveyorBLL
    {
    }
}
CC/iWareCC_ASRS/BLL/MesBLL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
using iWareCommon;
using iWareCommon.Utils;
using iWareModel;
using iWareSql;
using iWareSql.DataAccess;
using iWareSql.Orm;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace iWareCC.BLL
{
    public class MesBLL
    {
        private static string _namespace = "iWareCC.BLL.MesBLL";
        /// <summary>
        /// åŒæ­¥åº“存发送给MES
        /// </summary>
        public static void SendSysnStockToMes()
        {
            //Task.Run(() =>
            //{
            //    #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
            //    IDictionary<string, object> logDict = new Dictionary<string, object>();
            //    UDT_SYS_ExceptionInfo exception = ExceptionHandels222.GetExceptionInfo<IDictionary<string, object>>(LogType.SrmTheadService, _namespace, "SendSysnStockToMes", logDict);
            //    #endregion
            //    try
            //    {
            //        //List<SyncStockToMesEntity> list = StockHandels.GetSyncStockToMesEntityList();
            //        ////发送给MES,现在还没做
            //        //using (var service = new MesWebService.MesWebServiceSoapClient())
            //        //{
            //        //    string result = service.SendSynchroMatPlaceToMes(JsonConvert.SerializeObject(list));
            //        //    ResEntity rs = JsonConvert.DeserializeObject<ResEntity>(result);
            //        //    //记录日志
            //        //    Log4NetHelper.WriteInfoLog(LogType.SendStockToMes, "入参:" + JsonConvert.SerializeObject(list) + ",返回:" + result);
            //        //    if (rs.resCode == "1")
            //        //    {//处理失败
            //        //        exception.exceptionMsg = "同步库存发送给MES,接口返回失败:" + result;
            //        //        ExceptionHandels222.InsertExceptionInfo(exception, true);
            //        //    }
            //        //}
            //    }
            //    catch (Exception ex)
            //    {
            //        ExceptionHandels222.GetExceptionInfoForError("同步库存发送给MES出现异常:" + ex.Message, ex, ref exception);
            //        ExceptionHandels222.InsertExceptionInfo(exception, true);
            //    }
            //});
        }
    }
}
CC/iWareCC_ASRS/BLL/RgvBLL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
using iWareCC.RgvService;
using iWareCommon;
using iWareCommon.Utils;
using iWareModel;
using iWareSql;
using iWareSql.DataAccess;
using iWareSql.Entity.ParamModel;
using iWareSql.Orm;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace iWareCC.BLL
{
    /// <summary>
    /// RGV的业务处理类
    /// </summary>
    public class RgvBLL
    {
        private static string _namespace = "iWareCC.BLL.RgvBLL";
        /// <summary>
        /// æ£€æµ‹RGV是否有心跳
        /// </summary>
        /// <param name="rgvService"></param>
        /// <returns></returns>
        public static bool IsRgvHandShare(RgvServiceClient rgvService)
        {
            //检测是否有心跳
            var rgvInfo = rgvService.GetRgvInfo((int)EDevice.RGV);
            var oldHandShake = rgvInfo.R_HandShake;
            Thread.Sleep(2000);
            rgvInfo = rgvService.GetRgvInfo((int)EDevice.RGV);//重新获取对象
            var newHandShare = rgvInfo.R_HandShake;
            if (oldHandShake != newHandShare)
            {
                //有心跳
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
CC/iWareCC_ASRS/BLL/SalverMaterialBindBLL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,297 @@
using iWareCC.WCF;
using iWareCommon.Utils;
using iWareModel;
using iWareModel.Entity;
using iWareSql.DataAccess;
using iWareSql.DBModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using XiGang.Core.Model;
using XiGang.Core.Model.PostParamModels;
using XiGang.Core.Model.PostParamModels.Task;
using static System.Windows.Forms.AxHost;
namespace iWareCC.BLL
{
    /// <summary>
    /// ã€ç»„盘】的业务处理类
    /// </summary>
    public class SalverMaterialBindBLL
    {
        /// <summary>
        /// ç»„盘
        /// </summary>
        /// <param name="_unitOfWork"></param>
        /// <param name="request"></param>
        /// <param name="user"></param>
        /// <param name="material"></param>
        /// <param name="salver"></param>
        /// <returns></returns>
        public static MessageModel<string> SalverMaterialBind(
            bool isValidate1015ScanValue,
            bool isBtj,
            C_Task_InStoreSlaverParam Task_InStoreSlaver, C_AnalyzeMaterialPostParam request,
            string userName, int userId, string inStoreNo
           )
        {
            MessageModel<string> result = new MessageModel<string>();
            var errMsg = "";
            try
            {
                using (DbModel context = new DbModel())
                {
                    #region ç”Ÿæˆæœ€æ–°çš„序列号 ã€Eidtby shaocx,2023-02-21】
                    string taskSequenceGuid = "";
                    int taskSequence = 0;
                    if (isValidate1015ScanValue)
                    {
                        TaskSequenceEntity taskSequenceEntity = MyGenerateTaskSequence(context);
                        taskSequence = taskSequenceEntity.TaskSequence;
                        taskSequenceGuid = taskSequenceEntity.TaskSequenceGuid;
                    }
                    else
                    {
                        taskSequenceGuid = Guid.NewGuid().ToString();
                    }
                    #endregion
                    //验证1015站点是否有库存存在!
                    //var existStores = context.V_AllStore.Where(x => x.RgvStationCode == "1015").ToList();
                    var existStores = context.V_AllStore.Where(x => x.RgvStationCode == inStoreNo).ToList();
                    if (existStores != null && existStores.Count > 0)
                    {
                        result = MessageModel<string>.Fail($"入库口{inStoreNo}已经有库存存在!托盘号:" + existStores[0].SalverCode + ",序列号:" + existStores[0].SerialNumber);
                        return result;
                    }
                    //_unitOfWork.BeginTran();
                    //1、寻找空库位
                    Task_Main mainTask = new Task_Main();
                    mainTask.IsVirtual = false;//非虚拟入库
                    mainTask.IsBtj = isBtj;
                    if (isBtj)
                    {
                        mainTask.IsBtjReceive = true;
                        mainTask.BtjReceiveTime = DateTime.Now;
                    }
                    //mainTask.TaskSequence = await GenerateTaskSequence();//生成最新的任务序列号
                    mainTask.TaskSequence = taskSequence;//生成最新的任务序列号
                    mainTask.TaskSequenceGuid = taskSequenceGuid;
                    if (request == null)
                    {
                        mainTask.TaskNo = Task_InStoreSlaver.TaskNo;
                    }
                    else
                    {
                        //阻止出现两次重复扫码组盘的情况
                        //List<V_TaskMain> NewV_TaskMain = await _V_TaskMain.Query(a => a.SerialNumber == request.SerialNumber);
                        List<V_TaskMain> NewV_TaskMain = context.V_TaskMain.Where(a => a.SerialNumber == request.SerialNumber).ToList();
                        foreach (var item in NewV_TaskMain)
                        {
                            if (item.TaskState != (int)MainTaskStatusEnum.已完成 && item.TaskState != (int)MainTaskStatusEnum.已取消)
                            {
                                result = MessageModel<string>.Fail("入库任务已存在该序列号的任务");
                                return result;
                            }
                            else
                            {
                                //List<V_Store> storeList = await v_StoreServices.Query(a => a.SerialNumber == request.SerialNumber);
                                List<V_Store> storeList = context.V_Store.Where(a => a.SerialNumber == request.SerialNumber).ToList();
                                if (storeList != null && storeList.Count > 0)
                                {
                                    result = MessageModel<string>.Fail($"序列号{request.SerialNumber}已经在立体库中,库位号{storeList[0].SrmStationCode}");
                                    return result;
                                }
                            }
                        }
                        mainTask.TaskNo = TaskNoHelper.GenerateTaskNo("IN");
                    }
                    mainTask.TaskName = "入库";
                    mainTask.InOutFlag = (int)MainInOutFlagEnum.入库;
                    mainTask.InOutFlagName = MainInOutFlagEnum.入库.ToString();
                    //先模拟写死
                    //暂时读取本项目的,以后要改为调用服务的 ï¼ï¼ï¼ï¼
                    //起点,写死
                    //var sourcePlaceList = await base_StationServices.Query(x => x.RgvStationCode == ((int)RgvLocation.入库口1015).ToString());
                    var sourcePlaceList = context.Base_Station.Where(x => x.RgvStationCode == inStoreNo).ToList();
                    if (sourcePlaceList == null || sourcePlaceList.Count == 0)
                    {
                        result = MessageModel<string>.Fail($"没有找到RGV站点{inStoreNo}的站点基础数据");
                        return result;
                    }
                    var sourcePlace = sourcePlaceList[0];
                    //判断起点是否有任务被占用
                    //var validateStationIsAllowUseResult = await base_StationServices.ValidateStationIsAllowUse(sourcePlace.Id, task_PartServices);
                    var validateStationIsAllowUseResult = StationHandler.ValidateStationIsAllowUse(sourcePlace.Id, context);
                    if (validateStationIsAllowUseResult.data == false)
                    {
                        result = MessageModel<string>.Fail(validateStationIsAllowUseResult.msg);
                        return result;
                    }
                    mainTask.SourcePlace = sourcePlace.Id;
                    mainTask.RealSourcePlace = sourcePlace.RgvStationCode;
                    Base_Material newMaterial = null;
                    Base_Salver salver = null;
                    if (request == null)
                    {
                        //增加空托
                        //newMaterial = await base_MaterialServices.CreateEmptySlaverMaterial(Task_InStoreSlaver.Qty, "入库时,新建空托", user);
                        //salver = await base_SalverServices.CreateVirtualSalver("入库时,新建空托", user);
                        newMaterial = MaterialHandler.CreateEmptySlaverMaterial(context, "入库时,新建空托", Task_InStoreSlaver.Qty);
                        salver = SalverHandler.CreateVirtualSalver(context, "入库时,新建空托");
                    }
                    else
                    {
                        //增加物料
                        //首先去判断该物料是否存在
                        //var existMaterialResult = await base_MaterialServices.GetMaterialBySerialNumber(request.SerialNumber, false);
                        var existMaterialResult = MaterialHandler.GetMaterialBySerialNumber(context, request.SerialNumber, false);
                        if (existMaterialResult.success == false)
                        {
                            result = MessageModel<string>.Fail(existMaterialResult.msg);
                            return result;
                        }
                        else
                        {
                            newMaterial = existMaterialResult.data;
                        }
                        if (newMaterial == null)
                        {
                            //newMaterial = await base_MaterialServices.CreateCargoMaterial("入库时,新建物料", request, user);
                            newMaterial = MaterialHandler.CreateCargoMaterial(context, request, "入库时,新建物料", request.SerialNumber, request.OrderNo);
                            //如果是新物料,并且是没有主机厂、机型、系列字段,则需要重新使用服务获取下
                            if (string.IsNullOrEmpty(request.Supplier) || request.items_ModelNumber == null)
                            {
                                mainTask.IsUpdateMatFinish = false;
                                mainTask.UpdateMatFinishTime = DateTime.Now;
                                mainTask.UpdateMatFinishNum = 0;
                            }
                            else
                            {
                                mainTask.IsUpdateMatFinish = true;
                                mainTask.UpdateMatFinishTime = DateTime.Now;
                                mainTask.UpdateMatFinishNum = 0;
                            }
                        }
                        //判断托盘是否存在,如果存在,就不需要重建,如果不存在,就新建托盘
                        //var salverResult = await base_SalverServices.GetSalveByCodeForInTask(request.SalverCode, user, base_Salver_V_StationServices, base_Salver_V_MaterialServices);
                        var salverResult = SalverHandler.GetSalveByCodeForInTask(context, request.SalverCode, out errMsg);
                        if (!string.IsNullOrEmpty(errMsg))
                        {
                            result = MessageModel<string>.Fail(errMsg);
                            return result;
                        }
                        salver = salverResult;
                    }
                    mainTask.MaterialId = newMaterial.Id;
                    mainTask.SerialNumber = newMaterial.SerialNumber;
                    mainTask.OrderNo = newMaterial.OrderNo;
                    mainTask.SalverId = salver.Id;
                    mainTask.SalverCode = salver.SalverCode;
                    //物料信息
                    //XiGangCommonHelper.SetMaterialForMainTask(ref mainTask, newMaterial);
                    MainTaskHandler.SetMaterialForMainTask(ref mainTask, newMaterial);
                    ////绑定托盘和物料的关系
                    //await base_Salver_V_MaterialServices.CreateCvIRelation(userName, salver, newMaterial, "入库时,新建绑定托盘和物料的关系");
                    ////绑定托盘和站点的关系
                    //await base_Salver_V_StationServices.CreateCvPRelation(userName, salver, sourcePlace, Salver_V_Station_StateEnum.入库绑定, "入库时,新建绑定托盘和站点的关系");
                    //绑定托盘和物料的关系
                    Salver_Material_Handler.CreateCvIRelation(context, userName, salver, newMaterial, "入库时,新建绑定托盘和物料的关系");
                    //绑定托盘和站点的关系
                    Salver_Station_Handler.CreateCvPRelation(context, userName, salver, sourcePlace, Salver_V_Station_StateEnum.入库绑定, "入库时,新建绑定托盘和站点的关系");
                    ////
                    var _taskType = MainTaskTypeEnum.自动入库;
                    mainTask.TaskType = Convert.ToInt32(_taskType);
                    mainTask.TaskTypeName = _taskType.ToString();
                    var _taskState = MainTaskStatusEnum.已组盘;
                    mainTask.TaskState = Convert.ToInt32(_taskState);
                    mainTask.TaskStateName = _taskState.ToString();
                    mainTask.CreateTime = mainTask.ModifyTime = mainTask.StartTime = DateTime.Now;
                    mainTask.CreateBy = mainTask.ModifyBy = userName;
                    mainTask.CreateId = mainTask.ModifyId = userId;
                    mainTask.OperationRemark = "添加";
                    //int mainTaskId = await _dal.Add(mainTask);
                    context.Task_Main.Add(mainTask);
                    //if (mainTaskId <= 0)
                    //{
                    //    result = MessageModel<string>.Fail("新增主任务失败");
                    //    return result;
                    //}
                    //锁定站点
                    sourcePlace.IsLock = true;
                    sourcePlace.IsHasTaskDoing = true;
                    sourcePlace.OperationRemark = "创建入库任务,锁定库位";
                    //await base_StationServices.Update(sourcePlace);
                    context.SaveChanges();
                    result = MessageModel<string>.Success("成功");
                    return result;
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            finally
            {
                //if (result.success)
                //{
                //    _unitOfWork.CommitTran();
                //}
                //else
                //{
                //    _unitOfWork.RollbackTran();
                //}
            }
        }
        /// <summary>
        /// ç”Ÿæˆæœ€æ–°çš„任务序列号
        /// </summary>
        private static TaskSequenceEntity MyGenerateTaskSequence(DbModel edm)
        {
            TaskSequenceEntity entity = new TaskSequenceEntity();
            entity = MainTaskHandler.GetTaskSequenceEntity(edm);
            if (entity == null)
            {
                throw new Exception("生成最新的任务序列号失败");
            }
            if (entity.TaskSequence == 0)
            {
                throw new Exception("生成最新的任务序列号为0");
            }
            return entity;
        }
    }
}
CC/iWareCC_ASRS/BLL/SrmBLL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
using iWareCC.RgvService;
using iWareCC.SrmService;
using iWareCommon;
using iWareCommon.Utils;
using iWareModel;
using iWareSql;
using iWareSql.DataAccess;
using iWareSql.Entity.ParamModel;
using iWareSql.Orm;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace iWareCC.BLL
{
    /// <summary>
    /// å †åž›æœºçš„业务处理类
    /// </summary>
    public class SrmBLL
    {
        private static string _namespace = "iWareCC.BLL.SrmBLL";
        /// <summary>
        /// æ£€æµ‹å †åž›æœºæ˜¯å¦æœ‰å¿ƒè·³
        /// </summary>
        /// <param name="service"></param>
        /// <returns></returns>
        public static bool IsHandShare(SrmServiceClient service, EDevice _EDeviceId)
        {
            //检测是否有心跳
            var info = service.GetSrmInfo((int)_EDeviceId);
            var oldHandShake = info.R_HandShake;
            Thread.Sleep(2000);
            info = service.GetSrmInfo((int)_EDeviceId);//重新获取对象
            var newHandShare = info.R_HandShake;
            if (oldHandShake != newHandShare)
            {
                //有心跳
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
CC/iWareCC_ASRS/Common/DeviceDict.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
using iWareCommon.Utils;
using iWareModel;
using System.Collections.Generic;
namespace iWareCC
{
    /// <summary>
    /// è®¾å¤‡å­—å…¸
    /// </summary>
    public class DeviceDict
    {
        #region å †åž›æœº
        /// <summary>
        /// å †åž›æœºUI的Label字典(key:label的名字前缀 value:label的中文)
        /// </summary>
        public static IDictionary<string, LabelPro> LabelSrmDict = new System.Collections.Generic.Dictionary<string, LabelPro>() {
            {"lblSrmPosX",new  LabelPro(){ LablePreStr="当前列:", LableProName="R_PosX"}},
            {"lblSrmPosY",new  LabelPro(){ LablePreStr="当前层:", LableProName="R_PosY"}},
            {"lblSrmWorkMode",new  LabelPro(){ LablePreStr="设备模式:", LableProName="ModeName"}},
            {"lblSrmWorkState",new  LabelPro(){ LablePreStr="工作状态:", LableProName="StateName"}},
            {"lbSrmSourcePlace",new  LabelPro(){ LablePreStr="起始位:", LableProName="SrmSourcePlace"}},
            {"lbSrmToPlace",new  LabelPro(){ LablePreStr="目标位:", LableProName="SrmToPlace"}},
            {"lblSrmTaskNo",new  LabelPro(){ LablePreStr="任务号:", LableProName="R_TaskNo"}},
            {"lbl_R_PickReqForInStore_",new  LabelPro(){ LablePreStr="取货请求:", LableProName="R_PickReqForInStore"}},
           // {"lblSrmAlarm",new  LabelPro(){ LablePreStr="", LableProName="R_AlarmCode"}}, //报警信息
        };
        #endregion
    }
    public class LabelPro
    {
        /// <summary>
        /// æ˜¾ç¤ºçš„前缀中文名
        /// </summary>
        public string LablePreStr { get; set; }
        /// <summary>
        /// æ˜¾ç¤ºçš„真正属性名
        /// </summary>
        public string LableProName { get; set; }
    }
}
CC/iWareCC_ASRS/Common/Helper/AgvRequestHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
using iWareCommon.Utils;
using iWareModel.Entity.AGV;
using System;
namespace iWareCC.Common.Helper
{
    public class AgvRequestHelper
    {
        /// <summary>
        /// AGV的主机host
        /// </summary>
        private static string agvHost = ConfigHelper.GetConfigString("AgvHost");
        /// <summary>
        /// AGV-查询车辆列表(可查指定名称)
        /// </summary>
        private static string agvUrl_RobotsStatus = ConfigHelper.GetConfigString("RobotsStatus");
        /// <summary>
        /// æŸ¥è¯¢è½¦è¾†åˆ—表
        /// </summary>
        /// <param name="agvTaskParam"></param>
        /// <returns></returns>
        public static AGVRetModel GetVehicles()
        {
            var agvResults = new HTTPService(agvHost).getContent<AGVRetModel>(agvUrl_RobotsStatus, Guid.NewGuid(), 30);
            return agvResults;
        }
    }
}
CC/iWareCC_ASRS/Common/Helper/ControlHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace iWareCC.Common.Helper
{
    public class ControlHelper
    {
        /// <summary>
        /// æ ¹æ®æŒ‡å®šå®¹å™¨å’ŒæŽ§ä»¶åå­—,获得控件
        /// ((Button) GetControlInstance(this.groupBox4,"button7")).PerformClick();
        /// </summary>
        /// <param name="obj">容器</param>
        /// <param name="strControlName">控件名字</param>
        /// <returns>控件</returns>
        public static object GetControlInstance(Control obj, string strControlName)
        {
            IEnumerator Controls = null;//所有控件
            Control c = null;//当前控件
            Object cResult = null;//查找结果
            Controls = ((Control)obj).Controls.GetEnumerator();
            //if (obj.GetType() == this.GetType())//窗体
            //{
            //    Controls = this.Controls.GetEnumerator();
            //}
            //else//控件
            //{
            //    Controls = ((Control)obj).Controls.GetEnumerator();
            //}
            while (Controls.MoveNext())//遍历操作
            {
                c = (Control)Controls.Current;//当前控件
                if (c.HasChildren)//当前控件是个容器
                {
                    cResult = GetControlInstance(c, strControlName);//递归查找
                    if (cResult == null)//当前容器中没有,跳出,继续查找
                        continue;
                    else//找到控件,返回
                        return cResult;
                }
                else if (c.Name == strControlName)//不是容器,同时找到控件,返回
                {
                    return c;
                }
            }
            return null;//控件不存在
        }
    }
}
CC/iWareCC_ASRS/Common/Helper/FormHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace iWareCC.Common.Helper
{
    public class FormHelper
    {
        /// <summary>
        /// è‡ªé€‚应宽度
        /// </summary>
        /// <param name="dgView"></param>
        public static void DataGridViewSelfAdaptionWidth(DataGridView dgView)
        {
            int width = 0;
            //对于DataGridView的每一个列都调整
            for (int i = 0; i < dgView.Columns.Count; i++)
            {
                //将每一列都调整为自动适应模式
                dgView.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells);
                //记录整个DataGridView的宽度
                width += dgView.Columns[i].Width;
            }
            //判断调整后的宽度与原来设定的宽度的关系,如果是调整后的宽度大于原来设定的宽度,
            //则将DataGridView的列自动调整模式设置为显示的列即可,
            //如果是小于原来设定的宽度,将模式改为填充。
            if (width > dgView.Size.Width)
            {
                dgView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
            }
            else
            {
                dgView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            }
            //冻结某列 ä»Žå·¦å¼€å§‹ 0,1,2
            //dgViewPersons.Columns[1].Frozen = true;
        }
    }
}
CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,964 @@
using iWareCommon.Common.Globle;
using iWareCommon.Utils;
using iWareModel;
using iWareModel.EnumType.XiGangPublicCommon;
using iWareSql.DataAccess;
using iWareSql.DBModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using XiGang.Core.Model;
namespace iWareCC.Common.Helper
{
    /// <summary>
    /// å¢žè¡¥åˆ›å»ºçš„æ‰©å±•帮助类 ã€EditBy shaocx,2022-02-05】
    /// </summary>
    public class MyExtendHelper
    {
        /// <summary>
        /// é…ç½®ç¼ºæ–™åŽŸå› 
        /// </summary>
        /// <param name="oldRemark"></param>
        /// <param name="queliaoReason"></param>
        /// <returns></returns>
        public static string GetQueliaoReason(string oldRemark, string queliaoReason)
        {
            char splitStr = '|';
            var updateRemark = "缺料原因:" + queliaoReason;
            if (string.IsNullOrEmpty(oldRemark))
            {
                oldRemark = updateRemark + splitStr;
            }
            else
            {
                //解析字符串
                var arr = oldRemark.Split(splitStr);
                oldRemark = updateRemark + splitStr + arr.Last();
            }
            return oldRemark;
        }
        /// <summary>
        /// æ¸…除缺料原因
        /// </summary>
        /// <param name="oldRemark"></param>
        /// <param name="queliaoReason"></param>
        /// <returns></returns>
        public static string CleareQueliaoReason(string oldRemark)
        {
            char splitStr = '|';
            if (string.IsNullOrEmpty(oldRemark))
            {
                return string.Empty;
            }
            else
            {
                //解析字符串
                var arr = oldRemark.Split(splitStr);
                oldRemark = arr.Last();
            }
            return oldRemark;
        }
        /// <summary>
        /// è®¾ç½®å¼ºåˆ¶å®Œæˆä¿¡å·
        /// </summary>
        /// <param name="srmStationCode"></param>
        /// <returns></returns>
        public static void SetSrm_IN_SMQZYZTG(EDevice device, bool value)
        {
            if (device == EDevice.一号堆垛机)
            {
                FormCC.Srm1_IN_SMQZYZTG = value;
            }
            else if (device == EDevice.二号堆垛机)
            {
                FormCC.Srm2_IN_SMQZYZTG = value;
            }
            else if (device == EDevice.三号堆垛机)
            {
                FormCC.Srm3_IN_SMQZYZTG = value;
            }
            else if (device == EDevice.四号堆垛机)
            {
                FormCC.Srm4_IN_SMQZYZTG = value;
            }
        }
        /// <summary>
        /// æ ¹æ®å †åž›æœºçš„入库口获取 è¾“送线的站点号
        /// </summary>
        /// <param name="srmStationCode"></param>
        /// <returns></returns>
        public static string GetRgvStationCodeBySrm(EDevice device)
        {
            string stationCode = "";
            if (device == EDevice.一号堆垛机)
            {
                stationCode = "1002";
            }
            else if (device == EDevice.二号堆垛机)
            {
                stationCode = "1004";
            }
            else if (device == EDevice.三号堆垛机)
            {
                stationCode = "1006";
            }
            else if (device == EDevice.四号堆垛机)
            {
                stationCode = "1007";
            }
            return stationCode;
        }
        /// <summary>
        /// å››ä¸ªå…¥åº“口 æ‰«æéªŒè¯ç»“果推送
        /// </summary>
        /// <param name="isReset"></param>
        /// <param name="handType"></param>
        /// <param name="stationCode"></param>
        /// <param name="plcTaskId"></param>
        /// <param name="value"></param>
        /// <param name="sysSalverCode"></param>
        /// <param name="scanCode"></param>
        public static bool WriteScanValidateACK(bool isReset, string handType, string stationCode, int plcTaskId, bool value, string sysSalverCode, string scanCode)
        {
            using (RgvService.RgvServiceClient clent = new RgvService.RgvServiceClient())
            {
                var res = clent.WriteScanValidateACK(isReset, (int)EDevice.RGV, stationCode, value, Convert.ToInt32(plcTaskId));
                if (res.result)
                {
                    Log4NetHelper.WriteInfoLog(iWareCommon.Utils.LogType.LineInScanTheadService, "HandlerLineInSacnResult ä¸‹å‘扫描验证下发成功,写入值value:" + value + ",stationCode:" + stationCode + ",PlcTaskId:" + plcTaskId + ",系统托盘号:" + sysSalverCode + ",扫描托盘号:" + scanCode + ",处理类型:" + handType);
                    return true;
                }
                else
                {
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.LineInScanTheadService, "HandlerLineInSacnResult ä¸‹å‘扫描验证下发失败,写入值value:" + value + ",stationCode:" + stationCode + ",PlcTaskId:" + plcTaskId + ",系统托盘号:" + sysSalverCode + ",扫描托盘号:" + scanCode + ",处理类型:" + handType);
                    return false;
                }
            }
        }
        /// <summary>
        /// æ‰˜ç›˜å›žæ”¶æ—¶ï¼Œæ˜¯å¦å…è®¸åˆ›å»ºåŽ»1014的任务
        /// </summary>
        /// <param name="errMsg"></param>
        /// <returns>true:允许创建,false:不允许创建</returns>
        public static bool IsAllowSendTaskTo1014ByTPHS(ref string errMsg)
        {
            //增加验证,1009上两个光电有货,或 1010上其中一个光电有货,或 1011上一个光电有货,就先暂停不要下发去1014的任务,目的是为了优先让托盘回收的去1014位置,而不是立体库,挺高接怕 [EditBy shaocx,2022-05-01]
            EDevice rgvLocation = EDevice.空托缓存1009;
            var stationCode = Convert.ToInt32(rgvLocation).ToString();
            //bool isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattionForPH_1(stationCode);
            bool isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(stationCode);
            if (isGD_HasCatogryForRgvStattion)
            {
                errMsg = "1009显示PH_01光电有货,就暂时不创建从立体库去1014的任务,等着1009的托盘到了1011再定夺托盘区哪里";
                return false;
            }
            rgvLocation = EDevice.空托缓存1010;
            isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(stationCode);
            if (isGD_HasCatogryForRgvStattion)
            {
                errMsg = "1010显示一个光电有货,就暂时不创建从立体库去1014的任务,等着1010的托盘到了1011再定夺托盘区哪里";
                return false;
            }
            rgvLocation = EDevice.空托缓存1011;
            isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(stationCode);
            if (isGD_HasCatogryForRgvStattion)
            {
                errMsg = "1011显示一个光电有货,就暂时不创建从立体库去1014的任务";
                return false;
            }
            return true;
        }
        /// <summary>
        /// æ ¹æ®1009站点的光电获取返回立体库的托盘数
        /// </summary>
        /// <returns></returns>
        public static int GetSalverStackCountForBackToStore()
        {
            var high3 = FormCC.rgvView.R_1009_High3;
            var high2 = FormCC.rgvView.R_1009_High2;
            var high1 = FormCC.rgvView.R_1009_High1;
            int count = 0;
            if (high1 && high2 && high3)
            {
                count = 3;
            }
            else if (high1 && high2 && !high3)
            {
                count = 2;
            }
            else if (high1 && !high2 && !high3)
            {
                count = 1;
            }
            return count;
        }
        /// <summary>
        /// åˆ¤æ–­  å‡ºåº“的任务未完成的,超过了两个库区的设定
        /// </summary>
        /// <param name="context"></param>
        /// <param name="errMsg"></param>
        /// <returns>true:未超过限定 false:超过了限定</returns>
        public static bool IsNoFinishedOutTaskGroupbyArea(DbModel context, ref string errMsg)
        {
            var queryTaskType = (int)DeviceTaskTypeEnum.出库;
            var noFishisedList = context.Task_Part.Where(x => x.TaskType == queryTaskType &&
                (x.TaskState == (int)DeviceTaskStatusEnum.未开始 || x.TaskState == (int)DeviceTaskStatusEnum.已下发)
                && x.DeviceType == (int)EDeviceType.堆垛机
                ).ToList();
            if (noFishisedList == null || noFishisedList.Count == 0)
            {
                return true;
            }
            int num = noFishisedList.Select(x => x.DeviceId).Distinct().Count();
            if (num >= 2)
            {
                errMsg = "未结束的出库任务所占的库区,已经超过设定的值" + 2 + ",目前是:" + num;
                return false;
            }
            return true;
        }
        /*
        /// <summary>
        /// æ˜¯å¦æ¡ä»¶å…è®¸åšå…¥åº“任务,只有当 å½“ æ²¡æœ‰å‡ºåº“计划,或者是 1012长时间被托盘占用的情况下 æ‰å…è®¸åˆ†è§£ç»„盘入库任务
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static bool IsAllowCreateTaskForInStore(DbModel context, ref string errMsg)
        {
            //查询状态=下发中的出库计划
            //注意:原则是优先执行出库任务
            var queryState2 = (int)MainTaskStatusEnum.待出库;
            //按照先 å‡ºåº“优先,再入库的原则来
            var mainList = context.Task_Main.Where(x => x.TaskState == queryState2).OrderBy(x => x.TaskSequence).ThenBy(x => x.CreateTime).ToList();//按照顺序号升序排列
            if (mainList != null && mainList.Count > 0)
            {//每次只处理一个
                if (FormCC.RGV_1012_HasCategory_COUNT > SysGloble.MAX_RGV_1012_HasCategory_COUNT)
                {//1012长时间被托盘占用的情况下 æ‰å…è®¸åˆ†è§£ç»„盘入库任务
                    return true;
                }
            }
            else
            {//只有当 æ²¡æœ‰å‡ºåº“计划,或者是 1012长时间被托盘占用的情况下 æ‰å…è®¸åˆ†è§£ç»„盘入库任务
                return true;
            }
            errMsg = "只有当 æ²¡æœ‰å‡ºåº“计划,或者是 1012长时间被托盘占用的情况下 æ‰å…è®¸å…¥åº“任务";
            return false;
        }
        //*/
        ///// <summary>
        ///// æ˜¯å¦æœ‰ä¸¤ä¸ªè´§ç‰©å ç”¨ä¸¤ä¸ªå‡ºåº“口,并且1012上显示有货
        ///// </summary>
        ///// <returns></returns>
        //public static bool IsHasTwoCatogryOnOutStationAndOn1012()
        //{
        //    //判断出库计划是否有两个出库口被货物占用了
        //    var _list = GetHasCatogryStationCodeAreaList();
        //    if (_list != null && _list.Count >= 2)
        //    {//说明有两个货物占用两个出库口
        //        var isHasCatogry_1012 = IsGD_HasCatogryForRgvStattion(((int)EDevice.出库口1012).ToString());
        //        if (isHasCatogry_1012)
        //        {
        //            return true;
        //        }
        //    }
        //    return false;
        //}
        /// <summary>
        /// èŽ·å–å››ä¸ªå‡ºåº“å£ å…‰ç”µæœ‰è´§ç‰©å ç”¨çš„列表
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static List<string> GetHasCatogryStationCodeAreaList()
        {
            if (MyExtendHelper.IsAllowSimulatorHandle(null))
            {//如果是模拟,返回默认 [EditBy shaocx,2022-05-31]
                return new List<string>();
            }
            List<string> hasCatogryStationCodeAreaList = new List<string>();
            //优先从四个出库口目前未占用的地方出库
            var stationCode = ((int)EDevice.堆垛机1出库口1001).ToString();
            var isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isHasCatogry)
            {
                hasCatogryStationCodeAreaList.Add("1");
            }
            stationCode = ((int)EDevice.堆垛机2出库口1003).ToString();
            isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isHasCatogry)
            {
                hasCatogryStationCodeAreaList.Add("2");
            }
            stationCode = ((int)EDevice.堆垛机3出库口1005).ToString();
            isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isHasCatogry)
            {
                hasCatogryStationCodeAreaList.Add("3");
            }
            stationCode = ((int)EDevice.堆垛机4出库口1008).ToString();
            isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isHasCatogry)
            {
                hasCatogryStationCodeAreaList.Add("4");
            }
            return hasCatogryStationCodeAreaList;
        }
        /// <summary>
        /// èŽ·å–å››ä¸ªå‡ºåº“å£ æœ‰å‡ºåº“任务未结束或有货物占用 çš„占用的列表
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static List<string> GetHasCatogryAndNoFinishedOutStoreTaskStationCodeAreaList(DbModel context, ref Dictionary<string, int> dict_hasNoFinishedOutStoreTaskStationCodeAreaList)
        {
            dict_hasNoFinishedOutStoreTaskStationCodeAreaList = new Dictionary<string, int>();
            List<string> hasNoFinishedOutStoreTaskStationCodeAreaList = new List<string>();
            if (MyExtendHelper.IsAllowSimulatorHandle(null))
            {//如果是模拟,返回默认 [EditBy shaocx,2022-05-31]
                return new List<string>();
            }
            //优先从四个出库口目前未占用的地方出库
            var stationCode = ((int)EDevice.堆垛机1出库口1001).ToString();
            var place = context.Base_Station.Where(x => x.RgvStationCode == stationCode).First();
            bool isExistOtherTaskDoing = PartTaskHandler.IsExistOtherTaskDoing(context, place.Id);//判断堆垛机是否有出库任务未结束
            var isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isExistOtherTaskDoing || isHasCatogry)
            {
                hasNoFinishedOutStoreTaskStationCodeAreaList.Add("1");
                dict_hasNoFinishedOutStoreTaskStationCodeAreaList.Add("1", FormCC.RGV_1001_HasCategory_COUNT);
            }
            stationCode = ((int)EDevice.堆垛机2出库口1003).ToString();
            place = context.Base_Station.Where(x => x.RgvStationCode == stationCode).First();
            isExistOtherTaskDoing = PartTaskHandler.IsExistOtherTaskDoing(context, place.Id);
            isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isExistOtherTaskDoing || isHasCatogry)
            {
                hasNoFinishedOutStoreTaskStationCodeAreaList.Add("2");
                dict_hasNoFinishedOutStoreTaskStationCodeAreaList.Add("2", FormCC.RGV_1003_HasCategory_COUNT);
            }
            stationCode = ((int)EDevice.堆垛机3出库口1005).ToString();
            place = context.Base_Station.Where(x => x.RgvStationCode == stationCode).First();
            isExistOtherTaskDoing = PartTaskHandler.IsExistOtherTaskDoing(context, place.Id);
            isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isExistOtherTaskDoing || isHasCatogry)
            {
                hasNoFinishedOutStoreTaskStationCodeAreaList.Add("3");
                dict_hasNoFinishedOutStoreTaskStationCodeAreaList.Add("3", FormCC.RGV_1005_HasCategory_COUNT);
            }
            stationCode = ((int)EDevice.堆垛机4出库口1008).ToString();
            place = context.Base_Station.Where(x => x.RgvStationCode == stationCode).First();
            isExistOtherTaskDoing = PartTaskHandler.IsExistOtherTaskDoing(context, place.Id);
            isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isExistOtherTaskDoing || isHasCatogry)
            {
                hasNoFinishedOutStoreTaskStationCodeAreaList.Add("4");
                dict_hasNoFinishedOutStoreTaskStationCodeAreaList.Add("4", FormCC.RGV_1008_HasCategory_COUNT);
            }
            return hasNoFinishedOutStoreTaskStationCodeAreaList;
        }
        public static List<string> GetHasCatogryAndNoFinishedOutStoreTaskStationCodeAreaListForOutSalver(DbModel context, ref Dictionary<string, int> dict_hasNoFinishedOutStoreTaskStationCodeAreaList)
        {
            dict_hasNoFinishedOutStoreTaskStationCodeAreaList = new Dictionary<string, int>();
            List<string> hasNoFinishedOutStoreTaskStationCodeAreaList = new List<string>();
            if (MyExtendHelper.IsAllowSimulatorHandle(null))
            {//如果是模拟,返回默认 [EditBy shaocx,2022-05-31]
                return new List<string>();
            }
            //优先从四个出库口目前未占用的地方出库
            var stationCode = ((int)EDevice.堆垛机1出库口1001).ToString();
            var place = context.Base_Station.Where(x => x.RgvStationCode == stationCode).First();
            bool isExistOtherTaskDoing = PartTaskHandler.IsExistOtherTaskDoing(context, place.Id);//判断堆垛机是否有出库任务未结束
            var isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isExistOtherTaskDoing || isHasCatogry || !IsKongXianForSrm(EDevice.一号堆垛机))
            {
                hasNoFinishedOutStoreTaskStationCodeAreaList.Add("1");
                dict_hasNoFinishedOutStoreTaskStationCodeAreaList.Add("1", FormCC.RGV_1001_HasCategory_COUNT);
            }
            stationCode = ((int)EDevice.堆垛机2出库口1003).ToString();
            place = context.Base_Station.Where(x => x.RgvStationCode == stationCode).First();
            isExistOtherTaskDoing = PartTaskHandler.IsExistOtherTaskDoing(context, place.Id);
            isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isExistOtherTaskDoing || isHasCatogry || !IsKongXianForSrm(EDevice.二号堆垛机))
            {
                hasNoFinishedOutStoreTaskStationCodeAreaList.Add("2");
                dict_hasNoFinishedOutStoreTaskStationCodeAreaList.Add("2", FormCC.RGV_1003_HasCategory_COUNT);
            }
            stationCode = ((int)EDevice.堆垛机3出库口1005).ToString();
            place = context.Base_Station.Where(x => x.RgvStationCode == stationCode).First();
            isExistOtherTaskDoing = PartTaskHandler.IsExistOtherTaskDoing(context, place.Id);
            isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isExistOtherTaskDoing || isHasCatogry || !IsKongXianForSrm(EDevice.三号堆垛机))
            {
                hasNoFinishedOutStoreTaskStationCodeAreaList.Add("3");
                dict_hasNoFinishedOutStoreTaskStationCodeAreaList.Add("3", FormCC.RGV_1005_HasCategory_COUNT);
            }
            stationCode = ((int)EDevice.堆垛机4出库口1008).ToString();
            place = context.Base_Station.Where(x => x.RgvStationCode == stationCode).First();
            isExistOtherTaskDoing = PartTaskHandler.IsExistOtherTaskDoing(context, place.Id);
            isHasCatogry = IsGD_HasCatogryForRgvStattion(stationCode);
            if (isExistOtherTaskDoing || isHasCatogry || !IsKongXianForSrm(EDevice.四号堆垛机))
            {
                hasNoFinishedOutStoreTaskStationCodeAreaList.Add("4");
                dict_hasNoFinishedOutStoreTaskStationCodeAreaList.Add("4", FormCC.RGV_1008_HasCategory_COUNT);
            }
            return hasNoFinishedOutStoreTaskStationCodeAreaList;
        }
        /// <summary>
        /// åˆ¤æ–­å †åž›æœºæ˜¯å¦ç©ºé—²
        /// </summary>
        /// <param name="devic"></param>
        private static bool IsKongXianForSrm(EDevice devic)
        {
            if (FormCC.srmViewDict[(int)devic].R_State == (int)ESrmState.空闲)
            {
                return true;
            }
            return false;
        }
        #region å¯»æ‰¾ç«‹ä½“库中的空托,出库到1014位置
        /// <summary>
        /// å¯»æ‰¾ç«‹ä½“库中的空托,出库到1014位置
        /// </summary>
        /// <param name="context"></param>
        /// <param name="outDetailTask"></param>
        /// <param name="errMsg"></param>
        public static V_Store FindStoreForEmptySalverTo1014(DbModel context, ref string errMsg)
        {
            var queryMaterialType = (int)MaterialTypeEnum.托盘;
            var findStoreList = context.V_Store.Where(x => x.MaterialType == queryMaterialType
                   && x.StationIsHasTaskDoing == false && x.StationIsLock == false
                   && x.StationIsDeleted == false).OrderBy(x => x.InStoreTime).ThenBy(x => x.Qty).ToList();//空托排序
            if (findStoreList == null || findStoreList.Count == 0)
            {
                errMsg = "未找到可用于到拆盘机入库的立体库空托盘库存";
                return null;
            }
            //注意:排除掉堆垛机不可用的 ã€EditBy shaocx,2022-04-16】
            findStoreList = StationHandler.FindPlacesFilterByBreakdown(findStoreList);//通过设备状态来过滤库位 [EditBy shaocx,2020-12-13]
            if (findStoreList == null || findStoreList.Count == 0)
            {
                errMsg = "未找到可用于到拆盘机入库的空托盘库存";
                return null;
            }
            #region ä¼˜å…ˆä»Žå››ä¸ªå‡ºåº“口目前未占用的地方出库
            Dictionary<string, int> dict_hasNoFinishedOutStoreTaskStationCodeAreaList = new Dictionary<string, int>();
            List<string> hasCatogryStationCodeAreaList = GetHasCatogryAndNoFinishedOutStoreTaskStationCodeAreaListForOutSalver(context, ref dict_hasNoFinishedOutStoreTaskStationCodeAreaList);
            var resultStore = findStoreList.FirstOrDefault();
            if (hasCatogryStationCodeAreaList.Count == 0)
            {
                return resultStore;
            }
            else
            {
                var new_findStoreList = findStoreList.Where(x => !hasCatogryStationCodeAreaList.Contains(x.Area)).OrderBy(x => x.InStoreTime).ThenBy(x => x.Qty).ToList();//空托排序
                if (new_findStoreList == null || new_findStoreList.Count == 0)
                {
                    //无奈,只好排队了,先找有货秒数=0的那个
                    var myArea = "";
                    foreach (var item in dict_hasNoFinishedOutStoreTaskStationCodeAreaList)
                    {
                        if (item.Value == 0)
                        {
                            myArea = item.Key;
                            break;
                        }
                    }
                    if (!string.IsNullOrEmpty(myArea))
                    {
                        resultStore = findStoreList.Where(x => x.Area == myArea).OrderBy(x => x.InStoreTime).ThenBy(x => x.Qty).First();//空托排序
                    }
                    else
                    {
                        //无奈,只好排队了,排队也要排最长的那个
                        var dict = dict_hasNoFinishedOutStoreTaskStationCodeAreaList.OrderByDescending(x => x.Value).First();//取排队时间最长的那个
                        resultStore = findStoreList.Where(x => x.Area == dict.Key).OrderBy(x => x.InStoreTime).ThenBy(x => x.Qty).First();//空托排序
                    }
                    return resultStore;
                }
                else
                {//找到最优的
                    return new_findStoreList.FirstOrDefault();
                }
            }
            #endregion
        }
        #endregion
        /// <summary>
        /// æ–°å»ºè½¬è¿ä»»åŠ¡
        /// </summary>
        /// <param name="flag">1:转移到1014位置 2:转移到立体库中  3:1009到1011 4:立体库到1014位置 </param>
        /// <param name="rgvEDevice">RGV设备号</param>
        /// <param name="user"></param>
        /// <param name="store"></param>
        /// <returns></returns>
        public static FunRetEntity AddTransferTask(AddTransferTaskEnum flag, EDevice rgvEDevice, SysUser user, V_AllStore store)
        {
            FunRetEntity fr = new FunRetEntity();
            var errMsg = "";
            var remark = "新增转运任务";
            try
            {
                #region äº‹åŠ¡
                #endregion
                using (DbModel edm = new DbModel())
                {
                    //增加验证 ã€EditBy shaocx,2022-04-28】
                    switch (flag)
                    {
                        case AddTransferTaskEnum.位置1011转移到1014位置:
                        case AddTransferTaskEnum.位置1011转移到立体库中:
                            //去掉这个验证,前面允许创建任务就创建吧 ã€EditBy shaocx,2022-05-15】
                            /*
                            var isAllow = IsAllowCreateTaskForInStore(edm, ref errMsg);
                                if (!isAllow)
                                {
                                    return FunRetEntity.Fail(errMsg);
                                }
                                //*/
                            break;
                    }
                    using (var trans = edm.Database.BeginTransaction())
                    {
                        try
                        {
                            Task_Main mainTask = new Task_Main();
                            mainTask.IsVirtual = false;//非虚拟入库
                            mainTask.TaskNo = TaskNoHelper.GenerateTaskNo("TR");
                            mainTask.TaskName = "空托转运";
                            #region èŽ·å–ä»»åŠ¡èµ·ç‚¹
                            //起点
                            var realSourcePlace = "";
                            Base_Station sourcePlace = null;
                            if (flag == AddTransferTaskEnum.立体库到1014位置)
                            {//4:立体库到1014位置
                                var srmStore = MyExtendHelper.FindStoreForEmptySalverTo1014(edm, ref errMsg);
                                if (srmStore == null)
                                {
                                    return FunRetEntity.Fail(errMsg);
                                }
                                store = ClassHelper.RotationMapping<V_AllStore, V_Store>(srmStore);
                                sourcePlace = StationHandler.GetPlaceByPlaceId(store.StationId, edm);
                                realSourcePlace = sourcePlace.SrmStationCode;
                                //记录区域 [EditBy shaocx,2022-05-02]
                                var device = BusinessHelper.GetSrmDeviceByPlaceNo(sourcePlace.SrmStationCode);
                                mainTask.Area = ((int)device).ToString();
                            }
                            else if (flag == AddTransferTaskEnum.位置1014到1020)
                            {//5:位置1014到1020
                                sourcePlace = StationHandler.GetPlaceByPlaceId(store.StationId, edm);
                                realSourcePlace = sourcePlace.RgvStationCode;
                            }
                            else
                            {
                                var getSourcePlaceResult = StationHandler.GetTargtStationForAddTransferTask(edm, rgvEDevice, ref errMsg, ref sourcePlace);
                                if (getSourcePlaceResult.result == false) return getSourcePlaceResult;
                                realSourcePlace = sourcePlace.RgvStationCode;
                            }
                            mainTask.SourcePlace = sourcePlace.Id;
                            mainTask.RealSourcePlace = realSourcePlace;
                            #endregion
                            #region èŽ·å–ä¸­é—´ç‚¹å’Œç›®æ ‡ç‚¹
                            Base_Station toPlace = null;
                            Base_Station midPlace = null;
                            var getMidToPlaceResult = MainTaskHandler.GetMidToPlaceForAddTransferTask(sourcePlace, flag, edm, ref errMsg, ref toPlace, ref midPlace, ref mainTask);
                            if (getMidToPlaceResult.result == false) return getMidToPlaceResult;
                            #endregion
                            SetTaskTypeStateAndInOutFlagForMainTask(flag, ref mainTask);
                            Base_Salver salver = null;
                            Base_Material newMaterial = null;
                            if (store == null)
                            {//新建物料,新建托盘,新建绑定关系
                                //绑定托盘和站点的关系
                                //新建物料
                                var salverStackCount = GetSalverStackCountForBackToStore();
                                if (salverStackCount == 0)
                                {
                                    //报错
                                    return FunRetEntity.Fail("根据1009站点的光电获取返回立体库的托盘数为0");
                                }
                                newMaterial = MaterialHandler.CreateEmptySlaverMaterial(edm, "空托盘转运时创建", salverStackCount);
                                //判断托盘是否存在,如果存在,就不需要重建,如果不存在,就新建托盘
                                salver = SalverHandler.CreateVirtualSalver(edm, "空托盘转运");
                                if (!string.IsNullOrEmpty(errMsg))
                                {
                                    return FunRetEntity.Fail(errMsg);
                                }
                                //绑定托盘和物料的关系
                                Salver_Material_Handler.CreateCvIRelation(edm, user.Name, salver, newMaterial, remark);
                                //绑定托盘和站点的关系
                                Salver_Station_Handler.CreateCvPRelation(edm, user.Name, salver, sourcePlace, Salver_V_Station_StateEnum.入库绑定, remark);
                            }
                            else
                            {
                                salver = SalverHandler.GetSalveById(edm, store.SalverId);
                                newMaterial = MaterialHandler.GetMaterialById(edm, store.MaterialId);
                            }
                            mainTask.SalverId = salver.Id;
                            mainTask.SalverCode = salver.SalverCode;
                            mainTask.MaterialId = newMaterial.Id;
                            //物料信息
                            MainTaskHandler.SetMaterialForMainTask(ref mainTask, newMaterial);
                            //序列号和订货号赋值  [Editby shaocx,2022-04-05]
                            mainTask.SerialNumber = "";
                            mainTask.OrderNo = "";
                            mainTask.CreateTime = mainTask.ModifyTime = mainTask.StartTime = DateTime.Now;
                            mainTask.CreateBy = mainTask.ModifyBy = user.Name;
                            mainTask.CreateId = mainTask.ModifyId = user.ID;
                            mainTask.OperationRemark = "添加";
                            string taskSequenceGuid = "";
                            mainTask.TaskSequence = MainTaskHandler.GenerateTaskSequence(edm, ref taskSequenceGuid);//生成任务序列号
                            mainTask.TaskSequenceGuid = taskSequenceGuid;
                            edm.Task_Main.Add(mainTask);
                            edm.SaveChanges();//保存一次,此时mainTask的自增ID就有值了
                            var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
                            var createTime = DateTime.Now;
                            if (flag == AddTransferTaskEnum.位置1011转移到1014位置)
                            {//转移到1014位置
                                //创建RGV任务
                                FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.空托转运到拆盘机入口, mainTask, salver, sourcePlace, toPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                            }
                            else if (flag == AddTransferTaskEnum.位置1011转移到立体库中)
                            {//转移到立体库中
                                //创建RGV任务
                                FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.空托转运到立体库, mainTask, salver, sourcePlace, midPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                                //创建堆垛机任务
                                fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.堆垛机, user.Name, 2, DeviceTaskTypeEnum.空托转运到立体库, mainTask, salver, midPlace, toPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                            }
                            else if (flag == AddTransferTaskEnum.位置1009到位置1011)
                            {// 3:1009到1011
                                //创建RGV任务
                                FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.空托缓存位转运, mainTask, salver, sourcePlace, toPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                            }
                            else if (flag == AddTransferTaskEnum.立体库到1014位置)
                            {//4:立体库到1014位置
                                //创建堆垛机任务
                                FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.堆垛机, user.Name, 1, DeviceTaskTypeEnum.立库空托到拆盘机入口, mainTask, salver, sourcePlace, midPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                                //创建RGV任务
                                fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 2, DeviceTaskTypeEnum.立库空托到拆盘机入口, mainTask, salver, midPlace, toPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                            }
                            else if (flag == AddTransferTaskEnum.位置1014到1020)
                            {//5:1014到1020位置
                                //创建RGV任务
                                FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.拆盘机入口到拆盘机, mainTask, salver, sourcePlace, toPlace, remark);
                                if (fre.result == false)
                                {
                                    throw new Exception(fr.resMsg);
                                }
                            }
                            edm.SaveChanges();//第二次保存
                            trans.Commit();//事务提交
                        }
                        catch (Exception ex)
                        {
                            trans.Rollback();
                            throw ex;
                        }
                    }
                    return FunRetEntity.Success("成功");
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }
        private static void SetTaskTypeStateAndInOutFlagForMainTask(AddTransferTaskEnum flag, ref Task_Main mainTask)
        {
            var _InOutFlag = default(MainInOutFlagEnum);
            var _taskType = default(MainTaskTypeEnum);
            var _taskState = default(MainTaskStatusEnum);
            switch (flag)
            {
                case AddTransferTaskEnum.立体库到1014位置:
                    _taskType = MainTaskTypeEnum.自动出库;
                    _taskState = MainTaskStatusEnum.出库中;
                    _InOutFlag = MainInOutFlagEnum.出库;
                    break;
                case AddTransferTaskEnum.位置1009到位置1011:
                case AddTransferTaskEnum.位置1011转移到1014位置:
                case AddTransferTaskEnum.位置1014到1020:
                    _taskType = MainTaskTypeEnum.空托转运;
                    _taskState = MainTaskStatusEnum.待转运;
                    _InOutFlag = MainInOutFlagEnum.转运;
                    break;
                case AddTransferTaskEnum.位置1011转移到立体库中:
                    _taskType = MainTaskTypeEnum.自动入库;
                    _taskState = MainTaskStatusEnum.入库中;
                    _InOutFlag = MainInOutFlagEnum.入库;
                    break;
                default:
                    throw new Exception("不支持的类型");
            }
            mainTask.TaskType = Convert.ToInt32(_taskType);
            mainTask.TaskTypeName = _taskType.ToString();
            mainTask.TaskState = Convert.ToInt32(_taskState);
            mainTask.TaskStateName = _taskState.ToString();
            mainTask.InOutFlag = (int)_InOutFlag;
            mainTask.InOutFlagName = _InOutFlag.ToString();
        }
        /// <summary>
        /// æ˜¯å¦å…è®¸ç»™1014发送目标点是1014的任务
        /// </summary>
        /// <param name="context"></param>
        /// <param name="stationCode"></param>
        /// <param name="store"></param>
        /// <returns>true:允许,false:不允许</returns>
        public static bool IsAllowSendTaskToPlace1014(DbModel context, string stationCode, ref V_AllStore store)
        {
            var isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(stationCode);
            var isExistOtherTaskDoing = PartTaskHandler.IsExistOtherTaskDoing(stationCode);
            var isSys_HasCatogryForRgvStattion = MyExtendHelper.IsSys_HasCatogryForRgvStattion(context, stationCode, ref store);//1014上是否有系统库存
            var isExistOtherTaskDoingForDeviceTaskTypeEnum_立库空托到拆盘机入口 = PartTaskHandler.IsExistOtherTaskDoingForDeviceTaskTypeEnum(DeviceTaskTypeEnum.立库空托到拆盘机入口);
            var isExistOtherTaskDoingForDeviceTaskTypeEnum_空托转运到拆盘机入口 = PartTaskHandler.IsExistOtherTaskDoingForDeviceTaskTypeEnum(DeviceTaskTypeEnum.空托转运到拆盘机入口);
            if (!isSys_HasCatogryForRgvStattion && //没有系统库存
                !isGD_HasCatogryForRgvStattion &&  //光电显示无货
                !isExistOtherTaskDoing //没有其他任务占用
                && isExistOtherTaskDoingForDeviceTaskTypeEnum_立库空托到拆盘机入口 == false
                && isExistOtherTaskDoingForDeviceTaskTypeEnum_空托转运到拆盘机入口 == false
                )
            {
                return true;
            }
            return false;
        }
        /// <summary>
        /// ç«™ç‚¹å…‰ç”µæ˜¯å¦æœ‰è´§(只需要判断其中一个光电,就认为,有货)
        /// </summary>
        /// <param name="stationCode"></param>
        /// <returns>true:光电有货,false:光电无货</returns>
        public static bool IsGD_HasCatogryForRgvStattion(string stationCode)
        {
            if (FormCC.rgvView == null) return false;
            var rgv = FormCC.rgvView.R_RgvForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
            if (rgv.R_PH_2 == true || rgv.R_PH_1 == true)
            {//只需要判断其中一个光电,就认为,有货
                return true;
            }
            return false;
        }
        /// <summary>
        /// ç«™ç‚¹å…‰ç”µæ˜¯å¦æœ‰è´§(两个光电必须全是有货)
        /// </summary>
        /// <param name="stationCode"></param>
        /// <returns>true:光电有货,false:光电无货</returns>
        public static bool IsGD_HasCatogryForRgvStattionFor2(string stationCode)
        {
            if (FormCC.rgvView == null) return false;
            var rgv = FormCC.rgvView.R_RgvForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
            if (rgv.R_PH_1 == true && rgv.R_PH_2 == true)
            {//有货,两个光电必须全是有货
                return true;
            }
            return false;
        }
        /// <summary>
        /// ç«™ç‚¹PH_1光电是否有货 ï¼ˆPH_1是指他的停止光电)
        /// </summary>
        /// <param name="stationCode"></param>
        /// <returns>true:光电有货,false:光电无货</returns>
        public static bool IsGD_HasCatogryForRgvStattionForPH_1(string stationCode)
        {
            if (FormCC.rgvView == null) return false;
            var rgv = FormCC.rgvView.R_RgvForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
            if (rgv.R_PH_1 == true)
            {//PH_1有货
                return true;
            }
            return false;
        }
        /// <summary>
        /// ç«™ç‚¹PH_2光电是否有货 ï¼ˆPH_2是指他的有货光电)
        /// </summary>
        /// <param name="stationCode"></param>
        /// <returns>true:光电有货,false:光电无货</returns>
        public static bool IsGD_HasCatogryForRgvStattionForPH_2(string stationCode)
        {
            var rgv = FormCC.rgvView.R_RgvForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
            if (rgv.R_PH_2 == true)
            {//PH_2有货
                return true;
            }
            return false;
        }
        /// <summary>
        /// ç«™ç‚¹ç³»ç»Ÿæ˜¯å¦æœ‰è´§
        /// </summary>
        /// <param name="stationCode"></param>
        /// <returns>true:系统有货,false:系统无货</returns>
        public static bool IsSys_HasCatogryForRgvStattion(DbModel context, string stationCode, ref V_AllStore store)
        {
            store = StoreHandler.GetV_AllStoreByRgvStationCode(context, stationCode);
            if (store != null)
            {//有货
                return true;
            }
            return false;
        }
        public static FunRetEntity DoHandler(DbModel context, V_AllStore store, EDevice rgvStationCode)
        {
            try
            {
                SysUser user = new SysUser()
                {
                    ID = 0,
                    Name = SysGloble.WCSSystem
                };
                if (rgvStationCode == EDevice.空托缓存1011)
                {
                    //判断1014是否有空位
                    var queryRgvStationCode = ((int)EDevice.拆盘机入口1014).ToString();
                    V_AllStore my1014Store = null;
                    var isAllow = MyExtendHelper.IsAllowSendTaskToPlace1014(context, queryRgvStationCode, ref my1014Store);
                    if (isAllow)
                    {
                        return AddTransferTask(AddTransferTaskEnum.位置1011转移到1014位置, rgvStationCode, user, store);
                    }
                    else
                    {
                        //寻找立体库是否有库存
                        return AddTransferTask(AddTransferTaskEnum.位置1011转移到立体库中, rgvStationCode, user, store);
                    }
                    //*/
                    //var isGD_HasCatogryForRgvStattion = IsGD_HasCatogryForRgvStattion(queryRgvStationCode);
                    //var store_1014_count = context.V_AllStore.Where(x => x.RgvStationCode == queryRgvStationCode).Count();
                    //if (store_1014_count > 0 || isGD_HasCatogryForRgvStattion)
                    //{
                    //}
                    //else
                    //{//1014无货,创建任务
                    //    return MainTaskHandler.AddTransferTask(AddTransferTaskEnum.转移到1014位置, rgvStationCode, user, store);
                    //}
                }
                else if (rgvStationCode == EDevice.空托缓存1009)
                {
                    return AddTransferTask(AddTransferTaskEnum.位置1009到位置1011, rgvStationCode, user, store);
                }
                else if (rgvStationCode == EDevice.拆盘机入口1014)
                {//拆盘机入口1014处新建从立体库叫托盘任务
                    return AddTransferTask(AddTransferTaskEnum.立体库到1014位置, rgvStationCode, user, store);
                }
                else if (rgvStationCode == EDevice.拆盘机1020)
                {// ä»Ž1014到1020
                    return AddTransferTask(AddTransferTaskEnum.位置1014到1020, rgvStationCode, user, store);
                }
                return null;
            }
            catch (Exception ex)
            {
                return FunRetEntity.Fail("新增空托盘转运任务异常:" + ex.Message);
            }
        }
        /// <summary>
        /// åˆ¤æ–­ä»»åŠ¡æ˜¯å¦å…è®¸æ¨¡æ‹Ÿå®Œæˆ(虚拟模拟或者是强制完成模式)
        /// </summary>
        /// <param name="_task"></param>
        /// <returns></returns>
        public static bool IsAllowSimulatorHandle(Task_Part _task)
        {
            if (WCSConfigHelper.GetConfig_IsSimulationPLC())
            {
                return true;
            }
            if (_task != null && _task.IsAllowSimulateExecute == true)
            {
                return true;
            }
            return false;
        }
    }
}
CC/iWareCC_ASRS/Common/Helper/WmsRequestHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
using iWareCommon.Utils;
using iWareModel;
using iWareModel.Entity.AGV;
using Newtonsoft.Json;
using System;
using XiGang.Core.Model.PostParamModels.Task;
using XiGang.Core.Model.ViewModels;
namespace iWareCC.Common.Helper
{
    public class WmsRequestHelper
    {
        /// <summary>
        /// è¥¿æ¸¯çš„WMS APi
        /// </summary>
        private static string wmsApi = ConfigHelper.GetConfigString("XiGang_WMSApi");
        /// <summary>
        /// è¥¿æ¸¯WMS的组盘
        /// </summary>
        private static string _XiGang_WMSApi_SalverMaterialBind = ConfigHelper.GetConfigString("XiGang_WMSApi_SalverMaterialBind");
        /// <summary>
        /// è¥¿æ¸¯WMS的组盘下发
        /// </summary>
        private static string _XiGang_WMSApi_IssueInStoreTask = ConfigHelper.GetConfigString("XiGang_WMSApi_IssueInStoreTask");
        /// <summary>
        /// ä¸´æ—¶-调用WMS çš„æµ‹è¯• btjReceive æŽ¥å£
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static string test_btjReceive(string cargNo)
        {
            //var cargNo = "_7423K041371B-DHP15Q0086*01";
            var agvResults = new HTTPService(wmsApi).getContentForString("Test/btjReceive?cargoNo=" + cargNo, Guid.NewGuid(), 60);
            return agvResults;
        }
        /// <summary>
        /// ä¸´æ—¶-调用WMS çš„æµ‹è¯•getEngineInfo接口
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static string test_getEngineInfo(string cargNo)
        {
            //var cargNo = "_7423K041371B-DHP15Q0086*01";
            var agvResults = new HTTPService(wmsApi).getContentForString("Test/getEngineInfo?cargoNo=" + cargNo, Guid.NewGuid(), 60);
            return agvResults;
        }
        /// <summary>
        /// è°ƒç”¨WMS çš„组盘 æŽ¥å£
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static MessageModel<string> SalverMaterialBind(AddMainTaskPostParam param)
        {
            var agvResults = new HTTPService(wmsApi)
            .postContentForString(_XiGang_WMSApi_SalverMaterialBind, JsonConvert.SerializeObject(param), Guid.NewGuid().ToString(), 60);
            MessageModel<string> ret = JsonConvert.DeserializeObject<MessageModel<string>>(agvResults);
            return ret;
            //var agvResults = HttpHelper.GetHttpResponse(wmsApi+_XiGang_WMSApi_SalverMaterialBind, JsonConvert.SerializeObject(param), Guid.NewGuid().ToString(), 60);
            //MessageModel<string> ret = JsonConvert.DeserializeObject<MessageModel<string>>(agvResults);
            //return ret;
        }
        /// <summary>
        /// è°ƒç”¨WMS çš„组盘下发 æŽ¥å£
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static MessageModel<string> IssueInStoreTask(int mainTaskId)
        {
            var agvResults = new HTTPService(wmsApi)
            .postContentForString(_XiGang_WMSApi_IssueInStoreTask + "?mainTaskId=" + mainTaskId, "", Guid.NewGuid().ToString(), 60);
            MessageModel<string> ret = JsonConvert.DeserializeObject<MessageModel<string>>(agvResults);
            return ret;
        }
        /// <summary>
        /// è°ƒç”¨WMS çš„重新获取发动机信息 æŽ¥å£
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static MesRetModel2<MesRetProductModel> GetEngineInfo(string cargoNo)
        {
            var agvResults = new HTTPService(wmsApi)
            .getContentForString("Test/getEngineInfo" + "?cargoNo=" + cargoNo, Guid.NewGuid(), 60);
            MesRetModel2<MesRetProductModel> ret = JsonConvert.DeserializeObject<MesRetModel2<MesRetProductModel>>(agvResults);
            return ret;
        }
        /// <summary>
        /// è°ƒç”¨WMS çš„ å‘动机信息,并赋值 æŽ¥å£
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static MessageModel<string> UpdateEngineInfo(UpdateEngineInfoParam param)
        {
            var agvResults = new HTTPService(wmsApi)
            .postContentForString("Task_Main/UpdateEngineInfo", JsonConvert.SerializeObject(param), Guid.NewGuid().ToString(), 60);
            MessageModel<string> ret = JsonConvert.DeserializeObject<MessageModel<string>>(agvResults);
            return ret;
        }
    }
}
CC/iWareCC_ASRS/Common/MyMesService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
using iWareCommon.Utils;
using iWareModel;
using iWareSql.DBModel;
using Newtonsoft.Json;
using System;
using System.Threading.Tasks;
using XiGang.Core.Model.ViewModels;
namespace iWareCC
{
    public class MyMesService
    {
        /// <summary>
        /// MES提供某个发动机的详细信息
        /// </summary>
        /// <param name="_barCode"></param>
        public static string getEngineInfo(string mes_url, string XiGang_Mes_Url_getEngineInfo, string token, string _barCode)
        {
            return null;
            //HTTPService service = new HTTPService(mes_url);
            //var param = new
            //{
            //    barCode = _barCode
            //};
            //Log4NetHelper.WriteInfoLog(LogType.CCWCFService, "MES提供某个发动机的详细信息getEngineInfo接收参数:mes_url:" + mes_url + ",XiGang_Mes_Url_getEngineInfo:" + XiGang_Mes_Url_getEngineInfo + ",token:" + token + ",_barCode:" + _barCode);
            //var res = service.postContentForString(XiGang_Mes_Url_getEngineInfo, JsonConvert.SerializeObject(param), token);
            //if (res != null)
            //{
            //    Log4NetHelper.WriteInfoLog(LogType.CCWCFService, "MES提供某个发动机的详细信息getEngineInfo接收参数:mes_url:" + mes_url + ",XiGang_Mes_Url_getEngineInfo:" + XiGang_Mes_Url_getEngineInfo + ",token:" + token + ",_barCode:" + _barCode + ",返回值:" + res);
            //}
            //return res;
        }
    }
}
CC/iWareCC_ASRS/Common/SystemValue.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,224 @@

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace iWareCC
{
    /// <summary>
    /// ç³»ç»Ÿå˜é‡
    /// </summary>
    public class SystemValue
    {
        /// <summary>
        /// ç³»ç»Ÿå¯åŠ¨çš„GUID
        /// </summary>
        public static string SystemStartGuid = string.Empty;
        /// <summary>
        /// æ¨¡å¼æ˜¯å¦å¯åЍ
        /// </summary>
        public static bool isStartedModel = false;
        /// <summary>
        /// å»¶è¿Ÿçº¿ç¨‹æ‰§è¡Œçš„æ—¶é—´ï¼ˆæ¯«ç§’)
        /// </summary>
        public static int DelayExcuteNumber = 2000;
        #region å †åž›æœº
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œå †åž›æœº1号任务线程
        /// </summary>
        public static bool isAllowRuning_SrmTaskThreadService_1 = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œå †åž›æœº1号任务结束线程
        /// </summary>
        public static bool isAllowRuning_SrmTaskThreadService_1_Finish = false;
        /// <summary>
        /// æ˜¯å¦ å»¶è¿Ÿæ‰§è¡Œ æ‰§è¡Œå †åž›æœº1号任务结束线程
        /// </summary>
        public static bool isDelayExcute_SrmTaskThreadService_1_Finish = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œå †åž›æœº2号任务线程
        /// </summary>
        public static bool isAllowRuning_SrmTaskThreadService_2 = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œå †åž›æœº2号任务结束线程
        /// </summary>
        public static bool isAllowRuning_SrmTaskThreadService_2_Finish = false;
        /// <summary>
        /// æ˜¯å¦ å»¶è¿Ÿæ‰§è¡Œ æ‰§è¡Œå †åž›æœº2号任务结束线程
        /// </summary>
        public static bool isDelayExcute_SrmTaskThreadService_2_Finish = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œå †åž›æœº3号任务线程
        /// </summary>
        public static bool isAllowRuning_SrmTaskThreadService_3 = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œå †åž›æœº3号任务结束线程
        /// </summary>
        public static bool isAllowRuning_SrmTaskThreadService_3_Finish = false;
        /// <summary>
        /// æ˜¯å¦ å»¶è¿Ÿæ‰§è¡Œ æ‰§è¡Œå †åž›æœº3号任务结束线程
        /// </summary>
        public static bool isDelayExcute_SrmTaskThreadService_3_Finish = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œå †åž›æœº4号任务线程
        /// </summary>
        public static bool isAllowRuning_SrmTaskThreadService_4 = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œå †åž›æœº4号任务结束线程
        /// </summary>
        public static bool isAllowRuning_SrmTaskThreadService_4_Finish = false;
        /// <summary>
        /// æ˜¯å¦ å»¶è¿Ÿæ‰§è¡Œ æ‰§è¡Œå †åž›æœº4号任务结束线程
        /// </summary>
        public static bool isDelayExcute_SrmTaskThreadService_4_Finish = false;
        #endregion
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œç«‹åº“输送线任务线程
        /// </summary>
        public static bool isAllowRuning_ConveyorsTaskThreadService = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œç«‹åº“输送线结束任务线程
        /// </summary>
        public static bool isAllowRuning_ConveyorsTaskThreadService_Finish = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡ŒRgv任务线程
        /// </summary>
        public static bool isAllowRuning_RgvThreadService = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡ŒRgv任务结束线程
        /// </summary>
        public static bool isAllowRuning_RgvThreadService_Finish = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡ŒRgv任务结束补偿线程
        /// </summary>
        public static bool isAllowRuning_RgvThreadService_Finish_BuChang = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ å¤„理下发中的出库计划任务
        /// </summary>
        public static bool isAllowRuning_HandlerIssuingTask = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ å¤„理虚拟出库的出库计划任务
        /// </summary>
        public static bool isAllowRuning_VirtualTaskNoOutPlanTaskHandler = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ ä»»åŠ¡åˆ†è§£çº¿ç¨‹
        /// </summary>
        public static bool isAllowRuning_MainTaskDecompose = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ ä»»åŠ¡åˆ†è§£çº¿ç¨‹-组盘入库
        /// </summary>
        public static bool isAllowRuning_MainTaskDecompose_ZPRK = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ å †åž›æœºå…¥å£æ‰«ç æ£€æµ‹çº¿ç¨‹
        /// </summary>
        public static bool isAllowRuning_LineInScan = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ æ¸…理数据线程
        /// </summary>
        public static bool isAllowRuning_DeleteData = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ AGV线程
        /// </summary>
        public static bool isAllowRuning_Agv = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ ç©ºæ‰˜è½¬è¿çº¿ç¨‹
        /// </summary>
        public static bool isAllowRuning_EmptySalverTransfer = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ è‡ªåŠ¨ç»„ç›˜ä»»åŠ¡
        /// </summary>
        public static bool isAllowRuning_AutoSalverMaterialBindTask = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ è‡ªåŠ¨ç»„ç›˜ä»»åŠ¡ä¸‹å‘
        /// </summary>
        public static bool isAllowRuning_AutoIssueInStoreTask = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ é‡æ–°èŽ·å–å‘åŠ¨æœºä¿¡æ¯
        /// </summary>
        public static bool isAllowRuning_AutoUpdateEngineInfoTask = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ 1014库位到1020线程
        /// </summary>
        public static bool isAllowRuning_Place1014To1020Task = false;
        /// <summary>
        /// æ˜¯å¦å…è®¸æ‰§è¡Œ 1009库位增加库存线程
        /// </summary>
        public static bool isAllowRuning_OutTaskRetryToMes = false;
        #region å·¥ä½œæ¨¡å¼
        /// <summary>
        /// æ˜¯å¦é€‰ä¸­äº† æ‰‹åŠ¨æ¨¡å¼
        /// </summary>
        public static bool rbHand_Checked = false;
        /// <summary>
        /// æ˜¯å¦é€‰ä¸­äº† è‡ªåŠ¨æ¨¡å¼
        /// </summary>
        public static bool rBNormal_Checked = false;
        /// <summary>
        /// æ˜¯å¦é€‰ä¸­äº† è°ƒè¯•模式
        /// </summary>
        public static bool rBDebug_Checked = false;
        /// <summary>
        /// æ˜¯å¦é€‰ä¸­äº† å…¥åº“模式
        /// </summary>
        public static bool rBOnlyIn_Checked = false;
        #endregion
        /// <summary>
        /// æ˜¯å¦é€‰ä¸­äº† ckBRgv上料任务
        /// </summary>
        public static bool ckBRgv上料任务 = false;
        /// <summary>
        /// æ˜¯å¦é€‰ä¸­äº† ckBRgv提前配板任务
        /// </summary>
        public static bool ckBRgv提前配板任务 = false;
    }
}
CC/iWareCC_ASRS/Common/SystemValueUtil.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@

using iWareModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace iWareCC.Common
{
    public class SystemValueUtil
    {
        /// <summary>
        /// å †åž›æœºå¼€å§‹å’Œç»“束线程是否延迟操作
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="threadDirectionEnum"></param>
        public static void DelayExcuteForSrmTaskThreadService(int deviceId, ThreadDirectionEnum threadDirectionEnum)
        {
            if (deviceId == (int)EDevice.一号堆垛机)
            {
                switch (threadDirectionEnum)
                {
                    case ThreadDirectionEnum.任务开始下发线程:
                        SystemValue.isDelayExcute_SrmTaskThreadService_1_Finish = true;
                        break;
                    case ThreadDirectionEnum.任务完成线程:
                        SystemValue.isDelayExcute_SrmTaskThreadService_1_Finish = false;
                        Thread.Sleep(SystemValue.DelayExcuteNumber);
                        break;
                }
            }
            else if (deviceId == (int)EDevice.二号堆垛机)
            {
                switch (threadDirectionEnum)
                {
                    case ThreadDirectionEnum.任务开始下发线程:
                        SystemValue.isDelayExcute_SrmTaskThreadService_2_Finish = true;
                        break;
                    case ThreadDirectionEnum.任务完成线程:
                        SystemValue.isDelayExcute_SrmTaskThreadService_2_Finish = false;
                        Thread.Sleep(SystemValue.DelayExcuteNumber);
                        break;
                }
            }
            else if (deviceId == (int)EDevice.三号堆垛机)
            {
                switch (threadDirectionEnum)
                {
                    case ThreadDirectionEnum.任务开始下发线程:
                        SystemValue.isDelayExcute_SrmTaskThreadService_3_Finish = true;
                        break;
                    case ThreadDirectionEnum.任务完成线程:
                        SystemValue.isDelayExcute_SrmTaskThreadService_3_Finish = false;
                        Thread.Sleep(SystemValue.DelayExcuteNumber);
                        break;
                }
            }
            else if (deviceId == (int)EDevice.四号堆垛机)
            {
                switch (threadDirectionEnum)
                {
                    case ThreadDirectionEnum.任务开始下发线程:
                        SystemValue.isDelayExcute_SrmTaskThreadService_4_Finish = true;
                        break;
                    case ThreadDirectionEnum.任务完成线程:
                        SystemValue.isDelayExcute_SrmTaskThreadService_4_Finish = false;
                        Thread.Sleep(SystemValue.DelayExcuteNumber);
                        break;
                }
            }
        }
    }
}
CC/iWareCC_ASRS/Common/SystemWarningMsg.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace iWareCC
{
    /// <summary>
    /// ç³»ç»Ÿè­¦å‘Šæç¤º
    /// </summary>
    public class SystemWarningMsg
    {
        /// <summary>
        /// å †åž›æœº1下发的警告消息
        /// </summary>
        public static string _lbl_Alert_Srm1Release = string.Empty;
        /// <summary>
        /// å †åž›æœº2下发的警告消息
        /// </summary>
        public static string _lbl_Alert_Srm2Release = string.Empty;
        /// <summary>
        /// å †åž›æœº3下发的警告消息
        /// </summary>
        public static string _lbl_Alert_Srm3Release = string.Empty;
        /// <summary>
        /// å †åž›æœº4下发的警告消息
        /// </summary>
        public static string _lbl_Alert_Srm4Release = string.Empty;
        /// <summary>
        /// å †åž›æœº1下发完成的警告消息
        /// </summary>
        public static string _lbl_Alert_Srm1ReleaseFinish = string.Empty;
        /// <summary>
        /// å †åž›æœº2下发完成的警告消息
        /// </summary>
        public static string _lbl_Alert_Srm2ReleaseFinish = string.Empty;
        /// <summary>
        /// å †åž›æœº3下发完成的警告消息
        /// </summary>
        public static string _lbl_Alert_Srm3ReleaseFinish = string.Empty;
        /// <summary>
        /// å †åž›æœº4下发完成的警告消息
        /// </summary>
        public static string _lbl_Alert_Srm4ReleaseFinish = string.Empty;
        /// <summary>
        /// RGV下发的警告消息
        /// </summary>
        public static string _lbl_Alert_RgvRelease = string.Empty;
        /// <summary>
        /// RGV任务完成确认的警告消息
        /// </summary>
        public static string _lbl_Alert_RgvReleaseFinish = string.Empty;
        /// <summary>
        /// RGV任务完成确认的警告消息(补偿)
        /// </summary>
        public static string _lbl_Alert_RgvReleaseFinish_BuChang = string.Empty;
        /// <summary>
        /// å¤„理下发中的出库计划任务的警告消息
        /// </summary>
        public static string _lbl_Alert_HandlerIssuingTask = string.Empty;
        /// <summary>
        /// å¤„理虚拟出库的出库计划任务的警告消息
        /// </summary>
        public static string _lbl_Alert_VirtualTaskNoOutPlanTaskHandler = string.Empty;
        /// <summary>
        /// ä»»åŠ¡åˆ†è§£çº¿ç¨‹çš„æ¶ˆæ¯
        /// </summary>
        public static string _lbl_Alert_MainTaskDecompose = string.Empty;
        /// <summary>
        /// ä»»åŠ¡åˆ†è§£çº¿ç¨‹-组盘入库的消息
        /// </summary>
        public static string _lbl_Alert_MainTaskDecompose_ZPRK = string.Empty;
        public static string _lbl_Alert_LineInScan = string.Empty;
        /// <summary>
        /// è¾“送线任务下发的警告消息
        /// </summary>
        public static string _lbl_Alert_ConveyorsRelease = string.Empty;
        /// <summary>
        /// è¾“送线任务完成确认的警告消息
        /// </summary>
        public static string _lbl_Alert_ConveyorsReleaseFinish = string.Empty;
        /// <summary>
        /// æ¸…理数据现场 çš„警告消息
        /// </summary>
        public static string _lbl_Alert_DeleteData = string.Empty;
        /// <summary>
        /// ç©ºæ‰˜ç›˜è½¬è¿ çš„警告消息
        /// </summary>
        public static string _lbl_Alert_EmptySalverTransfer = string.Empty;
        /// <summary>
        /// è‡ªåŠ¨ç»„ç›˜ä»»åŠ¡ çš„警告消息
        /// </summary>
        public static string _lbl_alert_AutoSalverMaterialBindTask = string.Empty;
        /// <summary>
        /// è‡ªåŠ¨ç»„ç›˜ä»»åŠ¡ä¸‹å‘ çš„警告消息
        /// </summary>
        public static string _lbl_alert_AutoIssueInStoreTask = string.Empty;
        /// <summary>
        /// é‡æ–°èŽ·å–å‘åŠ¨æœºä¿¡æ¯ çš„警告消息
        /// </summary>
        public static string _lbl_alert_AutoUpdateEngineInfoTask = string.Empty;
        /// <summary>
        /// 1014到1020 çš„警告消息
        /// </summary>
        public static string _lbl_Alert_Place1014To1020TaskTask = string.Empty;
        /// <summary>
        /// å‡ºåº“任务通知MES çš„警告消息
        /// </summary>
        public static string _lbl_Alert_OutTaskRetryToMes = string.Empty;
    }
}
CC/iWareCC_ASRS/Connected Services/RgvService/Reference.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1314 @@
//------------------------------------------------------------------------------
// <auto-generated>
//     æ­¤ä»£ç ç”±å·¥å…·ç”Ÿæˆã€‚
//     è¿è¡Œæ—¶ç‰ˆæœ¬:4.0.30319.42000
//
//     å¯¹æ­¤æ–‡ä»¶çš„æ›´æ”¹å¯èƒ½ä¼šå¯¼è‡´ä¸æ­£ç¡®çš„行为,并且如果
//     é‡æ–°ç”Ÿæˆä»£ç ï¼Œè¿™äº›æ›´æ”¹å°†ä¼šä¸¢å¤±ã€‚
// </auto-generated>
//------------------------------------------------------------------------------
namespace iWareCC.RgvService {
    using System.Runtime.Serialization;
    using System;
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="SdaResEntity", Namespace="http://schemas.datacontract.org/2004/07/iWareSda")]
    [System.SerializableAttribute()]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.RgvService.RgvView))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.RgvService.RgvDB2Obj))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.RgvService.RgvDB2ObjForReadComm[]))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.RgvService.RgvDB2ObjForReadComm))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.RgvService.RgvDB2ObjForWriteComm[]))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.RgvService.RgvDB2ObjForWriteComm))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.RgvService.DeviceWarningInfo[]))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.RgvService.DeviceWarningInfo))]
    public partial class SdaResEntity : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private object resDataField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string resMsgField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool resultField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public object resData {
            get {
                return this.resDataField;
            }
            set {
                if ((object.ReferenceEquals(this.resDataField, value) != true)) {
                    this.resDataField = value;
                    this.RaisePropertyChanged("resData");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string resMsg {
            get {
                return this.resMsgField;
            }
            set {
                if ((object.ReferenceEquals(this.resMsgField, value) != true)) {
                    this.resMsgField = value;
                    this.RaisePropertyChanged("resMsg");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool result {
            get {
                return this.resultField;
            }
            set {
                if ((this.resultField.Equals(value) != true)) {
                    this.resultField = value;
                    this.RaisePropertyChanged("result");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RgvView", Namespace="http://schemas.datacontract.org/2004/07/iWareSda")]
    [System.SerializableAttribute()]
    public partial class RgvView : iWareCC.RgvService.RgvDB2Obj {
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int DeviceIdField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string DeviceNameField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool IsConnectedField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private iWareCC.RgvService.DeviceWarningInfo[] R_Line_WarningDBListField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private iWareCC.RgvService.DeviceWarningInfo[] R_Rgv_WarningDBListField;
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int DeviceId {
            get {
                return this.DeviceIdField;
            }
            set {
                if ((this.DeviceIdField.Equals(value) != true)) {
                    this.DeviceIdField = value;
                    this.RaisePropertyChanged("DeviceId");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string DeviceName {
            get {
                return this.DeviceNameField;
            }
            set {
                if ((object.ReferenceEquals(this.DeviceNameField, value) != true)) {
                    this.DeviceNameField = value;
                    this.RaisePropertyChanged("DeviceName");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool IsConnected {
            get {
                return this.IsConnectedField;
            }
            set {
                if ((this.IsConnectedField.Equals(value) != true)) {
                    this.IsConnectedField = value;
                    this.RaisePropertyChanged("IsConnected");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public iWareCC.RgvService.DeviceWarningInfo[] R_Line_WarningDBList {
            get {
                return this.R_Line_WarningDBListField;
            }
            set {
                if ((object.ReferenceEquals(this.R_Line_WarningDBListField, value) != true)) {
                    this.R_Line_WarningDBListField = value;
                    this.RaisePropertyChanged("R_Line_WarningDBList");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public iWareCC.RgvService.DeviceWarningInfo[] R_Rgv_WarningDBList {
            get {
                return this.R_Rgv_WarningDBListField;
            }
            set {
                if ((object.ReferenceEquals(this.R_Rgv_WarningDBListField, value) != true)) {
                    this.R_Rgv_WarningDBListField = value;
                    this.RaisePropertyChanged("R_Rgv_WarningDBList");
                }
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RgvDB2Obj", Namespace="http://schemas.datacontract.org/2004/07/iWareSda")]
    [System.SerializableAttribute()]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.RgvService.RgvView))]
    public partial class RgvDB2Obj : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_1002_ScanField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_1004_ScanField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_1006_ScanField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_1007_ScanField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool R_1009_High1Field;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool R_1009_High2Field;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool R_1009_High3Field;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_1015_ScanField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_1019_CargoNoScanField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_1019_ScanField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int R_HandShakeField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int R_RGV_CoordinateField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool R_RGV_FinishField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private iWareCC.RgvService.RgvDB2ObjForReadComm[] R_RgvForReadCommListField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_RgvNoField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_1002_ScanFailACKField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_1002_ScanSuccessACKField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_1004_ScanFailACKField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_1004_ScanSuccessACKField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_1006_ScanFailACKField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_1006_ScanSuccessACKField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_1007_ScanFailACKField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_1007_ScanSuccessACKField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_1015_ReScanField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_1019_ReScanField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_HandShakeField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_Out_MaterialModelField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_Out_OrderNoField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_Out_SerialNumberField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_RGV_FinishACKField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private iWareCC.RgvService.RgvDB2ObjForWriteComm[] W_RgvForWriteCommListField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string R_1002_Scan {
            get {
                return this.R_1002_ScanField;
            }
            set {
                if ((object.ReferenceEquals(this.R_1002_ScanField, value) != true)) {
                    this.R_1002_ScanField = value;
                    this.RaisePropertyChanged("R_1002_Scan");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string R_1004_Scan {
            get {
                return this.R_1004_ScanField;
            }
            set {
                if ((object.ReferenceEquals(this.R_1004_ScanField, value) != true)) {
                    this.R_1004_ScanField = value;
                    this.RaisePropertyChanged("R_1004_Scan");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string R_1006_Scan {
            get {
                return this.R_1006_ScanField;
            }
            set {
                if ((object.ReferenceEquals(this.R_1006_ScanField, value) != true)) {
                    this.R_1006_ScanField = value;
                    this.RaisePropertyChanged("R_1006_Scan");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string R_1007_Scan {
            get {
                return this.R_1007_ScanField;
            }
            set {
                if ((object.ReferenceEquals(this.R_1007_ScanField, value) != true)) {
                    this.R_1007_ScanField = value;
                    this.RaisePropertyChanged("R_1007_Scan");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool R_1009_High1 {
            get {
                return this.R_1009_High1Field;
            }
            set {
                if ((this.R_1009_High1Field.Equals(value) != true)) {
                    this.R_1009_High1Field = value;
                    this.RaisePropertyChanged("R_1009_High1");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool R_1009_High2 {
            get {
                return this.R_1009_High2Field;
            }
            set {
                if ((this.R_1009_High2Field.Equals(value) != true)) {
                    this.R_1009_High2Field = value;
                    this.RaisePropertyChanged("R_1009_High2");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool R_1009_High3 {
            get {
                return this.R_1009_High3Field;
            }
            set {
                if ((this.R_1009_High3Field.Equals(value) != true)) {
                    this.R_1009_High3Field = value;
                    this.RaisePropertyChanged("R_1009_High3");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string R_1015_Scan {
            get {
                return this.R_1015_ScanField;
            }
            set {
                if ((object.ReferenceEquals(this.R_1015_ScanField, value) != true)) {
                    this.R_1015_ScanField = value;
                    this.RaisePropertyChanged("R_1015_Scan");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string R_1019_CargoNoScan {
            get {
                return this.R_1019_CargoNoScanField;
            }
            set {
                if ((object.ReferenceEquals(this.R_1019_CargoNoScanField, value) != true)) {
                    this.R_1019_CargoNoScanField = value;
                    this.RaisePropertyChanged("R_1019_CargoNoScan");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string R_1019_Scan {
            get {
                return this.R_1019_ScanField;
            }
            set {
                if ((object.ReferenceEquals(this.R_1019_ScanField, value) != true)) {
                    this.R_1019_ScanField = value;
                    this.RaisePropertyChanged("R_1019_Scan");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int R_HandShake {
            get {
                return this.R_HandShakeField;
            }
            set {
                if ((this.R_HandShakeField.Equals(value) != true)) {
                    this.R_HandShakeField = value;
                    this.RaisePropertyChanged("R_HandShake");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int R_RGV_Coordinate {
            get {
                return this.R_RGV_CoordinateField;
            }
            set {
                if ((this.R_RGV_CoordinateField.Equals(value) != true)) {
                    this.R_RGV_CoordinateField = value;
                    this.RaisePropertyChanged("R_RGV_Coordinate");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool R_RGV_Finish {
            get {
                return this.R_RGV_FinishField;
            }
            set {
                if ((this.R_RGV_FinishField.Equals(value) != true)) {
                    this.R_RGV_FinishField = value;
                    this.RaisePropertyChanged("R_RGV_Finish");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public iWareCC.RgvService.RgvDB2ObjForReadComm[] R_RgvForReadCommList {
            get {
                return this.R_RgvForReadCommListField;
            }
            set {
                if ((object.ReferenceEquals(this.R_RgvForReadCommListField, value) != true)) {
                    this.R_RgvForReadCommListField = value;
                    this.RaisePropertyChanged("R_RgvForReadCommList");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string R_RgvNo {
            get {
                return this.R_RgvNoField;
            }
            set {
                if ((object.ReferenceEquals(this.R_RgvNoField, value) != true)) {
                    this.R_RgvNoField = value;
                    this.RaisePropertyChanged("R_RgvNo");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_1002_ScanFailACK {
            get {
                return this.W_1002_ScanFailACKField;
            }
            set {
                if ((this.W_1002_ScanFailACKField.Equals(value) != true)) {
                    this.W_1002_ScanFailACKField = value;
                    this.RaisePropertyChanged("W_1002_ScanFailACK");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_1002_ScanSuccessACK {
            get {
                return this.W_1002_ScanSuccessACKField;
            }
            set {
                if ((this.W_1002_ScanSuccessACKField.Equals(value) != true)) {
                    this.W_1002_ScanSuccessACKField = value;
                    this.RaisePropertyChanged("W_1002_ScanSuccessACK");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_1004_ScanFailACK {
            get {
                return this.W_1004_ScanFailACKField;
            }
            set {
                if ((this.W_1004_ScanFailACKField.Equals(value) != true)) {
                    this.W_1004_ScanFailACKField = value;
                    this.RaisePropertyChanged("W_1004_ScanFailACK");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_1004_ScanSuccessACK {
            get {
                return this.W_1004_ScanSuccessACKField;
            }
            set {
                if ((this.W_1004_ScanSuccessACKField.Equals(value) != true)) {
                    this.W_1004_ScanSuccessACKField = value;
                    this.RaisePropertyChanged("W_1004_ScanSuccessACK");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_1006_ScanFailACK {
            get {
                return this.W_1006_ScanFailACKField;
            }
            set {
                if ((this.W_1006_ScanFailACKField.Equals(value) != true)) {
                    this.W_1006_ScanFailACKField = value;
                    this.RaisePropertyChanged("W_1006_ScanFailACK");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_1006_ScanSuccessACK {
            get {
                return this.W_1006_ScanSuccessACKField;
            }
            set {
                if ((this.W_1006_ScanSuccessACKField.Equals(value) != true)) {
                    this.W_1006_ScanSuccessACKField = value;
                    this.RaisePropertyChanged("W_1006_ScanSuccessACK");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_1007_ScanFailACK {
            get {
                return this.W_1007_ScanFailACKField;
            }
            set {
                if ((this.W_1007_ScanFailACKField.Equals(value) != true)) {
                    this.W_1007_ScanFailACKField = value;
                    this.RaisePropertyChanged("W_1007_ScanFailACK");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_1007_ScanSuccessACK {
            get {
                return this.W_1007_ScanSuccessACKField;
            }
            set {
                if ((this.W_1007_ScanSuccessACKField.Equals(value) != true)) {
                    this.W_1007_ScanSuccessACKField = value;
                    this.RaisePropertyChanged("W_1007_ScanSuccessACK");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_1015_ReScan {
            get {
                return this.W_1015_ReScanField;
            }
            set {
                if ((this.W_1015_ReScanField.Equals(value) != true)) {
                    this.W_1015_ReScanField = value;
                    this.RaisePropertyChanged("W_1015_ReScan");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_1019_ReScan {
            get {
                return this.W_1019_ReScanField;
            }
            set {
                if ((this.W_1019_ReScanField.Equals(value) != true)) {
                    this.W_1019_ReScanField = value;
                    this.RaisePropertyChanged("W_1019_ReScan");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_HandShake {
            get {
                return this.W_HandShakeField;
            }
            set {
                if ((this.W_HandShakeField.Equals(value) != true)) {
                    this.W_HandShakeField = value;
                    this.RaisePropertyChanged("W_HandShake");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string W_Out_MaterialModel {
            get {
                return this.W_Out_MaterialModelField;
            }
            set {
                if ((object.ReferenceEquals(this.W_Out_MaterialModelField, value) != true)) {
                    this.W_Out_MaterialModelField = value;
                    this.RaisePropertyChanged("W_Out_MaterialModel");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string W_Out_OrderNo {
            get {
                return this.W_Out_OrderNoField;
            }
            set {
                if ((object.ReferenceEquals(this.W_Out_OrderNoField, value) != true)) {
                    this.W_Out_OrderNoField = value;
                    this.RaisePropertyChanged("W_Out_OrderNo");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string W_Out_SerialNumber {
            get {
                return this.W_Out_SerialNumberField;
            }
            set {
                if ((object.ReferenceEquals(this.W_Out_SerialNumberField, value) != true)) {
                    this.W_Out_SerialNumberField = value;
                    this.RaisePropertyChanged("W_Out_SerialNumber");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_RGV_FinishACK {
            get {
                return this.W_RGV_FinishACKField;
            }
            set {
                if ((this.W_RGV_FinishACKField.Equals(value) != true)) {
                    this.W_RGV_FinishACKField = value;
                    this.RaisePropertyChanged("W_RGV_FinishACK");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public iWareCC.RgvService.RgvDB2ObjForWriteComm[] W_RgvForWriteCommList {
            get {
                return this.W_RgvForWriteCommListField;
            }
            set {
                if ((object.ReferenceEquals(this.W_RgvForWriteCommListField, value) != true)) {
                    this.W_RgvForWriteCommListField = value;
                    this.RaisePropertyChanged("W_RgvForWriteCommList");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RgvDB2ObjForReadComm", Namespace="http://schemas.datacontract.org/2004/07/iWareSda.Devices._3_Rgv.RgvModel")]
    [System.SerializableAttribute()]
    public partial class RgvDB2ObjForReadComm : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool R_ACKField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private short R_AlarmCodeField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_AlarmCodeMsgField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private short R_DestinationField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private short R_ModelField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool R_PH_1Field;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool R_PH_2Field;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private short R_ShapeField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private short R_StateField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int R_TaskIDField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string StationCodeField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool R_ACK {
            get {
                return this.R_ACKField;
            }
            set {
                if ((this.R_ACKField.Equals(value) != true)) {
                    this.R_ACKField = value;
                    this.RaisePropertyChanged("R_ACK");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public short R_AlarmCode {
            get {
                return this.R_AlarmCodeField;
            }
            set {
                if ((this.R_AlarmCodeField.Equals(value) != true)) {
                    this.R_AlarmCodeField = value;
                    this.RaisePropertyChanged("R_AlarmCode");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string R_AlarmCodeMsg {
            get {
                return this.R_AlarmCodeMsgField;
            }
            set {
                if ((object.ReferenceEquals(this.R_AlarmCodeMsgField, value) != true)) {
                    this.R_AlarmCodeMsgField = value;
                    this.RaisePropertyChanged("R_AlarmCodeMsg");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public short R_Destination {
            get {
                return this.R_DestinationField;
            }
            set {
                if ((this.R_DestinationField.Equals(value) != true)) {
                    this.R_DestinationField = value;
                    this.RaisePropertyChanged("R_Destination");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public short R_Model {
            get {
                return this.R_ModelField;
            }
            set {
                if ((this.R_ModelField.Equals(value) != true)) {
                    this.R_ModelField = value;
                    this.RaisePropertyChanged("R_Model");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool R_PH_1 {
            get {
                return this.R_PH_1Field;
            }
            set {
                if ((this.R_PH_1Field.Equals(value) != true)) {
                    this.R_PH_1Field = value;
                    this.RaisePropertyChanged("R_PH_1");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool R_PH_2 {
            get {
                return this.R_PH_2Field;
            }
            set {
                if ((this.R_PH_2Field.Equals(value) != true)) {
                    this.R_PH_2Field = value;
                    this.RaisePropertyChanged("R_PH_2");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public short R_Shape {
            get {
                return this.R_ShapeField;
            }
            set {
                if ((this.R_ShapeField.Equals(value) != true)) {
                    this.R_ShapeField = value;
                    this.RaisePropertyChanged("R_Shape");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public short R_State {
            get {
                return this.R_StateField;
            }
            set {
                if ((this.R_StateField.Equals(value) != true)) {
                    this.R_StateField = value;
                    this.RaisePropertyChanged("R_State");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int R_TaskID {
            get {
                return this.R_TaskIDField;
            }
            set {
                if ((this.R_TaskIDField.Equals(value) != true)) {
                    this.R_TaskIDField = value;
                    this.RaisePropertyChanged("R_TaskID");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string StationCode {
            get {
                return this.StationCodeField;
            }
            set {
                if ((object.ReferenceEquals(this.StationCodeField, value) != true)) {
                    this.StationCodeField = value;
                    this.RaisePropertyChanged("StationCode");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RgvDB2ObjForWriteComm", Namespace="http://schemas.datacontract.org/2004/07/iWareSda.Devices._3_Rgv.RgvModel")]
    [System.SerializableAttribute()]
    public partial class RgvDB2ObjForWriteComm : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string StationCodeField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private short W_DestinationField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_STPField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int W_TaskIDField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string StationCode {
            get {
                return this.StationCodeField;
            }
            set {
                if ((object.ReferenceEquals(this.StationCodeField, value) != true)) {
                    this.StationCodeField = value;
                    this.RaisePropertyChanged("StationCode");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public short W_Destination {
            get {
                return this.W_DestinationField;
            }
            set {
                if ((this.W_DestinationField.Equals(value) != true)) {
                    this.W_DestinationField = value;
                    this.RaisePropertyChanged("W_Destination");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_STP {
            get {
                return this.W_STPField;
            }
            set {
                if ((this.W_STPField.Equals(value) != true)) {
                    this.W_STPField = value;
                    this.RaisePropertyChanged("W_STP");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int W_TaskID {
            get {
                return this.W_TaskIDField;
            }
            set {
                if ((this.W_TaskIDField.Equals(value) != true)) {
                    this.W_TaskIDField = value;
                    this.RaisePropertyChanged("W_TaskID");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="DeviceWarningInfo", Namespace="http://schemas.datacontract.org/2004/07/iWareSda.Model")]
    [System.SerializableAttribute()]
    public partial class DeviceWarningInfo : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        private string Addressk__BackingFieldField;
        private string Codek__BackingFieldField;
        private string Contextk__BackingFieldField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(Name="<Address>k__BackingField", IsRequired=true)]
        public string Addressk__BackingField {
            get {
                return this.Addressk__BackingFieldField;
            }
            set {
                if ((object.ReferenceEquals(this.Addressk__BackingFieldField, value) != true)) {
                    this.Addressk__BackingFieldField = value;
                    this.RaisePropertyChanged("Addressk__BackingField");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(Name="<Code>k__BackingField", IsRequired=true)]
        public string Codek__BackingField {
            get {
                return this.Codek__BackingFieldField;
            }
            set {
                if ((object.ReferenceEquals(this.Codek__BackingFieldField, value) != true)) {
                    this.Codek__BackingFieldField = value;
                    this.RaisePropertyChanged("Codek__BackingField");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(Name="<Context>k__BackingField", IsRequired=true)]
        public string Contextk__BackingField {
            get {
                return this.Contextk__BackingFieldField;
            }
            set {
                if ((object.ReferenceEquals(this.Contextk__BackingFieldField, value) != true)) {
                    this.Contextk__BackingFieldField = value;
                    this.RaisePropertyChanged("Contextk__BackingField");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="RgvService.IRgvService")]
    public interface IRgvService {
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/ClearAlarm", ReplyAction="http://tempuri.org/IRgvService/ClearAlarmResponse")]
        iWareCC.RgvService.SdaResEntity ClearAlarm(int deviceId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/ClearAlarm", ReplyAction="http://tempuri.org/IRgvService/ClearAlarmResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> ClearAlarmAsync(int deviceId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/SendRgvTask", ReplyAction="http://tempuri.org/IRgvService/SendRgvTaskResponse")]
        iWareCC.RgvService.SdaResEntity SendRgvTask(int deviceId, int taskId, string sourcePlce, string toPlace);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/SendRgvTask", ReplyAction="http://tempuri.org/IRgvService/SendRgvTaskResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> SendRgvTaskAsync(int deviceId, int taskId, string sourcePlce, string toPlace);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/WriteStp", ReplyAction="http://tempuri.org/IRgvService/WriteStpResponse")]
        iWareCC.RgvService.SdaResEntity WriteStp(int deviceId, bool value, string stationCode);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/WriteStp", ReplyAction="http://tempuri.org/IRgvService/WriteStpResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> WriteStpAsync(int deviceId, bool value, string stationCode);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/GetRgvInfo", ReplyAction="http://tempuri.org/IRgvService/GetRgvInfoResponse")]
        iWareCC.RgvService.RgvView GetRgvInfo(int deviceId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/GetRgvInfo", ReplyAction="http://tempuri.org/IRgvService/GetRgvInfoResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.RgvView> GetRgvInfoAsync(int deviceId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/IsTaskFinish", ReplyAction="http://tempuri.org/IRgvService/IsTaskFinishResponse")]
        iWareCC.RgvService.SdaResEntity IsTaskFinish(int deviceId, int taskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/IsTaskFinish", ReplyAction="http://tempuri.org/IRgvService/IsTaskFinishResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> IsTaskFinishAsync(int deviceId, int taskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/DeleteRgvTask", ReplyAction="http://tempuri.org/IRgvService/DeleteRgvTaskResponse")]
        iWareCC.RgvService.SdaResEntity DeleteRgvTask(int deviceId, int taskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/DeleteRgvTask", ReplyAction="http://tempuri.org/IRgvService/DeleteRgvTaskResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> DeleteRgvTaskAsync(int deviceId, int taskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/IsRgvAuto", ReplyAction="http://tempuri.org/IRgvService/IsRgvAutoResponse")]
        iWareCC.RgvService.SdaResEntity IsRgvAuto(int deviceId, string stationCode);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/IsRgvAuto", ReplyAction="http://tempuri.org/IRgvService/IsRgvAutoResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> IsRgvAutoAsync(int deviceId, string stationCode);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/IsAllowSendTask", ReplyAction="http://tempuri.org/IRgvService/IsAllowSendTaskResponse")]
        iWareCC.RgvService.SdaResEntity IsAllowSendTask(bool isNeedValidateRealSourceAndToPlace, int deviceId, string stationCode, string toStationCode, bool isRgvTask);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/IsAllowSendTask", ReplyAction="http://tempuri.org/IRgvService/IsAllowSendTaskResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> IsAllowSendTaskAsync(bool isNeedValidateRealSourceAndToPlace, int deviceId, string stationCode, string toStationCode, bool isRgvTask);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/IsHaveHeatBeat", ReplyAction="http://tempuri.org/IRgvService/IsHaveHeatBeatResponse")]
        iWareCC.RgvService.SdaResEntity IsHaveHeatBeat(int deviceId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/IsHaveHeatBeat", ReplyAction="http://tempuri.org/IRgvService/IsHaveHeatBeatResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> IsHaveHeatBeatAsync(int deviceId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/Write1015ReScan", ReplyAction="http://tempuri.org/IRgvService/Write1015ReScanResponse")]
        iWareCC.RgvService.SdaResEntity Write1015ReScan(int deviceId, bool value);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/Write1015ReScan", ReplyAction="http://tempuri.org/IRgvService/Write1015ReScanResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> Write1015ReScanAsync(int deviceId, bool value);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/Write1019ReScan", ReplyAction="http://tempuri.org/IRgvService/Write1019ReScanResponse")]
        iWareCC.RgvService.SdaResEntity Write1019ReScan(int deviceId, bool value);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/Write1019ReScan", ReplyAction="http://tempuri.org/IRgvService/Write1019ReScanResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> Write1019ReScanAsync(int deviceId, bool value);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/WriteRGV_FinishACK", ReplyAction="http://tempuri.org/IRgvService/WriteRGV_FinishACKResponse")]
        iWareCC.RgvService.SdaResEntity WriteRGV_FinishACK(int deviceId, bool value, int plcTaskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/WriteRGV_FinishACK", ReplyAction="http://tempuri.org/IRgvService/WriteRGV_FinishACKResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> WriteRGV_FinishACKAsync(int deviceId, bool value, int plcTaskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/WriteScanValidateACK", ReplyAction="http://tempuri.org/IRgvService/WriteScanValidateACKResponse")]
        iWareCC.RgvService.SdaResEntity WriteScanValidateACK(bool isReset, int deviceId, string stationCode, bool value, int plcTaskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/WriteScanValidateACK", ReplyAction="http://tempuri.org/IRgvService/WriteScanValidateACKResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> WriteScanValidateACKAsync(bool isReset, int deviceId, string stationCode, bool value, int plcTaskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/WriteRGV_XigangGetDataForOut", ReplyAction="http://tempuri.org/IRgvService/WriteRGV_XigangGetDataForOutResponse")]
        iWareCC.RgvService.SdaResEntity WriteRGV_XigangGetDataForOut(int deviceId, string value__Out_MaterialModel, string value_Out_OrderNo, string value_Out_SerialNumber, int plcTaskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRgvService/WriteRGV_XigangGetDataForOut", ReplyAction="http://tempuri.org/IRgvService/WriteRGV_XigangGetDataForOutResponse")]
        System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> WriteRGV_XigangGetDataForOutAsync(int deviceId, string value__Out_MaterialModel, string value_Out_OrderNo, string value_Out_SerialNumber, int plcTaskId);
    }
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public interface IRgvServiceChannel : iWareCC.RgvService.IRgvService, System.ServiceModel.IClientChannel {
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class RgvServiceClient : System.ServiceModel.ClientBase<iWareCC.RgvService.IRgvService>, iWareCC.RgvService.IRgvService {
        public RgvServiceClient() {
        }
        public RgvServiceClient(string endpointConfigurationName) :
                base(endpointConfigurationName) {
        }
        public RgvServiceClient(string endpointConfigurationName, string remoteAddress) :
                base(endpointConfigurationName, remoteAddress) {
        }
        public RgvServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
                base(endpointConfigurationName, remoteAddress) {
        }
        public RgvServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
                base(binding, remoteAddress) {
        }
        public iWareCC.RgvService.SdaResEntity ClearAlarm(int deviceId) {
            return base.Channel.ClearAlarm(deviceId);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> ClearAlarmAsync(int deviceId) {
            return base.Channel.ClearAlarmAsync(deviceId);
        }
        public iWareCC.RgvService.SdaResEntity SendRgvTask(int deviceId, int taskId, string sourcePlce, string toPlace) {
            return base.Channel.SendRgvTask(deviceId, taskId, sourcePlce, toPlace);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> SendRgvTaskAsync(int deviceId, int taskId, string sourcePlce, string toPlace) {
            return base.Channel.SendRgvTaskAsync(deviceId, taskId, sourcePlce, toPlace);
        }
        public iWareCC.RgvService.SdaResEntity WriteStp(int deviceId, bool value, string stationCode) {
            return base.Channel.WriteStp(deviceId, value, stationCode);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> WriteStpAsync(int deviceId, bool value, string stationCode) {
            return base.Channel.WriteStpAsync(deviceId, value, stationCode);
        }
        public iWareCC.RgvService.RgvView GetRgvInfo(int deviceId) {
            return base.Channel.GetRgvInfo(deviceId);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.RgvView> GetRgvInfoAsync(int deviceId) {
            return base.Channel.GetRgvInfoAsync(deviceId);
        }
        public iWareCC.RgvService.SdaResEntity IsTaskFinish(int deviceId, int taskId) {
            return base.Channel.IsTaskFinish(deviceId, taskId);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> IsTaskFinishAsync(int deviceId, int taskId) {
            return base.Channel.IsTaskFinishAsync(deviceId, taskId);
        }
        public iWareCC.RgvService.SdaResEntity DeleteRgvTask(int deviceId, int taskId) {
            return base.Channel.DeleteRgvTask(deviceId, taskId);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> DeleteRgvTaskAsync(int deviceId, int taskId) {
            return base.Channel.DeleteRgvTaskAsync(deviceId, taskId);
        }
        public iWareCC.RgvService.SdaResEntity IsRgvAuto(int deviceId, string stationCode) {
            return base.Channel.IsRgvAuto(deviceId, stationCode);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> IsRgvAutoAsync(int deviceId, string stationCode) {
            return base.Channel.IsRgvAutoAsync(deviceId, stationCode);
        }
        public iWareCC.RgvService.SdaResEntity IsAllowSendTask(bool isNeedValidateRealSourceAndToPlace, int deviceId, string stationCode, string toStationCode, bool isRgvTask) {
            return base.Channel.IsAllowSendTask(isNeedValidateRealSourceAndToPlace, deviceId, stationCode, toStationCode, isRgvTask);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> IsAllowSendTaskAsync(bool isNeedValidateRealSourceAndToPlace, int deviceId, string stationCode, string toStationCode, bool isRgvTask) {
            return base.Channel.IsAllowSendTaskAsync(isNeedValidateRealSourceAndToPlace, deviceId, stationCode, toStationCode, isRgvTask);
        }
        public iWareCC.RgvService.SdaResEntity IsHaveHeatBeat(int deviceId) {
            return base.Channel.IsHaveHeatBeat(deviceId);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> IsHaveHeatBeatAsync(int deviceId) {
            return base.Channel.IsHaveHeatBeatAsync(deviceId);
        }
        public iWareCC.RgvService.SdaResEntity Write1015ReScan(int deviceId, bool value) {
            return base.Channel.Write1015ReScan(deviceId, value);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> Write1015ReScanAsync(int deviceId, bool value) {
            return base.Channel.Write1015ReScanAsync(deviceId, value);
        }
        public iWareCC.RgvService.SdaResEntity Write1019ReScan(int deviceId, bool value) {
            return base.Channel.Write1019ReScan(deviceId, value);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> Write1019ReScanAsync(int deviceId, bool value) {
            return base.Channel.Write1019ReScanAsync(deviceId, value);
        }
        public iWareCC.RgvService.SdaResEntity WriteRGV_FinishACK(int deviceId, bool value, int plcTaskId) {
            return base.Channel.WriteRGV_FinishACK(deviceId, value, plcTaskId);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> WriteRGV_FinishACKAsync(int deviceId, bool value, int plcTaskId) {
            return base.Channel.WriteRGV_FinishACKAsync(deviceId, value, plcTaskId);
        }
        public iWareCC.RgvService.SdaResEntity WriteScanValidateACK(bool isReset, int deviceId, string stationCode, bool value, int plcTaskId) {
            return base.Channel.WriteScanValidateACK(isReset, deviceId, stationCode, value, plcTaskId);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> WriteScanValidateACKAsync(bool isReset, int deviceId, string stationCode, bool value, int plcTaskId) {
            return base.Channel.WriteScanValidateACKAsync(isReset, deviceId, stationCode, value, plcTaskId);
        }
        public iWareCC.RgvService.SdaResEntity WriteRGV_XigangGetDataForOut(int deviceId, string value__Out_MaterialModel, string value_Out_OrderNo, string value_Out_SerialNumber, int plcTaskId) {
            return base.Channel.WriteRGV_XigangGetDataForOut(deviceId, value__Out_MaterialModel, value_Out_OrderNo, value_Out_SerialNumber, plcTaskId);
        }
        public System.Threading.Tasks.Task<iWareCC.RgvService.SdaResEntity> WriteRGV_XigangGetDataForOutAsync(int deviceId, string value__Out_MaterialModel, string value_Out_OrderNo, string value_Out_SerialNumber, int plcTaskId) {
            return base.Channel.WriteRGV_XigangGetDataForOutAsync(deviceId, value__Out_MaterialModel, value_Out_OrderNo, value_Out_SerialNumber, plcTaskId);
        }
    }
}
CC/iWareCC_ASRS/Connected Services/RgvService/Reference.svcmap
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<ReferenceGroup xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ID="fab14a6d-0ce4-4ddb-94d9-aa6ee50fe1e0" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">
  <ClientOptions>
    <GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
    <GenerateTaskBasedAsynchronousMethod>true</GenerateTaskBasedAsynchronousMethod>
    <EnableDataBinding>true</EnableDataBinding>
    <ExcludedTypes />
    <ImportXmlTypes>false</ImportXmlTypes>
    <GenerateInternalTypes>false</GenerateInternalTypes>
    <GenerateMessageContracts>false</GenerateMessageContracts>
    <NamespaceMappings />
    <CollectionMappings />
    <GenerateSerializableTypes>true</GenerateSerializableTypes>
    <Serializer>Auto</Serializer>
    <UseSerializerForFaults>true</UseSerializerForFaults>
    <ReferenceAllAssemblies>true</ReferenceAllAssemblies>
    <ReferencedAssemblies />
    <ReferencedDataContractTypes />
    <ServiceContractMappings />
  </ClientOptions>
  <MetadataSources>
    <MetadataSource Address="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/mex" Protocol="mex" SourceId="1" />
  </MetadataSources>
  <Metadata>
    <MetadataFile FileName="service1.wsdl" MetadataType="Wsdl" ID="bbbccb46-d180-4847-a436-9fc8d93c7c54" SourceId="1" SourceUrl="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/mex" />
    <MetadataFile FileName="service2.xsd" MetadataType="Schema" ID="d76972f2-a5eb-4ec5-88af-17e6d5401e9d" SourceId="1" SourceUrl="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/mex" />
    <MetadataFile FileName="service21.xsd" MetadataType="Schema" ID="eb834454-e2fd-456c-969d-a36853bf72f8" SourceId="1" SourceUrl="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/mex" />
    <MetadataFile FileName="iWareSda.xsd" MetadataType="Schema" ID="ef60672e-0240-4610-9de4-c9b8f90cc2f5" SourceId="1" SourceUrl="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/mex" />
    <MetadataFile FileName="iWareSda.Devices._3_Rgv.RgvModel.xsd" MetadataType="Schema" ID="16240695-2a3d-453f-81bf-cc901ce71320" SourceId="1" SourceUrl="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/mex" />
    <MetadataFile FileName="iWareSda.Model.xsd" MetadataType="Schema" ID="dfa60e9a-b24d-4746-8b5e-9d5146b67f17" SourceId="1" SourceUrl="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/mex" />
  </Metadata>
  <Extensions>
    <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
    <ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />
  </Extensions>
</ReferenceGroup>
CC/iWareCC_ASRS/Connected Services/RgvService/configuration.svcinfo
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<configurationSnapshot xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">
  <behaviors />
  <bindings>
    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data name=&quot;BasicHttpBinding_IRgvService1&quot; /&gt;" bindingType="basicHttpBinding" name="BasicHttpBinding_IRgvService1" />
  </bindings>
  <endpoints>
    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;BasicHttpBinding_IRgvService1&quot; contract=&quot;RgvService.IRgvService&quot; name=&quot;BasicHttpBinding_IRgvService1&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;BasicHttpBinding_IRgvService1&quot; contract=&quot;RgvService.IRgvService&quot; name=&quot;BasicHttpBinding_IRgvService1&quot; /&gt;" contractName="RgvService.IRgvService" name="BasicHttpBinding_IRgvService1" />
  </endpoints>
</configurationSnapshot>
CC/iWareCC_ASRS/Connected Services/RgvService/configuration91.svcinfo
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,201 @@
<?xml version="1.0" encoding="utf-8"?>
<SavedWcfConfigurationInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="9.1" CheckSum="VxDdPHzajEkVii92wy+Vh4kLVLtwaMIR1zWkMac6qZ0=">
  <bindingConfigurations>
    <bindingConfiguration bindingType="basicHttpBinding" name="BasicHttpBinding_IRgvService1">
      <properties>
        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>BasicHttpBinding_IRgvService1</serializedValue>
        </property>
        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>StrongWildcard</serializedValue>
        </property>
        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>65536</serializedValue>
        </property>
        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
        </property>
        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>0</serializedValue>
        </property>
        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>0</serializedValue>
        </property>
        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>0</serializedValue>
        </property>
        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>0</serializedValue>
        </property>
        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>0</serializedValue>
        </property>
        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.Text.UTF8Encoding</serializedValue>
        </property>
        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>Buffered</serializedValue>
        </property>
        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>Text</serializedValue>
        </property>
        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>
        </property>
        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>None</serializedValue>
        </property>
        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>
        </property>
        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>None</serializedValue>
        </property>
        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>None</serializedValue>
        </property>
        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
        </property>
        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>Never</serializedValue>
        </property>
        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>TransportSelected</serializedValue>
        </property>
        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>(集合)</serializedValue>
        </property>
        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>
        </property>
        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>UserName</serializedValue>
        </property>
        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>Default</serializedValue>
        </property>
      </properties>
    </bindingConfiguration>
  </bindingConfigurations>
  <endpoints>
    <endpoint name="BasicHttpBinding_IRgvService1" contract="RgvService.IRgvService" bindingType="basicHttpBinding" address="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/" bindingConfiguration="BasicHttpBinding_IRgvService1">
      <properties>
        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/</serializedValue>
        </property>
        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>basicHttpBinding</serializedValue>
        </property>
        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>BasicHttpBinding_IRgvService1</serializedValue>
        </property>
        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>RgvService.IRgvService</serializedValue>
        </property>
        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
        </property>
        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>&lt;Header /&gt;</serializedValue>
        </property>
        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
        </property>
        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
        </property>
        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
        </property>
        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
        </property>
        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
        </property>
        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
        </property>
        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
        </property>
        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>My</serializedValue>
        </property>
        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>LocalMachine</serializedValue>
        </property>
        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>FindBySubjectDistinguishedName</serializedValue>
        </property>
        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>False</serializedValue>
        </property>
        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>BasicHttpBinding_IRgvService1</serializedValue>
        </property>
        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
      </properties>
    </endpoint>
  </endpoints>
</SavedWcfConfigurationInformation>
CC/iWareCC_ASRS/Connected Services/RgvService/iWareCC.RgvService.RgvView.datasource
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
    This file is automatically generated by Visual Studio .Net. It is
    used to store generic object data source configuration information.
    Renaming the file extension or editing the content of this file may
    cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="RgvView" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
   <TypeInfo>iWareCC.RgvService.RgvView, Connected Services.RgvService.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
CC/iWareCC_ASRS/Connected Services/RgvService/iWareCC.RgvService.SdaResEntity.datasource
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
    This file is automatically generated by Visual Studio .Net. It is
    used to store generic object data source configuration information.
    Renaming the file extension or editing the content of this file may
    cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="SdaResEntity" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
   <TypeInfo>iWareCC.RgvService.SdaResEntity, Connected Services.RgvService.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
CC/iWareCC_ASRS/Connected Services/RgvService/iWareSda.Devices._3_Rgv.RgvModel.xsd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/iWareSda.Devices._3_Rgv.RgvModel" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/iWareSda.Devices._3_Rgv.RgvModel" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="ArrayOfRgvDB2ObjForReadComm">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="RgvDB2ObjForReadComm" nillable="true" type="tns:RgvDB2ObjForReadComm" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfRgvDB2ObjForReadComm" nillable="true" type="tns:ArrayOfRgvDB2ObjForReadComm" />
  <xs:complexType name="RgvDB2ObjForReadComm">
    <xs:sequence>
      <xs:element minOccurs="0" name="R_ACK" type="xs:boolean" />
      <xs:element minOccurs="0" name="R_AlarmCode" type="xs:short" />
      <xs:element minOccurs="0" name="R_AlarmCodeMsg" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="R_Destination" type="xs:short" />
      <xs:element minOccurs="0" name="R_Model" type="xs:short" />
      <xs:element minOccurs="0" name="R_PH_1" type="xs:boolean" />
      <xs:element minOccurs="0" name="R_PH_2" type="xs:boolean" />
      <xs:element minOccurs="0" name="R_Shape" type="xs:short" />
      <xs:element minOccurs="0" name="R_State" type="xs:short" />
      <xs:element minOccurs="0" name="R_TaskID" type="xs:int" />
      <xs:element minOccurs="0" name="StationCode" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="RgvDB2ObjForReadComm" nillable="true" type="tns:RgvDB2ObjForReadComm" />
  <xs:complexType name="ArrayOfRgvDB2ObjForWriteComm">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="RgvDB2ObjForWriteComm" nillable="true" type="tns:RgvDB2ObjForWriteComm" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfRgvDB2ObjForWriteComm" nillable="true" type="tns:ArrayOfRgvDB2ObjForWriteComm" />
  <xs:complexType name="RgvDB2ObjForWriteComm">
    <xs:sequence>
      <xs:element minOccurs="0" name="StationCode" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="W_Destination" type="xs:short" />
      <xs:element minOccurs="0" name="W_STP" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_TaskID" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="RgvDB2ObjForWriteComm" nillable="true" type="tns:RgvDB2ObjForWriteComm" />
</xs:schema>
CC/iWareCC_ASRS/Connected Services/RgvService/iWareSda.Model.xsd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/iWareSda.Model" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/iWareSda.Model" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="ArrayOfDeviceWarningInfo">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="DeviceWarningInfo" nillable="true" type="tns:DeviceWarningInfo" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfDeviceWarningInfo" nillable="true" type="tns:ArrayOfDeviceWarningInfo" />
  <xs:complexType name="DeviceWarningInfo">
    <xs:sequence>
      <xs:element name="_x003C_Address_x003E_k__BackingField" nillable="true" type="xs:string" />
      <xs:element name="_x003C_Code_x003E_k__BackingField" nillable="true" type="xs:string" />
      <xs:element name="_x003C_Context_x003E_k__BackingField" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DeviceWarningInfo" nillable="true" type="tns:DeviceWarningInfo" />
</xs:schema>
CC/iWareCC_ASRS/Connected Services/RgvService/iWareSda.xsd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/iWareSda" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/iWareSda" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="http://schemas.datacontract.org/2004/07/iWareSda.Model" />
  <xs:import namespace="http://schemas.datacontract.org/2004/07/iWareSda.Devices._3_Rgv.RgvModel" />
  <xs:complexType name="SdaResEntity">
    <xs:sequence>
      <xs:element minOccurs="0" name="resData" nillable="true" type="xs:anyType" />
      <xs:element minOccurs="0" name="resMsg" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="result" type="xs:boolean" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="SdaResEntity" nillable="true" type="tns:SdaResEntity" />
  <xs:complexType name="RgvView">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:RgvDB2Obj">
        <xs:sequence>
          <xs:element minOccurs="0" name="DeviceId" type="xs:int" />
          <xs:element minOccurs="0" name="DeviceName" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="IsConnected" type="xs:boolean" />
          <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/iWareSda.Model" minOccurs="0" name="R_Line_WarningDBList" nillable="true" type="q1:ArrayOfDeviceWarningInfo" />
          <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/iWareSda.Model" minOccurs="0" name="R_Rgv_WarningDBList" nillable="true" type="q2:ArrayOfDeviceWarningInfo" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="RgvView" nillable="true" type="tns:RgvView" />
  <xs:complexType name="RgvDB2Obj">
    <xs:sequence>
      <xs:element minOccurs="0" name="R_1002_Scan" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="R_1004_Scan" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="R_1006_Scan" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="R_1007_Scan" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="R_1009_High1" type="xs:boolean" />
      <xs:element minOccurs="0" name="R_1009_High2" type="xs:boolean" />
      <xs:element minOccurs="0" name="R_1009_High3" type="xs:boolean" />
      <xs:element minOccurs="0" name="R_1015_Scan" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="R_1019_CargoNoScan" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="R_1019_Scan" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="R_HandShake" type="xs:int" />
      <xs:element minOccurs="0" name="R_RGV_Coordinate" type="xs:int" />
      <xs:element minOccurs="0" name="R_RGV_Finish" type="xs:boolean" />
      <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/iWareSda.Devices._3_Rgv.RgvModel" minOccurs="0" name="R_RgvForReadCommList" nillable="true" type="q3:ArrayOfRgvDB2ObjForReadComm" />
      <xs:element minOccurs="0" name="R_RgvNo" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="W_1002_ScanFailACK" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_1002_ScanSuccessACK" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_1004_ScanFailACK" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_1004_ScanSuccessACK" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_1006_ScanFailACK" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_1006_ScanSuccessACK" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_1007_ScanFailACK" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_1007_ScanSuccessACK" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_1015_ReScan" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_1019_ReScan" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_HandShake" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_Out_MaterialModel" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="W_Out_OrderNo" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="W_Out_SerialNumber" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="W_RGV_FinishACK" type="xs:boolean" />
      <xs:element xmlns:q4="http://schemas.datacontract.org/2004/07/iWareSda.Devices._3_Rgv.RgvModel" minOccurs="0" name="W_RgvForWriteCommList" nillable="true" type="q4:ArrayOfRgvDB2ObjForWriteComm" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="RgvDB2Obj" nillable="true" type="tns:RgvDB2Obj" />
</xs:schema>
CC/iWareCC_ASRS/Connected Services/RgvService/service1.wsdl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,288 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" name="RgvService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
    <xsd:schema targetNamespace="http://tempuri.org/Imports">
      <xsd:import namespace="http://tempuri.org/" />
      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
      <xsd:import namespace="http://schemas.datacontract.org/2004/07/iWareSda" />
      <xsd:import namespace="http://schemas.datacontract.org/2004/07/iWareSda.Devices._3_Rgv.RgvModel" />
      <xsd:import namespace="http://schemas.datacontract.org/2004/07/iWareSda.Model" />
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="IRgvService_ClearAlarm_InputMessage">
    <wsdl:part name="parameters" element="tns:ClearAlarm" />
  </wsdl:message>
  <wsdl:message name="IRgvService_ClearAlarm_OutputMessage">
    <wsdl:part name="parameters" element="tns:ClearAlarmResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_SendRgvTask_InputMessage">
    <wsdl:part name="parameters" element="tns:SendRgvTask" />
  </wsdl:message>
  <wsdl:message name="IRgvService_SendRgvTask_OutputMessage">
    <wsdl:part name="parameters" element="tns:SendRgvTaskResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_WriteStp_InputMessage">
    <wsdl:part name="parameters" element="tns:WriteStp" />
  </wsdl:message>
  <wsdl:message name="IRgvService_WriteStp_OutputMessage">
    <wsdl:part name="parameters" element="tns:WriteStpResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_GetRgvInfo_InputMessage">
    <wsdl:part name="parameters" element="tns:GetRgvInfo" />
  </wsdl:message>
  <wsdl:message name="IRgvService_GetRgvInfo_OutputMessage">
    <wsdl:part name="parameters" element="tns:GetRgvInfoResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_IsTaskFinish_InputMessage">
    <wsdl:part name="parameters" element="tns:IsTaskFinish" />
  </wsdl:message>
  <wsdl:message name="IRgvService_IsTaskFinish_OutputMessage">
    <wsdl:part name="parameters" element="tns:IsTaskFinishResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_DeleteRgvTask_InputMessage">
    <wsdl:part name="parameters" element="tns:DeleteRgvTask" />
  </wsdl:message>
  <wsdl:message name="IRgvService_DeleteRgvTask_OutputMessage">
    <wsdl:part name="parameters" element="tns:DeleteRgvTaskResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_IsRgvAuto_InputMessage">
    <wsdl:part name="parameters" element="tns:IsRgvAuto" />
  </wsdl:message>
  <wsdl:message name="IRgvService_IsRgvAuto_OutputMessage">
    <wsdl:part name="parameters" element="tns:IsRgvAutoResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_IsAllowSendTask_InputMessage">
    <wsdl:part name="parameters" element="tns:IsAllowSendTask" />
  </wsdl:message>
  <wsdl:message name="IRgvService_IsAllowSendTask_OutputMessage">
    <wsdl:part name="parameters" element="tns:IsAllowSendTaskResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_IsHaveHeatBeat_InputMessage">
    <wsdl:part name="parameters" element="tns:IsHaveHeatBeat" />
  </wsdl:message>
  <wsdl:message name="IRgvService_IsHaveHeatBeat_OutputMessage">
    <wsdl:part name="parameters" element="tns:IsHaveHeatBeatResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_Write1015ReScan_InputMessage">
    <wsdl:part name="parameters" element="tns:Write1015ReScan" />
  </wsdl:message>
  <wsdl:message name="IRgvService_Write1015ReScan_OutputMessage">
    <wsdl:part name="parameters" element="tns:Write1015ReScanResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_Write1019ReScan_InputMessage">
    <wsdl:part name="parameters" element="tns:Write1019ReScan" />
  </wsdl:message>
  <wsdl:message name="IRgvService_Write1019ReScan_OutputMessage">
    <wsdl:part name="parameters" element="tns:Write1019ReScanResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_WriteRGV_FinishACK_InputMessage">
    <wsdl:part name="parameters" element="tns:WriteRGV_FinishACK" />
  </wsdl:message>
  <wsdl:message name="IRgvService_WriteRGV_FinishACK_OutputMessage">
    <wsdl:part name="parameters" element="tns:WriteRGV_FinishACKResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_WriteScanValidateACK_InputMessage">
    <wsdl:part name="parameters" element="tns:WriteScanValidateACK" />
  </wsdl:message>
  <wsdl:message name="IRgvService_WriteScanValidateACK_OutputMessage">
    <wsdl:part name="parameters" element="tns:WriteScanValidateACKResponse" />
  </wsdl:message>
  <wsdl:message name="IRgvService_WriteRGV_XigangGetDataForOut_InputMessage">
    <wsdl:part name="parameters" element="tns:WriteRGV_XigangGetDataForOut" />
  </wsdl:message>
  <wsdl:message name="IRgvService_WriteRGV_XigangGetDataForOut_OutputMessage">
    <wsdl:part name="parameters" element="tns:WriteRGV_XigangGetDataForOutResponse" />
  </wsdl:message>
  <wsdl:portType name="IRgvService">
    <wsdl:operation name="ClearAlarm">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/ClearAlarm" message="tns:IRgvService_ClearAlarm_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/ClearAlarmResponse" message="tns:IRgvService_ClearAlarm_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="SendRgvTask">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/SendRgvTask" message="tns:IRgvService_SendRgvTask_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/SendRgvTaskResponse" message="tns:IRgvService_SendRgvTask_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="WriteStp">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/WriteStp" message="tns:IRgvService_WriteStp_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/WriteStpResponse" message="tns:IRgvService_WriteStp_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="GetRgvInfo">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/GetRgvInfo" message="tns:IRgvService_GetRgvInfo_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/GetRgvInfoResponse" message="tns:IRgvService_GetRgvInfo_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsTaskFinish">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/IsTaskFinish" message="tns:IRgvService_IsTaskFinish_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/IsTaskFinishResponse" message="tns:IRgvService_IsTaskFinish_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="DeleteRgvTask">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/DeleteRgvTask" message="tns:IRgvService_DeleteRgvTask_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/DeleteRgvTaskResponse" message="tns:IRgvService_DeleteRgvTask_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsRgvAuto">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/IsRgvAuto" message="tns:IRgvService_IsRgvAuto_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/IsRgvAutoResponse" message="tns:IRgvService_IsRgvAuto_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsAllowSendTask">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/IsAllowSendTask" message="tns:IRgvService_IsAllowSendTask_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/IsAllowSendTaskResponse" message="tns:IRgvService_IsAllowSendTask_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsHaveHeatBeat">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/IsHaveHeatBeat" message="tns:IRgvService_IsHaveHeatBeat_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/IsHaveHeatBeatResponse" message="tns:IRgvService_IsHaveHeatBeat_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="Write1015ReScan">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/Write1015ReScan" message="tns:IRgvService_Write1015ReScan_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/Write1015ReScanResponse" message="tns:IRgvService_Write1015ReScan_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="Write1019ReScan">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/Write1019ReScan" message="tns:IRgvService_Write1019ReScan_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/Write1019ReScanResponse" message="tns:IRgvService_Write1019ReScan_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="WriteRGV_FinishACK">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/WriteRGV_FinishACK" message="tns:IRgvService_WriteRGV_FinishACK_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/WriteRGV_FinishACKResponse" message="tns:IRgvService_WriteRGV_FinishACK_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="WriteScanValidateACK">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/WriteScanValidateACK" message="tns:IRgvService_WriteScanValidateACK_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/WriteScanValidateACKResponse" message="tns:IRgvService_WriteScanValidateACK_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="WriteRGV_XigangGetDataForOut">
      <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/WriteRGV_XigangGetDataForOut" message="tns:IRgvService_WriteRGV_XigangGetDataForOut_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/WriteRGV_XigangGetDataForOutResponse" message="tns:IRgvService_WriteRGV_XigangGetDataForOut_OutputMessage" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="BasicHttpBinding_IRgvService" type="tns:IRgvService">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="ClearAlarm">
      <soap:operation soapAction="http://tempuri.org/IRgvService/ClearAlarm" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="SendRgvTask">
      <soap:operation soapAction="http://tempuri.org/IRgvService/SendRgvTask" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="WriteStp">
      <soap:operation soapAction="http://tempuri.org/IRgvService/WriteStp" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetRgvInfo">
      <soap:operation soapAction="http://tempuri.org/IRgvService/GetRgvInfo" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsTaskFinish">
      <soap:operation soapAction="http://tempuri.org/IRgvService/IsTaskFinish" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="DeleteRgvTask">
      <soap:operation soapAction="http://tempuri.org/IRgvService/DeleteRgvTask" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsRgvAuto">
      <soap:operation soapAction="http://tempuri.org/IRgvService/IsRgvAuto" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsAllowSendTask">
      <soap:operation soapAction="http://tempuri.org/IRgvService/IsAllowSendTask" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsHaveHeatBeat">
      <soap:operation soapAction="http://tempuri.org/IRgvService/IsHaveHeatBeat" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="Write1015ReScan">
      <soap:operation soapAction="http://tempuri.org/IRgvService/Write1015ReScan" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="Write1019ReScan">
      <soap:operation soapAction="http://tempuri.org/IRgvService/Write1019ReScan" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="WriteRGV_FinishACK">
      <soap:operation soapAction="http://tempuri.org/IRgvService/WriteRGV_FinishACK" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="WriteScanValidateACK">
      <soap:operation soapAction="http://tempuri.org/IRgvService/WriteScanValidateACK" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="WriteRGV_XigangGetDataForOut">
      <soap:operation soapAction="http://tempuri.org/IRgvService/WriteRGV_XigangGetDataForOut" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="RgvService">
    <wsdl:port name="BasicHttpBinding_IRgvService" binding="tns:BasicHttpBinding_IRgvService">
      <soap:address location="http://localhost:8733/Design_Time_Addresses/iWareSda/RgvService/" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
CC/iWareCC_ASRS/Connected Services/RgvService/service2.xsd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,224 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="http://schemas.datacontract.org/2004/07/iWareSda" />
  <xs:element name="ClearAlarm">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ClearAlarmResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="ClearAlarmResult" nillable="true" type="q1:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SendRgvTask">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="taskId" type="xs:int" />
        <xs:element minOccurs="0" name="sourcePlce" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="toPlace" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SendRgvTaskResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="SendRgvTaskResult" nillable="true" type="q2:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="WriteStp">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="value" type="xs:boolean" />
        <xs:element minOccurs="0" name="stationCode" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="WriteStpResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteStpResult" nillable="true" type="q3:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetRgvInfo">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetRgvInfoResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q4="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="GetRgvInfoResult" nillable="true" type="q4:RgvView" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsTaskFinish">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="taskId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsTaskFinishResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q5="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="IsTaskFinishResult" nillable="true" type="q5:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteRgvTask">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="taskId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteRgvTaskResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q6="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="DeleteRgvTaskResult" nillable="true" type="q6:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsRgvAuto">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="stationCode" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsRgvAutoResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q7="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="IsRgvAutoResult" nillable="true" type="q7:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsAllowSendTask">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="isNeedValidateRealSourceAndToPlace" type="xs:boolean" />
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="stationCode" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="toStationCode" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="isRgvTask" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsAllowSendTaskResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q8="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="IsAllowSendTaskResult" nillable="true" type="q8:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsHaveHeatBeat">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsHaveHeatBeatResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q9="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="IsHaveHeatBeatResult" nillable="true" type="q9:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Write1015ReScan">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="value" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Write1015ReScanResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q10="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="Write1015ReScanResult" nillable="true" type="q10:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Write1019ReScan">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="value" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Write1019ReScanResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q11="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="Write1019ReScanResult" nillable="true" type="q11:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="WriteRGV_FinishACK">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="value" type="xs:boolean" />
        <xs:element minOccurs="0" name="plcTaskId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="WriteRGV_FinishACKResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q12="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteRGV_FinishACKResult" nillable="true" type="q12:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="WriteScanValidateACK">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="isReset" type="xs:boolean" />
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="stationCode" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="value" type="xs:boolean" />
        <xs:element minOccurs="0" name="plcTaskId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="WriteScanValidateACKResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q13="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteScanValidateACKResult" nillable="true" type="q13:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="WriteRGV_XigangGetDataForOut">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="value__Out_MaterialModel" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="value_Out_OrderNo" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="value_Out_SerialNumber" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="plcTaskId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="WriteRGV_XigangGetDataForOutResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q14="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteRGV_XigangGetDataForOutResult" nillable="true" type="q14:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
CC/iWareCC_ASRS/Connected Services/RgvService/service21.xsd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="anyType" nillable="true" type="xs:anyType" />
  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
  <xs:element name="boolean" nillable="true" type="xs:boolean" />
  <xs:element name="byte" nillable="true" type="xs:byte" />
  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
  <xs:element name="decimal" nillable="true" type="xs:decimal" />
  <xs:element name="double" nillable="true" type="xs:double" />
  <xs:element name="float" nillable="true" type="xs:float" />
  <xs:element name="int" nillable="true" type="xs:int" />
  <xs:element name="long" nillable="true" type="xs:long" />
  <xs:element name="QName" nillable="true" type="xs:QName" />
  <xs:element name="short" nillable="true" type="xs:short" />
  <xs:element name="string" nillable="true" type="xs:string" />
  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
  <xs:element name="char" nillable="true" type="tns:char" />
  <xs:simpleType name="char">
    <xs:restriction base="xs:int" />
  </xs:simpleType>
  <xs:element name="duration" nillable="true" type="tns:duration" />
  <xs:simpleType name="duration">
    <xs:restriction base="xs:duration">
      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="guid" nillable="true" type="tns:guid" />
  <xs:simpleType name="guid">
    <xs:restriction base="xs:string">
      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:attribute name="FactoryType" type="xs:QName" />
  <xs:attribute name="Id" type="xs:ID" />
  <xs:attribute name="Ref" type="xs:IDREF" />
</xs:schema>
CC/iWareCC_ASRS/Connected Services/SrmService/Reference.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2049 @@
//------------------------------------------------------------------------------
// <auto-generated>
//     æ­¤ä»£ç ç”±å·¥å…·ç”Ÿæˆã€‚
//     è¿è¡Œæ—¶ç‰ˆæœ¬:4.0.30319.42000
//
//     å¯¹æ­¤æ–‡ä»¶çš„æ›´æ”¹å¯èƒ½ä¼šå¯¼è‡´ä¸æ­£ç¡®çš„行为,并且如果
//     é‡æ–°ç”Ÿæˆä»£ç ï¼Œè¿™äº›æ›´æ”¹å°†ä¼šä¸¢å¤±ã€‚
// </auto-generated>
//------------------------------------------------------------------------------
namespace iWareCC.SrmService {
    using System.Runtime.Serialization;
    using System;
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="SrmEntity", Namespace="http://tempuri.org/")]
    [System.SerializableAttribute()]
    public partial class SrmEntity : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private iWareCC.SrmService.SrmDBForWrite DBBlockForWriteField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private iWareCC.SrmService.SrmDBForRead DBBlockForReadField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private iWareCC.SrmService.PLCService plcServiceField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private iWareCC.SrmService.SrmView ViewField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false)]
        public iWareCC.SrmService.SrmDBForWrite DBBlockForWrite {
            get {
                return this.DBBlockForWriteField;
            }
            set {
                if ((object.ReferenceEquals(this.DBBlockForWriteField, value) != true)) {
                    this.DBBlockForWriteField = value;
                    this.RaisePropertyChanged("DBBlockForWrite");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=1)]
        public iWareCC.SrmService.SrmDBForRead DBBlockForRead {
            get {
                return this.DBBlockForReadField;
            }
            set {
                if ((object.ReferenceEquals(this.DBBlockForReadField, value) != true)) {
                    this.DBBlockForReadField = value;
                    this.RaisePropertyChanged("DBBlockForRead");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=2)]
        public iWareCC.SrmService.PLCService plcService {
            get {
                return this.plcServiceField;
            }
            set {
                if ((object.ReferenceEquals(this.plcServiceField, value) != true)) {
                    this.plcServiceField = value;
                    this.RaisePropertyChanged("plcService");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=3)]
        public iWareCC.SrmService.SrmView View {
            get {
                return this.ViewField;
            }
            set {
                if ((object.ReferenceEquals(this.ViewField, value) != true)) {
                    this.ViewField = value;
                    this.RaisePropertyChanged("View");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="SrmDBForWrite", Namespace="http://tempuri.org/")]
    [System.SerializableAttribute()]
    public partial class SrmDBForWrite : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_HandShakeField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_SrmNoField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_PalletTypeField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_SourcePosXField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_SourcePosYField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_SourcePosZField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_DestinationPosXField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_DestinationPosYField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_DestinationPosZField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_CommandField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_EmergencyStopField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_CancleAlarmField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_TaskFinishConfirmField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_StbField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_AckField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string W_TaskNoField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false)]
        public string W_HandShake {
            get {
                return this.W_HandShakeField;
            }
            set {
                if ((object.ReferenceEquals(this.W_HandShakeField, value) != true)) {
                    this.W_HandShakeField = value;
                    this.RaisePropertyChanged("W_HandShake");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false)]
        public string W_SrmNo {
            get {
                return this.W_SrmNoField;
            }
            set {
                if ((object.ReferenceEquals(this.W_SrmNoField, value) != true)) {
                    this.W_SrmNoField = value;
                    this.RaisePropertyChanged("W_SrmNo");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=2)]
        public string W_PalletType {
            get {
                return this.W_PalletTypeField;
            }
            set {
                if ((object.ReferenceEquals(this.W_PalletTypeField, value) != true)) {
                    this.W_PalletTypeField = value;
                    this.RaisePropertyChanged("W_PalletType");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=3)]
        public string W_SourcePosX {
            get {
                return this.W_SourcePosXField;
            }
            set {
                if ((object.ReferenceEquals(this.W_SourcePosXField, value) != true)) {
                    this.W_SourcePosXField = value;
                    this.RaisePropertyChanged("W_SourcePosX");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=4)]
        public string W_SourcePosY {
            get {
                return this.W_SourcePosYField;
            }
            set {
                if ((object.ReferenceEquals(this.W_SourcePosYField, value) != true)) {
                    this.W_SourcePosYField = value;
                    this.RaisePropertyChanged("W_SourcePosY");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=5)]
        public string W_SourcePosZ {
            get {
                return this.W_SourcePosZField;
            }
            set {
                if ((object.ReferenceEquals(this.W_SourcePosZField, value) != true)) {
                    this.W_SourcePosZField = value;
                    this.RaisePropertyChanged("W_SourcePosZ");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=6)]
        public string W_DestinationPosX {
            get {
                return this.W_DestinationPosXField;
            }
            set {
                if ((object.ReferenceEquals(this.W_DestinationPosXField, value) != true)) {
                    this.W_DestinationPosXField = value;
                    this.RaisePropertyChanged("W_DestinationPosX");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=7)]
        public string W_DestinationPosY {
            get {
                return this.W_DestinationPosYField;
            }
            set {
                if ((object.ReferenceEquals(this.W_DestinationPosYField, value) != true)) {
                    this.W_DestinationPosYField = value;
                    this.RaisePropertyChanged("W_DestinationPosY");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=8)]
        public string W_DestinationPosZ {
            get {
                return this.W_DestinationPosZField;
            }
            set {
                if ((object.ReferenceEquals(this.W_DestinationPosZField, value) != true)) {
                    this.W_DestinationPosZField = value;
                    this.RaisePropertyChanged("W_DestinationPosZ");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=9)]
        public string W_Command {
            get {
                return this.W_CommandField;
            }
            set {
                if ((object.ReferenceEquals(this.W_CommandField, value) != true)) {
                    this.W_CommandField = value;
                    this.RaisePropertyChanged("W_Command");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=10)]
        public string W_EmergencyStop {
            get {
                return this.W_EmergencyStopField;
            }
            set {
                if ((object.ReferenceEquals(this.W_EmergencyStopField, value) != true)) {
                    this.W_EmergencyStopField = value;
                    this.RaisePropertyChanged("W_EmergencyStop");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=11)]
        public string W_CancleAlarm {
            get {
                return this.W_CancleAlarmField;
            }
            set {
                if ((object.ReferenceEquals(this.W_CancleAlarmField, value) != true)) {
                    this.W_CancleAlarmField = value;
                    this.RaisePropertyChanged("W_CancleAlarm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=12)]
        public string W_TaskFinishConfirm {
            get {
                return this.W_TaskFinishConfirmField;
            }
            set {
                if ((object.ReferenceEquals(this.W_TaskFinishConfirmField, value) != true)) {
                    this.W_TaskFinishConfirmField = value;
                    this.RaisePropertyChanged("W_TaskFinishConfirm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=13)]
        public string W_Stb {
            get {
                return this.W_StbField;
            }
            set {
                if ((object.ReferenceEquals(this.W_StbField, value) != true)) {
                    this.W_StbField = value;
                    this.RaisePropertyChanged("W_Stb");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=14)]
        public string W_Ack {
            get {
                return this.W_AckField;
            }
            set {
                if ((object.ReferenceEquals(this.W_AckField, value) != true)) {
                    this.W_AckField = value;
                    this.RaisePropertyChanged("W_Ack");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=15)]
        public string W_TaskNo {
            get {
                return this.W_TaskNoField;
            }
            set {
                if ((object.ReferenceEquals(this.W_TaskNoField, value) != true)) {
                    this.W_TaskNoField = value;
                    this.RaisePropertyChanged("W_TaskNo");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="SrmDBForRead", Namespace="http://tempuri.org/")]
    [System.SerializableAttribute()]
    public partial class SrmDBForRead : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_PickReqForInStoreField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_HandShakeField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_SrmNoField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_ModeField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_AlarmField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_LiftFullField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_PosXField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_PosYField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_PosZField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_PosXmmField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_PosYmmField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_PosZmmField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_PickFinishField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_DeliveryFinishField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_TaskFinishField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_AlarmCodeField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_StateField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_ActualLaneField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string R_TaskNoField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false)]
        public string R_PickReqForInStore {
            get {
                return this.R_PickReqForInStoreField;
            }
            set {
                if ((object.ReferenceEquals(this.R_PickReqForInStoreField, value) != true)) {
                    this.R_PickReqForInStoreField = value;
                    this.RaisePropertyChanged("R_PickReqForInStore");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=1)]
        public string R_HandShake {
            get {
                return this.R_HandShakeField;
            }
            set {
                if ((object.ReferenceEquals(this.R_HandShakeField, value) != true)) {
                    this.R_HandShakeField = value;
                    this.RaisePropertyChanged("R_HandShake");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=2)]
        public string R_SrmNo {
            get {
                return this.R_SrmNoField;
            }
            set {
                if ((object.ReferenceEquals(this.R_SrmNoField, value) != true)) {
                    this.R_SrmNoField = value;
                    this.RaisePropertyChanged("R_SrmNo");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=3)]
        public string R_Mode {
            get {
                return this.R_ModeField;
            }
            set {
                if ((object.ReferenceEquals(this.R_ModeField, value) != true)) {
                    this.R_ModeField = value;
                    this.RaisePropertyChanged("R_Mode");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=4)]
        public string R_Alarm {
            get {
                return this.R_AlarmField;
            }
            set {
                if ((object.ReferenceEquals(this.R_AlarmField, value) != true)) {
                    this.R_AlarmField = value;
                    this.RaisePropertyChanged("R_Alarm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=5)]
        public string R_LiftFull {
            get {
                return this.R_LiftFullField;
            }
            set {
                if ((object.ReferenceEquals(this.R_LiftFullField, value) != true)) {
                    this.R_LiftFullField = value;
                    this.RaisePropertyChanged("R_LiftFull");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=6)]
        public string R_PosX {
            get {
                return this.R_PosXField;
            }
            set {
                if ((object.ReferenceEquals(this.R_PosXField, value) != true)) {
                    this.R_PosXField = value;
                    this.RaisePropertyChanged("R_PosX");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=7)]
        public string R_PosY {
            get {
                return this.R_PosYField;
            }
            set {
                if ((object.ReferenceEquals(this.R_PosYField, value) != true)) {
                    this.R_PosYField = value;
                    this.RaisePropertyChanged("R_PosY");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=8)]
        public string R_PosZ {
            get {
                return this.R_PosZField;
            }
            set {
                if ((object.ReferenceEquals(this.R_PosZField, value) != true)) {
                    this.R_PosZField = value;
                    this.RaisePropertyChanged("R_PosZ");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=9)]
        public string R_PosXmm {
            get {
                return this.R_PosXmmField;
            }
            set {
                if ((object.ReferenceEquals(this.R_PosXmmField, value) != true)) {
                    this.R_PosXmmField = value;
                    this.RaisePropertyChanged("R_PosXmm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=10)]
        public string R_PosYmm {
            get {
                return this.R_PosYmmField;
            }
            set {
                if ((object.ReferenceEquals(this.R_PosYmmField, value) != true)) {
                    this.R_PosYmmField = value;
                    this.RaisePropertyChanged("R_PosYmm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=11)]
        public string R_PosZmm {
            get {
                return this.R_PosZmmField;
            }
            set {
                if ((object.ReferenceEquals(this.R_PosZmmField, value) != true)) {
                    this.R_PosZmmField = value;
                    this.RaisePropertyChanged("R_PosZmm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=12)]
        public string R_PickFinish {
            get {
                return this.R_PickFinishField;
            }
            set {
                if ((object.ReferenceEquals(this.R_PickFinishField, value) != true)) {
                    this.R_PickFinishField = value;
                    this.RaisePropertyChanged("R_PickFinish");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=13)]
        public string R_DeliveryFinish {
            get {
                return this.R_DeliveryFinishField;
            }
            set {
                if ((object.ReferenceEquals(this.R_DeliveryFinishField, value) != true)) {
                    this.R_DeliveryFinishField = value;
                    this.RaisePropertyChanged("R_DeliveryFinish");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=14)]
        public string R_TaskFinish {
            get {
                return this.R_TaskFinishField;
            }
            set {
                if ((object.ReferenceEquals(this.R_TaskFinishField, value) != true)) {
                    this.R_TaskFinishField = value;
                    this.RaisePropertyChanged("R_TaskFinish");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=15)]
        public string R_AlarmCode {
            get {
                return this.R_AlarmCodeField;
            }
            set {
                if ((object.ReferenceEquals(this.R_AlarmCodeField, value) != true)) {
                    this.R_AlarmCodeField = value;
                    this.RaisePropertyChanged("R_AlarmCode");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=16)]
        public string R_State {
            get {
                return this.R_StateField;
            }
            set {
                if ((object.ReferenceEquals(this.R_StateField, value) != true)) {
                    this.R_StateField = value;
                    this.RaisePropertyChanged("R_State");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=17)]
        public string R_ActualLane {
            get {
                return this.R_ActualLaneField;
            }
            set {
                if ((object.ReferenceEquals(this.R_ActualLaneField, value) != true)) {
                    this.R_ActualLaneField = value;
                    this.RaisePropertyChanged("R_ActualLane");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=18)]
        public string R_TaskNo {
            get {
                return this.R_TaskNoField;
            }
            set {
                if ((object.ReferenceEquals(this.R_TaskNoField, value) != true)) {
                    this.R_TaskNoField = value;
                    this.RaisePropertyChanged("R_TaskNo");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="PLCService", Namespace="http://tempuri.org/")]
    [System.SerializableAttribute()]
    public partial class PLCService : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        private iWareCC.SrmService.LogType _LogTypeField;
        private bool IsConnectedField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)]
        public iWareCC.SrmService.LogType _LogType {
            get {
                return this._LogTypeField;
            }
            set {
                if ((this._LogTypeField.Equals(value) != true)) {
                    this._LogTypeField = value;
                    this.RaisePropertyChanged("_LogType");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=1)]
        public bool IsConnected {
            get {
                return this.IsConnectedField;
            }
            set {
                if ((this.IsConnectedField.Equals(value) != true)) {
                    this.IsConnectedField = value;
                    this.RaisePropertyChanged("IsConnected");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="SrmView", Namespace="http://tempuri.org/")]
    [System.SerializableAttribute()]
    public partial class SrmView : iWareCC.SrmService.SrmDB2Obj {
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string DeviceNameField;
        private int DeviceIdField;
        private bool IsConnectedField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string ModeNameField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string StateNameField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string SrmSourcePlaceField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string SrmToPlaceField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private iWareCC.SrmService.DeviceWarningInfo[] R_WarningDBListField;
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false)]
        public string DeviceName {
            get {
                return this.DeviceNameField;
            }
            set {
                if ((object.ReferenceEquals(this.DeviceNameField, value) != true)) {
                    this.DeviceNameField = value;
                    this.RaisePropertyChanged("DeviceName");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=1)]
        public int DeviceId {
            get {
                return this.DeviceIdField;
            }
            set {
                if ((this.DeviceIdField.Equals(value) != true)) {
                    this.DeviceIdField = value;
                    this.RaisePropertyChanged("DeviceId");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=2)]
        public bool IsConnected {
            get {
                return this.IsConnectedField;
            }
            set {
                if ((this.IsConnectedField.Equals(value) != true)) {
                    this.IsConnectedField = value;
                    this.RaisePropertyChanged("IsConnected");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=3)]
        public string ModeName {
            get {
                return this.ModeNameField;
            }
            set {
                if ((object.ReferenceEquals(this.ModeNameField, value) != true)) {
                    this.ModeNameField = value;
                    this.RaisePropertyChanged("ModeName");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=4)]
        public string StateName {
            get {
                return this.StateNameField;
            }
            set {
                if ((object.ReferenceEquals(this.StateNameField, value) != true)) {
                    this.StateNameField = value;
                    this.RaisePropertyChanged("StateName");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=5)]
        public string SrmSourcePlace {
            get {
                return this.SrmSourcePlaceField;
            }
            set {
                if ((object.ReferenceEquals(this.SrmSourcePlaceField, value) != true)) {
                    this.SrmSourcePlaceField = value;
                    this.RaisePropertyChanged("SrmSourcePlace");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=6)]
        public string SrmToPlace {
            get {
                return this.SrmToPlaceField;
            }
            set {
                if ((object.ReferenceEquals(this.SrmToPlaceField, value) != true)) {
                    this.SrmToPlaceField = value;
                    this.RaisePropertyChanged("SrmToPlace");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=7)]
        public iWareCC.SrmService.DeviceWarningInfo[] R_WarningDBList {
            get {
                return this.R_WarningDBListField;
            }
            set {
                if ((object.ReferenceEquals(this.R_WarningDBListField, value) != true)) {
                    this.R_WarningDBListField = value;
                    this.RaisePropertyChanged("R_WarningDBList");
                }
            }
        }
    }
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="LogType", Namespace="http://tempuri.org/")]
    public enum LogType : int {
        [System.Runtime.Serialization.EnumMemberAttribute()]
        SrmTheadService = 0,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        ConveyorThreadService = 1,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        CCWCFService = 2,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        RgvThreadService = 3,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TrussThreadService = 4,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        SS7 = 5,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        HslCommunicationService = 6,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        SdaService = 7,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        SrmSdaService = 8,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        LineSdaService = 9,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        RgvSdaService = 10,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        OutPlanTask = 11,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        MesService = 12,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        AGVTheadService = 13,
        [System.Runtime.Serialization.EnumMemberAttribute()]
        LineInScanTheadService = 14,
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="SrmDB2Obj", Namespace="http://tempuri.org/")]
    [System.SerializableAttribute()]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.SrmView))]
    public partial class SrmDB2Obj : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        private short W_HandShakeField;
        private short W_SrmNoField;
        private short W_PalletTypeField;
        private short W_SourcePosXField;
        private short W_SourcePosYField;
        private short W_SourcePosZField;
        private short W_DestinationPosXField;
        private short W_DestinationPosYField;
        private short W_DestinationPosZField;
        private short W_CommandField;
        private short W_EmergencyStopField;
        private short W_CancleAlarmField;
        private short W_TaskFinishConfirmField;
        private short W_StbField;
        private short W_AckField;
        private int W_TaskNoField;
        private bool R_PickReqForInStoreField;
        private short R_HandShakeField;
        private short R_SrmNoField;
        private short R_ModeField;
        private short R_AlarmField;
        private short R_LiftFullField;
        private short R_PosXField;
        private short R_PosYField;
        private short R_PosZField;
        private int R_PosXmmField;
        private int R_PosYmmField;
        private int R_PosZmmField;
        private short R_PickFinishField;
        private short R_DeliveryFinishField;
        private short R_TaskFinishField;
        private short R_AlarmCodeField;
        private short R_StateField;
        private short R_ActualLaneField;
        private int R_TaskNoField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)]
        public short W_HandShake {
            get {
                return this.W_HandShakeField;
            }
            set {
                if ((this.W_HandShakeField.Equals(value) != true)) {
                    this.W_HandShakeField = value;
                    this.RaisePropertyChanged("W_HandShake");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)]
        public short W_SrmNo {
            get {
                return this.W_SrmNoField;
            }
            set {
                if ((this.W_SrmNoField.Equals(value) != true)) {
                    this.W_SrmNoField = value;
                    this.RaisePropertyChanged("W_SrmNo");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=2)]
        public short W_PalletType {
            get {
                return this.W_PalletTypeField;
            }
            set {
                if ((this.W_PalletTypeField.Equals(value) != true)) {
                    this.W_PalletTypeField = value;
                    this.RaisePropertyChanged("W_PalletType");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=3)]
        public short W_SourcePosX {
            get {
                return this.W_SourcePosXField;
            }
            set {
                if ((this.W_SourcePosXField.Equals(value) != true)) {
                    this.W_SourcePosXField = value;
                    this.RaisePropertyChanged("W_SourcePosX");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=4)]
        public short W_SourcePosY {
            get {
                return this.W_SourcePosYField;
            }
            set {
                if ((this.W_SourcePosYField.Equals(value) != true)) {
                    this.W_SourcePosYField = value;
                    this.RaisePropertyChanged("W_SourcePosY");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=5)]
        public short W_SourcePosZ {
            get {
                return this.W_SourcePosZField;
            }
            set {
                if ((this.W_SourcePosZField.Equals(value) != true)) {
                    this.W_SourcePosZField = value;
                    this.RaisePropertyChanged("W_SourcePosZ");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=6)]
        public short W_DestinationPosX {
            get {
                return this.W_DestinationPosXField;
            }
            set {
                if ((this.W_DestinationPosXField.Equals(value) != true)) {
                    this.W_DestinationPosXField = value;
                    this.RaisePropertyChanged("W_DestinationPosX");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=7)]
        public short W_DestinationPosY {
            get {
                return this.W_DestinationPosYField;
            }
            set {
                if ((this.W_DestinationPosYField.Equals(value) != true)) {
                    this.W_DestinationPosYField = value;
                    this.RaisePropertyChanged("W_DestinationPosY");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=8)]
        public short W_DestinationPosZ {
            get {
                return this.W_DestinationPosZField;
            }
            set {
                if ((this.W_DestinationPosZField.Equals(value) != true)) {
                    this.W_DestinationPosZField = value;
                    this.RaisePropertyChanged("W_DestinationPosZ");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=9)]
        public short W_Command {
            get {
                return this.W_CommandField;
            }
            set {
                if ((this.W_CommandField.Equals(value) != true)) {
                    this.W_CommandField = value;
                    this.RaisePropertyChanged("W_Command");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=10)]
        public short W_EmergencyStop {
            get {
                return this.W_EmergencyStopField;
            }
            set {
                if ((this.W_EmergencyStopField.Equals(value) != true)) {
                    this.W_EmergencyStopField = value;
                    this.RaisePropertyChanged("W_EmergencyStop");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=11)]
        public short W_CancleAlarm {
            get {
                return this.W_CancleAlarmField;
            }
            set {
                if ((this.W_CancleAlarmField.Equals(value) != true)) {
                    this.W_CancleAlarmField = value;
                    this.RaisePropertyChanged("W_CancleAlarm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=12)]
        public short W_TaskFinishConfirm {
            get {
                return this.W_TaskFinishConfirmField;
            }
            set {
                if ((this.W_TaskFinishConfirmField.Equals(value) != true)) {
                    this.W_TaskFinishConfirmField = value;
                    this.RaisePropertyChanged("W_TaskFinishConfirm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=13)]
        public short W_Stb {
            get {
                return this.W_StbField;
            }
            set {
                if ((this.W_StbField.Equals(value) != true)) {
                    this.W_StbField = value;
                    this.RaisePropertyChanged("W_Stb");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=14)]
        public short W_Ack {
            get {
                return this.W_AckField;
            }
            set {
                if ((this.W_AckField.Equals(value) != true)) {
                    this.W_AckField = value;
                    this.RaisePropertyChanged("W_Ack");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=15)]
        public int W_TaskNo {
            get {
                return this.W_TaskNoField;
            }
            set {
                if ((this.W_TaskNoField.Equals(value) != true)) {
                    this.W_TaskNoField = value;
                    this.RaisePropertyChanged("W_TaskNo");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=16)]
        public bool R_PickReqForInStore {
            get {
                return this.R_PickReqForInStoreField;
            }
            set {
                if ((this.R_PickReqForInStoreField.Equals(value) != true)) {
                    this.R_PickReqForInStoreField = value;
                    this.RaisePropertyChanged("R_PickReqForInStore");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=17)]
        public short R_HandShake {
            get {
                return this.R_HandShakeField;
            }
            set {
                if ((this.R_HandShakeField.Equals(value) != true)) {
                    this.R_HandShakeField = value;
                    this.RaisePropertyChanged("R_HandShake");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=18)]
        public short R_SrmNo {
            get {
                return this.R_SrmNoField;
            }
            set {
                if ((this.R_SrmNoField.Equals(value) != true)) {
                    this.R_SrmNoField = value;
                    this.RaisePropertyChanged("R_SrmNo");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=19)]
        public short R_Mode {
            get {
                return this.R_ModeField;
            }
            set {
                if ((this.R_ModeField.Equals(value) != true)) {
                    this.R_ModeField = value;
                    this.RaisePropertyChanged("R_Mode");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=20)]
        public short R_Alarm {
            get {
                return this.R_AlarmField;
            }
            set {
                if ((this.R_AlarmField.Equals(value) != true)) {
                    this.R_AlarmField = value;
                    this.RaisePropertyChanged("R_Alarm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=21)]
        public short R_LiftFull {
            get {
                return this.R_LiftFullField;
            }
            set {
                if ((this.R_LiftFullField.Equals(value) != true)) {
                    this.R_LiftFullField = value;
                    this.RaisePropertyChanged("R_LiftFull");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=22)]
        public short R_PosX {
            get {
                return this.R_PosXField;
            }
            set {
                if ((this.R_PosXField.Equals(value) != true)) {
                    this.R_PosXField = value;
                    this.RaisePropertyChanged("R_PosX");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=23)]
        public short R_PosY {
            get {
                return this.R_PosYField;
            }
            set {
                if ((this.R_PosYField.Equals(value) != true)) {
                    this.R_PosYField = value;
                    this.RaisePropertyChanged("R_PosY");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=24)]
        public short R_PosZ {
            get {
                return this.R_PosZField;
            }
            set {
                if ((this.R_PosZField.Equals(value) != true)) {
                    this.R_PosZField = value;
                    this.RaisePropertyChanged("R_PosZ");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=25)]
        public int R_PosXmm {
            get {
                return this.R_PosXmmField;
            }
            set {
                if ((this.R_PosXmmField.Equals(value) != true)) {
                    this.R_PosXmmField = value;
                    this.RaisePropertyChanged("R_PosXmm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=26)]
        public int R_PosYmm {
            get {
                return this.R_PosYmmField;
            }
            set {
                if ((this.R_PosYmmField.Equals(value) != true)) {
                    this.R_PosYmmField = value;
                    this.RaisePropertyChanged("R_PosYmm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=27)]
        public int R_PosZmm {
            get {
                return this.R_PosZmmField;
            }
            set {
                if ((this.R_PosZmmField.Equals(value) != true)) {
                    this.R_PosZmmField = value;
                    this.RaisePropertyChanged("R_PosZmm");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=28)]
        public short R_PickFinish {
            get {
                return this.R_PickFinishField;
            }
            set {
                if ((this.R_PickFinishField.Equals(value) != true)) {
                    this.R_PickFinishField = value;
                    this.RaisePropertyChanged("R_PickFinish");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=29)]
        public short R_DeliveryFinish {
            get {
                return this.R_DeliveryFinishField;
            }
            set {
                if ((this.R_DeliveryFinishField.Equals(value) != true)) {
                    this.R_DeliveryFinishField = value;
                    this.RaisePropertyChanged("R_DeliveryFinish");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=30)]
        public short R_TaskFinish {
            get {
                return this.R_TaskFinishField;
            }
            set {
                if ((this.R_TaskFinishField.Equals(value) != true)) {
                    this.R_TaskFinishField = value;
                    this.RaisePropertyChanged("R_TaskFinish");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=31)]
        public short R_AlarmCode {
            get {
                return this.R_AlarmCodeField;
            }
            set {
                if ((this.R_AlarmCodeField.Equals(value) != true)) {
                    this.R_AlarmCodeField = value;
                    this.RaisePropertyChanged("R_AlarmCode");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=32)]
        public short R_State {
            get {
                return this.R_StateField;
            }
            set {
                if ((this.R_StateField.Equals(value) != true)) {
                    this.R_StateField = value;
                    this.RaisePropertyChanged("R_State");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=33)]
        public short R_ActualLane {
            get {
                return this.R_ActualLaneField;
            }
            set {
                if ((this.R_ActualLaneField.Equals(value) != true)) {
                    this.R_ActualLaneField = value;
                    this.RaisePropertyChanged("R_ActualLane");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=34)]
        public int R_TaskNo {
            get {
                return this.R_TaskNoField;
            }
            set {
                if ((this.R_TaskNoField.Equals(value) != true)) {
                    this.R_TaskNoField = value;
                    this.RaisePropertyChanged("R_TaskNo");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="DeviceWarningInfo", Namespace="http://tempuri.org/")]
    [System.SerializableAttribute()]
    public partial class DeviceWarningInfo : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string AddressField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string ContextField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string CodeField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false)]
        public string Address {
            get {
                return this.AddressField;
            }
            set {
                if ((object.ReferenceEquals(this.AddressField, value) != true)) {
                    this.AddressField = value;
                    this.RaisePropertyChanged("Address");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false)]
        public string Context {
            get {
                return this.ContextField;
            }
            set {
                if ((object.ReferenceEquals(this.ContextField, value) != true)) {
                    this.ContextField = value;
                    this.RaisePropertyChanged("Context");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=2)]
        public string Code {
            get {
                return this.CodeField;
            }
            set {
                if ((object.ReferenceEquals(this.CodeField, value) != true)) {
                    this.CodeField = value;
                    this.RaisePropertyChanged("Code");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="SdaResEntity", Namespace="http://tempuri.org/")]
    [System.SerializableAttribute()]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.SrmEntity[]))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.SrmEntity))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.SrmDBForWrite))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.SrmDBForRead))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.PLCService))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.LogType))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.SrmView))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.SrmDB2Obj))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.DeviceWarningInfo[]))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(iWareCC.SrmService.DeviceWarningInfo))]
    public partial class SdaResEntity : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        private bool resultField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private object resDataField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string resMsgField;
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)]
        public bool result {
            get {
                return this.resultField;
            }
            set {
                if ((this.resultField.Equals(value) != true)) {
                    this.resultField = value;
                    this.RaisePropertyChanged("result");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=1)]
        public object resData {
            get {
                return this.resDataField;
            }
            set {
                if ((object.ReferenceEquals(this.resDataField, value) != true)) {
                    this.resDataField = value;
                    this.RaisePropertyChanged("resData");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=2)]
        public string resMsg {
            get {
                return this.resMsgField;
            }
            set {
                if ((object.ReferenceEquals(this.resMsgField, value) != true)) {
                    this.resMsgField = value;
                    this.RaisePropertyChanged("resMsg");
                }
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="SrmService.ISrmService")]
    public interface ISrmService {
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/GetSrm_CacheEntity", ReplyAction="http://tempuri.org/ISrmService/GetSrm_CacheEntityResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SrmEntity[] GetSrm_CacheEntity();
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/GetSrm_CacheEntity", ReplyAction="http://tempuri.org/ISrmService/GetSrm_CacheEntityResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SrmEntity[]> GetSrm_CacheEntityAsync();
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/GetSrmInfo", ReplyAction="http://tempuri.org/ISrmService/GetSrmInfoResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SrmView GetSrmInfo(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/GetSrmInfo", ReplyAction="http://tempuri.org/ISrmService/GetSrmInfoResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SrmView> GetSrmInfoAsync(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmTask", ReplyAction="http://tempuri.org/ISrmService/SendSrmTaskResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity SendSrmTask(int srmId, int taskId, string sourcePlace, string toPlace, short command);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmTask", ReplyAction="http://tempuri.org/ISrmService/SendSrmTaskResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> SendSrmTaskAsync(int srmId, int taskId, string sourcePlace, string toPlace, short command);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/ReleaseAlert", ReplyAction="http://tempuri.org/ISrmService/ReleaseAlertResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity ReleaseAlert(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/ReleaseAlert", ReplyAction="http://tempuri.org/ISrmService/ReleaseAlertResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> ReleaseAlertAsync(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/ContinueTask", ReplyAction="http://tempuri.org/ISrmService/ContinueTaskResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity ContinueTask(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/ContinueTask", ReplyAction="http://tempuri.org/ISrmService/ContinueTaskResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> ContinueTaskAsync(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendEStop", ReplyAction="http://tempuri.org/ISrmService/SendEStopResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity SendEStop(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendEStop", ReplyAction="http://tempuri.org/ISrmService/SendEStopResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> SendEStopAsync(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmDelete", ReplyAction="http://tempuri.org/ISrmService/SendSrmDeleteResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity SendSrmDelete(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmDelete", ReplyAction="http://tempuri.org/ISrmService/SendSrmDeleteResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> SendSrmDeleteAsync(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsReady", ReplyAction="http://tempuri.org/ISrmService/IsReadyResponse")]
        iWareCC.SrmService.IsReadyResponse IsReady(iWareCC.SrmService.IsReadyRequest request);
        // CODEGEN: æ­£åœ¨ç”Ÿæˆæ¶ˆæ¯åå®šï¼Œåº”为该操作具有多个返回值。
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsReady", ReplyAction="http://tempuri.org/ISrmService/IsReadyResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.IsReadyResponse> IsReadyAsync(iWareCC.SrmService.IsReadyRequest request);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsAllowSendTask", ReplyAction="http://tempuri.org/ISrmService/IsAllowSendTaskResponse")]
        iWareCC.SrmService.IsAllowSendTaskResponse IsAllowSendTask(iWareCC.SrmService.IsAllowSendTaskRequest request);
        // CODEGEN: æ­£åœ¨ç”Ÿæˆæ¶ˆæ¯åå®šï¼Œåº”为该操作具有多个返回值。
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsAllowSendTask", ReplyAction="http://tempuri.org/ISrmService/IsAllowSendTaskResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.IsAllowSendTaskResponse> IsAllowSendTaskAsync(iWareCC.SrmService.IsAllowSendTaskRequest request);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/ConfirmTaskFinish", ReplyAction="http://tempuri.org/ISrmService/ConfirmTaskFinishResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity ConfirmTaskFinish(int srmId, int taskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/ConfirmTaskFinish", ReplyAction="http://tempuri.org/ISrmService/ConfirmTaskFinishResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> ConfirmTaskFinishAsync(int srmId, int taskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsTaskFinish", ReplyAction="http://tempuri.org/ISrmService/IsTaskFinishResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity IsTaskFinish(int srmId, int taskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsTaskFinish", ReplyAction="http://tempuri.org/ISrmService/IsTaskFinishResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> IsTaskFinishAsync(int srmId, int taskId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsAllowSendNewTaskToSrm", ReplyAction="http://tempuri.org/ISrmService/IsAllowSendNewTaskToSrmResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity IsAllowSendNewTaskToSrm(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsAllowSendNewTaskToSrm", ReplyAction="http://tempuri.org/ISrmService/IsAllowSendNewTaskToSrmResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> IsAllowSendNewTaskToSrmAsync(int srmId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsHaveHeatBeat", ReplyAction="http://tempuri.org/ISrmService/IsHaveHeatBeatResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity IsHaveHeatBeat(int deviceId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsHaveHeatBeat", ReplyAction="http://tempuri.org/ISrmService/IsHaveHeatBeatResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> IsHaveHeatBeatAsync(int deviceId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsAllowIssueTask", ReplyAction="http://tempuri.org/ISrmService/IsAllowIssueTaskResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity IsAllowIssueTask(int deviceId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsAllowIssueTask", ReplyAction="http://tempuri.org/ISrmService/IsAllowIssueTaskResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> IsAllowIssueTaskAsync(int deviceId);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/WriteStb", ReplyAction="http://tempuri.org/ISrmService/WriteStbResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity WriteStb(int deviceId, int value);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/WriteStb", ReplyAction="http://tempuri.org/ISrmService/WriteStbResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> WriteStbAsync(int deviceId, int value);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/WriteAckTaskFinish", ReplyAction="http://tempuri.org/ISrmService/WriteAckTaskFinishResponse")]
        [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
        iWareCC.SrmService.SdaResEntity WriteAckTaskFinish(int deviceId, int value);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/WriteAckTaskFinish", ReplyAction="http://tempuri.org/ISrmService/WriteAckTaskFinishResponse")]
        System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> WriteAckTaskFinishAsync(int deviceId, int value);
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.MessageContractAttribute(WrapperName="IsReady", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]
    public partial class IsReadyRequest {
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
        public int srmId;
        public IsReadyRequest() {
        }
        public IsReadyRequest(int srmId) {
            this.srmId = srmId;
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.MessageContractAttribute(WrapperName="IsReadyResponse", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]
    public partial class IsReadyResponse {
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
        public iWareCC.SrmService.SdaResEntity IsReadyResult;
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=1)]
        public string msg;
        public IsReadyResponse() {
        }
        public IsReadyResponse(iWareCC.SrmService.SdaResEntity IsReadyResult, string msg) {
            this.IsReadyResult = IsReadyResult;
            this.msg = msg;
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.MessageContractAttribute(WrapperName="IsAllowSendTask", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]
    public partial class IsAllowSendTaskRequest {
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
        public int srmId;
        public IsAllowSendTaskRequest() {
        }
        public IsAllowSendTaskRequest(int srmId) {
            this.srmId = srmId;
        }
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.MessageContractAttribute(WrapperName="IsAllowSendTaskResponse", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]
    public partial class IsAllowSendTaskResponse {
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
        public iWareCC.SrmService.SdaResEntity IsAllowSendTaskResult;
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=1)]
        public string msg;
        public IsAllowSendTaskResponse() {
        }
        public IsAllowSendTaskResponse(iWareCC.SrmService.SdaResEntity IsAllowSendTaskResult, string msg) {
            this.IsAllowSendTaskResult = IsAllowSendTaskResult;
            this.msg = msg;
        }
    }
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public interface ISrmServiceChannel : iWareCC.SrmService.ISrmService, System.ServiceModel.IClientChannel {
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class SrmServiceClient : System.ServiceModel.ClientBase<iWareCC.SrmService.ISrmService>, iWareCC.SrmService.ISrmService {
        public SrmServiceClient() {
        }
        public SrmServiceClient(string endpointConfigurationName) :
                base(endpointConfigurationName) {
        }
        public SrmServiceClient(string endpointConfigurationName, string remoteAddress) :
                base(endpointConfigurationName, remoteAddress) {
        }
        public SrmServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
                base(endpointConfigurationName, remoteAddress) {
        }
        public SrmServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
                base(binding, remoteAddress) {
        }
        public iWareCC.SrmService.SrmEntity[] GetSrm_CacheEntity() {
            return base.Channel.GetSrm_CacheEntity();
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SrmEntity[]> GetSrm_CacheEntityAsync() {
            return base.Channel.GetSrm_CacheEntityAsync();
        }
        public iWareCC.SrmService.SrmView GetSrmInfo(int srmId) {
            return base.Channel.GetSrmInfo(srmId);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SrmView> GetSrmInfoAsync(int srmId) {
            return base.Channel.GetSrmInfoAsync(srmId);
        }
        public iWareCC.SrmService.SdaResEntity SendSrmTask(int srmId, int taskId, string sourcePlace, string toPlace, short command) {
            return base.Channel.SendSrmTask(srmId, taskId, sourcePlace, toPlace, command);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> SendSrmTaskAsync(int srmId, int taskId, string sourcePlace, string toPlace, short command) {
            return base.Channel.SendSrmTaskAsync(srmId, taskId, sourcePlace, toPlace, command);
        }
        public iWareCC.SrmService.SdaResEntity ReleaseAlert(int srmId) {
            return base.Channel.ReleaseAlert(srmId);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> ReleaseAlertAsync(int srmId) {
            return base.Channel.ReleaseAlertAsync(srmId);
        }
        public iWareCC.SrmService.SdaResEntity ContinueTask(int srmId) {
            return base.Channel.ContinueTask(srmId);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> ContinueTaskAsync(int srmId) {
            return base.Channel.ContinueTaskAsync(srmId);
        }
        public iWareCC.SrmService.SdaResEntity SendEStop(int srmId) {
            return base.Channel.SendEStop(srmId);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> SendEStopAsync(int srmId) {
            return base.Channel.SendEStopAsync(srmId);
        }
        public iWareCC.SrmService.SdaResEntity SendSrmDelete(int srmId) {
            return base.Channel.SendSrmDelete(srmId);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> SendSrmDeleteAsync(int srmId) {
            return base.Channel.SendSrmDeleteAsync(srmId);
        }
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        iWareCC.SrmService.IsReadyResponse iWareCC.SrmService.ISrmService.IsReady(iWareCC.SrmService.IsReadyRequest request) {
            return base.Channel.IsReady(request);
        }
        public iWareCC.SrmService.SdaResEntity IsReady(int srmId, out string msg) {
            iWareCC.SrmService.IsReadyRequest inValue = new iWareCC.SrmService.IsReadyRequest();
            inValue.srmId = srmId;
            iWareCC.SrmService.IsReadyResponse retVal = ((iWareCC.SrmService.ISrmService)(this)).IsReady(inValue);
            msg = retVal.msg;
            return retVal.IsReadyResult;
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.IsReadyResponse> IsReadyAsync(iWareCC.SrmService.IsReadyRequest request) {
            return base.Channel.IsReadyAsync(request);
        }
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        iWareCC.SrmService.IsAllowSendTaskResponse iWareCC.SrmService.ISrmService.IsAllowSendTask(iWareCC.SrmService.IsAllowSendTaskRequest request) {
            return base.Channel.IsAllowSendTask(request);
        }
        public iWareCC.SrmService.SdaResEntity IsAllowSendTask(int srmId, out string msg) {
            iWareCC.SrmService.IsAllowSendTaskRequest inValue = new iWareCC.SrmService.IsAllowSendTaskRequest();
            inValue.srmId = srmId;
            iWareCC.SrmService.IsAllowSendTaskResponse retVal = ((iWareCC.SrmService.ISrmService)(this)).IsAllowSendTask(inValue);
            msg = retVal.msg;
            return retVal.IsAllowSendTaskResult;
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.IsAllowSendTaskResponse> IsAllowSendTaskAsync(iWareCC.SrmService.IsAllowSendTaskRequest request) {
            return base.Channel.IsAllowSendTaskAsync(request);
        }
        public iWareCC.SrmService.SdaResEntity ConfirmTaskFinish(int srmId, int taskId) {
            return base.Channel.ConfirmTaskFinish(srmId, taskId);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> ConfirmTaskFinishAsync(int srmId, int taskId) {
            return base.Channel.ConfirmTaskFinishAsync(srmId, taskId);
        }
        public iWareCC.SrmService.SdaResEntity IsTaskFinish(int srmId, int taskId) {
            return base.Channel.IsTaskFinish(srmId, taskId);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> IsTaskFinishAsync(int srmId, int taskId) {
            return base.Channel.IsTaskFinishAsync(srmId, taskId);
        }
        public iWareCC.SrmService.SdaResEntity IsAllowSendNewTaskToSrm(int srmId) {
            return base.Channel.IsAllowSendNewTaskToSrm(srmId);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> IsAllowSendNewTaskToSrmAsync(int srmId) {
            return base.Channel.IsAllowSendNewTaskToSrmAsync(srmId);
        }
        public iWareCC.SrmService.SdaResEntity IsHaveHeatBeat(int deviceId) {
            return base.Channel.IsHaveHeatBeat(deviceId);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> IsHaveHeatBeatAsync(int deviceId) {
            return base.Channel.IsHaveHeatBeatAsync(deviceId);
        }
        public iWareCC.SrmService.SdaResEntity IsAllowIssueTask(int deviceId) {
            return base.Channel.IsAllowIssueTask(deviceId);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> IsAllowIssueTaskAsync(int deviceId) {
            return base.Channel.IsAllowIssueTaskAsync(deviceId);
        }
        public iWareCC.SrmService.SdaResEntity WriteStb(int deviceId, int value) {
            return base.Channel.WriteStb(deviceId, value);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> WriteStbAsync(int deviceId, int value) {
            return base.Channel.WriteStbAsync(deviceId, value);
        }
        public iWareCC.SrmService.SdaResEntity WriteAckTaskFinish(int deviceId, int value) {
            return base.Channel.WriteAckTaskFinish(deviceId, value);
        }
        public System.Threading.Tasks.Task<iWareCC.SrmService.SdaResEntity> WriteAckTaskFinishAsync(int deviceId, int value) {
            return base.Channel.WriteAckTaskFinishAsync(deviceId, value);
        }
    }
}
CC/iWareCC_ASRS/Connected Services/SrmService/Reference.svcmap
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<ReferenceGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="908fce97-aeb2-4df9-bead-7d0a55005668" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">
  <ClientOptions>
    <GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
    <GenerateTaskBasedAsynchronousMethod>true</GenerateTaskBasedAsynchronousMethod>
    <EnableDataBinding>true</EnableDataBinding>
    <ExcludedTypes />
    <ImportXmlTypes>false</ImportXmlTypes>
    <GenerateInternalTypes>false</GenerateInternalTypes>
    <GenerateMessageContracts>false</GenerateMessageContracts>
    <NamespaceMappings />
    <CollectionMappings />
    <GenerateSerializableTypes>true</GenerateSerializableTypes>
    <Serializer>Auto</Serializer>
    <UseSerializerForFaults>true</UseSerializerForFaults>
    <ReferenceAllAssemblies>true</ReferenceAllAssemblies>
    <ReferencedAssemblies />
    <ReferencedDataContractTypes />
    <ServiceContractMappings />
  </ClientOptions>
  <MetadataSources>
    <MetadataSource Address="http://192.168.10.5:8733/Design_Time_Addresses/iWareSda/SrmService/mex" Protocol="mex" SourceId="1" />
  </MetadataSources>
  <Metadata>
    <MetadataFile FileName="service.wsdl" MetadataType="Wsdl" ID="122f0f7a-a31f-43f5-9c16-02d067a9de5a" SourceId="1" SourceUrl="http://192.168.10.5:8733/Design_Time_Addresses/iWareSda/SrmService/mex" />
    <MetadataFile FileName="service.xsd" MetadataType="Schema" ID="9ac4ee84-3f55-4417-a60e-a649358bedd5" SourceId="1" SourceUrl="http://192.168.10.5:8733/Design_Time_Addresses/iWareSda/SrmService/mex" />
  </Metadata>
  <Extensions>
    <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
    <ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />
  </Extensions>
</ReferenceGroup>
CC/iWareCC_ASRS/Connected Services/SrmService/configuration.svcinfo
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<configurationSnapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">
  <behaviors />
  <bindings>
    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data name=&quot;BasicHttpBinding_ISrmService&quot; /&gt;" bindingType="basicHttpBinding" name="BasicHttpBinding_ISrmService" />
  </bindings>
  <endpoints>
    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://localhost:8733/Design_Time_Addresses/iWareSda/SrmService/&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;BasicHttpBinding_ISrmService&quot; contract=&quot;SrmService.ISrmService&quot; name=&quot;BasicHttpBinding_ISrmService&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://localhost:8733/Design_Time_Addresses/iWareSda/SrmService/&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;BasicHttpBinding_ISrmService&quot; contract=&quot;SrmService.ISrmService&quot; name=&quot;BasicHttpBinding_ISrmService&quot; /&gt;" contractName="SrmService.ISrmService" name="BasicHttpBinding_ISrmService" />
  </endpoints>
</configurationSnapshot>
CC/iWareCC_ASRS/Connected Services/SrmService/configuration91.svcinfo
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,201 @@
<?xml version="1.0" encoding="utf-8"?>
<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="GLaA6gduyzxWBPXXOoQ62Dh1vRg=">
  <bindingConfigurations>
    <bindingConfiguration bindingType="basicHttpBinding" name="BasicHttpBinding_ISrmService">
      <properties>
        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>BasicHttpBinding_ISrmService</serializedValue>
        </property>
        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>StrongWildcard</serializedValue>
        </property>
        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>65536</serializedValue>
        </property>
        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
        </property>
        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>0</serializedValue>
        </property>
        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>0</serializedValue>
        </property>
        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>0</serializedValue>
        </property>
        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>0</serializedValue>
        </property>
        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>0</serializedValue>
        </property>
        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.Text.UTF8Encoding</serializedValue>
        </property>
        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>Buffered</serializedValue>
        </property>
        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>Text</serializedValue>
        </property>
        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>
        </property>
        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>None</serializedValue>
        </property>
        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>
        </property>
        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>None</serializedValue>
        </property>
        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>None</serializedValue>
        </property>
        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
        </property>
        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>Never</serializedValue>
        </property>
        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>TransportSelected</serializedValue>
        </property>
        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>(集合)</serializedValue>
        </property>
        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>
        </property>
        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>UserName</serializedValue>
        </property>
        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>Default</serializedValue>
        </property>
      </properties>
    </bindingConfiguration>
  </bindingConfigurations>
  <endpoints>
    <endpoint name="BasicHttpBinding_ISrmService" contract="SrmService.ISrmService" bindingType="basicHttpBinding" address="http://localhost:8733/Design_Time_Addresses/iWareSda/SrmService/" bindingConfiguration="BasicHttpBinding_ISrmService">
      <properties>
        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>http://localhost:8733/Design_Time_Addresses/iWareSda/SrmService/</serializedValue>
        </property>
        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>basicHttpBinding</serializedValue>
        </property>
        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>BasicHttpBinding_ISrmService</serializedValue>
        </property>
        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>SrmService.ISrmService</serializedValue>
        </property>
        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
        </property>
        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>&lt;Header /&gt;</serializedValue>
        </property>
        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
        </property>
        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
        </property>
        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
        </property>
        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
        </property>
        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
        </property>
        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
        </property>
        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
        </property>
        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>My</serializedValue>
        </property>
        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>LocalMachine</serializedValue>
        </property>
        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>FindBySubjectDistinguishedName</serializedValue>
        </property>
        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>False</serializedValue>
        </property>
        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue>BasicHttpBinding_ISrmService</serializedValue>
        </property>
        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <serializedValue />
        </property>
      </properties>
    </endpoint>
  </endpoints>
</SavedWcfConfigurationInformation>
CC/iWareCC_ASRS/Connected Services/SrmService/iWareCC.SrmService.IsAllowSendTaskResponse.datasource
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
    This file is automatically generated by Visual Studio .Net. It is
    used to store generic object data source configuration information.
    Renaming the file extension or editing the content of this file may
    cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="IsAllowSendTaskResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
   <TypeInfo>iWareCC.SrmService.IsAllowSendTaskResponse, Connected Services.SrmService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
CC/iWareCC_ASRS/Connected Services/SrmService/iWareCC.SrmService.IsReadyResponse.datasource
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
    This file is automatically generated by Visual Studio .Net. It is
    used to store generic object data source configuration information.
    Renaming the file extension or editing the content of this file may
    cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="IsReadyResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
   <TypeInfo>iWareCC.SrmService.IsReadyResponse, Connected Services.SrmService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
CC/iWareCC_ASRS/Connected Services/SrmService/iWareCC.SrmService.SdaResEntity.datasource
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
    This file is automatically generated by Visual Studio .Net. It is
    used to store generic object data source configuration information.
    Renaming the file extension or editing the content of this file may
    cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="SdaResEntity" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
   <TypeInfo>iWareCC.SrmService.SdaResEntity, Connected Services.SrmService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
CC/iWareCC_ASRS/Connected Services/SrmService/iWareCC.SrmService.SrmEntity.datasource
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
    This file is automatically generated by Visual Studio .Net. It is
    used to store generic object data source configuration information.
    Renaming the file extension or editing the content of this file may
    cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="SrmEntity" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
   <TypeInfo>iWareCC.SrmService.SrmEntity, Connected Services.SrmService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
CC/iWareCC_ASRS/Connected Services/SrmService/iWareCC.SrmService.SrmView.datasource
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
    This file is automatically generated by Visual Studio .Net. It is
    used to store generic object data source configuration information.
    Renaming the file extension or editing the content of this file may
    cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="SrmView" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
   <TypeInfo>iWareCC.SrmService.SrmView, Connected Services.SrmService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
CC/iWareCC_ASRS/Connected Services/SrmService/iWareSda.SrmService.SrmEntity1.xsd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/iWareSda.SrmService.SrmEntity" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/iWareSda.SrmService.SrmEntity" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="ArrayOfSrmEntity">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="SrmEntity" nillable="true" type="tns:SrmEntity" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfSrmEntity" nillable="true" type="tns:ArrayOfSrmEntity" />
  <xs:complexType name="SrmEntity">
    <xs:sequence>
      <xs:element minOccurs="0" name="AlarmCode" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="DeviceId" type="xs:int" />
      <xs:element minOccurs="0" name="IsOnline" type="xs:boolean" />
      <xs:element minOccurs="0" name="RAlarm" type="xs:boolean" />
      <xs:element minOccurs="0" name="RAlarmCode" type="xs:int" />
      <xs:element minOccurs="0" name="RAuto" type="xs:boolean" />
      <xs:element minOccurs="0" name="RCol" type="xs:int" />
      <xs:element minOccurs="0" name="RForkIni" type="xs:boolean" />
      <xs:element minOccurs="0" name="RForkPos" type="xs:int" />
      <xs:element minOccurs="0" name="RHandShake" type="xs:int" />
      <xs:element minOccurs="0" name="RLayer" type="xs:int" />
      <xs:element minOccurs="0" name="RLoaded" type="xs:boolean" />
      <xs:element minOccurs="0" name="RPickFinish" type="xs:boolean" />
      <xs:element minOccurs="0" name="RPosX" type="xs:int" />
      <xs:element minOccurs="0" name="RPosY" type="xs:int" />
      <xs:element minOccurs="0" name="RPutFinish" type="xs:boolean" />
      <xs:element minOccurs="0" name="RSrmNo" type="xs:int" />
      <xs:element minOccurs="0" name="RState" type="xs:int" />
      <xs:element minOccurs="0" name="RTaskFinish" type="xs:boolean" />
      <xs:element minOccurs="0" name="RTaskId" type="xs:int" />
      <xs:element minOccurs="0" name="SrmName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="State" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="WAckTaskFinish" type="xs:int" />
      <xs:element minOccurs="0" name="WCallBack" type="xs:int" />
      <xs:element minOccurs="0" name="WCancelTask" type="xs:int" />
      <xs:element minOccurs="0" name="WCancleAlarm" type="xs:int" />
      <xs:element minOccurs="0" name="WEstop" type="xs:int" />
      <xs:element minOccurs="0" name="WFromCol" type="xs:int" />
      <xs:element minOccurs="0" name="WFromLayer" type="xs:int" />
      <xs:element minOccurs="0" name="WFromRow" type="xs:int" />
      <xs:element minOccurs="0" name="WHandShake" type="xs:int" />
      <xs:element minOccurs="0" name="WNewTask" type="xs:int" />
      <xs:element minOccurs="0" name="WSrmNo" type="xs:int" />
      <xs:element minOccurs="0" name="WTaskId" type="xs:int" />
      <xs:element minOccurs="0" name="WToCol" type="xs:int" />
      <xs:element minOccurs="0" name="WToLayer" type="xs:int" />
      <xs:element minOccurs="0" name="WToRow" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="SrmEntity" nillable="true" type="tns:SrmEntity" />
</xs:schema>
CC/iWareCC_ASRS/Connected Services/SrmService/service.wsdl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,331 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SrmService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
    <xsd:schema targetNamespace="http://tempuri.org/Imports">
      <xsd:import namespace="http://tempuri.org/" />
      <xsd:import namespace="http://www.w3.org/2001/XMLSchema" />
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="ISrmService_GetSrm_CacheEntity_InputMessage" />
  <wsdl:message name="ISrmService_GetSrm_CacheEntity_OutputMessage">
    <wsdl:part name="GetSrm_CacheEntityResult" type="tns:ArrayOfSrmEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_GetSrmInfo_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_GetSrmInfo_OutputMessage">
    <wsdl:part name="GetSrmInfoResult" type="tns:SrmView" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmTask_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
    <wsdl:part name="taskId" type="xsd:int" />
    <wsdl:part name="sourcePlace" type="xsd:string" />
    <wsdl:part name="toPlace" type="xsd:string" />
    <wsdl:part name="command" type="xsd:short" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmTask_OutputMessage">
    <wsdl:part name="SendSrmTaskResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_ReleaseAlert_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_ReleaseAlert_OutputMessage">
    <wsdl:part name="ReleaseAlertResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_ContinueTask_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_ContinueTask_OutputMessage">
    <wsdl:part name="ContinueTaskResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendEStop_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendEStop_OutputMessage">
    <wsdl:part name="SendEStopResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmDelete_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmDelete_OutputMessage">
    <wsdl:part name="SendSrmDeleteResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsReady_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsReady_OutputMessage">
    <wsdl:part name="IsReadyResult" type="tns:SdaResEntity" />
    <wsdl:part name="msg" type="xsd:string" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsAllowSendTask_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsAllowSendTask_OutputMessage">
    <wsdl:part name="IsAllowSendTaskResult" type="tns:SdaResEntity" />
    <wsdl:part name="msg" type="xsd:string" />
  </wsdl:message>
  <wsdl:message name="ISrmService_ConfirmTaskFinish_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
    <wsdl:part name="taskId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_ConfirmTaskFinish_OutputMessage">
    <wsdl:part name="ConfirmTaskFinishResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsTaskFinish_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
    <wsdl:part name="taskId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsTaskFinish_OutputMessage">
    <wsdl:part name="IsTaskFinishResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsAllowSendNewTaskToSrm_InputMessage">
    <wsdl:part name="srmId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsAllowSendNewTaskToSrm_OutputMessage">
    <wsdl:part name="IsAllowSendNewTaskToSrmResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsHaveHeatBeat_InputMessage">
    <wsdl:part name="deviceId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsHaveHeatBeat_OutputMessage">
    <wsdl:part name="IsHaveHeatBeatResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsAllowIssueTask_InputMessage">
    <wsdl:part name="deviceId" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsAllowIssueTask_OutputMessage">
    <wsdl:part name="IsAllowIssueTaskResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_WriteStb_InputMessage">
    <wsdl:part name="deviceId" type="xsd:int" />
    <wsdl:part name="value" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_WriteStb_OutputMessage">
    <wsdl:part name="WriteStbResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_WriteAckTaskFinish_InputMessage">
    <wsdl:part name="deviceId" type="xsd:int" />
    <wsdl:part name="value" type="xsd:int" />
  </wsdl:message>
  <wsdl:message name="ISrmService_WriteAckTaskFinish_OutputMessage">
    <wsdl:part name="WriteAckTaskFinishResult" type="tns:SdaResEntity" />
  </wsdl:message>
  <wsdl:portType name="ISrmService">
    <wsdl:operation name="GetSrm_CacheEntity">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/GetSrm_CacheEntity" message="tns:ISrmService_GetSrm_CacheEntity_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/GetSrm_CacheEntityResponse" message="tns:ISrmService_GetSrm_CacheEntity_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="GetSrmInfo" parameterOrder="srmId">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/GetSrmInfo" message="tns:ISrmService_GetSrmInfo_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/GetSrmInfoResponse" message="tns:ISrmService_GetSrmInfo_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="SendSrmTask" parameterOrder="srmId taskId sourcePlace toPlace command">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmTask" message="tns:ISrmService_SendSrmTask_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskResponse" message="tns:ISrmService_SendSrmTask_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="ReleaseAlert" parameterOrder="srmId">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/ReleaseAlert" message="tns:ISrmService_ReleaseAlert_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/ReleaseAlertResponse" message="tns:ISrmService_ReleaseAlert_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="ContinueTask" parameterOrder="srmId">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/ContinueTask" message="tns:ISrmService_ContinueTask_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/ContinueTaskResponse" message="tns:ISrmService_ContinueTask_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="SendEStop" parameterOrder="srmId">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendEStop" message="tns:ISrmService_SendEStop_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendEStopResponse" message="tns:ISrmService_SendEStop_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="SendSrmDelete" parameterOrder="srmId">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmDelete" message="tns:ISrmService_SendSrmDelete_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmDeleteResponse" message="tns:ISrmService_SendSrmDelete_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsReady" parameterOrder="srmId msg">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsReady" message="tns:ISrmService_IsReady_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsReadyResponse" message="tns:ISrmService_IsReady_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsAllowSendTask" parameterOrder="srmId msg">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsAllowSendTask" message="tns:ISrmService_IsAllowSendTask_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsAllowSendTaskResponse" message="tns:ISrmService_IsAllowSendTask_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="ConfirmTaskFinish" parameterOrder="srmId taskId">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/ConfirmTaskFinish" message="tns:ISrmService_ConfirmTaskFinish_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/ConfirmTaskFinishResponse" message="tns:ISrmService_ConfirmTaskFinish_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsTaskFinish" parameterOrder="srmId taskId">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsTaskFinish" message="tns:ISrmService_IsTaskFinish_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsTaskFinishResponse" message="tns:ISrmService_IsTaskFinish_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsAllowSendNewTaskToSrm" parameterOrder="srmId">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsAllowSendNewTaskToSrm" message="tns:ISrmService_IsAllowSendNewTaskToSrm_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsAllowSendNewTaskToSrmResponse" message="tns:ISrmService_IsAllowSendNewTaskToSrm_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsHaveHeatBeat" parameterOrder="deviceId">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsHaveHeatBeat" message="tns:ISrmService_IsHaveHeatBeat_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsHaveHeatBeatResponse" message="tns:ISrmService_IsHaveHeatBeat_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsAllowIssueTask" parameterOrder="deviceId">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsAllowIssueTask" message="tns:ISrmService_IsAllowIssueTask_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsAllowIssueTaskResponse" message="tns:ISrmService_IsAllowIssueTask_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="WriteStb" parameterOrder="deviceId value">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/WriteStb" message="tns:ISrmService_WriteStb_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/WriteStbResponse" message="tns:ISrmService_WriteStb_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="WriteAckTaskFinish" parameterOrder="deviceId value">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/WriteAckTaskFinish" message="tns:ISrmService_WriteAckTaskFinish_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/WriteAckTaskFinishResponse" message="tns:ISrmService_WriteAckTaskFinish_OutputMessage" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="BasicHttpBinding_ISrmService" type="tns:ISrmService">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" />
    <wsdl:operation name="GetSrm_CacheEntity">
      <soap:operation soapAction="http://tempuri.org/ISrmService/GetSrm_CacheEntity" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetSrmInfo">
      <soap:operation soapAction="http://tempuri.org/ISrmService/GetSrmInfo" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="SendSrmTask">
      <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmTask" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ReleaseAlert">
      <soap:operation soapAction="http://tempuri.org/ISrmService/ReleaseAlert" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ContinueTask">
      <soap:operation soapAction="http://tempuri.org/ISrmService/ContinueTask" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="SendEStop">
      <soap:operation soapAction="http://tempuri.org/ISrmService/SendEStop" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="SendSrmDelete">
      <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmDelete" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsReady">
      <soap:operation soapAction="http://tempuri.org/ISrmService/IsReady" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsAllowSendTask">
      <soap:operation soapAction="http://tempuri.org/ISrmService/IsAllowSendTask" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ConfirmTaskFinish">
      <soap:operation soapAction="http://tempuri.org/ISrmService/ConfirmTaskFinish" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsTaskFinish">
      <soap:operation soapAction="http://tempuri.org/ISrmService/IsTaskFinish" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsAllowSendNewTaskToSrm">
      <soap:operation soapAction="http://tempuri.org/ISrmService/IsAllowSendNewTaskToSrm" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsHaveHeatBeat">
      <soap:operation soapAction="http://tempuri.org/ISrmService/IsHaveHeatBeat" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsAllowIssueTask">
      <soap:operation soapAction="http://tempuri.org/ISrmService/IsAllowIssueTask" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="WriteStb">
      <soap:operation soapAction="http://tempuri.org/ISrmService/WriteStb" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="WriteAckTaskFinish">
      <soap:operation soapAction="http://tempuri.org/ISrmService/WriteAckTaskFinish" style="rpc" />
      <wsdl:input>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" namespace="http://tempuri.org/" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="SrmService">
    <wsdl:port name="BasicHttpBinding_ISrmService" binding="tns:BasicHttpBinding_ISrmService">
      <soap:address location="http://localhost:8733/Design_Time_Addresses/iWareSda/SrmService/" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
CC/iWareCC_ASRS/Connected Services/SrmService/service.xsd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,158 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="ArrayOfSrmEntity">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="SrmEntity" nillable="true" type="tns:SrmEntity" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SrmEntity">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="DBBlockForWrite" type="tns:SrmDBForWrite" />
      <xs:element minOccurs="0" maxOccurs="1" name="DBBlockForRead" type="tns:SrmDBForRead" />
      <xs:element minOccurs="0" maxOccurs="1" name="plcService" type="tns:PLCService" />
      <xs:element minOccurs="0" maxOccurs="1" name="View" type="tns:SrmView" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SrmDBForWrite">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="W_HandShake" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_SrmNo" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_PalletType" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_SourcePosX" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_SourcePosY" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_SourcePosZ" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_DestinationPosX" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_DestinationPosY" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_DestinationPosZ" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_Command" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_EmergencyStop" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_CancleAlarm" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_TaskFinishConfirm" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_Stb" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_Ack" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="W_TaskNo" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SrmDBForRead">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="R_PickReqForInStore" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_HandShake" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_SrmNo" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_Mode" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_Alarm" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_LiftFull" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_PosX" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_PosY" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_PosZ" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_PosXmm" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_PosYmm" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_PosZmm" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_PickFinish" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_DeliveryFinish" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_TaskFinish" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_AlarmCode" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_State" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_ActualLane" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="R_TaskNo" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PLCService">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="_LogType" type="tns:LogType" />
      <xs:element minOccurs="1" maxOccurs="1" name="IsConnected" type="xs:boolean" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="LogType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="SrmTheadService" />
      <xs:enumeration value="ConveyorThreadService" />
      <xs:enumeration value="CCWCFService" />
      <xs:enumeration value="RgvThreadService" />
      <xs:enumeration value="TrussThreadService" />
      <xs:enumeration value="SS7" />
      <xs:enumeration value="HslCommunicationService" />
      <xs:enumeration value="SdaService" />
      <xs:enumeration value="SrmSdaService" />
      <xs:enumeration value="LineSdaService" />
      <xs:enumeration value="RgvSdaService" />
      <xs:enumeration value="OutPlanTask" />
      <xs:enumeration value="MesService" />
      <xs:enumeration value="AGVTheadService" />
      <xs:enumeration value="LineInScanTheadService" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="SrmView">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:SrmDB2Obj">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="1" name="DeviceName" type="xs:string" />
          <xs:element minOccurs="1" maxOccurs="1" name="DeviceId" type="xs:int" />
          <xs:element minOccurs="1" maxOccurs="1" name="IsConnected" type="xs:boolean" />
          <xs:element minOccurs="0" maxOccurs="1" name="ModeName" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="StateName" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="SrmSourcePlace" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="SrmToPlace" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="R_WarningDBList" type="tns:ArrayOfDeviceWarningInfo" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="SrmDB2Obj">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="W_HandShake" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_SrmNo" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_PalletType" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_SourcePosX" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_SourcePosY" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_SourcePosZ" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_DestinationPosX" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_DestinationPosY" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_DestinationPosZ" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_Command" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_EmergencyStop" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_CancleAlarm" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_TaskFinishConfirm" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_Stb" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_Ack" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="W_TaskNo" type="xs:int" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_PickReqForInStore" type="xs:boolean" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_HandShake" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_SrmNo" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_Mode" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_Alarm" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_LiftFull" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_PosX" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_PosY" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_PosZ" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_PosXmm" type="xs:int" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_PosYmm" type="xs:int" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_PosZmm" type="xs:int" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_PickFinish" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_DeliveryFinish" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_TaskFinish" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_AlarmCode" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_State" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_ActualLane" type="xs:short" />
      <xs:element minOccurs="1" maxOccurs="1" name="R_TaskNo" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArrayOfDeviceWarningInfo">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="DeviceWarningInfo" nillable="true" type="tns:DeviceWarningInfo" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="DeviceWarningInfo">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="Address" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="Context" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="Code" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SdaResEntity">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="result" type="xs:boolean" />
      <xs:element minOccurs="0" maxOccurs="1" name="resData" />
      <xs:element minOccurs="0" maxOccurs="1" name="resMsg" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
</xs:schema>
CC/iWareCC_ASRS/Connected Services/SrmService/service1.wsdl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,210 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SrmService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
    <xsd:schema targetNamespace="http://tempuri.org/Imports">
      <xsd:import namespace="http://tempuri.org/" />
      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
      <xsd:import namespace="http://schemas.datacontract.org/2004/07/iWareSda.SrmService.SrmEntity" />
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="ISrmService_GetSrm_CacheEntity_InputMessage">
    <wsdl:part name="parameters" element="tns:GetSrm_CacheEntity" />
  </wsdl:message>
  <wsdl:message name="ISrmService_GetSrm_CacheEntity_OutputMessage">
    <wsdl:part name="parameters" element="tns:GetSrm_CacheEntityResponse" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmTask_InputMessage">
    <wsdl:part name="parameters" element="tns:SendSrmTask" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmTask_OutputMessage">
    <wsdl:part name="parameters" element="tns:SendSrmTaskResponse" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmMove_InputMessage">
    <wsdl:part name="parameters" element="tns:SendSrmMove" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmMove_OutputMessage">
    <wsdl:part name="parameters" element="tns:SendSrmMoveResponse" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmEStop_InputMessage">
    <wsdl:part name="parameters" element="tns:SendSrmEStop" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmEStop_OutputMessage">
    <wsdl:part name="parameters" element="tns:SendSrmEStopResponse" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SrmRlsAlert_InputMessage">
    <wsdl:part name="parameters" element="tns:SrmRlsAlert" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SrmRlsAlert_OutputMessage">
    <wsdl:part name="parameters" element="tns:SrmRlsAlertResponse" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmDelete_InputMessage">
    <wsdl:part name="parameters" element="tns:SendSrmDelete" />
  </wsdl:message>
  <wsdl:message name="ISrmService_SendSrmDelete_OutputMessage">
    <wsdl:part name="parameters" element="tns:SendSrmDeleteResponse" />
  </wsdl:message>
  <wsdl:message name="ISrmService_GetSrmInfo_InputMessage">
    <wsdl:part name="parameters" element="tns:GetSrmInfo" />
  </wsdl:message>
  <wsdl:message name="ISrmService_GetSrmInfo_OutputMessage">
    <wsdl:part name="parameters" element="tns:GetSrmInfoResponse" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsReady_InputMessage">
    <wsdl:part name="parameters" element="tns:IsReady" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsReady_OutputMessage">
    <wsdl:part name="parameters" element="tns:IsReadyResponse" />
  </wsdl:message>
  <wsdl:message name="ISrmService_ConfirmTaskFinish_InputMessage">
    <wsdl:part name="parameters" element="tns:ConfirmTaskFinish" />
  </wsdl:message>
  <wsdl:message name="ISrmService_ConfirmTaskFinish_OutputMessage">
    <wsdl:part name="parameters" element="tns:ConfirmTaskFinishResponse" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsTaskFinish_InputMessage">
    <wsdl:part name="parameters" element="tns:IsTaskFinish" />
  </wsdl:message>
  <wsdl:message name="ISrmService_IsTaskFinish_OutputMessage">
    <wsdl:part name="parameters" element="tns:IsTaskFinishResponse" />
  </wsdl:message>
  <wsdl:portType name="ISrmService">
    <wsdl:operation name="GetSrm_CacheEntity">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/GetSrm_CacheEntity" message="tns:ISrmService_GetSrm_CacheEntity_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/GetSrm_CacheEntityResponse" message="tns:ISrmService_GetSrm_CacheEntity_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="SendSrmTask">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmTask" message="tns:ISrmService_SendSrmTask_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskResponse" message="tns:ISrmService_SendSrmTask_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="SendSrmMove">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmMove" message="tns:ISrmService_SendSrmMove_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmMoveResponse" message="tns:ISrmService_SendSrmMove_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="SendSrmEStop">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmEStop" message="tns:ISrmService_SendSrmEStop_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmEStopResponse" message="tns:ISrmService_SendSrmEStop_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="SrmRlsAlert">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SrmRlsAlert" message="tns:ISrmService_SrmRlsAlert_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SrmRlsAlertResponse" message="tns:ISrmService_SrmRlsAlert_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="SendSrmDelete">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmDelete" message="tns:ISrmService_SendSrmDelete_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmDeleteResponse" message="tns:ISrmService_SendSrmDelete_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="GetSrmInfo">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/GetSrmInfo" message="tns:ISrmService_GetSrmInfo_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/GetSrmInfoResponse" message="tns:ISrmService_GetSrmInfo_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsReady">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsReady" message="tns:ISrmService_IsReady_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsReadyResponse" message="tns:ISrmService_IsReady_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="ConfirmTaskFinish">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/ConfirmTaskFinish" message="tns:ISrmService_ConfirmTaskFinish_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/ConfirmTaskFinishResponse" message="tns:ISrmService_ConfirmTaskFinish_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="IsTaskFinish">
      <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsTaskFinish" message="tns:ISrmService_IsTaskFinish_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsTaskFinishResponse" message="tns:ISrmService_IsTaskFinish_OutputMessage" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="BasicHttpBinding_ISrmService" type="tns:ISrmService">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="GetSrm_CacheEntity">
      <soap:operation soapAction="http://tempuri.org/ISrmService/GetSrm_CacheEntity" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="SendSrmTask">
      <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmTask" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="SendSrmMove">
      <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmMove" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="SendSrmEStop">
      <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmEStop" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="SrmRlsAlert">
      <soap:operation soapAction="http://tempuri.org/ISrmService/SrmRlsAlert" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="SendSrmDelete">
      <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmDelete" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetSrmInfo">
      <soap:operation soapAction="http://tempuri.org/ISrmService/GetSrmInfo" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsReady">
      <soap:operation soapAction="http://tempuri.org/ISrmService/IsReady" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ConfirmTaskFinish">
      <soap:operation soapAction="http://tempuri.org/ISrmService/ConfirmTaskFinish" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="IsTaskFinish">
      <soap:operation soapAction="http://tempuri.org/ISrmService/IsTaskFinish" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="SrmService">
    <wsdl:port name="BasicHttpBinding_ISrmService" binding="tns:BasicHttpBinding_ISrmService">
      <soap:address location="http://localhost:8733/Design_Time_Addresses/iWareSda.SrmService/SrmService/" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
CC/iWareCC_ASRS/Connected Services/SrmService/service2.xsd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="http://schemas.datacontract.org/2004/07/iWareSda.SrmService.SrmEntity" />
  <xs:element name="GetSrm_CacheEntity">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetSrm_CacheEntityResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/iWareSda.SrmService.SrmEntity" minOccurs="0" name="GetSrm_CacheEntityResult" nillable="true" type="q1:ArrayOfSrmEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SendSrmTask">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="srmId" type="xs:int" />
        <xs:element minOccurs="0" name="taskId" type="xs:int" />
        <xs:element minOccurs="0" name="sourcePlace" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="toPlace" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SendSrmTaskResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="SendSrmTaskResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SendSrmMove">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="srmId" type="xs:int" />
        <xs:element minOccurs="0" name="taskId" type="xs:int" />
        <xs:element minOccurs="0" name="toPlace" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SendSrmMoveResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="SendSrmMoveResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SendSrmEStop">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="srmId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SendSrmEStopResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="SrmRlsAlert">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="srmId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SrmRlsAlertResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="SendSrmDelete">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="srmId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SendSrmDeleteResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetSrmInfo">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="srmId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetSrmInfoResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/iWareSda.SrmService.SrmEntity" minOccurs="0" name="GetSrmInfoResult" nillable="true" type="q2:SrmEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsReady">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="srmId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsReadyResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="IsReadyResult" type="xs:boolean" />
        <xs:element minOccurs="0" name="msg" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ConfirmTaskFinish">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="srmId" type="xs:int" />
        <xs:element minOccurs="0" name="taskId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ConfirmTaskFinishResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConfirmTaskFinishResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsTaskFinish">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="srmId" type="xs:int" />
        <xs:element minOccurs="0" name="taskId" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IsTaskFinishResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="IsTaskFinishResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
CC/iWareCC_ASRS/Connected Services/SrmService/service21.xsd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="anyType" nillable="true" type="xs:anyType" />
  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
  <xs:element name="boolean" nillable="true" type="xs:boolean" />
  <xs:element name="byte" nillable="true" type="xs:byte" />
  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
  <xs:element name="decimal" nillable="true" type="xs:decimal" />
  <xs:element name="double" nillable="true" type="xs:double" />
  <xs:element name="float" nillable="true" type="xs:float" />
  <xs:element name="int" nillable="true" type="xs:int" />
  <xs:element name="long" nillable="true" type="xs:long" />
  <xs:element name="QName" nillable="true" type="xs:QName" />
  <xs:element name="short" nillable="true" type="xs:short" />
  <xs:element name="string" nillable="true" type="xs:string" />
  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
  <xs:element name="char" nillable="true" type="tns:char" />
  <xs:simpleType name="char">
    <xs:restriction base="xs:int" />
  </xs:simpleType>
  <xs:element name="duration" nillable="true" type="tns:duration" />
  <xs:simpleType name="duration">
    <xs:restriction base="xs:duration">
      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="guid" nillable="true" type="tns:guid" />
  <xs:simpleType name="guid">
    <xs:restriction base="xs:string">
      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:attribute name="FactoryType" type="xs:QName" />
  <xs:attribute name="Id" type="xs:ID" />
  <xs:attribute name="Ref" type="xs:IDREF" />
</xs:schema>
CC/iWareCC_ASRS/DeviceThreadFactory/DeviceThreadService/ConveyorThreadService/ConveyorThreadService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,506 @@
using iWareCommon;
using iWareCommon.Utils;
using iWareSql;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Linq;
using iWareSql.Orm;
using System.Threading.Tasks;
using Newtonsoft.Json;
using iWareSql.DataAccess;
using iWareModel;
namespace iWareCC
{
    /// <summary>
    /// ç«‹åº“输送线任务服务线程类
    /// </summary>
    public class ConveyorThreadService : DeviceThreadServiceHandle
    {
        //private static string _namespace = "iWareCC.ConveyorThreadService";
        //private ConveyorThreadService() { }
        //public ConveyorThreadService(LogType logType)
        //{
        //    base.currentLogType = logType;
        //}
        //public void StartService()
        //{
        //    Task.Run(() =>
        //    {
        //        try
        //        {
        //            //自动执行立库输送线任务线程
        //            Log4NetHelper.WriteInfoLog(base.currentLogType, "[自动执行立库输送线任务线程] å¯åŠ¨äº†");
        //            ThreadHelper.StartThread(new Thread(new ParameterizedThreadStart(DoConveyorsTask)), (int)EDeviceId222.立库输送线);
        //            //自动结束立库输送线任务线程
        //            ThreadHelper.StartThread(new Thread(new ParameterizedThreadStart(FinishTask)), (int)EDeviceId222.立库输送线);
        //        }
        //        catch (Exception ex)
        //        {
        //            Log4NetHelper.WriteErrorLog(base.currentLogType, "ConveyorThreadService线程启动出现异常", ex);
        //        }
        //    });
        //}
        //#region çº¿ç¨‹å¤„理
        //#region è‡ªåŠ¨æ‰§è¡Œç«‹åº“è¾“é€çº¿ä»»åŠ¡çº¿ç¨‹
        ///// <summary>
        ///// è‡ªåŠ¨æ‰§è¡Œç«‹åº“è¾“é€çº¿ä»»åŠ¡
        ///// </summary>
        ///// <param name="srmName"></param>
        //private void DoConveyorsTask(object deviceId)
        //{
        //    string errMsg = "";
        //    while (true)
        //    {
        //        if (SystemValue.isAllowRuning_ConveyorsTaskThreadService && SystemValue.isStartedModel)
        //        {
        //            DoConveyorsTaskByThead(deviceId, out  errMsg);
        //        }
        //        SystemWarningMsg._lbl_Alert_ConveyorsRelease = errMsg;
        //        Thread.Sleep(cycleDelay);
        //    }
        //}
        ///// <summary>
        ///// è‡ªåŠ¨æ‰§è¡Œç«‹åº“è¾“é€çº¿ä»»åŠ¡ï¼ˆçº¿ç¨‹ï¼‰
        ///// </summary>
        ///// <param name="srmName"></param>
        //private void DoConveyorsTaskByThead(object deviceId, out string errMsg)
        //{
        //    errMsg = "";
        //    string logHeader = "方法:DoConveyorsTaskByThead,参数deviceId:" + deviceId.ToString() + "===";
        //    #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
        //    IDictionary<string, object> logDict = new Dictionary<string, object>();
        //    logDict.Add("deviceId", deviceId);
        //    UDT_SYS_ExceptionInfo exception = ExceptionHandels.GetExceptionInfo<IDictionary<string, object>>(base.currentLogType, _namespace, "DoConveyorsTaskByThead", logDict);
        //    #endregion
        //    try
        //    {
        //        /*
        //         * æ‰§è¡Œå‘送给立库输送线的指令任务
        //         * 1、验证根据设备号是否找到立库输送线
        //         * 2、判断设备是否属于任务完成,如果属于任务完成,就继续走3
        //         * 3、判断数据库中是否有可要下发的任务,如果有就下发+验证起始点和目标点是否正确
        //         * 4、下发成功后,更新任务状态
        //         */
        //        int int_deviceId = (int)deviceId;
        //        //1、验证根据设备号是否找到立库输送线
        //        SrmConveyorEntity deviceEntity = null;
        //        deviceEntity = ValidateIsExistDevice<SrmConveyorEntity>(int_deviceId);
        //        if (deviceEntity == null) return;
        //        //暂时记录文本日志,正式环境要去掉
        //        TestStruct.WriteTempLog(base.currentLogType, logHeader + "执行结束ValidateIsExistDevice,根据设备号找到了输送线");
        //        //2、判断设备是否属于空闲,如果属于空闲,就继续走2
        //        bool isOk = ValidateDeviceIsOK((int)EDeviceId222.立库输送线, 0, out errMsg);
        //        //暂时记录文本日志,正式环境要去掉
        //        TestStruct.WriteTempLog(base.currentLogType, logHeader + "执行结束ValidateDeviceIsOK,输送线是否可以接受任务:" + isOk);
        //        if (!isOk) return;
        //        using (Edm dbModel = new Edm())
        //        {
        //            #region //3、判断数据库中是否有可要下发的任务,如果有就下发
        //            var currentTask = ValidateIsExistTaskToDispose<Conveyor_Task>(dbModel, int_deviceId, out errMsg, TaskExcuteTypeEnum.执行任务);
        //            if (currentTask == null)
        //            {//表示DB中没有任务要发送给立库输送线
        //                //暂时记录文本日志,正式环境要去掉
        //                TestStruct.WriteTempLog(base.currentLogType, logHeader + "执行ValidateIsExistTaskToDispose完,表示DB中没有任务要发送给立库输送线");
        //                return;
        //            }
        //            //判断输送线任务是否可以允许下发开始任务
        //            var isAllowStatrt = ValidateDeviceTaskIsAllowStart(currentTask, dbModel);
        //            if (!isAllowStatrt)
        //            {//防止过早给输送线发任务,导致输送线超时
        //                return;
        //            }
        //            //验证起始点和目标点是否正确
        //            RealPlaceEntity realPlaceEntity = null;
        //            if (!ValdiatePalceIsRight(dbModel, (int)currentTask.SourcePlace, (int)currentTask.ToPlace, ref realPlaceEntity)) return;
        //            //暂时记录文本日志,正式环境要去掉
        //            TestStruct.WriteTempLog(base.currentLogType, logHeader + "执行ValdiatePalceIsRight完,验证起始点和目标点正确,任务是srmTask的ID:" + currentTask.TackId);
        //            //下发
        //            //注意:第四个参数没有值
        //            var barcode = "1";//二维码写死位1
        //            var log = ConveyorTaskRequestLogHandles.GetTask(currentTask.TackId,
        //                              currentTask.DeviceId.ToString(), currentTask.PlcTaskId, currentTask.RealSourcePlace.ToString(),
        //                              currentTask.RealToPlace.ToString(), "给立库输送线发送任务指令", "sys");
        //            SdaResEntity sdaResult = new SdaResEntity();
        //            try
        //            {
        //                if (WCSConfigHelper.GetConfig_IsSimulationPLC())
        //                {
        //                    sdaResult.result = true;
        //                }
        //                else
        //                {
        //                    String sdaResultStr = new SrmConveyorService.SrmConveyorServiceClient().SendSrmTransTask(int_deviceId, Convert.ToInt32(currentTask.PlcTaskId), Convert.ToInt32(currentTask.RealSourcePlace), Convert.ToInt32(currentTask.RealToPlace), barcode);
        //                    sdaResult = JsonConvert.DeserializeObject<SdaResEntity>(sdaResultStr);
        //                }
        //                if (sdaResult.result == false)
        //                {//给立库输送线下发指令失败
        //                    exception.exceptionMsg = string.Format("发送指令给立库输送线失败,设备号{0},任务ID{1},起始位{2},目标位{3},errMsg{4}", int_deviceId, currentTask.PlcTaskId, currentTask.RealSourcePlace.ToString(), currentTask.RealToPlace.ToString(), errMsg);
        //                    ExceptionHandels.InsertExceptionInfo(exception, true);
        //                    ConveyorTaskRequestLogHandles.InsertTask(base.currentLogType, RequestStatusEnum.请求失败, JsonConvert.SerializeObject(sdaResult), log, null);
        //                    return;
        //                }
        //                else
        //                {
        //                    ConveyorTaskRequestLogHandles.InsertTask(base.currentLogType, RequestStatusEnum.请求成功, JsonConvert.SerializeObject(sdaResult), log, null);
        //                }
        //            }
        //            catch (Exception ex)
        //            {
        //                ConveyorTaskRequestLogHandles.InsertTask(base.currentLogType, RequestStatusEnum.请求失败, JsonConvert.SerializeObject(sdaResult), log, ex);
        //                ExceptionHandels.GetExceptionInfoForError("给立库输送线发送任务指令出现异常,deviceId:" + deviceId + ",异常:" + ex.Message, ex, ref exception);
        //                ExceptionHandels.InsertExceptionInfo(exception, true);
        //                return;
        //            }
        //            #endregion
        //            //4、下发成功后,更新任务状态
        //            currentTask.IsReleased = (int)EYesOrNo.是;
        //            currentTask.UpdateTime = DateTime.Now;
        //            currentTask.TaskState = (int)ETaskStatus.已下发;
        //            currentTask.IssueTime = DateTime.Now;//下发时间
        //            //只更新着三个字段!
        //            //更新 è¿›å‡ºåº“记录表的时间
        //            var srm_InOutStoreRecord = dbModel.Srm_InOutStoreRecord.Where(x => x.TaskGuid == currentTask.TaskGuid).FirstOrDefault();
        //            if (srm_InOutStoreRecord != null)
        //            {
        //                srm_InOutStoreRecord.TaskStartTime = DateTime.Now;
        //                srm_InOutStoreRecord.LastModifyTime = DateTime.Now;
        //                srm_InOutStoreRecord.LastModifier = "输送机任务下发";
        //                srm_InOutStoreRecord.Remark = "输送机任务下发";
        //            }
        //            /*
        //            //如果任务类型是配板原料入库,需要更新 mes的上料清单表
        //            ConveyorTaskTypeEnum _ConveyorTaskTypeEnum = (ConveyorTaskTypeEnum)Enum.Parse(typeof(ConveyorTaskTypeEnum), currentTask.TaskType.ToString());
        //            switch (_ConveyorTaskTypeEnum)
        //            {
        //                case ConveyorTaskTypeEnum.配板原料入库:
        //                    if (!string.IsNullOrEmpty(currentTask.ToNumber))
        //                    {
        //                    }
        //                    break;
        //                default:
        //                    break;
        //            }
        //            //*/
        //            dbModel.SaveChanges();
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        ExceptionHandels.GetExceptionInfoForError("自动执行立库输送线任务(线程)出现异常,deviceId:" + deviceId + ",异常:" + ex.Message, ex, ref exception);
        //        ExceptionHandels.InsertExceptionInfo(exception, true);
        //    }
        //}
        //#endregion
        //#region è‡ªåŠ¨ç»“æŸç«‹åº“è¾“é€çº¿ä»»åŠ¡çº¿ç¨‹
        ///// <summary>
        ///// è‡ªåŠ¨ç»“æŸç«‹åº“è¾“é€çº¿ä»»åŠ¡çº¿ç¨‹
        ///// </summary>
        ///// <param name="srmName"></param>
        //private void FinishTask(object deviceId)
        //{
        //    string errMsg = "";
        //    while (true)
        //    {
        //        if (SystemValue.isAllowRuning_ConveyorsTaskThreadService_Finish && SystemValue.isStartedModel)
        //        {
        //            FinishConveyorTaskByThead(deviceId, out errMsg);
        //        }
        //        SystemWarningMsg._lbl_Alert_ConveyorsReleaseFinish = errMsg;
        //        Thread.Sleep(cycleDelay);
        //    }
        //}
        ///// <summary>
        ///// è‡ªåŠ¨ç»“æŸç«‹åº“è¾“é€çº¿ä»»åŠ¡çº¿ç¨‹ï¼ˆçº¿ç¨‹ï¼‰
        ///// </summary>
        ///// <param name="srmName"></param>
        //public void FinishConveyorTaskByThead(object deviceId, out string errMsg)
        //{
        //    errMsg = "";
        //    #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
        //    IDictionary<string, object> logDict = new Dictionary<string, object>();
        //    logDict.Add("deviceId", deviceId);
        //    UDT_SYS_ExceptionInfo exception = ExceptionHandels.GetExceptionInfo<IDictionary<string, object>>(base.currentLogType, _namespace, "FinishConveyorTaskByThead", logDict);
        //    #endregion
        //    try
        //    {
        //        /*
        //         * æ‰§è¡Œå‘送给立库输送线的指令任务
        //         * 1、验证根据设备号是否找到立库输送线
        //         * 2、判断设备是否属于任务完成,如果属于任务完成,就继续走3
        //         * 3、判断数据库中是否有可要完成的任务,如果有判断是否跟立库输送线中的完成任务相符,如果相符就处理
        //         * 4、更新任务状态
        //         */
        //        int int_deviceId = (int)deviceId;
        //        //1、验证根据设备号是否找到立库输送线
        //        SrmConveyorEntity srmEntity = null;
        //        srmEntity = ValidateIsExistDevice<SrmConveyorEntity>(int_deviceId);
        //        if (srmEntity == null) return;
        //        //注意:这里不需要判断设备是否完成,直接就结束任务
        //        /*
        //        2、判断设备是否属于任务完成,如果属于任务完成,就继续走2
        //        var isTaskFinished = ValidateSrmDeviceTaskIsFinsished(int_deviceId);
        //        if (!isTaskFinished) return;
        //        //*/
        //        using (Edm dbModel = new Edm())
        //        {
        //            #region //3、判断数据库中是否有可要完成的任务,如果有判断是否跟立库输送线中的完成任务相符,如果相符就处理
        //            var currentTask = ValidateIsExistTaskToDispose<Conveyor_Task>(dbModel, int_deviceId, out errMsg, TaskExcuteTypeEnum.结束任务);
        //            if (currentTask == null)
        //            {//表示DB中没有任务要发送给立库输送线
        //                return;
        //            }
        //            #endregion
        //            //输送线的完成,要判断和他绑定的堆垛机的任务是否完成
        //            var isAllowFinish = ValidateDeviceTaskIsAllowFinsished(currentTask, dbModel);
        //            if (!isAllowFinish)
        //            {//不允许执行结束
        //                return;
        //            }
        //            using (var trans = dbModel.Database.BeginTransaction())
        //            {
        //                try
        //                {
        //                    //4、更新任务状态
        //                    currentTask.FinishTime = DateTime.Now;//完成时间
        //                    currentTask.IsFinished = (int)EYesOrNo.是;
        //                    currentTask.TaskState = (int)ETaskStatus.已完成;
        //                    currentTask.UpdateTime = DateTime.Now;
        //                    //如果是出库任务,需要更改库存 [EditBy shaocx,2020-10-22]
        //                    if (currentTask.TaskType == (int)ConveyorTaskTypeEnum.人工出库)
        //                    {
        //                        var cvp = CvP_Handles.GetCVPByPlaceId(dbModel, Convert.ToInt32(currentTask.SourcePlace));
        //                        cvp.PlaceId = (int)currentTask.ToPlace;
        //                        cvp.LastModifier = "输送线任务完成线程";
        //                        cvp.UpdateTime = DateTime.Now;
        //                        cvp.Remark = "输送线任务完成线程,更改CVP的库位";
        //                    }
        //                    //注意:输送线任务完成,不需要给输送线发完成确认指令,因为输送线由多个节点组成!!!!
        //                    /*
        //                    //任务完成处理成功,需要再给堆垛机发送任务完成确认信号
        //                    bool isSendFinish = new iWareSda.ConveyorService.SrmConveyorService().SendTaskFinishConfirm(Convert.ToInt32(currentTask.PlcTaskId));
        //                    if (!isSendFinish)
        //                    {
        //                        throw new Exception(string.Format("任务完成处理成功,需要再给立库输送线发送任务完成确认信号失败, ä»»åŠ¡å·{0}", currentTask.PlcTaskId));
        //                    }
        //                    //*/
        //                    dbModel.SaveChanges();
        //                    trans.Commit();
        //                }
        //                catch (Exception)
        //                {
        //                    trans.Rollback();
        //                    throw;
        //                }
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        ExceptionHandels.GetExceptionInfoForError("自动结束立库输送线任务线程(线程)出现异常,deviceId:" + deviceId + ",异常:" + ex.Message, ex, ref exception);
        //        ExceptionHandels.InsertExceptionInfo(exception, true);
        //    }
        //}
        //#endregion
        //#endregion
        //#region å…¬å…±å¤„理
        ///// <summary>
        ///// éªŒè¯ç«‹åº“输送线是否可以接受任务
        ///// </summary>
        ///// <param name="int_deviceId">设备号,不需要</param>
        ///// <param name="taskId">任务号,需要</param>
        ///// <returns></returns>
        //public override bool ValidateDeviceIsOK(int int_deviceId, int taskId, out string errMsg)
        //{
        //    errMsg = "";
        //    // ç«‹åº“输送线没有所谓的空闲状态,有任务直接发即可
        //    if (SrmEquipmentSituationHandels222.IsEquipmentBreakdown(int_deviceId).result)
        //    {//如果设备已经设定为 æ•…障状态,不允许下发任务!!! [EditBy shaocx,2020-12-07]
        //        return false;
        //    }
        //    return true;
        //}
        ///// <summary>
        ///// éªŒè¯ç«‹åº“输送线是否任务完成
        ///// </summary>
        ///// <param name="int_deviceId"></param>
        ///// <returns>0表示没有任务完成,其他表示任务完成,并返回任务号</returns>
        //public override bool ValidateDeviceTaskIsFinsished(int int_deviceId, int taskId,out string errMsg)
        //{
        //    errMsg = "";
        //    String sdaResultStr = new SrmConveyorService.SrmConveyorServiceClient().IsTaskFinish(taskId);
        //    SdaResEntity sdaResult = JsonConvert.DeserializeObject<SdaResEntity>(sdaResultStr);
        //    if (sdaResult.result == false)
        //    {
        //        errMsg = sdaResult.resMsg;
        //    }
        //    return sdaResult.result;
        //    //*/
        //}
        ///// <summary>
        ///// éªŒè¯ç«‹åº“输送线是否允许任务完成
        ///// </summary>
        ///// <param name="int_deviceId"></param>
        ///// <returns>0表示没有任务完成,其他表示任务完成,并返回任务号</returns>
        //public bool ValidateDeviceTaskIsAllowFinsished(Conveyor_Task task, Edm edm)
        //{
        //    Srm_Task srmTask = null;
        //    var queryTaskStatus_HasIssue = (int)ETaskStatus.已下发;
        //    var queryTaskStatus_Finish = (int)ETaskStatus.已完成;
        //    ConveyorTaskTypeEnum taskType = (ConveyorTaskTypeEnum)Enum.Parse(typeof(ConveyorTaskTypeEnum), task.TaskType.ToString());
        //    switch (taskType)
        //    {
        //        case ConveyorTaskTypeEnum.配板原料入库:
        //        case ConveyorTaskTypeEnum.线下配板原料入库:
        //            //要判断和他同一个任务的堆垛机任务是不是已经发送任务了,任务状态是 è¿›è¡Œä¸­æˆ–已完成,如果是就允许完成,如果不是,就不允许完成
        //            srmTask = edm.Srm_Task.Where(x => x.TaskGuid == task.TaskGuid && (
        //                x.TaskState == queryTaskStatus_HasIssue || x.TaskState == queryTaskStatus_Finish
        //                )).FirstOrDefault();
        //            if (srmTask != null)
        //            {
        //                return true;
        //            }
        //            break;
        //        case ConveyorTaskTypeEnum.人工出库:
        //            //要判断和他同一个任务的堆垛机任务是不是已经已完成,如果是就允许完成,如果不是,就不允许完成
        //            srmTask = edm.Srm_Task.Where(x => x.TaskGuid == task.TaskGuid && (
        //               x.TaskState == queryTaskStatus_Finish
        //                )).FirstOrDefault();
        //            if (srmTask != null)
        //            {
        //                return true;
        //            }
        //            break;
        //    }
        //    return false;
        //}
        ///// <summary>
        ///// éªŒè¯ç«‹åº“输送线是否允许任务开始
        ///// </summary>
        ///// <param name="int_deviceId"></param>
        ///// <returns>0表示没有任务完成,其他表示任务完成,并返回任务号</returns>
        //public bool ValidateDeviceTaskIsAllowStart(Conveyor_Task task, Edm edm)
        //{
        //    Srm_Task srmTask = null;
        //    var queryTaskStatus_Finish = (int)ETaskStatus.已完成;
        //    ConveyorTaskTypeEnum taskType = (ConveyorTaskTypeEnum)Enum.Parse(typeof(ConveyorTaskTypeEnum), task.TaskType.ToString());
        //    switch (taskType)
        //    {
        //        default:
        //            return true;
        //        case ConveyorTaskTypeEnum.人工出库:
        //            //要判断和他同一个任务的堆垛机任务是不是已经已完成,如果是就允许开始任务,如果不是,就不允许开始
        //            srmTask = edm.Srm_Task.Where(x => x.TaskGuid == task.TaskGuid && (
        //               x.TaskState == queryTaskStatus_Finish
        //                )).FirstOrDefault();
        //            if (srmTask != null)
        //            {
        //                return true;
        //            }
        //            break;
        //    }
        //    return false;
        //}
        ///// <summary>
        ///// éªŒè¯æ ¹æ®è®¾å¤‡å·æ˜¯å¦æ‰¾åˆ°ç«‹åº“输送线
        ///// </summary>
        ///// <param name="int_deviceId"></param>
        ///// <returns></returns>
        //public override SrmConveyorEntity ValidateIsExistDevice<SrmConveyorEntity>(int int_deviceId)
        //{
        //    iWareCC.SrmConveyorService.SrmConveyorEntity item = new SrmConveyorService.SrmConveyorServiceClient().GetSrmConveyorInfo(int_deviceId);
        //    var isExist = item.DeviceId == int_deviceId;
        //    if (!isExist)
        //    {
        //        Log4NetHelper.WriteErrorLog(base.currentLogType, "未找到立库输送线deviceId=" + int_deviceId);
        //    }
        //    return (SrmConveyorEntity)(object)item;
        //}
        ///// <summary>
        ///// éªŒè¯æ•°æ®åº“中是否有任务要处理
        ///// </summary>
        ///// <typeparam name="Conveyor_Task"></typeparam>
        ///// <param name="dbModel"></param>
        ///// <param name="int_deviceId">立库输送线设备号</param>
        ///// <param name="errMsg"></param>
        ///// <param name="_TaskExcuteTypeEnum"></param>
        ///// <returns></returns>
        //public override Conveyor_Task ValidateIsExistTaskToDispose<Conveyor_Task>(Edm dbModel, int int_deviceId, out string errMsg, TaskExcuteTypeEnum _TaskExcuteTypeEnum)
        //{
        //    errMsg = "";
        //    iWareSql.Orm.Conveyor_Task currTask = null;
        //    switch (_TaskExcuteTypeEnum)
        //    {
        //        case TaskExcuteTypeEnum.执行任务:
        //            var process_count = dbModel.Conveyor_Task.Where(x => x.DeviceId == int_deviceId && x.TaskState == (int)ETaskStatus.已下发).ToList().Count;
        //            if (process_count > 0)
        //            {
        //                errMsg = string.Format("deviceId={0}的正在执行任务", int_deviceId);
        //                return default(Conveyor_Task);
        //            }
        //            currTask = dbModel.Conveyor_Task.Where(x => x.DeviceId == int_deviceId && x.TaskState == (int)ETaskStatus.未开始).ToList().OrderBy(x => x.TackId).FirstOrDefault();
        //            break;
        //        case TaskExcuteTypeEnum.结束任务:
        //            currTask = dbModel.Conveyor_Task.Where(x => x.DeviceId == int_deviceId && x.TaskState == (int)ETaskStatus.已下发).ToList().OrderBy(x => x.TackId).FirstOrDefault();
        //            break;
        //    }
        //    return (Conveyor_Task)(object)currTask;
        //}
        //#endregion
    }
}
CC/iWareCC_ASRS/DeviceThreadFactory/DeviceThreadService/RgvThreadService/RgvTaskThreadService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1367 @@
using iWareCommon;
using iWareCommon.Utils;
using iWareSql;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Linq;
using iWareSql.Orm;
using iWareCC.RgvService;
using System.Threading.Tasks;
using iWareSql.Entity.ParamModel;
using iWareCC.BLL;
using iWareSql.DataAccess;
using Newtonsoft.Json;
using iWareModel;
using iWareSql.DBModel;
using iWareCommon.Common.Globle;
using XiGang.Core.Model;
using iWareCC.Common.Helper;
using System.Runtime.Remoting.Contexts;
namespace iWareCC
{
    /// <summary>
    /// RGV任务服务线程类
    /// </summary>
    public class RgvTaskThreadService : DeviceThreadServiceHandle
    {
        private static string _namespace = "iWareCC.RgvThreadService";
        private RgvTaskThreadService() { }
        public RgvTaskThreadService(LogType logType)
        {
            base.currentLogType = logType;
        }
        public override void StartService()
        {
            Task.Run(() =>
            {
                try
                {
                    //自动执行Rgv任务线程
                    Log4NetHelper.WriteInfoLog(base.currentLogType, "[自动执行Rgv任务线程] å¯åŠ¨äº†");
                    base.IssueTaskThread(EDevice.RGV);
                    base.ConfirmFinishTaskThread(EDevice.RGV);
                    ConfirmFinishTaskForCompensate(EDevice.RGV);//调用补偿线程
                }
                catch (Exception ex)
                {
                    Log4NetHelper.WriteErrorLog(base.currentLogType, "RgvThreadService线程启动出现异常", ex);
                }
            });
        }
        #region çº¿ç¨‹å¤„理
        #region è‡ªåŠ¨æ‰§è¡ŒRgv任务线程
        /// <summary>
        /// è‡ªåŠ¨æ‰§è¡ŒRgv任务
        /// </summary>
        /// <param name="srmName"></param>
        public override void IssueTask(object deviceId)
        {
            var errMsg = "";
            int i_deviceId = (int)deviceId;
            while (true)
            {
                if (SystemValue.isAllowRuning_RgvThreadService && SystemValue.isStartedModel)
                {
                    IssueTaskHandle(i_deviceId, out errMsg);
                }
                SystemWarningMsg._lbl_Alert_RgvRelease = errMsg;
                Thread.Sleep(2000);//2秒一次
            }
        }
        /// <summary>
        /// è‡ªåŠ¨æ‰§è¡ŒRgv任务(线程)
        /// </summary>
        /// <param name="srmName"></param>
        public override void IssueTaskHandle(int deviceId, out string errMsg)
        {
            errMsg = "";
            string logHeader = "方法:DoRgvTaskByThead,参数deviceId:" + deviceId.ToString() + "===";
            #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
            IDictionary<string, object> logDict = new Dictionary<string, object>();
            logDict.Add("deviceId", deviceId);
            Base_SysExceptionInfo exception = SysExceptionInfoHandler.GetExceptionInfo<IDictionary<string, object>>(base.currentLogType, _namespace, "DoRgvTaskByThead", logDict);
            #endregion
            try
            {
                /*
                 * æ‰§è¡Œå‘送给Rgv的指令任务
                 * 1、验证根据设备号是否找到Rgv
                 * 2、判断设备是否属于任务完成,如果属于任务完成,就继续走3
                 * 3、判断数据库中是否有可要下发的任务,如果有就下发+验证起始点和目标点是否正确
                 * 4、下发成功后,更新任务状态
                 */
                //2、判断设备是否属于空闲,如果属于空闲,就继续走2
                bool isOk = ValidateDeviceIsAllowSendTask((int)EDevice.RGV, out errMsg);
                if (!isOk)
                {
                    errMsg = "不允许下发新任务," + errMsg;
                    return;
                }
                var newErrMsg = "";
                using (DbModel dbModel = new DbModel())
                {
                    var partList = GetPartListByDevice(dbModel, deviceId, TaskExcuteTypeEnum.执行任务);
                    if (partList != null && partList.Count > 0)
                    {
                        //首先处理模拟完成的任务
                        foreach (var item in partList)
                        {
                            if (item.IsAllowSimulateExecute == true)
                            {
                                Single_IssueTaskHandle(false, item, dbModel, deviceId, exception, false, out newErrMsg);
                                errMsg += newErrMsg + SysGloble.SPLIT_STR;
                                return;
                            }
                        }
                        //foreach (var currentTask in partList)
                        //{
                        //    Single_IssueTaskHandle(currentTask, dbModel, deviceId, exception, out errMsg);
                        //    Thread.Sleep(2000);//休眠2秒 ã€EditBy shaocx,2022-05-04】
                        //}
                        //*/
                        //分隔任务  RGV任务和输送线任务 [EditBy shaocx,2022-04-29]
                        var q_taskType_出库 = (int)DeviceTaskTypeEnum.出库;
                        var rgvOutTaskList_出库 = partList.Where(x => x.TaskType == q_taskType_出库).ToList();//rgv出库任务
                        var q_taskType_立库空托到拆盘机入口 = (int)DeviceTaskTypeEnum.立库空托到拆盘机入口;
                        var rgvOutTaskList_立库空托到拆盘机入口 = partList.Where(x => x.TaskType == q_taskType_立库空托到拆盘机入口).ToList();//rgv ç«‹åº“空托到拆盘机入口任务
                        var q_taskType_组盘入库 = (int)DeviceTaskTypeEnum.组盘入库;
                        var q_taskType_空托转运到立体库 = (int)DeviceTaskTypeEnum.空托转运到立体库;
                        var rgvInTaskList = partList.Where(x => x.TaskType == q_taskType_组盘入库 || x.TaskType == q_taskType_空托转运到立体库).ToList();//rgv入库任务
                        var q_taskType_空托转运到拆盘机入口 = (int)DeviceTaskTypeEnum.空托转运到拆盘机入口;
                        var rgvTaskList_空托转运到拆盘机入口 = partList.Where(x => x.TaskType == q_taskType_空托转运到拆盘机入口).ToList();//rgv ç©ºæ‰˜è½¬è¿åˆ°æ‹†ç›˜æœºå…¥å£ ä»»åŠ¡
                        //纯输送线任务
                        var q_taskType_拆盘机入口到拆盘机 = (int)DeviceTaskTypeEnum.拆盘机入口到拆盘机;
                        var q_taskType_空托缓存位转运 = (int)DeviceTaskTypeEnum.空托缓存位转运;
                        var lineTaskList = partList.Where(x => x.TaskType == q_taskType_拆盘机入口到拆盘机 || x.TaskType == q_taskType_空托缓存位转运).ToList();//纯输送线任务
                        /*
                         * ç­–略:
                         * 1、优先做发动机出库任务
                         * 2、如果发动机出库任务下发不成功,则做 ç«‹åº“空托到拆盘机入口 ä»»åŠ¡
                         * 3、其次做 ç»„盘入库+空托转运到立体库任务,按顺序执行
                         * 4、其次做 ç©ºæ‰˜è½¬è¿åˆ°æ‹†ç›˜æœºå…¥å£ ä»»åŠ¡
                         * 5、其他纯输送线任务不受上述策略影响
                         */
                        if (lineTaskList != null && lineTaskList.Count > 0)
                        {//纯输送线任务
                            foreach (var currentTask in lineTaskList)
                            {
                                Single_IssueTaskHandle(false, currentTask, dbModel, deviceId, exception, false, out newErrMsg);
                                errMsg += newErrMsg + SysGloble.SPLIT_STR;
                            }
                        }
                        if (rgvOutTaskList_出库 != null && rgvOutTaskList_出库.Count > 0)
                        {
                            //注意:出库任务下发就不要以CreateTime了,而是按照MainTaskSequence,因为在出库任务分解的时候,会出现那种 ã€EditBy shaocx,2022-05-19】
                            // äºŒå·å †åž›æœºã€äºŒå·å †åž›æœºã€ä¸‰å·å †åž›æœºå‡ºåº“情况,如果按照CreateTime,排序会变为 äºŒå·å †åž›æœºã€ä¸‰å·å †åž›æœºã€äºŒå·å †åž›æœº
                            //var _partTask = rgvOutTaskList_出库.OrderBy(x => x.CreateTime).First();
                            var _partTask = rgvOutTaskList_出库.OrderBy(x => x.MainTaskSequence).ThenBy(x => x.CreateTime).First();
                            var validateLastSameToPlaceIsFinished = ValidateLastSameToPlaceIsFinished(dbModel, _partTask, true, ref newErrMsg);
                            //var vaidateIsMIN_OUTSTORE_RGV_TASK_JIANGE = VaidateIsMIN_OUTSTORE_RGV_TASK_JIANGE(dbModel, _partTask, ref newErrMsg);
                            if (validateLastSameToPlaceIsFinished == true)
                            {
                                //每次只下发第一个出库任务
                                Single_IssueTaskHandle(true, _partTask, dbModel, deviceId, exception, true, out newErrMsg);
                                errMsg += newErrMsg + SysGloble.SPLIT_STR;
                                if (string.IsNullOrEmpty(errMsg))
                                {//说明下发任务成功
                                    return;//结束此次循环
                                }
                            }
                            else
                            {
                                errMsg += newErrMsg + SysGloble.SPLIT_STR;
                            }
                        }
                        //如果发动机出库任务下发不成功,则做 ç«‹åº“空托到拆盘机入口 ä»»åŠ¡
                        if (rgvOutTaskList_立库空托到拆盘机入口 != null && rgvOutTaskList_立库空托到拆盘机入口.Count > 0)
                        {
                            Single_IssueTaskHandle(true, rgvOutTaskList_立库空托到拆盘机入口.OrderBy(x => x.CreateTime).First(), dbModel, deviceId, exception, true, out newErrMsg);
                            errMsg += newErrMsg + SysGloble.SPLIT_STR;
                            if (string.IsNullOrEmpty(errMsg))
                            {//说明下发任务成功
                                return;//结束此次循环
                            }
                        }
                        //其次做 ç»„盘入库+空托转运到立体库任务,按顺序执行
                        if (rgvInTaskList != null && rgvInTaskList.Count > 0)
                        {
                            var _partTask = rgvInTaskList.OrderBy(x => x.CreateTime).First();
                            var validateLastSameToPlaceIsFinished = ValidateLastSameToPlaceIsFinished(dbModel, _partTask, false, ref newErrMsg);
                            //var vaidateIsMIN_OUTSTORE_RGV_TASK_JIANGE = VaidateIsMIN_OUTSTORE_RGV_TASK_JIANGE22(dbModel, _partTask, ref newErrMsg);
                            if (validateLastSameToPlaceIsFinished == true)
                            {
                                //按顺序下发
                                Single_IssueTaskHandle(true, _partTask, dbModel, deviceId, exception, false, out newErrMsg);
                                errMsg += newErrMsg + SysGloble.SPLIT_STR;
                                if (string.IsNullOrEmpty(errMsg))
                                {//说明下发任务成功
                                    return;//结束此次循环
                                }
                            }
                            else
                            {
                                errMsg += newErrMsg + SysGloble.SPLIT_STR;
                            }
                        }
                        //其次做 ç©ºæ‰˜è½¬è¿åˆ°æ‹†ç›˜æœºå…¥å£ ä»»åŠ¡
                        if (rgvTaskList_空托转运到拆盘机入口 != null && rgvTaskList_空托转运到拆盘机入口.Count > 0)
                        {
                            Single_IssueTaskHandle(true, rgvTaskList_空托转运到拆盘机入口.OrderBy(x => x.CreateTime).First(), dbModel, deviceId, exception, false, out newErrMsg);
                            errMsg += newErrMsg + SysGloble.SPLIT_STR;
                            if (string.IsNullOrEmpty(errMsg))
                            {//说明下发任务成功
                                return;//结束此次循环
                            }
                        }
                        //*/
                        /*
                        //分隔任务  RGV任务和输送线任务 [EditBy shaocx,2022-04-29]
                        var q_taskType1 = (int)DeviceTaskTypeEnum.拆盘机入口到拆盘机;
                        var q_taskType2 = (int)DeviceTaskTypeEnum.空托缓存位转运;
                        var lineTaskList = partList.Where(x => x.TaskType == q_taskType1 || x.TaskType == q_taskType2).ToList();//输送线任务
                        var rgvTaskList = partList.Where(x => x.TaskType != q_taskType1 && x.TaskType != q_taskType2).ToList();//rgv任务
                        if (rgvTaskList != null && rgvTaskList.Count > 0)
                        {
                            Single_IssueTaskHandle(true, rgvTaskList.First(), dbModel, deviceId, exception, out errMsg);
                            Thread.Sleep(2000);//休眠2秒 ã€EditBy shaocx,2022-05-04】
                        }
                        if (lineTaskList != null && lineTaskList.Count > 0)
                        {
                            foreach (var currentTask in lineTaskList)
                            {
                                Single_IssueTaskHandle(false, currentTask, dbModel, deviceId, exception, out errMsg);
                            }
                        }
                        //*/
                    }
                    else
                    {
                        errMsg = "没有任务要发送给Rgv";
                    }
                }
            }
            catch (Exception ex)
            {
                errMsg = "出现异常:" + ex.Message;
                SysExceptionInfoHandler.GetExceptionInfoForError("自动执行Rgv任务(线程)出现异常,deviceId:" + deviceId + ",异常:" + ex.Message, ex, ref exception);
                SysExceptionInfoHandler.InsertExceptionInfo(exception, true);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="isRgvTask"></param>
        /// <param name="currentTask"></param>
        /// <param name="dbModel"></param>
        /// <param name="deviceId"></param>
        /// <param name="exception"></param>
        /// <param name="isOutStoreTask">是否是出库任务</param>
        /// <param name="errMsg"></param>
        private void Single_IssueTaskHandle(bool isRgvTask, Task_Part currentTask, DbModel dbModel, int deviceId, Base_SysExceptionInfo exception,
            bool isOutStoreTask,
            out string errMsg)
        {
            errMsg = "";
            if (MyExtendHelper.IsAllowSimulatorHandle(currentTask))
            {//如果是模拟完成
            }
            else
            {//非模拟完成
                #region //3、判断数据库中是否有可要下发的任务,如果有就下发
                //验证起始点和目标点是否正确
                RealPlaceEntity realPlaceEntity = null;
                if (!ValdiatePalceIsRight(dbModel, (int)currentTask.SourcePlace, (int)currentTask.ToPlace, ref realPlaceEntity))
                {
                    errMsg = "验证起始点和目标点是否正确失败";
                    PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                    return;
                }
                //验证是否可以下发任务
                var isOk = ValidateDeviceIsAllowSendTask(isRgvTask, (int)EDevice.RGV, currentTask, out errMsg);
                if (!isOk)
                {
                    errMsg = "不允许下发新任务," + errMsg;
                    PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                    return;
                }
                //要判断起点是否有库存,如果起点没有库存,则报错 ã€EditBy shaocx,2022-05-15】
                var sourcePlaceStore = dbModel.V_AllStore.Where(x => x.StationId == currentTask.SourcePlace).FirstOrDefault();
                if (sourcePlaceStore == null)
                {
                    errMsg = "不允许下发新任务," + string.Format("起点{0},{1}没有找到库存信息,无法下发RGV任务!", currentTask.SourcePlace.ToString(), currentTask.RealSourcePlace);
                    PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                    return;
                }
                //验证目标点是否已经有库存 ã€EditBy shaocx,2022-04-15】
                isOk = ValidateIsHasStoreForToPlace((int)EDevice.RGV, currentTask.ToPlace, currentTask.RealToPlace, out errMsg);
                if (!isOk)
                {
                    errMsg = "不允许下发新任务," + errMsg;
                    PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                    return;
                }
                //if (isRgvTask)
                if (currentTask.TaskType == (int)DeviceTaskTypeEnum.出库) //修改为只对出库任务的判断,因为我发现有次出现过,下发了去1012的任务,但当时1012竟然有货,导致rgv不执行任务,然后导致rgv不执行其他入库任务的情况 ã€EditBy shaocx,2022-05-21】
                {
                    isOk = ValidateIsExistNoFinished(dbModel, currentTask, ref errMsg);
                    if (!isOk)
                    {
                        errMsg = "不允许下发新任务," + errMsg;
                        PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                        return;
                    }
                }
                //增加验证 ã€EditBy shaocx,2022-05-07】
                var vaidateIsExistNoIssuedTaskBeforeCurrTaskTo1012 = VaidateIsExistNoIssuedTaskBeforeCurrTaskTo1012(dbModel, currentTask, ref errMsg);
                if (vaidateIsExistNoIssuedTaskBeforeCurrTaskTo1012)
                {
                    PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                    return;
                }
                var vaidateIsExistNoIssuedTaskBeforeCurrTaskToSameInStoreStation = VaidateIsExistNoIssuedTaskBeforeCurrTaskToSameInStoreStation(dbModel, currentTask, ref errMsg);
                if (vaidateIsExistNoIssuedTaskBeforeCurrTaskToSameInStoreStation)
                {
                    PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                    return;
                }
                //验证起点光电是否有货存在 ã€EditBy shaocx,2022-05-11】
                var isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(currentTask.RealSourcePlace);
                if (isGD_HasCatogryForRgvStattion == false)
                {
                    errMsg = "不允许下发新任务,起点位置" + currentTask.RealSourcePlace + "有光电显示无货存在";
                    PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                    return;
                }
                //如果目标位置有光电显示有货存在,则不允许下发任务,是为了防止1014到1020的任务的,如果1020上有货,就不发任务 ã€EditBy shaocx,2022-04-30】
                //全部任务都要验证目标点是否有货 ã€EditBy shaocx,2022-05-08】
                isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(currentTask.RealToPlace);
                if (isGD_HasCatogryForRgvStattion)
                {
                    errMsg = "不允许下发新任务,目标位置" + currentTask.RealToPlace + "有光电显示有货存在";
                    PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                    return;
                }
                if (isOutStoreTask)
                {//如果是出库任务,则需要检测立体库出库口上面有货才可以下发任务 [EditBy shaocx,2022-05-11]
                    //休眠1秒
                    Thread.Sleep(3000);//增加休眠3秒的判断
                    var isGD_HasCatogryForSoruceRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(currentTask.RealSourcePlace);
                    if (!isGD_HasCatogryForSoruceRgvStattion)
                    {
                        errMsg = "不允许下发新任务,起始位置" + currentTask.RealSourcePlace + "有光电显示没有货存在!!";
                        PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                        return;
                    }
                    //再次判断出库任务,目标位置是否有发动机
                    //因为我发现有次出现过,下发了去1012的任务,但当时1012竟然有货,导致rgv不执行任务,然后导致rgv不执行其他入库任务的情况 ã€EditBy shaocx,2022-07-24】
                    isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(currentTask.RealToPlace);
                    if (isGD_HasCatogryForRgvStattion)
                    {
                        errMsg = "不允许下发新任务,目标位置" + currentTask.RealToPlace + "有光电显示有货存在";
                        PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                        return;
                    }
                }
                //验证是否存在 åŒä¸€ä¸ªèµ·ç‚¹ï¼ŒåŒä¸€ä¸ªç›®æ ‡ç‚¹ï¼Œå¹¶ä¸”是 æœªå®Œæˆçš„的任务
                isOk = ValidateIsHasNoFinishedSameTask((int)EDevice.RGV, currentTask, out errMsg);
                if (!isOk)
                {
                    errMsg = "不允许下发新任务," + errMsg;
                    PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                    return;
                }
                //同一个关联任务的其他设备任务
                //判断和堆垛机的连接任务是不是已经完成了
                var queryTaskState1 = (int)DeviceTaskStatusEnum.未开始;
                var queryTaskState2 = (int)DeviceTaskStatusEnum.已下发;
                var relevanceTask = dbModel.Task_Part.Where(x => x.MainTaskId == currentTask.MainTaskId && x.TaskSequence < currentTask.TaskSequence && (x.TaskState == queryTaskState1 || x.TaskState == queryTaskState2)).FirstOrDefault();
                if (relevanceTask != null)
                {
                    errMsg = string.Format("关联{0}任务未完成,所以RGV任务不允许下发!关联任务号:{1}", relevanceTask.DeviceName, relevanceTask.PlcTaskId);
                    PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                    return;
                }
                #region å¢žåŠ éªŒè¯ ã€EditBy shaocx,2022-05-15】
                //来源位置的库位状态
                var sourcePlace = dbModel.Base_Station.Where(o => o.Id == currentTask.SourcePlace).FirstOrDefault();
                if (sourcePlace == null)
                {
                    throw new Exception(string.Format("根据库位号{0}没有找到库位信息!", currentTask.SourcePlace.ToString()));
                }
                var toPlace = dbModel.Base_Station.Where(o => o.Id == currentTask.ToPlace).FirstOrDefault();
                if (toPlace == null)
                {
                    throw new Exception(string.Format("根据库位号{0}没有找到库位信息!", currentTask.ToPlace.ToString()));
                }
                DeviceTaskTypeEnum _DeviceTaskTypeEnum;
                if (EnumberHelper.GetEnumObject<DeviceTaskTypeEnum>(currentTask.TaskType.ToString(), out _DeviceTaskTypeEnum) == false)
                {
                    throw new Exception("枚举值不正确!");
                }
                #endregion
                //下发
                SdaResEntity sdaResult = new SdaResEntity();
                var log = TaskRequestLogHandler.GetTask(currentTask.Id,
              (int)currentTask.DeviceId, currentTask.PlcTaskId, currentTask.RealSourcePlace.ToString(),
              currentTask.RealToPlace.ToString(), "给RGV发送任务指令", "sys");
                try
                {
                    if (MyExtendHelper.IsAllowSimulatorHandle(currentTask))
                    {
                        sdaResult.result = true;
                    }
                    else
                    {
                        sdaResult = new RgvService.RgvServiceClient().SendRgvTask(deviceId, Convert.ToInt32(currentTask.PlcTaskId), Convert.ToString(currentTask.RealSourcePlace), Convert.ToString(currentTask.RealToPlace));
                    }
                    if (sdaResult.result == false)
                    {//给Rgv下发指令失败
                        errMsg = sdaResult.resMsg;
                        exception.exceptionMsg = string.Format("发送指令给Rgv失败,设备号{0},任务ID{1},起始位{2},目标位{3},errMsg{4}", deviceId, currentTask.Id, currentTask.SourcePlace.ToString(), currentTask.ToPlace.ToString(), errMsg);
                        SysExceptionInfoHandler.InsertExceptionInfo(exception, true);
                        TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求失败, JsonConvert.SerializeObject(sdaResult).ToString(), log, null);
                        return;
                    }
                    else
                    {
                        TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求成功, JsonConvert.SerializeObject(sdaResult).ToString(), log, null);
                    }
                }
                catch (Exception ex)
                {
                    errMsg = "出现异常:" + ex.Message;
                    SysExceptionInfoHandler.GetExceptionInfoForError("给RGV发送任务指令出现异常,deviceId:" + deviceId + ",异常:" + ex.Message, ex, ref exception);
                    SysExceptionInfoHandler.InsertExceptionInfo(exception, true);
                    TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求失败, JsonConvert.SerializeObject(sdaResult).ToString(), log, ex);
                    return;
                }
                #endregion
            }
            TranferStoreForRgv(currentTask, deviceId, dbModel, "RGV任务下发后", out errMsg);
            if (!string.IsNullOrEmpty(errMsg))
            {
                PartTaskHandler.WriteOperationRemarkForPartTask(currentTask.Id, errMsg);
                return;
            }
            //4、下发成功后,更新任务状态
            currentTask.IsReleased = true;
            currentTask.ModifyBy = SysGloble.WCSSystem;
            currentTask.ModifyTime = DateTime.Now;
            var changeState = DeviceTaskStatusEnum.已下发;
            currentTask.TaskState = (int)changeState;
            currentTask.TaskStateName = changeState.ToString();
            currentTask.OperationRemark = "任务已下发给设备";
            currentTask.IssueTime = DateTime.Now;//下发时间
            //修改Task_Main的状态
            UpdateMainTaskStatus(dbModel, currentTask.MainTaskId, currentTask.TaskType, "下发任务给RGV");
            //推送MES
            var mainTask = MainTaskHandler.GetMainTaskById(dbModel, currentTask.MainTaskId);
            MesService.UpdateIsNeedOnLineForMainTask(mainTask);
            int i = dbModel.SaveChanges();
            if (i <= 0)
            {
                errMsg = "更新数据库失败,更新条数:" + i;
            }
            else
            {
            }
        }
        #endregion
        #region è‡ªåŠ¨ç»“æŸRgv任务线程
        /// <summary>
        /// è‡ªåŠ¨ç»“æŸRgv任务线程
        /// </summary>
        /// <param name="srmName"></param>
        public override void ConfirmFinishTask(object deviceId)
        {
            string errMsg = "";
            int i_deviceId = (int)deviceId;
            while (true)
            {
                if (SystemValue.isAllowRuning_RgvThreadService_Finish && SystemValue.isStartedModel)
                {
                    ConfirmFinishTaskHandle(i_deviceId, out errMsg);
                }
                SystemWarningMsg._lbl_Alert_RgvReleaseFinish = errMsg;
                Thread.Sleep(2000);
            }
        }
        /// <summary>
        /// è‡ªåŠ¨ç»“æŸRgv任务线程(线程)
        /// </summary>
        /// <param name="srmName"></param>
        public override void ConfirmFinishTaskHandle(int deviceId, out string errMsg)
        {
            errMsg = "";
            var remark = "自动结束Rgv任务线程(线程)";
            #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
            IDictionary<string, object> logDict = new Dictionary<string, object>();
            logDict.Add("deviceId", deviceId);
            Base_SysExceptionInfo exception = SysExceptionInfoHandler.GetExceptionInfo<IDictionary<string, object>>(base.currentLogType, _namespace, "FinishRgvTaskByThead", logDict);
            #endregion
            try
            {
                /*
                 * æ‰§è¡Œå‘送给Rgv的指令任务
                 * 1、验证根据设备号是否找到Rgv
                 * 2、判断设备是否属于任务完成,如果属于任务完成,就继续走3
                 * 3、判断数据库中是否有可要完成的任务,如果有判断是否跟Rgv中的完成任务相符,如果相符就处理
                 * 4、更新任务状态
                 */
                int int_deviceId = (int)deviceId;
                //*/
                using (DbModel dbModel = new DbModel())
                {
                    var partList = GetPartListByDevice(dbModel, deviceId, TaskExcuteTypeEnum.结束任务);
                    if (partList != null && partList.Count > 0)
                    {
                        foreach (var currentTask in partList)
                        {
                            SingleConfirmFinishTaskHandle(currentTask, int_deviceId, dbModel, remark, out errMsg);
                        }
                    }
                    else
                    {
                        errMsg = "没有RGV任务要处理";
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                errMsg = "出现异常:" + ex.Message;
                SysExceptionInfoHandler.GetExceptionInfoForError("自动结束Rgv任务线程(线程)出现异常,deviceId:" + deviceId + ",异常:" + ex.Message, ex, ref exception);
                SysExceptionInfoHandler.InsertExceptionInfo(exception, true);
            }
        }
        private void SingleConfirmFinishTaskHandle(Task_Part currentTask, int int_deviceId, DbModel dbModel, string remark, out string errMsg)
        {
            #region //3、判断数据库中是否有可要完成的任务,如果有判断是否跟Rgv中的完成任务相符,如果相符就处理
            DeviceTaskTypeEnum rgvTaskTypeEnum = (DeviceTaskTypeEnum)Enum.Parse(typeof(DeviceTaskTypeEnum), currentTask.TaskType.ToString());
            //同一个关联任务的其他设备任务
            //判断和堆垛机的连接任务是不是已经完成了
            var queryTaskState1 = (int)DeviceTaskStatusEnum.未开始;
            var queryTaskState2 = (int)DeviceTaskStatusEnum.已下发;
            var relevanceTask = dbModel.Task_Part.Where(x => x.MainTaskId == currentTask.MainTaskId && x.TaskSequence < currentTask.TaskSequence && (x.TaskState == queryTaskState1 || x.TaskState == queryTaskState2)).FirstOrDefault();
            if (relevanceTask != null)
            {
                errMsg = string.Format("关联{0}任务未完成,所以RGV任务不允许完成!关联任务号:{1}", relevanceTask.DeviceName, relevanceTask.PlcTaskId);
                return;
            }
            #endregion
            //注意:这里不需要判断设备是否完成,直接就结束任务
            //2、判断设备是否属于任务完成,如果属于任务完成,就继续走2
            var isTaskFinished = ValidateDeviceTaskIsFinsished(int_deviceId, currentTask, Convert.ToInt32(currentTask.PlcTaskId), currentTask.IsAllowSimulateExecute, out errMsg);
            if (!isTaskFinished) return;
            //4、更新任务状态
            currentTask.FinishTime = DateTime.Now;//完成时间
            currentTask.IsFinished = true;
            currentTask.TaskState = (int)DeviceTaskStatusEnum.已完成;
            currentTask.TaskStateName = DeviceTaskStatusEnum.已完成.ToString();
            currentTask.OperationRemark = "已完成";
            currentTask.ModifyBy = SysGloble.WCSSystem;
            currentTask.ModifyTime = DateTime.Now;
            using (var trans = dbModel.Database.BeginTransaction())
            {
                try
                {
                    //推送MES
                    var mainTask = MainTaskHandler.GetMainTaskById(dbModel, currentTask.MainTaskId);
                    MesService.UpdateIsNeedOnLineForMainTask(mainTask);
                    //注意:一定是先要保存数据库,才再跟plc交互!!!!!
                    var i = dbModel.SaveChanges();
                    if (i <= 0)
                    {
                        throw new Exception("修改条数为0");
                    }
                    var isRgvTask = IsRgvTask(currentTask);
                    if (isRgvTask)
                    {//如果是RGV任务,则需要去给RGV任务确认
                        SdaResEntity confirmTaskFinish = null;
                        var log = TaskRequestLogHandler.GetTask(currentTask.Id,
            (int)currentTask.DeviceId, currentTask.PlcTaskId, currentTask.RealSourcePlace.ToString(),
            currentTask.RealToPlace.ToString(), "给RGV发送任务完成确认指令", "sys");
                        try
                        {
                            //任务完成处理成功,需要再给RGV发送任务完成确认信号
                            if (MyExtendHelper.IsAllowSimulatorHandle(currentTask))
                            {
                                confirmTaskFinish = new SdaResEntity()
                                {
                                    result = true
                                };
                            }
                            else
                            {
                                confirmTaskFinish = new RgvService.RgvServiceClient().WriteRGV_FinishACK((int)EDevice.RGV, true, Convert.ToInt32(currentTask.PlcTaskId));
                            }
                            if (!confirmTaskFinish.result)
                            {
                                TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求失败, JsonConvert.SerializeObject(confirmTaskFinish), log, null);
                                trans.Rollback();
                                return;
                            }
                            else
                            {
                                TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求成功, JsonConvert.SerializeObject(confirmTaskFinish), log, null);
                                WriteRGV_XigangGetDataForOutAsync(int_deviceId, currentTask, mainTask);
                            }
                        }
                        catch (Exception ex)
                        {
                            errMsg = "出现异常:" + ex.Message;
                            Log4NetHelper.WriteErrorLog(LogType.RgvThreadService, errMsg, ex);
                            TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求失败, JsonConvert.SerializeObject(confirmTaskFinish), log, ex);
                            trans.Rollback();
                            return;
                        }
                        //*/
                    }
                    trans.Commit();
                }
                catch (Exception)
                {
                    trans.Rollback();
                    throw;
                }
            }
        }
        #endregion
        #region RGV任务完成确认补偿线程 ã€Editby shaocx,2023-05-04】
        /// <summary>
        /// RGV任务完成确认补偿线程
        /// </summary>
        /// <param name="srmName"></param>
        private void ConfirmFinishTaskForCompensate(object deviceId)
        {
            string errMsg = "";
            int i_deviceId = (int)deviceId;
            while (true)
            {
                if (SystemValue.isAllowRuning_RgvThreadService_Finish_BuChang && SystemValue.isStartedModel)
                {
                    SingleConfirmFinishTaskHandleForCompensate(i_deviceId, out errMsg);
                }
                SystemWarningMsg._lbl_Alert_RgvReleaseFinish_BuChang = errMsg;
                Thread.Sleep(2000);
            }
        }
        private void SingleConfirmFinishTaskHandleForCompensate(int int_deviceId, out string errMsg)
        {
            errMsg = "";
            try
            {
                if (WCSConfigHelper.GetConfig_IsSimulationPLC())
                {
                    errMsg = "PLC模拟模式!!!";
                    return;
                }
                var isRgvFinish = FormCC.rgvView.R_RGV_Finish;
                var stationCode = ((int)EDevice.RGV1040).ToString();
                var readData = FormCC.rgvView.R_RgvForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                int rgvTaskId = readData.R_TaskID;
                bool rgvFinishAck = FormCC.rgvView.W_RGV_FinishACK;
                errMsg = $"RGV任务完成确认补偿线程信息,获取信息:rgvTaskId:{rgvTaskId},isRgvFinish:{isRgvFinish},rgvFinishAck:{rgvFinishAck}";
                Log4NetHelper.WriteInfoLog(LogType.RgvThreadService, errMsg);
                //如果ack为false,finish为true,并且 wms的该任务为 å·²å®Œæˆï¼Œåˆ™è¡¨ç¤ºéœ€è¦è¡¥å¿
                Task_Part currentTask = null;
                if (rgvTaskId > 0 && rgvFinishAck == false && isRgvFinish == true)
                {
                    errMsg = $"RGV任务完成确认补偿线程信息,初步符合条件:rgvTaskId:{rgvTaskId},isRgvFinish:{isRgvFinish},rgvFinishAck:{rgvFinishAck}";
                    Log4NetHelper.WriteInfoLog(LogType.RgvThreadService, errMsg);
                    using (DbModel dbModel = new DbModel())
                    {
                        var str_rgvTaskId = rgvTaskId.ToString();
                        var queryDeviceId = (int)EDevice.RGV;
                        currentTask = dbModel.Task_Part.Where(x => x.PlcTaskId == str_rgvTaskId
                         && x.DeviceId == queryDeviceId
                        ).OrderByDescending(x => x.CreateTime).FirstOrDefault();
                        if (currentTask != null)
                        {
                            var isRgvTask = IsRgvTask(currentTask);
                            if (isRgvTask && currentTask.TaskState == (int)DeviceTaskStatusEnum.已完成)
                            {
                                var finsiTime = Convert.ToDateTime(currentTask.FinishTime);
                                var nowTime = DateTime.Now;
                                TimeSpan ts = DateTime.Now - finsiTime;
                                if (ts.Seconds > 10)
                                {//只有 å·²å®Œæˆä»»åŠ¡æ—¶é—´è¶…å‡ºå½“å‰3秒后,才能处理!
                                    errMsg = $"RGV任务完成确认补偿线程信息,准备处理:rgvTaskId:{rgvTaskId},isRgvFinish:{isRgvFinish},rgvFinishAck:{rgvFinishAck}";
                                    Log4NetHelper.WriteInfoLog(LogType.RgvThreadService, errMsg);
                                    var confirmTaskFinish = new RgvService.RgvServiceClient().WriteRGV_FinishACK((int)EDevice.RGV, true, Convert.ToInt32(currentTask.PlcTaskId));
                                    if (!confirmTaskFinish.result)
                                    {
                                        errMsg = $"RGV任务完成确认补偿线程失败:rgvTaskId:{rgvTaskId},SDA返回:" + confirmTaskFinish.resMsg;
                                        Log4NetHelper.WriteErrorLog(LogType.RgvThreadService, errMsg, null);
                                        return;
                                    }
                                    else
                                    {
                                        errMsg = $"RGV任务完成确认补偿线程成功{rgvTaskId}:rgvTaskId:{rgvTaskId}";
                                        Log4NetHelper.WriteInfoLog(LogType.RgvThreadService, errMsg);
                                    }
                                }
                                else
                                {
                                    errMsg = $"RGV任务完成确认补偿线程信息,未超过3秒,不处理:rgvTaskId:{rgvTaskId},isRgvFinish:{isRgvFinish},rgvFinishAck:{rgvFinishAck}";
                                    Log4NetHelper.WriteInfoLog(LogType.RgvThreadService, errMsg);
                                    return;
                                }
                            }
                            else
                            {
                                errMsg = "任务不符合补偿条件";
                                return;
                            }
                        }
                        else
                        {
                            errMsg = "任务为NULL,不符合补偿条件";
                            return;
                        }
                    }
                }
                else
                {
                    errMsg = "不符合补偿条件";
                    return;
                }
            }
            catch (Exception ex)
            {
                errMsg = "RGV任务完成确认补偿线程-出现异常:" + ex.Message;
                Log4NetHelper.WriteErrorLog(LogType.RgvThreadService, errMsg, ex);
                return;
            }
        }
        #endregion
        #endregion
        #region åº“存处理
        /// <summary>
        /// åº“存转移
        /// </summary>
        /// <param name="currentTask"></param>
        /// <param name="int_deviceId"></param>
        /// <param name="dbModel"></param>
        /// <param name="remark"></param>
        /// <param name="errMsg"></param>
        private void TranferStoreForRgv(Task_Part currentTask, int int_deviceId, DbModel dbModel, string remark, out string errMsg)
        {
            //来源位置的库位状态
            var sourcePlace = dbModel.Base_Station.Where(o => o.Id == currentTask.SourcePlace).FirstOrDefault();
            if (sourcePlace == null)
            {
                throw new Exception(string.Format("根据库位号{0}没有找到库位信息!", currentTask.SourcePlace.ToString()));
            }
            var toPlace = dbModel.Base_Station.Where(o => o.Id == currentTask.ToPlace).FirstOrDefault();
            if (toPlace == null)
            {
                throw new Exception(string.Format("根据库位号{0}没有找到库位信息!", currentTask.ToPlace.ToString()));
            }
            //验证目标点是否已经有库存 ã€EditBy shaocx,2022-04-15】
            var isOk = ValidateIsHasStoreForToPlace((int)EDevice.RGV, currentTask.ToPlace, currentTask.RealToPlace, out errMsg);
            if (!isOk)
            {
                errMsg = "不允许下发新任务," + errMsg;
                return;
            }
            #region 3、变更库位状态(任务占用、锁定)
            UpdateStationLockInfoWhenFinished(dbModel, sourcePlace, toPlace, currentTask.Id, "RGV任务完成,出库任务处理");
            #endregion
            toPlace.IsFull = true;
            sourcePlace.IsFull = false;
            DeviceTaskTypeEnum _DeviceTaskTypeEnum;
            if (EnumberHelper.GetEnumObject<DeviceTaskTypeEnum>(currentTask.TaskType.ToString(), out _DeviceTaskTypeEnum) == false)
            {
                throw new Exception("枚举值不正确!");
            }
            //修改来源和目标的CVP关系,更新库存
            UpdateStore(dbModel, sourcePlace, toPlace, _DeviceTaskTypeEnum, currentTask);
            //5、如果是出库任务,则需要更新计划出库明细表和计划出库主表的信息
            if (currentTask.TaskType == (int)DeviceTaskTypeEnum.出库)
            {
                //获取主表任务
                var mainTask = MainTaskHandler.GetMainTaskById(dbModel, currentTask.MainTaskId);
                PlanOutTaskHandler.UpdatePlanStateToFinished(dbModel, mainTask, remark);
            }
        }
        #endregion
        #region å…¬å…±å¤„理
        /// <summary>
        /// å‘动机出库,给西港PLC发送发动机数据 ã€Editby shaocx,2023-07-23】
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <param name="currentTask"></param>
        /// <param name="mainTask"></param>
        private async void WriteRGV_XigangGetDataForOutAsync(int int_deviceId, Task_Part currentTask, Task_Main mainTask)
        {
            if (currentTask.TaskType != (int)DeviceTaskTypeEnum.出库)
            {
                return;
            }
            string errMsg = "";
            try
            {
                iWareCC.RgvService.SdaResEntity sdaResult = new iWareCC.RgvService.SdaResEntity();
                if (MyExtendHelper.IsAllowSimulatorHandle(currentTask))
                {
                    sdaResult.result = true;
                }
                else
                {
                    var sendOrderNo = mainTask.OrderNo.Replace("B-", "");//说是 éœ€è¦åŽ»æŽ‰B-
                    sdaResult = await new RgvService.RgvServiceClient().WriteRGV_XigangGetDataForOutAsync(int_deviceId, mainTask.MaterialModel,
                        mainTask.SerialNumber,
                        sendOrderNo,
                        Convert.ToInt32(currentTask.PlcTaskId));
                }
                if (sdaResult.result == false)
                {//给Rgv下发指令失败
                    errMsg = sdaResult.resMsg;
                    Log4NetHelper.WriteErrorLog(LogType.RgvThreadService, errMsg, null);
                    return;
                }
                else
                {
                    Log4NetHelper.WriteInfoLog(LogType.RgvThreadService, "发动机出库,给西港PLC发送发动机数据,主任务号:" + mainTask.Id);
                }
            }
            catch (Exception ex)
            {
                errMsg = "出现异常:" + ex.Message;
                Log4NetHelper.WriteErrorLog(LogType.RgvThreadService, errMsg, ex);
                return;
            }
        }
        /// <summary>
        /// æ˜¯å¦æ˜¯RGV任务
        /// </summary>
        /// <param name="_task"></param>
        /// <returns></returns>
        private bool IsRgvTask(Task_Part _task)
        {
            var isRgvTask = true;
            if (_task.TaskType == (int)DeviceTaskTypeEnum.拆盘机入口到拆盘机 || _task.TaskType == (int)DeviceTaskTypeEnum.空托缓存位转运)
            {
                isRgvTask = false;
            }
            return isRgvTask;
        }
        /// <summary>
        /// åˆ¤æ–­ç›¸åŒç›®çš„地的RGV任务,上一个是否完成了
        /// </summary>
        /// <param name="dbModel"></param>
        /// <param name="currentTask"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public bool ValidateLastSameToPlaceIsFinished(DbModel dbModel, Task_Part currentTask, bool isOutStoreForFDJ, ref string errMsg)
        {
            ////判断和堆垛机(或RGV)的连接任务是不是已经完成了
            var queryTaskState1 = (int)DeviceTaskStatusEnum.未开始;
            var queryTaskState2 = (int)DeviceTaskStatusEnum.已下发;
            var queryDeviceId = (int)EDevice.RGV;
            //同一个RGV的,并且是同种类型的(即相同目的地的)
            Task_Part otherSrmTask = null;
            if (isOutStoreForFDJ)
            {//是发动机出库
                otherSrmTask = dbModel.Task_Part.Where(x => x.DeviceId == queryDeviceId
                 && x.Id != currentTask.Id
                 && (x.TaskState == queryTaskState1 || x.TaskState == queryTaskState2)
                 && x.MainTaskSequence <= currentTask.MainTaskSequence
                 && x.CreateTime < currentTask.CreateTime //增加这个条件,防止出现顺序号相同的出库任务问题 ã€EditBy shaocx,2022-10-27】
                 && x.RealToPlace == currentTask.RealToPlace
                 ).FirstOrDefault();
            }
            else
            {//非发动机出库
                otherSrmTask = dbModel.Task_Part.Where(x => x.DeviceId == queryDeviceId
                 && x.Id != currentTask.Id
                 && (x.TaskState == queryTaskState1 || x.TaskState == queryTaskState2)
                 && x.CreateTime < currentTask.CreateTime
                 && x.RealToPlace == currentTask.RealToPlace
                 ).FirstOrDefault();
            }
            if (otherSrmTask != null)
            {
                errMsg = "上一个RGV任务(即相同目的地的" + currentTask.RealToPlace + ")未完成,所以本次任务不允许下发!上一个RGV任务号:" + otherSrmTask.PlcTaskId + ",本次RGV任务号:" + currentTask.PlcTaskId;
                return false;
            }
            return true;
        }
        /// <summary>
        /// åˆ¤æ–­RGV任务,上一个RGV存在已下发的任务
        /// </summary>
        /// <param name="dbModel"></param>
        /// <param name="currentTask"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public bool ValidateIsExistNoFinished(DbModel dbModel, Task_Part currentTask, ref string errMsg)
        {
            ////判断和堆垛机(或RGV)的连接任务是不是已经完成了
            var queryTaskState2 = (int)DeviceTaskStatusEnum.已下发;
            var queryDeviceId = (int)EDevice.RGV;
            var q_taskType_拆盘机入口到拆盘机 = (int)DeviceTaskTypeEnum.拆盘机入口到拆盘机;
            var q_taskType_空托缓存位转运 = (int)DeviceTaskTypeEnum.空托缓存位转运;
            //判断都是RGV任务,前面是否有 å·²ä¸‹å‘ çš„任务,如果有,就报错
            var otherSrmTask = dbModel.Task_Part.Where(x => x.DeviceId == queryDeviceId
                 && x.Id != currentTask.Id
                 && (x.TaskState == queryTaskState2)
                 //&& x.CreateTime < currentTask.CreateTime
                 && (x.TaskType != q_taskType_拆盘机入口到拆盘机 && x.TaskType != q_taskType_空托缓存位转运)
                 ).FirstOrDefault();
            if (otherSrmTask != null)
            {
                errMsg = "上一个RGV任务是已下发状态,所以本次任务不允许下发!上一个RGV任务号:" + otherSrmTask.PlcTaskId + ",本次RGV任务号:" + currentTask.PlcTaskId;
                return false;
            }
            return true;
        }
        /// <summary>
        /// æ˜¯å¦ è·ç¦»ä¸Šä¸€æ¬¡å‡ºåº“任务的下发时间小于设定的值
        /// </summary>
        /// <param name="edm"></param>
        /// <param name="partTask"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public bool VaidateIsMIN_OUTSTORE_RGV_TASK_JIANGE(DbModel edm, Task_Part partTask, ref string errMsg)
        {
            var queryToPlace = ((int)EDevice.出库口1012).ToString();
            var queryTaskState1 = (int)DeviceTaskStatusEnum.已完成;
            var queryDeviceId = (int)EDevice.RGV;
            var task = edm.Task_Part.Where(x =>
                x.DeviceId == queryDeviceId
                && x.RealToPlace == queryToPlace
                && x.TaskState == queryTaskState1).OrderByDescending(x => x.IssueTime).FirstOrDefault();//获取最新下发完成的出库任务
            if (task != null)
            {
                //得到下发时间
                var issueTime = (DateTime)task.IssueTime;
                var nowTime = DateTime.Now;
                TimeSpan ts = nowTime - issueTime;
                if (ts.Seconds <= SysGloble.MIN_OUTSTORE_RGV_TASK_JIANGE)
                {
                    errMsg = "距离上一次出库任务的下发时间小于设定的" + SysGloble.MIN_OUTSTORE_RGV_TASK_JIANGE + "秒";
                    return false;
                }
            }
            return true;
        }
        /// <summary>
        /// æ˜¯å¦ è·ç¦»ä¸Šä¸€æ¬¡å‡ºåº“任务的下发时间小于设定的值
        /// </summary>
        /// <param name="edm"></param>
        /// <param name="partTask"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public bool VaidateIsMIN_OUTSTORE_RGV_TASK_JIANGE22(DbModel edm, Task_Part partTask, ref string errMsg)
        {
            var q_taskType_组盘入库 = (int)DeviceTaskTypeEnum.组盘入库;
            var q_taskType_空托转运到立体库 = (int)DeviceTaskTypeEnum.空托转运到立体库;
            var queryTaskState1 = (int)DeviceTaskStatusEnum.已完成;
            var queryDeviceId = (int)EDevice.RGV;
            var task = edm.Task_Part.Where(x =>
                 x.DeviceId == queryDeviceId
                && x.RealToPlace == partTask.RealToPlace
                && (x.TaskType == q_taskType_组盘入库 || x.TaskType == q_taskType_空托转运到立体库)
                && x.TaskState == queryTaskState1).OrderByDescending(x => x.IssueTime).FirstOrDefault();//获取上一次入库,并且是同一个目标点的任务
            if (task != null)
            {
                //得到下发时间
                var issueTime = (DateTime)task.IssueTime;
                var nowTime = DateTime.Now;
                TimeSpan ts = nowTime - issueTime;
                if (ts.Seconds <= SysGloble.MIN_OUTSTORE_RGV_TASK_JIANGE)
                {
                    errMsg = "距离上一次组盘入库/空托转运到立体库的任务下发时间小于设定的" + SysGloble.MIN_OUTSTORE_RGV_TASK_JIANGE + "秒";
                    return false;
                }
            }
            return true;
        }
        /// <summary>
        /// æ˜¯å¦å­˜åœ¨ åˆ›å»ºæ—¶é—´æ—©äºŽå½“前的任务的未结束的任务,去1012的任务
        /// </summary>
        /// <param name="edm"></param>
        /// <param name="partTask"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public bool VaidateIsExistNoIssuedTaskBeforeCurrTaskTo1012(DbModel edm, Task_Part partTask, ref string errMsg)
        {
            var queryDeviceId = (int)EDevice.RGV;
            var queryToPlace = ((int)EDevice.出库口1012).ToString();
            if (partTask.RealToPlace == queryToPlace)
            {
                //判断创建时间早于当前的任务是否下发了,如果没下发,就也不允许下发
                var queryTaskState1 = (int)DeviceTaskStatusEnum.未开始;
                var queryTaskState2 = (int)DeviceTaskStatusEnum.已下发;
                var list = edm.Task_Part.Where(x => x.RealToPlace == queryToPlace
                    && (x.TaskState == queryTaskState1 || x.TaskState == queryTaskState2)
                    && x.DeviceId == queryDeviceId
                    && x.CreateTime < partTask.CreateTime //增加这个条件,防止出现顺序号相同的出库任务问题 ã€EditBy shaocx,2022-10-27】
                    && x.Id != partTask.Id
                    && x.MainTaskSequence <= partTask.MainTaskSequence
                    ).FirstOrDefault();
                if (list != null)
                {
                    errMsg = "存在都是去向1012的任务,创建时间早于当前任务,但是未开始或已下发的任务" + list.PlcTaskId + ",因为要严格控制出库顺序,不允许下发当前任务:" + partTask.PlcTaskId;
                    return true;
                }
            }
            return false;
        }
        /// <summary>
        /// æ˜¯å¦å­˜åœ¨ åˆ›å»ºæ—¶é—´æ—©äºŽå½“前的任务的未结束的任务
        /// </summary>
        /// <param name="edm"></param>
        /// <param name="partTask"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public bool VaidateIsExistNoIssuedTaskBeforeCurrTaskToSameInStoreStation(DbModel edm, Task_Part partTask, ref string errMsg)
        {
            var q_taskType_组盘入库 = (int)DeviceTaskTypeEnum.组盘入库;
            var q_taskType_空托转运到立体库 = (int)DeviceTaskTypeEnum.空托转运到立体库;
            var queryDeviceId = (int)EDevice.RGV;
            //判断创建时间早于当前的任务是否下发了,如果没下发,就也不允许下发
            var queryTaskState1 = (int)DeviceTaskStatusEnum.未开始;
            var queryTaskState2 = (int)DeviceTaskStatusEnum.已下发;
            var list = edm.Task_Part.Where(x =>
                x.RealToPlace == partTask.RealToPlace
                && (x.TaskType == q_taskType_组盘入库 || x.TaskType == q_taskType_空托转运到立体库)
                && (x.TaskState == queryTaskState1 || x.TaskState == queryTaskState2)
                && x.DeviceId == queryDeviceId
                && x.CreateTime < partTask.CreateTime).FirstOrDefault();
            if (list != null)
            {
                errMsg = "存在都是去向相同" + partTask.RealToPlace + "的入库任务,创建时间早于当前任务,但是未开始或已下发的任务" + list.PlcTaskId + ",因为要严格控制入库顺序,不允许下发当前任务:" + partTask.PlcTaskId;
                return true;
            }
            return false;
        }
        /// <summary>
        /// æ›´æ–°ä¸»ä»»åŠ¡çš„çŠ¶æ€
        /// </summary>
        /// <param name="edm"></param>
        /// <param name="mainTaskId"></param>
        /// <param name="rgvTaskTypeValue"></param>
        /// <param name="remark"></param>
        private void UpdateMainTaskStatus(DbModel edm, int mainTaskId, int rgvTaskTypeValue, string remark)
        {
            DeviceTaskTypeEnum rgvTaskTypeEnum = (DeviceTaskTypeEnum)Enum.Parse(typeof(DeviceTaskTypeEnum), rgvTaskTypeValue.ToString());
            MainTaskStatusEnum changeTaskStatus = default(MainTaskStatusEnum);
            switch (rgvTaskTypeEnum)
            {
                case DeviceTaskTypeEnum.组盘入库:
                    changeTaskStatus = MainTaskStatusEnum.入库中;
                    MainTaskHandler.UpdateTaskStatus(edm, mainTaskId, changeTaskStatus, remark);
                    break;
                case DeviceTaskTypeEnum.出库:
                    changeTaskStatus = MainTaskStatusEnum.已完成;
                    MainTaskHandler.UpdateTaskStatus(edm, mainTaskId, changeTaskStatus, remark);
                    //如果是有计划的,需要处理下计划表的状态
                    UpdatePlanOut(edm, mainTaskId);
                    break;
                case DeviceTaskTypeEnum.空托缓存位转运:
                case DeviceTaskTypeEnum.空托转运到拆盘机入口:
                case DeviceTaskTypeEnum.立库空托到拆盘机入口:
                case DeviceTaskTypeEnum.拆盘机入口到拆盘机:
                    changeTaskStatus = MainTaskStatusEnum.已完成;
                    MainTaskHandler.UpdateTaskStatus(edm, mainTaskId, changeTaskStatus, remark);
                    break;
                default:
                    return;//其他状态不予处理
            }
        }
        private void UpdatePlanOut(DbModel edm, int mainTaskId)
        {
            var planDetail = edm.Plan_OutTaskDetail.FirstOrDefault(x => x.MainTaskId == mainTaskId);
            if (planDetail != null)
            {
                planDetail.OutTaskDetailState = (int)OutTaskDetailStateEnum.完成;
                planDetail.OutTaskDetailStateName = OutTaskDetailStateEnum.完成.ToString();
                planDetail.FinishTime = DateTime.Now;//增加计划子表完成时间 ã€EditBy shaocx,2022-06-20】
                planDetail.OperationRemark = "RGV任务完成,修改状态为完成";
                //查找Main表
                var outTask = edm.Plan_OutTask.FirstOrDefault(x => x.Id == planDetail.M_PlanId);
                if (outTask != null)
                {
                    var queryOutTaskDetailState1 = (int)OutTaskDetailStateEnum.完成;
                    var queryOutTaskDetailState2 = (int)OutTaskDetailStateEnum.已取消;
                    var allCount = edm.Plan_OutTaskDetail.Where(x => x.M_PlanId == outTask.Id).Count();//所有计划
                    outTask.Qty = allCount;//重新赋值总数量
                    var count = edm.Plan_OutTaskDetail.Where(x => x.M_PlanId == outTask.Id && (x.OutTaskDetailState == queryOutTaskDetailState1 || x.OutTaskDetailState == queryOutTaskDetailState2)).Count();//已下发的计划
                    var finishedCount = count + 1;
                    var changeOutPlanStateEnum = default(OutPlanStateEnum);
                    if (finishedCount >= outTask.Qty)
                    {
                        changeOutPlanStateEnum = OutPlanStateEnum.全部下发;
                        outTask.PlanState = (int)changeOutPlanStateEnum;
                        outTask.PlanStateName = changeOutPlanStateEnum.ToString();
                        outTask.OperationRemark = "RGV任务完成,全部下发";
                        outTask.Qty_Finish = outTask.Qty;
                        outTask.Qty_NoFinish = 0;
                        //修改齐套性为已齐套 [EditBy shaocx,2022-05-16]
                        outTask.IsPickFinished = true;
                        //更新计划进度
                        outTask.PlanRate = 100;
                    }
                    else
                    {
                        changeOutPlanStateEnum = OutPlanStateEnum.部分下发;
                        outTask.PlanState = (int)changeOutPlanStateEnum;
                        outTask.PlanStateName = changeOutPlanStateEnum.ToString();
                        outTask.OperationRemark = "RGV任务完成,部分下发";
                        outTask.Qty_Finish = finishedCount;
                        outTask.Qty_NoFinish = outTask.Qty - finishedCount;
                        //更新计划进度
                        outTask.PlanRate = CSharpHelper.ExecPercentRetInt(finishedCount, outTask.Qty);
                    }
                }
            }
        }
        /// <summary>
        /// ä¿®æ”¹CVP的数据
        /// </summary>
        /// <param name="edm"></param>
        /// <param name="rgvTaskTypeEnum"></param>
        /// <param name="rgvTask"></param>
        private void UpdateStore(DbModel dbModel, Base_Station sourcePlace, Base_Station toPlace, DeviceTaskTypeEnum rgvTaskTypeEnum, Task_Part rgvTask)
        {
            switch (rgvTaskTypeEnum)
            {
                case DeviceTaskTypeEnum.组盘入库:
                default://其他
                    TransferStoreWhenFinished(rgvTask, dbModel, rgvTask.SalverId, toPlace, "RGV任务被下发,重新绑定新的CVP关系", rgvTaskTypeEnum, EDeviceType.RGV);
                    break;
                case DeviceTaskTypeEnum.拆盘机入口到拆盘机:
                case DeviceTaskTypeEnum.出库://注意:RGV出库的时候,目前是将库存删除掉!!!!
                    StoreHandler.ClearStockByPlaceId(dbModel, sourcePlace, "RGV出库任务被下发,删除库存");
                    //记录主表的出库时间
                    var mainTask = dbModel.Task_Main.Where(x => x.TaskNo == rgvTask.MainTaskNo).First();
                    mainTask.OutStoreTime = DateTime.Now;
                    break;
            }
        }
        public bool ValidateDeviceIsAllowSendTask(bool isRgvTask, int int_deviceId, Task_Part task, out string errMsg)
        {
            errMsg = "";
            if (FormCC.IsSimulationPLC)
            {
                return true;
            }
            if (!base.ValidateDeviceIsAllowSendTask(int_deviceId, out errMsg))
            {
                return false;
            }
            bool isNeedValidateRealSourceAndToPlace = true;
            if (task.RealSourcePlace == ((int)EDevice.堆垛机1出库口1001).ToString()
                || task.RealSourcePlace == ((int)EDevice.堆垛机2出库口1003).ToString()
                || task.RealSourcePlace == ((int)EDevice.堆垛机3出库口1005).ToString()
                || task.RealSourcePlace == ((int)EDevice.堆垛机4出库口1008).ToString()
                )
            {//如果是立体库出库口,则不需要校验起点和终点是否是自动模式啊,运行模式啊
                isNeedValidateRealSourceAndToPlace = false;
            }
            using (var rgvServie = new RgvService.RgvServiceClient())
            {
                SdaResEntity sdaResult = rgvServie.IsAllowSendTask(isNeedValidateRealSourceAndToPlace, int_deviceId, task.RealSourcePlace, task.RealToPlace, isRgvTask);
                if (sdaResult.result == false)
                {
                    errMsg = sdaResult.resMsg;
                    Log4NetHelper.WriteErrorLog(currentLogType, "验证RGV不可以下发新任务,int_deviceId:" + int_deviceId + ",sdaResultStr:" + JsonConvert.SerializeObject(sdaResult));
                }
                return sdaResult.result;
            }
        }
        /// <summary>
        /// éªŒè¯Rgv是否可以接受任务
        /// </summary>
        /// <param name="int_deviceId">设备号,不需要</param>
        /// <param name="taskId">任务号,需要</param>
        /// <returns></returns>
        public override bool ValidateDeviceIsOK(int int_deviceId, Task_Part _task, int taskId, out string errMsg)
        {
            errMsg = "";
            // Rgv没有所谓的空闲状态,有任务直接发即可
            if (Wms_EquipmentSituationHandler.IsEquipmentBreakdown(int_deviceId).result)
            {//如果设备已经设定为 æ•…障状态,不允许下发任务!!! [EditBy shaocx,2020-12-07]
                return false;
            }
            return true;
        }
        /// <summary>
        /// éªŒè¯Rgv是否任务完成
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns>0表示没有任务完成,其他表示任务完成,并返回任务号</returns>
        public override bool ValidateDeviceTaskIsFinsished(int int_deviceId, Task_Part _task, int taskId, bool? isAllowSimulateExecute, out string errMsg)
        {
            errMsg = "";
            if (FormCC.IsSimulationPLC)
            {
                return true;
            }
            if (MyExtendHelper.IsAllowSimulatorHandle(_task))
            {//模拟代码!发布时移除该代码
                errMsg = "任务要求强制模拟完成";
                return true;
            }
            var isRgvTask = IsRgvTask(_task);
            if (isRgvTask == false)
            {
                //注意:这里不需要跟rgv确认完成,发送任务就自动完成任务了 ã€EditBy shaocx,2022-04-13】
                return true;
            }
            else
            {
                var result = new RgvService.RgvServiceClient().IsTaskFinish(int_deviceId, taskId);
                if (result.result) return true;
                else
                {
                    errMsg = result.resMsg;
                    return false;
                }
            }
        }
        #endregion
    }
}
CC/iWareCC_ASRS/DeviceThreadFactory/DeviceThreadService/SrmThreadService/SrmTaskThreadService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1071 @@
using iWareCommon;
using iWareCommon.Utils;
using iWareSql;
using System;
using System.Collections.Generic;
using System.Threading;
using iWareCC.SrmService;
using System.Linq;
using iWareSql.Orm;
using System.Threading.Tasks;
using iWareSql.DataAccess;
using iWareSql.Entity.ParamModel;
using Newtonsoft.Json;
using iWareCC.BLL;
using iWareCC.Common;
using iWareModel;
using iWareSql.DBModel;
using iWareCommon.Common.Globle;
using XiGang.Core.Model;
using iWareCC.Common.Helper;
namespace iWareCC
{
    /// <summary>
    /// å †åž›æœºä»»åŠ¡æœåŠ¡çº¿ç¨‹ç±»
    /// </summary>
    public class SrmTaskThreadService : DeviceThreadServiceHandle
    {
        private static string _namespace = "iWareCC.SrmTaskThreadService";
        private SrmTaskThreadService() { }
        public SrmTaskThreadService(iWareCommon.Utils.LogType logType)
        {
            base.currentLogType = logType;
        }
        public override void StartService()
        {
            Task.Run(() =>
            {
                try
                {
                    //自动执行堆垛机任务线程
                    Log4NetHelper.WriteInfoLog(base.currentLogType, "自动执行堆垛机任务线程启动了");
                    //var srmList = new SrmService.SrmServiceClient().GetSrm_CacheEntity();
                    var srmList = FormCC.SrmDeviceList;
                    foreach (var x in srmList)
                    {
                        IssueTaskThread(x);
                        ConfirmFinishTaskThread(x);
                    }
                }
                catch (Exception ex)
                {
                    Log4NetHelper.WriteErrorLog(base.currentLogType, "SrmTaskThreadService线程启动出现异常", ex);
                }
            });
        }
        #region çº¿ç¨‹å¤„理
        #region è‡ªåŠ¨æ‰§è¡Œå †åž›æœºä»»åŠ¡çº¿ç¨‹
        /// <summary>
        /// è‡ªåŠ¨æ‰§è¡Œå †åž›æœºä»»åŠ¡
        /// </summary>
        /// <param name="srmName"></param>
        public override void IssueTask(object deviceId)
        {
            string errMsg1 = "", errMsg2 = "", errMsg3 = "", errMsg4 = "";
            int i_deviceId = (int)deviceId;
            while (true)
            {
                if ((int)deviceId == (int)EDevice.一号堆垛机 && SystemValue.isAllowRuning_SrmTaskThreadService_1 && SystemValue.isStartedModel)
                {
                    IssueTaskHandle(i_deviceId, out errMsg1);
                }
                else if ((int)deviceId == (int)EDevice.二号堆垛机 && SystemValue.isAllowRuning_SrmTaskThreadService_2 && SystemValue.isStartedModel)
                {
                    IssueTaskHandle(i_deviceId, out errMsg2);
                }
                else if ((int)deviceId == (int)EDevice.三号堆垛机 && SystemValue.isAllowRuning_SrmTaskThreadService_3 && SystemValue.isStartedModel)
                {
                    IssueTaskHandle(i_deviceId, out errMsg3);
                }
                else if ((int)deviceId == (int)EDevice.四号堆垛机 && SystemValue.isAllowRuning_SrmTaskThreadService_4 && SystemValue.isStartedModel)
                {
                    IssueTaskHandle(i_deviceId, out errMsg4);
                }
                SystemWarningMsg._lbl_Alert_Srm1Release = errMsg1;
                SystemWarningMsg._lbl_Alert_Srm2Release = errMsg2;
                SystemWarningMsg._lbl_Alert_Srm3Release = errMsg3;
                SystemWarningMsg._lbl_Alert_Srm4Release = errMsg4;
                Thread.Sleep(2000);//2秒一次
            }
        }
        /// <summary>
        /// è‡ªåŠ¨æ‰§è¡Œå †åž›æœºä»»åŠ¡ï¼ˆçº¿ç¨‹ï¼‰
        /// </summary>
        /// <param name="srmName"></param>
        public override void IssueTaskHandle(int deviceId, out string errMsg)
        {
            errMsg = "";
            string logHeader = "方法:DoSrmTaskByThead,参数deviceId:" + deviceId.ToString() + "===";
            #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
            IDictionary<string, object> logDict = new Dictionary<string, object>();
            logDict.Add("deviceId", deviceId);
            Base_SysExceptionInfo exception = SysExceptionInfoHandler.GetExceptionInfo<IDictionary<string, object>>(base.currentLogType, _namespace, "DoSrmTaskByThead", logDict);
            #endregion
            try
            {
                /*
                 * æ‰§è¡Œå‘送给堆垛机的指令任务
                 * 1、验证根据设备号是否找到堆垛机
                 * 2、判断设备是否属于任务完成,如果属于任务完成,就继续走3
                 * 3、判断数据库中是否有可要下发的任务,如果有就下发+验证起始点和目标点是否正确
                 * 4、下发成功后,更新任务状态
                 */
                errMsg = "";
                int int_deviceId = (int)deviceId;
                //2、判断堆垛机是否可以下发新任务
                bool isOk = ValidateDeviceIsAllowSendTask(int_deviceId, out errMsg);
                if (!isOk)
                {
                    errMsg = "不允许下发新任务," + errMsg;
                    return;
                }
                using (DbModel dbModel = new DbModel())
                {
                    //var srmTask = ValidateIsExistTaskToDispose(dbModel, int_deviceId, out errMsg, TaskExcuteTypeEnum.执行任务);
                    //if (srmTask == null)
                    //{//表示DB中没有任务要发送给堆垛机
                    //    return;
                    //}
                    var srmTaskList = ValidateIsExistTaskToDisposeForIssued(dbModel, int_deviceId, out errMsg);
                    if (srmTaskList == null || srmTaskList.Count == 0)
                    {//表示DB中没有任务要发送给堆垛机
                        return;
                    }
                    foreach (var item in srmTaskList)
                    {
                        SingleIssueTaskHandle(item, exception, dbModel, int_deviceId, out errMsg);
                        if (!string.IsNullOrEmpty(errMsg))
                        {//说明报错了,继续走下一个循环
                            continue;
                        }
                        else
                        {//说明执行成功了,跳出循环
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                errMsg = "异常,请联系管理员:" + ex.Message;
                SysExceptionInfoHandler.GetExceptionInfoForError("自动执行堆垛机任务(线程)出现异常,deviceId:" + deviceId + ",异常:" + ex.Message, ex, ref exception);
                SysExceptionInfoHandler.InsertExceptionInfo(exception, true);
            }
        }
        /// <summary>
        /// å•个堆垛机任务下发处理
        /// </summary>
        /// <param name="srmTask"></param>
        /// <param name="exception"></param>
        /// <param name="dbModel"></param>
        /// <param name="int_deviceId"></param>
        /// <param name="errMsg"></param>
        private void SingleIssueTaskHandle(Task_Part srmTask, Base_SysExceptionInfo exception, DbModel dbModel, int int_deviceId, out string errMsg)
        {
            #region //3、判断数据库中是否有可要下发的任务,如果有就下发
            DeviceTaskTypeEnum _DeviceTaskTypeEnum = (DeviceTaskTypeEnum)Enum.Parse(typeof(DeviceTaskTypeEnum), srmTask.TaskType.ToString());
            //验证起始点和目标点是否正确
            RealPlaceEntity realPlaceEntity = null;
            if (!ValdiatePalceIsRight(dbModel, (int)srmTask.SourcePlace, (int)srmTask.ToPlace, ref realPlaceEntity))
            {
                errMsg = "验证起始点和目标点是否正确失败";
                PartTaskHandler.WriteOperationRemarkForPartTask(srmTask.Id, errMsg);
                return;
            }
            //验证目标点是否已经有库存 ã€EditBy shaocx,2022-04-15】
            var isOk = ValidateIsHasStoreForToPlace(int_deviceId, srmTask.ToPlace, srmTask.RealToPlace, out errMsg);
            if (!isOk)
            {
                errMsg = "不允许下发新任务," + errMsg;
                PartTaskHandler.WriteOperationRemarkForPartTask(srmTask.Id, errMsg);
                return;
            }
            #region å¢žåŠ æ ¡éªŒ [EditBy shaocx,2022-05-15]
            //去掉这个验证 ã€EditBy shaocx,2022-05-19】
            /*
            Base_Station toPlaceObject = dbModel.Base_Station.Where(o => o.Id == (int)srmTask.ToPlace).FirstOrDefault();
            if (toPlaceObject == null)
            {
                throw new Exception(string.Format("根据目标库位ID {0},{1}没有找到库位信息!", srmTask.ToPlace, srmTask.RealToPlace));
            }
            //*/
            var sourcePlace = dbModel.Base_Station.Where(o => o.Id == srmTask.SourcePlace).FirstOrDefault();
            if (sourcePlace == null)
            {
                throw new Exception(string.Format("根据库位号{0},{1}没有找到堆垛机的来源库位信息!", srmTask.SourcePlace.ToString(), srmTask.RealSourcePlace));
            }
            //要判断起点是否有库存,如果起点没有库存,则报错
            var sourcePlaceStore = dbModel.V_AllStore.Where(x => x.StationId == sourcePlace.Id).FirstOrDefault();
            if (sourcePlaceStore == null)
            {
                throw new Exception(string.Format("起点{0},{1}没有找到库存信息,无法下发堆垛机任务!任务号{2}", srmTask.SourcePlace.ToString(), srmTask.RealSourcePlace, srmTask.Id));
            }
            #endregion
            //同一个关联任务的其他设备任务
            var queryTaskState1 = (int)DeviceTaskStatusEnum.未开始;
            //var queryTaskState2 = (int)DeviceTaskStatusEnum.已下发;
            var relevanceTask = dbModel.Task_Part.Where(x => x.MainTaskId == srmTask.MainTaskId && x.TaskSequence < srmTask.TaskSequence
                 && (x.TaskState == queryTaskState1)
                 ).FirstOrDefault();
            if (relevanceTask != null)
            {
                errMsg = string.Format("关联{0}任务未开始,所以堆垛机任务不允许下发!关联任务号:{1}", relevanceTask.DeviceName, relevanceTask.PlcTaskId);
                PartTaskHandler.WriteOperationRemarkForPartTask(srmTask.Id, errMsg);
                return;
            }
            //去掉验证 ã€EditBy shaocx,2022-05-19】
            /*
            var validateIsAllowNewTaskForRgvStattion = ValidateIsAllowNewTaskForRgvStattion(dbModel, _DeviceTaskTypeEnum, srmTask.RealToPlace, ref errMsg);
            if (!validateIsAllowNewTaskForRgvStattion)
            {
                PartTaskHandler.WriteOperationRemarkForPartTask(srmTask.Id, errMsg);
                return;
            }
            //*/
            var log = TaskRequestLogHandler.GetTask(srmTask.Id,
                int_deviceId, srmTask.PlcTaskId, srmTask.RealSourcePlace,
                srmTask.RealToPlace, "给堆垛机发送任务指令", "sys");
            SdaResEntity sdaResult = new SdaResEntity();
            try
            {
                if (MyExtendHelper.IsAllowSimulatorHandle(srmTask))
                {
                    sdaResult.result = true;
                }
                else
                {
                    if (Convert.ToInt32(srmTask.PlcTaskId) <= 0)
                    {
                        throw new Exception("任务号不能小于等于0,PlcTaskId:" + srmTask.PlcTaskId);
                    }
                    sdaResult = new SrmService.SrmServiceClient().SendSrmTask(int_deviceId, Convert.ToInt32(srmTask.PlcTaskId), srmTask.RealSourcePlace, srmTask.RealToPlace, (short)ESrmCmd.库内搬运);
                }
                if (sdaResult.result == false)
                {//给堆垛机下发指令失败
                    exception.exceptionMsg = string.Format("发送指令给堆垛机失败,设备号{0},任务ID{1},起始位{2},目标位{3},ContainerId{4}", int_deviceId,
                        Convert.ToInt32(srmTask.PlcTaskId), srmTask.RealSourcePlace, srmTask.RealToPlace, srmTask.SalverId);
                    SysExceptionInfoHandler.InsertExceptionInfo(exception, true);
                    TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求失败, JsonConvert.SerializeObject(sdaResult).ToString(), log, null);
                    return;
                }
                else
                {
                    TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求成功, JsonConvert.SerializeObject(sdaResult).ToString(), log, null);
                    SystemValueUtil.DelayExcuteForSrmTaskThreadService(int_deviceId, ThreadDirectionEnum.任务开始下发线程);
                }
            }
            catch (Exception ex)
            {
                TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求失败, JsonConvert.SerializeObject(sdaResult).ToString(), log, ex);
                throw ex;
            }
            #endregion
            //只更新着三个字段!
            //任务完成后的库存转移工作
            isOk = DealWithCurrentTaskWhenFinished(srmTask, dbModel);
            if (isOk == false)
            {
                throw new Exception("DealWithCurrentTaskWhenFinished处理失败");
            }
        }
        /// <summary>
        /// å½“前任务完成后进行状态修改
        /// </summary>
        /// <param name="currentTask">当前任务</param>
        /// <returns></returns>
        private bool DealWithCurrentTaskWhenFinished(Task_Part currentTask, DbModel dbModel)
        {
            #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
            IDictionary<string, object> logDict = new Dictionary<string, object>();
            logDict.Add("currentTask.tackId", currentTask.Id);
            logDict.Add("currentTask.plcTaskId", currentTask.PlcTaskId);
            Base_SysExceptionInfo exception = SysExceptionInfoHandler.GetExceptionInfo<IDictionary<string, object>>(base.currentLogType, _namespace, "DealWithCurrentTask", logDict);
            #endregion
            try
            {
                bool rtn = false;
                var taskType = (DeviceTaskTypeEnum)Enum.Parse(typeof(DeviceTaskTypeEnum), currentTask.TaskType.ToString());
                switch (taskType)
                {
                    case DeviceTaskTypeEnum.组盘入库:
                    case DeviceTaskTypeEnum.空托转运到立体库:
                        rtn = DealFor_Srm_Store_In(currentTask, dbModel, taskType);//入库执行后增加库存
                        break;
                    case DeviceTaskTypeEnum.出库:
                    case DeviceTaskTypeEnum.立库空托到拆盘机入口:
                        rtn = DealFor_Srm_Store_Out(currentTask, dbModel, taskType);//出库
                        break;
                    default:
                        break;
                }
                //库存发生变化时,发送库存给MES
                //switch (taskType)
                //{
                //    case DeviceTaskTypeEnum22.配板原料入库:
                //    case DeviceTaskTypeEnum22.线下配板原料入库:
                //    case DeviceTaskTypeEnum22.配板余料回库:
                //    case DeviceTaskTypeEnum22.配板原料出库:
                //    case DeviceTaskTypeEnum22.人工出库:
                //        //MesBLL.SendSysnStockToMes();
                //        break;
                //    default:
                //        break;
                //}
                return rtn;
            }
            catch (Exception ex)
            {
                SysExceptionInfoHandler.GetExceptionInfoForError("当前任务完成后进行状态修改出现异常:" + ex.Message, ex, ref exception);
                SysExceptionInfoHandler.InsertExceptionInfo(exception);
                throw ex;
            }
        }
        /// <summary>
        /// å…¥åº“任务处理
        /// </summary>
        /// <param name="currentTask"></param>
        /// <returns></returns>
        private bool DealFor_Srm_Store_In(Task_Part currentTask, DbModel dbModel, DeviceTaskTypeEnum taskType)
        {
            #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
            IDictionary<string, object> logDict = new Dictionary<string, object>();
            logDict.Add("currentTask.tackId", currentTask.Id);
            logDict.Add("currentTask.plcTaskId", currentTask.PlcTaskId);
            Base_SysExceptionInfo exception = SysExceptionInfoHandler.GetExceptionInfo<IDictionary<string, object>>(base.currentLogType, _namespace, "DealFor_Srm_Store_In", logDict);
            #endregion
            try
            {
                /**
                 * 1、当前任务状态修改为已完成
                 * 2、添加托盘和库位的绑定关系
                 * 3、变更库位状态
                 */
                #region å‡†å¤‡æ•°æ®
                #region å¢žåŠ æ ¡éªŒ [EditBy shaocx,2022-05-15]
                Base_Station toPlaceObject = dbModel.Base_Station.Where(o => o.Id == (int)currentTask.ToPlace).FirstOrDefault();
                if (toPlaceObject == null)
                {
                    throw new Exception(string.Format("根据目标库位ID {0},{1}没有找到库位信息!", currentTask.ToPlace, currentTask.RealToPlace));
                }
                var sourcePlace = dbModel.Base_Station.Where(o => o.Id == currentTask.SourcePlace).FirstOrDefault();
                if (sourcePlace == null)
                {
                    throw new Exception(string.Format("根据库位号{0},{1}没有找到堆垛机的来源库位信息!", currentTask.SourcePlace.ToString(), currentTask.RealSourcePlace));
                }
                //要判断起点是否有库存,如果起点没有库存,则报错
                var sourcePlaceStore = dbModel.V_AllStore.Where(x => x.StationId == sourcePlace.Id).FirstOrDefault();
                if (sourcePlaceStore == null)
                {
                    throw new Exception(string.Format("起点{0},{1}没有找到库存信息,无法下发堆垛机任务!这里任务号{2}", currentTask.SourcePlace.ToString(), currentTask.RealSourcePlace, currentTask.Id));
                }
                #endregion
                toPlaceObject.IsHasTaskDoing = false;
                toPlaceObject.IsFull = true;
                StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref toPlaceObject, "堆垛机任务完成,入库任务处理,任务类型:" + taskType.ToString());
                StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref sourcePlace, "堆垛机任务完成,入库任务处理,任务类型:" + taskType.ToString());
                #endregion
                return CommonTransForThreadFinish(dbModel, currentTask, "入库任务完成处理成功,任务类型:" + taskType.ToString(), sourcePlace, toPlaceObject, taskType);
            }
            catch (Exception ex)
            {
                SysExceptionInfoHandler.GetExceptionInfoForError("入库任务处理出现异常:" + ex.Message, ex, ref exception);
                SysExceptionInfoHandler.InsertExceptionInfo(exception);
                throw ex;
            }
        }
        /// <summary>
        /// å‡ºåº“任务处理
        /// </summary>
        /// <param name="currentTask"></param>
        /// <returns></returns>
        private bool DealFor_Srm_Store_Out(Task_Part currentTask, DbModel dbModel, DeviceTaskTypeEnum taskType)
        {
            #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
            IDictionary<string, object> logDict = new Dictionary<string, object>();
            logDict.Add("currentTask.tackId", currentTask.Id);
            logDict.Add("currentTask.plcTaskId", currentTask.PlcTaskId);
            Base_SysExceptionInfo exception = SysExceptionInfoHandler.GetExceptionInfo<IDictionary<string, object>>(base.currentLogType, _namespace, "DealFor_Srm_Store_Out", logDict);
            #endregion
            try
            {
                /**
                 * 1、当前任务状态修改为已完成
                 * 2、解除来源位置的托盘和库位的绑定关系
                 * 3、变更库位状态
                 */
                #region å‡†å¤‡æ•°æ®
                Base_Station toPlaceObject = dbModel.Base_Station.Where(o => o.Id == (int)currentTask.ToPlace).FirstOrDefault();
                if (toPlaceObject == null)
                {
                    throw new Exception(string.Format("根据库位ID {0}没有找到库位信息!", currentTask.ToPlace));
                }
                #region 3、变更库位状态
                //目标的库位状态
                toPlaceObject.IsHasTaskDoing = false;
                toPlaceObject.IsFull = true;
                StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref toPlaceObject, "堆垛机任务完成,出库任务处理");
                //来源位置的库位状态
                var sourcePlace = dbModel.Base_Station.Where(o => o.Id == currentTask.SourcePlace).FirstOrDefault();
                if (sourcePlace == null)
                {
                    throw new Exception(string.Format("根据库位号{0}没有找到库位信息!", currentTask.SourcePlace.ToString()));
                }
                sourcePlace.IsHasTaskDoing = false;
                sourcePlace.IsFull = false;
                StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref sourcePlace, "堆垛机任务完成,出库任务处理");
                #endregion
                #endregion
                return CommonTransForThreadFinish(dbModel, currentTask, "出库任务处理成功", sourcePlace, toPlaceObject, taskType);
            }
            catch (Exception ex)
            {
                SysExceptionInfoHandler.GetExceptionInfoForError("出库任务处理出现异常:" + ex.Message, ex, ref exception);
                SysExceptionInfoHandler.InsertExceptionInfo(exception);
                return false;
            }
        }
        private bool CommonTransForThreadFinish(DbModel dbModel, Task_Part currentTask,
            string business, Base_Station sourcePlace, Base_Station toPlaceObject, DeviceTaskTypeEnum taskType)
        {
            #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
            IDictionary<string, object> logDict = new Dictionary<string, object>();
            logDict.Add("currentTask.tackId", currentTask.Id);
            logDict.Add("currentTask.plcTaskId", currentTask.PlcTaskId);
            Base_SysExceptionInfo exception = SysExceptionInfoHandler.GetExceptionInfo<IDictionary<string, object>>(base.currentLogType, _namespace, "CommonTransForThreadFinish", logDict);
            #endregion
            try
            {
                try
                {
                    #region å½“设备任务完成后,转移库存(注意:一定要在最后面执行!!)
                    try
                    {
                        TransferStoreWhenFinished(currentTask, dbModel, currentTask.SalverId, toPlaceObject, business, taskType, EDeviceType.堆垛机);
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("转移库存时抛出异常,方法(TransferStoreWhenFinished),message:" + ex.Message, ex);
                    }
                    #endregion
                    UpdateMainTaskStatus(dbModel, currentTask.MainTaskId, currentTask.TaskType, "堆垛机任务完成时");
                    //4、下发成功后,更新任务状态
                    currentTask.IsReleased = true;
                    currentTask.ModifyBy = SysGloble.WCSSystem;
                    currentTask.ModifyTime = DateTime.Now;
                    currentTask.TaskState = (int)DeviceTaskStatusEnum.已下发;
                    currentTask.TaskStateName = DeviceTaskStatusEnum.已下发.ToString();
                    currentTask.OperationRemark = "任务已下发给设备";
                    currentTask.IssueTime = DateTime.Now;//下发时间
                    //注意:一定是先要保存数据库,才再跟plc交互!!!!!
                    int i = dbModel.SaveChanges();
                    if (i <= 0)
                    {
                        throw new Exception("更新的条数为" + i);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                return true;
            }
            catch (Exception)
            {
                throw;
            }
        }
        #endregion
        #region è‡ªåŠ¨ç»“æŸå †åž›æœºä»»åŠ¡çº¿ç¨‹
        /// <summary>
        /// è‡ªåŠ¨ç»“æŸå †åž›æœºä»»åŠ¡çº¿ç¨‹
        /// </summary>
        /// <param name="srmName"></param>
        public override void ConfirmFinishTask(object deviceId)
        {
            string errMsg1 = "", errMsg2 = "", errMsg3 = "", errMsg4 = "";
            int i_deviceId = (int)deviceId;
            while (true)
            {
                if ((int)deviceId == (int)EDevice.一号堆垛机 && SystemValue.isAllowRuning_SrmTaskThreadService_1_Finish && SystemValue.isStartedModel)
                {
                    ConfirmFinishTaskHandle(i_deviceId, out errMsg1);
                }
                else if ((int)deviceId == (int)EDevice.二号堆垛机 && SystemValue.isAllowRuning_SrmTaskThreadService_2_Finish && SystemValue.isStartedModel)
                {
                    ConfirmFinishTaskHandle(i_deviceId, out errMsg2);
                }
                else if ((int)deviceId == (int)EDevice.三号堆垛机 && SystemValue.isAllowRuning_SrmTaskThreadService_3_Finish && SystemValue.isStartedModel)
                {
                    ConfirmFinishTaskHandle(i_deviceId, out errMsg3);
                }
                else if ((int)deviceId == (int)EDevice.四号堆垛机 && SystemValue.isAllowRuning_SrmTaskThreadService_4_Finish && SystemValue.isStartedModel)
                {
                    ConfirmFinishTaskHandle(i_deviceId, out errMsg4);
                }
                SystemWarningMsg._lbl_Alert_Srm1ReleaseFinish = errMsg1;
                SystemWarningMsg._lbl_Alert_Srm2ReleaseFinish = errMsg2;
                SystemWarningMsg._lbl_Alert_Srm3ReleaseFinish = errMsg3;
                SystemWarningMsg._lbl_Alert_Srm4ReleaseFinish = errMsg4;
                Thread.Sleep(2000);//设置2秒一次
            }
        }
        /// <summary>
        /// è‡ªåŠ¨ç»“æŸå †åž›æœºä»»åŠ¡çº¿ç¨‹ï¼ˆçº¿ç¨‹ï¼‰
        /// </summary>
        /// <param name="srmName"></param>
        public override void ConfirmFinishTaskHandle(int deviceId, out string errMsg)
        {
            errMsg = "";
            string logHeader = "自动结束堆垛机任务线程(线程),设备号:" + deviceId;
            #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
            IDictionary<string, object> logDict = new Dictionary<string, object>();
            logDict.Add("deviceId", deviceId);
            Base_SysExceptionInfo exception = SysExceptionInfoHandler.GetExceptionInfo<IDictionary<string, object>>(base.currentLogType, _namespace, "FinishSrmTaskByThead", logDict);
            #endregion
            try
            {
                /*
                 * æ‰§è¡Œå‘送给堆垛机的指令任务
                 * 1、验证根据设备号是否找到堆垛机
                 * 2、判断设备是否属于任务完成,如果属于任务完成,就继续走3
                 * 3、判断数据库中是否有可要完成的任务,如果有判断是否跟堆垛机中的完成任务相符,如果相符就处理
                 * 4、更新任务状态
                 */
                int int_deviceId = (int)deviceId;
                //SystemValueUtil.DelayExcuteForSrmTaskThreadService((int)deviceId, ThreadDirectionEnum.任务完成线程);
                using (DbModel dbModel = new DbModel())
                {
                    #region //3、判断数据库中是否有可要完成的任务,如果有判断是否跟堆垛机中的完成任务相符,如果相符就处理
                    var currentTask = ValidateIsExistTaskToDispose(dbModel, int_deviceId, out errMsg, TaskExcuteTypeEnum.结束任务);
                    if (currentTask == null)
                    {//表示DB中没有任务要发送给堆垛机
                        //注释以下代码,手动发的任务,不要自动确认
                        ////可以完成 éžç³»ç»Ÿå‘送的自动任务 [EditBy shaocx,2022-04-04]
                        //if (FormCC.IsSimulationPLC == false && FormCC.srmViewDict[int_deviceId].R_TaskFinish == 1 && FormCC.srmViewDict[int_deviceId].R_TaskNo > 0)
                        //{//只有当堆垛机是任务完成的时候
                        //    ConfirmTaskFinishToSda(deviceId, FormCC.srmViewDict[int_deviceId].R_TaskNo);
                        //}
                        errMsg = "没有堆垛机任务数据要处理";
                        return;
                    }
                    #endregion
                    //2、判断设备是否任务完成
                    var isFinished = ValidateDeviceTaskIsFinsished(int_deviceId, currentTask, Convert.ToInt32(currentTask.PlcTaskId), (DeviceTaskTypeEnum)Enum.Parse(typeof(DeviceTaskTypeEnum), currentTask.TaskType.ToString()), currentTask.IsAllowSimulateExecute, out errMsg);
                    if (!isFinished) return;
                    ////判断和堆垛机(或RGV)的连接任务是不是已经完成了
                    var queryTaskState1 = (int)DeviceTaskStatusEnum.未开始;
                    var queryTaskState2 = (int)DeviceTaskStatusEnum.已下发;
                    /*
                  //注释以下方法,因为出现了 æŸä¸ªä»»åŠ¡MainTaskSequence æ¯”他小,但是某个任务还未执行的问题 ã€EditBy shaocx,2022-04-28】
                  //同一个堆垛机的前面未结束的任务,且同种类型
                  var otherSrmTask = dbModel.Task_Part.Where(x => x.DeviceId == int_deviceId
                       && x.Id != currentTask.Id
                       && (x.TaskState == queryTaskState1 || x.TaskState == queryTaskState2)
                       && x.CreateTime < currentTask.CreateTime
                       ).FirstOrDefault();
                  if (otherSrmTask != null)
                  {
                      errMsg = "上一个堆垛机任务未完成,所以堆垛机任务不允许完成!上一个堆垛机任务号:" + otherSrmTask.PlcTaskId + ",本次堆垛机任务号:" + currentTask.PlcTaskId;
                      return;
                  }
                  //*/
                    //同一个关联任务的其他设备任务
                    var relevanceTask = dbModel.Task_Part.Where(x => x.MainTaskId == currentTask.MainTaskId && x.TaskSequence < currentTask.TaskSequence
                         && (x.TaskState == queryTaskState1 || x.TaskState == queryTaskState2)).FirstOrDefault();
                    if (relevanceTask != null)
                    {
                        errMsg = string.Format("关联{0}任务未完成,所以堆垛机任务不允许完成!关联任务号:{1}", relevanceTask.DeviceName, relevanceTask.PlcTaskId);
                        return;
                    }
                    //4、处理任务完成状态
                    var isOk = ConfirmTaskFinishToSrm(currentTask, "堆垛机任务完成", exception);
                    if (isOk)
                    {
                        //堆垛机完成了当前任务后进行任务状态的修改
                        ChangeTaskStateWhenTaskFinish(currentTask);
                        dbModel.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                errMsg = "出现异常:" + ex.Message;
                SysExceptionInfoHandler.GetExceptionInfoForError("自动结束堆垛机任务线程(线程)出现异常,deviceId:" + deviceId + ",异常:" + ex.Message, ex, ref exception);
                SysExceptionInfoHandler.InsertExceptionInfo(exception, true);
            }
        }
        /// <summary>
        /// åˆ¤æ–­æ˜¯äººå·¥å‘送给任务,单独给堆垛机发送任务完成信号
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="taskId"></param>
        /// <returns></returns>
        private bool ConfirmTaskFinishToSda(int deviceId, int taskId)
        {
            //任务完成处理成功,需要再给堆垛机发送任务完成确认信号
            SdaResEntity sdaResult = new SdaResEntity();
            try
            {
                sdaResult = new SrmService.SrmServiceClient().ConfirmTaskFinish(deviceId, taskId);
                if (!sdaResult.result)
                {
                    Log4NetHelper.WriteInfoLog(iWareCommon.Utils.LogType.SrmTheadService, "判断是人工发送的任务,单独给堆垛机发送任务完成信号,【失败】,设备号:" + deviceId + ",任务号:" + taskId);
                    return false;
                }
                else
                {
                    Log4NetHelper.WriteInfoLog(iWareCommon.Utils.LogType.SrmTheadService, "判断是人工发送的任务,单独给堆垛机发送任务完成信号,【成功】,设备号:" + deviceId + ",任务号:" + taskId);
                    return true;
                }
            }
            catch (Exception ex)
            {
                Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.SrmTheadService, "判断是人工发送的任务,单独给堆垛机发送任务完成信号,【异常】,设备号:" + deviceId + ",任务号:" + taskId + ",ex:" + ex.Message, ex);
                throw ex;
            }
        }
        #region å‘堆垛机发送任务完成确认信号
        /// <summary>
        /// å‘堆垛机发送任务完成确认信号
        /// </summary>
        /// <param name="currentTask"></param>
        /// <param name="business"></param>
        /// <param name="exception"></param>
        /// <returns></returns>
        private bool ConfirmTaskFinishToSrm(Task_Part currentTask, string business, Base_SysExceptionInfo exception)
        {
            //任务完成处理成功,需要再给堆垛机发送任务完成确认信号
            SdaResEntity sdaResult = new SdaResEntity();
            var log = TaskRequestLogHandler.GetTask(currentTask.Id,
              (int)currentTask.DeviceId, currentTask.PlcTaskId, currentTask.RealSourcePlace.ToString(),
              currentTask.RealToPlace.ToString(), "给堆垛机发送任务完成确信指令", "sys");
            try
            {
                if (MyExtendHelper.IsAllowSimulatorHandle(currentTask))
                {
                    sdaResult.result = true;
                }
                else
                {
                    sdaResult = new SrmService.SrmServiceClient().ConfirmTaskFinish((int)currentTask.DeviceId, Convert.ToInt32(currentTask.PlcTaskId));
                }
                if (!sdaResult.result)
                {
                    TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求失败, JsonConvert.SerializeObject(sdaResult), log, null);
                    exception.exceptionMsg = string.Format(business + ",需要再给堆垛机发送任务完成确认信号失败,设备号{0} ä»»åŠ¡å·{1}", (int)currentTask.DeviceId, currentTask.PlcTaskId);
                    SysExceptionInfoHandler.InsertExceptionInfo(exception, true);
                    return false;
                }
                else
                {
                    TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求成功, JsonConvert.SerializeObject(sdaResult), log, null);
                    Log4NetHelper.WriteInfoLog(base.currentLogType, string.Format(business + ",再给堆垛机发送任务完成确认信号成功,设备号{0} ä»»åŠ¡å·{1}", (int)currentTask.DeviceId, currentTask.PlcTaskId));
                    return true;
                }
            }
            catch (Exception ex)
            {
                TaskRequestLogHandler.InsertTask(base.currentLogType, RequestStatusEnum.请求失败, JsonConvert.SerializeObject(sdaResult), log, ex);
                throw ex;
            }
        }
        #endregion
        #endregion
        #endregion
        #region å…¬å…±å¤„理
        /// <summary>
        /// éªŒè¯RGV站点上是否允许下发堆垛机新任务
        /// </summary>
        /// <param name="model"></param>
        /// <param name="_DeviceTaskTypeEnum"></param>
        /// <param name="realToPlace"></param>
        /// <param name="errMsg"></param>
        /// <returns>true:允许,false:不允许</returns>
        private bool ValidateIsAllowNewTaskForRgvStattion(DbModel model, DeviceTaskTypeEnum _DeviceTaskTypeEnum, string realToPlace, ref string errMsg)
        {
            MainInOutFlagEnum _MainInOutFlagEnum = GetMainInOutFlagForSrm(_DeviceTaskTypeEnum);
            if (_MainInOutFlagEnum == MainInOutFlagEnum.出库)
            {
                //判断目标点是否有光电占用
                var rgv_stationCode = model.Base_Station.Where(x => x.SrmStationCode == realToPlace).First();
                var isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(rgv_stationCode.RgvStationCode);
                if (isGD_HasCatogryForRgvStattion)
                {
                    errMsg = "RGV出库口站点" + rgv_stationCode.RgvStationCode + "上面光电显示有货,不允许下发堆垛机的出库任务";
                    return false;
                }
            }
            return true;
        }
        /// <summary>
        /// æ ¹æ®å †åž›æœºä»»åŠ¡ç±»åž‹åˆ¤æ–­å‡ºæ˜¯å‡ºåº“è¿˜æ˜¯å…¥åº“
        /// </summary>
        /// <param name="_DeviceTaskTypeEnum"></param>
        /// <returns></returns>
        private MainInOutFlagEnum GetMainInOutFlagForSrm(DeviceTaskTypeEnum _DeviceTaskTypeEnum)
        {
            switch (_DeviceTaskTypeEnum)
            {
                case DeviceTaskTypeEnum.组盘入库:
                case DeviceTaskTypeEnum.空托转运到立体库:
                    return MainInOutFlagEnum.入库;
                case DeviceTaskTypeEnum.立库空托到拆盘机入口:
                case DeviceTaskTypeEnum.出库:
                    return MainInOutFlagEnum.出库;
            }
            throw new Exception("堆垛机不支持的任务类型" + _DeviceTaskTypeEnum.ToString());
        }
        /// <summary>
        /// æ›´æ–°ä¸»ä»»åŠ¡çš„çŠ¶æ€
        /// </summary>
        /// <param name="edm"></param>
        /// <param name="mainTaskId"></param>
        /// <param name="srmTaskTypeValue"></param>
        /// <param name="remark"></param>
        private void UpdateMainTaskStatus(DbModel edm, int mainTaskId, int srmTaskTypeValue, string remark)
        {
            DeviceTaskTypeEnum srmTaskTypeEnum = (DeviceTaskTypeEnum)Enum.Parse(typeof(DeviceTaskTypeEnum), srmTaskTypeValue.ToString());
            MainTaskStatusEnum changeTaskStatus = default(MainTaskStatusEnum);
            switch (srmTaskTypeEnum)
            {
                case DeviceTaskTypeEnum.组盘入库:
                case DeviceTaskTypeEnum.空托转运到立体库:
                    changeTaskStatus = MainTaskStatusEnum.已完成;
                    MainTaskHandler.UpdateTaskStatus(edm, mainTaskId, changeTaskStatus, remark);
                    break;
            }
        }
        /// <summary>
        /// å †åž›æœºä»»åŠ¡å®ŒæˆåŽä¿®æ”¹ä»»åŠ¡çŠ¶æ€
        /// </summary>
        /// <param name="currentTask"></param>
        private void ChangeTaskStateWhenTaskFinish(Task_Part currentTask)
        {
            //堆垛机完成了当前任务后进行任务状态的修改
            currentTask.FinishTime = DateTime.Now;//完成时间
            currentTask.IsFinished = true;
            currentTask.TaskState = (int)DeviceTaskStatusEnum.已完成;
            currentTask.TaskStateName = DeviceTaskStatusEnum.已完成.ToString();
            currentTask.OperationRemark = "已完成";
            currentTask.ModifyTime = DateTime.Now;
            currentTask.ModifyBy = SysGloble.WCSSystem;
            //currentTask.IsLastTask = (int)EYesOrNo.否;//设置不是最新的任务
        }
        /// <summary>
        /// å †åž›æœºä»»åŠ¡å®ŒæˆåŽï¼Œæ ¹æ®å †åž›æœºçš„ä»»åŠ¡ç±»åž‹åŽ»åˆ¤æ–­Base_Salver_V_Station çš„State
        /// </summary>
        /// <param name="_DeviceTaskTypeEnum">堆垛机任务类型</param>
        /// <param name="old_int_C_V_P_StateEnum">原先的Base_Salver_V_Station çš„State</param>
        /// <returns></returns>
        private Salver_V_Station_StateEnum DeviceTaskTypeEnumToC_V_P_StateEnumWhenTaskFinish(DeviceTaskTypeEnum _DeviceTaskTypeEnum, int old_int_C_V_P_StateEnum)
        {
            Salver_V_Station_StateEnum old_C_V_P_StateEnum = (Salver_V_Station_StateEnum)Enum.Parse(typeof(Salver_V_Station_StateEnum), old_int_C_V_P_StateEnum.ToString());
            Salver_V_Station_StateEnum _C_V_P_StateEnum = old_C_V_P_StateEnum;
            switch (_DeviceTaskTypeEnum)
            {
                case DeviceTaskTypeEnum.组盘入库:
                    _C_V_P_StateEnum = Salver_V_Station_StateEnum.在库物料;
                    break;
                //case DeviceTaskTypeEnum22.线下其他垛入库:
                //    _C_V_P_StateEnum = C_V_P_StateEnum.在库其他料;
                //    break;
                //case DeviceTaskTypeEnum22.线下垫板垛入库:
                //    _C_V_P_StateEnum = C_V_P_StateEnum.在库垫板;
                //    break;
                //case DeviceTaskTypeEnum22.成品料配板完成回库:
                //    _C_V_P_StateEnum = C_V_P_StateEnum.在库成品料;
                //    break;
                //case DeviceTaskTypeEnum22.待拆垛回库:
                //    _C_V_P_StateEnum = C_V_P_StateEnum.在库待拆垛;
                //    break;
                //case DeviceTaskTypeEnum22.桁架垫板垛入立库垫板库位:
                //case DeviceTaskTypeEnum22.锯切垫板垛入立体库:
                //    _C_V_P_StateEnum = C_V_P_StateEnum.在库垫板;
                //    break;
                //case DeviceTaskTypeEnum22.移库://移库,状态不变
                //case DeviceTaskTypeEnum22.成品料上锯切线出库://成品料出库,状态不变
                //case DeviceTaskTypeEnum22.垫板上料出库://垫板出库,状态不变
                //    _C_V_P_StateEnum = old_C_V_P_StateEnum;
                //    break;
                //case DeviceTaskTypeEnum22.配板原料出库:
                //    _C_V_P_StateEnum = C_V_P_StateEnum.原料配板中;
                //    break;
                //case DeviceTaskTypeEnum22.人工出库://出库后会将表Base_Salver_V_Station æ¸…掉
                //    break;
            }
            return _C_V_P_StateEnum;
        }
        public override bool ValidateDeviceIsAllowSendTask(int int_deviceId, out string errMsg)
        {
            errMsg = "";
            if (!base.ValidateDeviceIsAllowSendTask(int_deviceId, out errMsg))
            {
                return false;
            }
            if (FormCC.IsSimulationPLC)
            {
                return true;
            }
            using (var srmService = new SrmService.SrmServiceClient())
            {
                SdaResEntity sdaResult = srmService.IsAllowSendTask(int_deviceId, out errMsg);
                if (sdaResult.result == false)
                {
                    errMsg = "非自动、有任务未确认或有报警," + sdaResult.resMsg;
                    Log4NetHelper.WriteErrorLog(currentLogType, "验证堆垛机不可以下发新任务,int_deviceId:" + int_deviceId + ",sdaResultStr:" + JsonConvert.SerializeObject(sdaResult));
                }
                return sdaResult.result;
            }
        }
        /// <summary>
        /// éªŒè¯å †åž›æœºæ˜¯å¦è‡ªåЍ
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns></returns>
        public override bool ValidateDeviceIsOK(int int_deviceId, Task_Part _task, int taskId, out string errMsg)
        {
            errMsg = "";
            if (Wms_EquipmentSituationHandler.IsEquipmentBreakdown(int_deviceId).result)
            {//如果设备已经设定为 æ•…障状态,不允许下发任务!!! [EditBy shaocx,2020-12-07]
                errMsg = "设备被设为故障";
                return false;
            }
            if (MyExtendHelper.IsAllowSimulatorHandle(_task))
            {
                errMsg = "模拟PLC";
                return true;
            }
            using (var srmService = new SrmService.SrmServiceClient())
            {
                SdaResEntity sdaResult = srmService.IsReady(int_deviceId, out errMsg);
                errMsg = sdaResult.resMsg;
                return sdaResult.result;
            }
        }
        /// <summary>
        /// éªŒè¯å †åž›æœºæ˜¯å¦ä»»åŠ¡å®Œæˆ
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns></returns>
        public override bool ValidateDeviceTaskIsFinsished(int int_deviceId, Task_Part _task, int taskId, out string errMsg)
        {
            errMsg = "";
            if (MyExtendHelper.IsAllowSimulatorHandle(_task))
            {//模拟代码!发布时移除该代码
                errMsg = "任务要求强制模拟完成";
                return true;
            }
            SdaResEntity sdaResult = new SrmService.SrmServiceClient().IsTaskFinish(int_deviceId, taskId);
            if (sdaResult.result == false)
            {
                errMsg = sdaResult.resMsg;
            }
            return sdaResult.result;
        }
        /// <summary>
        /// éªŒè¯å †åž›æœºæ˜¯å¦ä»»åŠ¡å®Œæˆ
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns></returns>
        private bool ValidateDeviceTaskIsFinsished(int int_deviceId, Task_Part _task, int taskId, DeviceTaskTypeEnum _DeviceTaskTypeEnum, bool? isAllowSimulateExecute, out string errMsg)
        {
            errMsg = "";
            if (MyExtendHelper.IsAllowSimulatorHandle(_task))
            {
                errMsg = "模拟PLC完成或任务要求强制模拟完成";
                return true;
            }
            SdaResEntity sdaResult = new SrmService.SrmServiceClient().IsTaskFinish(int_deviceId, taskId);
            if (sdaResult.result == false)
            {
                errMsg = "验证堆垛机是否任务完成 å¤±è´¥:" + JsonConvert.SerializeObject(sdaResult);
                //Log4NetHelper.WriteErrorLog(currentLogType, "验证堆垛机是否任务完成 å¤±è´¥:" + JsonConvert.SerializeObject(sdaResult));
            }
            switch (_DeviceTaskTypeEnum)
            {
                //涉及到最后到输送线的任务,都要再加上输送线的任务是否完成
                case DeviceTaskTypeEnum.组盘入库:
                    //using (var srmConveyorService = new SrmConveyorService.SrmConveyorServiceClient())
                    //{
                    //    sdaResultStr = srmConveyorService.IsTaskFinish(taskId);
                    //    sdaResult = JsonConvert.DeserializeObject<SdaResEntity>(sdaResultStr);
                    //    if (sdaResult.result == false)
                    //    {
                    //        errMsg = "验证输送线是否任务完成 å¤±è´¥:" + sdaResultStr;
                    //        Log4NetHelper.WriteErrorLog(currentLogType, "验证输送线是否任务完成 å¤±è´¥:" + sdaResultStr);
                    //    }
                    //}
                    break;
            }
            return sdaResult.result;
        }
        #endregion
        #region ç§æœ‰æ–¹æ³•
        /// <summary>
        /// éªŒè¯æ•°æ®åº“中是否有任务要处理
        /// </summary>
        /// <typeparam name="Task_Part"></typeparam>
        /// <param name="dbModel"></param>
        /// <param name="int_deviceId">Rgv设备号</param>
        /// <param name="errMsg"></param>
        /// <param name="_TaskExcuteTypeEnum"></param>
        /// <returns></returns>
        private List<Task_Part> ValidateIsExistTaskToDisposeForIssued(DbModel dbModel, int int_deviceId, out string errMsg)
        {
            errMsg = "";
            List<Task_Part> partList = new List<Task_Part>();
            //看同一个设备,是否还有其他正在执行的任务!
            var partTask = dbModel.Task_Part.Where(x => x.DeviceId == int_deviceId && x.TaskState == (int)DeviceTaskStatusEnum.已下发).
                OrderBy(x => x.CreateTime).FirstOrDefault();//按照主任务的顺序升序
            if (partTask != null)
            {
                errMsg = string.Format("deviceId={0}的正在执行任务,任务ID:" + partTask.Id + ",主任务:" + partTask.MainTaskNo + ",PLC任务号:" + partTask.PlcTaskId, int_deviceId);
                return null;
            }
            //1、查询
            var currTaskList = dbModel.Task_Part.Where(x => x.DeviceId == int_deviceId && x.TaskState == (int)DeviceTaskStatusEnum.未开始).ToList().OrderBy(x => x.CreateTime).ToList();//按照主任务优先级的升序排序
            if (currTaskList == null || currTaskList.Count == 0)
            {
                errMsg = "没有需要处理的任务";
                return null;
            }
            var firstTask = currTaskList.First();//第一个待执行的任务
            partList.Add(firstTask);
            //判断如果这个任务是出库任务的话,就再查询第一个待执行的入库任务
            DeviceTaskTypeEnum _DeviceTaskTypeEnum = (DeviceTaskTypeEnum)Enum.Parse(typeof(DeviceTaskTypeEnum), firstTask.TaskType.ToString());
            //查询 å‡ºåº“和入库的两个任务,优先执行出库任务 ã€EditBy shaocx,2022-05-09】
            MainInOutFlagEnum _MainInOutFlagEnum = GetMainInOutFlagForSrm(_DeviceTaskTypeEnum);
            if (_MainInOutFlagEnum == MainInOutFlagEnum.出库)
            {
                //查询第一个待执行的入库任务
                var queryInOutFlag = (int)MainInOutFlagEnum.入库;
                var fisrtTaskForIn = currTaskList.Where(x => x.InOutFlag == queryInOutFlag).ToList().OrderBy(x => x.CreateTime).FirstOrDefault();
                if (fisrtTaskForIn != null)
                {
                    partList.Add(fisrtTaskForIn);
                }
            }
            return partList;
        }
        #endregion
    }
}
CC/iWareCC_ASRS/DeviceThreadFactory/DeviceThreadServiceFactory.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using iWareModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace iWareCC.DeviceThreadFactory
{
    /// <summary>
    /// è®¾å¤‡çº¿ç¨‹å·¥åŽ‚
    /// </summary>
    public class DeviceThreadServiceFactory
    {
        /// <summary>
        /// èŽ·å–è®¾å¤‡çº¿ç¨‹å¯¹è±¡
        /// </summary>
        /// <param name="deviceType"></param>
        /// <returns></returns>
        public static DeviceThreadServiceHandle GetHandle(EDeviceType deviceType)
        {
            DeviceThreadServiceHandle handler = null;
            switch (deviceType)
            {
                case EDeviceType.堆垛机:
                    handler = new SrmTaskThreadService(iWareCommon.Utils.LogType.SrmTheadService);
                    break;
                case EDeviceType.RGV:
                    handler = new RgvTaskThreadService(iWareCommon.Utils.LogType.RgvThreadService);
                    break;
            }
            return handler;
        }
    }
}
CC/iWareCC_ASRS/DeviceThreadFactory/DeviceThreadServiceHandle.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,480 @@
using iWareCommon;
using iWareCommon.Common.Globle;
using iWareCommon.Utils;
using iWareModel;
using iWareSql;
using iWareSql.DataAccess;
using iWareSql.DBModel;
using iWareSql.Orm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using XiGang.Core.Model;
namespace iWareCC
{
    /// <summary>
    /// è®¾å¤‡çº¿ç¨‹æœåŠ¡
    /// </summary>
    public class DeviceThreadServiceHandle
    {
        private static string _namespace = "iWareSda.DeviceThreadService";
        public LogType currentLogType = default(LogType);
        /// <summary>
        /// çº¿ç¨‹ä¼‘眠的时间(毫秒)
        /// </summary>
        public int cycleDelay = 5000;//100,暂时 æ”¹æˆæ¯æ¬¡5秒一次循环
        #region å¯åŠ¨æœåŠ¡
        /// <summary>
        /// å¯åŠ¨æœåŠ¡
        /// </summary>
        public virtual void StartService()
        {
        }
        #endregion
        #region ä¸‹å‘任务线程
        /// <summary>
        /// ä¸‹å‘设备任务线程
        /// </summary>
        /// <param name="x"></param>
        public void IssueTaskThread(EDevice x)
        {
            ThreadHelper.StartThread(new Thread(new ParameterizedThreadStart(IssueTask)), (int)x);
        }
        /// <summary>
        /// ä¸‹å‘设备任务
        /// </summary>
        /// <param name="srmName"></param>
        public virtual void IssueTask(object deviceId)
        {
        }
        /// <summary>
        /// ä¸‹å‘设备任务处理
        /// </summary>
        /// <param name="srmName"></param>
        public virtual void IssueTaskHandle(int deviceId, out string errMsg)
        {
            errMsg = "";
        }
        #endregion
        #region ä»»åŠ¡å®Œæˆç¡®è®¤çº¿ç¨‹
        /// <summary>
        /// ä»»åŠ¡å®Œæˆç¡®è®¤çº¿ç¨‹
        /// </summary>
        /// <param name="x"></param>
        public void ConfirmFinishTaskThread(EDevice x)
        {
            ThreadHelper.StartThread(new Thread(new ParameterizedThreadStart(ConfirmFinishTask)), (int)x);
        }
        /// <summary>
        /// ä»»åŠ¡å®Œæˆç¡®è®¤
        /// </summary>
        /// <param name="srmName"></param>
        public virtual void ConfirmFinishTask(object deviceId)
        {
        }
        /// <summary>
        /// ä»»åŠ¡å®Œæˆç¡®è®¤å¤„ç†
        /// </summary>
        /// <param name="srmName"></param>
        public virtual void ConfirmFinishTaskHandle(int deviceId, out string errMsg)
        {
            errMsg = "";
        }
        #endregion
        #region ç¡®è®¤ä»»åŠ¡å®Œæˆçº¿ç¨‹
        #endregion
        #region éªŒè¯
        /// <summary>
        /// éªŒè¯è®¾å¤‡æ˜¯å¦å¯ä»¥ä¸‹å‘新任务
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns></returns>
        public virtual bool ValidateDeviceIsAllowSendTask(int int_deviceId, out string errMsg)
        {
            errMsg = "";
            EDevice device = (EDevice)Enum.Parse(typeof(EDevice), int_deviceId.ToString());
            if (Wms_EquipmentSituationHandler.IsEquipmentBreakdown(int_deviceId).result)
            {//如果设备已经设定为 æ•…障状态,不允许下发任务!!! [EditBy shaocx,2020-12-07]
                errMsg = device.ToString() + "被设定为故障状态,不允许下发新任务";
                return false;
            }
            return true;
        }
        /// <summary>
        /// éªŒè¯è®¾å¤‡æ˜¯å¦å¯ä»¥ä¸‹å‘新任务
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns></returns>
        public virtual bool ValidateDeviceIsAllowSendTask(int int_deviceId, Task_Part task, out string errMsg)
        {
            errMsg = "";
            return true;
        }
        /// <summary>
        /// éªŒè¯ç›®æ ‡ç‚¹æ˜¯å¦å·²ç»æœ‰åº“存!
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns></returns>
        public virtual bool ValidateIsHasStoreForToPlace(int int_deviceId, int placeId, string placeNo, out string errMsg)
        {
            errMsg = "";
            EDevice device = (EDevice)Enum.Parse(typeof(EDevice), int_deviceId.ToString());
            //增加验证-验证目标点是否有库存,如果有库存,则不允许下发新任务 ã€EditBy shaocx,2022-04-15】
            using (DbModel edm = new DbModel())
            {
                var store = StoreHandler.GetV_AllStoreByPlaceId(edm, placeId);
                if (store != null)
                {
                    errMsg = "目标点" + placeNo + "系统显示已经有货,不允许给" + device.ToString() + "下发新任务,货物类型:" + store.MaterialTypeName + ",货物托盘号:" + store.SalverCode;
                    return false;
                }
            }
            return true;
        }
        /// <summary>
        ///  éªŒè¯å‰é¢å­˜åœ¨åŒä¸€ä¸ªèµ·ç‚¹ã€ç›®æ ‡ç‚¹çš„任务
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <param name="part"></param>
        /// <param name="errMsg"></param>
        /// <returns>true:验证通过,false:验证不通过</returns>
        public virtual bool ValidateIsHasNoFinishedSameTask(int int_deviceId, Task_Part part, out string errMsg)
        {
            errMsg = "";
            EDevice device = (EDevice)Enum.Parse(typeof(EDevice), int_deviceId.ToString());
            using (DbModel edm = new DbModel())
            {
                var queryState1 = (int)DeviceTaskStatusEnum.已取消;
                var queryState2 = (int)DeviceTaskStatusEnum.已完成;
                var partList = edm.Task_Part.Where(x => x.Id != part.Id && x.DeviceId == int_deviceId
                    //&& x.MainTaskSequence <= part.MainTaskSequence
                    && x.CreateTime < part.CreateTime
                    && x.SourcePlace == part.SourcePlace
                    && x.ToPlace == part.ToPlace
                    && x.TaskState != queryState1 && x.TaskState != queryState2
                    ).ToList();
                if (partList != null && partList.Count > 0)
                {
                    errMsg = "前面存在同一个起点、目标点的任务,不允许给" + device.ToString() + "下发新任务:" + part.PlcTaskId;
                    return false;
                }
            }
            return true;
        }
        /// <summary>
        /// éªŒè¯è®¾å¤‡æ˜¯å¦å¯ä»¥æŽ¥å—任务
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns></returns>
        public virtual bool ValidateDeviceIsOK(int int_deviceId, Task_Part _task, int taskId, out string errMsg)
        {
            errMsg = "";
            return true;
        }
        /// <summary>
        /// éªŒè¯æ ¹æ®è®¾å¤‡å·æ˜¯å¦èƒ½æ‰¾åˆ°è®¾å¤‡
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns></returns>
        public virtual T ValidateIsExistDevice<T>(int int_deviceId)
        {
            return default(T);
        }
        /// <summary>
        /// éªŒè¯è®¾å¤‡æ˜¯å¦ä»»åŠ¡å®Œæˆ
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns></returns>
        public virtual bool ValidateDeviceTaskIsFinsished(int int_deviceId, Task_Part _task, out string errMsg)
        {
            errMsg = "";
            return false;
        }
        /// <summary>
        /// éªŒè¯è®¾å¤‡æ˜¯å¦ä»»åŠ¡å®Œæˆ
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns>0表示没有任务完成,其他表示任务完成,并返回任务号</returns>
        public virtual bool ValidateDeviceTaskIsFinsished(int int_deviceId, Task_Part _task, int taskId, out string errMsg)
        {
            errMsg = "";
            return false;
        }
        /// <summary>
        /// éªŒè¯è®¾å¤‡æ˜¯å¦ä»»åŠ¡å®Œæˆ
        /// </summary>
        /// <param name="int_deviceId"></param>
        /// <returns>0表示没有任务完成,其他表示任务完成,并返回任务号</returns>
        public virtual bool ValidateDeviceTaskIsFinsished(int int_deviceId, Task_Part _task, int taskId, bool? isAllowSimulateExecute, out string errMsg)
        {
            errMsg = "";
            return false;
        }
        /// <summary>
        ///  éªŒè¯èµ·ç‚¹å’Œç»ˆç‚¹æ˜¯å¦æ­£ç¡®
        /// </summary>
        /// <param name="dbModel"></param>
        /// <param name="sourcePlace">起始点的主键ID</param>
        /// <param name="toPlace">目标点的主键ID</param>
        /// <returns></returns>
        public bool ValdiatePalceIsRight(DbModel dbModel, int sourcePlace, int toPlace, ref RealPlaceEntity realPlaceEntity)
        {
            #region æ–°å¢žå¼‚常信息表  ã€EditBy shaocx,2020-01-20】
            IDictionary<string, object> logDict = new Dictionary<string, object>();
            logDict.Add("sourcePlace", sourcePlace);
            logDict.Add("toPlace", toPlace);
            Base_SysExceptionInfo exception = SysExceptionInfoHandler.GetExceptionInfo<IDictionary<string, object>>(currentLogType, _namespace, "ValdiatePalceIsRight", logDict);
            #endregion
            try
            {
                var db_fromPlace = dbModel.Base_Station.FirstOrDefault(x => x.Id.ToString() == sourcePlace.ToString());
                var db_toPlace = dbModel.Base_Station.FirstOrDefault(x => x.Id.ToString() == toPlace.ToString());
                if (db_fromPlace == null)
                {
                    exception.exceptionMsg = "起点'" + sourcePlace + "'没有找到";
                    SysExceptionInfoHandler.InsertExceptionInfo(exception, true);
                    return false;
                }
                if (db_toPlace == null)
                {
                    exception.exceptionMsg = "终点'" + toPlace + "'没有找到";
                    SysExceptionInfoHandler.InsertExceptionInfo(exception, true);
                    return false;
                }
                realPlaceEntity = new RealPlaceEntity();
                realPlaceEntity.real_sourcePlace = db_fromPlace;
                realPlaceEntity.real_toPlace = db_toPlace;
                return true;
            }
            catch (Exception ex)
            {
                SysExceptionInfoHandler.GetExceptionInfoForError("验证起点和终点是否正确出现异常:" + ex.Message, ex, ref exception);
                SysExceptionInfoHandler.InsertExceptionInfo(exception);
                throw;
            }
        }
        /// <summary>
        /// éªŒè¯æ•°æ®åº“中是否有任务要处理
        /// </summary>
        /// <param name="int_deviceId">设备号</param>
        /// <returns></returns>
        public virtual T ValidateIsExistTaskToDispose<T>(DbModel dbModel, int int_deviceId, out string errMsg, TaskExcuteTypeEnum _TaskExcuteTypeEnum)
        {
            errMsg = "";
            return default(T);
        }
        /// <summary>
        /// éªŒè¯æ•°æ®åº“中是否有任务要处理
        /// </summary>
        /// <typeparam name="Task_Part"></typeparam>
        /// <param name="dbModel"></param>
        /// <param name="int_deviceId">Rgv设备号</param>
        /// <param name="errMsg"></param>
        /// <param name="_TaskExcuteTypeEnum"></param>
        /// <returns></returns>
        public Task_Part ValidateIsExistTaskToDispose(DbModel dbModel, int int_deviceId, out string errMsg, TaskExcuteTypeEnum _TaskExcuteTypeEnum)
        {
            errMsg = "";
            iWareSql.DBModel.Task_Part currTask = null;
            switch (_TaskExcuteTypeEnum)
            {
                case TaskExcuteTypeEnum.执行任务:
                    //看同一个设备,是否还有其他正在执行的任务!
                    var partTask = dbModel.Task_Part.Where(x => x.DeviceId == int_deviceId && x.TaskState == (int)DeviceTaskStatusEnum.已下发).
                        OrderBy(x => x.CreateTime).FirstOrDefault();//按照主任务的顺序升序
                    if (partTask != null)
                    {
                        errMsg = string.Format("deviceId={0}的正在执行任务,任务ID:" + partTask.Id + ",主任务:" + partTask.MainTaskNo + ",PLC任务号:" + partTask.PlcTaskId, int_deviceId);
                        return default(Task_Part);
                    }
                    currTask = dbModel.Task_Part.Where(x => x.DeviceId == int_deviceId && x.TaskState == (int)DeviceTaskStatusEnum.未开始).ToList().OrderBy(x => x.CreateTime).FirstOrDefault();//按照主任务优先级的升序排序
                    break;
                case TaskExcuteTypeEnum.结束任务:
                    currTask = dbModel.Task_Part.Where(x => x.DeviceId == int_deviceId && x.TaskState == (int)DeviceTaskStatusEnum.已下发).ToList().OrderBy(x => x.CreateTime).FirstOrDefault();//按照主任务优先级的升序排序
                    break;
            }
            return currTask;
        }
        /// <summary>
        /// å½“设备任务完成后,验证站点是否有其他任务被占用
        /// </summary>
        /// <param name="dbModel"></param>
        /// <param name="placeId"></param>
        /// <param name="excludeTaskId">本次任务排除</param>
        /// <returns></returns>
        public bool ValdiatePalceIsUsedByTask(DbModel dbModel, int placeId, string excludeTaskId)
        {
            try
            {
                var queryState1 = (int)DeviceTaskStatusEnum.已取消;
                var queryState2 = (int)DeviceTaskStatusEnum.已完成;
                int srmCount = dbModel.Task_Part.Count(x => x.TaskState != queryState1 && x.TaskState != queryState2 && (x.SourcePlace == placeId || x.ToPlace == placeId) && x.Id != excludeTaskId);
                if (srmCount > 0)
                {
                    return false;
                }
                int rgvCount = dbModel.Task_Part.Count(x => x.TaskState != queryState1 && x.TaskState != queryState2 && (x.SourcePlace == placeId || x.ToPlace == placeId) && x.Id != excludeTaskId);
                if (rgvCount > 0)
                {
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        #endregion
        /// <summary>
        /// å½“设备任务结束时,更新库位的状态(任务占用、锁定)
        /// </summary>
        /// <param name="dbModel"></param>
        /// <param name="sourcePlace"></param>
        /// <param name="toPlace"></param>
        /// <param name="excludeTaskId"></param>
        /// <param name="remark"></param>
        public void UpdateStationLockInfoWhenFinished(DbModel dbModel, Base_Station sourcePlace, Base_Station toPlace, string excludeTaskId, string remark)
        {
            #region å˜æ›´åº“位状态(任务占用、锁定)
            //目标的库位状态
            if (ValdiatePalceIsUsedByTask(dbModel, toPlace.Id, excludeTaskId))
            {//没有其他任务占用
                toPlace.IsHasTaskDoing = false;
                StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref toPlace, remark);
            }
            if (ValdiatePalceIsUsedByTask(dbModel, sourcePlace.Id, excludeTaskId))
            {//没有其他任务占用
                sourcePlace.IsHasTaskDoing = false;
                StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref sourcePlace, remark);
            }
            #endregion
        }
        /// <summary>
        /// å½“设备任务完成后,转移库存
        /// </summary>
        /// <param name="dbModel"></param>
        /// <param name="salverId"></param>
        /// <param name="toPlace"></param>
        /// <param name="remark"></param>
        public void TransferStoreWhenFinished(Task_Part partTask, DbModel dbModel, string salverId, Base_Station toPlace, string remark, DeviceTaskTypeEnum taskType, EDeviceType _EDeviceType)
        {
            #region 2、解除来源位置的托盘和库位的绑定关系 å’Œç»‘定目标的CVP关系(注意:一定要在最后面执行!!)
            //解除CVP的关系
            //绑定目标的CVP关系
            Base_Salver_V_Station cvp = dbModel.Base_Salver_V_Station.Where(o => o.SalverId == salverId).FirstOrDefault();
            if (cvp == null)
            {
                throw new Exception(string.Format("根据salverId{0}没有找到库位和托盘的关联信息!", salverId));
            }
            //增加验证 ã€EditBy shaocx,2022-05-15】
            Base_Salver_V_Material svm = dbModel.Base_Salver_V_Material.Where(o => o.SalverId == salverId).FirstOrDefault();
            if (svm == null)
            {
                throw new Exception(string.Format("根据salverId{0}没有找到物料和托盘的关联信息!", salverId));
            }
            //库位和托盘已有绑定关系 å°†æ‰˜ç›˜åº“位关系集合中第一个库位号设置为当前入库任务的目标库位
            cvp.StationId = (int)toPlace.Id;
            cvp.StationCode = toPlace.SrmStationCode;
            //cvp.Old_State = cvp.State;//保存旧状态 [EditBy shaocx,20202-12-02]
            //var newState = DeviceTaskTypeEnumToC_V_P_StateEnumWhenTaskFinish(taskType, (int)cvp.State);
            //cvp.State = Convert.ToInt32(newState);
            //cvp.StateName = newState.ToString();
            cvp.ModifyTime = DateTime.Now;
            cvp.ModifyBy = SysGloble.WCSSystem;
            cvp.OperationRemark = remark + ",重新绑定新的CVP关系";
            //如果是入库,就记录入库时间
            if (_EDeviceType == EDeviceType.堆垛机)
            {
                switch (taskType)
                {
                    case DeviceTaskTypeEnum.组盘入库:
                    case DeviceTaskTypeEnum.空托转运到立体库:
                        var inTime = DateTime.Now;
                        cvp.InStoreTime = inTime;
                        //记录主表的入库时间
                        var mainTask = dbModel.Task_Main.Where(x => x.TaskNo == partTask.MainTaskNo).First();
                        mainTask.InStoreTime = inTime;
                        break;
                }
            }
            #endregion
        }
        #region èŽ·å–æŒ‡å®šä»»åŠ¡é˜¶æ®µçš„æŸä¸ªè®¾å¤‡çš„æ‰€æœ‰ä»»åŠ¡åˆ—è¡¨
        /// <summary>
        /// èŽ·å–æŒ‡å®šä»»åŠ¡é˜¶æ®µçš„æŸä¸ªè®¾å¤‡çš„æ‰€æœ‰ä»»åŠ¡åˆ—è¡¨
        /// </summary>
        /// <param name="dbModel"></param>
        /// <param name="int_deviceId"></param>
        /// <param name="_TaskExcuteTypeEnum"></param>
        /// <returns></returns>
        public List<Task_Part> GetPartListByDevice(DbModel dbModel, int int_deviceId, TaskExcuteTypeEnum _TaskExcuteTypeEnum)
        {
            switch (_TaskExcuteTypeEnum)
            {
                case TaskExcuteTypeEnum.执行任务:
                    return dbModel.Task_Part.Where(x => x.DeviceId == int_deviceId && x.TaskState == (int)DeviceTaskStatusEnum.未开始).ToList().OrderBy(x => x.CreateTime).ToList();//按照主任务的顺序升序
                case TaskExcuteTypeEnum.结束任务:
                    return dbModel.Task_Part.Where(x => x.DeviceId == int_deviceId && x.TaskState == (int)DeviceTaskStatusEnum.已下发).ToList().OrderBy(x => x.CreateTime).ToList();//按照主任务的顺序升序
                default:
                    return null;
            }
        }
        #endregion
    }
}
CC/iWareCC_ASRS/FormCC.Designer.cs
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
CC/iWareCC_ASRS/FormCC.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3423 @@
using iWareCC.BLL;
using iWareCC.Common.Helper;
using iWareCC.DeviceThreadFactory;
using iWareCC.Forms;
using iWareCC.RgvService;
using iWareCC.SrmService;
using iWareCC.WCF;
using iWareCommon;
using iWareCommon.Common.Globle;
using iWareCommon.Utils;
using iWareModel;
using iWareModel.Entity.AGV;
using iWareSql.DataAccess;
using iWareSql.DBModel;
using iWareSql.Orm;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Linq.Expressions;
using System.Net;
using System.ServiceModel;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using XiGang.Core.Model;
using XiGang.Core.Model.ViewModels;
namespace iWareCC
{
    public partial class FormCC : Form
    {
        /// <summary>
        /// 1号堆垛机入库口扫码强制验证通过
        /// </summary>
        public static bool Srm1_IN_SMQZYZTG = false;
        /// <summary>
        /// 2号堆垛机入库口扫码强制验证通过
        /// </summary>
        public static bool Srm2_IN_SMQZYZTG = false;
        /// <summary>
        /// 3号堆垛机入库口扫码强制验证通过
        /// </summary>
        public static bool Srm3_IN_SMQZYZTG = false;
        /// <summary>
        /// 4号堆垛机入库口扫码强制验证通过
        /// </summary>
        public static bool Srm4_IN_SMQZYZTG = false;
        AutoSizeFormClass asc_panel_DeviceTaskList = new AutoSizeFormClass();
        AutoSizeFormClass asc_panel_DeviceTaskList_dgvPartTask_Finished = new AutoSizeFormClass();
        AutoSizeFormClass asc_panel_dataGridView__OutTaskList = new AutoSizeFormClass();
        AutoSizeFormClass asc_panel_WaitPlanDetail = new AutoSizeFormClass();
        AutoSizeFormClass asc_panel_DeviceTaskList_dataGridView_RgvStore = new AutoSizeFormClass();
        AutoSizeFormClass asc_panel_dg_OutTaskRetryToMes = new AutoSizeFormClass();
        public static string current_rgv_stationName;
        /// <summary>
        /// 1012站点持续有货的持续计数,一旦没有货了,就重置为0
        /// </summary>
        public static int RGV_1012_HasCategory_COUNT = 0;
        /// <summary>
        /// 1011站点持续有货的持续计数,一旦没有货了,就重置为0
        /// </summary>
        public static int RGV_1011_HasCategory_COUNT = 0;
        /// <summary>
        /// 1020持续无货时间,一旦有货了,就重置为0
        /// </summary>
        public static int RGV_1020_NoHasCategory_COUNT = 0;
        public static int RGV_1001_HasCategory_COUNT = 0;
        public static int RGV_1003_HasCategory_COUNT = 0;
        public static int RGV_1005_HasCategory_COUNT = 0;
        public static int RGV_1008_HasCategory_COUNT = 0;
        /// <summary>
        /// æ˜¯å¦æ¨¡æ‹ŸPLC
        /// </summary>
        public static bool IsSimulationPLC = ConfigHelper.GetConfigBool("IsSimulationPLC");
        private string currentCheckModelText = "";
        const int cycleDelay_Device = 1000;//各个线程的延迟毫秒数
        const int cycleDelay_Task = 1000;
        Thread startModelTipsThread;//启动线程提示
        private bool isStartModelTipsThread = false;//是否启动了线程提示
        private Color default_btn_Start_Color = Color.FromArgb(0, 192, 0);//默认的开始模拟按钮颜色
        private Color ss_btn_Start_Color1 = Color.FromArgb(255, 255, 192);//开始模拟按钮后闪烁的颜色1
        private Color ss_btn_Start_Color2 = Color.FromArgb(192, 192, 255);//开始模拟按钮后闪烁的颜色1
        #region ä¿¡æ¯èŽ·å–çº¿ç¨‹
        Thread tskSetSrmLable;//各种堆垛机工作状态的显示的控制线程
        //Thread tskGetSrmTransStationInfo;//获取立库输送机信息的线程
        Thread tskGetSrmConveyorInfo;//获取立库输送线的任务完成等信息的线程
        Thread tskSetSrmTransLable;//各种立库输送机工作状态的显示的控制线程
        Thread tskGetRgv1Info;//获取RGV信息的线程
        Thread tskSetRgvLable;//各种Rgv工作状态的显示的控制线程
        #endregion
        #region å †åž›æœºå˜é‡
        /// <summary>
        /// å †åž›æœºçš„æžšä¸¾å˜é‡åˆ—表
        /// </summary>
        public static List<EDevice> SrmDeviceList;
        /// <summary>
        /// å †åž›æœºçš„实时数据对象字典
        /// key:EDevice的Int值, Value:SrmView
        /// </summary>
        public static IDictionary<int, SrmView> srmViewDict;
        #endregion
        public static RgvView rgvView;//Rgv实体类
        public static RgvService.RgvServiceClient rgvServiceClient = null;
        public FormCC()
        {
            InitializeComponent();
            SrmDeviceList = BusinessHelper.GetSrmDeviceList();
            //初始化数据
            InitSrmDict();
            //暂时注释
            //tp_Thread.Parent = null;//隐藏标签[线程控制]
            CheckForIllegalCrossThreadCalls = false;
            //设置界面初始化的选项
            //暂时注释
            /*
            this.rBNormal.Checked = SystemValue.rBNormal_Checked = true;
            this.rBPrepare.Checked = SystemValue.rBPrepare_Checked = false;
            this.rBDebug.Checked = SystemValue.rBDebug_Checked = false;
            this.ckBRgv上料任务.Checked = SystemValue.ckBRgv上料任务 = true;
            this.ckBRgv提前配板任务.Checked = SystemValue.ckBRgv提前配板任务 = false;
            //*/
            //暂时 é»˜è®¤å°±é€‰ä¸­è‡ªåŠ¨æ¨¡å¼
            this.rBNormal.Checked = SystemValue.rBNormal_Checked = true;
            this.rbHand.Checked = SystemValue.rbHand_Checked = false;
            this.rBDebug.Checked = SystemValue.rBDebug_Checked = false;
            this.rBOnlyIn.Checked = SystemValue.rBOnlyIn_Checked = false;
            SetModelCheckBoxToSystemValue();
            startModelTipsThread = new Thread(ShowTipsWhenStartModel);
            startModelTipsThread.Start();
            #region èŽ·å–è®¾å¤‡æ•°æ®
            ParameterizedThreadStart parStart1 = new ParameterizedThreadStart(GetSrmInfo);
            Thread thread1 = new Thread(parStart1);
            object o1 = (int)EDevice.一号堆垛机;
            thread1.Start(o1);
            ParameterizedThreadStart parStart2 = new ParameterizedThreadStart(GetSrmInfo);
            Thread thread2 = new Thread(parStart2);
            object o2 = (int)EDevice.二号堆垛机;
            thread2.Start(o2);
            ParameterizedThreadStart parStart3 = new ParameterizedThreadStart(GetSrmInfo);
            Thread thread3 = new Thread(parStart3);
            object o3 = (int)EDevice.三号堆垛机;
            thread3.Start(o3);
            ParameterizedThreadStart parStart4 = new ParameterizedThreadStart(GetSrmInfo);
            Thread thread4 = new Thread(parStart4);
            object o4 = (int)EDevice.四号堆垛机;
            thread4.Start(o4);
            tskGetRgv1Info = new Thread(GetRgvInfo);
            tskGetRgv1Info.Start();
            //堆垛机UI赋值
            SetSrmUI();
            #endregion
            #region è®¾ç½®æ˜¾ç¤ºUI
            tskSetSrmLable = new Thread(SrmRead_Label);
            tskSetSrmLable.Start();
            tskSetRgvLable = new Thread(SetRgvLable);
            tskSetRgvLable.Start();
            #endregion
            #region æœåŠ¡çº¿ç¨‹å¯åŠ¨
            //堆垛机任务服务线程启动
            var srmService = DeviceThreadServiceFactory.GetHandle(EDeviceType.堆垛机);
            srmService.StartService();
            //RGV任务服务线程启动
            var rgvService = DeviceThreadServiceFactory.GetHandle(EDeviceType.RGV);
            rgvService.StartService();
            //处理【下发中】的出库计划任务
            new Thread(OutPlanTaskDecompose.HandlerIssuingTask).Start();
            //任务分解线程-出库
            new Thread(MainTaskDecompose.HandlerMainTaskDecompose).Start();
            //任务分解线程-组盘入库
            new Thread(MainTaskDecompose_ZPRK.HandlerMainTaskDecompose_ZPRK).Start();
            //空托盘转运任务
            new Thread(EmptySalverTransferTask.Handler).Start();
            //自动组盘任务
            new Thread(AutoSalverMaterialBindTask.Handler).Start();
            //自动组盘下发任务
            new Thread(AutoIssueInStoreTask.Handler).Start();
            //重新获取发动机信息
            new Thread(AutoUpdateEngineInfoTask.Handler).Start();
            //1014库位转运到1020线程
            new Thread(Place1014To1020Task.Handler).Start();
            ////1009库位增加库存线程
            //new Thread(Place1009AddStoreTask.Handler).Start();
            new Thread(DeleteData).Start();
            new Thread(LineInSacnResult.HandlerLineInSacnResult).Start();
            //*/
            #endregion
            new Thread(GetAgvVehicles).Start();//AGV车辆信息
            new Thread(OutTaskRetryToMes.Handler).Start();
            //暂时不启用虚拟出入库功能
            new Thread(VirtualTaskNoOutPlanTaskHandler.Handler).Start();
        }
        private void FormCC_Load(object sender, EventArgs e)
        {
            dateTimePicker_Start.Value = DateTime.Now;
            dateTimePicker_End.Value = DateTime.Now;
            asc_panel_DeviceTaskList.controllInitializeSize(this.panel_DeviceTaskList);
            asc_panel_DeviceTaskList_dgvPartTask_Finished.controllInitializeSize(this.panel_DeviceTaskList_dgvPartTask_Finished);
            asc_panel_dataGridView__OutTaskList.controllInitializeSize(this.panel_dataGridView__OutTaskList);
            asc_panel_WaitPlanDetail.controllInitializeSize(this.panel_WaitPlanDetail);
            asc_panel_DeviceTaskList_dataGridView_RgvStore.controllInitializeSize(this.panel_DeviceTaskList_dataGridView_RgvStore);
            asc_panel_dg_OutTaskRetryToMes.controllInitializeSize(this.panel_dg_OutTaskRetryToMes);
            this.dgvPartTask.ReadOnly = true;
            /*
            trCancelBatchBackToStore = new Thread(CancelBatchBackToStore);
            trCancelBatchBackToStore.Start();
            //*/
            /*
            var tr_reverseSplitFinishProdOutStoreThread = new Thread(ReverseSplitFinishProdOutStoreThread);
            tr_reverseSplitFinishProdOutStoreThread.Start();
            //*/
            this.SetInitPlaceValue();
            #region å¯¹å¤–发布WCF形式数据访问服务
            try
            {
                #region å¯¹å¤–发布WCF形式数据访问服务
                var lineServiceHost = new ServiceHost(typeof(CCWcfService));
                lineServiceHost.Open();
                lbl_WCFMsg.Text = "发布WCF成功," + lineServiceHost.BaseAddresses[0].AbsoluteUri;
                lbl_WCFMsg.ForeColor = Color.Green;
                #endregion
            }
            catch (Exception ex)
            {
                Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "发布WCF失败", ex);
                lbl_WCFMsg.Text = "发布WCF失败:" + ex.Message;
                lbl_WCFMsg.ForeColor = Color.Red;
            }
            #endregion
            this.lbl_IsSimulationPLC.Text = "是否模拟PLC:" + (IsSimulationPLC ? "是" : "否");
            if (IsSimulationPLC)
            {
                this.panel_Model.BackColor = Color.Tomato;
            }
            else
            {//正式模式
                rgvServiceClient = new RgvServiceClient();
            }
            this.lbl_IsSimulationPLC.BackColor = IsSimulationPLC ? Color.Red : Color.Green;
            //此处快速启动 è°ƒè¯•模式,用于开发用
            //btn_Start_Click(null, null);
        }
        #region å †åž›æœºçº¿ç¨‹å’ŒUI处理
        /// <summary>
        /// è®¾ç½®1/2号堆垛机的前端显示
        /// </summary>
        private void SrmRead_Label()
        {
            while (true)
            {
                Thread.Sleep(1000);
                try
                {
                    var showNowTime = "(" + DateTimeHelper.ConvertToStringForOnlyShowTime(DateTime.Now) + ")";
                    //设置堆垛机任务下发和任务确认线程消息
                    this.lbl_Alter_Srm1Release.Text = showNowTime + SystemWarningMsg._lbl_Alert_Srm1Release;
                    this.lbl_Alert_Srm2Release.Text = showNowTime + SystemWarningMsg._lbl_Alert_Srm2Release;
                    this.lbl_Alert_Srm3Release.Text = showNowTime + SystemWarningMsg._lbl_Alert_Srm3Release;
                    this.lbl_Alert_Srm4Release.Text = showNowTime + SystemWarningMsg._lbl_Alert_Srm4Release;
                    //设置堆垛机任务下发和任务完成确认线程消息
                    this.lbl_Alter_Srm1ReleaseFinish.Text = showNowTime + SystemWarningMsg._lbl_Alert_Srm1ReleaseFinish;
                    this.lbl_Alert_Srm2ReleaseFinish.Text = showNowTime + SystemWarningMsg._lbl_Alert_Srm2ReleaseFinish;
                    this.lbl_Alert_Srm3ReleaseFinish.Text = showNowTime + SystemWarningMsg._lbl_Alert_Srm3ReleaseFinish;
                    this.lbl_Alert_Srm4ReleaseFinish.Text = showNowTime + SystemWarningMsg._lbl_Alert_Srm4ReleaseFinish;
                    this.lbl_Alert_RgvRelease.Text = showNowTime + SystemWarningMsg._lbl_Alert_RgvRelease;
                    this.lbl_Alert_RgvReleaseFinish.Text = showNowTime + SystemWarningMsg._lbl_Alert_RgvReleaseFinish;
                    this.lbl_Alert_RgvReleaseFinish_BuChang.Text = showNowTime + SystemWarningMsg._lbl_Alert_RgvReleaseFinish_BuChang;
                    this.lbl_Alert_HandlerIssuingTask.Text = showNowTime + SystemWarningMsg._lbl_Alert_HandlerIssuingTask;
                    this.lbl_Alert_VirtualTaskNoOutPlanTaskHandler.Text = showNowTime + SystemWarningMsg._lbl_Alert_VirtualTaskNoOutPlanTaskHandler;
                    this.lbl_MainTaskDecompose.Text = showNowTime + SystemWarningMsg._lbl_Alert_MainTaskDecompose;
                    this.lbl_MainTaskDecompose_ZPRK.Text = showNowTime + SystemWarningMsg._lbl_Alert_MainTaskDecompose_ZPRK;
                    this.lbl_Alert_LineInScan.Text = showNowTime + SystemWarningMsg._lbl_Alert_LineInScan;
                    this.lbl_Alert_DeleteData.Text = showNowTime + SystemWarningMsg._lbl_Alert_DeleteData;
                    this.lbl_Alert_EmptySalverTransfer.Text = showNowTime + SystemWarningMsg._lbl_Alert_EmptySalverTransfer;
                    this.lbl_alert_AutoSalverMaterialBindTask.Text = showNowTime + SystemWarningMsg._lbl_alert_AutoSalverMaterialBindTask;
                    this.lbl_alert_AutoIssueInStoreTask.Text = showNowTime + SystemWarningMsg._lbl_alert_AutoIssueInStoreTask;
                    this.lbl_alert_AutoUpdateEngineInfoTask.Text = showNowTime + SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask;
                    this.lbl_Alert_Place1014ClearStoreTask.Text = showNowTime + SystemWarningMsg._lbl_Alert_Place1014To1020TaskTask;
                    this.lbl_Alter_OutTaskRetryToMes.Text = showNowTime + SystemWarningMsg._lbl_Alert_OutTaskRetryToMes;
                    //this.lblSrmPosX1.Text="111";
                }
                catch (Exception ex)
                {
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.SrmTheadService, "方法SrmRead_Label出现异常:" + ex.Message, ex);
                    continue;
                }
            }
        }
        /// <summary>
        /// èŽ·å–å †åž›æœºçš„å®žæ—¶ä¿¡æ¯
        /// </summary>
        private void GetSrmInfo(object int_device)
        {
            while (true)
            {
                EDevice device = (EDevice)Enum.Parse(typeof(EDevice), int_device.ToString());
                Thread.Sleep(cycleDelay_Device);
                try
                {
                    using (var opcClinet = new SrmService.SrmServiceClient())
                    {
                        srmViewDict[(int)device] = opcClinet.GetSrmInfo((int)device);
                        CastToDevice_SrmRealTime(srmViewDict[(int)device]);
                        List<String> warningAddressList = new List<string>();
                        if (srmViewDict[(int)device].R_WarningDBList != null && srmViewDict[(int)device].R_WarningDBList.Length > 0)
                        {
                            var waringList = srmViewDict[(int)device].R_WarningDBList.ToList();
                            if (waringList != null && waringList.Count > 0)
                            {
                                for (int i = 0; i < waringList.Count; i++)
                                {
                                    DeviceWarningHandler.SaveWarning(device, iWareCommon.Utils.LogType.SrmTheadService,
                                        waringList[i].Code, waringList[i].Address, waringList[i].Context);//新增报警
                                    warningAddressList.Add(waringList[i].Address);
                                }
                            }
                        }
                        DeviceWarningHandler.AutoCloseWarning(device, iWareCommon.Utils.LogType.SrmTheadService, warningAddressList);//自动关闭报警
                    }
                }
                catch (Exception ex)
                {
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.SrmTheadService, "获取" + device.ToString() + "的实时信息异常:" + ex.Message, ex);
                    continue;
                }
            };
        }
        /// <summary>
        /// è½¬æ¢ä¸ºSRM的实时状态
        /// </summary>
        /// <param name="view"></param>
        private void CastToDevice_SrmRealTime(SrmView view)
        {
            List<Device_SrmRealTime> realTimeList = new List<Device_SrmRealTime>();
            Device_SrmRealTime obj = new Device_SrmRealTime();
            EDevice device = (EDevice)Enum.Parse(typeof(EDevice), view.R_SrmNo.ToString());
            obj = new Device_SrmRealTime()
            {
                SrmCode = view.R_SrmNo.ToString(),
                SrmName = device.ToString(),
                Mode = view.R_Mode.ToString(),
                ModeName = view.ModeName,
                State = view.R_State.ToString(),
                StateName = view.StateName,
                TaskID = view.R_TaskNo.ToString(),
                LiftFull = view.R_LiftFull == 1,
                PosX = view.R_PosX,
                PosY = view.R_PosY,
                PosZ = view.R_PosZ,
                PosZName = EnumberHelper.GetEnumName<ESrmForkPosition>(view.R_PosZ).ToString(),
                // XCoordinate=view.r_xc
                SrmToPlace = view.SrmToPlace,
                SrmSourcePlace = view.SrmSourcePlace,
                ZCoordinate = view.R_PosZmm.ToString(),
                XCoordinate = view.R_PosXmm.ToString(),
                YCoordinate = view.R_PosYmm.ToString()
            };
            realTimeList.Add(obj);
            DeviceSrmRealTimeHandler.Update(realTimeList, iWareCommon.Utils.LogType.SrmTheadService);
        }
        /// <summary>
        /// å †åž›æœºçš„UI显示
        /// </summary>
        /// <param name="device"></param>
        private void SetSrmUI()
        {
            if (FormCC.IsSimulationPLC == false)
            {
                SrmDeviceList.ForEach(x =>
                {
                    ParameterizedThreadStart parStart = new ParameterizedThreadStart(SingleSetSrmUI);
                    Thread thread = new Thread(parStart);
                    object o = (int)x;
                    thread.Start(o);
                });
            }
        }
        /// <summary>
        /// å †åž›æœºçš„UI显示
        /// </summary>
        /// <param name="device"></param>
        private void SingleSetSrmUI(object int_device)
        {
            while (true)
            {
                try
                {
                    EDevice device = (EDevice)Enum.Parse(typeof(EDevice), int_device.ToString());
                    SrmView srmInfo = srmViewDict[(int)device];
                    var panel = GetSrmPanel(device);
                    List<PropertieModel> proList = ClassHelper.GetPropertieModels<SrmView>(srmInfo);
                    foreach (var item in DeviceDict.LabelSrmDict)
                    {
                        //var lbl = ControlHelper.GetLabel(this, panel, item.Key + (int)device);
                        Object obj = ControlHelper.GetControlInstance(panel, item.Key + (int)device);
                        if (obj != null)
                        {
                            Label lbl = (Label)obj;
                            lbl.Text = item.Value.LablePreStr + proList.Find(x => x.PropertyName == item.Value.LableProName).DataValue;
                        }
                    }
                    //特殊处理- æŠ¥è­¦
                    var lbSrmAlarm = GetSrmAlarmLabel(device);
                    if (srmInfo.R_Alarm != 1)
                    {
                        lbSrmAlarm.Text = string.Empty;
                        lbSrmAlarm.ForeColor = Color.SkyBlue;
                        lbSrmAlarm.BackColor = Color.Transparent;
                        lbSrmAlarm.ForeColor = Color.Maroon;
                        lbSrmAlarm.BackColor = Color.WhiteSmoke;
                    }
                    else
                    { //处于报警状态下
                        if (srmInfo.R_WarningDBList != null && srmInfo.R_WarningDBList.Length > 0)
                        {
                            lbSrmAlarm.Text = String.Join(",", srmInfo.R_WarningDBList.Select(x => x.Context).ToArray());
                        }
                        lbSrmAlarm.ForeColor = Color.White;
                        lbSrmAlarm.BackColor = Color.Red;
                        lbSrmAlarm.ForeColor = Color.White;
                        lbSrmAlarm.BackColor = Color.Red;
                    }
                    //注释
                    /*
                    if (lbSrmAlarm.Text == string.Empty)
                    {
                        using (var opcClinet = new SrmService.SrmServiceClient())
                        {
                            var isHandShare = SrmBLL.IsHandShare(opcClinet, device);
                            if (!isHandShare)
                            {
                                lbSrmAlarm.Text = (int)device + "号堆垛机没有心跳";
                            }
                        }
                    }
                    //*/
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
        /// <summary>
        /// èŽ·å–å †åž›æœºçš„æŠ¥è­¦Label
        /// </summary>
        /// <param name="device"></param>
        /// <returns></returns>
        private Label GetSrmAlarmLabel(EDevice device)
        {
            switch (device)
            {
                case EDevice.一号堆垛机:
                    return this.lblSrmAlarm1;
                case EDevice.二号堆垛机:
                    return this.lblSrmAlarm2;
                case EDevice.三号堆垛机:
                    return this.lblSrmAlarm3;
                case EDevice.四号堆垛机:
                    return this.lblSrmAlarm4;
            }
            return null;
        }
        /// <summary>
        /// èŽ·å–å †åž›æœºçš„Panel
        /// </summary>
        /// <param name="device"></param>
        /// <returns></returns>
        private Panel GetSrmPanel(EDevice device)
        {
            switch (device)
            {
                case EDevice.一号堆垛机:
                    return this.panel_Srm1;
                case EDevice.二号堆垛机:
                    return this.panel_Srm2;
                case EDevice.三号堆垛机:
                    return this.panel_Srm3;
                case EDevice.四号堆垛机:
                    return this.panel_Srm4;
            }
            return null;
        }
        #endregion
        #region RGV线程和UI处理
        /// <summary>
        /// è®¾ç½®Rgv的UI显示
        /// </summary>
        /// <param name="obj"></param>
        private void SetRgvLable(object obj)
        {
            while (true)
            {
                Thread.Sleep(cycleDelay_Device);
                try
                {
                    //lbRgv_Y.Text = "当前行走位置: " + rgv.R_RgvPosition;
                    //lbRgv_X.Text = "当前区域位置: " + rgv.R_RgvPosition;
                    //ERgvState _ERgvState = (ERgvState)Enum.Parse(typeof(ERgvState), rgv.R_State.ToString());
                    //lbRgvWorkState.Text = "工作状态: " + _ERgvState.ToString();
                    //lbRgvTaskId.Text = "任务号: " + rgv.R_TaskNo;
                    //lbRgvIsAuto.Text = "工作模式: " + (rgv.ModeName);
                    //lbRgvAlert.Text = rgv.R_AlarmCode.ToString();
                    //if (rgv.R_Alarm == false)
                    //{
                    //    //检测是否有心跳
                    //    using (var rgvService = new RgvService.RgvServiceClient())
                    //    {
                    //        //检测是否有心跳
                    //        var isRgvHandShare = RgvBLL.IsRgvHandShare(rgvService);
                    //        if (!isRgvHandShare)
                    //        {
                    //            lbRgvAlert.Text = "RGV没有心跳";
                    //        }
                    //    }
                    //}
                    //else
                    //{
                    //    lbRgvAlert.Text = rgv.R_AlarmCode.ToString();
                    //}
                    //// ERgvEvent _ERgvEvent = (ERgvEvent)Enum.Parse(typeof(ERgvEvent), rgv.r_ev.ToString());
                    ////lbRgvEvent.Text = "事  ä»¶ï¼š" + _ERgvEvent.ToString();
                    //lbRgvTaskFinish.Text = "任务完成:" + rgv.R_TaskFinish;
                }
                catch (Exception)
                {
                    continue;
                }
            }
        }
        /// <summary>
        /// èŽ·å–RGV信息
        /// </summary>
        /// <param name="obj"></param>
        private void GetRgvInfo(object obj)
        {
            while (true)
            {
                Thread.Sleep(1000);//1秒钟读取一次
                try
                {
                    if (rgvServiceClient == null)
                    {
                        continue;
                    }
                    rgvView = rgvServiceClient.GetRgvInfo((int)EDevice.RGV);
                    CalcRGV_1012_HasCategory_COUNT();
                    CalcRGV_1011_HasCategory_COUNT();
                    CalcRGV_1020_NoHasCategory_COUNT();
                    CalcRGV_HasCategory_COUNT(EDevice.堆垛机1出库口1001, ref RGV_1001_HasCategory_COUNT, lbl_RGV_1001_HasCategory_COUNT);
                    CalcRGV_HasCategory_COUNT(EDevice.堆垛机2出库口1003, ref RGV_1003_HasCategory_COUNT, lbl_RGV_1003_HasCategory_COUNT);
                    CalcRGV_HasCategory_COUNT(EDevice.堆垛机3出库口1005, ref RGV_1005_HasCategory_COUNT, lbl_RGV_1005_HasCategory_COUNT);
                    CalcRGV_HasCategory_COUNT(EDevice.堆垛机4出库口1008, ref RGV_1008_HasCategory_COUNT, lbl_RGV_1008_HasCategory_COUNT);
                    _CommmonShowAgvStation();
                    CastToDevice_RgvRealTime(rgvView);
                    SetScanText();
                    Set1009_HighText();
                    //显示RGV任务完成和完成确认信号
                    this.lbl_R_RGV_Finish.Text = "RGV任务完成:" + rgvView.R_RGV_Finish;
                    this.lbl_W_RGV_FinishACK.Text = "RGV任务完成确认:" + rgvView.W_RGV_FinishACK;
                    this.lbl_RgvCoordinate.Text = "RGV实时坐标:" + rgvView.R_RGV_Coordinate;
                    //解析RGV对象
                    foreach (var item in rgvView.R_RgvForReadCommList)
                    {
                        var control = ControlHelper.GetControlInstance(this.tPTransAsrs, "btn_" + item.StationCode);
                        if (item.R_AlarmCode > 0)
                        {//有报警
                            if (control != null)
                            {
                                var btn = control as Button;
                                btn.BackColor = Color.Red;
                            }
                        }
                        else
                        {
                            if (control != null)
                            {
                                var btn = control as Button;
                                if (item.StationCode == ((int)EDevice.RGV1040).ToString())
                                {
                                    btn.BackColor = Color.Gold;
                                }
                                else if (item.StationCode == ((int)EDevice.拆盘机1020).ToString())
                                {
                                    btn.BackColor = Color.DodgerBlue;
                                }
                                else if (item.StationCode == ((int)EDevice.提升机1030).ToString())
                                {
                                    btn.BackColor = Color.SteelBlue;
                                }
                                else
                                {
                                    btn.BackColor = Color.SeaGreen;
                                }
                            }
                        }
                    }
                    //显示RGV报警信息
                    List<String> warningAddressList = new List<string>();
                    if (rgvView.R_Rgv_WarningDBList != null && rgvView.R_Rgv_WarningDBList.Length > 0)
                    {
                        tb_Rgv_Alter.Text = String.Join(",", rgvView.R_Rgv_WarningDBList.Select(x => x.Contextk__BackingField).ToArray());
                        //保存报警
                        var waringList = rgvView.R_Rgv_WarningDBList.ToList();
                        if (waringList != null && waringList.Count > 0)
                        {
                            for (int i = 0; i < waringList.Count; i++)
                            {
                                DeviceWarningHandler.SaveWarning(EDevice.RGV, iWareCommon.Utils.LogType.RgvThreadService,
                                    waringList[i].Codek__BackingField, waringList[i].Addressk__BackingField, waringList[i].Contextk__BackingField);//新增报警
                                warningAddressList.Add(waringList[i].Addressk__BackingField);
                            }
                        }
                    }
                    else
                    {
                        tb_Rgv_Alter.Text = "";
                    }
                    DeviceWarningHandler.AutoCloseWarning(EDevice.RGV, iWareCommon.Utils.LogType.RgvThreadService, warningAddressList);//自动关闭报警
                }
                catch (Exception ex)
                {
                    rgvView = null;
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.RgvThreadService, "获取RGV信息出现异常:" + ex.Message, ex);
                    continue;
                }
            }
        }
        private void SetScanText()
        {
            this.lbl_R_1015_Scan.Text = "1015扫码值:" + rgvView.R_1015_Scan;
            this.lbl_R_1019_Scan.Text = "1019扫码值:" + rgvView.R_1019_Scan;
            this.lblR_1019_CargoNoScan.Text = "1019发动机扫码:" + rgvView.R_1019_CargoNoScan;
            this.lbl_R_1002_Scan.Text = "1002扫码值:" + rgvView.R_1002_Scan;
            this.lbl_R_1004_Scan.Text = "1004扫码值:" + rgvView.R_1004_Scan;
            this.lbl_R_1006_Scan.Text = "1006扫码值:" + rgvView.R_1006_Scan;
            this.lbl_R_1007_Scan.Text = "1007扫码值:" + rgvView.R_1007_Scan;
            this.lbl_W_1002_ScanFailACK.Text = "1002扫描验证:" + rgvView.W_1002_ScanFailACK;
            this.lbl_W_1004_ScanFailACK.Text = "1004扫描验证:" + rgvView.W_1004_ScanFailACK;
            this.lbl_W_1006_ScanFailACK.Text = "1006扫描验证:" + rgvView.W_1006_ScanFailACK;
            this.lbl_W_1007_ScanFailACK.Text = "1007扫描验证:" + rgvView.W_1007_ScanFailACK;
        }
        private void Set1009_HighText()
        {
            this.lbl_R_1009_High1.Text = "1009站点1层光电:" + rgvView.R_1009_High1;
            this.lbl_R_1009_High2.Text = "1009站点2层光电:" + rgvView.R_1009_High2;
            this.lbl_R_1009_High3.Text = "1009站点3层光电:" + rgvView.R_1009_High3;
        }
        /// <summary>
        /// è½¬æ¢ä¸ºRGV的实时状态
        /// </summary>
        /// <param name="rgvView"></param>
        private void CastToDevice_RgvRealTime(RgvView rgvView)
        {
            List<Device_RgvRealTime> realTimeList = new List<Device_RgvRealTime>();
            Device_RgvRealTime obj = new Device_RgvRealTime();
            foreach (var item in rgvView.R_RgvForReadCommList)
            {
                EDevice device = (EDevice)Enum.Parse(typeof(EDevice), item.StationCode);
                obj = new Device_RgvRealTime()
                {
                    RgvCode = item.StationCode,
                    RgvName = device.ToString(),
                    Mode = item.R_Model.ToString(),
                    ModeName = EnumberHelper.GetEnumName<ERgvMode>(item.R_Model).ToString(),
                    State = item.R_State.ToString(),
                    StateName = EnumberHelper.GetEnumName<ERgvState>(item.R_State).ToString(),
                    WarningCode = item.R_AlarmCode.ToString(),
                    TaskID = item.R_TaskID.ToString(),
                    PH_1 = item.R_PH_1,
                    PH_2 = item.R_PH_2,
                    Shape = item.R_Shape.ToString(),
                    ShapeName = EnumberHelper.GetEnumName<ERgvBodyTest>(item.R_Shape).ToString(),
                    Destination = item.R_Destination.ToString(),
                    Coordinate = rgvView.R_RGV_Coordinate //赋值RGV坐标
                };
                realTimeList.Add(obj);
            }
            DeviceRgvRealTimeHandler.Update(realTimeList, iWareCommon.Utils.LogType.RgvThreadService);
        }
        #endregion
        #region AGV
        /// <summary>
        /// èŽ·å–AGV车辆列表
        /// </summary>
        public void GetAgvVehicles()
        {
            while (true)
            {
                try
                {
                    if (SystemValue.isAllowRuning_Agv && SystemValue.isStartedModel)
                    {
                        AGVRetModel list = AgvRequestHelper.GetVehicles();
                        AgvHandler.SaveAgvData(list);
                        List<String> warningAddressList = new List<string>();
                        if (list.alarms != null && list.alarms.errors != null && list.alarms.errors.Count > 0)
                        {
                            var waringList = list.alarms.errors;
                            if (waringList != null && waringList.Count > 0)
                            {
                                for (int i = 0; i < waringList.Count; i++)
                                {
                                    DeviceWarningHandler.SaveWarning(EDevice.AGV, iWareCommon.Utils.LogType.AGVTheadService,
                                        waringList[i].code, waringList[i].code, waringList[i].desc);//新增报警
                                    warningAddressList.Add(waringList[i].code);
                                }
                            }
                        }
                        DeviceWarningHandler.AutoCloseWarning(EDevice.AGV, iWareCommon.Utils.LogType.AGVTheadService, warningAddressList);//自动关闭报警
                        this.lbl_Alert_Agv.Text = "获取AGV车辆信息成功";
                    }
                }
                catch (Exception ex)
                {
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "获取AGV车辆列表 å‡ºçް异叏:" + ex.Message, ex);
                    this.lbl_Alert_Agv.Text = "获取AGV车辆信息异常:" + ex.Message;
                }
                finally
                {
                    Thread.Sleep(5000);//5秒一次
                }
            }
        }
        #endregion
        #region å…¶ä»–线程
        #region å®šæ—¶åˆ é™¤æ•°æ®
        /// <summary>
        /// å®šæ—¶åˆ é™¤æ•°æ®
        /// </summary>
        public void DeleteData()
        {
            while (true)
            {
                try
                {
                    if (SystemValue.isAllowRuning_DeleteData && SystemValue.isStartedModel)
                    {
                        ClearDataHandler.Delete_Base_SysExceptionInfo(7);
                        ClearDataHandler.Delete_Task_RequestLog(7);
                        ClearDataHandler.Delete_Task_Part(10);
                        ClearDataHandler.Delete_Device_Warning(30);
                        ClearDataHandler.Delete_HttpRequestRecord(14);
                        ClearDataHandler.Delete_MES_BTJReceiveReq(30);
                        ClearDataHandler.Delete_MES_OnLineReq(30);
                        LogTextHelper.BatchDeleteLog();
                        Thread.Sleep(8 * 60 * 60 * 1000);//每天8小时一次
                    }
                    else
                    {
                        Thread.Sleep(6 * 1000);
                    }
                }
                catch (Exception ex)
                {
                    SystemWarningMsg._lbl_Alert_DeleteData = "出现异常:" + ex.Message;
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "定时删除数据 å‡ºçް异叏", ex);
                }
                finally
                {
                }
            }
        }
        #endregion
        #endregion
        #region ç§æœ‰æ–¹æ³•
        /// <summary>
        /// è®¡ç®— æŸä¸ªç«™ç‚¹çš„æœ‰è´§ å€¼
        /// </summary>
        private void CalcRGV_HasCategory_COUNT(EDevice device, ref int RGV_HasCategory_COUNT, Label lbl_RGV_HasCategory_COUNT)
        {
            //改为 åªåˆ¤æ–­æœ‰ä¸¤ä¸ªä¿¡å·éƒ½æœ‰
            var isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattionFor2(((int)device).ToString());
            //改为 åªåˆ¤æ–­æœ‰ä¸€ä¸ªä¿¡å·æœ‰è´§å³å¯
            //var isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(((int)EDevice.出库口1012).ToString());
            if (isGD_HasCatogryForRgvStattion)
            {
                RGV_HasCategory_COUNT += 1;
            }
            else
            {
                RGV_HasCategory_COUNT = 0;
            }
            lbl_RGV_HasCategory_COUNT.Text = ((int)device).ToString() + "站点持续有货时间:" + RGV_HasCategory_COUNT;
        }
        /// <summary>
        /// è®¡ç®— RGV_1012_HasCategory_COUNT值
        /// </summary>
        private void CalcRGV_1012_HasCategory_COUNT()
        {
            //改为 åªåˆ¤æ–­æœ‰ä¸¤ä¸ªä¿¡å·éƒ½æœ‰
            var isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattionFor2(((int)EDevice.出库口1012).ToString());
            //改为 åªåˆ¤æ–­æœ‰ä¸€ä¸ªä¿¡å·æœ‰è´§å³å¯
            //var isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(((int)EDevice.出库口1012).ToString());
            if (isGD_HasCatogryForRgvStattion)
            {
                RGV_1012_HasCategory_COUNT += 1;
            }
            else
            {
                RGV_1012_HasCategory_COUNT = 0;
            }
            this.lbl_RGV_1012_HasCategory_COUNT.Text = "1012站点持续有货时间:" + RGV_1012_HasCategory_COUNT;
        }
        /// <summary>
        /// è®¡ç®— RGV_1011_HasCategory_COUNT值
        /// </summary>
        private void CalcRGV_1011_HasCategory_COUNT()
        {
            //改为 åªåˆ¤æ–­æœ‰ä¸¤ä¸ªä¿¡å·éƒ½æœ‰
            var isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattionFor2(((int)EDevice.空托缓存1011).ToString());
            //改为 åªåˆ¤æ–­æœ‰ä¸€ä¸ªä¿¡å·æœ‰è´§å³å¯
            //var isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(((int)EDevice.空托缓存1011).ToString());
            if (isGD_HasCatogryForRgvStattion)
            {
                RGV_1011_HasCategory_COUNT += 1;
            }
            else
            {
                RGV_1011_HasCategory_COUNT = 0;
            }
            this.lbl_RGV_1011_HasCategory_COUNT.Text = "1011站点持续有货时间:" + RGV_1011_HasCategory_COUNT;
        }
        /// <summary>
        /// è®¡ç®— RGV_1020_NoHasCategory_COUNT值
        /// </summary>
        private void CalcRGV_1020_NoHasCategory_COUNT()
        {
            var isGD_HasCatogryForRgvStattion = MyExtendHelper.IsGD_HasCatogryForRgvStattion(((int)EDevice.拆盘机1020).ToString());
            if (isGD_HasCatogryForRgvStattion)
            {
                RGV_1020_NoHasCategory_COUNT = 0;
            }
            else
            {
                RGV_1020_NoHasCategory_COUNT += 1;
            }
            this.lbl_RGV_1020_NoHasCategory_COUNT.Text = "1020站点持续无货时间:" + RGV_1020_NoHasCategory_COUNT;
        }
        /// <summary>
        /// åˆå§‹åŒ–实时堆垛机的字典
        /// </summary>
        private static void InitSrmDict()
        {
            srmViewDict = new Dictionary<int, SrmView>();
            SrmDeviceList.ForEach(singeDevice =>
            {
                srmViewDict.Add((int)singeDevice, new SrmView());
            });
        }
        private void SetInitPlaceValue()
        {
            this.tbSrm1TaskId.Text = this.tbSrm2TaskId.Text = this.tbSrm3TaskId.Text = this.tbSrm4TaskId.Text = "11";
            var sourcePlace = "02-02-01";
            this.tB_Srm1SourcePlace.Text = this.tB_Srm2SourcePlace.Text = this.tB_Srm3SourcePlace.Text = this.tB_Srm4SourcePlace.Text = sourcePlace;
            var toPlace = "02-03-01";
            this.tB_Srm1ToPlace.Text = this.tB_Srm2ToPlace.Text = this.tB_Srm3ToPlace.Text = this.tB_Srm4ToPlace.Text = toPlace;
        }
        #endregion
        private void btnSrm1Send_Click(object sender, EventArgs e)
        {
            CommonSendSrmTask(ESrmCmd.库内搬运, "1-", tbSrm1TaskId, tB_Srm1SourcePlace, tB_Srm1ToPlace, EDevice.一号堆垛机);
        }
        private void btnSrm1Move_Click(object sender, EventArgs e)
        {
            CommonSendSrmTask(ESrmCmd.移动, "1-", tbSrm1TaskId, tB_Srm1SourcePlace, tB_Srm1ToPlace, EDevice.一号堆垛机);
        }
        private void btnSrm1Confirm_Click(object sender, EventArgs e)
        {
            CommonSrmConfirm(EDevice.一号堆垛机, tbSrm1TaskId);
        }
        private void btnSrm1EStop_Click(object sender, EventArgs e)
        {
            CommonSrmEStop(EDevice.一号堆垛机);
        }
        private void btnSrm1RlsAlert_Click(object sender, EventArgs e)
        {
            using (var opcClinet = new SrmService.SrmServiceClient())
            {
                opcClinet.ReleaseAlert((int)EDevice.一号堆垛机);
            }
        }
        private void btnSrm1Delete_Click(object sender, EventArgs e)
        {
            CommonDeleteSrmTask(EDevice.一号堆垛机);
        }
        private void btnSrm2Send_Click(object sender, EventArgs e)
        {
            CommonSendSrmTask(ESrmCmd.库内搬运, "2-", tbSrm2TaskId, tB_Srm2SourcePlace, tB_Srm2ToPlace, EDevice.二号堆垛机);
        }
        #region å…¬å…±
        /// <summary>
        /// å…¬å…±å †åž›æœºæ€¥åœå‘½ä»¤
        /// </summary>
        private void CommonSrmEStop(EDevice _EDevice)
        {
            try
            {
                using (var opcClinet = new SrmService.SrmServiceClient())
                {
                    var result = opcClinet.SendEStop((int)_EDevice);
                    Log4NetHelper.WriteInfoLog(iWareCommon.Utils.LogType.SrmTheadService, "字符串:" + JsonConvert.SerializeObject(result));
                    if (result.result)
                    {
                        WZ.Useful.Commons.MessageUtil.ShowTips("发送" + _EDevice.ToString() + "急停指令成功");
                    }
                    else
                    {
                        WZ.Useful.Commons.MessageUtil.ShowTips("发送" + _EDevice.ToString() + "急停指令失败:" + result.resMsg);
                    }
                }
            }
            catch (Exception ex)
            {
                WZ.Useful.Commons.MessageUtil.ShowError("发送" + _EDevice.ToString() + "急停指令异常:" + ex.Message);
            }
        }
        /// <summary>
        /// å…¬å…±å‘送堆垛机命令(搬运/移动)
        /// </summary>
        /// <param name="pre_Srm"></param>
        /// <param name="tbTaskId"></param>
        /// <param name="tbSourcePlace"></param>
        /// <param name="tbToPlace"></param>
        /// <param name="_EDevice"></param>
        private void CommonSendSrmTask(ESrmCmd srmCmd, string pre_Srm, TextBox tbTaskId, TextBox tbSourcePlace, TextBox tbToPlace, EDevice _EDevice)
        {
            if (SystemValue.isStartedModel)
            {
                WZ.Useful.Commons.MessageUtil.ShowError("手动发任务,需要将模式关闭!");
                return;
            }
            MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
            var deviceName = _EDevice.ToString();
            var cmdName = srmCmd.ToString();
            DialogResult dr = MessageBox.Show("确定要给" + deviceName + "发送" + cmdName + "命令吗?", "确认", messButton);
            if (dr == DialogResult.OK)//如果点击“确定”按钮
            {
                try
                {
                    using (var opcClinet = new SrmService.SrmServiceClient())
                    {
                        var sourcePlce = tbSourcePlace.Text.Trim();
                        var toPlace = tbToPlace.Text.Trim();
                        if (!IsNumeric(tbTaskId.Text.Trim()))
                        {
                            WZ.Useful.Commons.MessageUtil.ShowError("任务号格式错误,必须是数字!");
                            return;
                        }
                        var taskId = int.Parse(tbTaskId.Text.Trim());
                        if (!(taskId >= 1 && taskId <= 100))
                        {
                            WZ.Useful.Commons.MessageUtil.ShowError("手动任务号必须是在1-100之间!");
                            return;
                        }
                        iWareCC.SrmService.SdaResEntity sdaResult = opcClinet.SendSrmTask((int)_EDevice, int.Parse(tbTaskId.Text.Trim()), pre_Srm + sourcePlce, pre_Srm + toPlace, (short)srmCmd);
                        if (sdaResult.result)
                        {
                            WZ.Useful.Commons.MessageUtil.ShowTips(deviceName + cmdName + "命令发送成功!");
                            //  tB_Srm1SourcePlace.Clear();
                            // tB_Srm1ToPlace.Clear();
                            Log4NetHelper.WriteInfoLog(iWareCommon.Utils.LogType.CCWCFService, "手动堆垛机任务发送成功,任务号:" + taskId + ",起点:" + sourcePlce + ",目标点:" + toPlace + ",堆垛机:" + deviceName);
                        }
                        else
                        {
                            WZ.Useful.Commons.MessageUtil.ShowError(deviceName + cmdName + "命令发送失败!返回代码:" + sdaResult.resMsg);
                            Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "手动堆垛机任务发送失败!返回代码:" + sdaResult.resMsg + ",任务号:" + taskId + ",起点:" + sourcePlce + ",目标点:" + toPlace + ",堆垛机:" + deviceName);
                        }
                    }
                    tbSourcePlace.Focus();
                    tbSourcePlace.SelectAll();
                }
                catch (Exception ex)
                {
                    WZ.Useful.Commons.MessageUtil.ShowError(deviceName + cmdName + "命令发送出现异常:" + ex.Message);
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, deviceName + cmdName + "命令发送出现异常:" + ex.Message, ex);
                }
            }
            else//如果点击“取消”按钮
            {
            }
        }
        /// <summary>
        /// å †åž›æœºä»»åŠ¡ç¡®è®¤
        /// </summary>
        /// <param name="device"></param>
        /// <param name="tbTaskId"></param>
        private void CommonSrmConfirm(EDevice device, TextBox tbTaskId)
        {
            try
            {
                if (SystemValue.isStartedModel)
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("手动堆垛机任务确认,需要将模式关闭!");
                    return;
                }
                iWareCC.SrmService.SdaResEntity sdaResult = new SrmService.SrmServiceClient().ConfirmTaskFinish
                        ((int)device, int.Parse(tbTaskId.Text.Trim()));
                if (sdaResult.result)
                {
                    //tbSrm1TaskId.Clear();
                    Log4NetHelper.WriteInfoLog(iWareCommon.Utils.LogType.CCWCFService, "手动堆垛机任务确认成功,任务号:" + tbTaskId);
                }
                else
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("手动堆垛机任务确认失败:" + sdaResult.resMsg + "!");
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "手动堆垛机任务确认失败:" + sdaResult.resMsg + "!,任务号:" + tbTaskId, null);
                }
            }
            catch (Exception ex)
            {
                WZ.Useful.Commons.MessageUtil.ShowError("手动堆垛机任务确认异常:" + ex.Message);
                Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "手动堆垛机任务确认异常:" + ex.Message, ex);
            }
        }
        private void CommonDeleteSrmTask(EDevice device)
        {
            if (SystemValue.isStartedModel)
            {
                WZ.Useful.Commons.MessageUtil.ShowError("手动删除堆垛机任务,需要将模式关闭!");
                return;
            }
            MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
            DialogResult dr = MessageBox.Show("确定要删除" + device.ToString() + "任务吗?", "确认", messButton);
            if (dr == DialogResult.OK)//如果点击“确定”按钮
            {
                using (var opcClinet = new SrmService.SrmServiceClient())
                {
                    opcClinet.SendSrmDelete((int)device);
                }
            }
            else//如果点击“取消”按钮
            {
            }
        }
        #endregion
        private void btnSrm2Move_Click(object sender, EventArgs e)
        {
            CommonSendSrmTask(ESrmCmd.移动, "2-", tbSrm2TaskId, tB_Srm2SourcePlace, tB_Srm2ToPlace, EDevice.二号堆垛机);
        }
        private void btnSrmTransSend_Click(object sender, EventArgs e)
        {
            if (SystemValue.isStartedModel)
            {
                WZ.Useful.Commons.MessageUtil.ShowError("手动发任务,需要将模式关闭!");
                return;
            }
            MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
            DialogResult dr = MessageBox.Show("确定要发送命令吗?", "确认", messButton);
            if (dr == DialogResult.OK)//如果点击“确定”按钮
            {
                try
                {
                    using (var opcClinet = new RgvService.RgvServiceClient())
                    {
                        var sourcePlce = tBSrmTransSouce.Text.Trim();
                        if (sourcePlce == "1010")
                        {
                            WZ.Useful.Commons.MessageUtil.ShowError("站点1010不能发任务!");
                            return;
                        }
                        var toPlace = tBSrmTransToPlace.Text.Trim();
                        if (!IsNumeric(tBSrmTransTskId.Text.Trim()))
                        {
                            WZ.Useful.Commons.MessageUtil.ShowError("任务号格式错误,必须是数字!");
                            return;
                        }
                        var taskId = int.Parse(tBSrmTransTskId.Text.Trim());
                        if (!(taskId >= 1 && taskId <= 100))
                        {
                            WZ.Useful.Commons.MessageUtil.ShowError("手动任务号必须是在1-100之间!");
                            return;
                        }
                        iWareCC.RgvService.SdaResEntity sdaResult = opcClinet.SendRgvTask((int)EDevice.RGV, Convert.ToInt32(tBSrmTransTskId.Text.Trim()), sourcePlce, toPlace);
                        if (sdaResult.result)
                        {
                            WZ.Useful.Commons.MessageUtil.ShowTips("命令发送成功!");
                            //  tB_Srm1SourcePlace.Clear();
                            // tB_Srm1ToPlace.Clear();
                        }
                        else
                        {
                            WZ.Useful.Commons.MessageUtil.ShowError("命令发送失败!返回消息:" + sdaResult.resMsg);
                        }
                    }
                }
                catch (Exception ex)
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("命令发送出现异常:" + ex.Message);
                }
            }
            else//如果点击“取消”按钮
            {
            }
        }
        private void btnSrm2Confirm_Click(object sender, EventArgs e)
        {
            CommonSrmConfirm(EDevice.二号堆垛机, tbSrm2TaskId);
        }
        private void btnSrm2EStop_Click(object sender, EventArgs e)
        {
            CommonSrmEStop(EDevice.二号堆垛机);
        }
        private void btnSrm2RlsAlert_Click(object sender, EventArgs e)
        {
            using (var opcClinet = new SrmService.SrmServiceClient())
            {
                opcClinet.ReleaseAlert((int)EDevice.二号堆垛机);
            }
        }
        private void btnSrm2Delete_Click(object sender, EventArgs e)
        {
            CommonDeleteSrmTask(EDevice.二号堆垛机);
        }
        /// <summary>
        /// æ ¡éªŒè¾“入的库位ID是否符合格式
        /// </summary>
        /// <param name="str">库位号</param>
        /// <returns></returns>
        private bool IsNumeric(string str)
        {
            try
            {
                return (WZ.Useful.Commons.Util.IsNumeric(int.Parse(str)));
            }
            catch (Exception)
            {
                return false;
            }
        }
        private void rBNormal_CheckedChanged(object sender, EventArgs e)
        {
            SetModelCheckBoxToSystemValue();
        }
        private void rBDebug_CheckedChanged(object sender, EventArgs e)
        {
            SetModelCheckBoxToSystemValue();
        }
        /// <summary>
        /// æ ¹æ®é€‰æ‹©çš„æ¨¡å¼é…ç½®ä¸åŒçš„值
        /// </summary>
        private void SetModelCheckBoxToSystemValue()
        {
            SystemValue.rBNormal_Checked = this.rBNormal.Checked ? true : false;
            SystemValue.rbHand_Checked = this.rbHand.Checked ? true : false;
            SystemValue.rBDebug_Checked = this.rBDebug.Checked ? true : false;
            SystemValue.rBOnlyIn_Checked = this.rBOnlyIn.Checked ? true : false;
            var title = "当前模式: ";
            if (SystemValue.rBNormal_Checked)
            {//选中了 è‡ªåŠ¨æ¨¡å¼
                currentCheckModelText = "自动模式";
                this.lbl_ModelText.Text = title + currentCheckModelText;
                this.gBoxThread.Enabled = false;
                SetAllCheckBoxChecked(true);
            }
            else if (SystemValue.rbHand_Checked)
            {
                currentCheckModelText = "手动模式";
                this.lbl_ModelText.Text = title + currentCheckModelText;
                this.gBoxThread.Enabled = false;
                SetAllCheckBoxChecked(false);
            }
            else if (SystemValue.rBDebug_Checked)
            {
                currentCheckModelText = "调试模式";
                this.lbl_ModelText.Text = title + currentCheckModelText;
                SetAllCheckBoxChecked(false);
                this.gBoxThread.Enabled = true;
            }
            else if (SystemValue.rBOnlyIn_Checked)
            {
                currentCheckModelText = "入库模式";
                this.lbl_ModelText.Text = title + currentCheckModelText;
                SetAllCheckBoxChecked(true);
                //将特殊的取消
                this.ckHandlerIssuingTask.Checked = false;
                this.ckMainTaskDecompose.Checked = false;
                this.gBoxThread.Enabled = true;
            }
            else
            {
                currentCheckModelText = "无效模式";
            }
        }
        /// <summary>
        /// éåŽ†æ‰€æœ‰çš„Checkbox,并配置是否被选中
        /// </summary>
        /// <param name="enabled"></param>
        private void SetAllCheckBoxChecked(bool _checked)
        {
            var contorls = this.groupBox1.Controls;
            foreach (var control in contorls)
            {
                if (control is CheckBox)
                {
                    CheckBox c = (CheckBox)control;
                    c.Checked = _checked;
                }
            }
        }
        /// <summary>
        /// é€šç”¨çš„checkbox改变事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CommonCheckedChanged(object sender, EventArgs e)
        {
            //堆垛机1任务下发
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_SrmTaskThreadService_1, ckBSrm1Release);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_SrmTaskThreadService_1_Finish, ckBSrm1FinishedHandle);
            //堆垛机2任务下发
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_SrmTaskThreadService_2, ckBSrm2Release);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_SrmTaskThreadService_2_Finish, ckBSrm2FinishedHandle);
            //堆垛机3任务下发
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_SrmTaskThreadService_3, ckBSrm3Release);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_SrmTaskThreadService_3_Finish, ckBSrm3FinishedHandle);
            //堆垛机4任务下发
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_SrmTaskThreadService_4, ckBSrm4Release);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_SrmTaskThreadService_4_Finish, ckBSrm4FinishedHandle);
            //RGV任务下发
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_RgvThreadService, ckBRgvRelease);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_RgvThreadService_Finish, ckBRgvFinishedHandle);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_RgvThreadService_Finish_BuChang, ckBRgvFinishedHandle_BuChang);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_HandlerIssuingTask, ckHandlerIssuingTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_VirtualTaskNoOutPlanTaskHandler, ck_VirtualTaskNoOutPlanTaskHandler);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_MainTaskDecompose, ckMainTaskDecompose);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_MainTaskDecompose_ZPRK, ckMainTaskDecompose_ZPRK);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_LineInScan, checkBox_LineInScan);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DeleteData, ckDeleteData);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_Agv, ckAgv);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_EmptySalverTransfer, ckEmptySalverTransfer);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_AutoSalverMaterialBindTask, ck_AutoSalverMaterialBindTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_AutoIssueInStoreTask, ck_AutoIssueInStoreTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_AutoUpdateEngineInfoTask, ck_AutoUpdateEngineInfoTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_Place1014To1020Task, ckPlace1014ClearStoreTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_OutTaskRetryToMes, checkBox_OutTaskRetryToMes);
        }
        private void DoCommonCheckedChanged(ref bool isAllowValue, CheckBox cb)
        {
            isAllowValue = cb.Checked ? true : false;
        }
        private void FormCC_SizeChanged(object sender, EventArgs e)
        {
            asc_panel_DeviceTaskList.controlAutoSize(this.panel_DeviceTaskList);
            asc_panel_DeviceTaskList_dgvPartTask_Finished.controlAutoSize(this.panel_DeviceTaskList_dgvPartTask_Finished);
            asc_panel_dataGridView__OutTaskList.controlAutoSize(this.panel_dataGridView__OutTaskList);
            asc_panel_WaitPlanDetail.controlAutoSize(this.panel_WaitPlanDetail);
            asc_panel_DeviceTaskList_dataGridView_RgvStore.controlAutoSize(this.panel_DeviceTaskList_dataGridView_RgvStore);
            asc_panel_dg_OutTaskRetryToMes.controlAutoSize(this.panel_dg_OutTaskRetryToMes);
        }
        /// <summary>
        /// åœæ­¢
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_End_Click(object sender, EventArgs e)
        {
            //首先确认下,是不是选择的是 è‡ªåŠ¨æ¨¡å¼æˆ–è€…æ˜¯ æå‰é…æ¿æ¨¡å¼
            //注意:这里增加模式时,要处理的 ï¼ï¼ï¼ï¼
            if (!(SystemValue.rBNormal_Checked
                 || SystemValue.rbHand_Checked
                 || SystemValue.rBDebug_Checked
                 || SystemValue.rBOnlyIn_Checked
                ))
            {
                WZ.Useful.Commons.MessageUtil.ShowError("当前没有选择模式,停止动作无效!");
                return;
            }
            if (isStartModelTipsThread == false)
            {
                WZ.Useful.Commons.MessageUtil.ShowError("当前没有模式在运行,停止动作无效!");
                return;
            }
            MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
            DialogResult dr = MessageBox.Show("确定要停止【" + currentCheckModelText + "】模式吗?", "停止模式", messButton);
            if (dr == DialogResult.OK)//如果点击“确定”按钮
            {
                var doResult = CommonStopService();
                if (!doResult)
                {
                    return;
                }
                this.btn_Start.Text = "启动模式";
                this.btn_Start.Enabled = true;
                SystemValue.isStartedModel = false;
                //启用选择模式的checkbox
                SetEnableForModelRadioButton(true);
                //this.rBNormal.Enabled = true;
                //this.rBClose.Enabled = true;
                //this.rBDebug.Enabled = true;
                //this.rBPrepare.Enabled = true;
                //this.rBPersonRaw.Enabled = true;
                //this.rBInOutStore.Enabled = true;
                //this.rBCancelBatchBackToStore.Enabled = true;
                //不需要重新关闭checkbox
                //SetAllCheckBoxChecked(false);
                isStartModelTipsThread = false;
                this.btn_Start.BackColor = default_btn_Start_Color;//还原颜色
            }
            else//如果点击“取消”按钮
            {
            }
        }
        /// <summary>
        /// æŽ§åˆ¶æ¨¡å¼ä¸­çš„RadioButton禁启用
        /// </summary>
        /// <param name="enabled"></param>
        private void SetEnableForModelRadioButton(bool enabled)
        {
            var ctls = this.panel_Model.Controls;
            foreach (var item in ctls)
            {
                if (item is RadioButton)
                {
                    RadioButton rb = (RadioButton)item;
                    rb.Enabled = enabled;
                }
            }
        }
        /// <summary>
        /// å¯åЍ
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Start_Click(object sender, EventArgs e)
        {
            //首先确认下,是不是选择的是 è‡ªåŠ¨æ¨¡å¼æˆ–è€…æ˜¯ æå‰é…æ¿æ¨¡å¼
            if (!(SystemValue.rBNormal_Checked
                || SystemValue.rbHand_Checked
                || SystemValue.rBDebug_Checked
                || SystemValue.rBOnlyIn_Checked
                ))
            {
                WZ.Useful.Commons.MessageUtil.ShowError("请选择其中一个模式!");
                return;
            }
            MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
            DialogResult dr = MessageBox.Show("确定要启动【" + currentCheckModelText + "】模式吗?", "启动模式", messButton);
            if (dr == DialogResult.OK)//如果点击“确定”按钮
            {
                using (DbModel edm = new DbModel())
                {
                    var ccSystem = BasicDataSetHandler.GetCCSystem(edm);
                    if (ccSystem == null)
                    {
                        WZ.Useful.Commons.MessageUtil.ShowError("请联系管理员维护系统调度相关的数据!");
                        return;
                    };
                    //判断是否是自己开启的软件
                    if (!string.IsNullOrEmpty(ccSystem.Machine) && ccSystem.Machine != Dns.GetHostName())
                    {//默认的空值
                        WZ.Useful.Commons.MessageUtil.ShowError(string.Format("调度系统已经在其他地方启动配板模式,机器名:{0},启动时间:{1}!"
                            , ccSystem.Machine, DateTimeHelper.ConvertToString(ccSystem.OnLineTime)));
                        return;
                    }
                    ccSystem.BasicDataValue = SystemValue.SystemStartGuid = Guid.NewGuid().ToString();
                    ccSystem.OnLineTime = DateTime.Now;
                    ccSystem.Machine = Dns.GetHostName();
                    int i = edm.SaveChanges();
                    if (i <= 0)
                    {
                        WZ.Useful.Commons.MessageUtil.ShowError("保存系统调度相关的数据失败!");
                        return;
                    }
                }
                this.btn_Start.Text = "【" + currentCheckModelText + "】模式运行中...";
                this.btn_Start.Enabled = false;
                this.btn_End.Enabled = true;
                SystemValue.isStartedModel = true;
                //禁用选择模式的checkbox
                SetEnableForModelRadioButton(false);
                //this.rBNormal.Enabled = false;
                //this.rBClose.Enabled = false;
                //this.rBDebug.Enabled = false;
                //this.rBPersonRaw.Enabled = false;
                //this.rBPrepare.Enabled = false;
                //this.rBInOutStore.Enabled = false;
                isStartModelTipsThread = true;
            }
            else//如果点击“取消”按钮
            {
            }
        }
        /// <summary>
        /// å…¬å…±åœæ­¢æœåŠ¡çš„å¤„ç†
        /// </summary>
        /// <returns></returns>
        private bool CommonStopService()
        {
            using (DbModel edm = new DbModel())
            {
                var ccSystem = BasicDataSetHandler.GetCCSystem(edm);
                if (ccSystem == null)
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("请联系管理员维护系统调度相关的数据!");
                    return false;
                };
                //判断是否是自己开启的软件模式
                if (SystemValue.SystemStartGuid == ccSystem.BasicDataValue)
                {
                    ccSystem.BasicDataValue = "000000";//默认的空值
                    ccSystem.OnLineTime = null;
                    ccSystem.Machine = string.Empty;
                    ccSystem.LastMachine = Dns.GetHostName();
                    ccSystem.LastUnLineTime = DateTime.Now;
                    ccSystem.ModifyTime = DateTime.Now;
                    int i = edm.SaveChanges();
                    if (i <= 0)
                    {
                        WZ.Useful.Commons.MessageUtil.ShowError("保存系统调度相关的数据失败!");
                        return false;
                    }
                }
            }
            return true;
        }
        private void FormCC_FormClosing(object sender, FormClosingEventArgs e)
        {
            MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
            DialogResult dr = MessageBox.Show("确定要退出吗?", "确认", messButton);
            if (dr == DialogResult.OK)//如果点击“确定”按钮
            {
                try
                {
                    var doResult = CommonStopService();
                    if (!doResult)
                    {
                        e.Cancel = true;
                        return;
                    }
                    e.Cancel = false;
                }
                catch (Exception ex)
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("出现错误!" + ex.Message);
                    e.Cancel = true;
                }
            }
            else//如果点击“取消”按钮
            {
                e.Cancel = true;
            }
        }
        private void FormCC_FormClosed(object sender, FormClosedEventArgs e)
        {
            try
            {
                Dispose();
            }
            catch (Exception)
            {
            }
            Environment.Exit(0);
        }
        /// <summary>
        /// æ¨¡å¼å¯åŠ¨åŽï¼ŒæŒ‰é’®é—ªçƒ
        /// </summary>
        /// <param name="obj"></param>
        private void ShowTipsWhenStartModel(object obj)
        {
            while (true)
            {
                Thread.Sleep(1000);
                if (isStartModelTipsThread)
                {
                    try
                    {
                        this.btn_Start.BackColor = ss_btn_Start_Color2;
                        Thread.Sleep(1000);
                        this.btn_Start.BackColor = ss_btn_Start_Color1;
                    }
                    catch (Exception)
                    {
                        continue;
                    }
                }
                else
                {
                    if (this.btn_Start.BackColor != default_btn_Start_Color)
                    {
                        this.btn_Start.BackColor = default_btn_Start_Color;//还原颜色
                    }
                }
            }
        }
        private void panel27_Paint(object sender, PaintEventArgs e)
        {
        }
        /// <summary>
        /// èµ·å§‹ä½å’Œç›®æ ‡ä½äº’换
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Change1_Click(object sender, EventArgs e)
        {
            var old_source = this.tB_Srm1SourcePlace.Text;
            var old_to = this.tB_Srm1ToPlace.Text;
            this.tB_Srm1SourcePlace.Text = old_to;
            this.tB_Srm1ToPlace.Text = old_source;
        }
        private void btn_Change2_Click(object sender, EventArgs e)
        {
            var old_source = this.tB_Srm2SourcePlace.Text;
            var old_to = this.tB_Srm2ToPlace.Text;
            this.tB_Srm2SourcePlace.Text = old_to;
            this.tB_Srm2ToPlace.Text = old_source;
        }
        private void tPTransAsrs_Click(object sender, EventArgs e)
        {
        }
        private void panel16_Paint(object sender, PaintEventArgs e)
        {
        }
        private void btnSrm4Send_Click(object sender, EventArgs e)
        {
            CommonSendSrmTask(ESrmCmd.库内搬运, "4-", tbSrm4TaskId, tB_Srm4SourcePlace, tB_Srm4ToPlace, EDevice.四号堆垛机);
        }
        private void btnSrm4RlsAlert_Click(object sender, EventArgs e)
        {
            using (var opcClinet = new SrmService.SrmServiceClient())
            {
                opcClinet.ReleaseAlert((int)EDevice.四号堆垛机);
            }
        }
        private void btn_Srm4EStop_Click(object sender, EventArgs e)
        {
            CommonSrmEStop(EDevice.四号堆垛机);
        }
        private void btn_Srm3EStop_Click(object sender, EventArgs e)
        {
            CommonSrmEStop(EDevice.三号堆垛机);
        }
        private void btnSrm3RlsAlert_Click(object sender, EventArgs e)
        {
            using (var opcClinet = new SrmService.SrmServiceClient())
            {
                opcClinet.ReleaseAlert((int)EDevice.三号堆垛机);
            }
        }
        private void btnSrm4Confirm_Click(object sender, EventArgs e)
        {
            CommonSrmConfirm(EDevice.四号堆垛机, tbSrm4TaskId);
        }
        private void btn_Change4_Click(object sender, EventArgs e)
        {
            var old_source = this.tB_Srm4SourcePlace.Text;
            var old_to = this.tB_Srm4ToPlace.Text;
            this.tB_Srm4SourcePlace.Text = old_to;
            this.tB_Srm4ToPlace.Text = old_source;
        }
        private void btn_Change3_Click(object sender, EventArgs e)
        {
            var old_source = this.tB_Srm3SourcePlace.Text;
            var old_to = this.tB_Srm3ToPlace.Text;
            this.tB_Srm3SourcePlace.Text = old_to;
            this.tB_Srm3ToPlace.Text = old_source;
        }
        private void btnSrm3Send_Click(object sender, EventArgs e)
        {
            CommonSendSrmTask(ESrmCmd.库内搬运, "3-", tbSrm3TaskId, tB_Srm3SourcePlace, tB_Srm3ToPlace, EDevice.三号堆垛机);
        }
        private void btnSrm4Move_Click(object sender, EventArgs e)
        {
            CommonSendSrmTask(ESrmCmd.移动, "4-", tbSrm4TaskId, tB_Srm4SourcePlace, tB_Srm4ToPlace, EDevice.四号堆垛机);
        }
        private void btnSrm3Confirm_Click(object sender, EventArgs e)
        {
            CommonSrmConfirm(EDevice.三号堆垛机, tbSrm3TaskId);
        }
        private void btnSrm4Delete_Click(object sender, EventArgs e)
        {
            CommonDeleteSrmTask(EDevice.四号堆垛机);
        }
        private void btnSrm3Delete_Click_1(object sender, EventArgs e)
        {
            CommonDeleteSrmTask(EDevice.三号堆垛机);
        }
        private void btnSrm3Move_Click(object sender, EventArgs e)
        {
            CommonSendSrmTask(ESrmCmd.移动, "3-", tbSrm3TaskId, tB_Srm3SourcePlace, tB_Srm3ToPlace, EDevice.三号堆垛机);
        }
        private void panel15_Paint(object sender, PaintEventArgs e)
        {
        }
        private void CommmonShowAgvStation(object sender)
        {
            var btn = sender as Button;
            var stationName = "";
            int stationCode = 0;
            if (int.TryParse(btn.Text, out stationCode))
            {
                stationName = btn.Text;
            }
            else
            {
                stationName = BusinessHelper.ConvertStationCodeForRGV(btn.Text).ToString();
            }
            current_rgv_stationName = stationName;
            _CommmonShowAgvStation();
        }
        private void _CommmonShowAgvStation()
        {
            if (string.IsNullOrEmpty(current_rgv_stationName))
            {
                this.lbl_StationCode.Text = "当前位置号:" + "";
                this.lbl_PH_1.Text = "光电1状态:" + "";
                this.lbl_PH_2.Text = "光电2状态:" + "";
                this.lbl_ACK.Text = "收到任务下发反馈:" + "";
                this.lbl_Model.Text = "模式:" + "";
                this.lbl_State.Text = "运行状态:" + "";
                this.lbl_AlarmCode.Text = "报警代码:" + "";
                this.lbl_Destination.Text = "当前目标地址:" + "";
                this.lbl_Shape.Text = "外形检测:" + "";
                this.lbl_TaskID.Text = "当前任务号:" + "";
                this.lbl_Rgv_STP.Text = "STP:" + "";
                this.lbl_Rgv_WriteTaskNo.Text = "写入任务号:" + "";
                this.lbl_Rgv_WriteToPlace.Text = "写入目标地址:" + "";
            }
            else
            {
                var r_station = rgvView.R_RgvForReadCommList.Where(x => x.StationCode == current_rgv_stationName).FirstOrDefault();
                var w_station = rgvView.W_RgvForWriteCommList.Where(x => x.StationCode == current_rgv_stationName).FirstOrDefault();
                this.lbl_StationCode.Text = "当前位置号:" + r_station.StationCode;
                this.lbl_PH_1.Text = "光电1状态:" + r_station.R_PH_1;
                this.lbl_PH_2.Text = "光电2状态:" + r_station.R_PH_2;
                this.lbl_ACK.Text = "收到任务下发反馈:" + r_station.R_ACK;
                this.lbl_Model.Text = "模式:" + EnumberHelper.GetEnumName<ERgvMode>(r_station.R_Model);
                this.lbl_State.Text = "运行状态:" + EnumberHelper.GetEnumName<ERgvState>(r_station.R_State);
                this.lbl_AlarmCode.Text = "报警:" + (r_station.R_AlarmCode == 1 ? "有报警" : "无");
                this.lbl_Destination.Text = "当前目标地址:" + r_station.R_Destination;
                this.lbl_Shape.Text = "外形检测:" + EnumberHelper.GetEnumName<ERgvBodyTest>(r_station.R_Shape);
                this.lbl_TaskID.Text = "当前任务号:" + r_station.R_TaskID;
                this.lbl_Rgv_STP.Text = "STP:" + w_station.W_STP;
                this.lbl_Rgv_WriteTaskNo.Text = "写入任务号:" + w_station.W_TaskID;
                this.lbl_Rgv_WriteToPlace.Text = "写入目标地址:" + w_station.W_Destination;
            }
        }
        private void btn_1001_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1002_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1003_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1004_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1005_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1006_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1007_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1008_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1009_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1010_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1011_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1012_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1013_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1030_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1014_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1020_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_1015_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_RGV_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void btn_ResetSTP_Click(object sender, EventArgs e)
        {
            CommmonResetSTP(sender);
        }
        private void CommmonResetSTP(object sender)
        {
            var btn = sender as Button;
            var stationName = current_rgv_stationName;
            if (string.IsNullOrEmpty(stationName))
            {
                MessageBox.Show("请选择站点号");
                return;
            }
            using (RgvService.RgvServiceClient client = new RgvServiceClient())
            {
                var result = client.WriteStp((int)EDevice.RGV, false, stationName);
                if (result.result == false)
                {
                    MessageBox.Show("失败:" + result.resMsg);
                }
            }
        }
        private void btnFind_Click_1(object sender, EventArgs e)
        {
            //查询设备任务列表
            dgvPartTask.AutoGenerateColumns = false;
            for (int i = 0; i < dgvPartTask.Columns.Count; i++)
            {
                if (i == (dgvPartTask.Columns.Count - 1))
                {//最后一列填充
                    dgvPartTask.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                }
                else
                {//其他列自动适应宽度
                    dgvPartTask.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                }
            }
            BindData();
            //this.dgvPartTask.Columns["CreateTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["IssueTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["FinishTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["AllowSimulateExecute_Time"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            FormHelper.DataGridViewSelfAdaptionWidth(this.dgvPartTask);
        }
        public void BindData()
        {
            List<Task_Part> partList = new List<Task_Part>();
            dgvPartTask.ClearSelection();   //可消除所有选择的行
            dgvPartTask.DataSource = null;
            dgvPartTask.CurrentCell = null; //可消除选择行的行头箭头
            using (DbModel db = new DbModel())
            {
                //取 æœ€åŽä¸€ä¸ªæœªç»“束的任务,然后取前5条已经结束的任务
                var queryState1 = (int)DeviceTaskStatusEnum.已取消;
                var queryState2 = (int)DeviceTaskStatusEnum.已完成;
                var firstNoFinishedTaskList = db.Task_Part.Where(x => x.TaskState != queryState1 && x.TaskState != queryState2).OrderBy(x => x.CreateTime).ToList();
                if (firstNoFinishedTaskList == null)
                {
                    partList = new List<Task_Part>();
                }
                else
                {
                    List<int> mainIdList = new List<int>();
                    foreach (var item in firstNoFinishedTaskList)
                    {
                        if (!mainIdList.Contains(item.MainTaskId))
                        {
                            mainIdList.Add(item.MainTaskId);
                        }
                    }
                    var partList2 = db.Task_Part.Where(x => mainIdList.Contains(x.MainTaskId)).ToList();
                    //partList.AddRange(partList1);
                    partList.AddRange(partList2);
                }
                if (partList != null && partList.Count > 0)
                {
                    partList = partList.OrderBy(x => x.MainTaskId).ThenByDescending(x => x.CreateTime).ToList();//重新 å‡åºæŽ’序
                    dgvPartTask.DataSource = null;
                    dgvPartTask.DataSource = partList;
                }
                else
                {
                    //if (dgvPartTask.Rows.Count > 0)
                    //{
                    //    int i = dgvPartTask.Rows[0].Cells.Count;
                    //    var cells = dgvPartTask.Rows[0].Cells;
                    //    for (int j = 0; j < i; j++)
                    //    {
                    //        cells[j].Value = null;
                    //    }
                    //}
                }
            }
        }
        private void btnFinish_Click_1(object sender, EventArgs e)
        {
            //强制完成
            try
            {
                var _AllowSimulateExecute_Rmark = this.tb_AllowSimulateExecute_Rmark.Text;
                if (string.IsNullOrEmpty(_AllowSimulateExecute_Rmark))
                {
                    MessageBox.Show("请输入强制完成原因说明!");
                    return;
                }
                using (DbModel context = new DbModel())
                {
                    var row = dgvPartTask.SelectedRows;
                    if (row.Count > 0)
                    {
                        var cell = row[0].Cells;
                        // var id = cell[0].Value.ToString();
                        var id = cell["Id"].Value.ToString();
                        var task = context.Task_Part.FirstOrDefault(x => x.Id == id);
                        if (task != null)
                        {
                            #region æ•°æ®å¤„理
                            MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
                            DialogResult dr = MessageBox.Show("确定要将该任务" + task.PlcTaskId + "标记为强制完成吗?", "确认", messButton);
                            if (dr == DialogResult.OK)//如果点击“确定”按钮
                            {
                                task.IsAllowSimulateExecute = true;
                                task.AllowSimulateExecute_User = SysGloble.WCSSystem;
                                task.AllowSimulateExecute_Time = DateTime.Now;
                                task.AllowSimulateExecute_Rmark = _AllowSimulateExecute_Rmark;
                                task.ModifyTime = DateTime.Now;
                                task.OperationRemark = "用户强制完成," + _AllowSimulateExecute_Rmark;
                                task.ModifyBy = SysGloble.WCSSystem;
                                //保存人工处理日志 [EditBy shaocx,2022-05-01]
                                Base_PersonHandlerRecord record = new Base_PersonHandlerRecord()
                                {
                                    MainTaskNo = task.MainTaskNo,
                                    HandlerType = "标记任务强制完成",
                                    PartTaskId = task.Id,
                                    PlcTaskId = task.PlcTaskId,
                                    RealSourcePlace = task.RealSourcePlace,
                                    RealToPlace = task.RealToPlace,
                                    SalverCode = task.SalverCode,
                                    SerialNumber = task.SerialNumber,
                                    OrderNo = task.OrderNo,
                                    TaskTypeName = task.TaskTypeName,
                                    Qty = task.Qty,
                                    ManualHandlerRemark = _AllowSimulateExecute_Rmark
                                };
                                PersonHandlerRecordHandler.SavePersonHandlerRecord(context, record);
                                context.SaveChanges();
                                MessageBox.Show("标记任务强制完成成功!注意:标记强制完成只是更新标记,要想处理完库存,您还需要运行自动模式,让其自动处理库存!");
                                BindData();
                            }
                            else//如果点击“取消”按钮
                            {
                                BindData();
                            }
                            #endregion
                        }
                        else
                        {
                            MessageBox.Show("未找到该任务!");
                            return;
                        }
                    }
                    else
                    {
                        MessageBox.Show("请先选中要标记任务强制完成的行!");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("标记任务强制完成异常:" + ex.Message);
            }
        }
        private void btnDelete_Click_1(object sender, EventArgs e)
        {
            //任务取消
            try
            {
                if (SystemValue.isStartedModel)
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("手动取消任务,需要将模式关闭!");
                    return;
                }
                var _AllowSimulateExecute_Rmark = this.tb_AllowSimulateExecute_Rmark.Text;
                if (string.IsNullOrEmpty(_AllowSimulateExecute_Rmark))
                {
                    MessageBox.Show("请输入取消原因说明!");
                    return;
                }
                var myNotext = "人工取消任务,原因:" + _AllowSimulateExecute_Rmark;
                MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
                DialogResult dr = MessageBox.Show("【取消任务只是将状态变更为取消,并不处理库存,请谨慎操作。确认取消后,还需人工校验下该任务库存是否正确!】,确定要取消任务吗?", "提示", messButton);
                if (dr == DialogResult.OK)//如果点击“确定”按钮
                {
                    using (DbModel context = new DbModel())
                    {
                        var row = dgvPartTask.SelectedRows;
                        if (row.Count > 0)
                        {
                            var cell = row[0].Cells;
                            //var id = cell[0].Value.ToString();
                            var id = cell["Id"].Value.ToString();
                            var partTask = context.Task_Part.FirstOrDefault(x => x.Id == id);
                            if (partTask != null)
                            {
                                //找到主任务
                                var mainTask = context.Task_Main.Where(x => x.Id == partTask.MainTaskId).FirstOrDefault();
                                if (mainTask == null)
                                {
                                    MessageBox.Show("未找到该任务的主任务!");
                                    return;
                                }
                                //找另一个partTask
                                var partTask2 = context.Task_Part.FirstOrDefault(x => x.Id != partTask.Id && x.MainTaskId == mainTask.Id);
                                var mainTaskType = (MainTaskTypeEnum)Enum.Parse(typeof(MainTaskTypeEnum), mainTask.TaskType.ToString());
                                var partTaskType = (DeviceTaskTypeEnum)Enum.Parse(typeof(DeviceTaskTypeEnum), partTask.TaskType.ToString());
                                switch (partTaskType)
                                {
                                    case DeviceTaskTypeEnum.组盘入库:
                                        //判断库存现在在哪里,然后删掉他
                                        var store = context.V_AllStore.Where(x => x.SerialNumber == mainTask.SerialNumber).FirstOrDefault();
                                        if (store != null)
                                        {
                                            var place = context.Base_Station.Where(x => x.Id == store.StationId).First();
                                            StoreHandler.ClearStockByPlaceId(context, place, "人工取消任务");
                                        }
                                        //解绑起点和终点
                                        var place1 = context.Base_Station.Where(x => x.Id == partTask2.SourcePlace).First();
                                        var place2 = context.Base_Station.Where(x => x.Id == partTask2.ToPlace).First();
                                        StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref place1, myNotext);
                                        StationHandler.SetPlaceTaskDoingStatus(false, SysGloble.WCSSystem, ref place1, myNotext);
                                        StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref place2, myNotext);
                                        StationHandler.SetPlaceTaskDoingStatus(false, SysGloble.WCSSystem, ref place2, myNotext);
                                        var place3 = context.Base_Station.Where(x => x.Id == partTask.SourcePlace).First();
                                        var place4 = context.Base_Station.Where(x => x.Id == partTask.ToPlace).First();
                                        StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref place3, myNotext);
                                        StationHandler.SetPlaceTaskDoingStatus(false, SysGloble.WCSSystem, ref place3, myNotext);
                                        StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref place4, myNotext);
                                        StationHandler.SetPlaceTaskDoingStatus(false, SysGloble.WCSSystem, ref place4, myNotext);
                                        //判断堆垛机上现在是否正在执行该任务,如果执行了,就删掉他
                                        var srmPlcTaskId = "";
                                        int deviceId = 0;
                                        if (partTask.DeviceType == (int)(EDeviceType.堆垛机))
                                        {
                                            srmPlcTaskId = partTask.PlcTaskId;
                                            deviceId = (int)partTask.DeviceId;
                                        }
                                        else if (partTask2.DeviceType == (int)(EDeviceType.堆垛机))
                                        {
                                            srmPlcTaskId = partTask2.PlcTaskId;
                                            deviceId = (int)partTask2.DeviceId;
                                        }
                                        if (srmViewDict[deviceId].R_TaskNo.ToString() == srmPlcTaskId)
                                        {//删除堆垛机任务
                                            using (SrmService.SrmServiceClient opcClinet = new SrmServiceClient())
                                            {
                                                var result = opcClinet.SendSrmDelete((int)deviceId);
                                                if (result.result == false)
                                                {
                                                    MessageBox.Show("删除堆垛机任务失败:" + result.resMsg);
                                                    return;
                                                }
                                            }
                                        }
                                        break;
                                    default:
                                        MessageBox.Show("不支持的业务类型");
                                        return;
                                }
                                var changeState = DeviceTaskStatusEnum.已取消;
                                partTask.TaskState = (int)changeState;
                                partTask.TaskStateName = changeState.ToString();
                                partTask.ModifyTime = DateTime.Now;
                                partTask.OperationRemark = "用户取消任务," + _AllowSimulateExecute_Rmark;
                                partTask.ModifyBy = SysGloble.WCSSystem;
                                if (partTask2 != null)
                                {
                                    partTask2.TaskState = (int)changeState;
                                    partTask2.TaskStateName = changeState.ToString();
                                    partTask2.ModifyTime = DateTime.Now;
                                    partTask2.OperationRemark = "用户取消任务," + _AllowSimulateExecute_Rmark;
                                    partTask2.ModifyBy = SysGloble.WCSSystem;
                                }
                                //主任务也要修改为取消
                                mainTask.TaskState = (int)MainTaskStatusEnum.已取消;
                                mainTask.TaskStateName = MainTaskStatusEnum.已取消.ToString();
                                mainTask.FinishTime = DateTime.Now;
                                mainTask.OperationRemark = "用户取消任务," + _AllowSimulateExecute_Rmark;
                                //同时将目标点和起点解除锁定
                                //我想了想,还是别解锁了,万一有别的问题呢?
                                //保存人工处理日志 [EditBy shaocx,2022-05-01]
                                Base_PersonHandlerRecord record = new Base_PersonHandlerRecord()
                                {
                                    MainTaskNo = partTask.MainTaskNo,
                                    HandlerType = "取消任务",
                                    PartTaskId = partTask.Id,
                                    PlcTaskId = partTask.PlcTaskId,
                                    RealSourcePlace = partTask.RealSourcePlace,
                                    RealToPlace = partTask.RealToPlace,
                                    SalverCode = partTask.SalverCode,
                                    SerialNumber = partTask.SerialNumber,
                                    OrderNo = partTask.OrderNo,
                                    TaskTypeName = partTask.TaskTypeName,
                                    Qty = partTask.Qty,
                                    ManualHandlerRemark = _AllowSimulateExecute_Rmark
                                };
                                PersonHandlerRecordHandler.SavePersonHandlerRecord(context, record);
                                context.SaveChanges();
                            }
                            else
                            {
                                MessageBox.Show("未找到该任务!");
                                return;
                            }
                            MessageBox.Show("取消任务成功!");
                            BindData();
                        }
                        else
                        {
                            MessageBox.Show("请先选中要执行的行!");
                        }
                    }
                }
                else//如果点击“取消”按钮
                {
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("取消任务异常:" + ex.Message);
                Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "取消任务异常:" + ex.Message, ex);
            }
        }
        private void btnReset_Click_1(object sender, EventArgs e)
        {
            //任务重发
            try
            {
                var _AllowSimulateExecute_Rmark = this.tb_AllowSimulateExecute_Rmark.Text;
                if (string.IsNullOrEmpty(_AllowSimulateExecute_Rmark))
                {
                    MessageBox.Show("请输入任务重发原因说明!");
                    return;
                }
                if (SystemValue.isStartedModel)
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("手动发任务,需要将模式关闭!");
                    return;
                }
                MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
                using (DbModel db = new DbModel())
                {
                    var row = dgvPartTask.SelectedRows;
                    if (row.Count > 0)
                    {
                        var cell = row[0].Cells;
                        //var id = cell[0].Value.ToString();
                        var id = cell["Id"].Value.ToString();
                        var task = db.Task_Part.FirstOrDefault(x => x.Id == id);
                        if (task != null)
                        {
                            if (task.TaskState != (int)DeviceTaskStatusEnum.已下发)
                            {//增加限制 ã€Editby shaocx,2022-11-04】
                                WZ.Useful.Commons.MessageUtil.ShowError("任务状态必须是'已下发'才能重试发任务!");
                                return;
                            }
                            //判断设备类型
                            DialogResult dr = MessageBox.Show(string.Format("确定要手动重新发送{0}任务,起点:{1},目标点:{2}吗?", task.DeviceName, task.RealSourcePlace, task.RealToPlace), "提示", messButton);
                            if (dr == DialogResult.OK)//如果点击“确定”按钮
                            {
                                var sourcePlce = task.RealSourcePlace;
                                var toPlace = task.RealToPlace;
                                var tbTaskId = task.PlcTaskId;
                                EDeviceType deviceType = (EDeviceType)Enum.Parse(typeof(EDeviceType), task.DeviceType.ToString());
                                switch (deviceType)
                                {
                                    case EDeviceType.堆垛机:
                                        using (var opcClinet = new SrmService.SrmServiceClient())
                                        {
                                            iWareCC.SrmService.SdaResEntity sdaResult = opcClinet.SendSrmTask((int)task.DeviceId, int.Parse(tbTaskId),
                                                sourcePlce, toPlace, (short)ESrmCmd.库内搬运);
                                            if (sdaResult.result)
                                            {
                                                WZ.Useful.Commons.MessageUtil.ShowTips(task.DeviceName + ESrmCmd.库内搬运.ToString() + "命令发送成功!");
                                            }
                                            else
                                            {
                                                WZ.Useful.Commons.MessageUtil.ShowError(task.DeviceName + ESrmCmd.库内搬运.ToString() + "命令发送失败!返回代码:" + sdaResult.resMsg);
                                            }
                                        }
                                        break;
                                    case EDeviceType.RGV:
                                        using (var opcClinet = new RgvService.RgvServiceClient())
                                        {
                                            if (sourcePlce == "1010")
                                            {
                                                WZ.Useful.Commons.MessageUtil.ShowError("站点1010不能发任务!");
                                                return;
                                            }
                                            iWareCC.RgvService.SdaResEntity sdaResult = opcClinet.SendRgvTask((int)EDevice.RGV, Convert.ToInt32(tbTaskId), sourcePlce, toPlace);
                                            if (sdaResult.result)
                                            {
                                                WZ.Useful.Commons.MessageUtil.ShowTips("RGV命令发送成功!");
                                            }
                                            else
                                            {
                                                WZ.Useful.Commons.MessageUtil.ShowError("RGV命令发送失败!返回消息:" + sdaResult.resMsg);
                                            }
                                        }
                                        break;
                                }
                            }
                            else//如果点击“取消”按钮
                            {
                                return;
                            }
                        }
                        else
                        {
                            MessageBox.Show("未找到该任务!");
                            return;
                        }
                        using (DbModel context = new DbModel())
                        {
                            //保存人工处理日志 [EditBy shaocx,2022-05-01]
                            Base_PersonHandlerRecord record = new Base_PersonHandlerRecord()
                            {
                                MainTaskNo = task.MainTaskNo,
                                HandlerType = "任务重发",
                                PartTaskId = task.Id,
                                PlcTaskId = task.PlcTaskId,
                                RealSourcePlace = task.RealSourcePlace,
                                RealToPlace = task.RealToPlace,
                                SalverCode = task.SalverCode,
                                SerialNumber = task.SerialNumber,
                                OrderNo = task.OrderNo,
                                TaskTypeName = task.TaskTypeName,
                                Qty = task.Qty,
                                ManualHandlerRemark = _AllowSimulateExecute_Rmark
                            };
                            PersonHandlerRecordHandler.SavePersonHandlerRecord(context, record);
                            context.SaveChanges();
                        }
                        MessageBox.Show("任务重发成功!");
                        BindData();
                    }
                    else
                    {
                        MessageBox.Show("请先选中要执行的行!");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("任务重发出现异常:" + ex.Message);
            }
        }
        /// <summary>
        /// å…³é—­1015重新扫描
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            using (var opcClinet = new RgvService.RgvServiceClient())
            {
                iWareCC.RgvService.SdaResEntity sdaResult = opcClinet.Write1015ReScan((int)EDevice.RGV, false);
                if (sdaResult.result)
                {
                    WZ.Useful.Commons.MessageUtil.ShowTips("关闭命令发送成功!");
                }
                else
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("关闭命令发送失败!返回消息:" + sdaResult.resMsg);
                }
            }
        }
        /// <summary>
        /// å…³é—­1019重新扫描
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button21_Click(object sender, EventArgs e)
        {
            using (var opcClinet = new RgvService.RgvServiceClient())
            {
                iWareCC.RgvService.SdaResEntity sdaResult = opcClinet.Write1019ReScan((int)EDevice.RGV, false);
                if (sdaResult.result)
                {
                    WZ.Useful.Commons.MessageUtil.ShowTips("关闭命令发送成功!");
                }
                else
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("关闭命令发送失败!返回消息:" + sdaResult.resMsg);
                }
            }
        }
        private void dgvPartTask_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            SolidBrush b = new SolidBrush(this.dgvPartTask.RowHeadersDefaultCellStyle.ForeColor);
            e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), this.dgvPartTask.DefaultCellStyle.Font, b, e.RowBounds.Location.X + 20, e.RowBounds.Location.Y + 4);
        }
        private void label3_Click(object sender, EventArgs e)
        {
        }
        private void panel_DeviceTaskList_Paint(object sender, PaintEventArgs e)
        {
        }
        private void button5_Click(object sender, EventArgs e)
        {
            if (SystemValue.isStartedModel)
            {
                WZ.Useful.Commons.MessageUtil.ShowError("手动库位维护,需要将模式关闭!");
                return;
            }
            //手动库位维护
            SrmStockForm frm = new SrmStockForm();
            frm.ShowDialog();
        }
        private void button7_Click(object sender, EventArgs e)
        {
            //查询RGV&输送线库存
            dataGridView_RgvStore.AutoGenerateColumns = false;
            for (int i = 0; i < dataGridView_RgvStore.Columns.Count; i++)
            {
                if (i == (dataGridView_RgvStore.Columns.Count - 1))
                {//最后一列填充
                    dataGridView_RgvStore.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                }
                else
                {//其他列自动适应宽度
                    dataGridView_RgvStore.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                }
            }
            BindDataForRgvStore();
            //this.dgvPartTask.Columns["CreateTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["IssueTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["FinishTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["AllowSimulateExecute_Time"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            FormHelper.DataGridViewSelfAdaptionWidth(this.dataGridView_RgvStore);
        }
        public void BindDataForRgvStore()
        {
            dataGridView_RgvStore.ClearSelection();   //可消除所有选择的行
            dataGridView_RgvStore.DataSource = null;
            dataGridView_RgvStore.CurrentCell = null; //可消除选择行的行头箭头
            using (DbModel db = new DbModel())
            {
                var storeList = db.V_AllStationStore.Where(x => x.IsRgvStation == true).ToList();
                if (storeList != null && storeList.Count > 0)
                {
                    storeList = storeList.OrderBy(x => x.RgvStationCode).ToList();//重新 å‡åºæŽ’序
                    dataGridView_RgvStore.DataSource = null;
                    dataGridView_RgvStore.DataSource = storeList;
                }
                else
                {
                    //if (dataGridView_RgvStore.Rows.Count > 0)
                    //{
                    //    int i = dataGridView_RgvStore.Rows[0].Cells.Count;
                    //    var cells = dataGridView_RgvStore.Rows[0].Cells;
                    //    for (int j = 0; j < i; j++)
                    //    {
                    //        cells[j].Value = null;
                    //    }
                    //}
                }
            }
        }
        private void dataGridView_RgvStore_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            SolidBrush b = new SolidBrush(this.dataGridView_RgvStore.RowHeadersDefaultCellStyle.ForeColor);
            e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), this.dataGridView_RgvStore.DefaultCellStyle.Font, b, e.RowBounds.Location.X + 20, e.RowBounds.Location.Y + 4);
        }
        private void btn_RgvConfirmFinishTask_Click(object sender, EventArgs e)
        {
            if (SystemValue.isStartedModel)
            {
                WZ.Useful.Commons.MessageUtil.ShowError("手动RGV任务完成确认,需要将模式关闭!");
                return;
            }
            MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
            DialogResult dr = MessageBox.Show("确定要发送任务完成确认吗?", "确认", messButton);
            if (dr == DialogResult.OK)//如果点击“确定”按钮
            {
                try
                {
                    //读取1040上的任务号
                    int taskId = 0;
                    var queryRgv = ((int)EDevice.RGV1040).ToString();
                    var rgv = rgvView.R_RgvForReadCommList.Where(x => x.StationCode == queryRgv).FirstOrDefault();
                    if (rgv != null)
                    {
                        taskId = rgv.R_TaskID;
                    }
                    using (var opcClinet = new RgvService.RgvServiceClient())
                    {
                        //if (!IsNumeric(tBSrmTransTskId.Text.Trim()))
                        //{
                        //    WZ.Useful.Commons.MessageUtil.ShowError("任务号格式错误,必须是数字!");
                        //    return;
                        //}
                        //var taskId = int.Parse(tBSrmTransTskId.Text.Trim());
                        iWareCC.RgvService.SdaResEntity sdaResult = opcClinet.WriteRGV_FinishACK((int)EDevice.RGV, true, taskId);
                        if (sdaResult.result)
                        {
                            WZ.Useful.Commons.MessageUtil.ShowTips("命令发送成功!");
                            //  tB_Srm1SourcePlace.Clear();
                            // tB_Srm1ToPlace.Clear();
                            Log4NetHelper.WriteInfoLog(iWareCommon.Utils.LogType.CCWCFService, "手动RGV任务确认成功,任务号:" + taskId);
                        }
                        else
                        {
                            WZ.Useful.Commons.MessageUtil.ShowError("命令发送失败!返回消息:" + sdaResult.resMsg);
                            Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "手动RGV任务确认失败:" + sdaResult.resMsg + ",任务号:" + taskId);
                        }
                    }
                }
                catch (Exception ex)
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("命令发送出现异常:" + ex.Message);
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "手动RGV任务确认异常:" + ex.Message, ex);
                }
            }
            else//如果点击“取消”按钮
            {
            }
        }
        //查询已完成的设备任务
        private void button17_Click(object sender, EventArgs e)
        {
            //查询设备任务列表
            dgvPartTask_Finished.AutoGenerateColumns = false;
            for (int i = 0; i < dgvPartTask_Finished.Columns.Count; i++)
            {
                if (i == (dgvPartTask_Finished.Columns.Count - 1))
                {//最后一列填充
                    dgvPartTask_Finished.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                }
                else
                {//其他列自动适应宽度
                    dgvPartTask_Finished.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                }
            }
            BindData_dgvPartTask_Finished();
            //this.dgvPartTask.Columns["CreateTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["IssueTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["FinishTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["AllowSimulateExecute_Time"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            FormHelper.DataGridViewSelfAdaptionWidth(this.dgvPartTask_Finished);
        }
        public void BindData_dgvPartTask_Finished()
        {
            List<Task_Part> partList = new List<Task_Part>();
            dgvPartTask_Finished.ClearSelection();   //可消除所有选择的行
            dgvPartTask_Finished.DataSource = null;
            dgvPartTask_Finished.CurrentCell = null; //可消除选择行的行头箭头
            var query_plc_taskNo = this.tb_Query_PlcTaskNo.Text.Trim();
            var query_Salver = this.tb_query_Salver.Text.Trim();
            //取 æœ€åŽä¸€ä¸ªæœªç»“束的任务,然后取前5条已经结束的任务
            var queryState1 = (int)MainTaskStatusEnum.已取消;
            var queryState2 = (int)MainTaskStatusEnum.已完成;
            using (DbModel db = new DbModel())
            {
                List<Task_Main> firstNoFinishedTaskList = new List<Task_Main>();
                if (!string.IsNullOrEmpty(query_plc_taskNo) || !string.IsNullOrEmpty(query_Salver))
                {
                    Expression<Func<Task_Part, bool>> predicate_plc_taskno = a => 1 == 1;
                    Expression<Func<Task_Part, bool>> predicate_query_Salver = a => 1 == 1;
                    if (!string.IsNullOrEmpty(query_plc_taskNo))
                    {
                        predicate_plc_taskno = a => a.PlcTaskId == query_plc_taskNo;
                    }
                    if (!string.IsNullOrEmpty(query_Salver))
                    {
                        predicate_query_Salver = a => a.SalverCode == query_Salver;
                    }
                    partList = db.Task_Part.Where(predicate_plc_taskno).Where(predicate_query_Salver).ToList();
                }
                else
                {
                    //增加 æ˜¾ç¤º ï¼Œæœ€è¿‘已完成的任务,要 æœ€è¿‘30个任务 ã€Editby shaocx,2023-04-03】
                    firstNoFinishedTaskList = db.Task_Main.Where(x =>
               (x.TaskState == queryState1 || x.TaskState == queryState2)
               ).OrderByDescending(x => x.CreateTime).Take(30).ToList();
                    if (firstNoFinishedTaskList == null)
                    {
                        partList = new List<Task_Part>();
                    }
                    else
                    {
                        List<int> mainIdList = new List<int>();
                        foreach (var item in firstNoFinishedTaskList)
                        {
                            if (!mainIdList.Contains(item.Id))
                            {
                                mainIdList.Add(item.Id);
                            }
                        }
                        var partList2 = db.Task_Part.Where(x => mainIdList.Contains(x.MainTaskId)).ToList();
                        //partList.AddRange(partList1);
                        partList.AddRange(partList2);
                    }
                }
                if (partList != null && partList.Count > 0)
                {
                    partList = partList.OrderBy(x => x.MainTaskId).ThenByDescending(x => x.CreateTime).ToList();//重新 å‡åºæŽ’序
                    dgvPartTask_Finished.DataSource = null;
                    dgvPartTask_Finished.DataSource = partList;
                }
                else
                {
                    //if (dgvPartTask_Finished.Rows.Count > 0)
                    //{
                    //    int i = dgvPartTask_Finished.Rows[0].Cells.Count;
                    //    var cells = dgvPartTask_Finished.Rows[0].Cells;
                    //    for (int j = 0; j < i; j++)
                    //    {
                    //        cells[j].Value = null;
                    //    }
                    //}
                }
            }
        }
        private void button18_Click(object sender, EventArgs e)
        {
            //查询设备任务列表
            dataGridView__OutTaskList.AutoGenerateColumns = false;
            for (int i = 0; i < dataGridView__OutTaskList.Columns.Count; i++)
            {
                if (i == (dataGridView__OutTaskList.Columns.Count - 1))
                {//最后一列填充
                    dataGridView__OutTaskList.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                }
                else
                {//其他列自动适应宽度
                    dataGridView__OutTaskList.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                }
            }
            BindData_OutTaskList();
            //this.dgvPartTask.Columns["CreateTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["IssueTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["FinishTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["AllowSimulateExecute_Time"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            FormHelper.DataGridViewSelfAdaptionWidth(this.dataGridView__OutTaskList);
        }
        public void BindData_OutTaskList()
        {
            List<Task_Main> mainList = new List<Task_Main>();
            dataGridView__OutTaskList.ClearSelection();   //可消除所有选择的行
            dataGridView__OutTaskList.DataSource = null;
            dataGridView__OutTaskList.CurrentCell = null; //可消除选择行的行头箭头
            using (DbModel db = new DbModel())
            {
                var queryState1 = (int)MainTaskStatusEnum.已取消;
                var queryState2 = (int)MainTaskStatusEnum.已完成;
                var queryInOutFlag = (int)MainInOutFlagEnum.出库;
                mainList = db.Task_Main.Where(x => x.TaskState != queryState1 && x.TaskState != queryState2
                   && x.InOutFlag == queryInOutFlag
                   ).OrderBy(x => x.TaskSequence).ThenBy(x => x.CreateTime).ToList();
                if (mainList != null && mainList.Count > 0)
                {
                    dataGridView__OutTaskList.DataSource = null;
                    dataGridView__OutTaskList.DataSource = mainList;
                }
                else
                {
                    //if (dataGridView__OutTaskList.Rows.Count > 0)
                    //{
                    //    int i = dataGridView__OutTaskList.Rows[0].Cells.Count;
                    //    var cells = dataGridView__OutTaskList.Rows[0].Cells;
                    //    for (int j = 0; j < i; j++)
                    //    {
                    //        cells[j].Value = null;
                    //    }
                    //}
                }
            }
        }
        private void panel_DeviceTaskList_dgvPartTask_Finished_Paint(object sender, PaintEventArgs e)
        {
        }
        private void btn_TongJi_Click(object sender, EventArgs e)
        {
            //统计
            int store_FDJ = 0;//现有发动机数
            int store_EmptySalver = 0;//空托盘数量
            int store_EmptySalver_TS = 0;//空托盘托数
            int count_In_FDJ = 0;//查询某天入库了多少发动机
            int count_In_EmptySalver = 0;//查询某天入库了多少 ç©ºæ‰˜ç›˜
            int count_In_EmptySalver_TS = 0;//查询某天入库了多少 ç©ºæ‰˜ç›˜æ‰˜æ•°
            int count_Out_FDJ = 0;//查询某天出库了多少发动机
            int count_Out_EmptySalver = 0;//查询某天出库了多少 ç©ºæ‰˜ç›˜
            int count_Out_EmptySalver_TS = 0;//查询某天出库了多少 ç©ºæ‰˜ç›˜æ‰˜æ•°
            int count_ZY_EmptySalver = 0;//查询某天转运了多少 ç©ºæ‰˜ç›˜
            int count_ZY_EmptySalver_TS = 0;//查询某天转运了多少 ç©ºæ‰˜ç›˜æ‰˜æ•°
            //某段时间的统计
            var str_start = this.dateTimePicker_Start.Value.ToString("yyyy-MM-dd" + " " + "00:00:00");
            var str_end = this.dateTimePicker_End.Value.ToString("yyyy-MM-dd" + " " + "23:59:59");
            var start = Convert.ToDateTime(str_start);
            var end = Convert.ToDateTime(str_end);
            int allPlacesCount = 0;
            using (DbModel edm = new DbModel())
            {
                var queryMaterialType_一般物料 = (int)MaterialTypeEnum.一般物料;
                var queryMaterialType_托盘 = (int)MaterialTypeEnum.托盘;
                var queryInOutFlag_In = (int)MainInOutFlagEnum.入库;
                var queryInOutFlag_Out = (int)MainInOutFlagEnum.出库;
                var queryInOutFlag_ZY = (int)MainInOutFlagEnum.转运;
                var allPlaces = edm.Base_Station.Where(x => x.IsSrmStation == true).ToList();
                allPlaces = StationHandler.FindCommonFilter(allPlaces);
                allPlacesCount = allPlaces.Count;
                store_FDJ = edm.V_Store.Where(x => x.MaterialType == queryMaterialType_一般物料).Count();
                store_EmptySalver_TS = edm.V_Store.Where(x => x.MaterialType == queryMaterialType_托盘).Count();
                store_EmptySalver = store_EmptySalver_TS == 0 ? 0 : edm.V_Store.Where(x => x.MaterialType == queryMaterialType_托盘).Sum(x => (int)x.Qty);
                //查询某天入库了多少发动机
                var taskState = (int)MainTaskStatusEnum.已完成;
                count_In_FDJ = edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_一般物料 && x.InOutFlag == queryInOutFlag_In && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Count();
                //查询某天入库了多少托盘
                count_In_EmptySalver_TS = edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_In && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Count();
                count_In_EmptySalver = count_In_EmptySalver_TS == 0 ? 0 : edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_In && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Sum(x => (int)x.Qty);
                //查询某天出库了多少发动机
                count_Out_FDJ = edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_一般物料 && x.InOutFlag == queryInOutFlag_Out && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Count();
                //查询某天入库了多少托盘
                count_Out_EmptySalver_TS = edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_Out && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Count();
                count_Out_EmptySalver = count_Out_EmptySalver_TS == 0 ? 0 : edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_Out && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Sum(x => (int)x.Qty);
                //查询某天转运了多少托盘(注意:只查询去1014位置的)
                count_ZY_EmptySalver_TS = edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_ZY && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end) && x.RealToPlace == "1014").Count();
                count_ZY_EmptySalver = count_ZY_EmptySalver_TS == 0 ? 0 : edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_ZY && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end) && x.RealToPlace == "1014").Sum(x => (int)x.Qty);
            }
            //显示
            //var aa = "\r\n";
            var str = "";
            str += "时间范围: " + str_start + "至" + str_end + " \r\n";
            str += "==================【库存】========================= \r\n";
            str += "现有发动机数: " + store_FDJ + "  \r\n";
            str += "现有空托盘数: " + store_EmptySalver + " \r\n";
            str += "现有空托盘托数: " + store_EmptySalver_TS + " \r\n";
            str += "总库位" + allPlacesCount + ",有发动机或托盘库位" + (store_FDJ + store_EmptySalver_TS) + ",库存占比: " + CSharpHelper.ExecPercent((store_FDJ + store_EmptySalver_TS), allPlacesCount) + " \r\n";
            str += "\r\n";
            str += "==================【入库】========================= \r\n";
            str += "入库发动机数: " + count_In_FDJ + " \r\n";
            str += "入库空托盘数: " + count_In_EmptySalver + " \r\n";
            str += "入库空托盘托数: " + count_In_EmptySalver_TS + " \r\n";
            str += "\r\n";
            str += "==================【出库】========================= \r\n";
            str += "出库发动机数: " + count_Out_FDJ + " \r\n";
            str += "出库空托盘数: " + count_Out_EmptySalver + " \r\n";
            str += "出库空托盘托数: " + count_Out_EmptySalver_TS + " \r\n";
            str += "\r\n";
            str += "==================【转运托盘】========================= \r\n";
            str += "转运空托盘数: " + count_ZY_EmptySalver + " \r\n";
            str += "转运空托盘托数: " + count_ZY_EmptySalver_TS + " \r\n";
            str += "\r\n";
            this.tb_TongJi.Text = str;
        }
        private void checkBox_NowDay_CheckedChanged(object sender, EventArgs e)
        {
            if (this.checkBox_NowDay.Checked)
            {
                dateTimePicker_Start.Value = DateTime.Now;
                dateTimePicker_End.Value = DateTime.Now;
            }
        }
        private void rBOnlyIn_CheckedChanged(object sender, EventArgs e)
        {
            SetModelCheckBoxToSystemValue();
        }
        private void btnSMQZYZTG1_Click(object sender, EventArgs e)
        {
            DobtnSMQZYZTG(EDevice.一号堆垛机);
        }
        private void DobtnSMQZYZTG(EDevice device)
        {
            MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
            DialogResult dr = MessageBox.Show("注意:入库口扫码强制验证通过功能,仅适用于扫码器没有扫到码,但是实际托盘码和堆垛机要执行的任务托盘码一致的情况!如果堆垛机要执行的任务跟实际托盘码不符,请不要点击该按钮,及时联系管理员过来处理。您确定要操作吗?", "确认", messButton);
            if (dr == DialogResult.OK)//如果点击“确定”按钮
            {
                var stationCode = MyExtendHelper.GetRgvStationCodeBySrm(device);
                var srm = FormCC.srmViewDict[(int)device];
                //只有当堆垛机有任务执行时,并且是入库任务的时候才判断
                var realSrmSourcePlace = (int)device + "-" + srm.SrmSourcePlace;
                if (srm.R_TaskNo > 0 && (srm.R_State == (int)ESrmState.取货中 || srm.R_State == (int)ESrmState.取货定位中)
                   && SysGloble.Dict_SpecialPlace_IN.ContainsKey(realSrmSourcePlace))
                {
                    var result = MyExtendHelper.WriteScanValidateACK(false, "入库口扫码强制验证通过", stationCode, srm.R_TaskNo, true, "", "");
                    if (result)
                    {
                        MyExtendHelper.SetSrm_IN_SMQZYZTG(device, true);
                        MessageBox.Show("入库口扫码强制验证通过 æˆåŠŸï¼");
                    }
                    else
                    {
                        MessageBox.Show("入库口扫码强制验证通过 å¤±è´¥ï¼");
                    }
                }
                else
                {
                    MessageBox.Show(device.ToString() + "任务号不是大于0,或者 çŠ¶æ€ä¸æ˜¯ '取货中'或'取货定位中',不允许操作");
                }
            }
            else//如果点击“取消”按钮
            {
            }
        }
        private void btnSMQZYZTG4_Click(object sender, EventArgs e)
        {
            DobtnSMQZYZTG(EDevice.四号堆垛机);
        }
        private void btnSMQZYZTG3_Click(object sender, EventArgs e)
        {
            DobtnSMQZYZTG(EDevice.三号堆垛机);
        }
        private void btnSMQZYZTG2_Click(object sender, EventArgs e)
        {
            DobtnSMQZYZTG(EDevice.二号堆垛机);
        }
        private void btn_WaitPlanDetail_Click(object sender, EventArgs e)
        {
            //查询设备任务列表
            dataGridView_WaitPlanDetail.AutoGenerateColumns = false;
            for (int i = 0; i < dataGridView_WaitPlanDetail.Columns.Count; i++)
            {
                if (i == (dataGridView_WaitPlanDetail.Columns.Count - 1))
                {//最后一列填充
                    dataGridView_WaitPlanDetail.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                }
                else
                {//其他列自动适应宽度
                    dataGridView_WaitPlanDetail.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                }
            }
            BindData_WaitPlanDetail();
            //this.dgvPartTask.Columns["CreateTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["IssueTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["FinishTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["AllowSimulateExecute_Time"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            FormHelper.DataGridViewSelfAdaptionWidth(this.dataGridView_WaitPlanDetail);
        }
        public void BindData_WaitPlanDetail()
        {
            List<Plan_OutTaskDetail> mainList = new List<Plan_OutTaskDetail>();
            dataGridView_WaitPlanDetail.ClearSelection();   //可消除所有选择的行
            dataGridView_WaitPlanDetail.DataSource = null;
            dataGridView_WaitPlanDetail.CurrentCell = null; //可消除选择行的行头箭头
            using (DbModel db = new DbModel())
            {
                var queryState1 = (int)OutTaskDetailStateEnum.等待中;
                var queryState2 = (int)OutTaskDetailStateEnum.缺料;
                mainList = db.Plan_OutTaskDetail.Where(x => x.OutTaskDetailState == queryState1
                    || x.OutTaskDetailState == queryState2
                   ).OrderBy(x => x.TaskSequence).ThenBy(x => x.CreateTime).ToList();
                if (mainList != null && mainList.Count > 0)
                {
                    dataGridView_WaitPlanDetail.DataSource = null;
                    dataGridView_WaitPlanDetail.DataSource = mainList;
                }
                else
                {
                    //if (dataGridView__OutTaskList.Rows.Count > 0)
                    //{
                    //    int i = dataGridView__OutTaskList.Rows[0].Cells.Count;
                    //    var cells = dataGridView__OutTaskList.Rows[0].Cells;
                    //    for (int j = 0; j < i; j++)
                    //    {
                    //        cells[j].Value = null;
                    //    }
                    //}
                }
            }
        }
        private void btnDeleteTask_Click(object sender, EventArgs e)
        {
            //任务强制删除
            try
            {
                if (SystemValue.isStartedModel)
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("手动任务强制删除,需要将模式关闭!");
                    return;
                }
                var _AllowSimulateExecute_Rmark = this.tb_AllowSimulateExecute_Rmark.Text;
                if (string.IsNullOrEmpty(_AllowSimulateExecute_Rmark))
                {
                    MessageBox.Show("请输入任务强制删除原因说明!");
                    return;
                }
                var myNotext = "人工任务强制删除任务,原因:" + _AllowSimulateExecute_Rmark;
                MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
                DialogResult dr = MessageBox.Show("【任务强制删除,并不处理库存,请谨慎操作。确认任务强制删除后,还需人工校验下该任务库存是否正确!】,确定要任务强制删除吗?", "提示", messButton);
                if (dr == DialogResult.OK)//如果点击“确定”按钮
                {
                    using (DbModel context = new DbModel())
                    {
                        var row = dgvPartTask.SelectedRows;
                        if (row.Count > 0)
                        {
                            var cell = row[0].Cells;
                            //var id = cell[0].Value.ToString();
                            var id = cell["Id"].Value.ToString();
                            var partTask = context.Task_Part.FirstOrDefault(x => x.Id == id);
                            if (partTask != null)
                            {
                                //找到主任务
                                var mainTask = context.Task_Main.Where(x => x.Id == partTask.MainTaskId).FirstOrDefault();
                                if (mainTask == null)
                                {
                                    MessageBox.Show("未找到该任务的主任务!");
                                    return;
                                }
                                //找另一个partTask
                                var partTask2 = context.Task_Part.FirstOrDefault(x => x.Id != partTask.Id && x.MainTaskId == mainTask.Id);
                                if (partTask2 != null)
                                {
                                    //解绑起点和终点
                                    var place1 = context.Base_Station.Where(x => x.Id == partTask2.SourcePlace).First();
                                    var place2 = context.Base_Station.Where(x => x.Id == partTask2.ToPlace).First();
                                    StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref place1, myNotext);
                                    StationHandler.SetPlaceTaskDoingStatus(false, SysGloble.WCSSystem, ref place1, myNotext);
                                    StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref place2, myNotext);
                                    StationHandler.SetPlaceTaskDoingStatus(false, SysGloble.WCSSystem, ref place2, myNotext);
                                }
                                var place3 = context.Base_Station.Where(x => x.Id == partTask.SourcePlace).First();
                                var place4 = context.Base_Station.Where(x => x.Id == partTask.ToPlace).First();
                                StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref place3, myNotext);
                                StationHandler.SetPlaceTaskDoingStatus(false, SysGloble.WCSSystem, ref place3, myNotext);
                                StationHandler.SetPlaceLockStatus(false, SysGloble.WCSSystem, ref place4, myNotext);
                                StationHandler.SetPlaceTaskDoingStatus(false, SysGloble.WCSSystem, ref place4, myNotext);
                                //主任务也要修改为取消
                                mainTask.TaskState = (int)MainTaskStatusEnum.已取消;
                                mainTask.TaskStateName = MainTaskStatusEnum.已取消.ToString();
                                mainTask.FinishTime = DateTime.Now;
                                mainTask.OperationRemark = "用户任务强制删除," + _AllowSimulateExecute_Rmark;
                                if (partTask2 != null)
                                {
                                    context.Task_Part.Remove(partTask2);
                                }
                                context.Task_Part.Remove(partTask);
                                //保存人工处理日志 [EditBy shaocx,2022-05-01]
                                Base_PersonHandlerRecord record = new Base_PersonHandlerRecord()
                                {
                                    MainTaskNo = partTask.MainTaskNo,
                                    HandlerType = "任务强制删除",
                                    PartTaskId = partTask.Id,
                                    PlcTaskId = partTask.PlcTaskId,
                                    RealSourcePlace = partTask.RealSourcePlace,
                                    RealToPlace = partTask.RealToPlace,
                                    SalverCode = partTask.SalverCode,
                                    SerialNumber = partTask.SerialNumber,
                                    OrderNo = partTask.OrderNo,
                                    TaskTypeName = partTask.TaskTypeName,
                                    Qty = partTask.Qty,
                                    ManualHandlerRemark = _AllowSimulateExecute_Rmark
                                };
                                PersonHandlerRecordHandler.SavePersonHandlerRecord(context, record);
                                context.SaveChanges();
                            }
                            else
                            {
                                MessageBox.Show("未找到该任务!");
                                return;
                            }
                            MessageBox.Show("任务强制删除成功!");
                            BindData();
                        }
                        else
                        {
                            MessageBox.Show("请先选中要执行的行!");
                        }
                    }
                }
                else//如果点击“取消”按钮
                {
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("任务强制删除异常:" + ex.Message);
                Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "任务强制删除异常:" + ex.Message, ex);
            }
        }
        private void btn_Find_OutTaskRetryToMes_Click(object sender, EventArgs e)
        {
            //查询设备任务列表
            dg_OutTaskRetryToMes.AutoGenerateColumns = false;
            for (int i = 0; i < dg_OutTaskRetryToMes.Columns.Count; i++)
            {
                if (i == (dg_OutTaskRetryToMes.Columns.Count - 1))
                {//最后一列填充
                    dg_OutTaskRetryToMes.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                }
                else
                {//其他列自动适应宽度
                    dg_OutTaskRetryToMes.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                }
            }
            BindData_OutTaskRetryToMesList();
            //this.dgvPartTask.Columns["CreateTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["IssueTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["FinishTime"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            //this.dgvPartTask.Columns["AllowSimulateExecute_Time"].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
            FormHelper.DataGridViewSelfAdaptionWidth(this.dg_OutTaskRetryToMes);
        }
        public void BindData_OutTaskRetryToMesList()
        {
            List<Task_Main> mainList = new List<Task_Main>();
            dg_OutTaskRetryToMes.ClearSelection();   //可消除所有选择的行
            dg_OutTaskRetryToMes.DataSource = null;
            dg_OutTaskRetryToMes.CurrentCell = null; //可消除选择行的行头箭头
            using (DbModel db = new DbModel())
            {
                mainList = db.Task_Main.Where(x => (x.IsNeedOnLine != null && x.IsNeedOnLine == true) && (x.IsOnLine == null || x.IsOnLine == false)).OrderBy(x => x.TaskSequence).ThenBy(x => x.CreateTime).ToList();
                if (mainList != null && mainList.Count > 0)
                {
                    dg_OutTaskRetryToMes.DataSource = null;
                    dg_OutTaskRetryToMes.DataSource = mainList;
                }
                else
                {
                    //if (dataGridView__OutTaskList.Rows.Count > 0)
                    //{
                    //    int i = dataGridView__OutTaskList.Rows[0].Cells.Count;
                    //    var cells = dataGridView__OutTaskList.Rows[0].Cells;
                    //    for (int j = 0; j < i; j++)
                    //    {
                    //        cells[j].Value = null;
                    //    }
                    //}
                }
            }
        }
        private void button19_Click(object sender, EventArgs e)
        {
            //重新通知MES出库
            try
            {
                if (SystemValue.isStartedModel)
                {
                    WZ.Useful.Commons.MessageUtil.ShowError("手动重新通知MES出库,需要将模式关闭!");
                    return;
                }
                MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
                using (DbModel db = new DbModel())
                {
                    var row = dg_OutTaskRetryToMes.SelectedRows;
                    if (row.Count > 0)
                    {
                        var cell = row[0].Cells;
                        //var id = cell[0].Value.ToString();
                        var id = Convert.ToInt32(cell["MesId"].Value.ToString());
                        var task = db.Task_Main.FirstOrDefault(x => x.Id == id);
                        if (task != null)
                        {
                            //判断设备类型
                            DialogResult dr = MessageBox.Show(string.Format("确定要手动重新通知MES出库吗?序列号{0},订货号{1}", task.SerialNumber, task.OrderNo), "提示", messButton);
                            if (dr == DialogResult.OK)//如果点击“确定”按钮
                            {
                                MesRetModel<string> ret = MesService.updateOnlineStatusWithNoTask(task);
                                if (ret.code == 200)
                                {
                                    using (DbModel context = new DbModel())
                                    {
                                        //保存人工处理日志 [EditBy shaocx,2022-05-01]
                                        Base_PersonHandlerRecord record = new Base_PersonHandlerRecord()
                                        {
                                            MainTaskNo = task.TaskNo,
                                            HandlerType = "重新通知MES出库",
                                            PartTaskId = "",
                                            PlcTaskId = "",
                                            RealSourcePlace = task.RealSourcePlace,
                                            RealToPlace = task.RealToPlace,
                                            SalverCode = task.SalverCode,
                                            SerialNumber = task.SerialNumber,
                                            OrderNo = task.OrderNo,
                                            TaskTypeName = task.TaskTypeName,
                                            Qty = task.Qty,
                                            ManualHandlerRemark = "重新推送"
                                        };
                                        PersonHandlerRecordHandler.SavePersonHandlerRecord(context, record);
                                        context.SaveChanges();
                                    }
                                    MessageBox.Show("已重新给MES推送出库成功!");
                                    BindData();
                                }
                                else
                                {
                                    MessageBox.Show("已重新给MES推送出库失败!" + ret.msg);
                                    BindData();
                                }
                            }
                            else//如果点击“取消”按钮
                            {
                                return;
                            }
                        }
                        else
                        {
                            MessageBox.Show("未找到该任务!");
                            return;
                        }
                    }
                    else
                    {
                        MessageBox.Show("请先选中要执行的行!");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("任务重发出现异常:" + ex.Message);
            }
        }
        private void panel_dg_OutTaskRetryToMes_Paint(object sender, PaintEventArgs e)
        {
        }
        private void btn_1019_Click(object sender, EventArgs e)
        {
            CommmonShowAgvStation(sender);
        }
        private void button22_Click(object sender, EventArgs e)
        {
            var cargNo = this.tb_wlm.Text.Trim();
            var ret = WmsRequestHelper.test_getEngineInfo(cargNo);
            //转换后
            MesRetModel2<MesRetProductModel> retModel = JsonConvert.DeserializeObject<MesRetModel2<MesRetProductModel>>(ret);
            this.tb_TongJi.Text = "MES返回:" + ret + "\r\n" +
                "转换后:" + "\r\n" +
                JsonConvert.SerializeObject(retModel)
                ;
        }
        private void button23_Click(object sender, EventArgs e)
        {
            var cargNo = this.tb_wlm.Text.Trim();
            var ret = WmsRequestHelper.test_btjReceive(cargNo);
            //转换后
            MessageModel<string> retModel = JsonConvert.DeserializeObject<MessageModel<string>>(ret);
            this.tb_TongJi.Text = "WMS返回:" + ret + "\r\n" +
                "转换后:" + "\r\n" +
                JsonConvert.SerializeObject(retModel);
        }
    }
}
CC/iWareCC_ASRS/FormCC.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1514 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="Column9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="taskno.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="eqname.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="nexthandel.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="ishandled.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="taskcode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="sourceplace.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="toplace.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="containername.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="filereason.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="isreleased.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="isfinished.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="iscurrent.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="id.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="maintaskid.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn13.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn14.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn15.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn16.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn17.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn18.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn19.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn20.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn21.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn22.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn23.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn24.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn25.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn26.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn29.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn27.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn28.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn30.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn31.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn33.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn34.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn36.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn37.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn38.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn39.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn40.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn35.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn42.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn44.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn48.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn49.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn51.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="RgvStationCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Qty.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="InStoreTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="MesId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column13.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn52.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn53.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn54.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn55.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn56.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn57.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn58.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn59.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn60.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn61.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn62.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="dataGridViewTextBoxColumn63.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AACmpqan//////////+Gte//cKXu/4248f///////////////////////////7/b//+Csvb/kLz2//j/
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////6rP
        /P9HjO3/UJHu/9zw////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //+Qu/f/Rovv/2Kd8P/4////////////////////////////////////xeH//0qO7f9Lje7/0+j/////
        ////////////////////////////////////////////////////////////////////////////////
        ///////////////////0////VpTu/z6E7f+z0/3//////9Pq//8+he3/W5nv/67R+/////////////j/
        ///N5///y+b//8zn///M5v//yeX//+38/////////////5ubm5z/////9fr9/0aG4f8XauP/Sofh//r9
        /P//////////////////////gazo/xNl3v8vdt3/4O76/87f8f/I3fT//f7+//////////7/////////
        //////////////////////////////////////////////////////////////7////+//////7///7/
        /v////////////7////////////+////////////kLbq/x1t5P8oc+D/xdv0////////////////////
        ///+///////////////+////////////////////////////////////////////////////////////
        /////////////////////////////////////////////3im5/8fb+T/MHnj/1uU5P9imeX/YJfk/2GX
        5P9hl+T/YZfk/2SZ5P9NiuL/KnXm/yRw4v+/1fH/////////////////////////////////////////
        /////////////////////////////////////////////////////////////+fx+/88geL/G2zi/5q+
        7P//////hK/p/x9v4/8nd+r/KHHb/9bk9f/k7/r/RIPd/ylz3f8sdd//LXXf/yx13/8qct7/OXva/8rd
        9P//////m5ubnP/////+//7/WJHj/x5x6f9XkeP//f7+//////////////////////+Pten/HG/m/z+D
        4v/s9/3/ap3i/ydv2v9bkd//rsvu/////////////v//////////////////////////////////////
        //////////////////////////////7//////v////////z+/v/////////////+///+////////////
        //+avu3/IHHm/y964v/P4vb///////////////////////7+///////////////+////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////f6vp/yJ06P8xe+j/J3Ll/yRy5P8kcuT/JnHl/yVx5f8lceX/JHHl/yl15f8vfev/KHbi/8TY
        8///////////////////////////////////////////////////////////////////////////////
        ////////////////////////6PL7/0CD4/8gb+T/osLt//j6+/9Ui9b/NHfc/y976f8lceT/udTz/6TD
        6/8ebuP/LHvp/yZx4f8mceL/JnHg/yx45/8gcub/aJvi//////+bm5uc//////////9fluP/HXDo/1eR
        5P/9/v7//////////////////////5O56/8eb+T/R4fj/8zi9v9Eg+H/Jnjr/yR16P8ncNr/xNjx////
        ///+///////////////////////////////////////////////////////////////////////+////
        ////////f6ri/6TF6////////////////////////////6HC7/8fceX/MHrh/9jn+f//////////////
        /////////////9rp9v/r8/r/////////////////////////////////////////////////////////
        //////////////////////////////////////////////////9/q+n/I3Pn/zR75P9Eg+D/R4Tf/0eD
        4P9FhOD/RITg/0SE4P9Ghd//PoDg/y576P8pduL/w9fz////////////////////////////////////
        ///////////////////////////////////////////////////////////////////t9Pv/Q4Ti/x5u
        4/+lw+3///////D3+P/G3fT/NXzh/yNx4v+20fT/k7ns/yFw5P88geL/j7bp/5m86v+aver/UIzh/yZ2
        6f85feD/8/3//5ubm5z//////////1+X5P8dcOj/WJHk//z+/f//////////////////////lbrr/yBv
        5P9MjOT/grDm/y9z2f8vdt7/Lnzq/yJx5f+Isef/////////////////////////////////////////
        //////////////////////////////7/////////7vT7/5O46/8mcN7/MHXc/8Pa9P/6/f7/t9Px/8jc
        8f/T4vD/gq3o/yR05v8yeuH/qMjs/9Li8P/C2fH/v9b0///////O4PT/OXrY/4Sv5///////////////
        /v////7/////////////////////////////////////////////////////////////////////////
        /////////////36r6f8fceb/PIHi/7XU8v/L4vT/xt/1/8Xe9P/G3vX/xt71/9Dj9f+Nt+r/J3Xl/yp1
        4//D2PL/////////////////////////////////////////////////////////////////////////
        //////////////////////////////X5+/9JiOL/IXHj/3in6P+/1/P/w9r1/6zK8f82fuP/InHj/7fR
        9P+Tu+z/HWzj/06N5P////////////////+ZvOr/Gmrg/yVu2P/V7P//m5ubnP//////////X5fk/x5w
        5/9XkOX//f7+//////////////////////+Uuuv/H2/k/0GE4v++1/L/z+D0/7TP7f86fuH/IHLn/32r
        6P/////////+/////////////////////////////////////////////////////////////v//////
        //+yzO3/Jm3V/yl26P8oeOr/SIbe/6zM8f81edv/LnXc/zJ32/80eN//MX3p/zB75/8yeNz/NHfa/yhx
        2/9Pi+D/wdrz/0GA3P8jc+b/L3fe/7DM7//9/v7///7///7/////////////////////////////////
        ////////////////////////////////////////////////////////f6vp/yJy5v80fOT/SIbi/0yJ
        4/9MieH/TIji/0uI4v9LiOL/TYni/0KC4f8ue+j/KnXk/8PY8///////////////////////////////
        ////////////////////////////////////////////////////////////////////////9vn7/0mI
        4v8reOf/MHjg/yx13v8rdd7/Lnbf/zJ75/8kc+T/ttLz/5S77P8dbeP/UI7k/////////////////7HM
        7/9Jhtr/rsvt//j7//+bm5uc/////////v9gl+T/HnDo/1eR5P/9/v7//////////////////////5W6
        6/8fb+T/P4Li/+31/f//////9/z9/0SG4v8ecOb/eafm////////////////////////////////////
        ///////////////////////////////////////////+//3///+10O//OXvb/yh46f8seOb/P4Hg/zZ8
        4/8mdOb/JHLl/yx35P8wfez/MXzq/yd05P8jcuX/J3Tm/z+C4v9Bgd//KXjo/yx87v8ibt3/Y5bc//L2
        +////////v////3/////////////////////////////////////////////////////////////////
        //////////////////9/q+n/InPn/zF75/8lcOH/IW/i/yNw4f8jb+L/I3Dh/yNw4f8ib+H/KXXi/zB9
        6v8qdeP/w9jy////////////////////////////////////////////////////////////////////
        ///////////////////////////////////2+fv/SIjh/yp56P8td+P/JnHj/yZy4v8odOL/MHzo/yZz
        4/+20vP/lLvt/x9w4/8/geH/t9Lx//v+/v//////8fb7/+33+////////////5ubm5z//////////1+X
        5P8ccOf/V5Lk////////////////////////////m77t/x5u4/9Bg+L/8vr9///////7/v3/RYbi/x1w
        5/9zo+b/////////////////////////////////////////////////////////////////////////
        ///+///////////////H2/P/OHzb/yl56v8sd+X/PH/h/2ec5v9youX/VI/i/yx55/8ye+P/ZJrj/2+g
        5f9dluX/NHfe/y156f8pe+v/L3Xc/5e76v/0+f3///////7///////7/////////////////////////
        /////////////////////////////////////////////////////////////3+r6f8gcuf/Nn3k/3Ol
        5/9+rOj/e6rp/3uq6f97qun/e6rp/4Cs6P9fl+T/LHfn/yl24v/B2PP/////////////////////////
        //////////////////////////////////////////////////////////////////////////////b5
        +/9IiOL/JXLl/2ec5P+cwOj/m77o/4ay5/81fOP/JHLi/7fR8/+Uu+3/JXPl/y955/8tdN7/XJLf/7XP
        7///////////////////////m5ubnP//////////YJfk/yNz5/9HiOT/kLbq/5i76f+fwez/oMHs/6XD
        7P9onOT/J3Xm/zp/4v+Tuev/pMPs/5a76/88gOH/IHLp/22f5f//////////////////////////////
        //////////////////////////////////////////////7//v///////v////////+81PD/Lnbd/yl5
        6v81e9//z+T3//////+ewO//IXDl/y954f/T5vj//////4+36/8ndOP/KHrr/zF33P+yze7/////////
        //////7//v////7//v//////////////////////////////////////////////////////////////
        ////////////////////////gq3p/x9x5v89geL/utfx/9Ll8v/M4vL/zeLy/83i8v/N4vL/1+by/5C5
        6v8mdeX/KXXj/8LX8///////////////////////////////////////////////////////////////
        ////////////////////////////////////////9vn7/0iI4v8mc+T/Y5rl/5S77f+Ruu3/ga/p/zV8
        4v8kcuP/uNHz/5a77f8lc+T/MHnl/yl15P8mdOb/KXLd/2OY4P/G2/L/9/r+//////+bm5uc////////
        //9fluT/JXXo/z+C5P8vdt//Im/h/yZy4f8lcuL/JXLi/y125P8xfev/MHzn/ydy4v8kcuH/JXPh/zB7
        6P8kdur/ZJrm////////////////////////////////////////////////////////////////////
        //////////////////////////////////+Vu+n/JXLg/yR05/9qnOP//////5/A7v8gceb/L3ni/9vq
        +f/d6/j/NXnc/yl56/8rdN3/rcrt/////////////v//////////////////////////////////////
        ////////////////////////////////////////////////////////y97z/5q96f92p+n/JnXn/zF7
        5P8yd9z/M3bb/zN32/8zd9v/Mnfa/zJ32/8zd9r/Mnjd/zB86f8pdeP/wtfz///////+/////v//////
        ////////////////////////////////////////////////////////////////////////////////
        ///1+fv/SIfi/yt56P8rduT/JHHj/yRx4/8nc+P/MHzo/ydz4/+40vL/lbvs/yJx4/9ChOT/XZTg/yp0
        3/8peOr/KHXl/yZv2P+Qtef//////5ubm5z8////8fj7/2SY5v8kdef/PoHl/zJ33/8lceD/JnLh/yZy
        4f8ncuD/Lnfi/zJ96f8xe+b/KHTg/yZy4P8ncuD/J3Pg/x5r3v9Tjd///f7+////////////////////
        ///////////////////////////////////////////////////////////////////+//////////n9
        /v9bkuD/JHTn/ypz3//Q4fX/qMfw/yBx5v8ye+H/1uj4/3mn5v8icuf/JXHh/5G35///////////////
        /v////7/////////////////////////////////////////////////////////////////////////
        /////////////+Pu+f9QjN//I2/e/zh83/81euP/KnTg/ydx3/8pc+D/Mnni/zJ65P8tdeH/KXHg/yly
        4P8rcuD/KXLh/x5q2v+70u//////////////////////////////////////////////////////////
        //////////////////////////////////////////////b5+/9KiOH/Knfn/zN64v8zeuH/NXrg/zJ6
        4v8xe+f/JnPi/7fS8/+VvO3/HW3j/1KP5P/x+/3/qsjt/zx+3f8icOP/QYPe/9rq+P//////i5KYnHuv
        8f+KtOf/a6Dn/yJy6P9LiOT/nL/r/6fH7/+qyPD/qcfw/6/K8P9sn+b/JnTl/zt/4f+bvu//rMnw/6nH
        8P+px+//pMTv/7fR8P/8/v7//v//////////////////////////////////////////////////////
        ///////////////////////////////////9/////////8fb8/8tdt7/I3Pm/3el5f+hxO//InLl/zqB
        5P+ixev/O3/f/yRz6P9akuD/+P39/////////////v////7/////////////////////////////////
        ///////////////////////////////////////////////////8/v7/e6fh/x1o2v8teur/LHjm/z+A
        3v+ew+7/ts/y/6XI8P9Mi+L/K3Ld/4Gv6v+uzfD/psjv/6bI7/+lyO//ocXt/9/u9//9//7//f/+//7/
        /v/+////////////////////////////////////////////////////////////////////////////
        ////////8Pb7/0WG4f8kcuT/caPl/7LN7f+wzO7/mb7r/zd84v8jcuP/ttLz/4647P8cbOL/TYvk//z+
        /v//////1ub2/0aD2v+tyu////////////8pUIecLX3z/0KD4f9KieP/I3Xo/1eS4///////////////
        /////////////6DC7f8cbeP/QITh//j//////////////////////////////////v/+//7//v//////
        ///////////////////////////////////////////////////////////////////////////+//7/
        /v////7//////22e4/8hcub/PILi/26i5/8seOf/O4Hl/1OP4v8rd+b/LHXf/8Xb8v////////////7/
        ///+///////+////////////////////////////////////////////////////////////////////
        /////////v////7////q8vv/lrnp/zF23P8peOr/K3Xj/5K66P/d6/f/c6Tk/zF54/8qdeX/YZjl/3qo
        4f9tnt7/bZ/f/26f3v9uoOD/Zpnd/1iO2P+zze3/////////////////////////////////////////
        ///////////////////////////////////////////////////p8vv/QYPj/yp45/9AguH/Tovi/02L
        4/9JiOL/Mnzk/yZz4/+20fL/h7Hn/y103v9KiOH/7PX8//3/////////4vH5/////////////////x1I
        h5wyhfr/L3vm/zF54P8od+r/WJHj/////v+ev+j/caHe/4Ot5P+LsOP/WpLh/yl35v84fuP/e6jk/4ew
        5P+BrOL/b57d/7nS7v////////7///7/////////////////////////////////////////////////
        /////////////////////////////////////////v//////////////xNrz/yx13/8ve+b/OXvf/zF8
        6f8ze+X/M3jg/yd05v9jmuP//v///////v////7//v/////////+//7/////////////////////////
        /////////////////////////////////////////////////////////v//////////////ttLv/zV4
        2/8reer/M3jh/zZ63f8odOT/Knno/yly3/9Nid7/OHrf/yd05v8oc+X/JHHm/yVy5P8ndOf/HWre/6HC
        6///////////////////////////////////////////////////////////////////////////////
        /////////////+jx+v87feD/JXLl/ydz5v8kceb/I3Pk/yRz5f8ndeb/IW7g/6rG7//o8Pj/cqXo/zh7
        4P9XkeT/XpXj/1uU4/9gleL/n8Dp////////////ZnqRnEOL8f8ue+v/M3ri/yh36f9YkeT//////2ye
        5P8YaOD/JHLk/yRx4/8sd+T/MX7q/zJ75/8nc+L/JHHj/yNy5P8ZZt7/mLzq//////////7//v////7/
        /////////////////////////////////////////////////////////v////7////9/////v//////
        ///+/////v/////////8/v//WpPi/yh15/8zeeD/Mnzo/zN75f8ye+T/J3Lh/7PO7///////////////
        //////////7///7/////////////////////////////////////////////////////////////////
        ////////////////////////////////////////tdLv/zB43/8te+z/Lnrn/zF64/9Pi+D/rMnt//H8
        +v9Tj+H/J3fq/zl93/9Hg9n/P3/c/zF75/8mcuP/rsrq////////////////////////////////////
        ////////////////////////////////////////////////////////4e35/2Ka5P9mnOb/ap3m/2ic
        5v9nm+X/ZZnl/2ea5P9ChN//tdLy/9jo9v8wd97/Lnnm/yRy5P8jceP/I3Hk/yZz5f8ib9r/tc/u////
        //+bm5uclMD5/yJy5v8yfOf/KXbo/1eR5P//////b57j/yBr3f8vdt7/MHfe/zF54f8xfer/MXvl/zB3
        3/8vd97/LXbf/x5q2f+ZvOr//////////v//////////////////////////////////////////////
        ///////////////////////////+//7///////////////////////////////////+rye3/JXLi/zJ7
        5P8zfOf/Mnvk/yt45f9HhuH/9/z9////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////+Wuuj/eKbm/4Wu
        6P+Drun/PYDg/y176P8xeuT/N3rf/2ie5v+QuOr/fann/zuA4v8icub/dqbn/+709/+00O7/Lnbk/yRx
        4/+tyer/////////////////////////////////////////////////////////////////////////
        //////////////////+qx+z/VpHi/4i17P+lxuz/t9Pw/8fg9//c7Pj/5fL7/2md5P96qOj/hbDn/yVz
        5v8zfOb/SIXg/0uI4f9IhuD/M3vj/yJ06f9kmeL//////5ubm5zx+v//OH3d/yt66v8nd+n/V5Dk////
        ///X5vf/wNn0/83i9//W5ff/f6zp/yJx5f87geL/vNf0/9Pk9//O4ff/vNXz/+Xw+f///////v/+///+
        //////////////////////////////////////////////////////////////7////+///////+/+Xu
        +P+cvuz/pcbw/67L8f+10fL/uNLy/5m/7v8yeeH/Lnvp/zB96/8vfOn/Knfl/1WQ4v+31PL/tdHy/7PP
        8f+ox/D/o8Tv/6XE7P/0+f3/////////////////////////////////////////////////////////
        /////////////////////////////1mR4v8aauH/JXPj/yZz4/8weeX/MXzo/zF76P8ye+X/KXXl/yNy
        5P8nceD/Mnnj/yNy5v+CrOr//////8nd8/8rduL/JHHj/63J6v//////////////////////////////
        /////////////////////////////////////////////////////////////3Sl5f8ebeH/KXPh/y1z
        3f8xdt7/NHng/z1/3v9EhN//NHri/yx14v80ed7/K3fn/0yL4//p9f3/8vj9/+v1/P9eluP/I3Ho/zV7
        3v/4/v//m5ubnP////+Breb/InLk/yV57P9fluX/zeD1/6/K7v/C1/L/xNnz/8ja8/94p+f/JXPl/zyB
        4P+xzvH/xdrz/8PY8//E2vP/rcnu/8Ta8////////v//////////////////////////////////////
        ////////////////////////////////////////x9vy/x9r2/8mcuH/KXTf/yt03v8qdN7/Lnfg/zR7
        4/8ufu7/LX/w/y1/8f8xfer/Mnnj/yt03v8sdN//KnXf/ydz4P8hb+D/N3vb/+fy/P//////////////
        ////////////////////////////////////////////////////////////////////////YZfj/yhz
        4v80e+T/M3vi/y923/8ze+X/Mn3o/zJ54P8vduD/LXXe/y103P8yeeL/JHPm/3+r6f//////xdnz/yt2
        4v8kceP/rcnq////////////////////////////////////////////////////////////////////
        ///////////////////s8/n/PoDc/yt46f8ye+P/NHri/ypz3v8lb93/LHXh/zB44P8vfOr/L3nk/zh8
        3/8td+f/Q4Ti/9Tm9v///////////4St5/8cZ9j/ZZrg//b+//+bm5uc/////9Lk9f8weN//JXfs/16W
        5/+QuOn/HGnb/ydz4f8qdOD/KXTg/y534/8yfer/MHvm/yp04f8pdOD/KXPh/ylz4f8ZZtv/g67o////
        /////////v//////////////////////////////////////////////////////////////////////
        ///H2/P/IGzc/yRy4/8kceP/JXHj/yZy4f8mceP/JXHi/yx24/8wfez/MHzq/yp04v8mceL/JXHj/yVx
        4/8lceP/JXHi/yBv4v84e9z/6PL7////////////////////////////////////////////////////
        //////////////////////////////////92puX/JXDf/ytz4P+Arur/w9z2/zuA4/8lcuP/g7Dr/9Tj
        9v/F2/D/r87u/0KE4P8fb+b/gq7q///////M3/T/LHbi/yVx4v+syOr/////////////////////////
        //////////////////////////////////////////////////////////////L3+/94puL/J3Pg/yx4
        5/9KiOD/qsnr/6/J6f9hl+H/K3bj/yZ15/9jmOL/fKvo/yp25f8ueeP/N3rd/3qn5P/b6ff/vtft/6zK
        7f/+/////////5ubm5z//////v///2KY4/8kdOj/P4Pj/2ef4/8kb97/JHLi/yRy4f8iceH/K3bk/zJ+
        6v8xe+f/JXLj/yRx4f8kceH/JXHi/xhn3P+Dr+j///////7/////////////////////////////////
        /////////////////////////////////////////////9nm9v9voeP/g63j/4mw4f+IsOL/iK/i/4iw
        4v+Ns+H/YJXf/yp36P8we+P/dKPg/4yy4f+IsOL/h7Di/4iw4v+Jr+P/e6fk/32q5v/u9vz/////////
        /////////////////////////////////////////////////////////////////////////////8jc
        8v8yeN3/KHjo/1CM4v+EsOn/OX7j/yt25f9hmOT/jbTp/32q5f+VvOv/VZDh/yV05/9RjOL/hq7o/2ud
        5P8weeX/JXLj/63J6v//////////////////////////////////////////////////////////////
        //////////////////////////////j9//9fleD/JHLm/y124P/B2fP/7fX6/0KC3/8odur/Mnfe/9jo
        9/+Tuuz/JHLk/zF55P8pdeb/JHHi/zl83P+Tuer/9/z+////////////m5ubnP//////////pMPs/yNy
        4/8qeOf/VY/i/5C36v+SuOz/kbfs/5a67P9hl+T/KHbl/zh+4v+Gser/k7ns/5C36/+Rt+z/g63m/7fR
        7////////////////////////////////////////////////////////////////////////v//////
        ///+/v////////////////////////////////////////////+iw+//IHHk/zF54f/Y6Pj/////////
        //////////////////////////////7/////////////////////////////////////////////////
        //////////////////////////////////////7//////4Su5v8lcuP/LXnp/yZz4v8ve+f/MHzq/yl2
        5f8icuT/HG3i/1GP4f9QjN//KHjr/yp35f8jcuP/KHTk/y586v8kceH/q8jq////////////////////
        /////////////////////////////////////////////////////////////////////////////9fm
        9v81et3/JXXp/02J4P+vz+z/QYHe/xxp3f+Rt+j//////4iy6f8jceP/PoHj/0iH3v8mcuH/KXjp/yhy
        4f9Egtv/ts/t//////+bm5uc///////////X5/b/NHrf/yV37P9NiuH/+f///////////////////5m9
        7P8bbuT/QYPh//H5/v////////////////////////////7////+////////////////////////////
        //////////////////////////////////////////7//////v//////////////////////////////
        /////////////5u+7/8hceb/MXnh/9Hi9v/////////////////////////+////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////4u75/zt/3v8seef/NHvi/zV74v8wd9//MHff/zB33/8ncd7/UI7f/0mG2/8qdN//MHff/y93
        4P8wd9//MHff/yNs2f+bv+z/////////////////////////////////////////////////////////
        //////////////////////////////7///////7//////4u05/8kcuT/JHHk/4ax5//c7fn/b57f/+z2
        +///////h7Lq/x1t5P9SkOX/4fD5/4qx5v8udtz/JXXn/zJ33P/J3fT//////5ubm5z///////////n8
        /f9SjuL/IHHl/x5q2f+Jr+L//v79////////////j7Tp/x1v5v88f+P/4e76////////////////////
        //////////////7/////////////////////////////////////////////////////////////////
        ///+///////////+////////////////////////////////////////nL/u/yFx5v8xeuL/0OL2////
        //////////////////////////////7////+////////////////////////////////////////////
        ///////////////////////////////////+/////v//////////////ibLp/yRx4v8sdeP/hbLs/83f
        9v/G2/X/xdv1/7nS8P/C2fP/y9/2/8Xb9f/G2/X/xdv1/8Xb9f/F2/X/wdn0/+Dt+v//////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////5fD5/zx/3v8peer/Imzb/5W66P/+//7///////////+FsOr/HW3j/1CM4//8/////////7TP
        8P8ydNf/m77r////////////m5ubnP///////////////2ye4P9Hhdz/pcbt/9bl9v/+/v7////+////
        //+Aq+b/E2Xc/yZw2//T4/b/////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ///+//////////////+NtOj/F2fe/yJu3P/F2/T/////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ///////////////////X5/f/MHff/x1q3/9Wjtv/9/v8////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////fKnm/x1p2v9RjN//qMbr//7/
        /v////7//////3Gi5v8QYtv/O37e//D2+////////////9Tk9v/y+f3///////////+bm5uc////////
        ////////xtrx/+Tx+v///////////////v///v7//////7nT8v+Ls+r/jbXr/+Pt+f//////////////
        ////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////7////+/////////7LM6/9wn9//dKLg/9bl
        9f//////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////v+//9lmN3/gazm/9Lj
        9v/5/P7////+//7/////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ///////////////////D2PH/jbXl//f7/f///////f//////////////wdbw/56+6v+px+z/9vr7////
        //////7//////////////////////5ubm5z////////////////////////////////9/////v//////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////v//////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////f7+/+71+v/////////////////+////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////+
        ///+/////////////////////////////////////v////3/////////////////////////m5ubnP//
        /////////////////v///////v/+//7//v///////v/////////////////+/////v//////////////
        ////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////+//7///////7////+////
        ////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////+/v7/////////
        ///+/////v////7////+////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////+///////+//3////+//////////7////+//////////7/
        //////////////////////////////////+bm5uc////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////+////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////5ub
        m5z/////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////m5ubnP//////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //+bm5uc////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////5ubm5z/////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////mpuanOni2P/g1sX/4NjH/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DX
        yP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DX
        yP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DX
        yP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DX
        yP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DX
        yP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DX
        yP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DX
        yP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NfI/+DX
        yP/g18j/4NfI/+DXyP/g18j/4NfI/+DXyP/g18j/4NjI/+Tbz/+WlpOcqYU//4pZA/+NXwv/jl4M/45e
        DP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45e
        DP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45e
        DP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45e
        DP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45e
        DP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45e
        DP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45e
        DP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45e
        DP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/45eDP+OXgz/jl4M/41e
        DP+NXgr/m2oY/5aWk5yviD3/kV8B/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5Vk
        Cv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5Vk
        Cv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5Vk
        Cv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5Vk
        Cv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5Vk
        Cv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5Vk
        Cv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5Vk
        Cv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lWQK/5Vk
        Cv+VZAr/lWQK/5VkCv+VZAr/lWQK/5VkCv+VZAr/lmQK/5ZjCP+jbxX/lpaTnK6IQP+TYAT/lWYM/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lGQM/6NvGP+WlpOcrok//5JfBP+VZQz/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQv/oXAX/5aYk5yuiUD/kmAE/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlC/+hcBj/lpiTnK6JQP+SYAT/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUL/6FwGP+WmJOcrolA/5Jg
        BP+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQv/oXAY/5aYk5yuiUD/kmAE/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlC/+hcBj/lpiTnK6J
        QP+SYAT/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUL/6FwGP+WmJOcrolA/5JgBP+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQv/oXAY/5aY
        k5yuiUD/kmAE/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlC/+hcBj/lpiTnK6JQP+SYAT/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUL/6Fw
        GP+WmJKcrolA/5JgBP+VZQz/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5Vl
        Df+VZQ3/lWUN/5VlDf+VZQ3/lWUN/5VlDf+UZQv/oXAY/5aYk5yshTn/kFsA/5NhBP+TYQX/k2EF/5Nh
        Bf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5Nh
        Bf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5Nh
        Bf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5Nh
        Bf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5Nh
        Bf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5Nh
        Bf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5Nh
        Bf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5Nh
        Bf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5NhBf+TYQX/k2EF/5Ng
        Av+hbBD/mJiVnLOUWv+XbCH/mXEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5px
        Kf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5px
        Kf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5px
        Kf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5px
        Kf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5px
        Kf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5px
        Kf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5px
        Kf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/mnEp/5px
        Kf+acSn/mnEp/5pxKf+acSn/mnEp/5pxKf+acSn/m3Eo/6Z8N/+am5uc+fj2//Xz7//18/D/9vPw//bz
        8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz
        8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz
        8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz
        8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz
        8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz
        8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz
        8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz
        8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz8P/28/D/9vPw//bz
        7//28/D/+Pb0/5ubm5z/////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////m5ubnP//////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //////////////////+bm5uc////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////5ubm5z/////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////m5ubnP//////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////+bm5uc//////7/
        ///////////////////5/v//+f3///n+///5/v//+f7///n+///2/P7/8fn8//D5/f/w+f3/8Pn9//D5
        /f/w+f3/8fn9/+/4/P/p9fr/6PT6/+n0+v/p9Pr/6fT6/+n0+v/p9Pr/6fX6/+fz+v/i8Pj/4/D4/+Pw
        +P/j8Pj/4/D4/+Pw+P/j8Pj/4/D4/+Lx+P/Y6/n/0+f6/9Pn+v/T6Pr/0+j6/9Po+v/T5/r/0+j6/9Po
        +v/U5/r/0+f6/8vh+f/I3/r/yOD6/8jg+f/I4Pr/yOD6/8jg+f/I4Pn/yOD5/8jg+v/I4Pr/yOD6/8ff
        +f+92ff/vtj3/77Z9/++2ff/vtj3/77Y9/++2Pf/vtn3/77Z9/++2ff/vtj3/77Y9/++2Pf/vtj3/77Z
        9/++2ff/vtn3/77Z9/++2Pf/vdj4/7fU9P+10/T/ttP0/7bT9P+20/T/ttP0/7bT9P+20/T/ttP0/7bT
        9P+20/T/ttP0/7bT9P+20/T/ttL0/7jU9f+92Pj/vtj3/77Z9/++2Pf/vtj3/77Y9/++2ff/vtn3/77Z
        9/++2ff/vtn3/7/Y9//G3vn/yOD6/8jg+v/I3/r/yeD5/9Dl+v/T6Pr/1Of6/9zt+f/j8fj/5vL5/+r1
        +//5/f7//////////////////////5ubm5z//////f/+///////5/v7/kbvw/1CT7f9Ulu7/VZfu/1WX
        7v9Vl+7/Vpfu/1GU7f9KkOv/S5Dr/0yQ6/9MkOv/TJDr/0uQ6/9Mkev/So/r/0OK6f9Ciuj/Q4rp/0OK
        6f9Diun/Q4rp/0OK6f9Ei+n/QYnn/zuF5f88heb/PIXm/zyF5v88heb/PIXm/zyF5v88heb/PYXm/zaC
        6P8ygen/MoHp/zOB6f8ygen/MoHp/zOB6f8zgen/MoHp/zOB6f8zgen/LH7r/yt96/8sfev/LH3r/yx9
        6/8sfev/LH3r/yx96/8sfev/LH3r/yx96/8sfev/K33r/yZ57P8meez/Jnns/yZ57P8meez/Jnns/yZ5
        7P8meez/Jnns/yZ57P8meez/Jnns/yZ57P8meez/Jnns/yZ57P8meez/Jnns/yZ56/8leez/Infr/yF3
        6/8hd+v/IXfr/yF36/8hd+v/IXfr/yF36/8hd+v/IXfr/yF36/8hd+v/IXfr/yF36/8hduz/Infr/yZ6
        7P8meez/Jnns/yZ57P8meez/Jnns/yZ57P8meez/Jnns/yZ57P8meez/Jnnr/yp87P8sfev/LH3r/yp9
        6/8rfev/MIDq/zKB6f8xger/OIPm/zyG5f8/iOf/RYvq/1GT7P+PvPD/9Pr9////////////m5ubnP//
        ////////9Pr9/2uk7f8dcuv/Infx/yR47/8keO7/JHju/yR47v8kee//I3nv/yV67/8lefD/JXrv/yV6
        7/8leu//JXrw/yV57/8meu//J3rx/yZ78P8me/D/Jnvw/yZ78P8me/D/Jnvw/yZ78P8ne/D/KHzw/yh8
        8P8ofPD/KHzw/yh88P8ofPD/KHzw/yd88P8ofPD/KX3w/yp98P8pfPD/KX3w/yl98P8pffD/KXzw/yl8
        8P8pffD/KX3w/yp97/8qffD/K33w/yp98P8qffD/Kn3w/yp98P8qffD/Kn3w/yp98P8qffD/Kn3w/yp9
        8P8rffD/K37w/yt+8P8rfvD/K37w/yt+8P8rfvD/K37w/yt+8P8rfvD/K37w/yt+8P8rfvD/K37w/yt+
        8P8rfvD/K37w/yt+8P8rfvD/K37w/yp98P8sf/D/LH/v/yx/7/8sf+//LH/v/yx/7/8sf+//LH/v/yx/
        7/8sf+//LH/v/yx/7/8sf+//LX/v/yt/7/8rf/D/K37w/yt+8P8rfvD/K37w/yt+8P8rfvD/K37w/yt+
        8P8rfvD/K37w/yt+8P8rfvD/K33w/yt+7/8rfu//Kn3w/yp98P8qfe//KX3v/yl98P8pfe//J3zw/yd7
        8f8mevD/IXnv/xpx6/9kn+v/9Pr9//////+bm5uc/////////v90qu3/HHLs/yt+8P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1+7/8tfu//Ln/u/y1+7/8tf+//LX/v/y1/7/8tf+//LX/w/yx/7/8tf+//LX/v/y1/
        7v8tf+7/LX/u/y1/7v8tf+7/LX/u/y1/7v8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LH/v/yx/
        7/8tf+7/LX/v/yx/7/8sf+//LH/v/yx/7/8sf+//LH/v/yx/7/8tf+//LH/v/y1/7/8sf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8sfvD/LX7w/yx+8P8sfvD/LX7w/y1+
        8P8tfvD/LH7w/yx+8P8sfvD/LX7w/y1+8P8tfvD/LX7w/yx+8P8sfvD/LH7w/y1+8P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8sfvH/LX/v/y1/
        7/8tfu//LX7w/yx+8P8tfvD/LX7w/y1+8P8sfvD/LH7w/yx+8P8sfvD/LX7w/yx+8P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8ufu//LX/v/yx/7/8tf+//Ln7v/y1+8P8tf+//LH7w/xly6/+NuvD//////5ub
        m5z/////q830/x906/8rfvD/LX/w/y5+7/8sf+//LX7v/y1+7/8tfu//LX/v/yx/7/8tf+//LX7w/y1+
        8P8tfvD/LX7w/y1+7/8tfvD/LX7w/y5+7v8ufu//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tfu//LH7w/y1+7/8tfu//Ln7v/y5+7/8ufu//Ln7v/y5+
        7/8ufu//Ln7v/y1/7/8sfvD/Ln/v/y1+8P8tfvD/LX7w/y1+8P8tfvD/LX7w/y1+8P8tfvD/LX7w/y1+
        8P8tfvD/LX7w/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8sf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yx/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1+7/8tf+//LX/v/y5+7/8uf+7/LX7w/y1+8P8tf+7/LH7w/y5/
        7/8tf+//LH7w/y1/7/8tfu//Jnvw/zWD6v/z/f//m5ubnP////9Jj+r/Innv/y1/8P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8sf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/8P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yx/
        8P8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LH/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf/D/LX/v/y1/7/8tf+//LX/v/yx/7/8tf+//HXTr/7LZ
        //+bm5uc0Ov//yJ37P8rfvD/LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8hd+7/drH//5ubm5yUx///HXXt/yx/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/w/yd7
        8P9RnP7/m5ubnHWz//8hd+7/LX7w/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8uf+7/Kn3x/0GR/f+Zm5ucaqv//yN48P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8sfu//OIz//5aampxlqP//I3rv/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yx+7/83jP//lpqanGWn//8jeu//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LH7v/zeM//+WmpqcZaj//yN67/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8sfu//N4z//5WZmpxkp/7/I3nw/y1/
        7/8tf+//LoDv/yV57v8gduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF2
        7P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF2
        7P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF2
        7P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF2
        7P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF2
        7P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF2
        7P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF2
        7P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8hduz/IXbs/yF27P8gduz/JXnt/y5/
        7/8tf+//LX/v/yx+7/83jP//kpiZnF+j/P8levD/LX/v/yx+7/8meu7/babv/5vB8f+UvvH/lL7x/5S+
        8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+
        8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+
        8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+
        8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+
        8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+
        8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+
        8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5S+
        8f+UvvH/lL7x/5S+8f+UvvH/lL7x/5rB8f9wqe//KHvt/yx+8P8tf+//LH7v/zeM//+SmJmcXqP8/yV6
        8P8tf+//LH/v/x517P+21Pb/////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////77Z
        9P8keOv/K37w/y1/7/8sfu//N4z//5KYmZxeo/z/JXrw/y1/7/8sfu//IHbs/7DP9f//////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////t9T0/yR46/8sfu//LX/w/yx+7/83jP//kpiZnF6j
        /P8levD/LX/v/yx/7/8fdez/sM/0////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //+31PP/JHjq/yt+8P8tf+7/LH7v/zeM//+SmJmcXqP8/yV68P8tf+//LX/v/x517P+20/X/////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////73Z9P8jeOv/K37w/y1/7/8sfu//N4z//5KY
        mZxeo/z/JXrw/y1/7/8tfvD/IXfu/5O98P/W5/b/zuP2/87k9v/O5Pb/zuP2/87j9v/P4/b/zuP2/87k
        9v/O4/b/zuP2/8/j9v/O5Pb/zuT2/87j9v/O5Pb/zuP2/87j9v/P4/X/z+P2/87j9v/O5Pb/zuP2/8/j
        9v/O4/b/zuP2/87j9v/O5Pb/zuT2/87k9v/O5Pb/z+P2/8/j9v/P4/b/zuT2/87k9v/O5Pb/zuT2/87j
        9v/O4/b/zuP2/87k9v/O5Pb/zuT2/87j9v/O4/b/z+P2/8/k9v/P4/b/zeP2/87k9v/P4/b/z+P2/8/k
        9v/P5Pb/z+T2/87k9v/O4/b/zuT2/87k9v/O4/b/zuT2/87j9v/O4/b/z+P2/8/j9v/P4/b/zuT2/87k
        9v/O4/b/z+P2/87k9v/O4/b/zuP2/87k9v/P5Pb/zuP2/87j9v/P5Pb/zuP2/87k9v/O4/b/zuP2/87j
        9v/O5Pb/zuT2/87k9v/O4/b/z+P2/8/j9v/O4/b/z+P2/8/j9v/O5Pb/z+P2/87j9v/O4/b/zuP2/87j
        9v/O4/b/z+P2/87k9v/O4/b/z+P2/87j9v/O5Pb/zuT2/87j9v/P4/X/zuT2/87j9v/O4/b/z+T2/8/j
        9v/V5/b/l8Hw/yZ57P8sfu//LX/v/yx+7/83jP//kpiZnF6j/P8levD/LX/v/y1/7/8sf/D/Ln7s/zJ/
        6P8wfun/MH7p/zB+6f8wf+n/L37o/y9+6f8vfun/L37p/y9+6v8wfun/MX/o/zB+6f8wfun/MH7p/zB+
        6f8wfun/MH7q/zB+6f8vfun/L37p/y9+6f8vfun/MH7p/zB+6P8wfun/MH7p/zB+6f8wfun/MH7p/zB+
        6f8vfun/MH7p/zB+6f8vfun/L37p/y9+6f8vfun/L37p/y9+6f8vfun/L37p/y9+6f8vfun/L37p/zB+
        6P8vfun/L37p/zF+6P8wfun/MX7p/zF+6f8vfun/L37p/y9+6f8vfun/L37p/y9+6f8vfun/L37p/y9+
        6f8vfun/L37p/zB+6f8vfun/MX7o/y9+6f8vf+j/MH7p/zF+6f8wfun/MH7p/zB+6f8wfun/MH7o/zB+
        6f8vfuj/MH7q/zB+6f8vfun/L37p/y9+6f8vfun/L37p/y9+6f8vfun/L37p/y9+6f8wfun/L37p/zB+
        6v8vfur/MH7p/zB+6P8wf+j/MH7p/y9+6f8vfun/L37p/y9+6f8wfun/MH/o/y9+6f8wf+j/MH7p/zB+
        6f8wfun/MX7o/zB+6f8wfur/L37p/zB+6P8vfun/MH7p/zF/6P8vfuz/LX7w/yx/7/8tf+//LH7v/zeM
        //+SmJmcXqP8/yV68P8tf+//LX7w/y5/7/8qffD/KX3w/yl98P8pffD/KX7w/yV77/8dde3/HXXt/x51
        7P8edez/H3bs/yl98f8pffH/KX3w/yl98P8pffD/KX3w/yp98P8qffD/JXrv/x517P8edez/HnXs/x51
        7P8gdu7/KX3x/yl98f8qffD/KX3w/yl98P8pffD/Kn3w/yF37/8dde3/HnXt/x517P8edez/HnXs/x51
        7P8edez/HnXs/x517P8edez/HnXs/x517P8edez/HnXt/x117P8edez/I3nu/yp98P8qffH/Kn3w/yF4
        7f8edez/HnXs/x517P8edez/HnXs/x517P8edez/HnXs/x517P8edez/HnXs/xx07v8cdO3/H3bu/yV6
        8v8pffH/KX3w/yl98P8pffD/KX3w/yl+8P8offD/IHXu/x917f8edez/HnXs/x517P8edez/HnXs/x51
        7P8edez/HnXs/x517P8edez/HnXs/x517P8dde3/HnTt/x517P8mevD/Kn3x/yp98P8ofPH/H3bt/x51
        7P8edez/HnXs/yZ67/8qffH/Kn3w/yl98P8pffD/KX3w/yl98P8pffH/KX3x/yB27f8edez/HXXu/x11
        7f8fde7/KHzx/yt98P8tf/D/LX7w/yx+7/8sfu//N4z//5KYmZxeo/z/JXrw/y1/7/8tf+//LX/v/y5/
        7/8tf+//LX/v/y1/7/8meu7/T5Pt/7fU9f+41PT/t9T0/7rV9P+hx/L/MIDu/yp97/8tf+//LX/v/y1/
        7/8tf/D/LX/v/yN57/9Yme7/utX0/7fU9P+31PT/u9X0/5C88f8oeu7/LH7w/y1/7/8tf+//LX/v/yx+
        7/8oeuz/iLbv/7vW9P+31PT/t9T0/7fU9P+31PT/t9T0/7fU9P+31PT/t9T0/7fU9P+31PT/t9T0/7fU
        9P+31PT/t9T0/7zW8/95r/H/JHnu/yx+7/8oe+3/jrvy/7vV9P+31PT/t9T0/7fU9P+31PT/t9T0/7fU
        9P+31PT/t9T0/7jU9P+w0PT/o8j2/5W/8P9rpez/NIHq/yJ37f8tfvD/LX/v/y1/7/8tf+//Kn3v/zSD
        6/+kyfL/utX0/7fU9P+31PT/t9T0/7fU9P+31PT/t9T0/7fU9P+31PT/t9T0/7fU9P+31PT/t9T0/7fU
        9P+41PT/utX0/1ia7/8kee7/Kn3v/zKB7f+oy/L/udX0/7fU9P+61fT/X57u/yV57v8tfu//LX/v/y1/
        7/8tf+//LX/v/yx+8P8oeuz/kr3x/7vV9f+31PX/udX0/67O8v85hu3/KXzw/yx/7/8tfvD/LX/v/yx+
        7/83jP//kpiZnF6j/P8levD/LX/v/y1/7/8tf+//LX/v/yx/7/8tf+//LX7v/x507v+Cs+7/////////
        //////////////////9Jj+r/JXrv/y1/8P8tf/D/LX/w/y1/7/8tf+//HnTt/5O+8f//////////////
        ////////5fL7/zOB6v8pfPD/LX/v/y1/8P8tf/D/LH7w/yR36//A2vT/////////////////////////
        /////////////////////////////////////////////////////////////6nN9/8ede3/K37w/yV5
        7P/L4Pn/////////////////////////////////////////////////////////////////////////
        ///U5/j/Xp3r/yB27P8sf/D/LX/w/yx+8P8oe/D/OoTq/+73+v//////////////////////////////
        ////////////////////////////////////////////////////////dKvx/x927v8pfPD/NoTt//P5
        /P////////////////9+su//H3Xs/yt/8P8tf+//LX/v/y1+8P8tf/D/IXfv/1SW7P//////////////
        ///////////+/0CK7P8ne+//LH/v/y1/7/8sf+//LH7v/zeM//+SmJmcXqP8/yV68P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8sf+//H3bs/6PI9P/////////+/////v////7//////2yl7v8gdu7/LX/v/y1/
        7/8tf+//LX/v/yx+7/8id+z/utb2///////////////////////2+/3/S5Hs/yV67/8tf+//LX/v/y1/
        7/8sf/D/JXjr/7jU9P////////////7////+//7//v/+////////////////////////////////////
        //////////7/////////////ocj2/x927P8rfu//JXns/8Ha+P////////////////////7////+////
        /v/////////////////+///////////////+///////////////0+/3/Xpzr/yF27v8uf+//LX7v/yh8
        8P84hOv/4u/5/////////////v/////////+////////////////////////////////////////////
        //////7////+//////9vp/H/IHfu/yl88P82hOz/5/H6/////////////////3qv7/8fduz/LH/v/y1/
        7/8tf+//LX/v/yx/7/8hduv/stD1///////+///////////////x9/z/P4rs/yd77/8tf+//LX/v/y1/
        7/8sfu//N4z//5KYmZxeo/z/JXrw/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yt98P8neur/xt72////
        ////////////////////////kr3y/x517f8tf+//LX/v/y1/7/8sf+//KXzw/zSC6v/e7Pr/////////
        //////////////////9ppPD/IXbu/y1/7/8tf+//LX/v/yx/8P8leOv/uNT0////////////////////
        //////////////////////////////////////////////////////////////////+jyPb/H3bs/yt+
        7/8leez/wdr4//////////////////////////////////////////////////////////////////7/
        /v/+/v/////+///////c7Pn/M4Hr/yd88P8ufvD/KHzw/ziE6v/i7/n////////////+//7/////////
        /////////////////////////////////////////////////////////////3Gn8f8gdu7/KXzw/zaE
        7P/n8fr/////////////////eq/v/x927P8sf+//LX/v/y1/7/8tf/D/I3jv/1GU6//4/P3/////////
        //////////////H3/P8/iuz/J3vv/y1/7/8tf+//LX/v/yx+7/83jP//kpiZnF6j/P8levD/LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//KXzv/ziF6//l8fv//////////////////v////////+82PX/JHjr/yx+
        7/8tf+//LX/v/y1/7/8kee//TZLs//j8/f///////////////////////////4678P8fde3/LX/w/y1/
        7/8tf+//LH/w/yV46/+41PT///////////////////7///z//v/7//3//P/+//z//v/8//7//P/+//z/
        /v/8//7//P/+//v//f/7//3////9/6DI9f8fduz/K37v/yV57P/B2vj//////////////////v7+//3/
        /f/7//3/+//9//z//f/+//7//v/+/////v////////////7//v/+/////v////////+BsfD/HnXu/yx/
        7/8pfPH/OITq/+Lv+f////////////7+///9/v//+//9//v//f/8//7//P/+//z//v/8//7//P/+//z/
        /v/8//7//P/+//z//f/+//3/bqjx/yB27v8pfPD/NoTs/+fx+v////////////////96r+//H3bs/yx/
        7/8tf+//LX/v/yx+8f8gduv/q83z///////+//7///7/////////////8ff8/z+K7P8ne+//LX/v/y1/
        7/8tf+//LH7v/zeM//+SmJmcXqP8/yV68P8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8kee//UJTs//v9
        /v///////////////////////////+Dt+/80guz/KX3v/y1/7/8tf+//LX/v/yB27v9xqO7/////////
        ////////////////////////tNL1/yF27f8sf+//LX/v/y1/7/8sf/D/JXjr/7jU9P//////////////
        ///t9fn/Z5/j/1eX5/9cmeb/XJnm/1yZ5v9cmeb/XJnm/1yZ5v9cmeb/W5nn/1uZ5v9fm+b/R47q/yp9
        7/8rfu//JXns/8Ha+P/////////////////q8vr/YZzm/1iX5v9amef/W5nn/2Oe6v9kn+n/Z6Hr/4+8
        8P/u9vz////+//7////+/////////8jg9/8qeuv/Kn7w/yh88P84hOr/4u/5/////////////////83h
        8/9WlOL/WZnn/1yZ5v9cmeb/XJnm/1yZ5v9cmeb/XJnm/1yZ5v9cmeb/W5nn/12a5/87h+z/Kn3w/yl8
        8P82hOz/5/H6/////////////////3qv7/8fduz/LH/v/y5/7/8tf+//JHjv/0yR6v/1+/3///////7/
        ///+///////////////y9/z/P4ns/yd77/8tf+//LX/v/y1/7/8sfu//N4z//5KYmZxeo/z/JXrw/y1/
        7/8tf+//LX/v/y1/7/8tf+//LH/v/x927v9yqe7//////////v/+//7/////////////////+f3+/1CT
        7P8kee//LH/w/y1/7v8tfvD/HnTt/5vC8f/////////+///+/////////v/////////U5/n/Ln7r/yp9
        7/8tf+//LX/v/yx/8P8leOv/uNT0/////////////////+jy+P80gef/HXXw/yN57/8jee//I3nv/yN5
        7/8jee//I3nv/yN57/8jee//I3nv/yN47/8ne+//Ln/v/yt+8P8leez/wdr4/////////////////+Pv
        +v8pfez/H3fv/yN57/8jeO//I3ju/yJ47v8gd+//GHHr/2Cd7P/3+/7/////////////////8fj8/0SM
        7P8mevD/KHzw/ziE6v/i7/n/////////////////u9fy/xxx6f8iePD/I3nv/yN57/8jee//I3nv/yN5
        7/8jee//I3nv/yN57/8jee//I3jv/yp97/8uf+//KXzw/zaE7P/n8fr/////////////////eq/v/x92
        7P8sf+//Ln7v/yx+8P8edev/pcnz//////////////////7///////////////H3/P8/iuz/J3vv/y1/
        7/8tf+//LX/v/yx+7/83jP//kpiZnF6j/P8levD/LX/v/y1/7/8tf+//LX/v/y1/7/8sf+//HnXs/5bA
        9P/////////+///////////////+//7/////////canw/x927f8ufu//LX/v/yt+8P8meOz/wdz3////
        ///+///////////////9//////////D4/P9EjOv/Jnvv/y1/7/8tf+//LH/w/yV46/+41PT/////////
        ////////6fP5/z2H6P8nfPD/LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//K37w/yV57P/B2vj/////////////////5PD6/zOD7P8pfe//LX/v/y1/7/8tf+//LX/v/y1/
        7/8qfvH/HnXq/7rW9P////////////////////7/XZvw/yJ47v8nfPD/OITr/+Lv+f//////////////
        //++2fP/Jnjq/yx+8P8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8pfPD/NoTs/+fx+v////////////////96r+//H3bs/yx/7/8tf+//JHjv/0aO6//y+f3/////////
        ///+/////v//////////////8ff8/z+K7P8ne+//LX/v/y1/7/8tf+//LH7v/zeM//+SmJmcXqP8/yV6
        8P8tf+//LX/v/y1/7/8tf+//LX/v/yx+8P8jeOz/utb1///////////////////////+////////////
        //+dxPL/HnXt/y1/7v8ufu//J3zw/zmE6//l8fr///////7//////////////////v///////////1+d
        7/8id+//LX/v/y1/7/8sf/D/JXjr/7jU9P/////////////////p8/n/PYfo/yd88P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8rfvD/JXns/8Ha+P//////////////
        ///k8Pr/M4Ps/yl97/8tf+//LX/v/y1/7/8tf+//LX/v/y1/8P8edOz/lL/0////////////////////
        //9loPD/Infu/yl87/85hOr/4u/5/////////////////77Z8/8meOr/LH7w/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yl88P82hOz/5/H6/////////////////3qv
        7/8fduz/LH/v/y1+8P8edOz/n8by///////+//////////7///////7////////////x9/z/P4rs/yd7
        7/8tf+//LX/v/y1/7/8sfu//N4z//5KYmZxeo/z/JXrw/y1/7/8tf+//LX/v/y1/7/8tf+//KX3w/zGA
        7P/a6vr///////7////9////9fr8/////////////////8Td9v8neez/Kn7v/y5/8P8keO//VJXt//3+
        /v///////v/+/+/2+//r9Pn/////////////////g7Tv/x917v8tf+//LX/v/yx/8P8leOv/uNT0////
        /////////////+nz+f89h+j/J3zw/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/yt+8P8leez/wdr4/////////////////+Tw+v8zg+z/KX3v/y1/7/8tf+//LX/v/y1/
        7/8sf+//LX7w/x107P+XwfT//////////////////////2Cf8P8gd+//KHzw/zmE6f/i7/n/////////
        ////////vtnz/yZ46v8sfvD/LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//KXzw/zaE7P/n8fr/////////////////eq/v/x927P8sf+//Jnrv/0OL6v/w9/z///////7/
        //////7///////7+/v////////////H3/P8/iuz/J3vv/y1/7/8tf+//LX/v/yx+7/83jP//kpiZnF6j
        /P8levD/LX/v/y1/7/8tf+//LX/v/y1/7/8me+//R47s//P6/f////////////3///+10e3/9vr9////
        ////////5PL7/zqF6v8ne/H/LX/v/x917v95re///////////v//////xNvy/7vV8f///////v//////
        //+pzPX/H3bs/y1/7/8tf+//LH/w/yV46/+41PT/////////////////6fP5/z2G6P8nfPD/LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tfu//K37w/yV57P/B2vj/////////
        ////////5PD6/zOD7P8pfe//LX/v/y1/7/8tf+//LX/v/yx/7/8rffH/I3bq/8Td9f/////////+////
        ///5/f3/TpLt/yR57/8ofPD/OITq/+Lv+f////////////////+/2fP/Jnjq/yx+8P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX7w/y1/7/8tf+//LX/v/y1/7/8pfPD/NoTs/+fx+v//////////////
        //96r+//H3bt/yx/7/8edOz/l8Hy//////////7////////////N4vX/9vr9////////////8vf8/z+J
        7P8ne+//LX/v/y1/7/8tf+//LH7v/zeM//+SmJmcXqP8/yV68P8tf+//LX/v/y1/7/8tf+//LX/v/yF3
        7v9mou3////+//////////7/+/3+/3Gn6//k8Pz////////////8/v7/VZfs/yJ47/8tf+//HnXs/6LH
        9P////////////////+ZwfP/j7rx/////////////////8rg+P8qfOr/K37w/y1/7/8sf/D/JXjr/7jU
        9P/////////////////o8/n/OYXp/yR68f8qfPH/Knzx/yp88f8qfPH/Knzx/yp88f8qfPH/KX3x/yl9
        8f8sfu//LX/v/y1/7/8rfvD/JXns/8Ha+P/////////////////j7/r/K3zs/yB37/8kee//JHjv/yN4
        7/8ieO//IXbt/xlx6/9vp+3/+v3+///////+/////////9fo+f8vfur/Kn3w/yd97/84her/4u/5////
        /////////////77Y8/8id+v/KHzy/yp88f8qfPH/Knzx/yp88f8qfPH/Knzx/yp88f8qffH/Kn3w/y1/
        7/8tf+//LX/v/yl88P82hOz/5/H6/////////////////3mu8P8fdu3/JXrv/z+I6//r9fz///////7/
        //////7/5fH7/3er6//6/f/////////////x9/z/P4rs/yd77/8tf+//LX/v/y1/7/8sfu//N4z//5KY
        mZxeo/z/JXrw/y1/7/8tf+//LX/v/y1/7/8tf+//HnXt/4m48v/////////////////r9fz/QYno/8rg
        +f////////////////97r+//H3bt/yp+8P8pe+v/yeD3/////////////////3Op7v9upez/////////
        ////////6fP7/zuH6/8nfO//LX/v/yx/8P8leOv/uNT0/////////////////+jz+P9AhuH/K3vo/zF+
        5/8xfuf/MX7n/zF+5/8xfuf/MX7n/zF+5/8yfub/M37n/y1/7P8sf+//LX/v/yt+8P8leez/wdr4////
        /////////////+ny+v9Wlur/TZHs/0+T7P9Ulu7/WZnu/12b7v9rpO//oMbx//b7/f///////v//////
        /v//////ibfx/x917v8tf+//KHzw/zmE6v/i7/n/////////////////wdnw/yt44f8vfuj/MX7n/zF+
        5/8xfuf/MX7n/zF+5/8xfuf/MX7n/zF/5v8wf+f/Ln/u/y1/7/8tf+//KXzw/zaE7P/n8fr/////////
        ////////eq/v/x927f8ddOz/kr7x///////+//////////////+TvvH/U5Ts//////////////////H3
        /P8/iuz/J3vv/y1/7/8tf+//LX/v/yx+7/83jP//kpiZnF6j/P8levD/LX/v/y1/7/8tf+//LX/v/yx/
        7/8hduz/rc70///////+/////////9Xn+v8jduf/psv0/////////////////6XJ8/8fde3/Jnvw/z2H
        7P/q9Pv//////////v//////UJXs/1CU7P////7////////////9////Vpju/yN57v8tf+//LH/w/yV4
        6/+41PT/////////////////+v39/9fn9f/R5fX/0ub1/9Lm9f/S5vX/0ub1/9Lm9f/S5vX/0ub1/9Pn
        9f/X6PX/WJvs/yJ47/8tf+//K37w/yV57P/B2vj///////////////////////z//f/8//3//P79//3/
        /f////7///////////////////////7//////////////9Pn+P8ygOr/KHvw/yx/8P8pfO//OYTq/+Lv
        +f/////////////////w9/v/0uX0/9Pm9f/S5vX/0ub1/9Lm9f/S5vX/0ub1/9Lm9f/S5vX/1uj1/8Xf
        8/85hu3/KHzv/y1/7/8pfPD/NoTs/+fx+v////////////////96r+//GXHu/zqG6//o8/v///////7/
        /v//////8/n9/zyH6v9XmfD/////////////////8ff8/z+K7P8ne+//LX/v/y1/7/8tf+//LH7v/zeM
        //+SmJmcXqP8/yV68P8tf+//LX/v/y1/7/8tf+//K37v/yt87P/R5Pj/////////////////uNX2/xRu
        6/9/s/L/////////////////y+H4/yp76/8hd+//W5vt/////////////////+33/P84he3/O4bt//D4
        /P////////////////96re7/H3bu/y1/7/8sf/D/JXjr/7jU9P///////////////v//////////////
        //////////////////////////////////////////////////9pou7/IHfv/y1/7/8rfvD/JXns/8Ha
        +P////////////////////////////////////////////////////////////7//v//////////////
        ///Q5Pj/RYzq/yN47/8tf/D/LX/v/yh88P84hOr/4u/5/////////////v//////////////////////
        ////////////////////////////////////////9/z9/z2H7f8ne+//LX/v/yl88P82hOz/5/H6////
        /////////////3qv8f8Ra+r/jbnw//////////////////////+ny/P/FG3r/1+f8P//////////////
        ///y9/z/P4ns/yd77/8tf+//LX/v/y1/7/8sfu//N4z//5KYmZxeo/z/JXrw/y1/7/8tf+//LX/v/y1/
        7/8ne+//Pojs/+31/f////////////////+WwPD/FG/s/1ub7P/+///////////////s9fv/P4nr/xlx
        7v+AsvD/////////////////zuP3/yh76/8ufev/1ef4/////////////////57E9P8ddez/LX7w/yx+
        7/8leOv/uNT0/////////////v/////////+//7/////////////////////////////////////////
        ///////////+/2Wg7v8gd+//LX/v/yt+8P8leez/wdr4/////////////////////v//////////////
        /////////////////////////v//////////////qMnt/yp66P8jePD/LX/v/y1/7/8tf+//KHzw/ziE
        6v/i7/n////////////+//////7/////////////////////////////////////////////////////
        ///v9vv/PIft/yd77/8tf+//KXzw/zaE7P/n8fr/////////////////dKvw/yp66f/l8fv/////////
        ////////9vv9/02S7P8Yce7/YZ/v//////////////////H3/P8/iez/J3vv/y1/7/8tf+//LX/v/yx+
        7/83jP//kpiZnF6j/P8levD/LX/v/y1/7/8tf+//LX/v/yJ47/9bmuz//v/+/////////////////3Sq
        8P8acu7/PIft/+v0/P////////////7///9cm+7/FW/r/6nM9f/////////+//////+szfT/HnXs/yJ3
        7P+41ff/////////////////wdv3/yZ56v8sfu//LH7v/yR46/+41PT////////////+////////////
        ////////////////////////////////////////////////////////Z6Lu/x927/8tf+//K37w/yV5
        7P/B2vj//////////////////////////////////////////////////////////////////v/+////
        ///Z6fj/UJLs/yJ47v8tf/D/LX/v/y1/7/8ofPD/OITq/+Lv+f////////////7/////////////////
        //////////////////////////////////////////////T5/P88iOz/J3vv/y1/7/8pfPD/NoTs/+fx
        +v////////////////9ppO3/eazu//////////////////////+vz/T/IHbr/yB47v9hn+//////////
        ////////8ff8/z+K7P8ne+//LX/v/y1/7/8tf+//LH7v/zeM//+SmJmcXqP8/yV68P8tf+//LX/v/y1/
        7/8tf+//H3bt/3uv8P/////////////////8/v7/V5jt/yB38P8peuv/yeD3//////////7//////4Ky
        8P8ec+n/0eT4/////////////////4S18P8ede3/HXXu/5nA8v/////////////////h7/r/NYPs/yl8
        7/8rfvH/JXjr/7jU9P////////////7////8/v7/7/b7/+72+//u9vv/7vX7/+71+//u9vv/7vb7/+72
        +//u9fv/7/b7//D3+/9hnu7/Infu/y1/7/8rfvD/JXns/8Ha+P/////////////////2+v3/v9rx/7zY
        8f/A2fL/x971/8ff9f/H3vX/3e36/////////////v/////////e7fr/NoLr/yd78P8tf+//LX/v/yh8
        8P84hOr/4u/5/////////////v////n8/f/u9fr/7vb7/+72+//u9fv/7vb7/+72+//u9vv/7vb7/+71
        +//v9/v/4O34/zuH7P8nfO//LX/v/yl88P82hOz/5/H6/////////////////4Kx6v/S5fj///////7+
        ////////+v3+/1KV7P8ieO7/IXju/2Gf7//////////////////x9/z/P4rs/yd77/8tf+//LX/v/y1/
        7/8sfu//N4z//5KYmZxeo/z/JXrw/y1/7/8tf+//LX/v/y1/7/8gdez/ocby/////////////////+v0
        +/8/iOr/J3vw/yB17P+jyPX/////////////////psn0/zSC6f/w9/3/////////////////X5zu/yJ3
        7/8fdu3/dqzu//////////////////n8/v9Nkuz/JHnw/yt+8P8leOv/uNT0/////////////////+rz
        +v9Nj+b/OYXs/z6I7P8+iOz/Pojs/z6I7P8+iOz/Pojs/z6I7P8+iOv/P4nq/zCA8P8rfvD/LX/v/yt+
        8P8leez/wdr4/////////////////+Pu+f8ufeX/JHbn/yh56P8se+r/LXvq/yt76v8xf+r/h7Xu//r9
        /v////////////////+LufH/H3Xs/y1/7/8tf+//KHzw/ziE6v/i7/n/////////////////xdzy/zmC
        5v89iOz/Pojs/z6I7P8+iOz/Pojs/z6I7P8+iOz/Pojs/z6J6/89iOv/LX/v/yx+8P8tf+//KXzw/zaE
        7P/n8fr////////////9/v//zuT1//3//v/+/////v/+//////+20/X/IXbs/yx+8P8heO7/YZ/v////
        //////////////H3/P8/iuz/J3vv/y1/7/8tf+//LX/v/yx+7/83jP//kpiZnF6j/P8levD/LX/v/y1/
        7/8tf+//K37v/yZ57P/G3Pf/////////////////0uX5/yt97f8rffD/H3Xu/3ut7///////////////
        ///G3ff/ZJ7o/////////////////+/3+/9Ciuv/Jnrw/yN47v9Vl+///f///////////////////26n
        7v8hdu//LH7v/yV46/+41PT/////////////////5/P5/zeD6f8hePH/J3vv/yd77/8ne+//J3vv/yd7
        7/8ne+//J3vv/yd77/8ne+//K33w/y1/7/8tf+//LH7w/yV57P/B2vj/////////////////5O/6/zKB
        7f8nfPH/K37w/yp98P8qffD/Kn7w/yZ78P8bcun/rs/1/////////////////9Pm+f8sfuv/Kn7v/y1/
        7/8ofPD/OITq/+Lv+f////////////////+92PP/H3Tr/yV68f8ne+//J3vv/yd77/8ne+//J3vv/yd7
        7/8ne+//J3vv/yd88P8tfvD/LX/w/y1/7/8pfPD/NoTs/+fx+v////////////////////////////7/
        /////////P/+/1qa7P8id+//LH/v/yF47v9hn+//////////////////8vf8/z+J7P8ne+//LX/v/y1/
        7/8tf+//LH7v/zeM//+SmJmcXqP8/yV68P8tf+//LX/v/y1/7/8ofO//OIPr/+Lv+v///////v//////
        //+z0fT/Infs/yx+7/8keO7/VZbt//3+/////////////+Lu+v+hxe//////////////////0uX5/y1+
        6v8qfe//J3vw/z+J6//r9fv///////7/////////j7zz/x117f8sfvD/JXjr/7jU8///////////////
        ///p8/n/PYfo/yd88P8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8rfvD/JXns/8Ha+P/////////////////k8Pr/M4Ps/yl97/8sf/D/LX7w/y1+8P8tfvD/LX/w/x10
        7v91qfD/////////////////8Pj8/0WN6v8me+//LX/v/yh88P84hOr/4u/5/////////////////77Z
        8/8meOr/LH7w/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yl8
        8P82hOz/5/H6///////////////////////+///////+//////++2fX/JHjq/yt98P8tf+//IXju/2Gf
        7//////////////////x9/z/P4rs/yd77/8tf+//LX/v/y1/7/8sfu//N4z//5KYmZxeo/z/JXrw/y1/
        7/8sf+//LX/v/yR58P9Pk+v/+P39/////////////////5C88v8dde3/LH7w/yl87/83hOz/5PH6////
        ////////+fz9/+nz+////////v/+//////+uzvX/IHbt/yx/7/8qfu//LX7q/9Ll+f///////v//////
        //+10/T/I3jq/yt+8P8leOv/uNT0/////////////////+nz+f89h+j/J3zw/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yt+8P8leez/wdr4/////////////////+Tw
        +v8zg+z/KXzw/y1/8P8tf+//LX/v/yx/7/8tf+//HnXv/3Kp7//////////////////7/v7/VZbt/yN5
        7/8tf+//KHzw/ziE6v/i7/n/////////////////vtnz/yZ46v8sfvD/LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//KXzw/zaE7P/n8fr///////////////////////7/
        //////7//v///2Gd7f8fd+7/LH/w/y1/7/8heO7/YZ/v//////////////////H3/P8/iuz/J3vv/y1/
        7/8tf+//LX/v/yx+7/83jP//kpiZnF6j/P8levD/LX/v/yx/8P8sfu//IHbu/26n8P//////////////
        ////////b6fw/x927v8tf+//K37w/yZ66//C3Pf////////////////////////////+/////////4e3
        7/8fdez/LX/v/yx/7/8id+z/s9L2//////////7//////9np+f8wf+3/KHzw/yR46/+41PT/////////
        ////////6fP5/zyG6P8me/D/LH7v/yx+7/8sfu//LH7v/yx+7/8sfu//LH7v/yx+7/8sfu//LH7v/y1/
        7/8tf+//K37w/yV57P/B2vj/////////////////5O/6/zKC7f8ofPD/K37v/yt98P8rffD/K37v/yh8
        8P8YcOr/pMjy///////+//////////r9/f9Tlez/I3nv/y1/7/8ofPD/OITq/+Lv+f//////////////
        //++2fP/JXfq/yt98P8sfu//LH7v/yx+7/8sfu//LH7v/yx+7/8sfu//LH7v/yx+7/8sf+//LX/v/y1/
        7/8pfPD/NoTs/+fx+v/////////////////+///////////////E3ff/J3nr/yt+7/8ufvD/LX/v/yF4
        7v9hn+//////////////////8ff8/z+K7P8ne+//LX/v/y1/7/8tf+//LH7v/zeM//+SmJmcXqP8/yV6
        8P8tf+//LX/v/yx/7/8fdO3/lL/x//////////////////r+/f9Slev/JHnv/y1/7/8tf+//H3Xs/5vD
        8/////////////7/////////////////////////YZ/v/yF47v8tf+//LX/v/x917f+RvPD/////////
        ////////8vn8/0aN7P8lefH/JXjr/7jU9P/////////////////o8vj/NYHk/x517P8keOv/JHjr/yR4
        6/8keOv/JHjr/yR46/8keOv/JHjr/yR56/8keOv/LH7u/y1/7/8rfvD/JXns/8Ha+P//////////////
        ///j7vn/Knzp/yB27P8neuv/Knzs/yp77P8pe+z/Ln3q/3Kp7P/0+f3////+//7/////////7fb8/0CJ
        6v8ne+//LX/v/yh88P84hOr/4u/5/////////////////7vX8v8dceb/I3fs/yR46/8keOv/JHjr/yR4
        6/8keOv/JHjr/yR46/8keOv/JHnr/yZ67P8tf+//LX/v/yl88P82hOz/5/H6////////////////////
        /////////////2ei7f8fdu7/LX/v/y5/7v8sf/D/IXju/2Gf7//////////////////y9/z/P4ns/yd7
        7/8tf+//LX/v/y1/7/8sfu//N4z//5KYmJxeo/v/JXrx/y1/7/8tf+//LH/v/yJ37f+41fb/////////
        /v//////5/L7/zmF7P8oe+//LX/v/y1/7/8gde3/cqnt//////////////////////////////////D4
        /P9FjOv/Jnvw/y1/7/8tf+//IHbu/3Co8P////////////////////7/ZKDt/x927/8leOv/uNT0////
        //////////////j7/f/H3PT/wNn1/8La9f/C2vX/wtr1/8La9f/C2vX/wtr1/8La9f/B2vX/w9v1/7zY
        9f9Eje7/J3vv/yt+8P8leez/wdr4//////////////////f6/f/D2/X/wNn1/8bd9//K4Pj/yeD4/8jf
        +P/W6fr//////////////v/////////////G3vj/J3rs/yt+7/8tf+//KHzw/ziE6v/i7/n/////////
        ////////7PT6/8DY9P/B2vb/wtr1/8La9f/C2vX/wtr1/8La9f/C2vX/wtr1/8La9f/E3PX/pMn0/y5/
        7f8rfu//KXzw/zaE7P/n8fr///////////////////7////////K4ff/KXrp/yp+7/8tf+//LX/v/y1/
        7/8heO7/YZ/v//////////////////L3/P8/iez/J3vv/y1/7/8tf+//LX/v/yx+7/83jP//k5mZnGKl
        /f8kevD/LX/v/y1+7/8pffD/MYDq/9jq+v/////////////////M4ff/KXvr/yp+7/8tf+//LX/v/yR6
        7/9Nku7/+f39////////////////////////////1ef6/yx+7P8qfe//LX/v/y1/7/8jee//VJXu//v+
        /v/////////+//////+FtvL/HHTt/yV46/+41PT/////////////////////////////////////////
        /////////////////////////////////////////////0+U7v8jee//K37w/yV57P/B2vj/////////
        /////////////////////////////////////////////////////////v7///7///////7//////3ar
        7v8gdu3/LX/v/y1/7/8ofPD/OITq/+Lv+f//////////////////////////////////////////////
        ///////////////////////////////////f7vz/Ln/t/yp97/8pfPD/NoTs/+fx+v//////////////
        /////////////3Cn7v8edu7/LX/v/y1/7/8tf+//LX/v/yF47v9hn+//////////////////8ff8/z+K
        7P8ne+//LX/v/y1/7/8tf+//LH7v/zeM//+WmpqcZaf//yR57/8tf+//LX/v/yV67/9Gjez/8/r8////
        ///+/////////6zO9P8hduz/LH/v/y1/7v8tf+//KXzw/zOB6v/e7fn/////////////////////////
        //+x0PT/IXbs/yx/7/8tf+//LX/v/yd87/88hur/5/P7//////////7//////6vN8/8edez/JHjs/7jU
        8////////////////////////////////////////////////////////////////////////v//////
        ///4/P7/TZPu/yR57/8rfvD/JXns/8Ha+P//////////////////////////////////////////////
        /////////v///////v/+///////+///////B3Pf/KXvr/yp97/8tf+//LX/v/yh88P84hOr/4u/5////
        /////////////////////////////////////////////////////////////////////////////9Xn
        +/8uf+3/Kn3v/yl88P82hOz/5/H6///////////////////////S5vn/K3zr/yl98P8tf+//LX/v/y1/
        7/8tf+//IXju/2Gf7//////////////////x9/z/P4rs/yd77/8tf+//LX/v/y1/7/8sfu//N4z//5aa
        mpxlp///JHnw/y1/8P8sfvD/IXfu/2ah7///////////////////////i7jy/x507f8tfvD/LX/v/y5/
        7/8sf+7/I3fs/7zY9////////////////////////////4m38v8fdez/LX/v/y1/7/8tf+//K37v/yl8
        7P/S5fn/////////////////0+b5/yl87P8iduz/u9Xz////////////////////////////////////
        //////////////////////////////////////////////z+/v9Ok+7/JHnv/yt+8P8leez/xNv4////
        ////////////////////////////////////////////////////////////////////////zeL3/z2H
        6v8lee//LX/v/y1/7/8tf+//KHzw/ziE6v/l8fn/////////////////////////////////////////
        ////////////////////////////////////////2On7/y5/7f8qfe//KXzw/zaE7P/r8/r/////////
        /////////////3Wr7v8fde3/LX/v/y1/7/8tf+//LX/v/y1/7/8heO7/Yp/v//////////////////X5
        /P8/iuz/J3vv/y1/7/8tf+//LX/v/yx+7/83jP//lpqanGWn//8kefD/LX/v/yx/7/8fdu3/hLbw//3/
        /P/3/fz/+P78//n+/P9po+3/IXfv/y1+7/8tf+//LX7v/yx/8P8fdO7/jbvw//v//P/3/fz/9/38//j9
        /P/3/vz/ZJ/u/yB37/8tf+//LX/v/y1/7/8sf+//IXbt/6rN8//9//z/9v38//r+/P/j8/r/PIjs/x90
        6/+y0/P//f/8//f9/P/3/fz/9/38//f9/P/3/fz/9/38//f9/P/3/fz/9/38//f9/P/3/fz/9/38//b9
        /P/5/vz/8Pr8/0yS7v8lee//LH7w/yV57f+72ff//P/8//f9/P/3/fz/9/38//f9/P/3/fz/9/38//f9
        /P/3/fz/+P38//P8/f/n9P3/0+T4/4y67/80ger/JHnv/y5/7/8tf/D/LX/v/y1/7/8ofPD/N4Tr/9vt
        +P/7//z/9/38//b9/P/3/fz/9/38//f9/P/3/fz/9/38//f9/P/3/fz/9/38//f9/P/3/fz/9/38//v/
        /P/P5fn/Ln/t/yp97/8pfPD/NYPt/+Dv+P/6//z/9/38//z//P/T5vf/MX/q/yl88P8sf+//LX/v/y1/
        7/8tf+//LX/v/yJ47v9fnu//+P78//j9/P/5/vz/6/X6/z+J7P8ne+//LX/v/y1/7/8tf+//LH7v/zeM
        //+WmpqcZaj//yN67/8tf/D/LX7w/yp97/9Biuv/VpXl/1OU5v9UlOX/U5Tm/zSC7P8rfvD/LX/v/y1/
        7/8tf+//LH/w/yp97/88hun/VZXm/1OU5v9Tk+b/VJTm/1KU5/8yge3/K37w/y1/7/8tf+//LX/v/y1/
        7/8pfe//QIno/1aW5f9Tk+b/VZTm/1KU5/80gu3/Kn3v/0WM6f9WluX/U5Tm/1OT5v9Tk+b/U5Tm/1OU
        5v9Tk+b/U5Pm/1OT5v9TlOb/U5Tm/1OT5v9TlOb/U5Tm/1SU5f9SlOb/M4Lu/yt+7/8tf+//LH7v/0iO
        6f9XleX/U5Pm/1OU5v9TlOb/U5Tm/1OU5v9TlOb/U5Pm/1OU5v9UlOb/T5Ln/0CK6/8tfuv/IXbs/yh8
        7/8tf+//LX/v/y1/7/8tf+//LX/v/yx/7/8vgO3/TpHn/1aV5v9TlOb/U5Tm/1OT5v9TlOb/U5Pm/1OT
        5v9Tk+b/U5Tm/1OU5v9TlOb/U5Pm/1OT5v9UlOb/VZXm/0yQ5/8sf+7/LH/v/yx+8P8uf+//TpHn/1WV
        5v9Tk+b/V5Xl/0OK6P8pfPD/LX/w/y1+7/8tf+//LX/v/y1/7/8tf+//Kn7w/zaE7f9UleX/VJTl/1WU
        5v9Rkuf/MIHu/yx/7/8tf+//LX/v/y1/7/8sfu//N4z//5aampxlqP//I3rv/y1/7/8tf+//Ln/v/yh8
        7/8jePH/JXnv/yN58f8kefD/K37v/y1/7/8tf+//LX/v/y1/7/8uf+7/LX/w/yl88P8kee//JHrv/yR6
        7/8keu//JHnv/yp+7/8uf/D/LX/v/y1/7/8tf+//LX/v/y5/7/8ofO//I3nv/yR57/8kefD/JXrw/yx+
        7/8tf+//J3vv/yN58P8kee//JHrv/yR67/8keu//JHrv/yR67/8keu//JHrv/yR67/8keu//JHrv/yR6
        7/8leu//I3nv/yR58P8sfu//LX/v/y1/7/8tf+//J3vv/yR57/8keu//JHrv/yR67/8keu//JHrv/yR6
        7/8keu//JHrv/yR57/8keu//KHvv/yt98P8sf/D/LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1+
        7/8leu//I3nw/yR58P8keu//JHrv/yR67/8keu//JHrv/yR67/8keu//JHrv/yR67/8keu//JHrv/yR5
        8P8kee//JXrw/y1/7/8tf+//Ln/u/y1/7/8levD/JHnv/yR67/8kee//J3vw/yx/7/8tf+//LH/v/y1/
        7/8tf+//LX/v/y1/7/8uf+//KX3w/yR68P8kefD/I3nw/yV58P8sfvD/LX/v/y1/7/8tf+//LX/v/yx+
        7/83jP//lpqanGWo//8jeu//LX/v/yx/7/8sf/D/LX7v/y1/7/8sf+7/LH/v/yx/7/8tf+//LX/v/y1/
        7/8tf+//LH/v/y5/7v8tf+//LH/w/y1/7/8tf+//LX/v/y1/7/8tf+//Ln/u/yx/8P8sf/D/LX/v/y1/
        7/8tf+//LX/v/yx+8P8tfu//K3/w/y1/7v8tf+//LX/v/yx/7/8tf+//Ln/v/yx+8P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX7v/y1/7v8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yx/7/8sf+//LX/v/y5+
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yx/7/8tfu//LH7w/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LH/v/y1/7/8tf+7/LX/v/yx/8P8rf/D/LX/v/y1+
        7/8tf+//LX/v/y1/7/8sf+//LX/v/y1+8f8sf+//LX/v/y1/7/8tf+//LX/u/y5+7/8tf+//LX/v/y1/
        7/8tfu//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LH7v/zeM//+WmpqcZaj//yN67/8tf+//LX/v/y1/
        7/8tfu//LX7w/yt+8P8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/8P8tf+//LH/v/y1/7/8tf+//LX/v/y1/7/8tfu//LH/v/y5/7/8tf/D/LH/v/yx+
        8f8tf+//Ln/v/yx+8f8tf+//LH7w/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX7w/y1+8P8uf+7/LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1+7/8tf+//LH/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LH/v/y1+7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tfu//LX7w/y1+7/8sf+//LH/w/y1+8P8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8sf+//LX7w/y1/7/8sf+//LH/v/y1/7/8tf+//LX/v/y1/
        7/8sfu//N4z//5aampxlqP//I3rv/y1/7/8tf+//LX/u/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf/D/LX/v/y1/7/8tf+//LX/v/y1/7/8tf+7/LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/yx+8P8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7v8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+7/LX7v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX7w/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tfu//LX/v/y1/7/8tf+//Ln/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+7/LX/v/y1/7/8tf+//LX/v/y1/7/8tf/D/LX/v/y1/
        7/8tfu//LX/v/y1/7/8tf+7/LX/v/y1/7/8tf+//LX/v/yx+7/83jP//lpqanGWo//8jeu//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LH7v/zeM//+WmpqcZaj//yN67/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8sfu//N4z//5aampxlqP//I3rv/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/yx+7/83jP//lpqanGWo//8jeu//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LH7v/zeM//+WmpqcZaj//yN5
        8P8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8sfu//N4z//5aampxlqP//I3nw/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yx+7/83jP//lpqanGWn
        /v8jefD/LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LH7v/zeM//+VmpqcZKf+/yN58P8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8sfu//N4z//5ib
        m5xpq///Innv/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LH/v/yx+8P83jP//mZubnG2t//8iee//Ln/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8sf+//LH7v/zeM
        //+am5ucbqz//yJ47/8sfvD/LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8qfu//P5D9/5ubm5yWyP//HXXt/y1+8P8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/yZ7
        7/9TnP//m5ubnOH0//8peur/K33w/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//HnXu/4W9//+bm5uc/////2Sf7f8fdu3/LX/w/y1/
        7/8tf+//LH/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y5/7/8tf/D/LX/v/yl8
        8P8neer/3PL//5ubm5z/////y+L3/yl66f8ne/D/LX/w/y1+8P8uf+7/LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
        7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/8P8qfvD/G3Lq/4e28P//////m5ubnP//////////ncTz/yJ2
        6P8fdu7/Infw/yJ47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN4
        7v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN4
        7v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN4
        7v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN4
        7v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN4
        7v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN4
        7v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN4
        7v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yN47v8jeO7/I3ju/yJ47v8ieO7/IHfu/x90
        6v94rO3/+v3+//////+np6eo////////////////yef//3m0/P9zr/n/dLD6/3Sw+v90sPr/dLD6/3Sw
        +v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw
        +v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw
        +v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw
        +v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw
        +v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw
        +v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw
        +v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw
        +v90sPr/dLD6/3Sw+v90sPr/dLD6/3Sw+v9yrvr/ttv//////////////////2RkZGSjo6Oko6OjpKOj
        o6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOj
        o6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOj
        o6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOj
        o6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOj
        o6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOj
        o6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOj
        o6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOj
        o6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOjo6Sjo6Oko6OjpKOj
        o6Sjo6Oko6OjpKOjo6Sjo6OkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value>
  </data>
</root>
在上述文件截断后对比
CC/iWareCC_ASRS/Forms/SrmStockForm.Designer.cs CC/iWareCC_ASRS/Forms/SrmStockForm.cs CC/iWareCC_ASRS/Forms/SrmStockForm.resx CC/iWareCC_ASRS/Forms/SystemCheckForm.Designer.cs CC/iWareCC_ASRS/Forms/SystemCheckForm.cs CC/iWareCC_ASRS/Forms/SystemCheckForm.resx CC/iWareCC_ASRS/IwareICO.ico CC/iWareCC_ASRS/Logo.ico CC/iWareCC_ASRS/Program.cs CC/iWareCC_ASRS/Properties/AssemblyInfo.cs CC/iWareCC_ASRS/Properties/Resources.Designer.cs CC/iWareCC_ASRS/Properties/Resources.resx CC/iWareCC_ASRS/Properties/Settings.Designer.cs CC/iWareCC_ASRS/Properties/Settings.settings CC/iWareCC_ASRS/Resources/穿梭子母车(彩色).jpg CC/iWareCC_ASRS/Resources/穿梭母车1.jpg CC/iWareCC_ASRS/WCF/CCWcfService.cs CC/iWareCC_ASRS/WCF/ICCWcfService.cs CC/iWareCC_ASRS/WmsTask/AutoIssueInStoreTask.cs CC/iWareCC_ASRS/WmsTask/AutoSalverMaterialBindTask - 复制.cs CC/iWareCC_ASRS/WmsTask/AutoSalverMaterialBindTask.cs CC/iWareCC_ASRS/WmsTask/AutoUpdateEngineInfoTask.cs CC/iWareCC_ASRS/WmsTask/EmptySalverTransferTask.cs CC/iWareCC_ASRS/WmsTask/LineInSacnResult.cs CC/iWareCC_ASRS/WmsTask/MainTaskDecompose.cs CC/iWareCC_ASRS/WmsTask/MainTaskDecompose_ZPRK.cs CC/iWareCC_ASRS/WmsTask/OutPlanTaskDecompose.cs CC/iWareCC_ASRS/WmsTask/OutTaskRetryToMes.cs CC/iWareCC_ASRS/WmsTask/Place1014To1020Task.cs CC/iWareCC_ASRS/WmsTask/VirtualTaskNoOutPlanTaskHandler.cs CC/iWareCC_ASRS/iWareCC.csproj CC/iWareCommon/BusinessHelper/BusinessHelper.cs CC/iWareCommon/BusinessHelper/WCSConfigHelper.cs CC/iWareCommon/Common/Dao/CommonDao.cs CC/iWareCommon/Common/Dao/_system~.ini CC/iWareCommon/Common/Globle/SysGloble.cs CC/iWareCommon/Common/Service/CommonService.cs CC/iWareCommon/Common/Service/_system~.ini CC/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/Conveyor_CacheEntity.cs CC/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyorEntity.cs CC/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyorStationEntity.cs CC/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyor_DB.cs CC/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEnumType/ESrmConveyorAlarm.cs CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/CacheEntity.cs CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm1_DB.cs CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm2_DB.cs CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/SrmEntity.cs CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/SrmInfo.cs CC/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm_CacheEntity.cs CC/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmAlarm.cs CC/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmCmd.cs CC/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmState.cs CC/iWareCommon/DLL/Castle.Core.dll CC/iWareCommon/DLL/Castle.Core.xml CC/iWareCommon/DLL/Common.Logging.Core.dll CC/iWareCommon/DLL/Common.Logging.Core.xml CC/iWareCommon/DLL/Common.Logging.Log4Net1213.dll CC/iWareCommon/DLL/Common.Logging.Log4Net1213.xml CC/iWareCommon/DLL/Common.Logging.dll CC/iWareCommon/DLL/Common.Logging.xml CC/iWareCommon/DLL/EntityFramework.SqlServer.dll CC/iWareCommon/DLL/EntityFramework.dll CC/iWareCommon/DLL/Interop.OPCAutomation.dll CC/iWareCommon/DLL/Newtonsoft.Json.dll CC/iWareCommon/DLL/Newtonsoft.Json.xml CC/iWareCommon/DLL/OpcAccess.dll CC/iWareCommon/DLL/Pager.XML CC/iWareCommon/DLL/Pager.dll CC/iWareCommon/DLL/TwinCAT.Ads.dll CC/iWareCommon/DLL/TwinCatAdsAccess.dll CC/iWareCommon/DLL/WZ.Useful.Commons.dll CC/iWareCommon/DLL/log4net.dll CC/iWareCommon/DLL/log4net.xml CC/iWareCommon/Properties/AssemblyInfo.cs CC/iWareCommon/Properties/Resources.Designer.cs CC/iWareCommon/Properties/Resources.resx CC/iWareCommon/Utils/AutoSizeFormClass.cs CC/iWareCommon/Utils/Base64Helper.cs CC/iWareCommon/Utils/CSharpHelper.cs CC/iWareCommon/Utils/ClassHelper.cs CC/iWareCommon/Utils/ComboBoxHelper.cs CC/iWareCommon/Utils/ConfigHelper.cs CC/iWareCommon/Utils/DESHelper.cs CC/iWareCommon/Utils/DataCache.cs CC/iWareCommon/Utils/DataTableHelper.cs CC/iWareCommon/Utils/DateTimeHelper.cs CC/iWareCommon/Utils/EntityPropHelper.cs CC/iWareCommon/Utils/EnumberHelper.cs CC/iWareCommon/Utils/ExcelHelper.cs CC/iWareCommon/Utils/FileHelper.cs CC/iWareCommon/Utils/FolderHelper.cs CC/iWareCommon/Utils/HTTP/HTTPService.cs CC/iWareCommon/Utils/HTTP/HttpHelper.cs CC/iWareCommon/Utils/HTTP/SSLUtil.cs CC/iWareCommon/Utils/IEnumerableHelper.cs CC/iWareCommon/Utils/IntHelper.cs CC/iWareCommon/Utils/ListHelper.cs CC/iWareCommon/Utils/Log4Net/C_LogWriter.cs CC/iWareCommon/Utils/Log4Net/Log4netHelper.cs CC/iWareCommon/Utils/Log4Net/LogType.cs CC/iWareCommon/Utils/LogTextHelper.cs CC/iWareCommon/Utils/MD5Helper.cs CC/iWareCommon/Utils/MachineHelper.cs CC/iWareCommon/Utils/MyBase64Helper.cs CC/iWareCommon/Utils/PageHelper.cs CC/iWareCommon/Utils/RandomHelper.cs CC/iWareCommon/Utils/StringHelper.cs CC/iWareCommon/Utils/SysHelper.cs CC/iWareCommon/Utils/SysMessageUtil.cs CC/iWareCommon/Utils/TaskNoHelper.cs CC/iWareCommon/Utils/TextHelper.cs CC/iWareCommon/Utils/ThreadHelper.cs CC/iWareCommon/Utils/TreeHelper.cs CC/iWareCommon/Utils/ValidateDataHelper.cs CC/iWareCommon/Utils/ZipHelper.cs CC/iWareCommon/iWareCommon.csproj CC/iWareCommon/log4net_iWare -编辑版.config CC/iWareCommon/log4net_iWare.config CC/iWareModel/Entity/AGV/AGVRetModel.cs CC/iWareModel/Entity/AGV/AGVRetModelJSON.txt CC/iWareModel/Entity/BindableBase.cs CC/iWareModel/Entity/Context.cs CC/iWareModel/Entity/Device/DeviceCoordinat.cs CC/iWareModel/Entity/EnumberEntity.cs CC/iWareModel/Entity/Huffman.cs CC/iWareModel/Entity/IBuilder.cs CC/iWareModel/Entity/ICommonEntity.cs CC/iWareModel/Entity/IDirector.cs CC/iWareModel/Entity/IHandler.cs CC/iWareModel/Entity/IService.cs CC/iWareModel/Entity/IStrategy.cs CC/iWareModel/Entity/ITreeEntity.cs CC/iWareModel/Entity/LZW.cs CC/iWareModel/Entity/ListItem.cs CC/iWareModel/Entity/MES/MesRetModel.cs CC/iWareModel/Entity/MES/MesRetModel2.cs CC/iWareModel/Entity/MES/MesRetProductModel.cs CC/iWareModel/Entity/MES/MesUpdateOnlineStatusParamModel.cs CC/iWareModel/Entity/MES/Mes_BtjReceiveModel.cs CC/iWareModel/Entity/QueryParam.cs CC/iWareModel/Entity/ResponseListDataEntity.cs CC/iWareModel/Entity/ResponseListDataPageEntity.cs CC/iWareModel/Entity/ResponseSimpleDataEntity.cs CC/iWareModel/Entity/ResultModel/FunRetEntity.cs CC/iWareModel/Entity/ResultModel/MessageModel.cs CC/iWareModel/Entity/ResultModel/ResEntity.cs CC/iWareModel/Entity/SalverMaterialBind/C_AnalyzeMaterialPostParam.cs CC/iWareModel/Entity/SalverMaterialBind/C_Task_InStoreSlaverParam.cs CC/iWareModel/Entity/SalverMaterialBind/MyCodeItems.cs CC/iWareModel/Entity/SysUser.cs CC/iWareModel/Entity/System/ColumnsModel.cs CC/iWareModel/Entity/System/PropertieModel.cs CC/iWareModel/Entity/TaskSequenceEntity.cs CC/iWareModel/Entity/ValidateModel.cs CC/iWareModel/Entity/ValidateResModel.cs CC/iWareModel/Entity/WMS/AddMainTaskPostParam.cs CC/iWareModel/Entity/WMS/UpdateEngineInfoParam.cs CC/iWareModel/Entity/_system~.ini CC/iWareModel/EnumType/EDbError.cs CC/iWareModel/EnumType/EDevice/AGV/AGVState.cs CC/iWareModel/EnumType/EDevice/DeviceTaskStatusEnum.cs CC/iWareModel/EnumType/EDevice/EDevice.cs CC/iWareModel/EnumType/EDevice/EDeviceType.cs CC/iWareModel/EnumType/EDevice/ESrmAlarm.cs CC/iWareModel/EnumType/EDevice/Line/LineLocation.cs CC/iWareModel/EnumType/EDevice/Line/RgvErrorReason.cs CC/iWareModel/EnumType/EDevice/Line/RgvInOutFlag.cs CC/iWareModel/EnumType/EDevice/Line/RgvIsDie.cs CC/iWareModel/EnumType/EDevice/Line/RgvIsStock.cs CC/iWareModel/EnumType/EDevice/Line/RgvWorkMode.cs CC/iWareModel/EnumType/EDevice/Rgv/ERgvAlarm.cs CC/iWareModel/EnumType/EDevice/Rgv/ERgvBodyTest.cs CC/iWareModel/EnumType/EDevice/Rgv/ERgvCmd.cs CC/iWareModel/EnumType/EDevice/Rgv/ERgvEvent.cs CC/iWareModel/EnumType/EDevice/Rgv/ERgvMode.cs CC/iWareModel/EnumType/EDevice/Rgv/ERgvState.cs CC/iWareModel/EnumType/EDevice/Rgv/RgvLocation.cs CC/iWareModel/EnumType/EDevice/Srm/ESrmCmd.cs CC/iWareModel/EnumType/EDevice/Srm/ESrmForkPosition.cs CC/iWareModel/EnumType/EDevice/Srm/ESrmMode.cs CC/iWareModel/EnumType/EDevice/Srm/ESrmState.cs CC/iWareModel/EnumType/EDevice/Srm/ESrmTaskType.cs CC/iWareModel/EnumType/ExceptionEnum.cs CC/iWareModel/EnumType/PLC/PLCServiceTypeEnum.cs CC/iWareModel/EnumType/RequestStatusEnum.cs CC/iWareModel/EnumType/StackSequenceSortRule.cs CC/iWareModel/EnumType/Sys/LanguageEnum.cs CC/iWareModel/EnumType/Sys/ValidateIntEnum.cs CC/iWareModel/EnumType/TaskExcuteTypeEnum.cs CC/iWareModel/EnumType/ThreadDirectionEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/AddTransferTaskEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/DeviceTaskTypeEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/MainInOutFlagEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/MainTaskStatusEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/MainTaskTypeEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/MaterialTypeEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/Plan/OutPlanStateEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/Plan/OutPlanTypeEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/Plan/OutTaskDetailStateEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/Plan/OutTaskModeEnum.cs CC/iWareModel/EnumType/XiGangPublicCommon/Salver_V_Station_StateEnum.cs CC/iWareModel/Properties/AssemblyInfo.cs CC/iWareModel/iWareModel.csproj CC/iWareSql/App.config CC/iWareSql/DBModel/Advertisement.cs CC/iWareSql/DBModel/Base_BasicDataSet.cs CC/iWareSql/DBModel/Base_BigMaterialStation.cs CC/iWareSql/DBModel/Base_CodeItems.cs CC/iWareSql/DBModel/Base_CodeSets.cs CC/iWareSql/DBModel/Base_GenerateTaskNo.cs CC/iWareSql/DBModel/Base_Material.cs CC/iWareSql/DBModel/Base_PersonHandlerRecord.cs CC/iWareSql/DBModel/Base_Salver.cs CC/iWareSql/DBModel/Base_Salver_V_Material.cs CC/iWareSql/DBModel/Base_Salver_V_Station.cs CC/iWareSql/DBModel/Base_Station.cs CC/iWareSql/DBModel/Base_SysExceptionInfo.cs CC/iWareSql/DBModel/Base_UserStation.cs CC/iWareSql/DBModel/DbModel.cs CC/iWareSql/DBModel/Device_AgvRealTime.cs CC/iWareSql/DBModel/Device_RgvRealTime.cs CC/iWareSql/DBModel/Device_SrmRealTime.cs CC/iWareSql/DBModel/Device_Warning.cs CC/iWareSql/DBModel/ExceptionInfo.cs CC/iWareSql/DBModel/HttpRequestRecord.cs CC/iWareSql/DBModel/MES_BTJReceiveReq.cs CC/iWareSql/DBModel/MES_OnLineReq.cs CC/iWareSql/DBModel/ModulePermission.cs CC/iWareSql/DBModel/Modules.cs CC/iWareSql/DBModel/OperateLog.cs CC/iWareSql/DBModel/PasswordLib.cs CC/iWareSql/DBModel/Permission.cs CC/iWareSql/DBModel/Plan_OutTask.cs CC/iWareSql/DBModel/Plan_OutTaskDetail.cs CC/iWareSql/DBModel/Plan_OutTaskDetailGroupOrderNo.cs CC/iWareSql/DBModel/Role.cs CC/iWareSql/DBModel/RoleModulePermission.cs CC/iWareSql/DBModel/Task_Main.cs CC/iWareSql/DBModel/Task_Part.cs CC/iWareSql/DBModel/Task_RequestLog.cs CC/iWareSql/DBModel/Task_SalverMaterialBindRecord.cs CC/iWareSql/DBModel/TasksQz.cs CC/iWareSql/DBModel/TestMuchTableResult.cs CC/iWareSql/DBModel/UserRole.cs CC/iWareSql/DBModel/V_AllStationStore.cs CC/iWareSql/DBModel/V_AllStore.cs CC/iWareSql/DBModel/V_AllTaskMain.cs CC/iWareSql/DBModel/V_CodeItems.cs CC/iWareSql/DBModel/V_CurrentOrderNoList.cs CC/iWareSql/DBModel/V_EmptySrmStation.cs CC/iWareSql/DBModel/V_Station.cs CC/iWareSql/DBModel/V_StationStore.cs CC/iWareSql/DBModel/V_Store.cs CC/iWareSql/DBModel/V_StoreMaterial.cs CC/iWareSql/DBModel/V_TaskMain.cs CC/iWareSql/DBModel/V_TaskOutMain.cs CC/iWareSql/DBModel/Wms_BindPlateRecord.cs CC/iWareSql/DBModel/Wms_EquipmentSituation.cs CC/iWareSql/DBModel/Wms_ModifyOrderNoRecord.cs CC/iWareSql/DBModel/Wms_NoMesSerialNumberMgr.cs CC/iWareSql/DBModel/Wms_OrderNoRecord.cs CC/iWareSql/DBModel/Wms_VirtualStore.cs CC/iWareSql/DBModel/Wms_VirtualStoreRecord.cs CC/iWareSql/DBModel/sysUserInfo.cs CC/iWareSql/DataAccess/AgvHandler.cs CC/iWareSql/DataAccess/Base_CodeItemsHandler.cs CC/iWareSql/DataAccess/BasicDataSetHandler.cs CC/iWareSql/DataAccess/ClearDataHandler.cs CC/iWareSql/DataAccess/DeviceRgvRealTimeHandler.cs CC/iWareSql/DataAccess/DeviceSrmRealTimeHandler.cs CC/iWareSql/DataAccess/DeviceWarningHandler.cs CC/iWareSql/DataAccess/MainTaskHandler.cs CC/iWareSql/DataAccess/MaterialHandler.cs CC/iWareSql/DataAccess/MesService.cs CC/iWareSql/DataAccess/PartTaskHandler.cs CC/iWareSql/DataAccess/PersonHandlerRecordHandler.cs CC/iWareSql/DataAccess/PlanOutTaskHandler.cs CC/iWareSql/DataAccess/SalverHandler.cs CC/iWareSql/DataAccess/Salver_Material_Handler.cs CC/iWareSql/DataAccess/Salver_Station_Handler.cs CC/iWareSql/DataAccess/StationHandler.cs CC/iWareSql/DataAccess/StoreHandler.cs CC/iWareSql/DataAccess/SysExceptionInfoHandler.cs CC/iWareSql/DataAccess/TaskRequestLogHandler.cs CC/iWareSql/DataAccess/Wms_EquipmentSituationHandler.cs CC/iWareSql/Entity/ExtendEntity/MatModel.cs CC/iWareSql/Entity/ExtendEntity/RealPlaceEntity.cs CC/iWareSql/Entity/ExtendEntity/SyncStockToMesEntity.cs CC/iWareSql/Entity/ExtendEntity/UDT_SYS_ExceptionInfo_Extend.cs CC/iWareSql/Entity/MES/Mes_ResEntity.cs CC/iWareSql/Entity/ParamModel/InformIniInfoToTrussParam.cs CC/iWareSql/Entity/ParamModel/MesMatInfo.cs CC/iWareSql/Entity/ParamModel/Mes_BatchMat_Param.cs CC/iWareSql/Entity/ParamModel/Mes_BatchOrderUPIParam.cs CC/iWareSql/Entity/ParamModel/Srm_ItemParam.cs CC/iWareSql/Entity/ViewMode/AllMatStockViewForStockList.cs CC/iWareSql/Entity/ViewMode/BatchMatGatherView.cs CC/iWareSql/Entity/ViewMode/BatchMatView.cs CC/iWareSql/Entity/ViewMode/BatchOrderUPIView.cs CC/iWareSql/Entity/ViewMode/BoardLoadMaterialView.cs CC/iWareSql/Entity/ViewMode/MatStockCollectView.cs CC/iWareSql/Entity/ViewMode/PlaceLocationView.cs CC/iWareSql/Properties/AssemblyInfo.cs CC/iWareSql/iWareSql.csproj CC/iWareSql/packages.config CC/iWareTestForm/App.config CC/iWareTestForm/InterFaceTestForm.Designer.cs CC/iWareTestForm/InterFaceTestForm.cs CC/iWareTestForm/InterFaceTestForm.resx CC/iWareTestForm/MainForm.Designer.cs CC/iWareTestForm/MainForm.cs CC/iWareTestForm/MainForm.resx CC/iWareTestForm/Model/SelLoadStatus.cs CC/iWareTestForm/Model/SelUnloadingTable.cs CC/iWareTestForm/Model/SimulatorCommonEntity.cs CC/iWareTestForm/Model/TransTypeForOutStorageCompleted.cs CC/iWareTestForm/Model/TypeEnum.cs CC/iWareTestForm/Program.cs CC/iWareTestForm/Properties/AssemblyInfo.cs CC/iWareTestForm/Properties/Resources.Designer.cs CC/iWareTestForm/Properties/Resources.resx CC/iWareTestForm/Properties/Settings.Designer.cs CC/iWareTestForm/Properties/Settings.settings CC/iWareTestForm/Service References/MesWebService/MesWebService1.disco CC/iWareTestForm/Service References/MesWebService/MesWebService1.wsdl CC/iWareTestForm/Service References/MesWebService/Reference.cs CC/iWareTestForm/Service References/MesWebService/Reference.svcmap CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.GetMesMatInfoResponse.datasource CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.GetPlaceInfoResponse.datasource CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.SawingConfirmResponse.datasource CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.SendBatchUPIsResponse.datasource CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.SendInStoreBatchMatsResponse.datasource CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.SendOutStoreBatchMatsResponse.datasource CC/iWareTestForm/Service References/MesWebService/XiGang_iWareTestForm.MesWebService.SendSynchroMatPlaceToMesResponse.datasource CC/iWareTestForm/Service References/MesWebService/configuration.svcinfo CC/iWareTestForm/Service References/MesWebService/configuration91.svcinfo CC/iWareTestForm/Service References/SrmService/Reference.cs CC/iWareTestForm/Service References/SrmService/Reference.svcmap CC/iWareTestForm/Service References/SrmService/XiGang_iWareTestForm.SrmService.IsAllowSendTaskResponse.datasource CC/iWareTestForm/Service References/SrmService/XiGang_iWareTestForm.SrmService.IsReadyResponse.datasource CC/iWareTestForm/Service References/SrmService/XiGang_iWareTestForm.SrmService.SendSrmMoveResponse.datasource CC/iWareTestForm/Service References/SrmService/XiGang_iWareTestForm.SrmService.SrmEntity.datasource CC/iWareTestForm/Service References/SrmService/configuration.svcinfo CC/iWareTestForm/Service References/SrmService/configuration91.svcinfo CC/iWareTestForm/Service References/SrmService/iWareSda.SrmService.SrmEntity.xsd CC/iWareTestForm/Service References/SrmService/service.wsdl CC/iWareTestForm/Service References/SrmService/service.xsd CC/iWareTestForm/Service References/SrmService/service1.xsd CC/iWareTestForm/Service References/TrussService/Reference.cs CC/iWareTestForm/Service References/TrussService/Reference.svcmap CC/iWareTestForm/Service References/TrussService/XiGang_iWareTestForm.TrussService.IsAllowSendTaskResponse.datasource CC/iWareTestForm/Service References/TrussService/XiGang_iWareTestForm.TrussService.IsReadyResponse.datasource CC/iWareTestForm/Service References/TrussService/XiGang_iWareTestForm.TrussService.TrussEntity.datasource CC/iWareTestForm/Service References/TrussService/configuration.svcinfo CC/iWareTestForm/Service References/TrussService/configuration91.svcinfo CC/iWareTestForm/Service References/TrussService/iWareSda.TrussService.TrussEntity.xsd CC/iWareTestForm/Service References/TrussService/service.wsdl CC/iWareTestForm/Service References/TrussService/service.xsd CC/iWareTestForm/Service References/TrussService/service1.xsd CC/iWareTestForm/Utility/BLLHelpler.cs CC/iWareTestForm/Utility/CommonHelper.cs CC/iWareTestForm/Utility/InterfaceSection.cs CC/iWareTestForm/Utility/ReturnBody.cs CC/iWareTestForm/Utility/TestHelper.cs CC/iWareTestForm/Utility/TextHelper.cs CC/iWareTestForm/iWareTest/DialogForm/AddInStoreTaskForm.Designer.cs CC/iWareTestForm/iWareTest/DialogForm/AddInStoreTaskForm.cs CC/iWareTestForm/iWareTest/DialogForm/AddInStoreTaskForm.resx CC/iWareTestForm/iWareTest/DialogForm/TestBatchForm.Designer.cs CC/iWareTestForm/iWareTest/DialogForm/TestBatchForm.cs CC/iWareTestForm/iWareTest/DialogForm/TestBatchForm.resx CC/iWareTestForm/iWareTest/RCSWCSTestForm.Designer.cs CC/iWareTestForm/iWareTest/RCSWCSTestForm.cs CC/iWareTestForm/iWareTest/RCSWCSTestForm.resx CC/iWareTestForm/packages.config CC/iWareTestForm/测试模拟器.csproj CC/iWareUnitTest/App.config CC/iWareUnitTest/CSharpTest.cs CC/iWareUnitTest/OPCTest.cs CC/iWareUnitTest/Properties/AssemblyInfo.cs CC/iWareUnitTest/Properties/DataSources/iWareCC_ASRS.SrmConveyorService.SrmConveyorEntity.datasource CC/iWareUnitTest/Properties/DataSources/iWareCC_ASRS.SrmConveyorService.SrmConveyorStationEntity.datasource CC/iWareUnitTest/Service References/MesWebService/MesWebService.disco CC/iWareUnitTest/Service References/MesWebService/MesWebService.wsdl CC/iWareUnitTest/Service References/MesWebService/Reference.cs CC/iWareUnitTest/Service References/MesWebService/Reference.svcmap CC/iWareUnitTest/Service References/MesWebService/configuration.svcinfo CC/iWareUnitTest/Service References/MesWebService/configuration91.svcinfo CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.GetMesMatInfoResponse.datasource CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.GetPlaceInfoResponse.datasource CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SawingConfirmResponse.datasource CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendBatchUPIsResponse.datasource CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendInStoreBatchMatsResponse.datasource CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendOutStoreBatchMatsResponse.datasource CC/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendSynchroMatPlaceToMesResponse.datasource CC/iWareUnitTest/SrmTaskThreadServiceTest.cs CC/iWareUnitTest/Task_UnitTest.cs CC/iWareUnitTest/UPIs.txt CC/iWareUnitTest/iWareUnitTest.csproj SDA/DLL/HslCommunication.dll SDA/DLL/HslCommunication.xml SDA/LA24030_LuLiPackageLine_SDA.sln SDA/iWareCommon/BusinessHelper/BusinessHelper.cs SDA/iWareCommon/BusinessHelper/WCSConfigHelper.cs SDA/iWareCommon/Common/Dao/CommonDao.cs SDA/iWareCommon/Common/Dao/_system~.ini SDA/iWareCommon/Common/Globle/SysGloble.cs SDA/iWareCommon/Common/Service/CommonService.cs SDA/iWareCommon/Common/Service/_system~.ini SDA/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/Conveyor_CacheEntity.cs SDA/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyorEntity.cs SDA/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyorStationEntity.cs SDA/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEntity/SrmConveyor_DB.cs SDA/iWareCommon/Common/ServiceEntity/Conveyor/ConveyorEnumType/ESrmConveyorAlarm.cs SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/CacheEntity.cs SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm1_DB.cs SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm2_DB.cs SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/SrmEntity.cs SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/SrmInfo.cs SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEntity/Srm_CacheEntity.cs SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmAlarm.cs SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmCmd.cs SDA/iWareCommon/Common/ServiceEntity/Srm/SrmEnumType/ESrmState.cs SDA/iWareCommon/DLL/Castle.Core.dll SDA/iWareCommon/DLL/Castle.Core.xml SDA/iWareCommon/DLL/Common.Logging.Core.dll SDA/iWareCommon/DLL/Common.Logging.Core.xml SDA/iWareCommon/DLL/Common.Logging.Log4Net1213.dll SDA/iWareCommon/DLL/Common.Logging.Log4Net1213.xml SDA/iWareCommon/DLL/Common.Logging.dll SDA/iWareCommon/DLL/Common.Logging.xml SDA/iWareCommon/DLL/EntityFramework.SqlServer.dll SDA/iWareCommon/DLL/EntityFramework.dll SDA/iWareCommon/DLL/Interop.OPCAutomation.dll SDA/iWareCommon/DLL/Newtonsoft.Json.dll SDA/iWareCommon/DLL/Newtonsoft.Json.xml SDA/iWareCommon/DLL/OpcAccess.dll SDA/iWareCommon/DLL/Pager.XML SDA/iWareCommon/DLL/Pager.dll SDA/iWareCommon/DLL/TwinCAT.Ads.dll SDA/iWareCommon/DLL/TwinCatAdsAccess.dll SDA/iWareCommon/DLL/WZ.Useful.Commons.dll SDA/iWareCommon/DLL/log4net.dll SDA/iWareCommon/DLL/log4net.xml SDA/iWareCommon/Properties/AssemblyInfo.cs SDA/iWareCommon/Properties/Resources.Designer.cs SDA/iWareCommon/Properties/Resources.resx SDA/iWareCommon/Utils/AutoSizeFormClass.cs SDA/iWareCommon/Utils/Base64Helper.cs SDA/iWareCommon/Utils/CSharpHelper.cs SDA/iWareCommon/Utils/ClassHelper.cs SDA/iWareCommon/Utils/ComboBoxHelper.cs SDA/iWareCommon/Utils/ConfigHelper.cs SDA/iWareCommon/Utils/DESHelper.cs SDA/iWareCommon/Utils/DataCache.cs SDA/iWareCommon/Utils/DataTableHelper.cs SDA/iWareCommon/Utils/DateTimeHelper.cs SDA/iWareCommon/Utils/EntityPropHelper.cs SDA/iWareCommon/Utils/EnumberHelper.cs SDA/iWareCommon/Utils/ExcelHelper.cs SDA/iWareCommon/Utils/FileHelper.cs SDA/iWareCommon/Utils/FolderHelper.cs SDA/iWareCommon/Utils/HTTP/HTTPService.cs SDA/iWareCommon/Utils/HTTP/HttpHelper.cs SDA/iWareCommon/Utils/HTTP/SSLUtil.cs SDA/iWareCommon/Utils/IEnumerableHelper.cs SDA/iWareCommon/Utils/IntHelper.cs SDA/iWareCommon/Utils/ListHelper.cs SDA/iWareCommon/Utils/Log4Net/C_LogWriter.cs SDA/iWareCommon/Utils/Log4Net/Log4netHelper.cs SDA/iWareCommon/Utils/Log4Net/LogType.cs SDA/iWareCommon/Utils/LogTextHelper.cs SDA/iWareCommon/Utils/MD5Helper.cs SDA/iWareCommon/Utils/MachineHelper.cs SDA/iWareCommon/Utils/MyBase64Helper.cs SDA/iWareCommon/Utils/PageHelper.cs SDA/iWareCommon/Utils/RandomHelper.cs SDA/iWareCommon/Utils/StringHelper.cs SDA/iWareCommon/Utils/SysHelper.cs SDA/iWareCommon/Utils/SysMessageUtil.cs SDA/iWareCommon/Utils/TaskNoHelper.cs SDA/iWareCommon/Utils/TextHelper.cs SDA/iWareCommon/Utils/ThreadHelper.cs SDA/iWareCommon/Utils/TreeHelper.cs SDA/iWareCommon/Utils/ValidateDataHelper.cs SDA/iWareCommon/Utils/ZipHelper.cs SDA/iWareCommon/iWareCommon.csproj SDA/iWareCommon/log4net_iWare -编辑版.config SDA/iWareCommon/log4net_iWare.config SDA/iWareModel/Entity/AGV/AGVRetModel.cs SDA/iWareModel/Entity/AGV/AGVRetModelJSON.txt SDA/iWareModel/Entity/BindableBase.cs SDA/iWareModel/Entity/Context.cs SDA/iWareModel/Entity/Device/DeviceCoordinat.cs SDA/iWareModel/Entity/EnumberEntity.cs SDA/iWareModel/Entity/Huffman.cs SDA/iWareModel/Entity/IBuilder.cs SDA/iWareModel/Entity/ICommonEntity.cs SDA/iWareModel/Entity/IDirector.cs SDA/iWareModel/Entity/IHandler.cs SDA/iWareModel/Entity/IService.cs SDA/iWareModel/Entity/IStrategy.cs SDA/iWareModel/Entity/ITreeEntity.cs SDA/iWareModel/Entity/LZW.cs SDA/iWareModel/Entity/ListItem.cs SDA/iWareModel/Entity/MES/MesRetModel.cs SDA/iWareModel/Entity/MES/MesRetModel2.cs SDA/iWareModel/Entity/MES/MesRetProductModel.cs SDA/iWareModel/Entity/MES/MesUpdateOnlineStatusParamModel.cs SDA/iWareModel/Entity/MES/Mes_BtjReceiveModel.cs SDA/iWareModel/Entity/QueryParam.cs SDA/iWareModel/Entity/ResponseListDataEntity.cs SDA/iWareModel/Entity/ResponseListDataPageEntity.cs SDA/iWareModel/Entity/ResponseSimpleDataEntity.cs SDA/iWareModel/Entity/ResultModel/FunRetEntity.cs SDA/iWareModel/Entity/ResultModel/MessageModel.cs SDA/iWareModel/Entity/ResultModel/ResEntity.cs SDA/iWareModel/Entity/SalverMaterialBind/C_AnalyzeMaterialPostParam.cs SDA/iWareModel/Entity/SalverMaterialBind/C_Task_InStoreSlaverParam.cs SDA/iWareModel/Entity/SalverMaterialBind/MyCodeItems.cs SDA/iWareModel/Entity/SysUser.cs SDA/iWareModel/Entity/System/ColumnsModel.cs SDA/iWareModel/Entity/System/PropertieModel.cs SDA/iWareModel/Entity/TaskSequenceEntity.cs SDA/iWareModel/Entity/ValidateModel.cs SDA/iWareModel/Entity/ValidateResModel.cs SDA/iWareModel/Entity/WMS/AddMainTaskPostParam.cs SDA/iWareModel/Entity/WMS/UpdateEngineInfoParam.cs SDA/iWareModel/Entity/_system~.ini SDA/iWareModel/EnumType/EDbError.cs SDA/iWareModel/EnumType/EDevice/AGV/AGVState.cs SDA/iWareModel/EnumType/EDevice/DeviceTaskStatusEnum.cs SDA/iWareModel/EnumType/EDevice/EDevice.cs SDA/iWareModel/EnumType/EDevice/EDeviceType.cs SDA/iWareModel/EnumType/EDevice/ESrmAlarm.cs SDA/iWareModel/EnumType/EDevice/Line/LineLocation.cs SDA/iWareModel/EnumType/EDevice/Line/RgvErrorReason.cs SDA/iWareModel/EnumType/EDevice/Line/RgvInOutFlag.cs SDA/iWareModel/EnumType/EDevice/Line/RgvIsDie.cs SDA/iWareModel/EnumType/EDevice/Line/RgvIsStock.cs SDA/iWareModel/EnumType/EDevice/Line/RgvWorkMode.cs SDA/iWareModel/EnumType/EDevice/Rgv/ERgvAlarm.cs SDA/iWareModel/EnumType/EDevice/Rgv/ERgvBodyTest.cs SDA/iWareModel/EnumType/EDevice/Rgv/ERgvCmd.cs SDA/iWareModel/EnumType/EDevice/Rgv/ERgvEvent.cs SDA/iWareModel/EnumType/EDevice/Rgv/ERgvMode.cs SDA/iWareModel/EnumType/EDevice/Rgv/ERgvState.cs SDA/iWareModel/EnumType/EDevice/Rgv/RgvLocation.cs SDA/iWareModel/EnumType/EDevice/Srm/ESrmCmd.cs SDA/iWareModel/EnumType/EDevice/Srm/ESrmForkPosition.cs SDA/iWareModel/EnumType/EDevice/Srm/ESrmMode.cs SDA/iWareModel/EnumType/EDevice/Srm/ESrmState.cs SDA/iWareModel/EnumType/EDevice/Srm/ESrmTaskType.cs SDA/iWareModel/EnumType/ExceptionEnum.cs SDA/iWareModel/EnumType/PLC/PLCServiceTypeEnum.cs SDA/iWareModel/EnumType/RequestStatusEnum.cs SDA/iWareModel/EnumType/StackSequenceSortRule.cs SDA/iWareModel/EnumType/Sys/LanguageEnum.cs SDA/iWareModel/EnumType/Sys/ValidateIntEnum.cs SDA/iWareModel/EnumType/TaskExcuteTypeEnum.cs SDA/iWareModel/EnumType/ThreadDirectionEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/AddTransferTaskEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/DeviceTaskTypeEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/MainInOutFlagEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/MainTaskStatusEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/MainTaskTypeEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/MaterialTypeEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/Plan/OutPlanStateEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/Plan/OutPlanTypeEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/Plan/OutTaskDetailStateEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/Plan/OutTaskModeEnum.cs SDA/iWareModel/EnumType/XiGangPublicCommon/Salver_V_Station_StateEnum.cs SDA/iWareModel/Properties/AssemblyInfo.cs SDA/iWareModel/iWareModel.csproj SDA/iWareSda/App.config SDA/iWareSda/Common/SdaHelper.cs SDA/iWareSda/Common/Struct/WareSdaStruct.cs SDA/iWareSda/DLL/EntityFramework.SqlServer.dll SDA/iWareSda/DLL/EntityFramework.dll SDA/iWareSda/DLL/Interop.OPCAutomation.dll SDA/iWareSda/DLL/Newtonsoft.Json.dll SDA/iWareSda/DLL/Newtonsoft.Json.xml SDA/iWareSda/DLL/OpcAccess.dll SDA/iWareSda/DLL/S7.Net.dll SDA/iWareSda/DLL/WZ.Useful.Commons.dll SDA/iWareSda/DLL/log4net.dll SDA/iWareSda/DLL/log4net.xml SDA/iWareSda/DLL/logtxt.dll SDA/iWareSda/Devices/1-Srm/SrmModel/DB/SrmDB2Obj.cs SDA/iWareSda/Devices/1-Srm/SrmModel/DB/SrmDBForRead.cs SDA/iWareSda/Devices/1-Srm/SrmModel/DB/SrmDBForWrite.cs SDA/iWareSda/Devices/1-Srm/SrmModel/SrmEntity.cs SDA/iWareSda/Devices/1-Srm/SrmModel/SrmView.cs SDA/iWareSda/Devices/1-Srm/SrmModel/Srm_CacheEntity.cs SDA/iWareSda/Devices/1-Srm/SrmService/ISrmService.cs SDA/iWareSda/Devices/1-Srm/SrmService/SrmService.cs SDA/iWareSda/Devices/2-Line/LineModel/DB/LineDB2Obj.cs SDA/iWareSda/Devices/2-Line/LineModel/DB/LineDBForRead.cs SDA/iWareSda/Devices/2-Line/LineModel/DB/LineDBForWrite.cs SDA/iWareSda/Devices/2-Line/LineModel/LineEntity.cs SDA/iWareSda/Devices/2-Line/LineModel/LineView.cs SDA/iWareSda/Devices/2-Line/LineModel/Line_CacheEntity.cs SDA/iWareSda/Devices/2-Line/LineService/ILineService.cs SDA/iWareSda/Devices/2-Line/LineService/LineService.cs SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/DB/HuscoLineDB2Obj.cs SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/DB/HuscoLineDBForRead.cs SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/DB/HuscoLineDBForWrite.cs SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/HuscoLineEntity.cs SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/HuscoLineView.cs SDA/iWareSda/Devices/3-HuscoLine/HuscoLineModel/HuscoLine_CacheEntity.cs SDA/iWareSda/Devices/3-HuscoLine/HuscoLineService/HuscoLineService.cs SDA/iWareSda/Devices/3-HuscoLine/HuscoLineService/IHuscoLineService.cs SDA/iWareSda/Devices/3-Rgv/RgvModel/DB/RgvComm.cs SDA/iWareSda/Devices/3-Rgv/RgvModel/DB/RgvDB2Obj.cs SDA/iWareSda/Devices/3-Rgv/RgvModel/DB/RgvDBForRead.cs SDA/iWareSda/Devices/3-Rgv/RgvModel/DB/RgvDBForWrite.cs SDA/iWareSda/Devices/3-Rgv/RgvModel/RgvEntity.cs SDA/iWareSda/Devices/3-Rgv/RgvModel/RgvView.cs SDA/iWareSda/Devices/3-Rgv/RgvModel/Rgv_CacheEntity.cs SDA/iWareSda/Devices/3-Rgv/RgvService/IRgvService.cs SDA/iWareSda/Devices/3-Rgv/RgvService/RgvService.cs SDA/iWareSda/Interface/IDevice.cs SDA/iWareSda/IwareICO.ico SDA/iWareSda/LOGO.ico SDA/iWareSda/Model/DeviceWarningInfo.cs SDA/iWareSda/Model/SdaResEntity.cs SDA/iWareSda/PLCService/Default/AB_HslCommunicationService.cs SDA/iWareSda/PLCService/Default/SS7.cs SDA/iWareSda/PLCService/Default/Siemens_HslCommunicationService.cs SDA/iWareSda/PLCService/Models/BasePlcParam.cs SDA/iWareSda/PLCService/Models/HslCommunicationParam.cs SDA/iWareSda/PLCService/Models/SS7Param.cs SDA/iWareSda/PLCService/PLCFactory.cs SDA/iWareSda/PLCService/PLCService.cs SDA/iWareSda/Program.cs SDA/iWareSda/Properties/AssemblyInfo.cs SDA/iWareSda/Properties/Resources.Designer.cs SDA/iWareSda/Properties/Resources.resx SDA/iWareSda/Properties/Settings.Designer.cs SDA/iWareSda/Properties/Settings.settings SDA/iWareSda/Robot.ico SDA/iWareSda/SdaMainForm.Designer.cs SDA/iWareSda/SdaMainForm.cs SDA/iWareSda/SdaMainForm.resx SDA/iWareSda/iWareSda.csproj SDA/iWareSda/packages.config SDA/iWareUnitTest/App.config SDA/iWareUnitTest/OPCTest.cs SDA/iWareUnitTest/Properties/AssemblyInfo.cs SDA/iWareUnitTest/Properties/DataSources/iWareCC_ASRS.SrmConveyorService.SrmConveyorEntity.datasource SDA/iWareUnitTest/Properties/DataSources/iWareCC_ASRS.SrmConveyorService.SrmConveyorStationEntity.datasource SDA/iWareUnitTest/Service References/MesWebService/MesWebService.disco SDA/iWareUnitTest/Service References/MesWebService/MesWebService.wsdl SDA/iWareUnitTest/Service References/MesWebService/Reference.cs SDA/iWareUnitTest/Service References/MesWebService/Reference.svcmap SDA/iWareUnitTest/Service References/MesWebService/configuration.svcinfo SDA/iWareUnitTest/Service References/MesWebService/configuration91.svcinfo SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.GetMesMatInfoResponse.datasource SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.GetPlaceInfoResponse.datasource SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SawingConfirmResponse.datasource SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendBatchUPIsResponse.datasource SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendInStoreBatchMatsResponse.datasource SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendOutStoreBatchMatsResponse.datasource SDA/iWareUnitTest/Service References/MesWebService/iWareUnitTest.MesWebService.SendSynchroMatPlaceToMesResponse.datasource SDA/iWareUnitTest/UPIs.txt SDA/iWareUnitTest/iWareUnitTest.csproj