using CentralControl; using DataLinkMesWork; using Newtonsoft.Json; using SlMesDbIterface; using System; using System.Collections.Generic; using System.Data; using System.Threading; /// /// /// namespace MesWork { /// /// 质量数据的拆解和存储 /// public class MesWork_QC_upload { /// /// 同步执行任务 /// public static void SyncTask_UploadMeasureData(string id_tagCF) { new Thread(new ThreadStart(delegate () { string msg = ""; try { // 查询质量数据 bool isUploadOk = false; var sql_AMS_Plan = $"SELECT * FROM 质量数据上传_视图" + $" where [接口输出] != 1 and id_tagCF = {id_tagCF} order by [工位号],[TagID] "; bool isOk = SqlOperation.ExecuteSql(sql_AMS_Plan, out DataTable dt_MeasureData, out string err1); if (isOk) { if(dt_MeasureData.Rows.Count > 0) { isUploadOk = upLoadData(dt_MeasureData, out msg); } } if(isUploadOk) { upLoadUpdate(id_tagCF, 1, msg); } else { upLoadUpdate(id_tagCF, 2, msg); } } catch (Exception err) { msg = err.Message; upLoadUpdate(id_tagCF, 2, msg); } })) { IsBackground = true }.Start(); } public static bool upLoadData(DataTable dt, out string msg) { try { List SapMeasureDataList = new List(); string dateShort = new DateTime().ToString("yyyyMMdd"); for (int i = 0; i < dt.Rows.Count; i++) { SapMeasureData sapMeasureData = new SapMeasureData(); sapMeasureData.ID = dt.Rows[i]["Id"].ToString(); sapMeasureData.operationCode = dt.Rows[i]["工位代码"].ToString(); sapMeasureData.itemCode = dt.Rows[i]["订货号"].ToString(); sapMeasureData.productCode = dt.Rows[i]["EngineID"].ToString(); sapMeasureData.characterName = dt.Rows[i]["测量位置"].ToString() + dt.Rows[i]["测量项目"].ToString(); sapMeasureData.content = ""; sapMeasureData.cNumber = ""; sapMeasureData.positionNumber = dt.Rows[i]["列位置"].ToString(); sapMeasureData.specialCategory = ""; sapMeasureData.cImportance = ""; sapMeasureData.unit = dt.Rows[i]["测量单位"].ToString(); sapMeasureData.normalMin = Convert.ToInt32(dt.Rows[i]["下限值"]); sapMeasureData.normalMax = Convert.ToInt32(dt.Rows[i]["上限值"]); sapMeasureData.checkInput = dt.Rows[i]["TagValue"].ToString(); sapMeasureData.isNormal = Convert.ToInt32(dt.Rows[i]["IsGoodBad"]); sapMeasureData.checkToolNumber = ""; sapMeasureData.checkToolName = ""; sapMeasureData.machineNumber = ""; sapMeasureData.machineSpindleNumber = ""; sapMeasureData.machineClampingNumber = ""; sapMeasureData.inputDate = dt.Rows[i]["操作时间"].ToString(); sapMeasureData.reMarks = ""; SapMeasureDataList.Add(sapMeasureData); } ResponseBody_WebAPI_Boms res = CALL_Interfalce_WebAPI.RequestPost_UploadMeasureData_To_SAP(JsonConvert.SerializeObject(SapMeasureDataList)); if (res.code == "200") { msg = res.message; return true; } else { msg = res.message; return false; } } catch (Exception err) { msg = err.Message; return false; } } public static void upLoadUpdate(string id_tagCF, int isOk, string msg) { try { var sql_AMS_Plan = $"UPDATE [dbo].[测量数据合格] SET [接口输出] = {isOk},数据说明 = '{msg}'" + $" where [id_tagCF] = '{id_tagCF}'"; DataAccess.ExecuteDataTable(sql_AMS_Plan, out DataTable dt_MeasureData); } catch (Exception err) { } } } class SapMeasureData { /* id number(12) id line_id varchar2(10) y 生产线id operation_code varchar2(10) y 工位编码 item_code varchar2(255) y 物料编码 product_code varchar2(16) y 序列号 character_name varchar2(255) y 特性名称 content varchar2(255) y 特性内容(产品/过程规格/公差)φ是大写 c_number varchar2(40) y 特性编号 position_number varchar2(40) y 位置编号 special_category varchar2(10) y 特殊特性分类 c_importance varchar2(10) y 特性重要度 unit varchar2(10) y 单位 normal_min number y 合格下限 normal_max number y 合格上限 check_input varchar2(255) y 质检结果 isnormal number(1) y 是否合格(0:否;1:是;) check_tool_number varchar2(30) y 测量设备编号 check_tool_name varchar2(80) y 测量设备名称 machine_number varchar2(40) y null 加工设备编号 machine_spindle_number varchar2(40) y null 加工设备主轴编号 machine_clamping_number varchar2(40) y 加工设备工装编号 input_date date y 录入时间 remarks varchar2(255) y 备注 */ public string ID; public string lineId = MesWorkForm.LineID_Product; public string operationCode; public string itemCode; public string productCode; public string characterName; public string content; public string cNumber; public string positionNumber; public string specialCategory; public string cImportance; public string unit; public int normalMin; public int normalMax; public string checkInput; public int isNormal; public string checkToolNumber; public string checkToolName; public string machineNumber; public string machineSpindleNumber; public string machineClampingNumber; public string inputDate; public string reMarks; } class SapMeasureDataResult { public List SapMeasureDataList; } }