using DeviceRepair.Api.Common; using DeviceRepair.Api.CustomAttribute; using DeviceRepair.DataAccess; using DeviceRepair.Models; using DeviceRepair.Models.Common; using DeviceRepair.Utils; using Newtonsoft.Json.Linq; using System; using System.Data; using System.Net.Http; using System.Text; using System.Web.Http; using System.Xml; using System.Linq; using System.Collections.Generic; namespace DeviceRepair.Api.Controllers { /// /// 设备维修 /// [RoutePrefix("Api/Maintenance")] public class MaintenanceController : CFController { /// /// 查询设备维修单 /// /// /// [HttpPost, HttpAuthorize, Route("GetDatas")] public APIResponseData GetDatas(DeviceWarrantyRequestFormFilter FilterInfo) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "操作失败!" }; try { return MaintenanceAccess.Instance.GetDatas(FilterInfo); } catch (Exception ex) { apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 设备维修 /// /// /// [HttpPost, HttpAuthorize, Route("DeviceMaintion")] public APIResponseData DeviceMaintion(DeviceWarrantyRequestMaintaionView Entity) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "操作失败!" }; try { base.GetParams(); return MaintenanceAccess.Instance.DeviceMaintion(Entity.TodbModel(), Entity.AccessoriesItems, OperationInfo); } catch (Exception ex) { apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 停机单申请 /// /// /// [HttpPost, HttpAuthorize, Route("DeviceDownFormAdd")] public APIResponseData DeviceDownFormAdd(DeviceWarrantyRequestForm Form) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "操作失败!" }; try { base.GetParams(); return MaintenanceAccess.Instance.DeviceDownFormAdd(Form, OperationInfo); } catch (Exception ex) { apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 停机单 - 评估 /// /// /// /// [HttpPost, HttpAuthorize, Route("DownFormAssessment")] public APIResponseData DownFormAssessment(DeviceWarrantyEvaluatorInfo Evaluator) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "操作失败!" }; try { base.GetParams(); return MaintenanceAccess.Instance.DownFormAssessment(Evaluator, OperationInfo); } catch (Exception ex) { apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 修改停机单 停机状态 /// /// /// /// [HttpPost, HttpAuthorize, Route("ChangeDownStatus")] public APIResponseData ChangeDownStatus(int AutoID, int Status) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "操作失败!" }; try { base.GetParams(); return MaintenanceAccess.Instance.ChangeDownStatus(AutoID, Status > 0, OperationInfo); } catch (Exception ex) { apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 双重确认 /// /// /// /// [HttpPost, HttpAuthorize, Route("ValidateMaintenance")] public APIResponseData ValidateMaintenance(int AutoID, int t) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "操作失败!" }; try { base.GetParams(); return MaintenanceAccess.Instance.ValidateMaintenance(AutoID, t, OperationInfo); } catch (Exception ex) { apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 生产部门设备恢复确认 /// /// /// [HttpPost, HttpAuthorize, Route("DeviceResumptionComfirm")] public APIResponseData DeviceResumptionComfirm(int AutoID) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "操作失败!" }; try { base.GetParams(); return MaintenanceAccess.Instance.DeviceResumptionComfirm(AutoID, OperationInfo); } catch (Exception ex) { apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 获取生产批号信息 /// /// /// [HttpPost, HttpAuthorize, Route("GetBatchInfoToStaff")] public APIResponseData GetBatchInfoToStaff(SfcParams Params) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "获取失败!" }; try { string SFCWebServiceUrl = Utils.Config.Configurations.Properties.SFCWebServiceUrl; bool isSuccess = false; byte[] password = Encoding.Unicode.GetBytes(Params.LoginCode); Array.Reverse(password); string pass64 = Convert.ToBase64String(password); if (pass64.Length < 10) pass64 += "YeT+=fue"; StringBuilder builder = new StringBuilder(); builder.AppendLine($""); builder.AppendLine($""); builder.AppendLine($" "); builder.AppendLine($" "); builder.AppendLine($" {pass64}"); builder.AppendLine($" {Params.LoginCode}"); builder.AppendLine($" "); builder.AppendLine($" "); builder.AppendLine($" "); builder.AppendLine($" "); builder.AppendLine($" {Params.inParams}"); builder.AppendLine($" "); builder.AppendLine($" "); builder.AppendLine($""); using (var client = new HttpClient()) { var content = new StringContent(builder.ToString(), Encoding.UTF8, "text/xml"); var request = new HttpRequestMessage(HttpMethod.Post, $"{SFCWebServiceUrl}/SfcService.asmx"); request.Content = content; var response = client.SendAsync(request).Result; if (response.IsSuccessStatusCode) { string stringRtn = response.Content.ReadAsStringAsync().Result; XmlDocument doc = new XmlDocument(); doc.LoadXml(stringRtn); XmlNode Node = doc.DocumentElement["soap:Body"]["GetBatchInfoToStaffResponse"]["GetBatchInfoToStaffResult"]["Code"].LastChild; if (Node.Value == "0") { Node = doc.DocumentElement["soap:Body"]["GetBatchInfoToStaffResponse"]["btResults"].LastChild; byte[] bytes = Convert.FromBase64String(Node.Value); DataSet ds = bytes.ExactDataSet(); isSuccess = ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0; if (isSuccess) return new APIResponseData { Code = 1, Data = ds.Tables[0] }; } else { Node = doc.DocumentElement["soap:Body"]["GetBatchInfoToStaffResponse"]["GetBatchInfoToStaffResult"]["Msg"].LastChild; return new APIResponseData { Code = -1, Message = Node.Value }; } } } } catch (Exception ex) { apiResponseData.Message = ex.Message; } return apiResponseData; } ///// ///// 获取PE QE 信息 ///// ///// ///// //[HttpPost, HttpAuthorize, Route("ProductResourceAllocationsGet")] //public APIResponseData ProductResourceAllocationsGet(SfcParams Params) //{ // APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "获取失败!" }; // try // { // string SFCWebServiceUrl = Utils.Config.Configurations.Properties.SFCWebServiceUrl; // bool isSuccess = false; // byte[] password = Encoding.Unicode.GetBytes(Params.LoginCode); // Array.Reverse(password); // string pass64 = Convert.ToBase64String(password); // if (pass64.Length < 10) // pass64 += "YeT+=fue"; // StringBuilder builder = new StringBuilder(); // builder.AppendLine($""); // builder.AppendLine($""); // builder.AppendLine($" "); // builder.AppendLine($" "); // builder.AppendLine($" {pass64}"); // builder.AppendLine($" {Params.LoginCode}"); // builder.AppendLine($" "); // builder.AppendLine($" "); // builder.AppendLine($" "); // builder.AppendLine($" "); // builder.AppendLine($" {Params.inParams}"); // builder.AppendLine($" "); // builder.AppendLine($" "); // builder.AppendLine($""); // using (var client = new HttpClient()) // { // var content = new StringContent(builder.ToString(), Encoding.UTF8, "text/xml"); // var request = new HttpRequestMessage(HttpMethod.Post, $"{SFCWebServiceUrl}/SfcAddon.asmx"); // request.Content = content; // var response = client.SendAsync(request).Result; // if (response.IsSuccessStatusCode) // { // string stringRtn = response.Content.ReadAsStringAsync().Result; // XmlDocument doc = new XmlDocument(); // doc.LoadXml(stringRtn); // XmlNode Node = doc.DocumentElement["soap:Body"]["ProductResourceAllocationsGetResponse"]["ProductResourceAllocationsGetResult"]["Code"].LastChild; // if (Node.Value == "0") // { // Node = doc.DocumentElement["soap:Body"]["ProductResourceAllocationsGetResponse"]["btResults"].LastChild; // byte[] bytes = Convert.FromBase64String(Node.Value); // DataSet ds = bytes.ExactDataSet(); // isSuccess = ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0; // if (isSuccess) // { // APIResponseData s = StaffsDatasGet(Params); // if (s.IsSuccess) // { // DataTable t2 = s.Data as DataTable; // Guid[] staffs = ds.Tables[0].AsEnumerable().Select(x => x.Field("Staff")).ToArray(); // var query = from row in t2.AsEnumerable() // where staffs.Contains(row.Field("GUID")) // select row.Field("EMail"); // //t2.AsEnumerable().Where(x=>x.Field<"">) // return new APIResponseData { Code = 1, Data = ds }; // } // else // { // return new APIResponseData { Code = -1, Message = s.Message }; // } // } // } // else // { // Node = doc.DocumentElement["soap:Body"]["ProductResourceAllocationsGetResponse"]["ProductResourceAllocationsGetResult"]["Msg"].LastChild; // return new APIResponseData { Code = -1, Message = Node.Value }; // } // } // } // } // catch (Exception ex) // { // apiResponseData.Message = ex.Message; // } // return apiResponseData; //} /// /// 获取PE QE 信息 /// /// /// [HttpPost, HttpAuthorize, Route("ProductResourceAllocationsGet")] public APIResponseData ProductResourceAllocationsGet(SfcParams Params) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "获取失败!" }; try { JObject js = JObject.Parse(Params.inParams); js.Add("UserCode", ""); js.Add("UserName", ""); js.Add("Post", ""); string SFCWebServiceUrl = Utils.Config.Configurations.Properties.SFCWebServiceUrl; bool isSuccess = false; byte[] password = Encoding.Unicode.GetBytes(Params.LoginCode); Array.Reverse(password); string pass64 = Convert.ToBase64String(password); if (pass64.Length < 10) pass64 += "YeT+=fue"; StringBuilder builder = new StringBuilder(); builder.AppendLine($""); builder.AppendLine($""); builder.AppendLine($" "); builder.AppendLine($" "); builder.AppendLine($" {pass64}"); builder.AppendLine($" {Params.LoginCode}"); builder.AppendLine($" "); builder.AppendLine($" "); builder.AppendLine($" "); builder.AppendLine($" "); builder.AppendLine($" {js.ToString()}"); builder.AppendLine($" "); builder.AppendLine($" "); builder.AppendLine($""); using (var client = new HttpClient()) { var content = new StringContent(builder.ToString(), Encoding.UTF8, "text/xml"); var request = new HttpRequestMessage(HttpMethod.Post, $"{SFCWebServiceUrl}/SfcAddon.asmx"); request.Content = content; var response = client.SendAsync(request).Result; if (response.IsSuccessStatusCode) { string stringRtn = response.Content.ReadAsStringAsync().Result; XmlDocument doc = new XmlDocument(); doc.LoadXml(stringRtn); XmlNode Node = doc.DocumentElement["soap:Body"]["StaffsDatasGetResponse"]["StaffsDatasGetResult"]["Code"].LastChild; if (Node.Value == "0") { Node = doc.DocumentElement["soap:Body"]["StaffsDatasGetResponse"]["btResults"].LastChild; byte[] bytes = Convert.FromBase64String(Node.Value); DataSet ds = bytes.ExactDataSet(); isSuccess = ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0; if (isSuccess) return new APIResponseData { Code = 1, Data = ds.Tables[0] }; } else { Node = doc.DocumentElement["soap:Body"]["StaffsDatasGetResponse"]["StaffsDatasGetResult"]["Msg"].LastChild; return new APIResponseData { Code = -1, Message = Node.Value }; } } } } catch (Exception ex) { apiResponseData.Message = ex.Message; } return apiResponseData; } /// /// 判断维修单是否提交 /// /// /// [HttpGet, HttpAuthorize, Route("MaintionDataIsSubmit")] public APIResponseData MaintionDataIsSubmit(int AutoID) { APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "查询失败!" }; try { return MaintenanceAccess.Instance.MaintionDataIsSubmit(AutoID); } catch (Exception ex) { apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } } }