Merge pull request 'dev_lx' (#40) from dev_lx into main

Reviewed-on: #40
pull/42/head^2
刘鑫 3 weeks ago
commit 54d2d12b92
  1. 2
      WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/Common.Shared.Application.csproj
  2. 36
      WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/SafetyFirePro/ResponseDto/SunPlaceBoardWorkOrderResDto.cs
  3. 6
      WeiCloud.Fusion/ThirdPartyServices/ThirdPartyServices.DomainService/ShenZhouShengAn/SunPalaceBoardSafetyService.cs
  4. 70
      WeiCloud.Fusion/ThirdPartyServices/ThirdPartyServices.DomainService/ShenZhouShengAn/ThirdPartyProviderService.cs

@ -7,7 +7,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<PackageId>Common.Shared.Application</PackageId> <PackageId>Common.Shared.Application</PackageId>
<Version>4.2</Version> <Version>4.3</Version>
<Authors>zrh-lx</Authors> <Authors>zrh-lx</Authors>
<Company>zrh-lx</Company> <!-- 可选 --> <Company>zrh-lx</Company> <!-- 可选 -->
<Description>包含所有公共使用的 DTO、契约、接口模型等,供微服务之间共享使用</Description> <Description>包含所有公共使用的 DTO、契约、接口模型等,供微服务之间共享使用</Description>

@ -400,13 +400,19 @@ namespace Common.Shared.Application.SafetyFirePro.ResponseDto
/// 计划结束时间 /// 计划结束时间
/// </summary> /// </summary>
[JsonPropertyName("end_at")] [JsonPropertyName("end_at")]
public string End_at { get; set; } public string? End_at { get; set; }
/// <summary>
/// 计划开始时间
/// </summary>
[JsonPropertyName("real_start_at")]
public string? Real_start_at { get; set; }
/// <summary> /// <summary>
/// 实际结束时间 /// 实际结束时间
/// </summary> /// </summary>
[JsonPropertyName("finish_time")] [JsonPropertyName("finish_time")]
public string Finish_time { get; set; } public string? Finish_time { get; set; }
/// <summary> /// <summary>
/// 作业ID /// 作业ID
@ -418,31 +424,25 @@ namespace Common.Shared.Application.SafetyFirePro.ResponseDto
/// 作业名称 /// 作业名称
/// </summary> /// </summary>
[JsonPropertyName("name")] [JsonPropertyName("name")]
public string Name { get; set; } public string? Name { get; set; }
/// <summary> /// <summary>
/// 作业编号 /// 作业编号
/// </summary> /// </summary>
[JsonPropertyName("number")] [JsonPropertyName("number")]
public string Number { get; set; } public string? Number { get; set; }
/// <summary> /// <summary>
/// 作业人员信息 /// 作业人员信息
/// </summary> /// </summary>
[JsonPropertyName("operators")] [JsonPropertyName("operators")]
public List<Operator> Operators { get; set; } public List<Operator> Operators { get; set; } = [];
/// <summary> /// <summary>
/// 作业负责人信息 /// 作业负责人信息
/// </summary> /// </summary>
[JsonPropertyName("principal_info")] [JsonPropertyName("principal_info")]
public PrincipalInfo Principal_info { get; set; } public PrincipalInfo Principal_info { get; set; } = new PrincipalInfo();
/// <summary>
/// 实际开始作业时间
/// </summary>
[JsonPropertyName("real_start_at")]
public string Real_start_at { get; set; }
/// <summary> /// <summary>
/// 作业地点id /// 作业地点id
@ -454,19 +454,19 @@ namespace Common.Shared.Application.SafetyFirePro.ResponseDto
/// 作业地点信息 /// 作业地点信息
/// </summary> /// </summary>
[JsonPropertyName("region")] [JsonPropertyName("region")]
public Region Region { get; set; } public Region Region { get; set; } = new Region();
/// <summary> /// <summary>
/// 作业检查信息 /// 作业检查信息
/// </summary> /// </summary>
[JsonPropertyName("Supervises")] [JsonPropertyName("Supervises")]
public List<Supervise> Supervises { get; set; } public List<Supervise> Supervises { get; set; } = [];
/// <summary> /// <summary>
/// 作业计划开始时间 /// 作业计划开始时间
/// </summary> /// </summary>
[JsonPropertyName("start_at")] [JsonPropertyName("start_at")]
public string Start_at { get; set; } public string? Start_at { get; set; }
/// <summary> /// <summary>
/// 作业状态 /// 作业状态
@ -491,6 +491,12 @@ namespace Common.Shared.Application.SafetyFirePro.ResponseDto
[JsonPropertyName("name")] [JsonPropertyName("name")]
public string Name { get; set; } public string Name { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[JsonPropertyName("created_at")]
public string? Created_at { get; set; }
} }
public class ApprovalTask public class ApprovalTask

