431 lines
19 KiB
C#
431 lines
19 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 设备维修
|
|
/// </summary>
|
|
[RoutePrefix("Api/Maintenance")]
|
|
public class MaintenanceController : CFController
|
|
{
|
|
/// <summary>
|
|
/// 查询设备维修单
|
|
/// </summary>
|
|
/// <param name="Code"></param>
|
|
/// <returns></returns>
|
|
[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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设备维修
|
|
/// </summary>
|
|
/// <param name="Entity"></param>
|
|
/// <returns></returns>
|
|
[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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 停机单申请
|
|
/// </summary>
|
|
/// <param name="Form"></param>
|
|
/// <returns></returns>
|
|
[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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 停机单 - 评估
|
|
/// </summary>
|
|
/// <param name="AuotID"></param>
|
|
/// <param name="AssessmentCode"></param>
|
|
/// <returns></returns>
|
|
[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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改停机单 停机状态
|
|
/// </summary>
|
|
/// <param name="AutoID"></param>
|
|
/// <param name="Status"></param>
|
|
/// <returns></returns>
|
|
[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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 双重确认
|
|
/// </summary>
|
|
/// <param name="AutoID"></param>
|
|
/// <param name="t"></param>
|
|
/// <returns></returns>
|
|
[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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生产部门设备恢复确认
|
|
/// </summary>
|
|
/// <param name="AutoID"></param>
|
|
/// <returns></returns>
|
|
[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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取生产批号信息
|
|
/// </summary>
|
|
/// <param name="Batch"></param>
|
|
/// <returns></returns>
|
|
[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($"<?xml version=\"1.0\" encoding=\"utf-8\"?>");
|
|
builder.AppendLine($"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");
|
|
builder.AppendLine($" <soap:Header>");
|
|
builder.AppendLine($" <SvcAuthentication xmlns=\"http://www.TechScan.cn/\">");
|
|
builder.AppendLine($" <Password>{pass64}</Password>");
|
|
builder.AppendLine($" <Username>{Params.LoginCode}</Username>");
|
|
builder.AppendLine($" </SvcAuthentication>");
|
|
builder.AppendLine($" </soap:Header>");
|
|
builder.AppendLine($" <soap:Body>");
|
|
builder.AppendLine($" <GetBatchInfoToStaff xmlns=\"http://www.TechScan.cn/\">");
|
|
builder.AppendLine($" <inParams>{Params.inParams}</inParams>");
|
|
builder.AppendLine($" </GetBatchInfoToStaff>");
|
|
builder.AppendLine($" </soap:Body>");
|
|
builder.AppendLine($"</soap:Envelope>");
|
|
|
|
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;
|
|
}
|
|
|
|
///// <summary>
|
|
///// 获取PE QE 信息
|
|
///// </summary>
|
|
///// <param name="Batch"></param>
|
|
///// <returns></returns>
|
|
//[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($"<?xml version=\"1.0\" encoding=\"utf-8\"?>");
|
|
// builder.AppendLine($"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");
|
|
// builder.AppendLine($" <soap:Header>");
|
|
// builder.AppendLine($" <SvcAuthentication xmlns=\"http://www.TechScan.cn/\">");
|
|
// builder.AppendLine($" <Password>{pass64}</Password>");
|
|
// builder.AppendLine($" <Username>{Params.LoginCode}</Username>");
|
|
// builder.AppendLine($" </SvcAuthentication>");
|
|
// builder.AppendLine($" </soap:Header>");
|
|
// builder.AppendLine($" <soap:Body>");
|
|
// builder.AppendLine($" <ProductResourceAllocationsGet xmlns=\"http://www.TechScan.cn/\">");
|
|
// builder.AppendLine($" <inParams>{Params.inParams}</inParams>");
|
|
// builder.AppendLine($" </ProductResourceAllocationsGet>");
|
|
// builder.AppendLine($" </soap:Body>");
|
|
// builder.AppendLine($"</soap:Envelope>");
|
|
|
|
// 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<Guid>("Staff")).ToArray();
|
|
// var query = from row in t2.AsEnumerable()
|
|
// where staffs.Contains(row.Field<Guid>("GUID"))
|
|
// select row.Field<string>("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;
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 获取PE QE 信息
|
|
/// </summary>
|
|
/// <param name="Batch"></param>
|
|
/// <returns></returns>
|
|
[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($"<?xml version=\"1.0\" encoding=\"utf-8\"?>");
|
|
builder.AppendLine($"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");
|
|
builder.AppendLine($" <soap:Header>");
|
|
builder.AppendLine($" <SvcAuthentication xmlns=\"http://www.TechScan.cn/\">");
|
|
builder.AppendLine($" <Password>{pass64}</Password>");
|
|
builder.AppendLine($" <Username>{Params.LoginCode}</Username>");
|
|
builder.AppendLine($" </SvcAuthentication>");
|
|
builder.AppendLine($" </soap:Header>");
|
|
builder.AppendLine($" <soap:Body>");
|
|
builder.AppendLine($" <StaffsDatasGet xmlns=\"http://www.TechScan.cn/\">");
|
|
builder.AppendLine($" <inParams>{js.ToString()}</inParams>");
|
|
builder.AppendLine($" </StaffsDatasGet>");
|
|
builder.AppendLine($" </soap:Body>");
|
|
builder.AppendLine($"</soap:Envelope>");
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|