123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- using Newtonsoft.Json;
- using System.Runtime.InteropServices;
- namespace MainForm.ClassFile.XiaomiAPI
- {
- /// <summary>
- /// 小米 MqttClient类 - API拓展方法
- /// ⾮结构化(图⽚/⾳频/视频/⽂本/压缩包)
- /// </summary>
- public partial class XiaomiMqttClient_Extend : XiaomiMqttClient
- {
- /// <summary>
- /// ⾮结构化- 事件Id
- /// </summary>
- private static string UploadFileId { get; set; } = "x5/file/upload/mqtt";
- /// <summary>
- /// ⾮结构化- 事件方法
- /// </summary>
- /// <param name="msg">事件数据;Json</param>
- /// <param name="dataId">自定义事件Id;如:guid</param>
- /// <returns></returns>
- public static UploadFileResponse Write_UploadFile(UploadFileRequest request, string dataId = "")
- {
- UploadFileResponse response = new UploadFileResponse();
- int result = 0;
- string msg = JsonConvert.SerializeObject(request);
- byte[] bytes = ToUTF8(msg);
- // 发送
- if (string.IsNullOrEmpty(dataId))
- result = Write(UploadFileId, bytes);
- else
- result = WriteWithDataId(UploadFileId, bytes, dataId);
- response.code = result;
- // ZS 未完
- return response;
- }
- #region 入参
- /// <summary>
- /// ⾮结构化- 参数2
- /// 注意事项:
- /// • 图⽚命名需要遵循⼩⽶标准,按照固定栏位排布,不同栏位存放的信息类别不同,不同栏位间使⽤
- /// 下划线‘_’进⾏分隔。若某个栏位没有值则使⽤占位符‘-’代替。同⼀个栏位内的多个字段间使⽤‘-’间隔。如下:
- /// [项⽬]_[⼯站]_[SN]_[物料 - 功能]_[测试时间]_[定位/检测/测量结果]_[是否原图-当前第⼏张-共⼏张]
- /// </summary>
- public class UploadFileRequest
- {
- /// <summary>
- /// ⽂件所属包
- /// ${file_category}/${file_type}/${项⽬号}/${⽣产阶段}/${运⾏模式}/${过站结果}/${装备编码}/${ sn}/${ pass_station_id}
- /// • 其中file_category的枚举值为:
- /// ◦ IMAGE
- /// ◦ TEXT
- /// • 若对应字段的值为空,则使⽤默认值UNKNOWN
- /// 注意:⾸位不能出现/,否则会出现路径错误问题。如:
- /// 正确⽰例IMAGE/IMAGE/N3/debug/online/PASS/MPA-0001/P320N000006B/382f55e9-c2bb
- /// 错误⽰例:/IMAGE/IMAGE/N3/debug/online/PASS/MPA-0001/P320N000006B/382f55e9-c2bb
- /// 对⽐之前的要求,改动点如下:
- /// • 在原有路径的基础上增加前缀:
- /// ◦ 图⽚对应的是:IMAGE/IMAGE/${项⽬}/${⽣产阶段}/${ 运⾏模式}
- /// ◦ ⽂本对应的是:TEXT/${file_type}/${ 项⽬}/${⽣产阶段}/${ 运⾏模式}
- /// • 在最后⼀个路径层级前,插⼊过站ID:pass_station_id
- /// </summary>
- public string bucket { get; set; } = string.Empty;
- /// <summary>
- /// ⽂件名
- /// 故障事件名称,同数据字典中的事件名称。
- /// </summary>
- public string name { get; set; } = string.Empty;
- /// <summary>
- /// ⽂件内容
- /// MultipartFile
- /// </summary>
- public string file { get; set; } = string.Empty;
- /// <summary>
- /// ⽂件唯⼀标识
- /// 随机⼀串uuid发给我们
- /// </summary>
- public string uuid { get; set; } = string.Empty;
- /// <summary>
- /// md5;传空
- /// </summary>
- public string md5 { get; set; } = string.Empty;
- /// <summary>
- /// 是否上云
- /// 是否上传云端,默认传true
- /// </summary>
- public bool uploadCloud { get; set; }
- /// <summary>
- /// 是否通知mqtt
- /// 默认传true
- /// </summary>
- public bool informMqtt { get; set; }
- /// <summary>
- /// 发送通知时的负载
- /// 必填
- /// </summary>
- public MqttPayload mqttPayload { get; set; } = new MqttPayload();
- }
- /// <summary>
- /// ⾮结构化- 参数 - mqttPayload透传的元数据
- /// 注意事项:
- /// • 图⽚命名需要遵循⼩⽶标准,按照固定栏位排布,不同栏位存放的信息类别不同,不同栏位间使⽤
- /// 下划线‘_’进⾏分隔。若某个栏位没有值则使⽤占位符‘-’代替。同⼀个栏位内的多个字段间使⽤‘-’间隔。如下:
- /// [项⽬]_[⼯站]_[SN]_[物料 - 功能]_[测试时间]_[定位/检测/测量结果]_[是否原图-当前第⼏张-共⼏张]
- /// </summary>
- public class MqttPayload
- {
- /// <summary>
- /// ⼯⼚Id
- /// 对应⼯⼚Id,同过站结果中⼯⼚Id
- /// </summary>
- public string factory { get; set; } = string.Empty;
- /// <summary>
- /// 项⽬号
- /// 对应当前⽣产的项⽬号,从加载的⼯程名称中获得(需确认加载⼯程项⽬是否第⼀栏为项⽬号信息)。
- /// 如M3-MB,取-前⾯ 第⼀个栏⽬的值,即M3。如获取不到或者为空,取默认值UNKNOWN
- /// </summary>
- public string project_name { get; set; } = string.Empty;
- /// <summary>
- /// ⽣产阶段
- /// 对应⽣产阶段,同配置参数中productMode
- /// </summary>
- public string product_mode { get; set; } = string.Empty;
- /// <summary>
- /// 线体
- /// 对应线体编码,同过站结果中线体编码
- /// </summary>
- public string line_no { get; set; } = string.Empty;
- /// <summary>
- /// ⼯站
- /// 传空,同过站结果⼯站字段。
- /// </summary>
- public string work_station_no { get; set; } = string.Empty;
- /// <summary>
- /// 装备
- /// 同device_code,即装备编码(同过站结果)
- /// </summary>
- public string equipment_no { get; set; } = string.Empty;
- /// <summary>
- /// ⼯位
- /// 对应⼯位Id,同MES中的stationId
- /// </summary>
- public string station_no { get; set; } = string.Empty;
- /// <summary>
- /// ⽂件ID
- /// 同上⾯uuid
- /// </summary>
- public string file_id { get; set; } = string.Empty;
- /// <summary>
- /// ⽂件名
- /// ⽂件名称
- /// </summary>
- public string file_name { get; set; } = string.Empty;
- /// <summary>
- /// 产品SN
- /// 产品码
- /// </summary>
- public string sn { get; set; } = string.Empty;
- /// <summary>
- /// ⽂件的⽣成时间
- /// </summary>
- public string opt_time { get; set; } = string.Empty;
- /// <summary>
- /// ⽂件类型
- /// 根据⽂件的不同⽽存在差异,需要沟通获取;
- /// • 图⽚:IMAGE
- /// • SPI过站明细:SPI_pass_station_item_data_txt
- /// • AOI过站明细:AOI_pass_station_item_data_txt
- /// • 贴⽚机过站明细:PCBM_pass_station_item_data_DAT
- /// • 钢⽹检查机过站明细:SMTM_pass_station_item_data_xlsx
- /// </summary>
- public string file_type { get; set; } = string.Empty;
- /// <summary>
- /// ⽂件类别
- /// • 图⽚:IMAGE
- /// • ⽂本:TEXT
- /// </summary>
- public string file_category { get; set; } = string.Empty;
- /// <summary>
- /// ⾃定义标签信息
- /// 业务⽅⾃定义的标签信息,没有可以不传。多个标签,可以⽤下划线间隔:xx_xx_xxx。AOI装备需要上传此字段,⽤于区分整版图和元器件的图⽚。
- /// 枚举值:
- /// • whole
- /// • part
- /// </summary>
- public string tag { get; set; } = string.Empty;
- /// <summary>
- /// 关联业务信息 - 过站结果id
- /// 该⾮结构化数据所关联的结构化数据的信息。需要做好转义处理。这⾥传递过站结果id(同MES那边的uuidInspection字段的值),
- /// 格式为:[{\"pass_station_id\":\"XXXXX\"}]。
- /// 如:"reference_info":"[{\"pass_station_id\":\"d092c4db-0d93-49c3-96b9-40caf8d7c812\"}]"
- /// </summary>
- public string reference_info { get; set; } = string.Empty;
- }
- #endregion 入参
- #region 出参
- /// <summary>
- /// ⾮结构化 - 返回值
- /// </summary>
- public class UploadFileResponse
- {
- /// <summary>
- /// 响应状态码
- /// 200:成功
- /// 400:参数错误
- /// 500:服务器内部错误
- /// </summary>
- public int code { get; set; }
- /// <summary>
- /// 响应信息
- /// 对当前响应结果做具体描述
- /// </summary>
- public string msg { get; set; } = string.Empty;
- /// <summary>
- /// 响应数据
- /// 上传结果,包含⽂件链接
- /// </summary>
- public UploadResult data { get; set; } = new UploadResult();
- }
- /// <summary>
- /// ⾮结构化 - 返回值 - 上传结果
- /// </summary>
- public class UploadResult
- {
- /// <summary>
- /// 获取⽂件的唯⼀标识符
- /// </summary>
- public string uuid { get; set; } = string.Empty;
- }
- #endregion 出参
- }
- }
|