You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

336 lines
13 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Estsh.Core.Model.Result;
using Estsh.Core.Models;
using Estsh.Core.Repository.IRepositories;
using Estsh.Core.Services.IServices;
using System.Collections;
/***************************************************************************************************
*
* 更新人sitong.dong
* 描述:流程管理模块业务处理类
* 修改时间2022.06.22
* 修改日志:系统迭代升级
*
**************************************************************************************************/
namespace Estsh.Core.Services
{
/// <summary>
/// 流程管理业务处理类
/// </summary>
public class RouteDefineService : BaseService<SysRoute>, IRouteDefineService
{
private readonly IRouteDefineRepository repository;
public RouteDefineService(IRouteDefineRepository _repository) : base(_repository)
{
repository = _repository;
}
/// <summary>
/// 获取流程信息
/// </summary>
/// <returns></returns>
public List<KeyValueResult> getRoute(string factoryId)
{
return repository.getRoute(factoryId);
}
/// <summary>
/// 根据制程数据信息
/// </summary>
/// <param name="factoryId"></param>
/// <returns></returns>
public ArrayList getProcessTree(string factoryId)
{
List<SysProcess> dtProcess = repository.getProcessInfo(factoryId);
List<SysStage> dtStage = repository.getStageInfo();
ArrayList treeNodes = new ArrayList();
Hashtable node;
//添加父节点
for (int i = 0; i < dtStage.Count; i++)
{
node = new Hashtable();
node.Add("id", "F" + Convert.ToString(dtStage[i].StageId));
node.Add("name", Convert.ToString(dtStage[i].StageName));
node.Add("parentId", "0");
node.Add("isParent", true);
node.Add("open", true);
node.Add("drop", false);
node.Add("drag", false);
treeNodes.Add(node);
}
//添加子节点
for (int i = 0; i < dtProcess.Count; i++)
{
node = new Hashtable();
node.Add("id", Convert.ToString(dtProcess[i].ProcessId));
node.Add("name", Convert.ToString(dtProcess[i].ProcessName));
node.Add("parentId", "F" + Convert.ToString(dtProcess[i].StageId));
node.Add("drop", false);
node.Add("drag", true);
node.Add("dropRoot", false);
node.Add("dropInner", false);
treeNodes.Add(node);
}
return treeNodes;
}
/// <summary>
/// 根据流程明细信息
/// </summary>
/// <returns></returns>
public List<SysRoute> getRouteById(string routeId)
{
return repository.getRouteById(routeId);
}
/// <summary>
/// 根据流程明细信息
/// </summary>
/// <returns></returns>
public ArrayList getRouteTree(string factoryId, string routeId)
{
List<SysRoute> dtRoute = repository.getRouteById(routeId);
List<SysRouteDetail> dtRouteDetail = repository.getRouteDetail(factoryId, routeId);
ArrayList treeNodes = new ArrayList();
Hashtable node;
if (dtRoute != null && dtRoute.Count > 0)
{
//添加父节点
node = new Hashtable();
node.Add("id", "F" + Convert.ToString(dtRoute[0].RouteId));
node.Add("name", Convert.ToString(dtRoute[0].RouteName));
node.Add("parentId", "0");
node.Add("isParent", true);
node.Add("checked", true);
node.Add("open", true);
node.Add("drop", true);
node.Add("drag", false);
node.Add("dropPrev", false);
node.Add("dropNext", false);
treeNodes.Add(node);
//添加子节点
for (int i = 0; i < dtRouteDetail.Count; i++)
{
node = new Hashtable();
node.Add("id", Convert.ToString(dtRouteDetail[i].NextProcessId));
node.Add("name", Convert.ToString(dtRouteDetail[i].NextProcessName));
node.Add("parentId", "F" + Convert.ToString(dtRoute[0].RouteId));
node.Add("drop", true);
node.Add("drag", true);
node.Add("dropRoot", false);
node.Add("dropInner", false);
string necessary = Convert.ToString(dtRouteDetail[i].Necessary);
if (necessary.Equals("Y"))
{
node.Add("checked", true);
}
else
{
node.Add("checked", false);
}
treeNodes.Add(node);
}
}
return treeNodes;
}
/// <summary>
/// 保存流程明细
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public bool saveRouteDetail(ArrayList routeList, int empId)
{
bool result = false;
if (routeList.Count > 0)
{
Hashtable routeHt = (Hashtable)routeList[0];
List<Hashtable> routeDetails = ConvertRouteDetail(routeHt, empId);
int route = Convert.ToInt32(Convert.ToString(routeHt["id"]).Substring(1));
result = repository.deleteRouteDetail(route);
if (routeDetails != null && routeDetails.Count > 0)
{
result = repository.saveRouteDetail(routeDetails);
}
}
return result;
}
///// <summary>
///// 保存流程明细
///// </summary>
///// <param name="htParams"></param>
///// <returns></returns>
//public bool saveRouteDetail(ArrayList routeList,int empId)
//{
// bool result = false;
// if (routeList.Count > 0)
// {
// Hashtable routeHt = (Hashtable)routeList[0];
// List<DynamicParameters> routeDetails = ConvertRouteDetail(routeHt, empId);
// int route = Convert.ToInt32(Convert.ToString(routeHt["id"]).Substring(1));
// result = repository.deleteRouteDetail(route);
// if (routeDetails != null && routeDetails.Count > 0)
// {
// result = repository.saveRouteDetail(routeDetails);
// }
// }
// return result;
//}
///// <summary>
///// 把 TreeView 转换成适合 Insert 的 Hashtable 列表
///// </summary>
///// <param name="node">根节点</param>
///// <returns>Hashtable 列表</returns>
//private List<DynamicParameters> ConvertRouteDetail(Hashtable routeHt, int empId)
//{
// List<DynamicParameters> RouteDetails = null;
// if (routeHt["children"] != null)
// {
// ArrayList childrenNodes = (ArrayList)routeHt["children"];
// int route = Convert.ToInt32(Convert.ToString(routeHt["id"]).Substring(1));
// if (childrenNodes.Count > 0) {
// RouteDetails = new List<DynamicParameters>(childrenNodes.Count - 1);
// Hashtable childrenNode = (Hashtable)childrenNodes[0];
// // 添加第一个节点
// RouteDetails.Add(CreateRouteDetail(
// route, "0", Convert.ToString(childrenNode["id"]), 0, 1, 1, Convert.ToBoolean(childrenNode["checked"]), empId));
// Hashtable PreChildrenNode = new Hashtable();
// for (int i = 1; i < childrenNodes.Count; i++)
// {
// PreChildrenNode = (Hashtable)childrenNodes[i - 1];
// childrenNode = (Hashtable)childrenNodes[i];
// // 添加流程节点
// RouteDetails.Add(CreateRouteDetail(
// route, Convert.ToString(PreChildrenNode["id"]), Convert.ToString(childrenNode["id"]), 0,
// i + 1, i + 1, Convert.ToBoolean(childrenNode["checked"]), empId));
// }
// }
// }
// return RouteDetails;
//}
/// <summary>
/// 把 TreeView 转换成适合 Insert 的 Hashtable 列表
/// </summary>
/// <param name="node">根节点</param>
/// <returns>Hashtable 列表</returns>
private List<Hashtable> ConvertRouteDetail(Hashtable routeHt, int empId)
{
List<Hashtable> RouteDetails = null;
if (routeHt["children"] != null)
{
ArrayList childrenNodes = (ArrayList)routeHt["children"];
int route = Convert.ToInt32(Convert.ToString(routeHt["id"]).Substring(1));
if (childrenNodes.Count > 0)
{
RouteDetails = new List<Hashtable>(childrenNodes.Count - 1);
Hashtable childrenNode = (Hashtable)childrenNodes[0];
// 添加第一个节点
RouteDetails.Add(CreateRouteDetail(
route, "0", Convert.ToString(childrenNode["id"]), 0, 1, 1, Convert.ToBoolean(childrenNode["checked"]), empId));
Hashtable PreChildrenNode = new Hashtable();
for (int i = 1; i < childrenNodes.Count; i++)
{
PreChildrenNode = (Hashtable)childrenNodes[i - 1];
childrenNode = (Hashtable)childrenNodes[i];
// 添加流程节点
RouteDetails.Add(CreateRouteDetail(
route, Convert.ToString(PreChildrenNode["id"]), Convert.ToString(childrenNode["id"]), 0,
i + 1, i + 1, Convert.ToBoolean(childrenNode["checked"]), empId));
}
}
}
return RouteDetails;
}
/// <summary>
/// 生成一笔详细流程数据
/// </summary>
/// <param name="routeID">流程编号</param>
/// <param name="processID">制程编号</param>
/// <param name="nextProcessID">下一站的制程编号</param>
/// <param name="result">是否维修流转节点10</param>
/// <param name="seq">序号</param>
/// <param name="step">步骤编号</param>
/// <param name="necessary">是否必须流程</param>
/// <returns>详细流程数据</returns>
private Hashtable CreateRouteDetail(
int routeID, string processID, string nextProcessID, int result, int seq, int step, bool necessary, int empId)
{
Hashtable Values = new Hashtable();
Values.Add("@route_id", routeID);
Values.Add("@process_id", Convert.ToInt32(processID));
Values.Add("@next_process_id", Convert.ToInt32(nextProcessID));
Values.Add("@result", result);
Values.Add("@seq", seq);
Values.Add("@step", step);
Values.Add("@necessary", necessary == true ? "Y" : "N");
Values.Add("@create_userid", empId);
return Values;
}
/// <summary>
/// 保存流程信息
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public int saveRouteDefine(SysRoute htParams)
{
return repository.saveRouteDefine(htParams);
}
/// <summary>
/// 更新流程信息
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public int updateRouteDefine(SysRoute htParams)
{
return repository.updateRouteDefine(htParams);
}
/// <summary>
/// 删除流程数据
/// </summary>
/// <param name="routeId"></param>
/// <returns></returns>
public int deleteRouteDefine(string routeId)
{
return this.repository.deleteRouteDefine(routeId);
}
/// <summary>
/// 启用
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public int EnableData(String ids)
{
ids = ids.Substring(0, ids.Length - 1);
return this.repository.EnableData(ids);
}
/// <summary>
/// 禁用
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public int DisableData(String ids)
{
ids = ids.Substring(0, ids.Length - 1);
return this.repository.DisableData(ids);
}
}
}