@ -98,7 +98,7 @@ namespace ThirdPartyServices.DomainService.ShenZhouShengAn
} }
//获取单位信息 //获取单位信息
HttpClientResult<BranchResDto> branchs = await _tokenProviderService.GetBranchPermissions(token, loginUsers.Data.Uid); HttpClientResult<BranchResDto> branchs = await _tokenProviderService.GetBranchPermissions(token, loginUsers.Data.Ubpid);
if (branchs.Code == "Error" || branchs.Data == null || branchs.Data.BranchPermissionIds == null || branchs.Data.BranchPermissionIds.Length == 0) if (branchs.Code == "Error" || branchs.Data == null || branchs.Data.BranchPermissionIds == null || branchs.Data.BranchPermissionIds.Length == 0)
{ {
_logger.LogWarning("GetProductionRiskEchart接口获取单位信息失败"); _logger.LogWarning("GetProductionRiskEchart接口获取单位信息失败");
@ -315,7 +315,7 @@ namespace ThirdPartyServices.DomainService.ShenZhouShengAn
} }
//获取单位信息 //获取单位信息
HttpClientResult<BranchResDto> branchs = await _tokenProviderService.GetBranchPermissions(token, loginUsers.Data.Uid); HttpClientResult<BranchResDto> branchs = await _tokenProviderService.GetBranchPermissions(token, loginUsers.Data.Ubpid);
if (branchs.Code == "Error" || branchs.Data == null || branchs.Data.BranchPermissionIds == null || branchs.Data.BranchPermissionIds.Length == 0) if (branchs.Code == "Error" || branchs.Data == null || branchs.Data.BranchPermissionIds == null || branchs.Data.BranchPermissionIds.Length == 0)
{ {
_logger.LogWarning("GetProductionRiskEchart接口获取单位信息失败"); _logger.LogWarning("GetProductionRiskEchart接口获取单位信息失败");
@ -525,7 +525,7 @@ namespace ThirdPartyServices.DomainService.ShenZhouShengAn
} }
//获取单位信息 //获取单位信息
HttpClientResult<BranchResDto> branchs = await _tokenProviderService.GetBranchPermissions(token, loginUsers.Data.Uid); HttpClientResult<BranchResDto> branchs = await _tokenProviderService.GetBranchPermissions(token, loginUsers.Data.Ubpid);
if (branchs.Code == "Error" || branchs.Data == null || branchs.Data.BranchPermissionIds == null || branchs.Data.BranchPermissionIds.Length == 0) if (branchs.Code == "Error" || branchs.Data == null || branchs.Data.BranchPermissionIds == null || branchs.Data.BranchPermissionIds.Length == 0)
{ {
_logger.LogWarning("GetStatistics接口获取单位信息失败"); _logger.LogWarning("GetStatistics接口获取单位信息失败");

@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Org.BouncyCastle.Ocsp;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Net.Http.Json; using System.Net.Http.Json;
using System.Text.Json; using System.Text.Json;
@ -89,14 +90,29 @@ namespace ThirdPartyServices.DomainService.ShenZhouShengAn
{ {
HttpClientResult<BranchResDto> result = new HttpClientResult<BranchResDto>() { Code = "Success", Message = "请求成功" }; HttpClientResult<BranchResDto> result = new HttpClientResult<BranchResDto>() { Code = "Success", Message = "请求成功" };
result = await SendAndParseAsync<int, HttpClientResult<BranchResDto>>( try
{
// 构造表单参数(key必须是"ubpid",和Postman一致)
var formData = new Dictionary<string, string>
{
{ "ubpid", ubpid.ToString() } // 转换为字符串,匹配表单提交格式
};
// 调用表单提交方法,而非JSON提交
result = await SendFormAndParseAsync<HttpClientResult<BranchResDto>>(
"https://zrh.szdunan.cn/v1/api/branch/index_no_check_branch", "https://zrh.szdunan.cn/v1/api/branch/index_no_check_branch",
token, token,
ubpid, formData,
HttpMethod.Post); HttpMethod.Post);
return result; return result;
} }
catch (Exception ex)
{
_logger.LogError(ex, "获取分支权限失败");
return new HttpClientResult<BranchResDto> { Code = "Error", Message = $"请求异常:{ex.Message}" };
}
}
/// <summary> /// <summary>
/// 请求第三方API,发送JSON数据,不支持get和delete方法 /// 请求第三方API,发送JSON数据,不支持get和delete方法
@ -110,10 +126,7 @@ namespace ThirdPartyServices.DomainService.ShenZhouShengAn
public async Task<string> SendJsonAsync<TRequest>(string url, string? token, TRequest? payload, HttpMethod method) public async Task<string> SendJsonAsync<TRequest>(string url, string? token, TRequest? payload, HttpMethod method)
{ {
using var request = new HttpRequestMessage(method, url); using var request = new HttpRequestMessage(method, url);
if (!string.IsNullOrWhiteSpace(token)) request.Headers.TryAddWithoutValidation("Authorization", "Bearer " + token);
{
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
}
// 写入 JSON 请求体(POST、PUT、PATCH 等适用) // 写入 JSON 请求体(POST、PUT、PATCH 等适用)
if (payload != null && method != HttpMethod.Get) if (payload != null && method != HttpMethod.Get)
{ {
@ -166,5 +179,50 @@ namespace ThirdPartyServices.DomainService.ShenZhouShengAn
{ {
return SendAndParseAsync<object, TResponse>(url, token, null, method); return SendAndParseAsync<object, TResponse>(url, token, null, method);
} }
/// <summary>
/// 发送表单格式请求(适配 multipart/form-data)
/// </summary>
public async Task<string> SendFormDataAsync(string url, string? token, Dictionary<string, string> formData, HttpMethod method)
{
using var request = new HttpRequestMessage(method, url);
request.Headers.TryAddWithoutValidation("Authorization", "Bearer " + token);
request.Headers.TryAddWithoutValidation("Accept", "*/*");
// 构造 multipart/form-data 表单数据
var formContent = new MultipartFormDataContent();
foreach (var item in formData)
{
// 添加表单参数(key=ubpid, value=31)
formContent.Add(new StringContent(item.Value), item.Key);
}
request.Content = formContent;
var response = await _httpClient.SendAsync(request);
if (!response.IsSuccessStatusCode)
{
var error = await response.Content.ReadAsStringAsync();
throw new Exception($"请求失败:{response.StatusCode}, 内容:{error}");
}
return await response.Content.ReadAsStringAsync();
}
/// <summary>
/// 表单请求 + 解析结果(适配 BranchResDto)
/// </summary>
public async Task<TResponse> SendFormAndParseAsync<TResponse>(
string url,
string? token,
Dictionary<string, string> formData,
HttpMethod method)
{
var responseContent = await SendFormDataAsync(url, token, formData, method);
return JsonSerializer.Deserialize<TResponse>(responseContent, new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true // 忽略大小写匹配(避免字段名大小写问题)
}) ?? throw new Exception("反序列化返回结果失败");
}
} }
} }
Loading…
Cancel
Save