FromForm
build / build-push (push) Successful in 27s

This commit is contained in:
wanghu
2026-09-07 09:29:47 +08:00
parent 7471dbe66f
commit 951ed3f00a
4 changed files with 82 additions and 49 deletions
@@ -77,7 +77,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// <summary>添加字典。</summary>
[HttpPost("AddDic")]
public async Task AddDic([FromBody] Common_Dictionary model)
public async Task AddDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数错误!");
@@ -94,7 +94,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// <summary>更新字典。</summary>
[HttpPost("UpdateDic")]
public async Task UpdateDic([FromBody] Common_Dictionary model)
public async Task UpdateDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数有误!");
model.Schserid = SchSerID();
@@ -103,7 +103,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// <summary>编辑字典名称。</summary>
[HttpPost("EditDic")]
public async Task EditDic([FromBody] Common_Dictionary model)
public async Task EditDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数有误!");
model.Schserid = SchSerID();
@@ -112,7 +112,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// <summary>添加发文部门。</summary>
[HttpPost("AddDeptDic")]
public async Task AddDeptDic([FromBody] Common_Dictionary model)
public async Task AddDeptDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数有误!");
@@ -129,7 +129,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// <summary>更新发文部门。</summary>
[HttpPost("UpdateDeptDic")]
public async Task UpdateDeptDic([FromBody] Common_Dictionary model)
public async Task UpdateDeptDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数有误!");
model.Schserid = SchSerID();
@@ -49,7 +49,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// <summary>添加审核流程。</summary>
[HttpPost("Create")]
public async Task Create([FromBody] Common_flowinfo model)
public async Task Create([FromForm] Common_flowinfo model)
{
model.schSerID = SchSerID();
await _svc.CreateAsync(model);
@@ -57,7 +57,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// <summary>修改审核流程。</summary>
[HttpPost("Edit")]
public async Task Edit([FromBody] Common_flowinfo model)
public async Task Edit([FromForm] Common_flowinfo model)
{
model.schSerID = SchSerID();
await _svc.EditAsync(model);
@@ -65,12 +65,12 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// <summary>添加步骤流程。</summary>
[HttpPost("StepCreate")]
public Task StepCreate([FromBody] Common_flowstep model)
public Task StepCreate([FromForm] Common_flowstep model)
=> _svc.StepCreateAsync(model);
/// <summary>修改步骤流程。</summary>
[HttpPost("StepEdit")]
public Task StepEdit([FromBody] Common_flowstep model)
public Task StepEdit([FromForm] Common_flowstep model)
=> _svc.StepEditAsync(model);
/// <summary>删除审核流程(ids 逗号分隔)。</summary>
@@ -80,7 +80,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// <summary>删除步骤。</summary>
[HttpPost("StepDelete")]
public Task StepDelete([FromBody] decimal[] ids)
public Task StepDelete([FromForm] decimal[] ids)
=> _svc.StepDeleteAsync(ids);
/// <summary>流程绑定的步骤列表。</summary>
@@ -3,6 +3,7 @@ using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Yh.Platform.Abstractions;
using YhCore.Common;
using YhCore.Common.UserContext;
@@ -17,6 +18,9 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 审核角色 + 流程配置控制器(对应旧 Areas/DocPrint/WYSHRoleController,路由 api/docprint/wyshrole)。
/// 45 action 中本批落地 39 个;Excel 导入导出(ExceltotalListSHRole/WYRDExceldaochu/UpfileExcelSHRole/
/// downMBOfSHRole/downUpfileSHRoleFK)与审批单 PDF(DwonWYSQD)依赖 NPOI/PdfHelper,延后迁移。
/// POST 动作一律 [FromForm]:前端 api/index.js 固定 x-www-form-urlencoded 提交([FromForm] 会 415);
/// 老契约"表单字段塞 JSON"的动作(WYSHRole/SHTeaTxt/listXxxTxt/data/docdata/docnumdata)
/// 以 [FromForm] string 接收后手动反序列化。
/// </summary>
[EnableCors("default")]
[ApiController]
@@ -30,6 +34,14 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
_role = role;
}
/// <summary>解析老契约"表单字段塞 JSON"的值;空串安全,非法 JSON 返回 null 由调用方判参。</summary>
private static T ParseFormJson<T>(string txt) where T : class
{
if (string.IsNullOrWhiteSpace(txt)) return null;
try { return JsonConvert.DeserializeObject<T>(txt); }
catch (JsonException) { return null; }
}
#region 审核角色管理
/// <summary>学校是否启用审核角色(旧 getIsSHRole)。</summary>
@@ -49,18 +61,20 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
public async Task<string> UpdateSHRoleName([FromQuery] decimal serID, [FromQuery] string sHRoleName)
=> await _role.UpdateSHRoleNameAsync(SchSerID(), UserId(), serID, sHRoleName);
/// <summary>新增/编辑角色(旧 EditSHRole,form: WYSHRole=JSON → [FromBody])。</summary>
/// <summary>新增/编辑角色(旧 EditSHRole,form: WYSHRole=JSON 字符串)。</summary>
[HttpPost("EditSHRole")]
public async Task<string> EditSHRole([FromBody] WYSHRoleExt model)
public async Task<string> EditSHRole([FromForm] string WYSHRole)
{
var model = ParseFormJson<WYSHRoleExt>(WYSHRole);
if (model == null) throw new DException("参数错误!");
return await _role.EditSHRoleAsync(SchSerID(), UserId(), model);
}
/// <summary>编辑成员行(旧 editSHTeaRow,form: SHTeaTxt → [FromBody])。</summary>
/// <summary>编辑成员行(旧 editSHTeaRow,form: SHTeaTxt=JSON 字符串)。</summary>
[HttpPost("editSHTeaRow")]
public async Task<string> EditSHTeaRow([FromBody] WY_SHRole_SHTea model)
public async Task<string> EditSHTeaRow([FromForm] string SHTeaTxt)
{
var model = ParseFormJson<WY_SHRole_SHTea>(SHTeaTxt);
if (model == null) throw new DException("参数错误!");
return await _role.EditSHTeaRowAsync(SchSerID(), UserId(), model);
}
@@ -70,28 +84,34 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
public async Task<string> DelSHTeaRow([FromQuery] decimal serID)
=> await _role.DelSHTeaRowAsync(SchSerID(), serID);
/// <summary>批量保存审核人(旧 editSHTea,form: SHRoleID + listSHTeaTxt → [FromBody])。</summary>
/// <summary>批量保存审核人(旧 editSHTea,form: SHRoleID + listSHTeaTxt=JSON 数组字符串)。</summary>
[HttpPost("editSHTea")]
public async Task<string> EditSHTea([FromBody] EditSHTeaDto model)
public async Task<string> EditSHTea([FromForm] decimal SHRoleID, [FromForm] string listSHTeaTxt)
{
if (model == null) throw new DException("参数错误!");
return await _role.EditSHTeaAsync(SchSerID(), UserId(), model.SHRoleID, model.listSHTea);
var list = ParseFormJson<List<WY_SHRole_SHTea>>(listSHTeaTxt) ?? new List<WY_SHRole_SHTea>();
return await _role.EditSHTeaAsync(SchSerID(), UserId(), SHRoleID, list);
}
/// <summary>批量保存被审核人(旧 editBSHTea,form: SHRoleID + listBSHTeaTxt → [FromBody])。</summary>
/// <summary>批量保存被审核人(旧 editBSHTea,form: SHRoleID + listBSHTeaTxt=JSON 数组字符串)。</summary>
[HttpPost("editBSHTea")]
public async Task<string> EditBSHTea([FromBody] EditBSHTeaDto model)
public async Task<string> EditBSHTea([FromForm] decimal SHRoleID, [FromForm] string listBSHTeaTxt)
{
if (model == null) throw new DException("参数错误!");
return await _role.EditBSHTeaAsync(SchSerID(), UserId(), model.SHRoleID, model.listBSHTea);
var list = ParseFormJson<List<WY_SHRole_BSHTea>>(listBSHTeaTxt) ?? new List<WY_SHRole_BSHTea>();
return await _role.EditBSHTeaAsync(SchSerID(), UserId(), SHRoleID, list);
}
/// <summary>删除角色(旧 delSHRole,form: listSHRoleIDTxt → [FromBody])。</summary>
/// <summary>删除角色(旧 delSHRole,form: listSHRoleIDTxt=JSON 数组字符串,兼容逗号分隔)。</summary>
[HttpPost("delSHRole")]
public async Task<string> DelSHRole([FromBody] DelSHRoleDto model)
public async Task<string> DelSHRole([FromForm] string listSHRoleIDTxt)
{
if (model == null) throw new DException("参数错误!");
return await _role.DelSHRoleAsync(SchSerID(), model.listSHRoleID);
var list = ParseFormJson<List<decimal?>>(listSHRoleIDTxt);
if (list == null)
{
list = (listSHRoleIDTxt ?? "").Split(',')
.Where(a => !string.IsNullOrWhiteSpace(a) && decimal.TryParse(a.Trim(), out _))
.Select(a => (decimal?)decimal.Parse(a.Trim())).ToList();
}
return await _role.DelSHRoleAsync(SchSerID(), list);
}
#endregion
@@ -110,7 +130,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// <summary>新增/编辑流程(旧 EditFlow;schSerID 取当前用户)。</summary>
[HttpPost("EditFlow")]
public async Task<string> EditFlow([FromBody] Common_flowinfo model)
public async Task<string> EditFlow([FromForm] Common_flowinfo model)
{
if (model == null) throw new DException("参数错误!");
model.schSerID = SchSerID();
@@ -119,7 +139,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// <summary>新增步骤(旧 StepCreateOfSHRole)。</summary>
[HttpPost("StepCreateOfSHRole")]
public async Task<string> StepCreateOfSHRole([FromBody] Common_flowstep model)
public async Task<string> StepCreateOfSHRole([FromForm] Common_flowstep model)
{
if (model == null) throw new DException("参数错误!");
return await _role.StepCreateOfSHRoleAsync(model);
@@ -180,11 +200,22 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
public async Task<List<Common_Dictionary>> GetDicInfo([FromQuery] string typeID)
=> await _role.GetDicInfoAsync(SchSerID(), typeID);
/// <summary>编辑文印(审核角色视角;旧 editDocPrint,form 三段 JSON → [FromBody])。</summary>
/// <summary>编辑文印(审核角色视角;旧 editDocPrint,form: isedit + data/docdata/docnumdata 三段 JSON 字符串)。</summary>
[HttpPost("editDocPrint")]
public async Task<int> EditDocPrint([FromBody] WYSHRoleEditDocPrintDto model)
public async Task<int> EditDocPrint(
[FromForm] int isedit,
[FromForm] string data,
[FromForm] string docdata,
[FromForm] string docnumdata)
{
if (model == null) throw new DException("参数错误!");
var model = new WYSHRoleEditDocPrintDto
{
isedit = isedit,
data = ParseFormJson<WYFlowForUser>(data),
docdata = ParseFormJson<WYDocPrintSaveDto>(docdata),
docnumdata = ParseFormJson<List<WY_DocPrint_Num>>(docnumdata) ?? new List<WY_DocPrint_Num>()
};
if (model.data == null || model.docdata == null) throw new DException("参数错误!");
return await _role.EditDocPrintAsync(SchSerID(), UserId(), model);
}
@@ -259,7 +290,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// <summary>审核确认(旧 shenheokSHRole)。</summary>
[HttpPost("shenheokSHRole")]
public async Task<string> ShenheOkSHRole([FromBody] FlowTranctDto model)
public async Task<string> ShenheOkSHRole([FromForm] FlowTranctDto model)
{
if (model == null) throw new DException("参数错误!");
model.actionuserid = UserContextHolder.Current?.Id ?? 0;
@@ -273,9 +304,9 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
#region 签名 / 退回 / 金额重提
/// <summary>保存签名(旧 SaveSignature,form: pic → [FromBody])。</summary>
/// <summary>保存签名(旧 SaveSignature,form: pic → [FromForm])。</summary>
[HttpPost("SaveSignature")]
public async Task<string> SaveSignature([FromBody] SaveSignatureDto model)
public async Task<string> SaveSignature([FromForm] SaveSignatureDto model)
{
if (model == null) throw new DException("参数错误!");
return await _role.SaveSignatureAsync(SchSerID(), UserId(), model.pic);
@@ -289,9 +320,9 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
[HttpGet("DelSignature")]
public async Task<string> DelSignature() => await _role.DelSignatureAsync(SchSerID(), UserId());
/// <summary>退回(旧 TuiHui,form: DocID + cont → [FromBody])。</summary>
/// <summary>退回(旧 TuiHui,form: DocID + cont → [FromForm])。</summary>
[HttpPost("TuiHui")]
public async Task<string> TuiHui([FromBody] TuiHuiDto model)
public async Task<string> TuiHui([FromForm] TuiHuiDto model)
{
if (model == null) throw new DException("参数错误!");
return await _role.TuiHuiAsync(UserId(), model.cont, model.DocID);
@@ -302,9 +333,9 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
public async Task<string> UnTuiHui([FromQuery] decimal docID)
=> await _role.UnTuiHuiAsync(UserId(), docID);
/// <summary>金额重提(旧 regetJE,form: DocID 逗号分隔 + type → [FromBody])。</summary>
/// <summary>金额重提(旧 regetJE,form: DocID 逗号分隔 + type → [FromForm])。</summary>
[HttpPost("regetJE")]
public async Task<string> RegetJE([FromBody] RegetJEDto model)
public async Task<string> RegetJE([FromForm] RegetJEDto model)
{
if (model == null) throw new DException("参数错误!");
var ids = (model.DocID ?? "").Split(',')
@@ -37,7 +37,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// <summary>添加文印分类。</summary>
[HttpPost("AddDic")]
public async Task AddDic([FromBody] Common_Dictionary model)
public async Task AddDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数错误!");
model.Schserid = SchSerID();
@@ -51,7 +51,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// <summary>添加印制版面。</summary>
[HttpPost("AddYZBM")]
public async Task AddYZBM([FromBody] Common_Dictionary model)
public async Task AddYZBM([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数错误!");
model.Schserid = SchSerID();
@@ -80,18 +80,20 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
[FromQuery] bool showAll = false)
=> await _classify.DictionaryTypeListAsync(SchSerID(), name, showAll, typeID);
/// <summary>添加公共类别(复用字典添加逻辑)。</summary>
/// <summary>添加公共类别(复用字典添加逻辑)。前端 api/index.js 固定以 x-www-form-urlencoded 提交
/// (TypeId/Name/typeName 表单字段,大小写不敏感绑定到 typeID/Name/typeName),故用 [FromForm]——
/// [FromForm] 会因 Content-Type 不符返回 415。</summary>
[HttpPost("AddDictionaryType")]
public async Task AddDictionaryType([FromBody] Common_Dictionary model)
public async Task AddDictionaryType([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数错误!");
model.Schserid = SchSerID();
await _dict.AddDicAsync(model);
}
/// <summary>编辑公共类别(旧调 GetSysDict.EditDic)。</summary>
/// <summary>编辑公共类别(旧调 GetSysDict.EditDic)。同 AddDictionaryType:前端表单编码提交,[FromForm] 绑定。</summary>
[HttpPost("EditDictionaryType")]
public async Task EditDictionaryType([FromBody] Common_Dictionary model)
public async Task EditDictionaryType([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数有误!");
model.Schserid = SchSerID();
@@ -169,7 +171,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// <summary>添加文印(旧 Create;短信/待办推送已降级为纯落库)。</summary>
[HttpPost("Create")]
public async Task<int> Create([FromBody] WYDocPrintSaveDto model)
public async Task<int> Create([FromForm] WYDocPrintSaveDto model)
{
if (model == null) throw new DException("参数错误!");
model.UserID = UserId();
@@ -179,7 +181,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// <summary>修改文印(旧 Edit)。</summary>
[HttpPost("Edit")]
public async Task<int> Edit([FromBody] WYDocPrintSaveDto model)
public async Task<int> Edit([FromForm] WYDocPrintSaveDto model)
{
if (model == null) throw new DException("参数错误!");
model.UserID = UserId();
@@ -189,7 +191,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// <summary>撤销(旧 Revoke)。</summary>
[HttpPost("Revoke")]
public async Task<string> Revoke([FromBody] FlowTranctDto model)
public async Task<string> Revoke([FromForm] FlowTranctDto model)
{
if (model == null) throw new DException("参数错误!");
model.actionuserid = UserContextHolder.Current?.Id;
@@ -259,7 +261,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// <summary>审核确认(旧 shenheok)。</summary>
[HttpPost("shenheok")]
public async Task<string> ShenheOk([FromBody] FlowTranctDto model)
public async Task<string> ShenheOk([FromForm] FlowTranctDto model)
{
if (model == null) throw new DException("参数错误!");
model.actionuserid = UserContextHolder.Current?.Id ?? 0;
@@ -268,7 +270,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// <summary>领取确认(旧 AffirmApplyforOk)。</summary>
[HttpPost("AffirmApplyforOk")]
public async Task<string> AffirmApplyforOk([FromBody] FlowTranctDto model)
public async Task<string> AffirmApplyforOk([FromForm] FlowTranctDto model)
{
if (model == null) throw new DException("参数错误!");
model.actionuserid = UserContextHolder.Current?.Id ?? 0;