using AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models;
|
using AlibabaCloud.SDK.Dingtalkyida_1_0.Models;
|
using AlibabaCloud.TeaUtil.Models;
|
using MES.Service.DB;
|
using MES.Service.Dto.webApi.DeliveryNote;
|
using MES.Service.Dto.webApi.ProductionOrder;
|
using MES.Service.Modes.DeliveryNote;
|
using MES.Service.Modes.ProductionOrder;
|
using MES.Service.service;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Diagnostics;
|
using System.Linq;
|
using Tea;
|
|
public class ProductionOrderManager : Repository<ProductionOrders>
|
{
|
/**
|
* 初始化账号Client,用于获取token
|
* @return Client
|
* @throws Exception
|
*/
|
public static AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client CreateClient1()
|
{
|
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
|
config.Protocol = "https";
|
config.RegionId = "central";
|
return new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client(config);
|
}
|
|
/**
|
* 获取钉钉的 Access Token
|
* @return string 返回获取到的 Access Token
|
*/
|
public string GetToken()
|
{
|
AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client client = CreateClient1();
|
AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest getAccessTokenRequest = new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest
|
{
|
AppKey = "dingyzos0r1bizj7g6lr",
|
AppSecret = "-HP4RvK2OUbqhG3iBUpd_TPe5MZRj8cfLc0b8Skt8rhC3I38kVLY9SS8P3kLWFcH",
|
};
|
|
try
|
{
|
var response = client.GetAccessToken(getAccessTokenRequest);
|
return response.Body.AccessToken; // 返回获取到的 Access Token
|
}
|
catch (TeaException err)
|
{
|
Console.WriteLine($"TeaException: Code={err.Code}, Message={err.Message}");
|
return null;
|
}
|
catch (Exception _err)
|
{
|
Console.WriteLine($"Exception: {_err.Message}");
|
return null;
|
}
|
}
|
|
|
/**
|
* 初始化账号Client,用于OA审批相关功能
|
* @return Client
|
* @throws Exception
|
*/
|
public static AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client CreateClientOa()
|
{
|
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
|
config.Protocol = "https";
|
config.RegionId = "central";
|
return new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client(config);
|
}
|
|
public string GetProductionDetail( string InstanceId)
|
{
|
string accessToken = GetToken();
|
if (string.IsNullOrEmpty(accessToken))
|
{
|
return "获取 Access Token 失败";
|
}
|
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client client = CreateClientOa();
|
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.GetProcessInstanceHeaders getProcessInstanceHeaders = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.GetProcessInstanceHeaders();
|
getProcessInstanceHeaders.XAcsDingtalkAccessToken = accessToken;
|
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.GetProcessInstanceRequest getProcessInstanceRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.GetProcessInstanceRequest
|
{
|
ProcessInstanceId = InstanceId,
|
};
|
try
|
{
|
|
var response = client.GetProcessInstanceWithOptions(getProcessInstanceRequest, getProcessInstanceHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
|
|
// 将响应体转换为 JSON 字符串
|
var responseJson = Newtonsoft.Json.JsonConvert.SerializeObject(response.Body);
|
|
// 解析 JSON 字符串为动态对象
|
dynamic responseObj = Newtonsoft.Json.JsonConvert.DeserializeObject(responseJson);
|
|
|
string fileName = null;
|
// 查找 "生产制造单" 对应的 Value
|
string fileId = null;
|
foreach (var formValue in responseObj.Result.FormComponentValues)
|
{
|
if (formValue.Name == "生产制造单" && formValue.Value != null)
|
{
|
// 解析 Value 中的 JSON 数组
|
var fileInfoArray = Newtonsoft.Json.JsonConvert.DeserializeObject<List<FileInfoProduction>>(formValue.Value.ToString());
|
|
if (fileInfoArray != null && fileInfoArray.Count > 0)
|
{
|
|
// 获取第一个文件的文件名
|
fileName = fileInfoArray[0].fileName;
|
|
fileId = fileInfoArray[0].fileId; // 提取第一个文件的 fileId
|
|
break;
|
}
|
}
|
}
|
|
Debug.WriteLine(fileId);
|
|
var result = GetDownloadUrl(fileId, InstanceId);
|
// 在您的代码中处理
|
var combinedResult = new CombinedResult
|
{
|
FileName = fileName,
|
DownloadInfo = Newtonsoft.Json.JsonConvert.DeserializeObject(result)
|
};
|
|
return Newtonsoft.Json.JsonConvert.SerializeObject(combinedResult);
|
|
}
|
catch (TeaException err)
|
{
|
return $"TeaException: Code={err.Code}, Message={err.Message}";
|
}
|
catch (Exception _err)
|
{
|
return $"Exception: {_err.Message}";
|
}
|
}
|
|
public string GetDownloadUrl(string fileId, string InstanceId)
|
{
|
|
string accessToken = GetToken();
|
if (string.IsNullOrEmpty(accessToken))
|
{
|
return "获取 Access Token 失败";
|
}
|
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client client = CreateClientOa();
|
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.GrantProcessInstanceForDownloadFileHeaders grantProcessInstanceForDownloadFileHeaders = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.GrantProcessInstanceForDownloadFileHeaders();
|
grantProcessInstanceForDownloadFileHeaders.XAcsDingtalkAccessToken = accessToken;
|
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.GrantProcessInstanceForDownloadFileRequest grantProcessInstanceForDownloadFileRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.GrantProcessInstanceForDownloadFileRequest
|
{
|
ProcessInstanceId = InstanceId,
|
FileId = fileId,
|
};
|
try
|
{
|
|
var response = client.GrantProcessInstanceForDownloadFileWithOptions(grantProcessInstanceForDownloadFileRequest, grantProcessInstanceForDownloadFileHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
|
|
return (Newtonsoft.Json.JsonConvert.SerializeObject(response.Body));
|
}
|
catch (TeaException err)
|
{
|
return $"TeaException: Code={err.Code}, Message={err.Message}";
|
}
|
catch (Exception _err)
|
{
|
return $"Exception: {_err.Message}";
|
}
|
}
|
|
|
/**
|
* 初始化账号Client,用于申请文件临时免登地址
|
* @return Client
|
* @throws Exception
|
*/
|
//public static AlibabaCloud.SDK.Dingtalkyida_1_0.Client CreateClient()
|
//{
|
// AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
|
// config.Protocol = "https";
|
// config.RegionId = "central";
|
// return new AlibabaCloud.SDK.Dingtalkyida_1_0.Client(config);
|
//}
|
|
//public string GetFileUrl(string imageUrl)
|
//{
|
|
// string accessToken = GetToken();
|
// if (string.IsNullOrEmpty(accessToken))
|
// {
|
// return "获取 Access Token 失败";
|
// }
|
// AlibabaCloud.SDK.Dingtalkyida_1_0.Client client = CreateClient();
|
// AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetOpenUrlHeaders getOpenUrlHeaders = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetOpenUrlHeaders();
|
// getOpenUrlHeaders.XAcsDingtalkAccessToken = accessToken;
|
// AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetOpenUrlRequest getOpenUrlRequest = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetOpenUrlRequest
|
// {
|
// SystemToken = "54A66HC1YDSSO9DP61Y93CWQ2W9B36IZZOY6MC81",
|
// UserId = "923188102",
|
// Language = "zh_CN",
|
// FileUrl = imageUrl,
|
// Timeout = 3600000,
|
// };
|
// try
|
// {
|
|
// var response = client.GetOpenUrlWithOptions("APP_Q7PLYKXMKFUJ5HY6DMWR", getOpenUrlRequest, getOpenUrlHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
|
// return (Newtonsoft.Json.JsonConvert.SerializeObject(response.Body));
|
// }
|
// catch (TeaException err)
|
// {
|
// return $"TeaException: Code={err.Code}, Message={err.Message}";
|
// }
|
// catch (Exception _err)
|
// {
|
// return $"Exception: {_err.Message}";
|
// }
|
//}
|
|
|
public dynamic Save(ErpProductionOrder erpProductionOrder)
|
{
|
//var erpProductionOrder = productionOrder.erpProductionOrder;
|
var mesProductionOrder = GetMesProductionOrder(erpProductionOrder);
|
|
return UseTransaction(db =>
|
{
|
return SaveOrUpdateData(db, mesProductionOrder) ? 1 : 0;
|
}) > 0;
|
}
|
|
public dynamic SaveList(List<ErpProductionOrder> erpProductionOrder)
|
{
|
var result = erpProductionOrder.Select(Save).ToList();
|
return result.All(b => b);
|
}
|
|
public ProductionOrders GetMesProductionOrder(ErpProductionOrder erpProductionOrder)
|
{
|
var mesProductionOrders = new ProductionOrders
|
{
|
ImageUrl = erpProductionOrder.ImageUrl,
|
SalesOrder = erpProductionOrder.SaleOrderNo
|
};
|
|
return mesProductionOrders;
|
}
|
|
private bool SaveOrUpdateData(SqlSugarScope db, ProductionOrders productionOrders)
|
{
|
var orUpdate = base.Insert(productionOrders);
|
if (orUpdate) return true;
|
throw new NotImplementedException("插入或更新失败");
|
}
|
|
|
}
|