2020/07/28 更新 1、修改项目架构。文件夹及项目配置可以更清晰的查看。 2、合并之前三个解决方案为一个,按文件夹进行分类 3、将之前读取数据的查找方式,均改为从内存中读取,项目初始化时更新到全局变量,在App.cs中。 4、更新任务表的方式更改,先更新数据库,更新成功后更新缓存。 5、历史任务表不从程序中进行插入,改为触发器,删除任务时自动插入历史任务表(* 但在删除任务,取消任务时,需要更新任务表中errormsg字段,方便后期查找问题及记录) 6、界面略微调整。 7、任务表中右键新增 强制删除任务,修改任务状态。因之前修改数据库恢复故障已不可取(只更新数据库无法更新程序缓存),故新增此功能替代直接操作数据库的操作。
项目架构
├─bin
│ ├─Debug
│ │ └─net461 (生成的EXE文件)
│ │
│ └─Release
│ └─net461 (生成的EXE文件)
│
├─Model
│ ├─Comm
│ │ BllResult.cs (通用 方法返回类)
│ │ EnumMsg.cs (枚举类,包含各个枚举)
│ │ F_ServiceModel.cs (设备业务处理总类,包含设备处理需要的属性和接口,所有设备都是由这个类实现不一样的接口实现的)
│ │ I_OpcHelp.cs (设备通讯接口类,如西门子,三菱plc,都是实现此接口)
│ │
│ ├─Entity
│ │ I_Device.cs (数据库设备表)
│ │ I_Device_Address.cs(数据库设备地址表)
│ │ I_Pose.cs (数据库坐标表)
│ │ I_Task.cs (数据库任务表)
│ │ I_Task_His.cs (数据库历史任务表,暂时无用,保留位以后做历史任务查询用)
│ │ T_BaseNumber.cs (数据库计数表,如任务号)
│ │ T_TaskFlow.cs (任务流程表)
│ │
│ ├─PageModel
│ │ BindComboxEnumType.cs (页面ComBox,枚举转换类)
│ │ BindComboxType.cs (页面ComBox,枚举转换类 附属属性类)
│ │ ValueConverter.cs (页面通用枚举转换类)
│ │
│ ├─PushModel
│ │ PM_ConveryorError.cs (推送 输送线异常显示类)
│ │ PM_SrmState.cs (推送 堆垛机状态类)
│ │
│ ├─ViewModel
│ │ │ VM_ConveyorErrorRead.cs (页面显示 输送线异常类 读取)
│ │ │ VM_ConveyorErrorWrite.cs (页面显示 输送线异常类 写入)
│ │ │ VM_PointStateRead.cs (页面显示 输送线点状态类 读取)
│ │ │ VM_PointStateWrite.cs (页面显示 输送线点状态类 写入)
│ │ │ VM_SrmRead.cs (页面显示 堆垛机状态类 读取)
│ │ │ VM_SrmWrite.cs(页面显示 堆垛机状态类 写入)
│ │ │ VM_StationACK.cs (页面显示 输送线ACK 写入)
│ │ │ VM_StationDACK.cs(页面显示 输送线到达 写入)
│ │ │ VM_StationDR.cs(页面显示 输送线地址请求 读取)
│ │ │ VM_StationPR.cs(页面显示 输送线地址到达 读取)
│ │ │
│ │ └─Interface
│ │ VM_ReadModel.cs (页面显示 读取类总接口,所有读取类都要实现它)
│ │ VM_WriteModel.cs(页面显示 写入类总接口,所有写入类都要实现它)
│ │
│ └─WebApi
│ ├─Request (WebAip 请求参数类)
│ │ ReqEmptyOut.cs
│ │ ReqOverrideHandle.cs
│ │ ReqStationInfo.cs
│ │ ReqTaskAssign.cs
│ │ ReqTaskCancel.cs
│ │ ReqTaskFinish.cs
│ │ ReqTaskInfo.cs
│ │ ReqTaskStatusFeedBack.cs
│ │ ReqWareCellAllocation.cs
│ │
│ └─Response (WebAip 回复参数类)
│ ApiResultModel.cs
│ ResGetWareCellAllocation.cs
│ ResOverrideHandle.cs
│ ResStationInfo.cs
│ ResTaskInfo.cs
│
├─Page
│ │ DeviceView.xaml (设备页面)
│ │ DeviceView.xaml.cs
│ │ PointStateView.xaml (输送线点状态页面)
│ │ PointStateView.xaml.cs
│ │ SrmView.xaml(堆垛机状态页面)
│ │ SrmView.xaml.cs
│ │ StationView.xaml(输送线业务页面)
│ │ StationView.xaml.cs
│ │ TaskFlowView.xaml(任务流程页面)
│ │ TaskFlowView.xaml.cs
│ │ TaskView.xaml(任务状态页面)
│ │ TaskView.xaml.cs
│ │
│ └─HandView
│ HandDeviceTask.xaml(手动下发设备任务页面)
│ HandDeviceTask.xaml.cs
│ HandSrmTaskRevert.xaml(堆垛机异常恢复任务页面)
│ HandSrmTaskRevert.xaml.cs
│ HandTask.xaml(手动任务页面)
│ HandTask.xaml.cs
│ HandView.xaml(手动页面)
│ HandView.xaml.cs
│ TaskStateChangexaml.xaml(任务状态修改页面)
│ TaskStateChangexaml.xaml.cs
│
├─Properties
│ app.manifest(赋予程序管理员权限调试运行)
│ AssemblyInfo.cs(解决方案初始化文件)
│ Resources.Designer.cs(解决方案资源文件)
│ Resources.resx
│
├─Resources
│ ├─Dll
│ │ DMSkin.AduDesign.dll(界面UI框架)
│ │ DMSkin.Core.dll(界面UI框架)
│ │ DMSkin.dll(界面UI框架)
│ │ HslCommunication.dll(暂无用)
│ │
│ └─Img(图标及图片文件夹)
│ Icon.ico
│ mainbg.jpg
│ SIcon.xaml
│ 任务图标.png
│ 任务流程.png
│ 任务流程1.png
│ 堆垛机状态.png
│ 手动操作.png
│ 日志监控.png
│ 查询.png
│ 流程.png
│ 状态1.png
│ 状态2.png
│ 状态3.png
│ 系统信息.png
│
└─Service
├─Comm
│ BaseBll.cs(基本处理类,包含接口,任务,状态等业务处理)
│ Extends.cs(枚举处理类)
│ InitBll.cs(程序初始化载入类)
│ LogExecute.cs(日志输出类)
│ Timeout.cs(自定义超时处理类,暂时无用)
│
├─DataBase
│ BaseDal.cs(数据库 类型,属性 初始类)
│ DbContext.cs(数据库操作实现类)
│
├─DevicesExcute
│ │ ConveyorErrorExcute.cs(输送线异常处理类)
│ │ PointStateExcute.cs(输送线点状态处理类)
│ │ SingleSrmExcute.cs(输送线堆垛机处理类)
│ │ StationDRExcute.cs(输送线地址请求处理类)
│ │ StationPRExcute.cs(输送线到达处理类)
│ │
│ └─Interface
│ I_Excute.cs(设备处理类接口,所有设备处理都需要继承此接口)
│ I_Excute_S.cs(堆垛机处理类接口,所有设备处理都需要继承此接口,比I_Excute 多了一些手动处理的接口)
│
├─OPC
│ MelsecMcHelp.cs(三菱PLC通讯实现类)
│ SiemensHelp.cs(西门子PLC通讯实现类)
│
└─WebService
├─Client
│ WcsWebApiClient.cs(WebApi请求WMS接口,实现类)
│
├─Common
│ ApiErrorResultAttribute.cs(WebApi服务端,异常拦截类,对出现的异常进行统一的封装处理)
│ ApiResultAttribute.cs(WebApi服务端,返回类包装,包装成统一的样式返回)
│ PlainTextTypeFormatter.cs(WebApi服务端,content-type请求头设置类)
│ SwaggerConfig.cs(WebApi服务端,接口显示类,将接口通过网页形式进行展示)
│ Swagger_lan.js(WebApi服务端,接口显示类,将接口通过网页形式进行展示)
│
└─Service
WcsPushBuild.cs(广播推送实现类)
WcsWebApiBuild.cs(WebApi服务端部署类)
WcsWebApiController.cs(WebApi客户端接口实现类)