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 { /// /// 流程管理业务处理类 /// public class RouteDefineService : BaseService, IRouteDefineService { private readonly IRouteDefineRepository repository; public RouteDefineService(IRouteDefineRepository _repository) : base(_repository) { repository = _repository; } /// /// 获取流程信息 /// /// public List getRoute(string factoryId) { return repository.getRoute(factoryId); } /// /// 根据制程数据信息 /// /// /// public ArrayList getProcessTree(string factoryId) { List dtProcess = repository.getProcessInfo(factoryId); List 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; } /// /// 根据流程明细信息 /// /// public List getRouteById(string routeId) { return repository.getRouteById(routeId); } /// /// 根据流程明细信息 /// /// public ArrayList getRouteTree(string factoryId, string routeId) { List dtRoute = repository.getRouteById(routeId); List 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; } /// /// 保存流程明细 /// /// /// public bool saveRouteDetail(ArrayList routeList, int empId) { bool result = false; if (routeList.Count > 0) { Hashtable routeHt = (Hashtable)routeList[0]; List 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; } ///// ///// 保存流程明细 ///// ///// ///// //public bool saveRouteDetail(ArrayList routeList,int empId) //{ // bool result = false; // if (routeList.Count > 0) // { // Hashtable routeHt = (Hashtable)routeList[0]; // List 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; //} ///// ///// 把 TreeView 转换成适合 Insert 的 Hashtable 列表 ///// ///// 根节点 ///// Hashtable 列表 //private List ConvertRouteDetail(Hashtable routeHt, int empId) //{ // List 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(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; //} /// /// 把 TreeView 转换成适合 Insert 的 Hashtable 列表 /// /// 根节点 /// Hashtable 列表 private List ConvertRouteDetail(Hashtable routeHt, int empId) { List 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(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; } /// /// 生成一笔详细流程数据 /// /// 流程编号 /// 制程编号 /// 下一站的制程编号 /// 是否维修流转节点(1,0) /// 序号 /// 步骤编号 /// 是否必须流程 /// 详细流程数据 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; } /// /// 保存流程信息 /// /// /// public int saveRouteDefine(SysRoute htParams) { return repository.saveRouteDefine(htParams); } /// /// 更新流程信息 /// /// /// public int updateRouteDefine(SysRoute htParams) { return repository.updateRouteDefine(htParams); } /// /// 删除流程数据 /// /// /// public int deleteRouteDefine(string routeId) { return this.repository.deleteRouteDefine(routeId); } /// /// 启用 /// /// /// public int EnableData(String ids) { ids = ids.Substring(0, ids.Length - 1); return this.repository.EnableData(ids); } /// /// 禁用 /// /// /// public int DisableData(String ids) { ids = ids.Substring(0, ids.Length - 1); return this.repository.DisableData(ids); } } }