dev_lx #40

Merged
LiuXin merged 4 commits from dev_lx into main 3 weeks ago
  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. 78
      WeiCloud.Fusion/ThirdPartyServices/ThirdPartyServices.DomainService/ShenZhouShengAn/ThirdPartyProviderService.cs

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

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

@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging;
using Org.BouncyCastle.Ocsp;
using System.Net.Http.Headers;
using System.Net.Http.Json;
using System.Text.Json;
@ -89,13 +90,28 @@ namespace ThirdPartyServices.DomainService.ShenZhouShengAn
{
HttpClientResult<BranchResDto> result = new HttpClientResult<BranchResDto>() { Code = "Success", Message = "请求成功" };
result = await SendAndParseAsync<int, HttpClientResult<BranchResDto>>(
"https://zrh.szdunan.cn/v1/api/branch/index_no_check_branch",
token,
ubpid,
HttpMethod.Post);
try
{
// 构造表单参数(key必须是"ubpid",和Postman一致)
var formData = new Dictionary<string, string>
{
{ "ubpid", ubpid.ToString() } // 转换为字符串,匹配表单提交格式
};
return result;
// 调用表单提交方法,而非JSON提交
result = await SendFormAndParseAsync<HttpClientResult<BranchResDto>>(
"https://zrh.szdunan.cn/v1/api/branch/index_no_check_branch",
token,
formData,
HttpMethod.Post);
return result;
}
catch (Exception ex)
{
_logger.LogError(ex, "获取分支权限失败");
return new HttpClientResult<BranchResDto> { Code = "Error", Message = $"请求异常:{ex.Message}" };
}
}
/// <summary>
@ -110,10 +126,7 @@ namespace ThirdPartyServices.DomainService.ShenZhouShengAn
public async Task<string> SendJsonAsync<TRequest>(string url, string? token, TRequest? payload, HttpMethod method)
{
using var request = new HttpRequestMessage(method, url);
if (!string.IsNullOrWhiteSpace(token))
{
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
}
request.Headers.TryAddWithoutValidation("Authorization", "Bearer " + token);
// 写入 JSON 请求体(POST、PUT、PATCH 等适用)
if (payload != null && method != HttpMethod.Get)
{
@ -166,5 +179,50 @@ namespace ThirdPartyServices.DomainService.ShenZhouShengAn
{
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