using System; using System.Collections.Generic; using System.Data; using System.Collections; using System.Web; using System.Web.Services; using BP.DA; namespace ccbpm { /// /// OverrideInterface 的摘要说明 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class PortalInterface : System.Web.Services.WebService { #region 发送消息接口. 需要与web.config中 ShortMessageWriteTo 配置才能起作用。 /// /// 发送短信接口(二次开发需要重写这个接口) /// /// 消息主键,是对应的Sys_SMS的MyPK。 /// 发送人(内部帐号,可以为空.) /// 发送给(内部帐号,可以为空.) /// 手机号码 /// 短消息 /// 标题 /// 链接 /// 是否发送成功 [WebMethod(EnableSession = true)] public bool SendToWebServices(string msgPK, string sender, string sendToEmpNo, string tel, string msgInfo, string title,string openUrl) { return true; } [WebMethod(EnableSession = true)] public bool SendWhen(string flowNo, int nodeID, Int64 workid, string userNo, string userName) { //BP.DA.Log.DefaultLogWriteLineInfo("接口调用成功: SendToWebServices " + tel + " msgInfo:" + msgInfo); // if (BP.Sys.SystemConfig.IsEnableCCIM && sendToEmpNo != null) // BP.WF.Glo.SendMessageToCCIM(sender, sendToEmpNo, msgInfo, BP.DA.DataType.CurrentDataTime); return true; } [WebMethod(EnableSession = true)] public bool FlowOverBefore(string flowNo, int nodeID, Int64 workid, string userNo, string userName) { //BP.DA.Log.DefaultLogWriteLineInfo("接口调用成功: SendToWebServices " + tel + " msgInfo:" + msgInfo); // if (BP.Sys.SystemConfig.IsEnableCCIM && sendToEmpNo != null) // BP.WF.Glo.SendMessageToCCIM(sender, sendToEmpNo, msgInfo, BP.DA.DataType.CurrentDataTime); return true; } /// /// 发送丁丁的接口 /// /// 消息主键,是对应的Sys_SMS的MyPK。 /// 发送人(内部帐号,可以为空.) /// 发送给(内部帐号,可以为空.) /// 电话 /// 消息内容 /// 是否发送成功 [WebMethod(EnableSession = true)] public bool SendToDingDing(string mypk, string sender, string sendToEmpNo, string tel, string msgInfo) { // BP.DA.Log.DefaultLogWriteLineInfo("接口调用成功: SendToWebServices MyPK" + mypk +" UserNo:"+userNo+ " Tel:" + tel + " msgInfo:" + msgInfo); //if (BP.Sys.SystemConfig.IsEnableCCIM && sendToEmpNo != null) // BP.WF.Glo.SendMessageToCCIM(sender, sendToEmpNo, msgInfo, BP.DA.DataType.CurrentDataTime); return true; } /// /// 发送微信的接口 /// /// 消息主键,是对应的Sys_SMS的MyPK。 /// 发送人(内部帐号,可以为空.) /// 发送给(内部帐号,可以为空.) /// /// /// 是否发送成功 [WebMethod] public bool SendToWeiXin(string mypk, string sender, string sendToEmpNo, string tel, string msgInfo) { // BP.DA.Log.DefaultLogWriteLineInfo("接口调用成功: SendToWeiXin MyPK" + mypk + " UserNo:" + userNo + " Tel:" + tel + " msgInfo:" + msgInfo); if (BP.Sys.SystemConfig.IsEnableCCIM && sendToEmpNo != null) BP.WF.Glo.SendMessageToCCIM(sender, sendToEmpNo, msgInfo, BP.DA.DataType.CurrentDataTime); return true; } /// /// 发送邮件接口 /// /// 消息主键,是对应的Sys_SMS的MyPK。 /// 发送人(内部帐号,可以为空.) /// 发送给(内部帐号,可以为空.) /// 邮件地址 /// 标题 /// 内容 /// 接收人编号 /// 是否发送成功 [WebMethod] public bool SendToEmail(string mypk, string sender, string sendToEmpNo, string email, string title, string maildoc) { // BP.DA.Log.DefaultLogWriteLineInfo("接口调用成功: SendToEmail MyPK" + mypk + " email:" + email + " title:" + title + " maildoc:" + maildoc); if (BP.Sys.SystemConfig.IsEnableCCIM && sendToEmpNo != null) BP.WF.Glo.SendMessageToCCIM(sender, sendToEmpNo, title + " \t\n " + maildoc, BP.DA.DataType.CurrentDataTime); return true; } /// /// 发送到CCIM即时通讯 /// /// 主键 /// 邮件 /// 标题 /// 内容 /// 返回发送结果 [WebMethod] public bool SendToCCIM(string mypk, string userNo, string msg, string sourceUserNo, string tag = null) { // BP.DA.Log.DefaultLogWriteLineInfo("接口调用成功: SendToEmail MyPK" + mypk + " userNo:" + userNo + " msg:" + msg); if (BP.Sys.SystemConfig.IsEnableCCIM && userNo != null) BP.WF.Glo.SendMessageToCCIM(BP.Web.WebUser.No, userNo, msg, BP.DA.DataType.CurrentDataTime); //BP.CCIM.Glo.SendMsg(userNo, sourceUserNo, msg); return true; } #endregion 发送消息接口. #region 其他的接口. /// /// 打印文件在处理. /// /// [WebMethod] public void Print(string billFilePath) { } #endregion #region 组织结构. /// /// 用于单点登录的写入SID /// /// 配置在web.config中的密码,用于两个系统的握手. /// 用户ID , 对应Port_Emp的No列. /// 用户SID , 对应Port_Emp的SID列. /// [WebMethod] public bool WriteUserSID(string miyue, string userNo, string sid) { #region 简单Demo try { if (miyue != "xxweerwerew") return false; if (userNo.Contains(" ") == true) return false; if (BP.DA.DBAccess.IsView("Port_Emp", BP.Sys.SystemConfig.AppCenterDBType) == true) return false; string sql = "UPDATE Port_Emp SET SID='" + sid + "' WHERE No='" + userNo + "'"; BP.DA.DBAccess.RunSQL(sql); return true; } catch (Exception ex) { return false; } #endregion 简单Demo } /// /// 检查用户名密码是否正确 /// /// 用户名 /// 密码 /// 正确返回1,不正确返回0,其他的情况抛出异常。 [WebMethod] public int CheckUserNoPassWord(string userNo, string password) { #region 简单Demo try { string sql = "SELECT Pass FROM Port_Emp WHERE No='" + userNo + "'"; string pass = BP.DA.DBAccess.RunSQLReturnVal(sql) as string; if (pass == password) return 1; //成功返回1. return 0; //失败返回0. } catch (Exception ex) { throw new Exception("@校验出现错误:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单Demo } /// /// 获得部门信息 /// /// 返回No,Name,ParentNo至少三个列的部门信息 [WebMethod] public DataTable GetDept(string deptNo) { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT No,Name,ParentNo FROM Port_Dept WHERE No='" + deptNo + "'"); } catch (Exception ex) { throw new Exception("@获得部门出现错误:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得部门信息 /// /// 返回No,Name,ParentNo至少三个列的部门信息 [WebMethod] public DataTable GetDepts() { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT No,Name,ParentNo FROM Port_Dept ORDER BY ParentNo,No"); } catch (Exception ex) { throw new Exception("@获得部门出现错误:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得部门信息 /// /// 返回No,Name,ParentNo至少三个列的部门信息 [WebMethod] public DataTable GetDeptsByParentNo(string parentDeptNo) { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT No,Name,ParentNo FROM Port_Dept WHERE ParentNo='" + parentDeptNo + "' ORDER BY ParentNo,No"); } catch (Exception ex) { throw new Exception("@获得部门出现错误:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得岗位信息 /// /// 返回No,Name,FK_StationType 至少三个列的岗位信息 [WebMethod] public DataTable GetStations() { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT No,Name,FK_StationType FROM Port_Station ORDER BY FK_StationType,No"); } catch (Exception ex) { throw new Exception("@获得岗位出现错误:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得岗位信息 /// /// 返回No,Name,FK_StationType至少三个列的岗位信息 [WebMethod] public DataTable GetStation(string stationNo) { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT No,Name,FK_StationType FROM Port_Station WHERE No='" + stationNo + "'"); } catch (Exception ex) { throw new Exception("@获得岗位出现错误:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得人员信息(一人多部门) /// /// 返回No,Name,FK_Dept至少三个列的部门、人员、岗位信息 [WebMethod] public DataTable GetEmps() { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT a.No,a.Name,a.FK_Dept,b.Name as FK_DeptText FROM Port_Emp a, Port_Dept b WHERE (a.FK_Dept=b.No) "); } catch (Exception ex) { throw new Exception("@获得人员信息:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得人员信息(一人多部门) /// /// 返回No,Name,FK_Dept至少三个列的部门、人员、岗位信息 [WebMethod] public DataTable GetEmpsByDeptNo(string deptNo) { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT a.No,a.Name,a.FK_Dept,b.Name as FK_DeptText FROM Port_Emp a, Port_Dept b WHERE a.FK_Dept=b.No AND A.FK_Dept='" + deptNo + "' "); } catch (Exception ex) { throw new Exception("@获得人员信息:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得人员信息(一人多部门) /// /// 返回No,Name,FK_Dept至少三个列的部门、人员、岗位信息 [WebMethod] public DataTable GetEmp(string no) { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT a.No,a.Name,a.FK_Dept,b.Name as FK_DeptText FROM Port_Emp a, Port_Dept b WHERE (a.No='" + no + "') AND (a.FK_Dept=b.No) "); } catch (Exception ex) { throw new Exception("@获得人员信息:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得部门人员信息(一人多部门) /// /// 返回FK_Dept,FK_Emp至少三个列的部门、人员、岗位信息 [WebMethod] public DataTable GetDeptEmp() { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT FK_Dept,FK_Emp FROM Port_DeptEmp"); } catch (Exception ex) { throw new Exception("@获得部门人员信息:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得人员他的部门实体信息集合. /// /// 返回No,Name,ParentNo部门信息 [WebMethod] public DataTable GetEmpHisDepts(string empNo) { #region 简单 Demo try { string sql = "SELECT No,Name,ParentNo FROM Port_Dept WHERE No IN(SELECT FK_Dept FROM Port_DeptEmp WHERE FK_Emp='" + empNo + "')"; return BP.DA.DBAccess.RunSQLReturnTable(sql); } catch (Exception ex) { throw new Exception("@获得人员他的部门实体信息:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得人员他的岗位实体信息集合. /// /// 返回No,Name,FK_StationType岗位信息 [WebMethod] public DataTable GetEmpHisStations(string empNo) { #region 简单 Demo try { string sql = "SELECT No,Name,FK_StationType FROM Port_Station WHERE No IN(SELECT FK_Station FROM Port_DeptEmpStation WHERE FK_Emp='" + empNo + "')"; return BP.DA.DBAccess.RunSQLReturnTable(sql); } catch (Exception ex) { throw new Exception("@获得人员他的岗位实体信息:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 获得部门人员岗位对应信息 /// /// 返回FK_Dept,FK_Emp,FK_Station至少三个列的部门、人员、岗位信息 [WebMethod] public DataTable GetDeptEmpStations() { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT FK_Dept,FK_Emp,FK_Station FROM Port_DeptEmpStation"); } catch (Exception ex) { throw new Exception("@获得部门人员岗位对应信息:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } #endregion 组织结构. #region 特殊的查询 /// /// 通过一组岗位编号获得他的人员集合 /// /// 用逗号隔开的岗位集合比如: '01','02' /// 返回No,Name,FK_Dept三个列. [WebMethod] public DataTable GenerEmpsByStations(string stationNos) { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT a.No,a.Name,a.FK_Dept FROM Port_Emp A, Port_DeptEmpStation B WHERE A.No=B.FK_Emp AND B.FK_Station IN (" + stationNos + ")"); } catch (Exception ex) { throw new Exception("@根据岗位集合,获得人员集合错误:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 通过一组部门编号获得他的人员集合 /// /// 用逗号隔开的部门集合比如: '01','02' /// 返回No,Name,FK_Dept三个列. [WebMethod] public DataTable GenerEmpsByDepts(string deptNos) { #region 简单 Demo try { return BP.DA.DBAccess.RunSQLReturnTable("SELECT a.No,a.Name,a.FK_Dept FROM Port_Emp A, Port_DeptEmp B WHERE A.No=B.No AND B.FK_Dept IN (" + deptNos + ")"); } catch (Exception ex) { throw new Exception("@根据部门集合,获得人员集合错误:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } /// /// 指定部门与一个岗位集合,获得他们的人员。 /// /// 部门编号 /// 岗位编号s /// No,Name,FK_Dept三个列的人员信息 [WebMethod] public DataTable GenerEmpsBySpecDeptAndStats(string deptNo, string stations) { #region 简单 Demo try { string sql = "SELECT a.No,a.Name,a.FK_Dept FROM Port_Emp A, Port_DeptEmpStation B WHERE A.No=B.FK_Emp AND B.FK_Station IN (" + stations + ") AND A.FK_Dept='" + deptNo + "'"; return BP.DA.DBAccess.RunSQLReturnTable(sql); } catch (Exception ex) { throw new Exception("@ 指定部门与一个岗位集合,获得他们的人员:" + ex.Message); //连接错误,直接抛出异常. } #endregion 简单 Demo } #endregion #region 事件接口. /// /// 发送成功要执行的事件 /// /// 流程编号 /// 节点ID /// 工作ID /// 用户编号 /// 用户名称 /// 执行结果 [WebMethod] public string SendSuccess(string flowNo, int nodeID, Int64 workid, string userNo, string userName) { return null; } #endregion 事件接口. } }