691 lines
27 KiB
C#
691 lines
27 KiB
C#
using Furion.DependencyInjection;
|
||
using Furion.DynamicApiController;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using Newtonsoft.Json.Linq;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using RoadFlow.Utility;
|
||
using Furion;
|
||
using RoadFlow.Data;
|
||
using Microsoft.AspNetCore.Authorization;
|
||
using Ewide.RoadFlowLite.Utility;
|
||
using Furion.FriendlyException;
|
||
using Ewide.Core;
|
||
|
||
namespace Ewide.RoadFlowLite.Serivce.Dictionary
|
||
{
|
||
/// <summary>
|
||
/// 工作流字典服务
|
||
/// </summary>
|
||
[Route("/api/roadflow/Dictionary/")]
|
||
[ApiDescriptionSettings("RoadFlow")]
|
||
public class DictionaryService : IDictionaryService, IDynamicApiController, ITransient
|
||
{
|
||
|
||
private readonly IDictionary _repo;
|
||
private readonly ILog _log;
|
||
private readonly IUserManager _userManager;
|
||
public DictionaryService(IDictionary repo ,ILog log, IUserManager userManager)
|
||
{
|
||
_repo = repo;
|
||
_log = log;
|
||
_userManager = userManager;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取数据字典树
|
||
/// </summary>
|
||
/// <param name="args"></param>
|
||
/// <returns></returns>
|
||
[HttpPost("GetTreeJson")]
|
||
[AllowAnonymous]
|
||
public async Task<dynamic> GetTreeJson([FromBody] JObject args)
|
||
{
|
||
string rootId = (string)args["rootid"];
|
||
bool showRoot = ((string)args["showroot"]).IsNullOrWhiteSpace() || "1".Equals((string)args["showroot"]);//是否显示根节点
|
||
bool isEle = "1".Equals((string)args["isele"]);//是否是ELE,ELE只返回根一级,返回两级
|
||
rootId = rootId.IsGuid(out Guid rid) ? rootId : _repo.GetIdByCode(rootId);
|
||
var dict = string.IsNullOrWhiteSpace(rootId) ? _repo.GetRoot() : _repo.GetOneById(rootId);
|
||
if (dict == null)
|
||
{
|
||
return "";
|
||
}
|
||
string language = RoadFlow.Utility.Tools.GetCurrentLanguage(App.HttpContext);
|
||
|
||
JArray jArray = new JArray();
|
||
JObject rootJson = new JObject
|
||
{
|
||
{ "id", dict.Id },
|
||
{ "parentId", dict.ParentId },
|
||
{ "title", _repo.GetLanguageTitle(dict, language) },
|
||
{ "open", true },
|
||
{ "current", false },
|
||
{ "ico", "icon-wallet" },
|
||
{ "code", dict.Code },
|
||
{ "value", dict.Value },
|
||
{ "note", dict.Note },
|
||
{ "other", dict.Other },
|
||
{ "status", dict.Status },
|
||
{ "slots", new JObject() { { "icon", "custom" } } }
|
||
};
|
||
JArray childsArray = new JArray();
|
||
var dictChilds = _repo.GetChilds(dict.Id);
|
||
if (!isEle)
|
||
{
|
||
foreach (var dictChild in dictChilds)
|
||
{
|
||
JObject dictJson = new JObject
|
||
{
|
||
{ "id", dictChild.Id },
|
||
{ "parentId", dictChild.ParentId },
|
||
{ "title", _repo.GetLanguageTitle(dictChild, language) },
|
||
{ "current", false },
|
||
{ "ico", "" },
|
||
{ "code", dictChild.Code },
|
||
{ "value", dictChild.Value },
|
||
{ "note", dictChild.Note },
|
||
{ "other", dictChild.Other },
|
||
{ "status", dictChild.Status },
|
||
{ "slots", new JObject() { { "icon", "custom" } } }
|
||
};
|
||
if (_repo.HasChilds(dictChild.Id))
|
||
{
|
||
dictJson.Add("open", false);
|
||
dictJson.Add("childs", new JArray());
|
||
dictJson.Add("isLeaf", false);
|
||
}
|
||
else
|
||
{
|
||
dictJson.Add("isLeaf", true);
|
||
}
|
||
childsArray.Add(dictJson);
|
||
}
|
||
}
|
||
rootJson.Add("childs", childsArray);
|
||
rootJson.Add("isLeaf", dictChilds.Count == 0);
|
||
jArray.Add(rootJson);
|
||
|
||
return showRoot ? jArray : childsArray;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpGet("GetTreeChildsJson")]
|
||
|
||
public dynamic GetTreeChildsJson(string parentid)
|
||
{
|
||
string parentGuid = parentid;//(string)args["parentid"];
|
||
var dictChilds = _repo.GetChilds(parentGuid);
|
||
JArray jArray = new JArray();
|
||
foreach (var dictChild in dictChilds)
|
||
{
|
||
JObject dictJson = new JObject() {
|
||
{ "id", dictChild.Id },
|
||
{ "parentId", dictChild.ParentId },
|
||
{ "title", dictChild.Title },
|
||
{ "current", false },
|
||
{ "ico", "" },
|
||
{ "code", dictChild.Code },
|
||
{ "value", dictChild.Value },
|
||
{ "note", dictChild.Note },
|
||
{ "other", dictChild.Other },
|
||
{ "status", dictChild.Status },
|
||
{ "slots", new JObject() { { "icon", "custom" } } }
|
||
};
|
||
if (_repo.HasChilds(dictChild.Id))
|
||
{
|
||
dictJson.Add("open", false);
|
||
dictJson.Add("childs", new JArray());
|
||
dictJson.Add("isLeaf", false);
|
||
}
|
||
else
|
||
{
|
||
dictJson.Add("isLeaf", true);
|
||
}
|
||
jArray.Add(dictJson);
|
||
}
|
||
return jArray;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 根据值得到标题
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("GetText")]
|
||
//[ApiValidate]
|
||
public dynamic GetText([FromBody] JObject args)
|
||
{
|
||
string value = (string)args["value"];
|
||
JArray jArray = new JArray();
|
||
|
||
foreach (string val in value.Split(','))
|
||
{
|
||
if (!val.IsGuid(out Guid vId))
|
||
{
|
||
continue;
|
||
}
|
||
|
||
jArray.Add(new JObject() { { "value", val }, { "title", _repo.GetTitle(val, "") } });
|
||
}
|
||
|
||
return jArray;
|
||
|
||
}
|
||
|
||
|
||
[HttpGet("hello")]
|
||
[AllowAnonymous]
|
||
public dynamic Hello()
|
||
{
|
||
string hello = "hello".DESEncrypt();
|
||
return hello+":"+hello.DESDecrypt();
|
||
}
|
||
|
||
/// <summary>
|
||
/// antd版获取字典树json
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpGet("GetTreeJsonEle")]
|
||
public dynamic GetTreeJsonEle(string rootId, string showroot)
|
||
{
|
||
|
||
bool showRoot = showroot.IsNullOrEmpty() || showroot == "1";//是否显示根节点
|
||
string rootGuid = rootId.IsGuid() ? rootId : _repo.GetIdByCode(rootId.Trim());
|
||
var dict = rootGuid.IsNullOrEmpty() ? _repo.GetRoot() : _repo.GetOneById(rootGuid);
|
||
if (dict == null)
|
||
{
|
||
return new JArray();
|
||
// return RoadFlowCommon.Tools.GetReturnJsonString(jArray: new JArray());
|
||
}
|
||
string language = RoadFlow.Utility.Tools.GetCurrentLanguage(Furion.App.HttpContext);
|
||
|
||
JArray jArray = new JArray();
|
||
JObject rootJson = new JObject
|
||
{
|
||
{ "id", dict.Id },
|
||
{ "parentId", dict.ParentId },
|
||
{ "title", _repo.GetLanguageTitle(dict, language) },
|
||
{ "code", dict.Code },
|
||
{ "value", dict.Value },
|
||
{ "note", dict.Note },
|
||
{ "other", dict.Other },
|
||
{ "status", dict.Status },
|
||
};
|
||
JArray childsArray = new JArray();
|
||
var dictChilds = _repo.GetChilds(dict.Id);
|
||
if (!showRoot)
|
||
{
|
||
foreach (var dictChild in dictChilds)
|
||
{
|
||
JObject dictJson = new JObject
|
||
{
|
||
{ "id", dictChild.Id },
|
||
{ "parentId", dictChild.ParentId },
|
||
{ "title", _repo.GetLanguageTitle(dictChild, language) },
|
||
{ "code", dictChild.Code },
|
||
{ "value", dictChild.Value },
|
||
{ "note", dictChild.Note },
|
||
{ "other", dictChild.Other },
|
||
{ "status", dictChild.Status },
|
||
};
|
||
dictJson.Add("leaf", !_repo.HasChilds(dictChild.Id));
|
||
childsArray.Add(dictJson);
|
||
}
|
||
}
|
||
//rootJson.Add("childs", childsArray);
|
||
rootJson.Add("leaf", dictChilds.Count == 0);
|
||
jArray.Add(rootJson);
|
||
return showRoot ? jArray : childsArray;
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jArray: showRoot ? jArray : childsArray);
|
||
}
|
||
|
||
/// <summary>
|
||
/// antd版获取字典下级json
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpGet("GetTreeChildsJsonEle")]
|
||
|
||
public dynamic GetTreeChildsJsonEle(string parentId)
|
||
{
|
||
|
||
|
||
if (!parentId.IsGuid(out Guid parentGuid))
|
||
{
|
||
return new JArray();
|
||
// return RoadFlowCommon.Tools.GetReturnJsonString(jArray: new JArray());
|
||
}
|
||
string language = RoadFlow.Utility.Tools.GetCurrentLanguage(Furion.App.HttpContext);
|
||
var dictChilds = _repo.GetChilds(parentId);
|
||
JArray jArray = new JArray();
|
||
foreach (var dictChild in dictChilds)
|
||
{
|
||
JObject dictJson = new JObject() {
|
||
{ "id", dictChild.Id },
|
||
{ "parentId", dictChild.ParentId },
|
||
{ "title", _repo.GetLanguageTitle(dictChild, language) },
|
||
{ "code", dictChild.Code },
|
||
{ "value", dictChild.Value },
|
||
{ "note", dictChild.Note },
|
||
{ "other", dictChild.Other },
|
||
{ "status", dictChild.Status },
|
||
};
|
||
dictJson.Add("leaf", !_repo.HasChilds(dictChild.Id));
|
||
jArray.Add(dictJson);
|
||
}
|
||
return jArray;
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jArray: jArray);
|
||
}
|
||
|
||
/// <summary>
|
||
/// antd版得到select选项
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("GetSelectOptions")]
|
||
public dynamic GetSelectOptions([FromBody] JObject args)
|
||
{
|
||
string param = args.GetJsonValue("params");
|
||
if (param.IsNullOrWhiteSpace())
|
||
{
|
||
return new JObject();
|
||
//return RoadFlowCommon.Tools.GetReturnJsonString(jObject: new JObject());
|
||
}
|
||
JArray paramArray = param.ToJArray();
|
||
if (paramArray.IsEmptyJArray())
|
||
{
|
||
return new JObject();
|
||
//return RoadFlowCommon.Tools.GetReturnJsonString(jObject: new JObject());
|
||
}
|
||
|
||
JObject returnObject = new JObject();
|
||
int i = 0;
|
||
foreach (JObject jObject in paramArray)
|
||
{
|
||
string id = jObject.Value<string>("id");//字典id或code
|
||
string key = jObject.Value<string>("key");//返回json key
|
||
string type = jObject.Value<string>("type");//类型 select(下拉选择), cascader(级联选择器)
|
||
string valueField = jObject.Value<string>("valuefield");//值字段
|
||
bool childs = jObject.Value<string>("childs").ToInt(0) == 1;//是否加载所有下级
|
||
bool isRoot = jObject.Value<string>("root").ToInt(0) == 1;//是否包含根节点
|
||
key = key.IsNullOrWhiteSpace() ? "options" + i++.ToString() : key;
|
||
if (returnObject.ContainsKey(key))
|
||
{
|
||
continue;
|
||
}
|
||
if (id.IsNullOrWhiteSpace())
|
||
{
|
||
continue;
|
||
}
|
||
if (type.IsNullOrWhiteSpace())
|
||
{
|
||
type = "select";
|
||
}
|
||
if (valueField.IsNullOrWhiteSpace())
|
||
{
|
||
valueField = "id";
|
||
}
|
||
if (!id.IsGuid(out Guid guid))
|
||
{
|
||
guid = _repo.GetIdByCode(id).ToGuid();
|
||
}
|
||
string lang = RoadFlow.Utility.Tools.GetCurrentLanguage(Furion.App.HttpContext);
|
||
if (type.EqualsIgnoreCase("select"))
|
||
{
|
||
JArray jArray = _repo.GetArrayOptionsByID(guid.ToString(), _repo.GetValueField(valueField), string.Empty, childs);
|
||
returnObject.Add(key, jArray);
|
||
}
|
||
else if (type.EqualsIgnoreCase("cascader"))
|
||
{
|
||
JArray jArray = _repo.GetAllChildsArray(guid.ToString(), _repo.GetValueField(valueField), isRoot, lang);
|
||
returnObject.Add(key, jArray);
|
||
}
|
||
}
|
||
return returnObject;
|
||
;//RoadFlowCommon.Tools.GetReturnJsonString(jObject: returnObject);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 得到select下拉选项
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("GetOptions")]
|
||
public dynamic GetOptions([FromBody] JObject args)
|
||
{
|
||
string dictId = args.GetJsonValue("dictid");
|
||
string childs = args.GetJsonValue("childs");
|
||
string valueField = args.GetJsonValue("valuefield");
|
||
string value = args.GetJsonValue("value");
|
||
string parentValue = args.GetJsonValue("parentvalue");//上一个选择的值,联动的时候获取
|
||
string selectParent = args.GetJsonValue("selectparent");//是否可以选择上级
|
||
JArray optionsArray = new JArray();
|
||
foreach (string pValue in (parentValue.IsNullOrWhiteSpace() ? dictId : parentValue).Split(','))
|
||
{
|
||
if (!pValue.IsGuid(out Guid dictGuid))
|
||
{
|
||
continue;
|
||
}
|
||
JArray jArray = _repo.GetArrayOptionsByID(dictGuid.ToString(), _repo.GetValueField(valueField), value, "1".Equals(childs), "1".Equals(selectParent));
|
||
foreach (JObject jObject in jArray)
|
||
{
|
||
optionsArray.Add(jObject);
|
||
}
|
||
}
|
||
return optionsArray;
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jArray: optionsArray);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 得到combox下拉选项
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("GetComboxOptions")]
|
||
|
||
public dynamic GetComboxOptions([FromBody] JObject args)
|
||
{
|
||
|
||
string dictId = args.GetJsonValue("dictid");
|
||
string childs = args.GetJsonValue("childs");
|
||
string valueField = args.GetJsonValue("valuefield");
|
||
string value = args.GetJsonValue("value");
|
||
string parentValue = args.GetJsonValue("parentvalue");//上一个选择的值,联动的时候获取
|
||
string selectParent = args.GetJsonValue("selectparent");//是否可以选择上级
|
||
JArray optionsArray = new JArray();
|
||
foreach (string pValue in (parentValue.IsNullOrWhiteSpace() ? dictId : parentValue).Split(','))
|
||
{
|
||
if (!pValue.IsGuid(out Guid dictGuid))
|
||
{
|
||
continue;
|
||
}
|
||
JArray jArray = _repo.GetArrayComboxsByID(dictGuid.ToString(), _repo.GetValueField(valueField), value, "1".Equals(childs), "1".Equals(selectParent));
|
||
foreach (JObject jObject in jArray)
|
||
{
|
||
optionsArray.Add(jObject);
|
||
}
|
||
}
|
||
return optionsArray;// RoadFlowCommon.Tools.GetReturnJsonString(jArray: optionsArray);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 得到单选按钮组选项
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("GetRadioOrCheckboxItems")]
|
||
public dynamic GetRadioOrCheckboxItems([FromBody] JObject args)
|
||
{
|
||
|
||
string dictId = args.GetJsonValue("dictid");
|
||
string valueField = args.GetJsonValue("valuefield");
|
||
JArray jArray = _repo.GetRadioOrCheckboxItems(dictId, _repo.GetValueField(valueField));
|
||
return jArray;
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jArray: jArray);
|
||
}
|
||
/*
|
||
/// <summary>
|
||
/// 根据值得到标题
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("GetText")]
|
||
|
||
public dynamic GetText([FromBody] JObject args)
|
||
{
|
||
string value = args.GetJsonValue("value");
|
||
JArray jArray = new JArray();
|
||
|
||
string lang = RoadFlow.Utility.Tools.GetCurrentLanguage(Furion.App.HttpContext);
|
||
foreach (string val in value.Split(','))
|
||
{
|
||
if (!val.IsGuid(out Guid vId))
|
||
{
|
||
continue;
|
||
}
|
||
jArray.Add(new JObject() { { "value", val }, { "title", _repo.GetTitle(vId, lang) } });
|
||
}
|
||
return jArray;
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jArray: jArray);
|
||
}
|
||
*/
|
||
/// <summary>
|
||
/// 验证Code是否重复
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("ValidCode")]
|
||
|
||
public dynamic ValidCode([FromBody] JObject args)
|
||
{
|
||
string id = args.GetJsonValue("id");
|
||
int type = args.GetJsonValue("type").ToInt(1);//0保存 1保存为下级
|
||
string code = args.GetJsonValue("value");
|
||
if (code.IsNullOrWhiteSpace())
|
||
{
|
||
throw Oops.Oh("编码不能为空");
|
||
// return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["CodeEmpty"].Value);
|
||
}
|
||
var dictModel = _repo.GetOneById(code.Trim());
|
||
if (dictModel == null)
|
||
{
|
||
return new JObject() { { "success", true }, { "msg", string.Empty } };
|
||
//return RoadFlowCommon.Tools.GetReturnJsonString(jObject: new JObject() { { "success", true }, { "msg", string.Empty } });
|
||
}
|
||
if (dictModel.Id == id && type == 0)
|
||
{
|
||
return new JObject() { { "success", true }, { "msg", string.Empty } };
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jObject: new JObject() { { "success", true }, { "msg", string.Empty } });
|
||
}
|
||
return new JObject() { { "success", false }, { "msg", "编码重复" } };
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jObject: new JObject() { { "success", false }, { "msg", localizer["CodeDuplicate"].Value } });
|
||
}
|
||
|
||
[HttpGet("Get")]
|
||
public dynamic Get(string id)
|
||
{
|
||
|
||
if (!id.IsGuid(out Guid guid))
|
||
{
|
||
return new JObject();
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jObject: new JObject());
|
||
}
|
||
var dictModel = _repo.GetOneById(id);
|
||
if (null == dictModel)
|
||
{
|
||
return new JObject();
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jObject: new JObject());
|
||
}
|
||
return JObject.FromObject(dictModel);
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jObject: JObject.FromObject(dictModel));
|
||
}
|
||
|
||
/// <summary>
|
||
/// 得到排序的项
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpGet("GetSortItems")]
|
||
public dynamic GetSortItems(string id)
|
||
{
|
||
|
||
if (!id.IsGuid(out Guid dictId))
|
||
{
|
||
|
||
throw Oops.Oh("ID错误");
|
||
//return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["IdError"].Value);
|
||
}
|
||
|
||
var dictChilds = _repo.GetChilds(id);
|
||
string lang = RoadFlow.Utility.Tools.GetCurrentLanguage(Furion.App.HttpContext);
|
||
JArray jArray = new JArray();
|
||
foreach (var dictChild in dictChilds)
|
||
{
|
||
JObject jObject = new JObject()
|
||
{
|
||
{ "id", dictChild.Id },
|
||
{ "title", _repo.GetLanguageTitle(dictChild, lang) }
|
||
};
|
||
jArray.Add(jObject);
|
||
}
|
||
return jArray;
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(jArray: jArray);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 保存
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("Save")]
|
||
|
||
public string Save(RoadFlow.Model.rf_dictionary dictModel)
|
||
{
|
||
|
||
int type = Furion.App.HttpContext.Request.Querys("type").ToInt();
|
||
string id = Furion.App.HttpContext.Request.Querys("id");
|
||
//保存为下级
|
||
if (type == 1)
|
||
{
|
||
dictModel.ParentId = dictModel.Id;
|
||
dictModel.Id = GuidExtensions.NewGuid().ToString();
|
||
dictModel.Sort = _repo.GetMaxSort(dictModel.ParentId);
|
||
}
|
||
//检查唯一代码
|
||
if (!_repo.CheckCode(dictModel.Id, dictModel.Code))
|
||
{
|
||
throw Oops.Oh("编码重复");
|
||
// return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["CodeDuplicate"].Value);
|
||
}
|
||
if (id.IsGuid(out Guid dictId) && type == 0)
|
||
{
|
||
var oldModel = _repo.GetOneById(id);
|
||
_repo.Update(dictModel);
|
||
_log.Add("修改了数据字典-" + dictModel.Title, type: LogType.系统管理, oldContents: oldModel.ToString(), newContents: dictModel.ToString());
|
||
}
|
||
else
|
||
{
|
||
_repo.Add(dictModel);
|
||
_log.Add("添加了数据字典-" + dictModel.Title,_userManager.UserId ,dictModel.ToString(),LogType.系统管理);
|
||
}
|
||
return "保存成功";
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(true, localizer["SaveSuccess"].Value);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 保存排序
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("SaveSort")]
|
||
public string SaveSort([FromBody] JObject args)
|
||
{
|
||
|
||
string[] ids = args.GetJsonValue("ids").Split(',');
|
||
List<RoadFlow.Model.rf_dictionary> dictionaries = new List<RoadFlow.Model.rf_dictionary>();
|
||
for (int i = 0; i < ids.Length; i++)
|
||
{
|
||
if (!ids[i].IsGuid(out Guid dictId))
|
||
{
|
||
continue;
|
||
}
|
||
var dictModel = _repo.GetOneById(ids[i]);
|
||
if (null == dictModel)
|
||
{
|
||
continue;
|
||
}
|
||
dictModel.Sort = (i + 1) * 5;
|
||
dictionaries.Add(dictModel);
|
||
}
|
||
_repo.Update(dictionaries);
|
||
return "保存成功";
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(true, localizer["SaveSuccess"].Value);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 删除
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("Delete")]
|
||
|
||
public string Delete([FromBody] JObject args)
|
||
{
|
||
string id = args.GetJsonValue("id");
|
||
if (!id.IsGuid(out Guid dictId))
|
||
{
|
||
throw Oops.Oh("ID错误");
|
||
// return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["IdError"].Value);
|
||
}
|
||
|
||
if (id == _repo.GetRootId())
|
||
{
|
||
throw Oops.Oh("不能删除根对象");
|
||
// return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["CannotDeleteRoot"].Value);
|
||
}
|
||
var dictModel = _repo.GetOneById(id);
|
||
if (null == dictModel)
|
||
{
|
||
throw Oops.Oh("未找到字典对象");
|
||
//return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["NotFoundDict"].Value);
|
||
}
|
||
|
||
var list =_repo.GetAllChilds(id,true);
|
||
|
||
var count = _repo.DeleteBy(x=>x.Id==id);
|
||
count += _repo.DeleteBy(x => x.ParentId == id);
|
||
_log.Add("删除了数据字典-共" + count + "项",_userManager.UserId ,list.Serialize(), LogType.系统管理);
|
||
return "成功删除" + count + "条";
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(true, localizer["DeleteSuccess"].Value + dictList.Count + localizer["DeleteItems"].Value);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 导入数据字典
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("Import")]
|
||
|
||
public string Import([FromBody] JObject args)
|
||
{
|
||
var files = args.GetJsonValue("files");
|
||
if (files.IsNullOrWhiteSpace())
|
||
{
|
||
throw Oops.Oh("未选择要导入的文件");
|
||
// return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["NoSelectImportFile"].Value);
|
||
}
|
||
|
||
System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
|
||
foreach (string file in files.Split(','))
|
||
{
|
||
string filePath = RoadFlow.Utility.Config.FilePath + file.DESDecrypt();
|
||
if (!System.IO.File.Exists(filePath))
|
||
{
|
||
continue;
|
||
}
|
||
var stream = System.IO.File.OpenRead(filePath);
|
||
int count = (int)stream.Length;
|
||
byte[] b = new byte[count];
|
||
stream.Read(b, 0, count);
|
||
string json = System.Text.Encoding.UTF8.GetString(b);
|
||
string msg = _repo.Import(json, null);//localizer);
|
||
stream.Close();
|
||
stream.DisposeAsync();
|
||
try
|
||
{
|
||
System.IO.File.Delete(filePath);
|
||
}
|
||
catch (System.IO.IOException err)
|
||
{
|
||
_log.Add(err);
|
||
}
|
||
if (!"1".Equals(msg))
|
||
{
|
||
stringBuilder.Append(msg + ",");
|
||
}
|
||
}
|
||
string msg1 = stringBuilder.ToString().TrimEnd(',');
|
||
if (msg1.IsNullOrWhiteSpace())
|
||
return "导入成功";
|
||
else
|
||
throw Oops.Oh(msg1);
|
||
//RoadFlowCommon.Tools.GetReturnJsonString(msg1.IsNullOrWhiteSpace(), msg1.IsNullOrWhiteSpace() ? localizer["ImportSuccess"].Value : msg1);
|
||
}
|
||
}
|
||
}
|