| | |
| | | using System.Data; |
| | | using Dm.Config; |
| | | using Masuit.Tools; |
| | | using MES.Service.DB; |
| | | using MES.Service.Dto.service; |
| | | using MES.Service.Modes; |
| | | using MES.Service.util; |
| | | using Newtonsoft.Json; |
| | | using SqlSugar; |
| | | using System.Data; |
| | | using System.Security.Cryptography; |
| | | using System.Text; |
| | | using System.Text.Json.Serialization; |
| | | using DbType = System.Data.DbType; |
| | | |
| | | |
| | |
| | | |
| | | public class LljService |
| | | { |
| | | private static readonly HttpClient client = new(); |
| | | |
| | | public (List<LtsLlj> item, int TotalCount) GetPage(XJPageResult queryObj) |
| | | { |
| | | if (queryObj.createUser.IsNullOrEmpty()) |
| | | { |
| | | return ([], 0); |
| | | } |
| | | if (queryObj.createUser.IsNullOrEmpty()) return ([], 0); |
| | | |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | |
| | | |
| | | var totalCount = 0; |
| | | |
| | | var itemIds = GetQaItem(db, queryObj.createUser); |
| | | //var itemIds = GetQaItem(db, queryObj.createUser); |
| | | |
| | | var pageList = db.Queryable<LtsLlj>() |
| | | var pageList = db |
| | | .Queryable<LtsLlj, IqcBefore, VMesQaItemsDetect01, SysUser, |
| | | IqcBeforeFrom, SysUser, InspectorChangeLog, SysUser>((a, b, d, |
| | | e, f, g, h, i) => |
| | | new JoinQueryInfos(JoinType.Left, a.ItemId == b.ItemId, |
| | | JoinType.Inner, a.Id == d.Id, |
| | | JoinType.Left, a.CreateBy == e.Fcode, |
| | | JoinType.Left, f.Id == b.PID, |
| | | JoinType.Left, f.Sid == g.Fid, |
| | | JoinType.Left, |
| | | a.ReleaseNo == h.InspectionNo && h.IsValid == "Y", |
| | | JoinType.Left, i.Fcode == h.Inspector |
| | | )) |
| | | .WhereIF( |
| | | StringUtil.IsNotNullOrEmpty(queryObj.result) && |
| | | "未完成".Equals(queryObj.result), |
| | | a => a.FcheckResu == null) |
| | | (a, b, d) => a.FcheckResu == null) |
| | | .WhereIF( |
| | | StringUtil.IsNotNullOrEmpty(queryObj.result) && |
| | | !"未完成".Equals(queryObj.result), |
| | | a => a.FcheckResu != null) |
| | | .WhereIF( |
| | | itemIds is { Length: > 0 }, |
| | | a => itemIds.Contains(a.ItemId)) |
| | | .WhereIF(id > 0, a => a.Id == id) |
| | | .OrderByDescending(a => a.Id) |
| | | (a, b, d) => a.FcheckResu != null) |
| | | //.WhereIF( |
| | | // itemIds is { Length: > 0 }, |
| | | // (a, b, c) => itemIds.Contains(a.ItemId)) |
| | | .WhereIF(id > 0, (a, b, d) => a.Id == id) |
| | | .WhereIF(queryObj.arrivalFilter >= 0, (a, b, d) => a.IsArrival == queryObj.arrivalFilter) |
| | | .WhereIF(queryObj.createUser!="PL017"&& queryObj.UserIndex=="0", (a, b, d, e, f, g,h, i) => (g.Fcode == queryObj.createUser || i.Fcode == queryObj.createUser))//判断此单的检验员,或者检验为空就显示此单据 |
| | | //加筛选条件,根据供应商,物料编码,物料名称,项目搜索 |
| | | //.WhereIF(queryObj.SearchValue != null && queryObj.SearchValue != "", |
| | | //(a, b, d) => (a.SuppName.ToLower().Contains(queryObj.SearchValue.ToLower()) |
| | | //|| a.ItemName.ToLower().Contains(queryObj.SearchValue.ToLower()) |
| | | //|| a.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower()) |
| | | //|| d.ProjectCodes.ToLower().Contains(queryObj.SearchValue.ToLower()) |
| | | //)) |
| | | |
| | | //根据下拉框搜索条件筛选(0项目, 1物料编号, 2物料名称, 3供应商, 4采购员) |
| | | .WhereIF(queryObj.SelectedIndex == "0" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (d.ProjectCodes.ToLower().Contains(queryObj.SearchValue.ToLower()))) |
| | | .WhereIF(queryObj.SelectedIndex == "1" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (a.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower()))) |
| | | .WhereIF(queryObj.SelectedIndex == "2" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (a.ItemName.ToLower().Contains(queryObj.SearchValue.ToLower()))) |
| | | .WhereIF(queryObj.SelectedIndex == "3" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (a.SuppName.ToLower().Contains(queryObj.SearchValue.ToLower()))) |
| | | .WhereIF(queryObj.result== "已完成", (a, b, d, e) => (a.IqcDate>= queryObj.startDate.ToDateTime()&& a.IqcDate <= queryObj.endDate.ToDateTime().AddDays(1))) |
| | | .WhereIF(queryObj.result == "已完成" && queryObj.state!= "所有状态",(a, b, d, e) => (a.FcheckResu == queryObj.state)) |
| | | // .WhereIF(queryObj.result == "未完成" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d, e) => (e.Fname.ToLower().Contains(queryObj.SearchValue.ToLower()))) |
| | | //.OrderByDescending((a, b, d) => a.Id) |
| | | .Select((a, b, d, e, f, g, h, i) => new LtsLlj |
| | | { |
| | | //UserName = g.Fname, |
| | | //UserName = (i.Fname!=null ||i.Fname!="") ? i.Fname : g.Fname, |
| | | UserName = i.Fname != null || i.Fname != "" ? i.Fname : g.Fname, |
| | | FIRST = d.First, |
| | | CreateUserName = e.Fname, |
| | | NewFngDesc = d.NewFngDesc, |
| | | ProjectCodes = d.ProjectCodes |
| | | }, true) |
| | | .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount); |
| | | |
| | | |
| | | return (pageList, totalCount); |
| | | } |
| | |
| | | |
| | | |
| | | //根据检验标准来计算检验个数 |
| | | public List<MesQaItemsDetectDetail5> SetItems(string itemNo, |
| | | //public List<MesQaItemsDetectDetail5> SetItems(string itemNo, |
| | | // decimal quantity, string releaseNo) |
| | | //{ |
| | | // var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | |
| | | // var count = db.Queryable<MesQaIqc>().Where(s => s.EE == 1 && |
| | | // s.ISENABLED == 1 |
| | | // && s.ItemNo == itemNo && s.FTYPE == "1").Count(); |
| | | |
| | | // if (count <= 0) return []; |
| | | |
| | | // var mesQaIqcItem = db |
| | | // .Queryable<MesQaIqc>().Where(s => s.EE == 1 && s.ISENABLED == 1 |
| | | // && s.ItemNo == itemNo && s.FTYPE == "1").Select( |
| | | // b => new MesQaItemsDetectDetail5 |
| | | // { |
| | | // ReleaseNo = releaseNo, |
| | | // FacLevel = b.FacLevel, |
| | | // FcheckItem = b.FcheckItem, |
| | | // FdownAllow = b.FdownAllow, |
| | | // FcheckLevel = b.FREQUENCY, |
| | | // Fstand = b.FSTAND, |
| | | // FupAllow = b.FupAllow, |
| | | // SampleSizeNo = b.SampleSizeNo, |
| | | // FenterQty = 0, |
| | | // Factory = "1000", |
| | | // Company = "1000", |
| | | |
| | | |
| | | // // FcheckItemDesc = "0", |
| | | // // FcheckResu = "0", |
| | | // FcheckTool = b.FcheckTool, |
| | | // FspecRequ = b.FspecRequ |
| | | // // FtextType = "0", |
| | | // // Funit = "0", |
| | | // // LastupdateBy = "0", |
| | | // // ProcNo = "0", |
| | | // // WorkshopCenterCode = "0" |
| | | // }).ToList(); |
| | | |
| | | // mesQaIqcItem.ForEach(item => |
| | | // { |
| | | // var LEV = item.FcheckLevel switch |
| | | // { |
| | | // null => "" // 默认值 |
| | | // , |
| | | // { } s when s.Contains("S1") => "B.FLEVEL_S1", |
| | | // { } s when s.Contains("S2") => "B.FLEVEL_S2", |
| | | // { } s when s.Contains("S3") => "B.FLEVEL_S3", |
| | | // { } s when s.Contains("S4") => "B.FLEVEL_S4", |
| | | // { } s when s.Contains("(I)") => "B.FLEVEL_I", |
| | | // { } s when s.Contains("(II)") => "B.FLEVEL_II", |
| | | // { } s when s.Contains("(III)") => "B.FLEVEL_III", |
| | | // _ => "" |
| | | // }; |
| | | |
| | | // if (string.IsNullOrEmpty(LEV)) |
| | | // throw new Exception(item.SampleSizeNo + "的检验水平不正确"); |
| | | |
| | | // var sql = |
| | | // "SELECT " + LEV + |
| | | // " FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL2 B ON B.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO='" + |
| | | // item.SampleSizeNo + "' AND B.LOT_FROM<= " + quantity + |
| | | // " AND " + |
| | | // quantity + "<=B.LOT_TO"; |
| | | |
| | | // var maxBillNo = db.Ado.SqlQuerySingle<string>(sql); |
| | | |
| | | // if (string.IsNullOrEmpty(maxBillNo)) |
| | | // throw new Exception(item.SampleSizeNo + "下的" + quantity + |
| | | // "这个范围下没有匹配到检验项目"); |
| | | |
| | | // var result = ExtractSubstring(item.FacLevel, '(', ')'); |
| | | |
| | | // if (string.IsNullOrEmpty(result)) |
| | | // throw new Exception(item.SampleSizeNo + "下的" + quantity + |
| | | // "拒收水平不正确"); |
| | | |
| | | // sql = "SELECT FSAMPLE_SIZE_WORD, " + result + |
| | | // " Result FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL3 C ON C.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO= '" + |
| | | // item.SampleSizeNo + "' AND SAMPLE_SIZE_WORD= '" + maxBillNo + |
| | | // "'"; |
| | | // var resultClass = db.Ado.SqlQuerySingle<ResultClass>(sql); |
| | | |
| | | // item.CheckQyt = resultClass.FSAMPLE_SIZE_WORD; |
| | | // item.FreQty = resultClass.Result; |
| | | // }); |
| | | |
| | | // return mesQaIqcItem; |
| | | //} |
| | | |
| | | |
| | | /// <summary> |
| | | /// 调用存储过程,重新获取检验项目 |
| | | /// </summary> |
| | | /// <param name="itemNo"></param> |
| | | /// <param name="quantity"></param> |
| | | /// <param name="releaseNo"></param> |
| | | /// <returns></returns> |
| | | public string[] SetItems(string itemNo, |
| | | decimal quantity, string releaseNo) |
| | | { |
| | | // 定义输出参数 |
| | | var outputResult = new SugarParameter("o_Result", null, |
| | | DbType.Int32, ParameterDirection.Output, |
| | | 4000); |
| | | |
| | | var outputMessage = new SugarParameter("o_Msg", null, |
| | | DbType.String, |
| | | ParameterDirection.Output, 4000); |
| | | |
| | | // 定义输入参数 |
| | | var parameters = new List<SugarParameter> |
| | | { |
| | | new("P_RELEASE_NO", releaseNo, |
| | | DbType.String, ParameterDirection.Input), |
| | | outputResult, |
| | | outputMessage |
| | | }; |
| | | |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | // 使用 SqlSugar 执行存储过程 |
| | | db.Ado.ExecuteCommand( |
| | | "BEGIN PRC_QA_ITEM_INSERT_BTN(:P_RELEASE_NO, :o_Result, :o_Msg); END;", |
| | | parameters.ToArray()); |
| | | |
| | | var count = db.Queryable<MesQaIqc>().Where(s => s.EE == 1 && |
| | | s.ISENABLED == 1 |
| | | && s.ItemNo == itemNo && s.FTYPE == "1").Count(); |
| | | |
| | | if (count <= 0) return []; |
| | | |
| | | var mesQaIqcItem = db |
| | | .Queryable<MesQaIqc>().Where(s => s.EE == 1 && s.ISENABLED == 1 |
| | | && s.ItemNo == itemNo && s.FTYPE == "1").Select( |
| | | b => new MesQaItemsDetectDetail5 |
| | | { |
| | | ReleaseNo = releaseNo, |
| | | FacLevel = b.FacLevel, |
| | | FcheckItem = b.FcheckItem, |
| | | FdownAllow = b.FdownAllow, |
| | | FcheckLevel = b.FREQUENCY, |
| | | Fstand = b.FSTAND, |
| | | FupAllow = b.FupAllow, |
| | | SampleSizeNo = b.SampleSizeNo, |
| | | FenterQty = 0, |
| | | Factory = "1000", |
| | | Company = "1000", |
| | | // 获取输出参数的值 |
| | | var resultValue = outputResult.Value?.ToString(); |
| | | var messageValue = outputMessage.Value?.ToString(); |
| | | var msg = new string[2]; |
| | | msg[0] = resultValue; |
| | | msg[1] = messageValue; |
| | | return msg; |
| | | } |
| | | |
| | | |
| | | // FcheckItemDesc = "0", |
| | | // FcheckResu = "0", |
| | | FcheckTool = b.FcheckTool, |
| | | FspecRequ = b.FspecRequ |
| | | // FtextType = "0", |
| | | // Funit = "0", |
| | | // LastupdateBy = "0", |
| | | // ProcNo = "0", |
| | | // WorkshopCenterCode = "0" |
| | | }).ToList(); |
| | | /// <summary> |
| | | /// 保存新检验员 |
| | | /// </summary> |
| | | /// <param name="NewStaffUserID">新检验员ID</param> |
| | | /// <param name="userID">修改人</param> |
| | | /// <param name="releaseNo">检验单号</param> |
| | | /// <returns></returns> |
| | | public string[] SaveCheckBy(string NewStaffUserID, string userID, |
| | | string releaseNo) |
| | | { |
| | | // 定义输出参数 |
| | | var outputResult = new SugarParameter("o_Result", null, |
| | | DbType.Int32, ParameterDirection.Output, |
| | | 4000); |
| | | |
| | | mesQaIqcItem.ForEach(item => |
| | | var outputMessage = new SugarParameter("o_Msg", null, |
| | | DbType.String, |
| | | ParameterDirection.Output, 4000); |
| | | |
| | | // 定义输入参数 |
| | | var parameters = new List<SugarParameter> |
| | | { |
| | | string LEV = item.FcheckLevel switch |
| | | new("P_FCHECK_BY", NewStaffUserID, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("p_Release_No", releaseNo, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("p_User", userID, |
| | | DbType.String, ParameterDirection.Input), |
| | | |
| | | outputResult, |
| | | outputMessage |
| | | }; |
| | | |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | // 使用 SqlSugar 执行存储过程 |
| | | db.Ado.ExecuteCommand( |
| | | "BEGIN Prc_Mes_Iqc_Qa_Update_CheckBy(:P_FCHECK_BY,:p_Release_No,:p_User, :o_Result, :o_Msg); END;", |
| | | parameters.ToArray()); |
| | | |
| | | // 获取输出参数的值 |
| | | var resultValue = outputResult.Value?.ToString(); |
| | | var messageValue = outputMessage.Value?.ToString(); |
| | | var msg = new string[2]; |
| | | msg[0] = resultValue; |
| | | msg[1] = messageValue; |
| | | return msg; |
| | | } |
| | | |
| | | |
| | | public string[] SaveSysSubmit(SysSubmit sysSubmit) |
| | | { |
| | | // 定义输出参数 |
| | | var outputResult = new SugarParameter("o_Result", null, |
| | | DbType.Int32, ParameterDirection.Output, |
| | | 4000); |
| | | |
| | | var outputMessage = new SugarParameter("o_Msg", null, |
| | | DbType.String, |
| | | ParameterDirection.Output, 4000); |
| | | |
| | | // 定义输入参数 |
| | | var parameters = new List<SugarParameter> |
| | | { |
| | | new("PI_BILLNO", sysSubmit.PI_BILLNO, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("PI_USER", sysSubmit.PI_USER, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("PI_SAMPLE_STATUS", sysSubmit.PI_SAMPLE_STATUS, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("PI_SAMPLE_TYPE", sysSubmit.PI_SAMPLE_TYPE, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("PI_SAMPLE_REASON", sysSubmit.PI_SAMPLE_REASON, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("PI_INSPECT_TYPE", sysSubmit.PI_INSPECT_TYPE, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("PI_SAMPLE_PREPARATION", sysSubmit.PI_SAMPLE_PREPARATION, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("PI_URGENCY", sysSubmit.PI_URGENCY, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("PI_FIRMWAREVERSION", sysSubmit.PI_FIRMWAREVERSION, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("PI_HARDWAREVERSION", sysSubmit.PI_HARDWAREVERSION, |
| | | DbType.String, ParameterDirection.Input), |
| | | new("PI_REMARK", sysSubmit.PI_REMARK, |
| | | DbType.String, ParameterDirection.Input), |
| | | outputResult, |
| | | outputMessage |
| | | }; |
| | | |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | // 使用 SqlSugar 执行存储过程 |
| | | db.Ado.ExecuteCommand( |
| | | "BEGIN PRC_MES_IQC_QC_SYSSUBMIT(:PI_BILLNO,:PI_USER,:PI_SAMPLE_STATUS,:PI_SAMPLE_TYPE,:PI_SAMPLE_REASON,:PI_INSPECT_TYPE,:PI_SAMPLE_PREPARATION,:PI_URGENCY,:PI_FIRMWAREVERSION,:PI_HARDWAREVERSION,:PI_REMARK, :o_Result, :o_Msg); END;", |
| | | parameters.ToArray()); |
| | | |
| | | // 获取输出参数的值 |
| | | var resultValue = outputResult.Value?.ToString(); |
| | | var messageValue = outputMessage.Value?.ToString(); |
| | | var msg = new string[2]; |
| | | msg[0] = resultValue; |
| | | msg[1] = messageValue; |
| | | return msg; |
| | | } |
| | | |
| | | public static string BuildCurrentSign(string paramJson, string appSecret) |
| | | { |
| | | var commonDict = new Dictionary<string, string>(); |
| | | var jsonDict = |
| | | JsonConvert |
| | | .DeserializeObject<Dictionary<string, object>>(paramJson); |
| | | |
| | | var keyList = new List<string>(); |
| | | foreach (var entry in jsonDict) |
| | | { |
| | | if (entry.Key.Equals("sign", StringComparison.OrdinalIgnoreCase)) |
| | | continue; |
| | | |
| | | var value = entry.Value?.ToString().Trim() ?? ""; |
| | | commonDict[entry.Key] = value; |
| | | keyList.Add(entry.Key); |
| | | } |
| | | |
| | | // 按字母顺序排序键 |
| | | keyList.Sort((x, y) => string.Compare(x, y, StringComparison.Ordinal)); |
| | | |
| | | // 拼接签名字符串 |
| | | var sb = new StringBuilder(); |
| | | foreach (var key in keyList) sb.Append(commonDict[key]).Append(":"); |
| | | sb.Append(appSecret); |
| | | |
| | | // 计算MD5 |
| | | using var md5 = MD5.Create(); |
| | | var hashBytes = md5.ComputeHash(Encoding.UTF8.GetBytes(sb.ToString())); |
| | | |
| | | return BitConverter.ToString(hashBytes) |
| | | .Replace("-", "") |
| | | .ToLowerInvariant(); |
| | | } |
| | | |
| | | public async Task<string[]> SignDelivery(string id) |
| | | { |
| | | var msg = new string[2]; |
| | | //发起请求,签收送货单 |
| | | |
| | | try |
| | | { |
| | | var requestData = XkyCommonParam.GetInit(); |
| | | requestData.body = new BodyParam |
| | | { |
| | | null => "" // 默认值 |
| | | , |
| | | { } s when s.Contains("S1") => "B.FLEVEL_S1", |
| | | { } s when s.Contains("S2") => "B.FLEVEL_S2", |
| | | { } s when s.Contains("S3") => "B.FLEVEL_S3", |
| | | { } s when s.Contains("S4") => "B.FLEVEL_S4", |
| | | { } s when s.Contains("(I)") => "B.FLEVEL_I", |
| | | { } s when s.Contains("(II)") => "B.FLEVEL_II", |
| | | { } s when s.Contains("(III)") => "B.FLEVEL_III", |
| | | _ => "" |
| | | erpCode = "Z106", |
| | | dnXkNo = id |
| | | }; |
| | | |
| | | if (string.IsNullOrEmpty(LEV)) |
| | | throw new Exception(item.SampleSizeNo + "的检验水平不正确"); |
| | | // 序列化为JSON |
| | | var json = JsonConvert.SerializeObject(requestData); |
| | | |
| | | var sql = |
| | | "SELECT " + LEV + |
| | | " FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL2 B ON B.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO='" + |
| | | item.SampleSizeNo + "' AND B.LOT_FROM<= " + quantity + |
| | | " AND " + |
| | | quantity + "<=B.LOT_TO"; |
| | | using (var client = new HttpClient()) |
| | | { |
| | | // 设置请求内容 |
| | | var content = new StringContent(json, Encoding.UTF8, |
| | | "application/json"); |
| | | // 发送POST请求 |
| | | var response = await client.PostAsync( |
| | | "https://openapi.xiekeyun.com/delivery/updateDeliveryStatus.json", |
| | | content); |
| | | // 处理响应 |
| | | if (response.IsSuccessStatusCode) |
| | | { |
| | | var responseBody = |
| | | await response.Content.ReadAsStringAsync(); |
| | | var result = |
| | | JsonConvert.DeserializeObject<XKYApiResponse>( |
| | | responseBody); |
| | | //成功后手动下推到货单 |
| | | if (result.Result == 1) |
| | | { |
| | | // 定义输出参数 |
| | | |
| | | var maxBillNo = db.Ado.SqlQuerySingle<string>(sql); |
| | | var outputMessage = new SugarParameter("C_RESULT", null, |
| | | DbType.String, |
| | | ParameterDirection.Output, 4000); |
| | | |
| | | if (string.IsNullOrEmpty(maxBillNo)) |
| | | throw new Exception(item.SampleSizeNo + "下的" + quantity + |
| | | "这个范围下没有匹配到检验项目"); |
| | | // 定义输入参数 |
| | | var parameters = new List<SugarParameter> |
| | | { |
| | | new("C_IN_STR", "送货单签收[BTNOK[PL017[" + id, |
| | | DbType.String, ParameterDirection.Input), |
| | | outputMessage |
| | | }; |
| | | |
| | | var result = ExtractSubstring(item.FacLevel, '(', ')'); |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | if (string.IsNullOrEmpty(result)) |
| | | throw new Exception(item.SampleSizeNo + "下的" + quantity + |
| | | "拒收水平不正确"); |
| | | // 使用 SqlSugar 执行存储过程 |
| | | db.Ado.ExecuteCommand( |
| | | "BEGIN PRC_RF_PDA_RECEIPT_BTN(:C_IN_STR,:C_RESULT); END;", |
| | | parameters.ToArray()); |
| | | |
| | | sql = "SELECT FSAMPLE_SIZE_WORD, " + result + |
| | | " Result FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL3 C ON C.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO= '" + |
| | | item.SampleSizeNo + "' AND SAMPLE_SIZE_WORD= '" + maxBillNo + |
| | | "'"; |
| | | var resultClass = db.Ado.SqlQuerySingle<ResultClass>(sql); |
| | | |
| | | item.CheckQyt = resultClass.FSAMPLE_SIZE_WORD; |
| | | item.FreQty = resultClass.Result; |
| | | }); |
| | | // 获取输出参数的值 |
| | | |
| | | return mesQaIqcItem; |
| | | var messageValue = outputMessage.Value?.ToString(); |
| | | |
| | | msg[0] = "0"; |
| | | msg[1] = messageValue; |
| | | } |
| | | else |
| | | { |
| | | if (result.ErrorMsg == "出货单据不是已送货状态!") |
| | | { |
| | | // 定义输出参数 |
| | | |
| | | var outputMessage = new SugarParameter("C_RESULT", |
| | | null, |
| | | DbType.String, |
| | | ParameterDirection.Output, 4000); |
| | | |
| | | // 定义输入参数 |
| | | var parameters = new List<SugarParameter> |
| | | { |
| | | new("C_IN_STR", "送货单签收[BTNOK[PL017[" + id, |
| | | DbType.String, ParameterDirection.Input), |
| | | outputMessage |
| | | }; |
| | | |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | // 使用 SqlSugar 执行存储过程 |
| | | db.Ado.ExecuteCommand( |
| | | "BEGIN PRC_RF_PDA_RECEIPT_BTN(:C_IN_STR,:C_RESULT); END;", |
| | | parameters.ToArray()); |
| | | |
| | | |
| | | // 获取输出参数的值 |
| | | |
| | | var messageValue = outputMessage.Value?.ToString(); |
| | | |
| | | msg[0] = "0"; |
| | | msg[1] = messageValue; |
| | | } |
| | | else |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = "002[" + id + "签收失败," + result.ErrorMsg; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"002[{id}签收失败,请求失败,状态码:{response.StatusCode}"; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"002[请求失败,状态码:{ex.Message}"; |
| | | } |
| | | |
| | | |
| | | //msg[0] = "1"; |
| | | //msg[1] = responseBody; |
| | | return msg; |
| | | } |
| | | public async Task<string[]> SignDelivery2(string id,string c_user) |
| | | { |
| | | var msg = new string[2]; |
| | | //发起请求,签收送货单 |
| | | |
| | | try |
| | | { |
| | | var requestData = XkyCommonParam.GetInit(); |
| | | requestData.body = new BodyParam |
| | | { |
| | | erpCode = "Z106", |
| | | dnXkNo = id |
| | | }; |
| | | |
| | | // 序列化为JSON |
| | | var json = JsonConvert.SerializeObject(requestData); |
| | | |
| | | using (var client = new HttpClient()) |
| | | { |
| | | // 设置请求内容 |
| | | var content = new StringContent(json, Encoding.UTF8, |
| | | "application/json"); |
| | | // 发送POST请求 |
| | | var response = await client.PostAsync( |
| | | "https://openapi.xiekeyun.com/delivery/updateDeliveryStatus.json", |
| | | content); |
| | | // 处理响应 |
| | | if (response.IsSuccessStatusCode) |
| | | { |
| | | var responseBody = |
| | | await response.Content.ReadAsStringAsync(); |
| | | var result = |
| | | JsonConvert.DeserializeObject<XKYApiResponse>( |
| | | responseBody); |
| | | //成功后手动下推到货单 |
| | | if (result.Result == 1) |
| | | { |
| | | // 定义输出参数 |
| | | |
| | | var outputMessage = new SugarParameter("C_RESULT", null, |
| | | DbType.String, |
| | | ParameterDirection.Output, 4000); |
| | | |
| | | // 定义输入参数 |
| | | var parameters = new List<SugarParameter> |
| | | { |
| | | new("C_IN_STR", "送货单签收[BTNOK["+c_user+"[" + id, |
| | | DbType.String, ParameterDirection.Input), |
| | | outputMessage |
| | | }; |
| | | |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | // 使用 SqlSugar 执行存储过程 |
| | | db.Ado.ExecuteCommand( |
| | | "BEGIN PRC_RF_PDA_RECEIPT_BTN(:C_IN_STR,:C_RESULT); END;", |
| | | parameters.ToArray()); |
| | | |
| | | |
| | | // 获取输出参数的值 |
| | | |
| | | var messageValue = outputMessage.Value?.ToString(); |
| | | |
| | | msg[0] = "0"; |
| | | msg[1] = messageValue; |
| | | } |
| | | else |
| | | { |
| | | if (result.ErrorMsg == "出货单据不是已送货状态!") |
| | | { |
| | | // 定义输出参数 |
| | | |
| | | var outputMessage = new SugarParameter("C_RESULT", |
| | | null, |
| | | DbType.String, |
| | | ParameterDirection.Output, 4000); |
| | | |
| | | // 定义输入参数 |
| | | var parameters = new List<SugarParameter> |
| | | { |
| | | new("C_IN_STR", "送货单签收[BTNOK["+c_user+"[" + id, |
| | | DbType.String, ParameterDirection.Input), |
| | | outputMessage |
| | | }; |
| | | |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | // 使用 SqlSugar 执行存储过程 |
| | | db.Ado.ExecuteCommand( |
| | | "BEGIN PRC_RF_PDA_RECEIPT_BTN(:C_IN_STR,:C_RESULT); END;", |
| | | parameters.ToArray()); |
| | | |
| | | |
| | | // 获取输出参数的值 |
| | | |
| | | var messageValue = outputMessage.Value?.ToString(); |
| | | |
| | | msg[0] = "0"; |
| | | msg[1] = messageValue; |
| | | } |
| | | else |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = "002[" + id + "签收失败," + result.ErrorMsg; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"002[{id}签收失败,请求失败,状态码:{response.StatusCode}"; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"002[请求失败,状态码:{ex.Message}"; |
| | | } |
| | | |
| | | |
| | | //msg[0] = "1"; |
| | | //msg[1] = responseBody; |
| | | return msg; |
| | | } |
| | | public async Task<string[]> getTestXKYSign() |
| | | { |
| | | var msg = new string[2]; |
| | | //发起请求,签收送货单 |
| | | |
| | | try |
| | | { |
| | | var requestData = XkyCommonParam.GetTestInit(); |
| | | |
| | | msg[0] = "0"; |
| | | msg[1] = requestData.ToJsonString(); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"002[请求失败,状态码:{ex.Message}"; |
| | | } |
| | | |
| | | |
| | | //msg[0] = "1"; |
| | | //msg[1] = responseBody; |
| | | return msg; |
| | | } |
| | | /// <summary> |
| | | /// 发布携客云改善报告 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | | public async Task<string[]> SaveXkyImproveReport(string id) |
| | | { |
| | | var msg = new string[2]; |
| | | try |
| | | { |
| | | //表头数据 |
| | | string MianSql= "select " + |
| | | "B.SUPP_NO," + |
| | | "CASE WHEN REPORTTYPE = '准入评估改善' THEN '1' WHEN REPORTTYPE = '物料准入改善' THEN '2' WHEN REPORTTYPE = '绩效改善' THEN '3' WHEN REPORTTYPE = '违约事项改善' THEN '4' ELSE '3' END AS DEFECT_LEVEL," + |
| | | "(REQUIRED_DATE - TO_DATE('1970-01-01 08:00:00', 'yyyy-mm-dd hh24:mi:ss')) * 86400000 AS timestamp from MES_IQC_ABNORMAL_FEEDBACK A left join MES_SUPPLIER B on A.SUPPLIER_ID=B.ID " + |
| | | "where A.id = '"+id+"'"; |
| | | //表身数据 |
| | | string DetailSql = "select " + |
| | | "DEFECT_ANALYSIS," + |
| | | "CASE WHEN DEFECT_LEVEL = '轻微缺陷' THEN 0 WHEN DEFECT_LEVEL = '严重缺陷' THEN 1 WHEN DEFECT_LEVEL = '致命缺陷' THEN 2 ELSE 0 END AS DEFECT_LEVEL from MES_IQC_ABNORMAL_FEEDBACK_DETS " + |
| | | "where FID='"+id+"' order by id asc"; |
| | | OracleSQLHelper SQLHelper = new(); |
| | | |
| | | DataTable MianDB= SQLHelper.ExecuteQuery(MianSql); |
| | | DataTable DetailDB = SQLHelper.ExecuteQuery(DetailSql); |
| | | |
| | | var requestData = XkyinnerVendorParam.GetInit(); |
| | | |
| | | requestData.body = new BodyImproveReport |
| | | { |
| | | erpCode = "C003", |
| | | innerVendorCode = MianDB.Rows[0]["SUPP_NO"].ToString(), |
| | | reportType= int.Parse(MianDB.Rows[0]["DEFECT_LEVEL"].ToString()), |
| | | completionDate= Convert.ToInt64(MianDB.Rows[0]["timestamp"]) , |
| | | lineList= new List<LineItem>(), |
| | | isPublish=1 |
| | | }; |
| | | for (int i = 0; i < DetailDB.Rows.Count; i++) |
| | | { |
| | | requestData.body.lineList.Add(new LineItem |
| | | { |
| | | questionDesc = DetailDB.Rows[i]["DEFECT_ANALYSIS"].ToString(), |
| | | questionGrade = Convert.ToInt32(DetailDB.Rows[i]["DEFECT_LEVEL"]) |
| | | }); |
| | | } |
| | | // 序列化为JSON |
| | | var json = JsonConvert.SerializeObject(requestData); |
| | | |
| | | using (var client = new HttpClient()) |
| | | { |
| | | // 设置请求内容 |
| | | var content = new StringContent(json, Encoding.UTF8, |
| | | "application/json"); |
| | | // 发送POST请求 |
| | | var response = await client.PostAsync( |
| | | "https://openapi.xiekeyun.com/improveReport/save.json", |
| | | content); |
| | | // 处理响应 |
| | | if (response.IsSuccessStatusCode) |
| | | { |
| | | var responseBody = |
| | | await response.Content.ReadAsStringAsync(); |
| | | var result = |
| | | JsonConvert.DeserializeObject<XKYApiResponse>( |
| | | responseBody); |
| | | //成功后返回结果,前台响应 |
| | | if (result.Result == 1) |
| | | { |
| | | string updateSql = "update MES_IQC_ABNORMAL_FEEDBACK set SRM_IMPROVE_NO='"+ result.Data.irXkNo + "',REPORT_RELEASE=1 where ID='"+id+"'"; |
| | | SQLHelper.ExecuteQuery(updateSql); |
| | | // 定义输出参数 |
| | | msg[0] = "0"; |
| | | msg[1] = $"发布成功!"; |
| | | |
| | | } |
| | | else |
| | | { |
| | | // 定义输出参数 |
| | | msg[0] = "1"; |
| | | msg[1] = $"发布失败!{result.ErrorMsg}"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"{id}发布失败,请求失败,状态码:{response.StatusCode}"; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"请求失败,状态码:{ex.Message}"; |
| | | } |
| | | |
| | | return msg; |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 刷新携客云改善报告,更新供应商回复信息 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | | public async Task<string[]> FlushedXkyImproveReport(string id) |
| | | { |
| | | var msg = new string[2]; |
| | | try |
| | | { |
| | | string MianSql = ""; |
| | | if (id!=null &&id!="") |
| | | { |
| | | //查询没有供应商回复的改善报告 |
| | | MianSql = "select SRM_IMPROVE_NO from MES_IQC_ABNORMAL_FEEDBACK where REPORT_RELEASE=1 and SRM_IMPROVE_NO is not null and SUPPLIER_REPLY_RELEASE=0 and SRM_IMPROVE_NO="+id+""; |
| | | } |
| | | else |
| | | { |
| | | //查询没有供应商回复的改善报告 |
| | | MianSql = "select SRM_IMPROVE_NO from MES_IQC_ABNORMAL_FEEDBACK where REPORT_RELEASE=1 and SRM_IMPROVE_NO is not null and SUPPLIER_REPLY_RELEASE=0"; |
| | | } |
| | | |
| | | |
| | | OracleSQLHelper SQLHelper = new(); |
| | | |
| | | DataTable MianDB = SQLHelper.ExecuteQuery(MianSql); |
| | | // 定义输出参数 |
| | | msg[0] = "0"; |
| | | msg[1] = $"刷新成功!"; |
| | | for (int i = 0; i < MianDB.Rows.Count; i++) |
| | | { |
| | | var requestData = XkyFlushedrVendorParam.GetInit(); |
| | | |
| | | requestData.body = new BodyFlushedImproveReport |
| | | { |
| | | erpCode = "C003", |
| | | irXkNo = MianDB.Rows[i]["SRM_IMPROVE_NO"].ToString() |
| | | }; |
| | | |
| | | // 序列化为JSON |
| | | var json = JsonConvert.SerializeObject(requestData); |
| | | |
| | | using (var client = new HttpClient()) |
| | | { |
| | | // 设置请求内容 |
| | | var content = new StringContent(json, Encoding.UTF8, |
| | | "application/json"); |
| | | // 发送POST请求 |
| | | var response = await client.PostAsync( |
| | | "https://openapi.xiekeyun.com/improveReport/details.json", |
| | | content); |
| | | // 处理响应 |
| | | if (response.IsSuccessStatusCode) |
| | | { |
| | | var responseBody = |
| | | await response.Content.ReadAsStringAsync(); |
| | | var result = |
| | | JsonConvert.DeserializeObject<XKYApiResponse>( |
| | | responseBody); |
| | | //成功后返回结果,前台响应 |
| | | int resultCode = 0; |
| | | if (result.Result == 1) |
| | | { |
| | | //查询mes系统对应携客云改善报告的ID |
| | | string xkyIDSql = "select B.id from MES_IQC_ABNORMAL_FEEDBACK A left join MES_IQC_ABNORMAL_FEEDBACK_DETS B on A.id = B.FID where SRM_IMPROVE_NO = '"+ MianDB.Rows[i]["SRM_IMPROVE_NO"].ToString() + "' order by B.id asc"; |
| | | string updateSql = ""; |
| | | DataTable xkyIDDB = SQLHelper.ExecuteQuery(xkyIDSql); |
| | | for (int j = 0; j < result.Data.lineList.Count; j++) |
| | | { |
| | | if (result.Data.lineList[j].reasonAnalyze!=null && result.Data.lineList[j].reasonAnalyze != "") |
| | | { |
| | | |
| | | if (resultCode==0) |
| | | { |
| | | //改供应商回复状态 |
| | | updateSql = "update MES_IQC_ABNORMAL_FEEDBACK set SUPPLIER_REPLY_RELEASE=1 where SRM_IMPROVE_NO='"+ MianDB.Rows[i]["SRM_IMPROVE_NO"].ToString() + "'"; |
| | | resultCode++; |
| | | SQLHelper.ExecuteQuery(updateSql); |
| | | } |
| | | |
| | | //改明细 |
| | | updateSql = "update MES_IQC_ABNORMAL_FEEDBACK_DETS set " + |
| | | "ROOT_CAUSE_ANALYSIS='"+ result.Data.lineList[j].reasonAnalyze + "'," + |
| | | "IMPROVEMENT_ACTION='"+ result.Data.lineList[j].correctPreventMeasure + "'," + |
| | | "ESTIMATED_DATE=to_date('" + ParseUnixTimestamp(result.Data.lineList[j].expectedFinishTime) + "','MM/DD/YYYY HH24:MI:SS') where id='" + xkyIDDB.Rows[j]["id"].ToString() + "'"; |
| | | SQLHelper.ExecuteQuery(updateSql); |
| | | } |
| | | } |
| | | |
| | | // 定义输出参数 |
| | | msg[0] = "0"; |
| | | msg[1] = $"刷新成功!"; |
| | | |
| | | } |
| | | else |
| | | { |
| | | // 定义输出参数 |
| | | msg[0] = "1"; |
| | | msg[1] = $"刷新失败!{result.ErrorMsg}"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"{id}刷新失败,请求失败,状态码:{response.StatusCode}"; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"请求失败,状态码:{ex.Message}"; |
| | | } |
| | | |
| | | return msg; |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 审核携客云改善报告 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | | public async Task<string[]> AuditXkyImproveReport(string id) |
| | | { |
| | | var msg = new string[2]; |
| | | try |
| | | { |
| | | string MianSql = ""; |
| | | MianSql = "select SRM_IMPROVE_NO,CASE WHEN JUDGMENT_RESULT = '已退回' THEN 4 WHEN JUDGMENT_RESULT = '不合格' THEN 5 WHEN JUDGMENT_RESULT = '结案' THEN 6 END AS status from MES_IQC_ABNORMAL_FEEDBACK where SRM_IMPROVE_NO=" + id + ""; |
| | | //表身数据 |
| | | string DetailSql = "select VERIFICATION_DESC, CASE WHEN VERIFICATION_RESULT = '合格' THEN 0 WHEN VERIFICATION_RESULT = '不合格' THEN 1 END AS DEFECT_LEVEL from MES_IQC_ABNORMAL_FEEDBACK A left join MES_IQC_ABNORMAL_FEEDBACK_DETS b on A.id=B.FID where SRM_IMPROVE_NO= '" + id+"'"; |
| | | OracleSQLHelper SQLHelper = new(); |
| | | |
| | | DataTable MianDB = SQLHelper.ExecuteQuery(MianSql); |
| | | DataTable DetailDB = SQLHelper.ExecuteQuery(DetailSql); |
| | | var requestData = XkyAuditVendorParam.GetInit(); |
| | | |
| | | requestData.body = new BodyAuditImproveReport |
| | | { |
| | | erpCode = "C003", |
| | | irXkNo = MianDB.Rows[0]["SRM_IMPROVE_NO"].ToString(), |
| | | status= Convert.ToInt32(MianDB.Rows[0]["status"]), |
| | | lineList=new List<AuditLineItem>() |
| | | }; |
| | | for (int i = 0; i < DetailDB.Rows.Count; i++) |
| | | { |
| | | requestData.body.lineList.Add(new AuditLineItem |
| | | { |
| | | lineNo = i+1, |
| | | checkStatus = Convert.ToInt32(DetailDB.Rows[i]["DEFECT_LEVEL"]), |
| | | checkPeopleNumber = "031", |
| | | checkExplain = DetailDB.Rows[i]["VERIFICATION_DESC"].ToString() |
| | | |
| | | }); |
| | | } |
| | | |
| | | // 序列化为JSON |
| | | var json = JsonConvert.SerializeObject(requestData); |
| | | |
| | | using (var client = new HttpClient()) |
| | | { |
| | | // 设置请求内容 |
| | | var content = new StringContent(json, Encoding.UTF8, |
| | | "application/json"); |
| | | // 发送POST请求 |
| | | var response = await client.PostAsync( |
| | | "https://openapi.xiekeyun.com/improveReport/audit.json", |
| | | content); |
| | | // 处理响应 |
| | | if (response.IsSuccessStatusCode) |
| | | { |
| | | var responseBody = |
| | | await response.Content.ReadAsStringAsync(); |
| | | var result = |
| | | JsonConvert.DeserializeObject<XKYApiResponse>( |
| | | responseBody); |
| | | //成功后返回结果,前台响应 |
| | | int resultCode = 0; |
| | | if (result.Result == 1) |
| | | { |
| | | |
| | | |
| | | //改状态,改为完结状态 |
| | | string updateSql = "update MES_IQC_ABNORMAL_FEEDBACK set CLOSURE_STATUS=1,CLOSED_DATE=sysdate where SRM_IMPROVE_NO='" + id + "'"; |
| | | SQLHelper.ExecuteQuery(updateSql); |
| | | |
| | | // 定义输出参数 |
| | | msg[0] = "0"; |
| | | msg[1] = $"审核成功!"; |
| | | |
| | | } |
| | | else |
| | | { |
| | | // 定义输出参数 |
| | | msg[0] = "1"; |
| | | msg[1] = $"审核失败!{result.ErrorMsg}"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"{id}审核失败,请求失败,状态码:{response.StatusCode}"; |
| | | } |
| | | } |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | msg[0] = "1"; |
| | | msg[1] = $"请求失败,状态码:{ex.Message}"; |
| | | } |
| | | |
| | | return msg; |
| | | } |
| | | |
| | | |
| | | |
| | | static DateTime ParseUnixTimestamp(string timestampStr) |
| | | { |
| | | // 尝试解析为长整型 |
| | | if (long.TryParse(timestampStr, out long timestamp)) |
| | | { |
| | | // 根据位数判断单位(秒或毫秒) |
| | | if (timestampStr.Length <= 10) // 秒级 (10位或更少) |
| | | { |
| | | return DateTimeOffset.FromUnixTimeSeconds(timestamp).UtcDateTime; |
| | | } |
| | | else // 毫秒级 |
| | | { |
| | | return DateTimeOffset.FromUnixTimeMilliseconds(timestamp).UtcDateTime; |
| | | } |
| | | } |
| | | throw new FormatException("无效的时间戳格式"); |
| | | } |
| | | |
| | | private string ExtractSubstring(string input, char startChar, char endChar) |
| | |
| | | public List<MesQaItemsDetectDetail5> GetItems(string? releaseNo, |
| | | decimal? id) |
| | | { |
| | | |
| | | OracleSQLHelper SQLHelper = new(); |
| | | var sql = |
| | | @"update MES_QA_ITEMS_DETECT_01 set FCHECK_BEGIN_DATE=sysdate where RELEASE_NO='"+ releaseNo + "' and FCHECK_BEGIN_DATE is null"; |
| | | SQLHelper.ExecuteQuery(sql); |
| | | |
| | | |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | return db.Queryable<MesQaItemsDetectDetail5, MesQaItemsDetectDetail12>( |
| | | (a, b) => |
| | | new JoinQueryInfos(JoinType.Left, a.Id == b.MainId)) |
| | | return db |
| | | .Queryable<MesQaItemsDetectDetail5, |
| | | MesQaItemsDetectDetail12>((a, b) => |
| | | new JoinQueryInfos(JoinType.Left, a.Id == b.MainId)) |
| | | .Where((a, b) => a.ReleaseNo == releaseNo) |
| | | // .WhereIF(id > 0, (a, b) => a.Id == id) |
| | | .OrderByDescending((a, b) => a.FcheckItem) |
| | | .GroupBy((a, b) => new |
| | | { |
| | | a.Id, |
| | |
| | | a.FspecRequ, |
| | | a.FreQty, |
| | | a.CheckQyt, |
| | | a.FcheckResu |
| | | a.FcheckResu, |
| | | a.FcheckItemDesc |
| | | }).Select((a, b) => new MesQaItemsDetectDetail5 |
| | | { |
| | | Id = a.Id, |
| | |
| | | Factory = "1000", |
| | | Company = "1000", |
| | | FenterQty = SqlFunc.AggregateCount(b.Id), |
| | | FcheckResu = a.FcheckResu |
| | | FcheckResu = a.FcheckResu, |
| | | FcheckItemDesc = a.FcheckItemDesc |
| | | }).ToList(); |
| | | } |
| | | |
| | | |
| | | public DataTable getAllInspectors() |
| | | { |
| | | OracleSQLHelper SQLHelper = new(); |
| | | var sql = |
| | | @"select a.USER_NAME label,U.FCODE value from IQC_BEFORE_FROM a JOIN SYS_USER U ON U.FID=A.SID"; |
| | | return SQLHelper.ExecuteQuery(sql); |
| | | } |
| | | |
| | | |
| | | public int SetQSItemDetail(MesQaItemsDetectDetail12 detail) |
| | | { |
| | |
| | | // result = "不合格"; |
| | | else if (noCount >= QsItemOqcItem.FreQty) |
| | | result = "不合格"; |
| | | var useTransactionWithOracle = SqlSugarHelper.UseTransactionWithOracle( |
| | | db => |
| | | var useTransactionWithOracle = |
| | | SqlSugarHelper.UseTransactionWithOracle(db => |
| | | { |
| | | var commit = 0; |
| | | commit += db.Updateable<MesQaItemsDetectDetail5>() |
| | |
| | | return rkjDto; |
| | | } |
| | | |
| | | |
| | | public DataTable getFromInfo(string BarCode) |
| | | { |
| | | OracleSQLHelper SQLHelper = new(); |
| | | var sql = string.Format( |
| | | @"select b.ID,b.LOT_NO,b.RELEASE_NO,b.FSUBMIT from MES_INV_ITEM_BARCODES A |
| | | left join MES_QA_ITEMS_DETECT_01 B on A.BILL_NO=b.LOT_NO and A.ITEM_ID=b.ITEM_ID |
| | | where ITEM_BARCODE='" + BarCode + "'and b.ID is not null"); |
| | | return SQLHelper.ExecuteQuery(sql); |
| | | } |
| | | public int getFromMJCount(string BarCode) |
| | | { |
| | | OracleSQLHelper SQLHelper = new(); |
| | | var sql = string.Format( |
| | | @"select count(*) count from MES_INV_ITEM_BARCODES A |
| | | left join MES_INV_ITEM_ARN_DETAIL B on A.BILL_NO=b.CBILL_NO and A.ITEM_ID=b.ITEM_ID |
| | | where ITEM_BARCODE='"+ BarCode + "' and CHECK_STATES='免检'"); |
| | | return Convert.ToInt32(SQLHelper.ExecuteQuery(sql).Rows[0]["count"]); |
| | | } |
| | | |
| | | public DataTable getImgBDlist(string id) |
| | | { |
| | | OracleSQLHelper SQLHelper = new(); |
| | | var sql = |
| | | string.Format( |
| | | @"select id,FID,IMAGE_DATA from MES_QS_IMAGE where FID=" + id + |
| | | ""); |
| | | return SQLHelper.ExecuteQuery(sql); |
| | | } |
| | | |
| | | public List<Component> getYzxBDlist(string id) |
| | | { |
| | | OracleSQLHelper SQLHelper = new(); |
| | | //查元器件 |
| | | //var sql1 = |
| | | // string.Format( |
| | | // @"select ITEMNAME from MES_IQC_CONSISTENCY_ck where PID='" + |
| | | // id + "' group by ITEMNAME order by ITEMNAME"); |
| | | |
| | | var sql1 = |
| | | string.Format( |
| | | @"select CASE WHEN max(MULTI_SELECT) is null THEN ''ELSE '【'||max(MULTI_SELECT)||'】' END as A,ITEMNAME as ITEMNAME from MES_IQC_CONSISTENCY_ck where PID='"+id+"' group by ITEMNAME order by ITEMNAME"); |
| | | //查明细 |
| | | var sql2 = |
| | | string.Format(@"select * from MES_IQC_CONSISTENCY_ck where PID='" + |
| | | id + "' order by ITEMNAME,ITEMMODE,SUPPNAME"); |
| | | var dataTable1 = SQLHelper.ExecuteQuery(sql1); |
| | | var dataTable2 = SQLHelper.ExecuteQuery(sql2); |
| | | var Components = new List<Component>(); |
| | | |
| | | |
| | | for (var i = 0; i < dataTable1.Rows.Count; i++) |
| | | { |
| | | var component = new Component(); |
| | | component.Name = dataTable1.Rows[i]["A"].ToString()+ dataTable1.Rows[i]["ITEMNAME"].ToString(); |
| | | component.Specs = new List<string>(); |
| | | component.Manufacturers = new List<string>(); |
| | | component.Id = new List<string>(); |
| | | component.SelectedSpec = -1; |
| | | component.SelectedMfg = -1; |
| | | var index = 0; |
| | | for (var j = 0; j < dataTable2.Rows.Count; j++) |
| | | if (dataTable2.Rows[j]["ITEMNAME"].ToString() == |
| | | dataTable1.Rows[i]["ITEMNAME"].ToString()) |
| | | { |
| | | component.Specs.Add(dataTable2.Rows[j]["ITEMMODE"] |
| | | .ToString()); |
| | | component.Manufacturers.Add(dataTable2.Rows[j]["SUPPNAME"] |
| | | .ToString()); |
| | | component.Id.Add(dataTable2.Rows[j]["ID"].ToString()); |
| | | if (dataTable2.Rows[j]["ISCHACK"].ToString() == "1") |
| | | { |
| | | component.SelectedSpec = index; |
| | | component.SelectedMfg = index; |
| | | } |
| | | |
| | | index++; |
| | | } |
| | | |
| | | Components.Add(component); |
| | | } |
| | | |
| | | return Components; |
| | | } |
| | | |
| | | public DataTable getBlmsItem() |
| | | { |
| | | OracleSQLHelper SQLHelper = new(); |
| | | //查不良描述 |
| | | var sql1 = @"select DEFECT_NAME |
| | | from MES_DEFECT_CODE A |
| | | left join MES_DEFECT_TYPE X ON X.TYPE_NO = A.DEFECT_SORT AND X.COMPANY = A.COMPANY AND X.FACTORY = A.FACTORY"; |
| | | |
| | | return SQLHelper.ExecuteQuery(sql1); |
| | | } |
| | | |
| | | public DataTable getBlmsItem(string id) |
| | | { |
| | | OracleSQLHelper SQLHelper = new(); |
| | | //查不良描述 |
| | | var sql1 = string.Format( |
| | | @"select FCHECK_ITEM,FUNIT from mes_qa_items_detect_detail5 f where RELEASE_NO='" + |
| | | id + "' and FUNIT is not null order by FCHECK_ITEM"); |
| | | |
| | | return SQLHelper.ExecuteQuery(sql1); |
| | | } |
| | | |
| | | public void saveYzxBDlist(string id, DataTable DB) |
| | | { |
| | | OracleSQLHelper SQLHelper = new(); |
| | | //先把结果清空 |
| | | var sql1 = |
| | | string.Format( |
| | | @"update MES_IQC_CONSISTENCY_ck set ISCHACK=0 where PID='" + |
| | | id + "' "); |
| | | SQLHelper.ExecuteQuery(sql1); |
| | | var rowId = ""; |
| | | for (var i = 0; i < DB.Rows.Count; i++) |
| | | rowId += "'" + DB.Rows[i]["id"] + "',"; |
| | | rowId = rowId.Substring(0, rowId.Length - 1); |
| | | |
| | | |
| | | //修改结果 |
| | | var sql2 = |
| | | string.Format( |
| | | @"update MES_IQC_CONSISTENCY_ck set ISCHACK=1 where PID='" + |
| | | id + "'and id in(" + rowId + ") "); |
| | | SQLHelper.ExecuteQuery(sql2); |
| | | } |
| | | |
| | | public string[] YzxImgVerify(string id) |
| | | { |
| | | var msgStr = new string[2]; |
| | | |
| | | OracleSQLHelper SQLHelper = new(); |
| | | //修改结果 |
| | | //var sql2 = string.Format( |
| | | // @"select A.ITEMNAME from ( select 888||min(id) id,ITEMNAME from MES_IQC_CONSISTENCY_CK where pid='" + |
| | | // id + "' group by ITEMNAME) A " + |
| | | // "left join MES_QS_IMAGE b on a.id=b.fid where B.id is null order by ITEMNAME"); |
| | | |
| | | |
| | | var sql2 = string.Format( |
| | | @"select A.ITEMNAME from ( select 888||min(id) id,ITEMNAME from MES_IQC_CONSISTENCY_CK where pid='"+id.ToString()+ "' and ITEMNAME not in(select ITEMNAME from MES_IQC_CONSISTENCY_CK where PID='"+id.ToString()+"' and MULTI_SELECT is not null)" + |
| | | "group by ITEMNAME) A" + |
| | | " left join MES_QS_IMAGE b on a.id=b.fid where B.id is null" + |
| | | " union" + |
| | | " select '分组:' || MULTI_SELECT as ITEMNAME from MES_IQC_CONSISTENCY_CK where pid = '"+id.ToString()+ "' and MULTI_SELECT is not null and MULTI_SELECT not in(select A.MULTI_SELECT as ITEMNAME from (select 888 || min(id) id, MULTI_SELECT from MES_IQC_CONSISTENCY_CK where pid = '"+id.ToString()+ "' and MULTI_SELECT is not null group by MULTI_SELECT,ITEMNAME) A left join MES_QS_IMAGE b on a.id = b.fid where B.id is not null) group by MULTI_SELECT"); |
| | | |
| | | var db = SQLHelper.ExecuteQuery(sql2); |
| | | if (db.Rows.Count > 0) |
| | | { |
| | | msgStr[1] = "元器件:"; |
| | | for (var i = 0; i < db.Rows.Count; i++) |
| | | msgStr[1] += db.Rows[i]["ITEMNAME"] + ","; |
| | | msgStr[1] += "未完成图片上传,请上传!"; |
| | | msgStr[0] = "1"; |
| | | } |
| | | else |
| | | { |
| | | msgStr[0] = "0"; |
| | | msgStr[1] = "ok"; |
| | | } |
| | | |
| | | return msgStr; |
| | | } |
| | | |
| | | public int UpdateQSItemDetail(MesQaItemsDetectDetail12 detail) |
| | | { |
| | | var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => |
| | |
| | | return withOracle; |
| | | } |
| | | |
| | | //更新检验明细已检、不合格数量 |
| | | //更新检验明细已检、不合格数量 |
| | | private int updateDetail5(MesQaItemsDetectDetail12 detail) |
| | | { |
| | | var db = SqlSugarHelper.GetInstance(); |
| | |
| | | return SqlSugarHelper.UseTransactionWithOracle(db => |
| | | { |
| | | return db.Updateable<MesQaItemsDetect01>() |
| | | // .SetColumns(it => |
| | | // it.Remarks == dto.Remarks) //SetColumns是可以叠加的 写2个就2个字段赋值 |
| | | .SetColumns(it => |
| | | it.FngDesc == dto.Remarks) //SetColumns是可以叠加的 写2个就2个字段赋值 |
| | | .Where(it => it.ReleaseNo == dto.releaseNo) |
| | | .ExecuteCommand(); |
| | | }); |
| | |
| | | return SqlSugarHelper.UseTransactionWithOracle(db => |
| | | { |
| | | return db.Updateable<MesQaItemsDetectDetail5>() |
| | | // .SetColumns(it => |
| | | // it.Remarks == dto.Remarks) //SetColumns是可以叠加的 写2个就2个字段赋值 |
| | | .SetColumns(it => |
| | | it.Funit == dto.Remarks) //SetColumns是可以叠加的 写2个就2个字段赋值 |
| | | .Where(it => it.Id == dto.pid) |
| | | .ExecuteCommand(); |
| | | }); |
| | |
| | | return withOracle; |
| | | } |
| | | |
| | | public bool IqcQaSubmit(LLJDto dto) |
| | | public string[] IqcQaSubmit(LLJDto dto) |
| | | { |
| | | var (factory, company) = UserUtil.GetFactory(dto.userNo); |
| | | try |
| | |
| | | // 获取输出参数的值 |
| | | var resultValue = outputResult.Value?.ToString(); |
| | | var messageValue = outputMessage.Value?.ToString(); |
| | | |
| | | if ("1".Equals(resultValue)) throw new Exception(messageValue); |
| | | |
| | | return true; |
| | | var msg = new string[2]; |
| | | msg[0] = resultValue; |
| | | msg[1] = messageValue; |
| | | return msg; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 从U9获取料号图纸列表 |
| | | /// </summary> |
| | | /// <param name="Type">u9No:u9物料编号</param> |
| | | /// <param name="U9No">type:1:图纸规格书 2:进料检验文件 </param> |
| | | /// <returns></returns> |
| | | /// <exception cref="Exception"></exception> |
| | | public async Task<string[]> GetFileUrlByU9List(string Type, string U9No) |
| | | { |
| | | try |
| | | { |
| | | var requestUrl = |
| | | $"https://erp.dream-maker.com/api/public/getFileUrlByU9No?u9No={Uri.EscapeDataString(U9No)}&type={Type}"; |
| | | var response = await client.GetAsync(requestUrl); |
| | | response.EnsureSuccessStatusCode(); // 检查HTTP状态码 |
| | | var responseContent = await response.Content.ReadAsStringAsync(); |
| | | var result = |
| | | JsonConvert.DeserializeObject<ApiResponse>(responseContent); |
| | | |
| | | if (result.Status == 0 && result.Data != null) return result.Data; |
| | | |
| | | return null; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 携客云密钥 |
| | | /// </summary> |
| | | public class DataAcquisitionConfiguration |
| | | { |
| | | //测试环境 |
| | | public const string TEST_COMPANY_CODE = "55958795"; |
| | | public const string TEST_APP_KEY = "ab2d86b6dffabcc81dca6855c727c246"; |
| | | |
| | | public const string TEST_APP_SECRET = |
| | | "01b17babe2a96d5ebd802e67709f33d1"; |
| | | |
| | | public const string TEST_ERP_CODE = "Z106"; |
| | | |
| | | //正式环境 |
| | | public const string COMPANY_CODE = "72505985"; |
| | | public const string APP_KEY = "a2866f03bb7f76387bfb1a98001f0e31"; |
| | | public const string APP_SECRET = "f13bd1bcb130f0090ed92dc021e5f4e1"; |
| | | public const string ERP_CODE = "Z106"; |
| | | } |
| | | |
| | | [Serializable] |
| | | public class ApiCommonParam |
| | | { |
| | | //发放给用户的Key |
| | | public string appKey { get; set; } |
| | | |
| | | //接口版本 |
| | | public string version { get; set; } |
| | | |
| | | //数据所属公司编码 |
| | | public string ownerCompanyCode { get; set; } |
| | | |
| | | //操作者所属公司编码 |
| | | public string operateCompanyCode { get; set; } |
| | | |
| | | //签名 |
| | | public string sign { get; set; } |
| | | |
| | | //时间戳 |
| | | public long? timestamps { get; set; } |
| | | ////扩展字段 |
| | | //public object Reserver { get; set; } |
| | | } |
| | | |
| | | [Serializable] |
| | | public class BodyParam |
| | | { |
| | | public string erpCode { get; set; } |
| | | public string dnXkNo { get; set; } |
| | | } |
| | | [Serializable] |
| | | public class BodyFlushedImproveReport |
| | | { |
| | | public string erpCode { get; set; } |
| | | public string irXkNo { get; set; } |
| | | } |
| | | [Serializable] |
| | | public class BodyAuditImproveReport |
| | | { |
| | | public string erpCode { get; set; } |
| | | public string irXkNo { get; set; } |
| | | public int status { get; set; } |
| | | /// <summary> |
| | | /// 单身列表 |
| | | /// </summary> |
| | | public List<AuditLineItem> lineList { get; set; } |
| | | |
| | | } |
| | | public class AuditLineItem |
| | | { |
| | | /// <summary> |
| | | /// 项次 |
| | | /// </summary> |
| | | public int lineNo { get; set; } |
| | | /// <summary> |
| | | /// 检核结果 0:合格,1:不合格 |
| | | /// </summary> |
| | | public int checkStatus { get; set; } |
| | | /// <summary> |
| | | /// 检核人工号 |
| | | /// </summary> |
| | | public string checkExplain { get; set; } |
| | | /// <summary> |
| | | /// 检核说明 |
| | | /// </summary> |
| | | public string checkPeopleNumber { get; set; } |
| | | } |
| | | |
| | | [Serializable] |
| | | public class BodyImproveReport |
| | | { |
| | | /// <summary> |
| | | /// 请求者用户ERP帐号 |
| | | /// </summary> |
| | | public string erpCode { get; set; } |
| | | /// <summary> |
| | | /// 内部供应商编码 |
| | | /// </summary> |
| | | public string innerVendorCode { get; set; } |
| | | /// <summary> |
| | | /// 报告类型:1 准入评估改善,2 物料准入改善,3 绩效改善,4 违约事项改善 |
| | | /// </summary> |
| | | public int reportType { get; set; } // 根据JSON值使用int |
| | | /// <summary> |
| | | /// 完成日期(毫秒时间戳) |
| | | /// </summary> |
| | | public long completionDate { get; set; } |
| | | |
| | | // 日期扩展字段(字符串格式) |
| | | public string platformExtendN01 { get; set; } |
| | | |
| | | public string platformExtendN02 { get; set; } |
| | | |
| | | public string platformExtendN03 { get; set; } |
| | | /// <summary> |
| | | /// 是否自动发布 0:否 1:是 默认:否 |
| | | /// </summary> |
| | | public int isPublish { get; set; } // 根据JSON值使用int |
| | | /// <summary> |
| | | /// 利润中心/工厂编码 |
| | | /// </summary> |
| | | public string profitCenterCode { get; set; } |
| | | /// <summary> |
| | | /// 利润中心/工厂名称 |
| | | /// </summary> |
| | | public string profitCenterName { get; set; } |
| | | /// <summary> |
| | | /// 单身列表 |
| | | /// </summary> |
| | | public List<LineItem> lineList { get; set; } |
| | | } |
| | | |
| | | [Serializable] |
| | | public class LineItem |
| | | { |
| | | /// <summary> |
| | | /// 问题描述 |
| | | /// </summary> |
| | | public string questionDesc { get; set; } |
| | | /// <summary> |
| | | /// 问题等级 0:次要,1:重要,2:致命 |
| | | /// </summary> |
| | | public int questionGrade { get; set; } // 根据JSON值使用int |
| | | } |
| | | public class XkyCommonParam |
| | | { |
| | | public ApiCommonParam commonParam { get; set; } |
| | | public BodyParam body { get; set; } |
| | | |
| | | public static XkyCommonParam GetInit() |
| | | { |
| | | var apiParam = new ApiCommonParam |
| | | { |
| | | // 发携客云提供的appKey |
| | | appKey = DataAcquisitionConfiguration.APP_KEY, |
| | | // 接口版本 |
| | | version = "1.0", |
| | | // 操作者所属公司编码 |
| | | operateCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE, |
| | | // 数据所属公司编码,非集团公司默认赋值为操作公司 |
| | | ownerCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE, |
| | | // 当前时间对应的时间戳(秒数) |
| | | timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds() |
| | | }; |
| | | |
| | | |
| | | var appSecret = DataAcquisitionConfiguration.APP_SECRET; |
| | | |
| | | // 生成签名 |
| | | var sign = BuildCurrentSign( |
| | | JsonConvert.SerializeObject(apiParam), |
| | | appSecret); |
| | | apiParam.sign = sign; |
| | | |
| | | return new XkyCommonParam |
| | | { |
| | | commonParam = apiParam |
| | | }; |
| | | } |
| | | public static XkyCommonParam GetTestInit() |
| | | { |
| | | var apiParam = new ApiCommonParam |
| | | { |
| | | // 发携客云提供的appKey |
| | | appKey = DataAcquisitionConfiguration.TEST_APP_KEY, |
| | | // 接口版本 |
| | | version = "1.0", |
| | | // 操作者所属公司编码 |
| | | operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE, |
| | | // 数据所属公司编码,非集团公司默认赋值为操作公司 |
| | | ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE, |
| | | // 当前时间对应的时间戳(秒数) |
| | | timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds() |
| | | }; |
| | | |
| | | |
| | | var appSecret = DataAcquisitionConfiguration.TEST_APP_SECRET; |
| | | |
| | | // 生成签名 |
| | | var sign = BuildCurrentSign( |
| | | JsonConvert.SerializeObject(apiParam), |
| | | appSecret); |
| | | apiParam.sign = sign; |
| | | |
| | | return new XkyCommonParam |
| | | { |
| | | commonParam = apiParam |
| | | }; |
| | | } |
| | | } |
| | | |
| | | public class XkyinnerVendorParam |
| | | { |
| | | public ApiCommonParam commonParam { get; set; } |
| | | public BodyImproveReport body { get; set; } |
| | | |
| | | public static XkyinnerVendorParam GetInit() |
| | | { |
| | | var apiParam = new ApiCommonParam |
| | | { |
| | | //// 发携客云提供的appKey |
| | | //appKey = DataAcquisitionConfiguration.APP_KEY, |
| | | //// 接口版本 |
| | | //version = "1.0", |
| | | //// 操作者所属公司编码 |
| | | //operateCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE, |
| | | //// 数据所属公司编码,非集团公司默认赋值为操作公司 |
| | | //ownerCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE, |
| | | //// 当前时间对应的时间戳(秒数) |
| | | //timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds() |
| | | |
| | | // 发携客云提供的appKey |
| | | appKey = DataAcquisitionConfiguration.TEST_APP_KEY, |
| | | // 接口版本 |
| | | version = "1.0", |
| | | // 操作者所属公司编码 |
| | | operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE, |
| | | // 数据所属公司编码,非集团公司默认赋值为操作公司 |
| | | ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE, |
| | | // 当前时间对应的时间戳(秒数) |
| | | timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds() |
| | | }; |
| | | |
| | | |
| | | // var appSecret = DataAcquisitionConfiguration.APP_SECRET; |
| | | var appSecret = DataAcquisitionConfiguration.TEST_APP_SECRET; |
| | | |
| | | // 生成签名 |
| | | var sign = BuildCurrentSign( |
| | | JsonConvert.SerializeObject(apiParam), |
| | | appSecret); |
| | | apiParam.sign = sign; |
| | | |
| | | return new XkyinnerVendorParam |
| | | { |
| | | commonParam = apiParam |
| | | }; |
| | | } |
| | | |
| | | } |
| | | public class XkyFlushedrVendorParam |
| | | { |
| | | public ApiCommonParam commonParam { get; set; } |
| | | public BodyFlushedImproveReport body { get; set; } |
| | | |
| | | public static XkyFlushedrVendorParam GetInit() |
| | | { |
| | | var apiParam = new ApiCommonParam |
| | | { |
| | | //// 发携客云提供的appKey |
| | | //appKey = DataAcquisitionConfiguration.APP_KEY, |
| | | //// 接口版本 |
| | | //version = "1.0", |
| | | //// 操作者所属公司编码 |
| | | //operateCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE, |
| | | //// 数据所属公司编码,非集团公司默认赋值为操作公司 |
| | | //ownerCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE, |
| | | //// 当前时间对应的时间戳(秒数) |
| | | //timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds() |
| | | |
| | | // 发携客云提供的appKey |
| | | appKey = DataAcquisitionConfiguration.TEST_APP_KEY, |
| | | // 接口版本 |
| | | version = "1.0", |
| | | // 操作者所属公司编码 |
| | | operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE, |
| | | // 数据所属公司编码,非集团公司默认赋值为操作公司 |
| | | ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE, |
| | | // 当前时间对应的时间戳(秒数) |
| | | timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds() |
| | | }; |
| | | |
| | | |
| | | // var appSecret = DataAcquisitionConfiguration.APP_SECRET; |
| | | var appSecret = DataAcquisitionConfiguration.TEST_APP_SECRET; |
| | | |
| | | // 生成签名 |
| | | var sign = BuildCurrentSign( |
| | | JsonConvert.SerializeObject(apiParam), |
| | | appSecret); |
| | | apiParam.sign = sign; |
| | | |
| | | return new XkyFlushedrVendorParam |
| | | { |
| | | commonParam = apiParam |
| | | }; |
| | | } |
| | | |
| | | } |
| | | public class XkyAuditVendorParam |
| | | { |
| | | public ApiCommonParam commonParam { get; set; } |
| | | public BodyAuditImproveReport body { get; set; } |
| | | |
| | | public static XkyAuditVendorParam GetInit() |
| | | { |
| | | var apiParam = new ApiCommonParam |
| | | { |
| | | //// 发携客云提供的appKey |
| | | //appKey = DataAcquisitionConfiguration.APP_KEY, |
| | | //// 接口版本 |
| | | //version = "1.0", |
| | | //// 操作者所属公司编码 |
| | | //operateCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE, |
| | | //// 数据所属公司编码,非集团公司默认赋值为操作公司 |
| | | //ownerCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE, |
| | | //// 当前时间对应的时间戳(秒数) |
| | | //timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds() |
| | | |
| | | // 发携客云提供的appKey |
| | | appKey = DataAcquisitionConfiguration.TEST_APP_KEY, |
| | | // 接口版本 |
| | | version = "1.0", |
| | | // 操作者所属公司编码 |
| | | operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE, |
| | | // 数据所属公司编码,非集团公司默认赋值为操作公司 |
| | | ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE, |
| | | // 当前时间对应的时间戳(秒数) |
| | | timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds() |
| | | }; |
| | | |
| | | |
| | | // var appSecret = DataAcquisitionConfiguration.APP_SECRET; |
| | | var appSecret = DataAcquisitionConfiguration.TEST_APP_SECRET; |
| | | |
| | | // 生成签名 |
| | | var sign = BuildCurrentSign( |
| | | JsonConvert.SerializeObject(apiParam), |
| | | appSecret); |
| | | apiParam.sign = sign; |
| | | |
| | | return new XkyAuditVendorParam |
| | | { |
| | | commonParam = apiParam |
| | | }; |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 一致性项目 |
| | | /// </summary> |
| | | public class Component |
| | | { |
| | | public string Name { get; set; } |
| | | public List<string> Specs { get; set; } |
| | | public List<string> Manufacturers { get; set; } |
| | | public List<string> Id { get; set; } |
| | | public int SelectedSpec { get; set; } |
| | | public int SelectedMfg { get; set; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 料号图纸接口返回对象 |
| | | /// </summary> |
| | | public class ApiResponse |
| | | { |
| | | [JsonProperty("status")] public int Status { get; set; } |
| | | |
| | | [JsonProperty("message")] public string Message { get; set; } |
| | | |
| | | [JsonProperty("data")] public string[] Data { get; set; } |
| | | |
| | | [JsonProperty("totalCount")] public int TotalCount { get; set; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 携客云接口返回对象 |
| | | /// </summary> |
| | | public class XKYApiResponse |
| | | { |
| | | [JsonProperty("errorCode")] public string ErrorCode { get; set; } |
| | | |
| | | [JsonProperty("errorMsg")] public string ErrorMsg { get; set; } |
| | | |
| | | [JsonProperty("result")] public int Result { get; set; } |
| | | |
| | | [JsonProperty("data")] public Root Data { get; set; } |
| | | |
| | | [JsonProperty("curServerTime")] public long CurServerTime { get; set; } |
| | | |
| | | // 如果需要时间转换可以添加这个属性 |
| | | public DateTime ServerTime => DateTimeOffset |
| | | .FromUnixTimeMilliseconds(CurServerTime).DateTime; |
| | | } |
| | | public class Root |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string irXkNo { get; set; } |
| | | |
| | | public List<LineListItem> lineList { get; set; } |
| | | |
| | | } |
| | | public class LineListItem |
| | | { |
| | | /// <summary> |
| | | /// 项次号 |
| | | /// </summary> |
| | | public int lineNo { get; set; } |
| | | /// <summary> |
| | | /// 问题描述 |
| | | /// </summary> |
| | | public string questionDesc { get; set; } |
| | | /// <summary> |
| | | /// 问题等级 0:次要,1:重要,2:致命 |
| | | /// </summary> |
| | | public int questionGrade { get; set; } |
| | | /// <summary> |
| | | /// 原因分析 |
| | | /// </summary> |
| | | public string reasonAnalyze { get; set; } |
| | | /// <summary> |
| | | /// 纠正预防措施 |
| | | /// </summary> |
| | | public string correctPreventMeasure { get; set; } |
| | | /// <summary> |
| | | /// 负责人 |
| | | /// </summary> |
| | | public string principal { get; set; } |
| | | /// <summary> |
| | | /// 预计完成时间对应的时间戳 |
| | | /// </summary> |
| | | public string expectedFinishTime { get; set; } |
| | | /// <summary> |
| | | /// 检核说明 |
| | | /// </summary> |
| | | public string checkExplain { get; set; } |
| | | /// <summary> |
| | | /// 检核人姓名 |
| | | /// </summary> |
| | | public string checkPeopleName { get; set; } |
| | | /// <summary> |
| | | /// 检核结果 0:合格,1:不合格 |
| | | /// </summary> |
| | | public string checkStatus { get; set; } |
| | | } |
| | | } |