|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Data;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Web;
|
|
|
using System.Web.Mvc;
|
|
|
using DSWeb.Areas.CommMng.Models;
|
|
|
|
|
|
using Microsoft.Practices.EnterpriseLibrary.Data;
|
|
|
using DSWeb.TruckMng.Helper;
|
|
|
using HcUtility.Comm;
|
|
|
using DSWeb.TruckMng.Helper.Repository;
|
|
|
using DSWeb.Areas.Import.Models.XXH;
|
|
|
using System.Data.Common;
|
|
|
using DSWeb.EntityDA;
|
|
|
using DSWeb.Areas.OA.Models.WorkFlow;
|
|
|
using System.Data.SqlClient;
|
|
|
using WebSqlHelper;
|
|
|
using DSWeb.TruckMng.Comm.Cookie;
|
|
|
using DSWeb.Areas.Mobile.DAL;
|
|
|
using DSWeb.MvcShipping.DAL.MsSysParamSet;
|
|
|
using DSWeb.Areas.MvcShipping.Helper;
|
|
|
using DSWeb.Areas.SysMng.DAL.SysTask;
|
|
|
using DSWeb.Common.DB;
|
|
|
using DSWeb.Areas.Dispatch.DB_Wx;
|
|
|
using DSWeb.Areas.MvcShipping.Models.Message.VGM;
|
|
|
//using DSWeb.WorkFlow;
|
|
|
|
|
|
namespace DSWeb.Areas.CommMng.DAL
|
|
|
{
|
|
|
public class WorkFlowDAL
|
|
|
{
|
|
|
#region [操作工作流] 开始工作流过程
|
|
|
static public Resultmb WorkFlowStart(string WorkFlowName, string BSNO, string USERID,string BILLNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
var result = new Resultmb();
|
|
|
var _r = WorkFlowDAL.GetWorkFlowmb(WorkFlowName, USERID);
|
|
|
WorkFlowmb _workflow = new WorkFlowmb();
|
|
|
if (_r.Success) _workflow = (WorkFlowmb)_r.Data;
|
|
|
else
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = _r.Message;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
var workflowID = _workflow.GID;
|
|
|
var TYPENO = _workflow.TYPE;
|
|
|
|
|
|
var AutoFinish = _workflow.isAuto;
|
|
|
|
|
|
var islast = false;
|
|
|
if (AutoFinish == "1") islast = true;
|
|
|
|
|
|
if (AutoFinish == "0")//不是自动审核通过
|
|
|
{
|
|
|
strSql.Append(" if (select bsno from workflow_using where bsno='" + BSNO + "' and TYPENO=" + TYPENO + ") is NULL ");
|
|
|
strSql.Append(" insert into workflow_using ([BSNO],[WORKFLOWID],[STEPNO],[PreviousSTEPID],[CurrentID],[rejector_id],[reject_time],[FINISHED] ");
|
|
|
strSql.Append(" ,[ISDELETE],[DELETEUSER],[DELETETIME],[Reason],[OP],[TYPENO],CREATETIME) values('" + BSNO + "','" + workflowID + "', ");
|
|
|
strSql.Append(" dbo.[GetNextStep]('" + workflowID + "','" + BSNO + "','1'),'0','1',null,null,0,null,null,null,null,'" + USERID + "'," + TYPENO + ",getdate()) ");
|
|
|
strSql.Append(" else update workflow_using set stepno=dbo.[GetNextStep]('" + workflowID + "','" + BSNO + "','1'),currentid=1,op='" + USERID + "',finished='0',workflowid='" + workflowID + "' ");
|
|
|
strSql.Append(" where bsno='" + BSNO + "' and TYPENO=" + TYPENO + " ");
|
|
|
}
|
|
|
else
|
|
|
{//自动审核通过的
|
|
|
strSql.Append(" if (select bsno from workflow_using where bsno='" + BSNO + "' and TYPENO=" + TYPENO + ") is NULL ");
|
|
|
strSql.Append(" insert into workflow_using ([BSNO],[WORKFLOWID],[STEPNO],[PreviousSTEPID],[CurrentID],[rejector_id],[reject_time],[FINISHED] ");
|
|
|
strSql.Append(" ,[ISDELETE],[DELETEUSER],[DELETETIME],[Reason],[OP],[TYPENO],CREATETIME) values('" + BSNO + "','" + workflowID + "', ");
|
|
|
strSql.Append(" dbo.[GetNextStep]('" + workflowID + "','" + BSNO + "','1'),'0','1',null,null,1,null,null,null,null,'" + USERID + "'," + TYPENO + ",getdate()) ");
|
|
|
strSql.Append(" else update workflow_using set stepno=0,currentid=0,op='" + USERID + "',finished=1,workflowid='" + workflowID + "' ");
|
|
|
strSql.Append(" where bsno='" + BSNO + "' and TYPENO=" + TYPENO + " ");
|
|
|
}
|
|
|
|
|
|
return setWorkFlowStart(strSql, workflowID, USERID, BSNO, islast,BILLNO);
|
|
|
}
|
|
|
private static Resultmb setWorkFlowStart(StringBuilder strSql, string WORKFLOWID, string OP, string BSNO, Boolean islast,string BILLNO)
|
|
|
{
|
|
|
var _count = 0;
|
|
|
var _Result = new Resultmb();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
try
|
|
|
{
|
|
|
_count = db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = ee.Message;
|
|
|
return _Result;
|
|
|
}
|
|
|
|
|
|
if (_count == 0)
|
|
|
{
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = "没有影响数据,可能是已经提交或未设置工作流";
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
_Result.Success = true;
|
|
|
_Result.Message = "新工作流程产生成功";
|
|
|
_Result.totalCount = _count;
|
|
|
_Result.islast = islast;
|
|
|
}
|
|
|
var cookies = new Cookies();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
var RECEIVER = GetAuditor(WORKFLOWID, "1");
|
|
|
|
|
|
//向每个审核人发送消息
|
|
|
|
|
|
|
|
|
foreach (var _RC in RECEIVER)
|
|
|
{
|
|
|
//var _Message =
|
|
|
StartMessage(WORKFLOWID, OP, _RC.GID, BSNO,BILLNO);
|
|
|
//SaveMessage(_Message);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return _Result;
|
|
|
}
|
|
|
|
|
|
static public Resultmb WorkFlowStart(string WorkFlowName, string BSNO, string USERID, string BILLNO, string GID, string URL, string workflowidstr = "",string MSG="")
|
|
|
{
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
var workflowID = "";
|
|
|
var TYPENO = "";
|
|
|
var AutoFinish = "0";
|
|
|
var _Result = new Resultmb();
|
|
|
var _workflow = new WorkFlowmb();
|
|
|
|
|
|
if (workflowidstr == "" || workflowidstr == "no")
|
|
|
{
|
|
|
var _r = GetWorkFlowmb(WorkFlowName, USERID);
|
|
|
|
|
|
if (_r.Success) _workflow = (WorkFlowmb)_r.Data;
|
|
|
else {
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = _r.Message;
|
|
|
return _Result;
|
|
|
}
|
|
|
|
|
|
workflowID = _workflow.GID;
|
|
|
TYPENO = _workflow.TYPE;
|
|
|
AutoFinish = _workflow.isAuto;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
_workflow = GetWorkFlow(workflowidstr)[0];
|
|
|
workflowID = _workflow.GID;
|
|
|
TYPENO = _workflow.TYPE;
|
|
|
AutoFinish = _workflow.isAuto;
|
|
|
}
|
|
|
|
|
|
if (workflowID == "")
|
|
|
{
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = "该工作流程还未设置工作流,请联系管理员";
|
|
|
return _Result;
|
|
|
}
|
|
|
|
|
|
var islast = false;
|
|
|
if (AutoFinish == "1") islast = true;
|
|
|
|
|
|
if (islast == false)//不是自动审核通过
|
|
|
{
|
|
|
strSql.Append(" if (select bsno from workflow_using where bsno='" + BSNO + "' and TYPENO=" + TYPENO + ") is NULL ");
|
|
|
strSql.Append(" insert into workflow_using ([BSNO],[WORKFLOWID],[STEPNO],[PreviousSTEPID],[CurrentID],[rejector_id],[reject_time],[FINISHED] ");
|
|
|
strSql.Append(" ,[ISDELETE],[DELETEUSER],[DELETETIME],[Reason],[OP],[TYPENO],CREATETIME) values('" + BSNO + "','" + workflowID + "', ");
|
|
|
strSql.Append(" dbo.[GetNextStep]('" + workflowID + "','" + BSNO + "','1'),'0','1',null,null,0,null,null,null,null,'" + USERID + "'," + TYPENO + ",getdate()) ");
|
|
|
strSql.Append(" else update workflow_using set stepno=dbo.[GetNextStep]('" + workflowID + "','" + BSNO + "','1'),currentid=1,op='" + USERID + "',finished='0',workflowid='" + workflowID + "' ");
|
|
|
strSql.Append(" where bsno='" + BSNO + "' and TYPENO=" + TYPENO + " ");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" if (select bsno from workflow_using where bsno='" + BSNO + "' and TYPENO=" + TYPENO + ") is NULL ");
|
|
|
strSql.Append(" insert into workflow_using ([BSNO],[WORKFLOWID],[STEPNO],[PreviousSTEPID],[CurrentID],[rejector_id],[reject_time],[FINISHED] ");
|
|
|
strSql.Append(" ,[ISDELETE],[DELETEUSER],[DELETETIME],[Reason],[OP],[TYPENO],CREATETIME) values('" + BSNO + "','" + workflowID + "', ");
|
|
|
strSql.Append(" dbo.[GetNextStep]('" + workflowID + "','" + BSNO + "','1'),'0','1',null,null,1,null,null,null,null,'" + USERID + "'," + TYPENO + ",getdate()) ");
|
|
|
strSql.Append(" else update workflow_using set stepno=0,currentid=0,op='" + USERID + "',finished=1,workflowid='" + workflowID + "' ");
|
|
|
strSql.Append(" where bsno='" + BSNO + "' and TYPENO=" + TYPENO + " ");
|
|
|
}
|
|
|
|
|
|
return setWorkFlowStart(strSql, workflowID, USERID, BSNO, islast, BILLNO, GID, URL,MSG);
|
|
|
}
|
|
|
private static Resultmb setWorkFlowStart(StringBuilder strSql, string WORKFLOWID, string OP, string BSNO, Boolean islast, string BILLNO, string GID, string URL,string MSG="")
|
|
|
{
|
|
|
var _count = 0;
|
|
|
var _Result = new Resultmb();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
try
|
|
|
{
|
|
|
_count = db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = ee.Message;
|
|
|
}
|
|
|
|
|
|
if (_count == 0)
|
|
|
{
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = "没有影响数据,可能是已经提交或未设置工作流";
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
_Result.Success = true;
|
|
|
_Result.Message = "新工作流程产生成功";
|
|
|
_Result.totalCount = _count;
|
|
|
_Result.islast = islast;
|
|
|
}
|
|
|
|
|
|
var cookies = new Cookies();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
|
|
|
var RECEIVER = GetAuditor(WORKFLOWID, "1");
|
|
|
|
|
|
//向每个审核人发送消息
|
|
|
foreach (var _RC in RECEIVER)
|
|
|
{
|
|
|
//var _Message =
|
|
|
StartMessage(WORKFLOWID, OP, _RC.GID, BSNO, BILLNO, GID, URL,MSG);
|
|
|
//SaveMessage(_Message);
|
|
|
}
|
|
|
}
|
|
|
return _Result;
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 撤回工作流 会清空这个BSNO的workflow_using数据
|
|
|
/// </summary>
|
|
|
/// <param name="WorkFlowName"></param>
|
|
|
/// <param name="BSNO"></param>
|
|
|
/// <param name="USERID"></param>
|
|
|
/// <returns></returns>
|
|
|
static public Resultmb WorkFlowReset(string WorkFlowName, string BSNO, string USERID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
var workflowID = GetBSNOWorkFlowID(WorkFlowName, BSNO)[0].GID;
|
|
|
|
|
|
if (workflowID == "")
|
|
|
{
|
|
|
var Result = new Resultmb();
|
|
|
Result.Success = true;
|
|
|
Result.Message = "";
|
|
|
return Result;
|
|
|
|
|
|
}
|
|
|
|
|
|
//strSql.Append(" delete from [workflow_using] where cargo_id in( " + cargo_id + ")");
|
|
|
strSql.Append(" delete from workflow_using where bsno='" + BSNO + "' and workflowid='" + workflowID + "'");
|
|
|
//strSql.Append(" from import_cargo where id in( " + cargo_id + ")");
|
|
|
|
|
|
//return setWorkFlowStart(strSql, workflowID, "", BSNO,false);//ExecuteNonQuery
|
|
|
|
|
|
var _Result = new Resultmb();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
try
|
|
|
{
|
|
|
_Result.totalCount = db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = ee.Message;
|
|
|
}
|
|
|
return _Result;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region [查询]通过工作流名字和员工编号查找工作流编号 List<WorkFlowmb> GetWorkFlowID(string NAME, string USERID)
|
|
|
|
|
|
static public List<WorkFlowmb> GetWorkFlowID(string NAME, string USERID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
//strSql.Append(" select [dbo].[GetWorkFlowID]('" + NAME + "','" + USERID + "') workflowid, ");
|
|
|
//strSql.Append(" ( select name from workflow where gid= [dbo].[GetWorkFlowID]('" + NAME + "','" + USERID + "') ) name,(select type from workflow where gid= [dbo].[GetWorkFlowID]('" + NAME + "','" + USERID + "') ) type ");
|
|
|
|
|
|
strSql.Append(" declare @workflowID varchar(50) ");
|
|
|
strSql.Append(" set @workflowID = [dbo].[GetWorkFlowID]('" + NAME + "','" + USERID + "') ");
|
|
|
strSql.Append(" select @workflowID workflowid, ");
|
|
|
strSql.Append(" [NAME] name,type ");
|
|
|
strSql.Append(" ,case when(select count(*) from workflow_step where (workflowid = @workflowID ");
|
|
|
strSql.Append(" and groupid = 0))> 0 then 1 else 0 end isAuto ");//如果能自动完成 则isAuto=1
|
|
|
strSql.Append(" from workflow where gid = @workflowID ");
|
|
|
return SetWorkFlowID(strSql);
|
|
|
}
|
|
|
|
|
|
static public List<WorkFlowmb> GetWorkFlow(string WorkFlowID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select GID workflowid, ");
|
|
|
strSql.Append(" [NAME] name, type");
|
|
|
strSql.Append(" ,case when(select count(*) from workflow_step where (workflowid = '" + WorkFlowID + "' ");
|
|
|
strSql.Append(" and groupid = 0))> 0 then 1 else 0 end isAuto ");//如果能自动完成 则isAuto=1
|
|
|
strSql.Append(" from workflow where GID='" + WorkFlowID + "'");
|
|
|
return SetWorkFlowID(strSql);
|
|
|
}
|
|
|
|
|
|
static public List<WorkFlowmb> GetBSNOWorkFlowID(string NAME, string BSNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
//strSql.Append(" select [dbo].[GetBSNOWorkFlowID]('" + NAME + "','" + BSNO + "') workflowid, ");
|
|
|
//strSql.Append(" '" + NAME + "' as name,(select type from workflow where gid= [dbo].[GetBSNOWorkFlowID]('" + NAME + "','" + BSNO + "') ) type ");
|
|
|
//strSql.Append(" ,case when(select count(*) from workflow_step where (workflowid = [dbo].[GetBSNOWorkFlowID]('" + NAME + "','" + BSNO + "') ");
|
|
|
//strSql.Append(" and groupid = 0))> 0 then 1 else 0 end isAuto ");//如果能自动完成 则isAuto=1
|
|
|
//return SetWorkFlowID(strSql);
|
|
|
|
|
|
strSql.Append(" declare @workflowid varchar(50) ");
|
|
|
strSql.Append(" set @workflowid = [dbo].[GetBSNOWorkFlowID]('" + NAME + "','" + BSNO + "') ");
|
|
|
strSql.Append(" select @workflowid workflowid, ");
|
|
|
strSql.Append(" '" + NAME + "' as name,(select type from workflow where gid= @workflowid ) type ");
|
|
|
strSql.Append(" ,case when(select count(*) from workflow_step where (workflowid = @workflowid ");
|
|
|
strSql.Append(" and groupid = 0))> 0 then 1 else 0 end isAuto ");//如果能自动完成 则isAuto=1
|
|
|
return SetWorkFlowID(strSql);
|
|
|
}
|
|
|
|
|
|
static public List<WorkFlowmb> GetBSNOWorkFlowID(string NAME, string BSNO, DbTransaction tran)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
//strSql.Append(" select [dbo].[GetBSNOWorkFlowID]('" + NAME + "','" + BSNO + "') workflowid, ");
|
|
|
//strSql.Append(" '" + NAME + "' as name,(select type from workflow where gid= [dbo].[GetBSNOWorkFlowID]('" + NAME + "','" + BSNO + "') ) type ");
|
|
|
//strSql.Append(" ,case when(select count(*) from workflow_step where (workflowid = [dbo].[GetBSNOWorkFlowID]('" + NAME + "','" + BSNO + "') ");
|
|
|
//strSql.Append(" and groupid = 0))> 0 then 1 else 0 end isAuto ");//如果能自动完成 则isAuto=1
|
|
|
//return SetWorkFlowID(strSql);
|
|
|
|
|
|
strSql.Append(" declare @workflowid varchar(50) ");
|
|
|
strSql.Append(" set @workflowid = [dbo].[GetBSNOWorkFlowID]('" + NAME + "','" + BSNO + "') ");
|
|
|
strSql.Append(" select @workflowid workflowid, ");
|
|
|
strSql.Append(" '" + NAME + "' as name,(select type from workflow where gid= @workflowid ) type ");
|
|
|
strSql.Append(" ,case when(select count(*) from workflow_step where (workflowid = @workflowid ");
|
|
|
strSql.Append(" and groupid = 0))> 0 then 1 else 0 end isAuto ");//如果能自动完成 则isAuto=1
|
|
|
return SetWorkFlowID(strSql,tran);
|
|
|
}
|
|
|
|
|
|
private static List<WorkFlowmb> SetWorkFlowID(StringBuilder strSql)
|
|
|
{
|
|
|
var bodyList = new List<WorkFlowmb>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
WorkFlowmb data = new WorkFlowmb();
|
|
|
#region Set DB data to Object
|
|
|
data.GID = Convert.ToString(reader["WORKFLOWID"]);
|
|
|
data.NAME = Convert.ToString(reader["NAME"]);
|
|
|
data.TYPE = Convert.ToString(reader["type"]);
|
|
|
data.isAuto = Convert.ToString(reader["isAuto"]);
|
|
|
#endregion
|
|
|
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
return bodyList;
|
|
|
}
|
|
|
|
|
|
private static List<WorkFlowmb> SetWorkFlowID(StringBuilder strSql, DbTransaction tran)
|
|
|
{
|
|
|
var bodyList = new List<WorkFlowmb>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(tran, CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
WorkFlowmb data = new WorkFlowmb();
|
|
|
#region Set DB data to Object
|
|
|
data.GID = Convert.ToString(reader["WORKFLOWID"]);
|
|
|
data.NAME = Convert.ToString(reader["NAME"]);
|
|
|
data.TYPE = Convert.ToString(reader["type"]);
|
|
|
data.isAuto = Convert.ToString(reader["isAuto"]);
|
|
|
#endregion
|
|
|
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
return bodyList;
|
|
|
}
|
|
|
|
|
|
static public DBResult GetWorkFlowmb(string NAME, string USERID) {
|
|
|
var result = new DBResult();
|
|
|
|
|
|
var _r = GetWorkFlowID(NAME, USERID);
|
|
|
|
|
|
if (_r.Count > 0)
|
|
|
{
|
|
|
result.Success = true;
|
|
|
result.Data = _r[0];
|
|
|
}
|
|
|
else {
|
|
|
result.SetErrorInfo($"未找到可用的工作流,请确认已为该用户所在的公司设定这个类型的工作流。参考信息:《工作流类型:{NAME},用户ID:{USERID}》");
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 根据工作流名字、用户ID、公司ID 判定该使用哪个或哪些工作流
|
|
|
/// </summary>
|
|
|
/// <param name="NAME"></param>
|
|
|
/// <param name="USERID"></param>
|
|
|
/// <param name="COMPANYID"></param>
|
|
|
/// <returns></returns>
|
|
|
static public DBResult GetWorkFlowmb(string NAME, string BILLNO, string USERID,string COMPANYID="")
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
try
|
|
|
{
|
|
|
|
|
|
var cdc = new CommonDataContext();
|
|
|
|
|
|
var vwuser = new VW_user_md();
|
|
|
var vwuserList = cdc.VW_user.Where(x => x.USERID == USERID).ToList();
|
|
|
if (vwuserList == null || vwuserList.Count == 0)
|
|
|
{
|
|
|
|
|
|
result.SetErrorInfo($"未找到可用用户ID:{USERID}");
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
vwuser = vwuserList[0];
|
|
|
if (string.IsNullOrWhiteSpace(COMPANYID))
|
|
|
COMPANYID = vwuser.COMPANYID;
|
|
|
}
|
|
|
|
|
|
|
|
|
//1 看该用户是否出现在该种工作流的【管辖范围workflow_UserPath】内
|
|
|
//1.1 如有 看是否多条 如是多条 分别依据条件判断使用哪一个工作流
|
|
|
// 如多条符合 或 多条无条件 或 无符合条件 则返回错误
|
|
|
// 如仅一条符合 返回该工作流
|
|
|
|
|
|
//1.2 如无(出现在该种工作流的【管辖范围workflow_UserPath】内)
|
|
|
// 则根据公司(如公司为空则使用用户所在公司id) 、isdefault 判断是否只有一条工作流
|
|
|
// 如无,则根据公司(如公司为空则使用用户所在公司id) 判断是否只有一条工作流
|
|
|
// 如仅一条符合 返回该工作流
|
|
|
// 否则 返回错误
|
|
|
|
|
|
var 工作流type = cdc.workflow_type.Where(x => x.NAME == NAME).ToList();
|
|
|
|
|
|
if (工作流type == null || 工作流type.Count == 0)
|
|
|
{
|
|
|
result.SetErrorInfo($"未找到工作流{NAME}");
|
|
|
return result;
|
|
|
}
|
|
|
if (工作流type == null || 工作流type.Count == 0)
|
|
|
{
|
|
|
result.SetErrorInfo($"未找到工作流{NAME}");
|
|
|
return result;
|
|
|
}
|
|
|
var typenostr = 工作流type[0].TYPENO.ToString();
|
|
|
var 受管辖范围List = cdc.workflow_UserPath.Where(x => x.USERID == USERID && x.workflowTypeNO == typenostr).ToList();
|
|
|
if (!(受管辖范围List == null || 受管辖范围List.Count == 0))
|
|
|
{ //1.1
|
|
|
|
|
|
result = 根据管辖范围获取工作流(受管辖范围List, BILLNO, USERID, COMPANYID);
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//1.2
|
|
|
var typeno = 工作流type[0].TYPENO;
|
|
|
var workflowidlist = cdc.workflow.Where(x => x.TYPE == typeno).Select(s => s.GID).ToList();
|
|
|
result = 无管辖范围获取工作流(workflowidlist, BILLNO, USERID, COMPANYID);
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
catch (Exception ex) {
|
|
|
result.SetErrorInfo(ex.Message);
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private static DBResult 根据管辖范围获取工作流(List<workflow_UserPath_md> 受管辖范围List,string BILLNO, string USERID, string COMPANYID = "")
|
|
|
{
|
|
|
//1 看该用户是否出现在该种工作流的【管辖范围workflow_UserPath】内
|
|
|
//1.1 如有 看是否多条 如是多条 分别依据条件condition判断使用哪一个工作流
|
|
|
// 如多条符合 或 多条无条件 或 无符合条件 则返回错误
|
|
|
// 如仅一条符合 返回该工作流
|
|
|
var result = new DBResult();
|
|
|
var resultdata = new workflow_md();
|
|
|
var cdc = new CommonDataContext();
|
|
|
|
|
|
if (受管辖范围List.Count == 1)
|
|
|
{
|
|
|
var workflowid = 受管辖范围List[0].workflowID;
|
|
|
resultdata = cdc.workflow.FirstOrDefault(x => x.GID == workflowid);
|
|
|
result.OK("", resultdata);
|
|
|
return result;
|
|
|
}
|
|
|
else {
|
|
|
var workflowidlist = 受管辖范围List.Select(s => s.workflowID).Distinct().ToList();
|
|
|
|
|
|
result = 无管辖范围获取工作流(workflowidlist, BILLNO, USERID, COMPANYID);
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
private static DBResult 无管辖范围获取工作流(List<string> workflowidlist, string BILLNO, string USERID, string COMPANYID = "")
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
|
|
|
var cdc = new CommonDataContext();
|
|
|
|
|
|
var workflowlist = cdc.workflow.Where(x => workflowidlist.Contains(x.GID) && x.COMPANYID == COMPANYID).ToList();
|
|
|
|
|
|
if (workflowlist.Exists(x => x.ISCONDITION))
|
|
|
{
|
|
|
//如果有条件工作流 先看有没有符合条件的
|
|
|
var 条件工作流List = workflowlist.Where(x => x.ISCONDITION == true).ToList();
|
|
|
foreach (var 条件工作流 in 条件工作流List)
|
|
|
{
|
|
|
var CONDITIONSQL = 条件工作流.CONDITIONSQL.Replace("[业务编号]", "'" + BILLNO + "'");
|
|
|
T_ALL_DA T_ALL_DA = new T_ALL_DA();
|
|
|
var strCOUNT = T_ALL_DA.GetStrSQL("BLCT", CONDITIONSQL);
|
|
|
if (strCOUNT != "0")
|
|
|
{
|
|
|
result.OK("", 条件工作流);
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
//如果 条件工作流中无符合条件的 那就看有没有无条件的
|
|
|
//如无 返回无符合条件的工作流
|
|
|
//如有且仅有一个 返回它
|
|
|
//如有多个且其中有一个isdefault的 返回它
|
|
|
//如有多个且其中无默认工作流的 返回错误
|
|
|
var 无条件工作流 = workflowlist.Where(x => x.ISCONDITION != true).ToList();
|
|
|
if (无条件工作流 == null || 无条件工作流.Count == 0)
|
|
|
{
|
|
|
result.SetErrorInfo("无符合条件的工作流");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
if (无条件工作流.Count == 1)
|
|
|
{
|
|
|
result.OK("", 无条件工作流[0]);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
if (无条件工作流.Count > 1 && 无条件工作流.Exists(x => x.ISDEFAULT == 1))
|
|
|
{
|
|
|
result.OK("", 无条件工作流.First(x => x.ISDEFAULT == 1));
|
|
|
return result;
|
|
|
}
|
|
|
if (无条件工作流.Count > 1 && !无条件工作流.Exists(x => x.ISDEFAULT == 1))
|
|
|
{
|
|
|
result.SetErrorInfo("无符合条件的工作流(多条无条件工作流,且其中无默认工作流)");
|
|
|
return result;
|
|
|
}
|
|
|
result.SetErrorInfo("无符合条件的工作流(其他情况)");
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (workflowlist.Count == 1)
|
|
|
{
|
|
|
result.OK("", workflowlist[0]);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
if (workflowlist.Count > 1)
|
|
|
{
|
|
|
if (workflowlist.Exists(x => x.ISDEFAULT == 1))
|
|
|
{
|
|
|
result.OK("", workflowlist.First(x => x.ISDEFAULT == 1));
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
result.SetErrorInfo("无符合条件的工作流(多条无条件工作流,且其中无默认工作流)");
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region [查询]通过WORKFLOWID查找workflow_step的内容
|
|
|
/*
|
|
|
static public List<WorkFlowStepmb> GetWorkFlowStep(string WorkFlowName, string UserID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select * from workflow_step where WORKFLOWID = ");
|
|
|
strSql.Append(" dbo.getworkflowid('" + WorkFlowName + "','" + UserID + "') ");
|
|
|
strSql.Append(" and AUDITOR='" + UserID + "' order by STEPNO");
|
|
|
|
|
|
return SetWorkFlowStep(strSql);
|
|
|
}*/
|
|
|
static public List<DSWeb.Areas.CommMng.Models.WorkFlowStepmb> GetWorkFlowStep(string WORKFLOWID, string UserID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select * from workflow_step where WORKFLOWID = '" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" and AUDITOR='" + UserID + "' order by STEPNO");
|
|
|
|
|
|
return SetWorkFlowStep(strSql);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 查询
|
|
|
/// </summary>
|
|
|
/// <param name="WORKFLOWID"></param>
|
|
|
/// <param name="UserID"></param>
|
|
|
/// <returns></returns>
|
|
|
static public List<VW_user_all_md> GetWorkFlowStepAuditor(string TYPENO, string UserID,string COMPANYID,string STEPNO)
|
|
|
{
|
|
|
var workflowstepList = GetWorkFlowStep(TYPENO, UserID, COMPANYID);
|
|
|
|
|
|
if (workflowstepList != null && workflowstepList.Count > 0)
|
|
|
{
|
|
|
var cdc = new CommonDataContext();
|
|
|
|
|
|
var _stepno = Convert.ToInt32(STEPNO);
|
|
|
|
|
|
var useridlist = workflowstepList.Where(x => x.STEPNO == _stepno).Select(s => s.AUDITOR).ToList();
|
|
|
|
|
|
var result = cdc.VW_user_all.Where(x => useridlist.Contains(x.USERID)).ToList();
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
static public List<VW_user_all_md> GetWorkFlowStepAuditor_All(string TYPENO, string STEPNO)
|
|
|
{
|
|
|
var cdc = new CommonDataContext();
|
|
|
|
|
|
var _stepno = Convert.ToInt32(STEPNO);
|
|
|
|
|
|
var _typeno = Convert.ToInt32(TYPENO);
|
|
|
|
|
|
var workflowidlist = cdc.workflow.Where(x => x.TYPE == _typeno).Select(s=>s.GID).ToList();
|
|
|
|
|
|
var workflowstepList = cdc.workflow_step.Where(x=> workflowidlist.Contains( x.WORKFLOWID) && x.STEPNO== _stepno).ToList();
|
|
|
|
|
|
if (workflowstepList != null && workflowstepList.Count > 0)
|
|
|
{
|
|
|
var useridlist = workflowstepList.Where(x => x.STEPNO == _stepno).Select(s => s.AUDITOR).ToList();
|
|
|
|
|
|
var result = cdc.VW_user_all.Where(x => useridlist.Contains(x.USERID)).ToList();
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
static public List<workflow_step_md> GetWorkFlowStep(string TYPENO, string UserID, string COMPANYID)
|
|
|
{
|
|
|
//根据工作流typeno,查找到一组workflow
|
|
|
//根据 workflow_UserPath.userid = userid 看该用户是否有指定的工作流
|
|
|
//如有 定位一个workflow 然后定位一组workflow_step
|
|
|
|
|
|
//如无 则通过该用户的companyid=workflow.companyid and workflow.default=1 定位一条workflow
|
|
|
//然后定位一组workflow_step
|
|
|
|
|
|
var cdc = new CommonDataContext();
|
|
|
|
|
|
var _typeno = Convert.ToInt32(TYPENO);
|
|
|
|
|
|
var workflowlist = cdc.workflow.Where(x => x.TYPE == _typeno).ToList();
|
|
|
|
|
|
var workflowuserpathList = cdc.workflow_UserPath.Where(x => x.USERID == UserID && x.workflowTypeNO== TYPENO.ToString()).ToList();
|
|
|
|
|
|
if (workflowuserpathList != null && workflowuserpathList.Count > 0)
|
|
|
{
|
|
|
workflowlist = workflowlist.Where(x => x.GID == workflowuserpathList[0].workflowID).ToList();
|
|
|
}
|
|
|
else {
|
|
|
var userinfo = cdc.VW_user_all.FirstOrDefault(x => x.USERID == UserID);
|
|
|
|
|
|
if (userinfo == null) return null;
|
|
|
|
|
|
workflowlist = workflowlist.Where(x => x.ISDEFAULT == 1 && x.COMPANYID == userinfo.COMPANYID).ToList();
|
|
|
}
|
|
|
|
|
|
var workflow = workflowlist[0];
|
|
|
|
|
|
var workflowstepList = cdc.workflow_step.Where(x => x.WORKFLOWID == workflow.GID).ToList();
|
|
|
|
|
|
return workflowstepList;
|
|
|
}
|
|
|
|
|
|
|
|
|
private static List<DSWeb.Areas.CommMng.Models.WorkFlowStepmb> SetWorkFlowStep(StringBuilder strSql)
|
|
|
{
|
|
|
var bodyList = new List<DSWeb.Areas.CommMng.Models.WorkFlowStepmb>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
DSWeb.Areas.CommMng.Models.WorkFlowStepmb data = new DSWeb.Areas.CommMng.Models.WorkFlowStepmb();
|
|
|
#region Set DB data to Object
|
|
|
data.GID = Convert.ToString(reader["GID"]);
|
|
|
data.NAME = Convert.ToString(reader["NAME"]);
|
|
|
data.STEPNO = Convert.ToString(reader["STEPNO"]);
|
|
|
data.NEEDALLPASS = Convert.ToString(reader["NEEDALLPASS"]);
|
|
|
data.ISMUST = Convert.ToString(reader["ISMUST"]);
|
|
|
data.ISLAST = Convert.ToString(reader["ISLAST"]);
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
return bodyList;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region [查询]获取该用户,在该工作流中 目前可以操作的业务编号列表
|
|
|
////
|
|
|
/// <summary>
|
|
|
/// [查询] 获取该用户,在该工作流中 目前可以操作的业务编号列表 不指定步骤组号
|
|
|
/// </summary>
|
|
|
/// <param name="WorkFlowID"></param>
|
|
|
/// <param name="USERID"></param>
|
|
|
/// <returns></returns>
|
|
|
static public List<WorkFlow_Usingmb> GetWorkFlowBSNOList(string WorkFlowID, string USERID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select BSNO,WORKFLOWID,STEPNO from workflow_using where workflowid='" + WorkFlowID + "' and stepno in( ");
|
|
|
strSql.Append(" select stepno from workflow_step where WORKFLOWID = '" + WorkFlowID + "' and AUDITOR = '" + USERID + "') ");
|
|
|
return SetWorkFlowState(strSql);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// [查询] 获取该用户,在该工作流中 目前可以操作的业务编号列表 指定步骤组号
|
|
|
/// </summary>
|
|
|
/// <param name="WorkFlowID"></param>
|
|
|
/// <param name="StepNo"></param>
|
|
|
/// <param name="USERID"></param>
|
|
|
/// <returns></returns>
|
|
|
static public List<WorkFlow_Usingmb> GetWorkFlowBSNOList(string WorkFlowID, int StepNo, string USERID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select BSNO,WORKFLOWID,STEPNO from workflow_using where workflowid='" + WorkFlowID + "' and stepno in( ");
|
|
|
strSql.Append(" select stepno from workflow_step where WORKFLOWID = '" + WorkFlowID + "' and AUDITOR = '" + USERID + "') and stepno=" + StepNo.ToString() + " ");
|
|
|
return SetWorkFlowState(strSql);
|
|
|
}
|
|
|
|
|
|
static public List<WorkFlow_Usingmb> GetWorkFlowBSNOListByName(string WorkFlowName, string USERID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @workflowID varchar(50) ");
|
|
|
strSql.Append(" set @workflowID = [dbo].[GetWorkFlowID]('" + WorkFlowName + "','" + USERID + "') ");
|
|
|
strSql.Append(" select BSNO,WORKFLOWID,STEPNO from workflow_using where workflowid=@workflowID and stepno in( ");
|
|
|
strSql.Append(" select stepno from workflow_step where WORKFLOWID = @workflowID and AUDITOR = '" + USERID + "') ");
|
|
|
return SetWorkFlowState(strSql);
|
|
|
}
|
|
|
static public List<WorkFlow_Usingmb> GetWorkFlowBSNOListByName(string WorkFlowName, int StepNo, string USERID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @workflowID varchar(50) ");
|
|
|
strSql.Append(" set @workflowID = [dbo].[GetWorkFlowID]('" + WorkFlowName + "','" + USERID + "') ");
|
|
|
strSql.Append(" select BSNO,WORKFLOWID,STEPNO from workflow_using where workflowid=@workflowID and stepno in( ");
|
|
|
strSql.Append(" select stepno from workflow_step where WORKFLOWID = @workflowID and AUDITOR = '" + USERID + "') and stepno=" + StepNo.ToString() + " ");
|
|
|
return SetWorkFlowState(strSql);
|
|
|
}
|
|
|
|
|
|
private static List<WorkFlow_Usingmb> SetWorkFlowState(StringBuilder strSql)
|
|
|
{
|
|
|
var bodyList = new List<WorkFlow_Usingmb>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
WorkFlow_Usingmb data = new WorkFlow_Usingmb();
|
|
|
#region Set DB data to Object
|
|
|
data.BSNO = Convert.ToString(reader["BSNO"]);
|
|
|
data.WORKFLOWID = Convert.ToString(reader["WORKFLOWID"]);
|
|
|
data.STEPNO = Convert.ToString(reader["STEPNO"]);/*
|
|
|
data.REJECTOR_ID = Convert.ToString(reader["REJECTOR_ID"]);
|
|
|
data.REJECT_TIME = Convert.ToString(reader["REJECT_TIME"]);
|
|
|
data.FINISHED = Convert.ToString(reader["FINISHED"]);
|
|
|
data.ISDELETE = Convert.ToString(reader["ISDELETE"]);
|
|
|
data.DELETEUSER = Convert.ToString(reader["DELETEUSER"]);
|
|
|
data.DELETETIME = Convert.ToString(reader["DELETETIME"]);*/
|
|
|
#endregion
|
|
|
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
return bodyList;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region [查询]根据业务BSNO获取工作流状态
|
|
|
|
|
|
static public List<BSNOWorkFlowStatemb> GetBSNOWorkFlow(string WORKFLOWID, string BSNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select name,wd.stepno,wd.groupid,wd.auditor,u.showname,wd.billno from ");
|
|
|
strSql.Append(" (select *, ROW_NUMBER() over(partition by groupid,stepno order by createtime ) as rowNum ");
|
|
|
strSql.Append(" from workflow_step where workflowid='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" ) ranked ");
|
|
|
strSql.Append(" left join workflow_do wd on (wd.workflowid='" + WORKFLOWID + "' and wd.isdelete is null) ");
|
|
|
strSql.Append(" and wd.stepno=ranked.stepno and wd.billno='" + BSNO + "' ");
|
|
|
strSql.Append(" left join [user] U on u.gid=wd.auditor and wd.groupid=ranked.groupid ");
|
|
|
strSql.Append(" where ranked.rowNum <= 1 ");
|
|
|
strSql.Append(" order by ranked.groupid,ranked.stepno, ranked.createtime ");
|
|
|
|
|
|
return SetBSNOWorkFlow(strSql);
|
|
|
}
|
|
|
static public List<BSNOWorkFlowStatemb> GetBSNOWorkFlow(string WORKFLOWID, string BSNO, DbTransaction tran)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select name,wd.stepno,wd.groupid,wd.auditor,u.showname,wd.billno from ");
|
|
|
strSql.Append(" (select *, ROW_NUMBER() over(partition by groupid,stepno order by createtime ) as rowNum ");
|
|
|
strSql.Append(" from workflow_step where workflowid='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" ) ranked ");
|
|
|
strSql.Append(" left join workflow_do wd on (wd.workflowid='" + WORKFLOWID + "' and wd.isdelete is null) ");
|
|
|
strSql.Append(" and wd.stepno=ranked.stepno and wd.billno='" + BSNO + "' ");
|
|
|
strSql.Append(" left join [user] U on u.gid=wd.auditor and wd.groupid=ranked.groupid ");
|
|
|
strSql.Append(" where ranked.rowNum <= 1 ");
|
|
|
strSql.Append(" order by ranked.groupid,ranked.stepno, ranked.createtime ");
|
|
|
|
|
|
return SetBSNOWorkFlow(strSql, tran);
|
|
|
}
|
|
|
|
|
|
|
|
|
static public List<BSNOWorkFlowStatemb> GetBSNOGROUPID(string WORKFLOWID, string BSNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select '' name,stepno,currentid GROUPID,'' auditor,'' showname,bsno billno ");
|
|
|
strSql.Append(" from workflow_using where WORKFLOWID='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" and bsno='" + BSNO + "' ");
|
|
|
|
|
|
return SetBSNOWorkFlow(strSql);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 看工作流目前的步骤组 可以用来查看工作流是否在审核流程中
|
|
|
/// </summary>
|
|
|
/// <param name="WORKFLOWID"></param>
|
|
|
/// <param name="BSNO"></param>
|
|
|
/// <returns></returns>
|
|
|
static public List<BSNOWorkFlowStatemb> GetBSNOGROUPID(string WORKFLOWID, string BSNO, DbTransaction tran)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select '' name,stepno,currentid GROUPID,'' auditor,'' showname,bsno billno ");
|
|
|
strSql.Append(" from workflow_using where WORKFLOWID='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" and bsno='" + BSNO + "' ");
|
|
|
|
|
|
return SetBSNOWorkFlow(strSql, tran);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 看一个BSNO在指定WORKFLOWID的工作流中 是否处于已被审核过的状态
|
|
|
/// 返回true 表示存在一个“具有 这个bsno 这个WORKFLOWID的 finished=0(还未结束) 的workflow_using记录”
|
|
|
/// 而且存在至少一个“workflow_do.audittime大于workflow_using.createtime”的workflow_do
|
|
|
/// </summary>
|
|
|
/// <param name="WORKFLOWID"></param>
|
|
|
/// <param name="BSNO"></param>
|
|
|
/// <returns></returns>
|
|
|
static public bool GetBSNOWORKFLOWIDinAudit(string WORKFLOWID, string BSNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select (select count (*) from workflow_do where Billno=workflow_using.BSNO and workflowid=workflow_using.workflowid and audittime>=workflow_using.createtime) name,stepno,currentid GROUPID,'' auditor,'' showname,bsno billno from workflow_using where FINISHED = 0 and bsno = '" + BSNO + "' and workflowid = '" + WORKFLOWID + "' ");
|
|
|
|
|
|
var resultlist = SetBSNOWorkFlow(strSql);
|
|
|
if (resultlist.Count <= 0) return false;
|
|
|
else
|
|
|
{
|
|
|
var result = resultlist[0];
|
|
|
if (Convert.ToInt32(result.NAME) > 0)
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
else
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
private static List<BSNOWorkFlowStatemb> SetBSNOWorkFlow(StringBuilder strSql)
|
|
|
{
|
|
|
var bodyList = new List<BSNOWorkFlowStatemb>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
BSNOWorkFlowStatemb data = new BSNOWorkFlowStatemb();
|
|
|
#region Set DB data to Object
|
|
|
data.NAME = Convert.ToString(reader["NAME"]);
|
|
|
data.STEPNO = Convert.ToString(reader["STEPNO"]);
|
|
|
data.GROUPID = Convert.ToString(reader["GROUPID"]);
|
|
|
data.AUDITOR = Convert.ToString(reader["AUDITOR"]);
|
|
|
data.SHOWNAME = Convert.ToString(reader["SHOWNAME"]);
|
|
|
data.BILLNO = Convert.ToString(reader["BILLNO"]);
|
|
|
#endregion
|
|
|
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
return bodyList;
|
|
|
}
|
|
|
|
|
|
private static List<BSNOWorkFlowStatemb> SetBSNOWorkFlow(StringBuilder strSql, DbTransaction tran)
|
|
|
{
|
|
|
var bodyList = new List<BSNOWorkFlowStatemb>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(tran, CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
BSNOWorkFlowStatemb data = new BSNOWorkFlowStatemb();
|
|
|
#region Set DB data to Object
|
|
|
data.NAME = Convert.ToString(reader["NAME"]);
|
|
|
data.STEPNO = Convert.ToString(reader["STEPNO"]);
|
|
|
data.GROUPID = Convert.ToString(reader["GROUPID"]);
|
|
|
data.AUDITOR = Convert.ToString(reader["AUDITOR"]);
|
|
|
data.SHOWNAME = Convert.ToString(reader["SHOWNAME"]);
|
|
|
data.BILLNO = Convert.ToString(reader["BILLNO"]);
|
|
|
#endregion
|
|
|
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
return bodyList;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region [操作工作流] 插入workflowDo表(工作流动作,推进工作流向下流动)
|
|
|
|
|
|
|
|
|
static public Resultmb InsertWorkFlowDo(string WORKFLOWNAME, string BSNO, string USERID,string BILLNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
var WorkFlowID = GetBSNOWorkFlowID(WORKFLOWNAME, BSNO)[0].GID;
|
|
|
|
|
|
var _state = GetBSNOGROUPID(WorkFlowID, BSNO)[0];
|
|
|
var STEPNO = _state.STEPNO;
|
|
|
var GROUPID = _state.GROUPID;
|
|
|
|
|
|
strSql.Append(" select power(2,stepno) stepno_2,stepno,groupid,islast from workflow_step ");
|
|
|
strSql.Append(" where workflowid='" + WorkFlowID + "' ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and groupid=" + GROUPID + " and (select " + STEPNO + "&power(2,stepno))>0 ");
|
|
|
var StepList = GetWorkFlowStepNO(strSql);
|
|
|
if (StepList.Count == 0)
|
|
|
{
|
|
|
var result = new Resultmb();
|
|
|
result.Success = false;
|
|
|
result.Message = result.Message + ("无权限进行审核 ");//工作流代码[" + WorkFlowID + "] 业务编号[" + BSNO + "]");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
var islast = WorkFlowDAL.GetWorkFlowFinal_BSNO(WorkFlowID, GROUPID, BSNO, USERID);
|
|
|
return DoInsertWorkFlowDo(WorkFlowID, USERID, BSNO, islast, StepList,BILLNO);
|
|
|
}
|
|
|
|
|
|
static public Resultmb InsertWorkFlowDo(string WORKFLOWNAME, string BSNO, string USERID, string BILLNO, string GID, string URL)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
var WorkFlowID = GetBSNOWorkFlowID(WORKFLOWNAME, BSNO)[0].GID;
|
|
|
if (WorkFlowID == "")
|
|
|
{
|
|
|
var _Result = new Resultmb();
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = "";
|
|
|
return _Result;
|
|
|
|
|
|
}
|
|
|
|
|
|
var _state = GetBSNOGROUPID(WorkFlowID, BSNO)[0];
|
|
|
var STEPNO = _state.STEPNO;
|
|
|
var GROUPID = _state.GROUPID;
|
|
|
|
|
|
strSql.Append(" select power(2,stepno) stepno_2,stepno,groupid,islast from workflow_step ");
|
|
|
strSql.Append(" where workflowid='" + WorkFlowID + "' ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and groupid=" + GROUPID + " and (select " + STEPNO + "&power(2,stepno))>0 ");
|
|
|
var StepList = GetWorkFlowStepNO(strSql);
|
|
|
if (StepList.Count == 0)
|
|
|
{
|
|
|
var result = new Resultmb();
|
|
|
result.Success = false;
|
|
|
result.Message = result.Message + ("无权限进行审核 ");//工作流代码[" + WorkFlowID + "] 业务编号[" + BSNO + "]");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
var islast = WorkFlowDAL.GetWorkFlowFinal_BSNO(WorkFlowID, GROUPID, BSNO, USERID);
|
|
|
return DoInsertWorkFlowDo(WorkFlowID, USERID, BSNO, islast, StepList, BILLNO, GID, URL);
|
|
|
}
|
|
|
|
|
|
static public Resultmb InsertWorkFlowDo(string WORKFLOWNAME, string BSNO, string USERID, DbTransaction tran,string BILLNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
var WorkFlowID = GetBSNOWorkFlowID(WORKFLOWNAME, BSNO,tran)[0].GID;
|
|
|
|
|
|
var _state = GetBSNOGROUPID(WorkFlowID, BSNO, tran)[0];
|
|
|
var STEPNO = _state.STEPNO;
|
|
|
var GROUPID = _state.GROUPID;
|
|
|
|
|
|
strSql.Append(" select power(2,stepno) stepno_2,stepno,groupid,islast from workflow_step ");
|
|
|
strSql.Append(" where workflowid='" + WorkFlowID + "' ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and groupid=" + GROUPID + " and (select " + STEPNO + "&power(2,stepno))>0 ");
|
|
|
var StepList = GetWorkFlowStepNO(strSql);
|
|
|
if (StepList.Count == 0)
|
|
|
{
|
|
|
var result = new Resultmb();
|
|
|
result.Success = false;
|
|
|
result.Message = result.Message + ("无权限进行审核 ");//工作流代码[" + WorkFlowID + "] 业务编号[" + BSNO + "]");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
var islast = WorkFlowDAL.GetWorkFlowFinal_BSNO(WorkFlowID, GROUPID, BSNO, USERID, tran);
|
|
|
return DoInsertWorkFlowDo(WorkFlowID, USERID, BSNO, islast, StepList, tran,BILLNO);
|
|
|
}
|
|
|
static public Resultmb InsertWorkFlowDo(string WORKFLOWNAME, string BSNO, string USERID, DbTransaction tran, string BILLNO, string GID, string URL)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
var WorkFlowID = GetBSNOWorkFlowID(WORKFLOWNAME, BSNO,tran)[0].GID;
|
|
|
if (WorkFlowID == "")
|
|
|
{
|
|
|
var result = new Resultmb();
|
|
|
result.Success = false;
|
|
|
result.Message = result.Message + ("无权限进行审核 ");//工作流代码[" + WorkFlowID + "] 业务编号[" + BSNO + "]");
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var _state = GetBSNOGROUPID(WorkFlowID, BSNO, tran)[0];
|
|
|
var STEPNO = _state.STEPNO;
|
|
|
var GROUPID = _state.GROUPID;
|
|
|
|
|
|
strSql.Append(" select power(2,stepno) stepno_2,stepno,groupid,islast from workflow_step ");
|
|
|
strSql.Append(" where workflowid='" + WorkFlowID + "' ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and groupid=" + GROUPID + " and (select " + STEPNO + "&power(2,stepno))>0 ");
|
|
|
var StepList = GetWorkFlowStepNO(strSql);
|
|
|
if (StepList.Count == 0)
|
|
|
{
|
|
|
var result = new Resultmb();
|
|
|
result.Success = false;
|
|
|
result.Message = result.Message + ("无权限进行审核 ");//工作流代码[" + WorkFlowID + "] 业务编号[" + BSNO + "]");
|
|
|
return result;
|
|
|
}
|
|
|
var islast = WorkFlowDAL.GetWorkFlowFinal_BSNO(WorkFlowID, GROUPID, BSNO, USERID, tran);
|
|
|
return DoInsertWorkFlowDo(WorkFlowID, USERID, BSNO, islast, StepList, tran, BILLNO, GID, URL);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
private static List<DSWeb.Areas.CommMng.Models.WorkFlowStepmb> GetWorkFlowStepNO(StringBuilder strSql)
|
|
|
{
|
|
|
//var headList = new List<WorkFlowStepNOmb>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
var bodyList = new List<DSWeb.Areas.CommMng.Models.WorkFlowStepmb>();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
DSWeb.Areas.CommMng.Models.WorkFlowStepmb data = new DSWeb.Areas.CommMng.Models.WorkFlowStepmb();
|
|
|
#region Set DB data to Object
|
|
|
|
|
|
data.STEPNO = Convert.ToString(reader["STEPNO"]);
|
|
|
data.GROUPID = Convert.ToString(reader["GROUPID"]);
|
|
|
data.ISLAST = Convert.ToString(reader["ISLAST"]);
|
|
|
#endregion
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return bodyList;
|
|
|
}
|
|
|
/*
|
|
|
private static int DoInsertWorkFlowDo(string WorkFlowName, string DEPTGID, string USERID, string BSNO, List<WorkFlowStepmb> StepList)
|
|
|
{
|
|
|
var _count = 0;
|
|
|
var islast = 0;
|
|
|
for(int i=0;i<StepList.Count;i++)
|
|
|
{
|
|
|
var stepno = StepList[i].STEPNO;
|
|
|
var GROUPID = StepList[i].GROUPID;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID=dbo.getworkflowid('" + WorkFlowName + "','" + DEPTGID + "') ");
|
|
|
strSql.Append(" insert into workflow_do (GID,workflowid,stepid,billno,auditor,audittime,stepno,isallfinish,GROUPID) ");
|
|
|
strSql.Append(" select newid(),workflowid,gid,'" + BSNO + "',auditor,getdate(),stepno,islast,GROUPID ");
|
|
|
strSql.Append(" from workflow_step where workflowid=@WorkFlowID ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and stepno ='" + stepno + "' and groupid='" + GROUPID + "' ");
|
|
|
|
|
|
PushUsing(WorkFlowName, DEPTGID, BSNO, USERID, stepno, GROUPID);
|
|
|
_count = _count+db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
if (StepList[i].ISLAST == "True")
|
|
|
{
|
|
|
islast = 1;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return islast;
|
|
|
}*/
|
|
|
|
|
|
//1
|
|
|
private static Resultmb DoInsertWorkFlowDo(string WORKFLOWID, string USERID, string BSNO, Boolean islast
|
|
|
, List<DSWeb.Areas.CommMng.Models.WorkFlowStepmb> StepList,string BILLNO)
|
|
|
{
|
|
|
var result = new Resultmb();
|
|
|
var _count = 0;
|
|
|
|
|
|
for (int i = 0; i < StepList.Count; i++)
|
|
|
{
|
|
|
var stepno = StepList[i].STEPNO;
|
|
|
var GROUPID = StepList[i].GROUPID;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" insert into workflow_do (GID,workflowid,stepid,billno,auditor,audittime,stepno,isallfinish,GROUPID ");
|
|
|
strSql.Append(" ,isfinish,BSNO,feeid,feestatus,DOQUERYSQL,isdelete,deletestep,deleteoperator,deletestepno,operator,applicant) ");////
|
|
|
strSql.Append(" select newid(),workflowid,gid,'" + BSNO + "',auditor,getdate(),stepno,islast,GROUPID ");
|
|
|
strSql.Append(" ,0,'','','','','0','','','','',''");////
|
|
|
strSql.Append(" from workflow_step where workflowid=@WorkFlowID ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and stepno ='" + stepno + "' and groupid='" + GROUPID + "' ");
|
|
|
|
|
|
result = PushUsing(WORKFLOWID, BSNO, USERID, stepno, GROUPID, islast,BILLNO);
|
|
|
if (result.Success != true)
|
|
|
{//推进workflow_using的状态
|
|
|
result.Message = result.Message + (" 工作流代码[" + WORKFLOWID + "] 业务编号[" + BSNO + "] 步骤组代码[" + GROUPID + "] 步骤代码[" + stepno + "]");
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
try
|
|
|
{//向workflow_do写入操作日志
|
|
|
_count = _count + db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = "写入日志出错 " + ee.Message + " 工作流代码[" + WORKFLOWID + "] 业务编号[" + BSNO + "] 步骤组代码[" + GROUPID + "] 步骤代码[" + stepno + "]";
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
if (result.Success == false)
|
|
|
{
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
result.Message = "全部成功";
|
|
|
result.islast = islast;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
//return islast;
|
|
|
}
|
|
|
|
|
|
//2
|
|
|
private static Resultmb DoInsertWorkFlowDo(string WORKFLOWID, string USERID, string BSNO, Boolean islast
|
|
|
, List<DSWeb.Areas.CommMng.Models.WorkFlowStepmb> StepList, string BILLNO, string GID, string URL)
|
|
|
{
|
|
|
var result = new Resultmb();
|
|
|
var _count = 0;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
//using (var conn = db.CreateConnection())
|
|
|
//{
|
|
|
//conn.Open();
|
|
|
//var tran = conn.BeginTransaction();
|
|
|
|
|
|
for (int i = 0; i < StepList.Count; i++)
|
|
|
{
|
|
|
var stepno = StepList[i].STEPNO;
|
|
|
var GROUPID = StepList[i].GROUPID;
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" insert into workflow_do (GID,workflowid,stepid,billno,auditor,audittime,stepno,isallfinish,GROUPID ");
|
|
|
strSql.Append(" ,isfinish,BSNO,feeid,feestatus,DOQUERYSQL,isdelete,deletestep,deleteoperator,deletestepno,operator,applicant) ");////
|
|
|
strSql.Append(" select newid(),workflowid,gid,'" + BSNO + "',auditor,getdate(),stepno,islast,GROUPID ");
|
|
|
strSql.Append(" ,0,'','','','','0','','','','',''");////
|
|
|
strSql.Append(" from workflow_step where workflowid=@WorkFlowID ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and stepno ='" + stepno + "' and groupid='" + GROUPID + "' ");
|
|
|
|
|
|
result = PushUsing(WORKFLOWID, BSNO, USERID, stepno, GROUPID, islast, BILLNO, GID, URL);
|
|
|
if (result.Success != true)
|
|
|
{//推进workflow_using的状态
|
|
|
result.Message = result.Message + (" 工作流代码[" + WORKFLOWID + "] 业务编号[" + BSNO + "] 步骤组代码[" + GROUPID + "] 步骤代码[" + stepno + "]");
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
try
|
|
|
{//向workflow_do写入操作日志
|
|
|
_count = _count + db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
//db.ExecuteNonQuery(cmdupdate, tran);
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = "写入日志出错 " + ee.Message + " 工作流代码[" + WORKFLOWID + "] 业务编号[" + BSNO + "] 步骤组代码[" + GROUPID + "] 步骤代码[" + stepno + "]";
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
if (result.Success == false)
|
|
|
{
|
|
|
//tran.Rollback();
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//tran.Commit();
|
|
|
result.Message = "全部成功";
|
|
|
result.islast = islast;
|
|
|
return result;
|
|
|
}
|
|
|
//}
|
|
|
|
|
|
//return islast;
|
|
|
}
|
|
|
|
|
|
//3 含事务
|
|
|
private static Resultmb DoInsertWorkFlowDo(string WORKFLOWID, string USERID, string BSNO, Boolean islast
|
|
|
, List<DSWeb.Areas.CommMng.Models.WorkFlowStepmb> StepList, DbTransaction tran,string BILLNO)
|
|
|
{
|
|
|
var result = new Resultmb();
|
|
|
var _count = 0;
|
|
|
|
|
|
for (int i = 0; i < StepList.Count; i++)
|
|
|
{
|
|
|
var stepno = StepList[i].STEPNO;
|
|
|
var GROUPID = StepList[i].GROUPID;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" insert into workflow_do (GID,workflowid,stepid,billno,auditor,audittime,stepno,isallfinish,GROUPID ");
|
|
|
strSql.Append(" ,isfinish,BSNO,feeid,feestatus,DOQUERYSQL,isdelete,deletestep,deleteoperator,deletestepno,operator,applicant) ");////
|
|
|
strSql.Append(" select newid(),workflowid,gid,'" + BSNO + "',auditor,getdate(),stepno,islast,GROUPID ");
|
|
|
strSql.Append(" ,0,'','','','','0','','','','',''");////
|
|
|
strSql.Append(" from workflow_step where workflowid=@WorkFlowID ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and stepno ='" + stepno + "' and groupid='" + GROUPID + "' ");
|
|
|
|
|
|
result = PushUsing(WORKFLOWID, BSNO, USERID, stepno, GROUPID, islast, tran,BILLNO);
|
|
|
if (result.Success != true)
|
|
|
{//推进workflow_using的状态
|
|
|
result.Message = result.Message + (" 工作流代码[" + WORKFLOWID + "] 业务编号[" + BSNO + "] 步骤组代码[" + GROUPID + "] 步骤代码[" + stepno + "]");
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
try
|
|
|
{//向workflow_do写入操作日志
|
|
|
_count = _count + db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = "写入日志出错 " + ee.Message + " 工作流代码[" + WORKFLOWID + "] 业务编号[" + BSNO + "] 步骤组代码[" + GROUPID + "] 步骤代码[" + stepno + "]";
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
if (result.Success == false)
|
|
|
{
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
result.Message = "全部成功";
|
|
|
result.islast = islast;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
//return islast;
|
|
|
}
|
|
|
private static Resultmb DoInsertWorkFlowDo(string WORKFLOWID, string USERID, string BSNO, Boolean islast
|
|
|
, List<DSWeb.Areas.CommMng.Models.WorkFlowStepmb> StepList, DbTransaction tran, string BILLNO, string GID, string URL)
|
|
|
{
|
|
|
var result = new Resultmb();
|
|
|
var _count = 0;
|
|
|
|
|
|
for (int i = 0; i < StepList.Count; i++)
|
|
|
{
|
|
|
var stepno = StepList[i].STEPNO;
|
|
|
var GROUPID = StepList[i].GROUPID;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" insert into workflow_do (GID,workflowid,stepid,billno,auditor,audittime,stepno,isallfinish,GROUPID ");
|
|
|
strSql.Append(" ,isfinish,BSNO,feeid,feestatus,DOQUERYSQL,isdelete,deletestep,deleteoperator,deletestepno,operator,applicant) ");////
|
|
|
strSql.Append(" select newid(),workflowid,gid,'" + BSNO + "',auditor,getdate(),stepno,islast,GROUPID ");
|
|
|
strSql.Append(" ,0,'','','','','0','','','','',''");////
|
|
|
strSql.Append(" from workflow_step where workflowid=@WorkFlowID ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and stepno ='" + stepno + "' and groupid='" + GROUPID + "' ");
|
|
|
|
|
|
result = PushUsing(WORKFLOWID, BSNO, USERID, stepno, GROUPID, islast, tran, BILLNO, GID, URL);
|
|
|
if (result.Success != true)
|
|
|
{//推进workflow_using的状态
|
|
|
result.Message = result.Message + (" 工作流代码[" + WORKFLOWID + "] 业务编号[" + BSNO + "] 步骤组代码[" + GROUPID + "] 步骤代码[" + stepno + "]");
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
try
|
|
|
{//向workflow_do写入操作日志
|
|
|
_count = _count + db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = "写入日志出错 " + ee.Message + " 工作流代码[" + WORKFLOWID + "] 业务编号[" + BSNO + "] 步骤组代码[" + GROUPID + "] 步骤代码[" + stepno + "]";
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
if (result.Success == false)
|
|
|
{
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
result.Message = "全部成功";
|
|
|
result.islast = islast;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
//return islast;
|
|
|
}
|
|
|
|
|
|
static private Resultmb PushUsing(string WORKFLOWID, string BSNO, string USERID, string STEPNO, string GROUPID, Boolean islast,string BILLNO)
|
|
|
{//将操作记入WorkFlow_Using 如果该groupid的步骤都执行完毕,推进至下一阶段
|
|
|
var _result = new Resultmb();
|
|
|
var stepno = 0;
|
|
|
var strSql_0 = new StringBuilder();//如果using的stepno集合中包含stepno 则将其去除
|
|
|
var strSql = new StringBuilder();
|
|
|
var strSql_2 = new StringBuilder();
|
|
|
|
|
|
strSql_0.Append(" select (select stepno from workflow_using ");
|
|
|
strSql_0.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "') & power(2," + STEPNO + ") stepno ");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql_0.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
stepno = Convert.ToInt32(reader["stepno"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
if (stepno > 0)
|
|
|
{
|
|
|
|
|
|
//strSql.Append(" begin ");
|
|
|
strSql.Append(" update workflow_using set ");
|
|
|
strSql.Append(" stepno=stepno-power(2," + STEPNO + "),currentid=" + GROUPID + " ");
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "' ");
|
|
|
//strSql.Append(" end ");
|
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
{
|
|
|
|
|
|
//Database db = DatabaseFactory.CreateDatabase();
|
|
|
var _count = SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, strSql.ToString(), null);
|
|
|
|
|
|
if (_count <= 0)
|
|
|
{
|
|
|
_result.Success = false;
|
|
|
_result.Message = "推进工作流出错 ";
|
|
|
sqlTran.Rollback();
|
|
|
return _result;
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
sqlTran.Commit();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Database db3 = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
strSql_2.Append(" select stepno from workflow_using ");
|
|
|
strSql_2.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "' ");
|
|
|
using (IDataReader reader = db3.ExecuteReader(CommandType.Text, strSql_2.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
stepno = Convert.ToInt32(reader["stepno"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
{
|
|
|
if (_result.Success == true && stepno == 0)
|
|
|
{//如果本步骤全都执行完了
|
|
|
var nextGROUPID = GetNextGROUP(WORKFLOWID, STEPNO, GROUPID, USERID);
|
|
|
|
|
|
strSql = new StringBuilder();
|
|
|
strSql.Append(" update workflow_using set stepno=dbo.getnextstep('" + WORKFLOWID + "','" + BSNO + "'," + nextGROUPID + "),");
|
|
|
strSql.Append(" currentid=" + nextGROUPID);
|
|
|
if (islast)
|
|
|
{
|
|
|
strSql.Append(" ,finished=1 ");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" ,finished=0 ");
|
|
|
}
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" and bsno='" + BSNO + "' ");
|
|
|
//Database db = DatabaseFactory.CreateDatabase();
|
|
|
try
|
|
|
{
|
|
|
var _count = SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, strSql.ToString());
|
|
|
//db.ExecuteNonQuery(CommandType.Text, strSql.ToString());//CommandType.Text, , tran
|
|
|
sqlTran.Commit();
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
_result.Success = false;
|
|
|
_result.Message = "推进步骤组出错 " + ee.Message;
|
|
|
sqlTran.Rollback();
|
|
|
}
|
|
|
|
|
|
//var message=new SYSMessagemb();
|
|
|
//message.NAME=WORKFLOWID;
|
|
|
|
|
|
PushMessage(WORKFLOWID, BSNO, nextGROUPID.ToString(),BILLNO);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
PassMessage(WORKFLOWID, BSNO, GROUPID, USERID);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
return _result;
|
|
|
}
|
|
|
|
|
|
static private Resultmb PushUsing(string WORKFLOWID, string BSNO, string USERID, string STEPNO, string GROUPID, Boolean islast, string BILLNO, string GID, string URL)
|
|
|
{//将操作记入WorkFlow_Using 如果该groupid的步骤都执行完毕,推进至下一阶段
|
|
|
var _result = new Resultmb();
|
|
|
var stepno = 0;
|
|
|
var strSql_0 = new StringBuilder();//如果using的stepno集合中包含stepno 则将其去除
|
|
|
var strSql = new StringBuilder();
|
|
|
var strSql_2 = new StringBuilder();
|
|
|
|
|
|
strSql_0.Append(" select (select stepno from workflow_using ");
|
|
|
strSql_0.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "') & power(2," + STEPNO + ") stepno ");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql_0.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
stepno = Convert.ToInt32(reader["stepno"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (stepno > 0)
|
|
|
{
|
|
|
|
|
|
//strSql.Append(" begin ");
|
|
|
strSql.Append(" update workflow_using set ");
|
|
|
strSql.Append(" stepno=stepno-power(2," + STEPNO + "),currentid=" + GROUPID + " ");
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "' ");
|
|
|
//strSql.Append(" end ");
|
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
{
|
|
|
|
|
|
//Database db = DatabaseFactory.CreateDatabase();
|
|
|
var _count = SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, strSql.ToString(), null);
|
|
|
|
|
|
if (_count <= 0)
|
|
|
{
|
|
|
_result.Success = false;
|
|
|
_result.Message = "推进工作流出错 ";
|
|
|
sqlTran.Rollback();
|
|
|
return _result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
sqlTran.Commit();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Database db3 = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
strSql_2.Append(" select stepno from workflow_using ");
|
|
|
strSql_2.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "' ");
|
|
|
using (IDataReader reader = db3.ExecuteReader(CommandType.Text, strSql_2.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
stepno = Convert.ToInt32(reader["stepno"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
{
|
|
|
if (_result.Success == true && stepno == 0)
|
|
|
{//如果本步骤全都执行完了
|
|
|
var nextGROUPID = GetNextGROUP(WORKFLOWID, STEPNO, GROUPID, USERID);
|
|
|
|
|
|
strSql = new StringBuilder();
|
|
|
strSql.Append(" update workflow_using set stepno=dbo.getnextstep('" + WORKFLOWID + "','" + BSNO + "'," + nextGROUPID + "),");
|
|
|
strSql.Append(" currentid=" + nextGROUPID);
|
|
|
if (islast)
|
|
|
{
|
|
|
strSql.Append(" ,finished=1 ");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" ,finished=0 ");
|
|
|
}
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" and bsno='" + BSNO + "' ");
|
|
|
//Database db = DatabaseFactory.CreateDatabase();
|
|
|
try
|
|
|
{
|
|
|
var _count = SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, strSql.ToString());
|
|
|
//db.ExecuteNonQuery(CommandType.Text, strSql.ToString());//CommandType.Text, , tran
|
|
|
sqlTran.Commit();
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
_result.Success = false;
|
|
|
_result.Message = "推进步骤组出错 " + ee.Message;
|
|
|
sqlTran.Rollback();
|
|
|
}
|
|
|
|
|
|
if (_result.Success == true)
|
|
|
{
|
|
|
if (islast)
|
|
|
{
|
|
|
RepeatMessage(WORKFLOWID, BSNO, nextGROUPID.ToString(), USERID, BILLNO, GID, URL);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
PushMessage(WORKFLOWID, BSNO, nextGROUPID.ToString(), BILLNO, GID, URL);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
PassMessage(WORKFLOWID, BSNO, GROUPID, USERID, BILLNO, GID, URL);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return _result;
|
|
|
}
|
|
|
|
|
|
static private Resultmb PushUsing(string WORKFLOWID, string BSNO, string USERID, string STEPNO, string GROUPID
|
|
|
, Boolean islast, DbTransaction tran,string BILLNO)
|
|
|
{//将操作记入WorkFlow_Using 如果该groupid的步骤都执行完毕,推进至下一阶段
|
|
|
var _result = new Resultmb();
|
|
|
var stepno = 0;
|
|
|
var strSql_0 = new StringBuilder();//如果using的stepno集合中包含stepno 则将其去除
|
|
|
var strSql = new StringBuilder();
|
|
|
var strSql_2 = new StringBuilder();
|
|
|
|
|
|
strSql_0.Append(" select (select stepno from workflow_using ");
|
|
|
strSql_0.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "') & power(2," + STEPNO + ") stepno ");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(tran, CommandType.Text, strSql_0.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
stepno = Convert.ToInt32(reader["stepno"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
if (stepno > 0)
|
|
|
{
|
|
|
|
|
|
//strSql.Append(" begin ");
|
|
|
strSql.Append(" update workflow_using set ");
|
|
|
strSql.Append(" stepno=stepno-power(2," + STEPNO + "),currentid=" + GROUPID + " ");
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "' ");
|
|
|
//strSql.Append(" end ");
|
|
|
|
|
|
//using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
//{
|
|
|
|
|
|
Database db2 = DatabaseFactory.CreateDatabase();
|
|
|
//db.ExecuteNonQuery(cmdupdate, tran)
|
|
|
var _count = db2.ExecuteNonQuery(tran, CommandType.Text, strSql.ToString());
|
|
|
//SqlHelper.ExecuteNonQuery(tran, CommandType.Text, strSql.ToString(), null);
|
|
|
|
|
|
if (_count <= 0)
|
|
|
{
|
|
|
_result.Success = false;
|
|
|
_result.Message = "推进工作流出错 ";
|
|
|
//sqlTran.Rollback();
|
|
|
return _result;
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//sqlTran.Commit();
|
|
|
}
|
|
|
//}
|
|
|
}
|
|
|
|
|
|
Database db3 = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
strSql_2.Append(" select stepno from workflow_using ");
|
|
|
strSql_2.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "' ");
|
|
|
using (IDataReader reader = db3.ExecuteReader(tran, CommandType.Text, strSql_2.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
stepno = Convert.ToInt32(reader["stepno"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
|
|
|
//using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
{
|
|
|
if (_result.Success == true && stepno == 0)
|
|
|
{//如果本步骤全都执行完了
|
|
|
var nextGROUPID = GetNextGROUP(WORKFLOWID, STEPNO, GROUPID, USERID);
|
|
|
|
|
|
strSql = new StringBuilder();
|
|
|
strSql.Append(" update workflow_using set stepno=dbo.getnextstep('" + WORKFLOWID + "','" + BSNO + "'," + nextGROUPID + "),");
|
|
|
strSql.Append(" currentid=" + nextGROUPID);
|
|
|
if (islast)
|
|
|
{
|
|
|
strSql.Append(" ,finished=1 ");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" ,finished=0 ");
|
|
|
}
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" and bsno='" + BSNO + "' ");
|
|
|
//Database db = DatabaseFactory.CreateDatabase();
|
|
|
try
|
|
|
{
|
|
|
Database db4 = DatabaseFactory.CreateDatabase();
|
|
|
var _count = db4.ExecuteNonQuery(tran, CommandType.Text, strSql.ToString());
|
|
|
//SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, strSql.ToString());
|
|
|
//db.ExecuteNonQuery(CommandType.Text, strSql.ToString());//CommandType.Text, , tran
|
|
|
//sqlTran.Commit();
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
_result.Success = false;
|
|
|
_result.Message = "推进步骤组出错 " + ee.Message;
|
|
|
//sqlTran.Rollback();
|
|
|
}
|
|
|
|
|
|
//var message=new SYSMessagemb();
|
|
|
//message.NAME=WORKFLOWID;
|
|
|
PushMessage(WORKFLOWID, BSNO, nextGROUPID.ToString(),BILLNO);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
PassMessage(WORKFLOWID, BSNO, GROUPID, USERID);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
return _result;
|
|
|
}
|
|
|
static private Resultmb PushUsing(string WORKFLOWID, string BSNO, string USERID, string STEPNO, string GROUPID
|
|
|
, Boolean islast, DbTransaction tran, string BILLNO, string GID, string URL)
|
|
|
{//将操作记入WorkFlow_Using 如果该groupid的步骤都执行完毕,推进至下一阶段
|
|
|
var _result = new Resultmb();
|
|
|
var stepno = 0;
|
|
|
var strSql_0 = new StringBuilder();//如果using的stepno集合中包含stepno 则将其去除
|
|
|
var strSql = new StringBuilder();
|
|
|
var strSql_2 = new StringBuilder();
|
|
|
|
|
|
strSql_0.Append(" select (select stepno from workflow_using ");
|
|
|
strSql_0.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "') & power(2," + STEPNO + ") stepno ");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(tran, CommandType.Text, strSql_0.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
stepno = Convert.ToInt32(reader["stepno"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
if (stepno > 0)
|
|
|
{
|
|
|
|
|
|
//strSql.Append(" begin ");
|
|
|
strSql.Append(" update workflow_using set ");
|
|
|
strSql.Append(" stepno=stepno-power(2," + STEPNO + "),currentid=" + GROUPID + " ");
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "' ");
|
|
|
//strSql.Append(" end ");
|
|
|
|
|
|
//using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
//{
|
|
|
|
|
|
Database db2 = DatabaseFactory.CreateDatabase();
|
|
|
//db.ExecuteNonQuery(cmdupdate, tran)
|
|
|
var _count = db2.ExecuteNonQuery(tran, CommandType.Text, strSql.ToString());
|
|
|
//SqlHelper.ExecuteNonQuery(tran, CommandType.Text, strSql.ToString(), null);
|
|
|
|
|
|
if (_count <= 0)
|
|
|
{
|
|
|
_result.Success = false;
|
|
|
_result.Message = "推进工作流出错 ";
|
|
|
//sqlTran.Rollback();
|
|
|
return _result;
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//sqlTran.Commit();
|
|
|
}
|
|
|
//}
|
|
|
}
|
|
|
|
|
|
Database db3 = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
strSql_2.Append(" select stepno from workflow_using ");
|
|
|
strSql_2.Append(" where WORKFLOWID='" + WORKFLOWID + "' and bsno='" + BSNO + "' ");
|
|
|
using (IDataReader reader = db3.ExecuteReader(tran, CommandType.Text, strSql_2.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
stepno = Convert.ToInt32(reader["stepno"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
|
|
|
//using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
{
|
|
|
if (_result.Success == true && stepno == 0)
|
|
|
{//如果本步骤全都执行完了
|
|
|
var nextGROUPID = GetNextGROUP(WORKFLOWID, STEPNO, GROUPID, USERID, tran);
|
|
|
|
|
|
strSql = new StringBuilder();
|
|
|
strSql.Append(" update workflow_using set stepno=dbo.getnextstep('" + WORKFLOWID + "','" + BSNO + "'," + nextGROUPID + "),");
|
|
|
strSql.Append(" currentid=" + nextGROUPID);
|
|
|
if (islast)
|
|
|
{
|
|
|
strSql.Append(" ,finished=1 ");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" ,finished=0 ");
|
|
|
}
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" and bsno='" + BSNO + "' ");
|
|
|
//Database db = DatabaseFactory.CreateDatabase();
|
|
|
try
|
|
|
{
|
|
|
Database db4 = DatabaseFactory.CreateDatabase();
|
|
|
var _count = db4.ExecuteNonQuery(tran, CommandType.Text, strSql.ToString());
|
|
|
//SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, strSql.ToString());
|
|
|
//db.ExecuteNonQuery(CommandType.Text, strSql.ToString());//CommandType.Text, , tran
|
|
|
//sqlTran.Commit();
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
_result.Success = false;
|
|
|
_result.Message = "推进步骤组出错 " + ee.Message;
|
|
|
//sqlTran.Rollback();
|
|
|
}
|
|
|
|
|
|
//var message=new SYSMessagemb();
|
|
|
//message.NAME=WORKFLOWID;
|
|
|
PushMessage(WORKFLOWID, BSNO, nextGROUPID.ToString(), BILLNO, GID, URL, tran);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
PassMessage(WORKFLOWID, BSNO, GROUPID, USERID, BILLNO, GID, URL);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
return _result;
|
|
|
}
|
|
|
|
|
|
static private int GetNextGROUP(string WORKFLOWID, string STEPNO, string GROUPID, string USERID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
var Ns = 0;
|
|
|
strSql.Append(" select isnull((case nextgroup when '' then 0 else nextgroup end),0) as nextgroup from workflow_step ");
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" and groupid=" + GROUPID + " and stepno=" + STEPNO + " and auditor='" + USERID + "' ");
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
Ns = Convert.ToInt32(reader["nextgroup"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return Ns;
|
|
|
}
|
|
|
static private int GetNextGROUP(string WORKFLOWID, string STEPNO, string GROUPID, string USERID, DbTransaction tran)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
var Ns = 0;
|
|
|
strSql.Append(" select isnull((case nextgroup when '' then 0 else nextgroup end),0) as nextgroup from workflow_step ");
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" and groupid=" + GROUPID + " and stepno=" + STEPNO + " and auditor='" + USERID + "' ");
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(tran, CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
Ns = Convert.ToInt32(reader["nextgroup"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return Ns;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region [更改工作流]添加、修改和删除workflow_step时,对现有workflow_using做相应操作
|
|
|
|
|
|
#region 查询是否能够修改using和是否能够修改step
|
|
|
static public CanChangemb GetCanChange(string GID)//参数为workflow_step的GID
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @STEPNO int ");
|
|
|
strSql.Append(" declare @WORKFLOWID varchar(50) ");
|
|
|
strSql.Append(" declare @USERID varchar(50) declare @UsingCount int declare @StepCount int");
|
|
|
strSql.Append(" declare @GROUPID varchar(50) declare @changeusing bit declare @changeStep bit ");
|
|
|
strSql.Append(" set @STEPNO=(select STEPNO from workflow_step where gid='" + GID + "') ");
|
|
|
strSql.Append(" set @WORKFLOWID=(select WORKFLOWID from workflow_step where gid='" + GID + "') ");
|
|
|
strSql.Append(" set @USERID=(select auditor from workflow_step where gid='" + GID + "') ");
|
|
|
strSql.Append(" set @GROUPID=(select GROUPID from workflow_step where gid='" + GID + "') ");
|
|
|
strSql.Append(" set @USingCount=(select count(*) [count] from workflow_using ");
|
|
|
strSql.Append(" where workflowid=@WORKFLOWID and STEPNO=power(2,@STEPNO) ) ");
|
|
|
strSql.Append(" set @StepCount=(select count(*) [count] from workflow_step ");
|
|
|
strSql.Append(" where workflowid=@WORKFLOWID and STEPNO=power(2,@STEPNO) and auditor<>@USERID )");
|
|
|
strSql.Append(" if @USingCount>0 begin ");
|
|
|
strSql.Append(" set @changeusing=0 ");
|
|
|
strSql.Append(" set @changeStep=0 ");
|
|
|
strSql.Append(" end else if @StepCount>0 ");
|
|
|
strSql.Append(" begin ");
|
|
|
strSql.Append(" set @changeusing=0 ");
|
|
|
strSql.Append(" set @changeStep=1 ");
|
|
|
strSql.Append(" END else ");
|
|
|
strSql.Append(" begin ");
|
|
|
strSql.Append(" set @changeusing=1 ");
|
|
|
strSql.Append(" set @changeStep=1");
|
|
|
strSql.Append(" end ");
|
|
|
strSql.Append(" select @changeusing changeusing,@changeStep changeStep ");
|
|
|
return SetCanChange(strSql.ToString());
|
|
|
}
|
|
|
static private CanChangemb SetCanChange(string strSql)//参数为workflow_step的GID
|
|
|
{
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
var bodyList = new List<CanChangemb>();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
CanChangemb data = new CanChangemb();
|
|
|
#region Set DB data to Object
|
|
|
var ChangeStep = Convert.ToString(reader["ChangeStep"]);
|
|
|
var ChangeUsing = Convert.ToString(reader["ChangeUsing"]);
|
|
|
if (ChangeStep == "True")
|
|
|
{
|
|
|
data.ChangeStep = true;
|
|
|
}
|
|
|
else data.ChangeStep = false;
|
|
|
if (ChangeUsing == "True")
|
|
|
{
|
|
|
data.ChangeUsing = true;
|
|
|
}
|
|
|
else data.ChangeUsing = false;
|
|
|
//data.ChangeStep = Convert.ToBoolean(reader["ChangeStep"]);
|
|
|
//data.ChangeUsing = Convert.ToBoolean(reader["ChangeUsing"]);
|
|
|
#endregion
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return bodyList[0];
|
|
|
}
|
|
|
#endregion
|
|
|
#region 增加workflow_step
|
|
|
static public Resultmb InsertStep(string WORKFLOWID, string USERID, string STEPNO, string GROUPID)
|
|
|
{
|
|
|
//workflowid,groupid相同的workflow_using数据列,合并新的stepno进入workflow_using.stepno
|
|
|
//类似驳回操作
|
|
|
var _result = new Resultmb();
|
|
|
var strSql = new StringBuilder();//如果using的stepno集合中包含stepno 则将其去除
|
|
|
strSql.Append(" if ((select count(*) from workflow_step ");//但如果有同步骤号的其他权限,则不改变当前状态
|
|
|
strSql.Append(" where WORKFLOWID='" + WORKFLOWID + "' and STEPNO ='" + STEPNO + "' and auditor<>'" + USERID + "' )=0) begin ");
|
|
|
strSql.Append(" update workflow_using set ");
|
|
|
strSql.Append(" stepno=stepno|power(2," + STEPNO + "),currentid='" + GROUPID + "' ");
|
|
|
strSql.Append(" where bsno in (select bsno from workflow_using where workflowid='"
|
|
|
+ WORKFLOWID + "' and currentid='" + GROUPID + "') and (stepno & power(2," + STEPNO + ")=0) ");
|
|
|
strSql.Append(" end ");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
try
|
|
|
{
|
|
|
var _count = db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
_result.Success = false;
|
|
|
_result.Message = "插入新步骤出错 " + ee.Message;
|
|
|
}
|
|
|
|
|
|
return _result;
|
|
|
}
|
|
|
#endregion
|
|
|
#region 删除workflow_step
|
|
|
static public Resultmb DelStep(string GID)//(string WORKFLOWID, string USERID, string STEPNO, string GROUPID)
|
|
|
{//删除工作步骤 类似推进工作流
|
|
|
var result = new Resultmb();
|
|
|
var _CanChange = GetCanChange(GID);
|
|
|
var strSql = new StringBuilder();
|
|
|
if (_CanChange.ChangeStep == false)
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = "不能修改,还有业务等待此步骤审核,请将这些业务审核通过或完全撤回后再修改";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//首先删除workflow_step 用此结果设定返回值
|
|
|
strSql.Append(" delete from workflow_step where gid='" + GID + "' ");
|
|
|
|
|
|
//根据情况判断是否修改using表
|
|
|
if (_CanChange.ChangeUsing == true)
|
|
|
{
|
|
|
strSql.Append(" declare @STEPNO varchar ");
|
|
|
strSql.Append(" declare @WORKFLOWID varchar ");
|
|
|
strSql.Append(" declare @USERID varchar ");
|
|
|
strSql.Append(" declare @GROUPID varchar ");
|
|
|
strSql.Append(" set @STEPNO=select STEPNO from workflow_step where gid='" + GID + "' ");
|
|
|
strSql.Append(" set @WORKFLOWID=select WORKFLOWID from workflow_step where gid='" + GID + "' ");
|
|
|
strSql.Append(" set @USERID=select auditor from workflow_step where gid='" + GID + "' ");
|
|
|
strSql.Append(" set @GROUPID=select GROUPID from workflow_step where gid='" + GID + "' ");
|
|
|
strSql.Append(" update workflow_using set ");
|
|
|
strSql.Append(" stepno=stepno-power(2,@STEPNO),currentid=@GROUPID ");
|
|
|
strSql.Append(" where workflowid=@WORKFLOWID ");
|
|
|
strSql.Append(" and currentid=@GROUPID ");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
try
|
|
|
{
|
|
|
var _count = db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
result.Success = true;
|
|
|
result.totalCount = _count;
|
|
|
result.Message = "";
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = "插入新步骤出错 " + ee.Message;
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 查询是否能够修改workflow_userPath
|
|
|
static public Boolean GetCanChange_UserPath(string USERID, string TYPENO, string NewWorkFlowID)//参数为workflow_step的GID
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
strSql.Append(" declare @USERID varchar(50) ");
|
|
|
strSql.Append(" declare @TYPE int ");
|
|
|
strSql.Append(" ,@NewWorkFlowID varchar(50) ");
|
|
|
strSql.Append(" set @USERID='" + USERID + "' ");
|
|
|
strSql.Append(" if (select count(*) from workflow_userpath where USERID=@USERID and WORKFLOWTYPENO='" + TYPENO + "')=0 ");
|
|
|
strSql.Append(" BEGIN ");
|
|
|
strSql.Append(" if (select count(*) from workflow where type='" + TYPENO + "' and ISdefault=1)=0 begin select 1 CanEdit ");
|
|
|
strSql.Append(" end else if (select count(*) from workflow_using where OP='" + USERID + "' ");
|
|
|
strSql.Append(" and workflowid in(select WorkflowID from workflow_userPath where USERID=@USERID and WORKFLOWTYPENO='" + TYPENO + "') and finished=0)>0 ");
|
|
|
strSql.Append(" begin select 0 CanEdit end else begin select 1 CanEdit end ");
|
|
|
strSql.Append(" END else BEGIN ");
|
|
|
strSql.Append(" if (select count(*) from workflow_using where OP='" + USERID + "' ");
|
|
|
strSql.Append(" and workflowid in(select WorkflowID from workflow_userPath where USERID=@USERID and WORKFLOWTYPENO='" + TYPENO + "') and finished=0)>0 ");
|
|
|
strSql.Append(" begin select 0 CanEdit end else begin select 1 CanEdit end END ");
|
|
|
|
|
|
return SetCanChange_UserPath(strSql.ToString());
|
|
|
}
|
|
|
static private Boolean SetCanChange_UserPath(string strSql)//参数为workflow_step的GID
|
|
|
{
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
var bodyList = new List<CanChangemb>();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
CanChangemb data = new CanChangemb();
|
|
|
#region Set DB data to Object
|
|
|
//var ChangeStep = Convert.ToString(reader["ChangeStep"]);
|
|
|
var ChangeUsing = Convert.ToString(reader["CanEdit"]);
|
|
|
/*if (ChangeStep == "True")
|
|
|
{
|
|
|
data.ChangeStep = true;
|
|
|
}
|
|
|
else data.ChangeStep = false;*/
|
|
|
if (ChangeUsing == "1")
|
|
|
{
|
|
|
data.ChangeUsing = true;
|
|
|
}
|
|
|
else data.ChangeUsing = false;
|
|
|
//data.ChangeStep = Convert.ToBoolean(reader["ChangeStep"]);
|
|
|
//data.ChangeUsing = Convert.ToBoolean(reader["ChangeUsing"]);
|
|
|
#endregion
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return bodyList[0].ChangeUsing;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region [操作工作流]工作流驳回 如果驳回后回到最初状态,则清空这个BSNO的workflow_using数据
|
|
|
|
|
|
static public Resultmb DeleteWorkFlowDo(string WORKFLOWNAME, string BSNO, string USERID, string Reason)
|
|
|
{
|
|
|
//20150304 首先判断是否有权限进行驳回
|
|
|
//判断依据为workflow_do里面存在未删除的记录 其 workflowid billno(bsno)与当前值相同 ,stepno 和groupid与该用户有交集
|
|
|
//或此userid对此workflowid有允许自动通过的权限
|
|
|
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (DbConnection connection = db.CreateConnection())
|
|
|
{
|
|
|
connection.Open();
|
|
|
try
|
|
|
{
|
|
|
var _sql = " select * from workflow_do where (ISDELETE IS NULL OR ISDELETE=0) and ";
|
|
|
_sql = _sql + " Billno='" + BSNO + "' and workflowid=[dbo].[GetWorkFlowID]('" + WORKFLOWNAME + "','" + USERID + "') and ";
|
|
|
_sql = _sql + " Auditor='" + USERID + "' ";
|
|
|
_sql = _sql + " union all select gid,'','','','','','','','','','','','','','','','','','','' ";
|
|
|
_sql = _sql + " from workflow_step where WORKFLOWID=[dbo].[GetWorkFlowID]('" + WORKFLOWNAME + "','" + USERID + "') ";
|
|
|
_sql = _sql + " and auditor='" + USERID + "' and GROUPID='0' ";
|
|
|
//20150319 增加逻辑
|
|
|
//曾经自动审核通过的业务,在自动审核完成后业务流程发生了改变,改为人工审核。
|
|
|
//这时不再有“具有自动审核权限”的人,同时由于自动通过,也没有审核记录,因此按原逻辑是无法驳回的
|
|
|
//增加逻辑是:此业务已完结,而且此人在此工作流中具有审核权限,则有查询结果,即允许驳回。
|
|
|
_sql = _sql + " union all select s.gid,'','','','','','','','','','','','','','','','','','','' ";
|
|
|
_sql = _sql + " from workflow_step S left join workflow_using U on s.WORKFLOWID=u.WORKFLOWID and u.bsno='" + BSNO + "' and U.finished=1";
|
|
|
_sql = _sql + " where s.WORKFLOWID=[dbo].[GetWorkFlowID]('" + WORKFLOWNAME + "','" + USERID + "') ";
|
|
|
_sql = _sql + " and auditor='" + USERID + "' ";
|
|
|
var objcount = db.ExecuteScalar(CommandType.Text, _sql);
|
|
|
var _count = Convert.ToString(objcount);
|
|
|
if (string.IsNullOrEmpty(_count))
|
|
|
{
|
|
|
var _Result = new Resultmb();
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = "该用户没有权限驳回此业务";
|
|
|
return _Result;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception exception)
|
|
|
{
|
|
|
var _Result = new Resultmb();
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = "查询workflow_do出错:" + exception.Message;
|
|
|
return _Result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
var workflowID = GetBSNOWorkFlowID(WORKFLOWNAME, BSNO)[0].GID;
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50),@GROUPID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID='" + workflowID + "' ");
|
|
|
//strSql.Append(" delete from workflow_do where workflowid=@WorkFlowID and auditor='" + USERID + "' and billno='" + BSNO + "'");
|
|
|
strSql.Append(" update workflow_do set isdelete=1, deletestep=stepno, audittime=dbo.trimtime(getdate()),auditor='" + USERID + "'");
|
|
|
strSql.Append(" where workflowid=@WorkFlowID and billno='" + BSNO + "' and isdelete is null");
|
|
|
|
|
|
strSql.Append(" insert into workflow_do (GID,workflowid,stepid,billno,auditor,audittime,isdelete,deletestep,BSNO,FEEID,FEESTATUS,DOQUERYSQL,STEPNO,ISFINISH,DELETEOPERATOR,DELETESTEPNO,OPERATOR,ISALLFINISH,APPLICANT,GROUPID) ");
|
|
|
strSql.Append(" select newid(),workflowid,gid,'" + BSNO + "',auditor,getdate(),1,stepno,'','','','','',0,'','','',0,'','' ");
|
|
|
strSql.Append(" from workflow_step where workflowid=@WorkFlowID and groupid=dbo.getmingroupid_2('" + workflowID + "','" + USERID + "') ");
|
|
|
strSql.Append(" and auditor='" + USERID + "'");
|
|
|
strSql.Append(" delete from workflow_using where workflowid='" + workflowID + "' and bsno='" + BSNO + "' ");
|
|
|
//strSql.Append(" set @GROUPID=dbo.GetMinGroupID_2('" + workflowID + "','" + USERID + "') ");
|
|
|
//strSql.Append(" update workflow_using set stepno=dbo.GetNextStep('" + workflowID + "','"+BSNO +"',@GROUPID),currentid=0, ");
|
|
|
//strSql.Append(" reject_time=getdate(),reason=isnull(reason,'')+'" + Reason + "'+';',finished=0 ");
|
|
|
//strSql.Append(" where workflowid=@WorkFlowID and bsno='" + BSNO + "' ");
|
|
|
|
|
|
//RefuseMessage(workflowID, BSNO, USERID, Reason);
|
|
|
//return DoDeleteWorkFlowDo(strSql.ToString());
|
|
|
|
|
|
var _r = DoDeleteWorkFlowDo(strSql.ToString());
|
|
|
if (_r.Success == true)
|
|
|
{
|
|
|
RefuseMessage(workflowID, BSNO, USERID, Reason);
|
|
|
}
|
|
|
|
|
|
return _r;
|
|
|
}
|
|
|
|
|
|
static public Resultmb DeleteWorkFlowDo(string WORKFLOWNAME, string BSNO, string USERID, string Reason, string BILLNO, string GID, string URL, string WORKFLOWID = "")
|
|
|
{
|
|
|
//20150304 首先判断是否有权限进行驳回
|
|
|
//判断依据为workflow_do里面存在未删除的记录 其 workflowid billno(bsno)与当前值相同 ,stepno 和groupid与该用户有交集
|
|
|
//或此userid对此workflowid有允许自动通过的权限
|
|
|
if (WORKFLOWID == "" || WORKFLOWID == "no")
|
|
|
WORKFLOWID = GetBSNOWorkFlowID(WORKFLOWNAME, BSNO)[0].GID;
|
|
|
if (WORKFLOWID == "")
|
|
|
{
|
|
|
var _Result = new Resultmb();
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = "";
|
|
|
return _Result;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (DbConnection connection = db.CreateConnection())
|
|
|
{
|
|
|
connection.Open();
|
|
|
try
|
|
|
{
|
|
|
|
|
|
if (WORKFLOWID != "no" && WORKFLOWID != "")
|
|
|
{
|
|
|
var _sql = " select * from workflow_do where (ISDELETE IS NULL OR ISDELETE=0) and ";
|
|
|
|
|
|
_sql = _sql + " Billno='" + BSNO + "' and workflowid='" + WORKFLOWID + "'and ";
|
|
|
_sql = _sql + " Auditor='" + USERID + "' ";
|
|
|
|
|
|
_sql = _sql + " union all select gid,'','','','','','','','','','','','','','','','','','','' ";
|
|
|
_sql = _sql + " from workflow_step where WORKFLOWID='" + WORKFLOWID + "' ";
|
|
|
_sql = _sql + " and auditor='" + USERID + "' and GROUPID='0' ";
|
|
|
|
|
|
//20150319 增加逻辑
|
|
|
//曾经自动审核通过的业务,在自动审核完成后业务流程发生了改变,改为人工审核。
|
|
|
//这时不再有“具有自动审核权限”的人,同时由于自动通过,也没有审核记录,因此按原逻辑是无法驳回的
|
|
|
//增加逻辑是:此业务已完结,而且此人在此工作流中具有审核权限,则有查询结果,即允许驳回。
|
|
|
_sql = _sql + " union all select s.gid,'','','','','','','','','','','','','','','','','','','' ";
|
|
|
_sql = _sql + " from workflow_step S left join workflow_using U on s.WORKFLOWID=u.WORKFLOWID and u.bsno='" + BSNO + "' and U.finished=1";
|
|
|
_sql = _sql + " where s.WORKFLOWID='" + WORKFLOWID + "' ";
|
|
|
_sql = _sql + " and auditor='" + USERID + "' ";
|
|
|
var objcount = db.ExecuteScalar(CommandType.Text, _sql);
|
|
|
var _count = Convert.ToString(objcount);
|
|
|
if (string.IsNullOrEmpty(_count))
|
|
|
{
|
|
|
var _Result = new Resultmb();
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = "该用户没有权限驳回此业务";
|
|
|
return _Result;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var _sql = " select * from workflow_do where (ISDELETE IS NULL OR ISDELETE=0) and ";
|
|
|
_sql = _sql + " Billno='" + BSNO + "' and workflowid=[dbo].[GetWorkFlowID]('" + WORKFLOWNAME + "','" + USERID + "') and ";
|
|
|
_sql = _sql + " Auditor='" + USERID + "' ";
|
|
|
_sql = _sql + " union all select gid,'','','','','','','','','','','','','','','','','','','' ";
|
|
|
_sql = _sql + " from workflow_step where WORKFLOWID=[dbo].[GetWorkFlowID]('" + WORKFLOWNAME + "','" + USERID + "') ";
|
|
|
_sql = _sql + " and auditor='" + USERID + "' and GROUPID='0' ";//20170802hxt 20200629dy
|
|
|
//20150319 增加逻辑
|
|
|
//曾经自动审核通过的业务,在自动审核完成后业务流程发生了改变,改为人工审核。
|
|
|
//这时不再有“具有自动审核权限”的人,同时由于自动通过,也没有审核记录,因此按原逻辑是无法驳回的
|
|
|
//增加逻辑是:此业务已完结,而且此人在此工作流中具有审核权限,则有查询结果,即允许驳回。
|
|
|
_sql = _sql + " union all select s.gid,'','','','','','','','','','','','','','','','','','','' ";
|
|
|
_sql = _sql + " from workflow_step S left join workflow_using U on s.WORKFLOWID=u.WORKFLOWID and u.bsno='" + BSNO + "' and U.finished=1";
|
|
|
_sql = _sql + " where s.WORKFLOWID=[dbo].[GetWorkFlowID]('" + WORKFLOWNAME + "','" + USERID + "') ";
|
|
|
_sql = _sql + " and auditor='" + USERID + "' ";
|
|
|
var objcount = db.ExecuteScalar(CommandType.Text, _sql);
|
|
|
var _count = Convert.ToString(objcount);
|
|
|
if (string.IsNullOrEmpty(_count))
|
|
|
{
|
|
|
var _Result = new Resultmb();
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = "该用户没有权限驳回此业务";
|
|
|
return _Result;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception exception)
|
|
|
{
|
|
|
var _Result = new Resultmb();
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = "查询workflow_do出错:" + exception.Message;
|
|
|
return _Result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
var workflowID = WORKFLOWID;
|
|
|
if (workflowID == "no" || WORKFLOWID == "") workflowID = GetBSNOWorkFlowID(WORKFLOWNAME, BSNO)[0].GID;
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50),@GROUPID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID='" + workflowID + "' ");
|
|
|
//strSql.Append(" delete from workflow_do where workflowid=@WorkFlowID and auditor='" + USERID + "' and billno='" + BSNO + "'");
|
|
|
strSql.Append(" update workflow_do set isdelete=1, deletestep=stepno, audittime=dbo.trimtime(getdate()),auditor='" + USERID + "'");
|
|
|
strSql.Append(" where workflowid=@WorkFlowID and billno='" + BSNO + "' and isdelete is null");
|
|
|
|
|
|
strSql.Append(" insert into workflow_do (GID,workflowid,stepid,billno,auditor,audittime,isdelete,deletestep,BSNO,FEEID,FEESTATUS,DOQUERYSQL,STEPNO,ISFINISH,DELETEOPERATOR,DELETESTEPNO,OPERATOR,ISALLFINISH,APPLICANT,GROUPID) ");
|
|
|
strSql.Append(" select newid(),workflowid,gid,'" + BSNO + "',auditor,getdate(),1,stepno,'','','','','',0,'','','',0,'','' ");
|
|
|
strSql.Append(" from workflow_step where workflowid=@WorkFlowID and groupid=dbo.getmingroupid_2('" + workflowID + "','" + USERID + "') ");
|
|
|
strSql.Append(" and auditor='" + USERID + "'");
|
|
|
strSql.Append(" delete from workflow_using where workflowid='" + workflowID + "' and bsno='" + BSNO + "' ");
|
|
|
|
|
|
//strSql.Append(" set @GROUPID=dbo.GetMinGroupID_2('" + workflowID + "','" + USERID + "') ");
|
|
|
//strSql.Append(" update workflow_using set stepno=dbo.GetNextStep('" + workflowID + "','" + BSNO + "',@GROUPID),currentid=0, ");
|
|
|
//strSql.Append(" reject_time=getdate(),reason=isnull(reason,'')+'" + Reason + "'+';',finished=0 ");
|
|
|
//strSql.Append(" where workflowid=@WorkFlowID and bsno='" + BSNO + "' ");
|
|
|
|
|
|
var _r = DoDeleteWorkFlowDo(strSql.ToString());
|
|
|
if (_r.Success == true)
|
|
|
{
|
|
|
RefuseMessage(workflowID, BSNO, USERID, Reason, BILLNO, GID, URL);
|
|
|
}
|
|
|
|
|
|
return _r;
|
|
|
}
|
|
|
|
|
|
private static Resultmb DoDeleteWorkFlowDo(string strSql)
|
|
|
{
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
var tran = conn.BeginTransaction();
|
|
|
|
|
|
var result = new Resultmb();
|
|
|
try
|
|
|
{
|
|
|
db.ExecuteNonQuery(CommandType.Text, strSql);
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = "撤销workflow_do工作流日志 " + ee.Message;
|
|
|
tran.Rollback();
|
|
|
}
|
|
|
|
|
|
if (result.Success == true)
|
|
|
{
|
|
|
tran.Commit();
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 判断工作流权限是否为最终
|
|
|
/*
|
|
|
public static int GetWorkFlowFinal(string WorkFlowName, string DEPTGID, string USERID)
|
|
|
{//
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
strSql.Append(" select count(*) [Count] from workflow_step ");
|
|
|
strSql.Append(" where workflowid=dbo.getworkflowid('" + WorkFlowName + "','" + DEPTGID + "') ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and islast=1 ");
|
|
|
|
|
|
return SetWorkFlowFinal(strSql);
|
|
|
}*/
|
|
|
|
|
|
public static Boolean GetAutoFinish(string WORKFLOWID, string USERID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select count(*) count from workflow_step where ");
|
|
|
strSql.Append(" (workflowid='" + WORKFLOWID + "' and groupid=0) ");
|
|
|
//有人在步骤组0有权驳回 存在步骤组0的人步骤,该工作流可视为提交即自动通过
|
|
|
|
|
|
//或者
|
|
|
////自己有权在第一步审核通过
|
|
|
//strSql.Append(" or ( workflowid='" + WORKFLOWID + "' and groupid=1 and auditor='" + USERID + "' and islast=1)");
|
|
|
if (SetWorkFlowFinal(strSql) == 0)
|
|
|
{ return false; }
|
|
|
else { return true; }//允许自动审核通过
|
|
|
}
|
|
|
|
|
|
|
|
|
public static Boolean GetWorkFlowFinal_BSNO(string WORKFLOWID, string GROUPID, string BSNO, string USERID)
|
|
|
{
|
|
|
//20170117 改成在当前步骤组内该用户是否具备最终审核权限
|
|
|
//var WORKFLOWID = GetBSNOWorkFlowID(WorkFlowName, BSNO)[0].GID;
|
|
|
//var GROUPIDList = GetBSNOGROUPID(WORKFLOWID, BSNO);
|
|
|
//if (GROUPIDList.Count == 0)
|
|
|
//{
|
|
|
// return false;
|
|
|
//}
|
|
|
//var GROUPID = GetBSNOGROUPID(WORKFLOWID, BSNO)[0].GROUPID;
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @LASTCOUNT int ");
|
|
|
strSql.Append(" set @LASTCOUNT=( select count(*) [Count] from workflow_step ");
|
|
|
strSql.Append(" where workflowid ='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and groupid='" + GROUPID + "' and islast=1 )");
|
|
|
//strSql.Append(" if (@LASTCOUNT=0) begin");
|
|
|
//strSql.Append(" set @LASTCOUNT=( select count(*) [Count] from workflow_step ");
|
|
|
//strSql.Append(" where workflowid =(select dbo.GetBSNOWorkflowid('" + WorkFlowName + "','" + BSNO + "'))) ");
|
|
|
//strSql.Append(" if (@LASTCOUNT=0) begin select 1 [count] end else begin select 0 [count] end ");
|
|
|
//strSql.Append(" end else begin select @LASTCOUNT [Count] end");
|
|
|
strSql.Append(" select @LASTCOUNT as Count ");
|
|
|
//if (SetWorkFlowFinal(strSql) > 1)
|
|
|
if (SetWorkFlowFinal(strSql) > 0)
|
|
|
{ return true; }
|
|
|
else { return false; }
|
|
|
}
|
|
|
public static Boolean GetWorkFlowFinal_BSNO(string WORKFLOWID, string GROUPID, string BSNO, string USERID, DbTransaction tran)
|
|
|
{
|
|
|
//20170117 改成在当前步骤组内该用户是否具备最终审核权限
|
|
|
//var WORKFLOWID = GetBSNOWorkFlowID(WorkFlowName, BSNO)[0].GID;
|
|
|
//var GROUPIDList = GetBSNOGROUPID(WORKFLOWID, BSNO, tran);
|
|
|
//if (GROUPIDList.Count == 0)
|
|
|
//{
|
|
|
// return false;
|
|
|
//}
|
|
|
//var GROUPID = GetBSNOGROUPID(WORKFLOWID, BSNO, tran)[0].GROUPID;
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @LASTCOUNT int ");
|
|
|
strSql.Append(" set @LASTCOUNT=( select count(*) [Count] from workflow_step ");
|
|
|
strSql.Append(" where workflowid ='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and groupid='" + GROUPID + "' and islast=1 )");
|
|
|
//strSql.Append(" if (@LASTCOUNT=0) begin");
|
|
|
//strSql.Append(" set @LASTCOUNT=( select count(*) [Count] from workflow_step ");
|
|
|
//strSql.Append(" where workflowid =(select dbo.GetBSNOWorkflowid('" + WorkFlowName + "','" + BSNO + "'))) ");
|
|
|
//strSql.Append(" if (@LASTCOUNT=0) begin select 1 [count] end else begin select 0 [count] end ");
|
|
|
//strSql.Append(" end else begin select @LASTCOUNT [Count] end");
|
|
|
strSql.Append(" select @LASTCOUNT as Count ");
|
|
|
//if (SetWorkFlowFinal(strSql) > 1)
|
|
|
if (SetWorkFlowFinal(strSql) > 0)
|
|
|
{ return true; }
|
|
|
else { return false; }
|
|
|
}
|
|
|
|
|
|
|
|
|
public static Boolean GetWorkFlowFinal_BSNO(string WorkFlowName, string BSNO, string USERID)
|
|
|
{
|
|
|
//20170117 改成在当前步骤组内该用户是否具备最终审核权限
|
|
|
var WORKFLOWID = GetBSNOWorkFlowID(WorkFlowName, BSNO)[0].GID;
|
|
|
var GROUPIDList = GetBSNOGROUPID(WORKFLOWID, BSNO);
|
|
|
if (GROUPIDList.Count == 0)
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
var GROUPID = GetBSNOGROUPID(WORKFLOWID, BSNO)[0].GROUPID;
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @LASTCOUNT int ");
|
|
|
strSql.Append(" set @LASTCOUNT=( select count(*) [Count] from workflow_step ");
|
|
|
strSql.Append(" where workflowid ='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and groupid='" + GROUPID + "' and islast=1 )");
|
|
|
//strSql.Append(" if (@LASTCOUNT=0) begin");
|
|
|
//strSql.Append(" set @LASTCOUNT=( select count(*) [Count] from workflow_step ");
|
|
|
//strSql.Append(" where workflowid =(select dbo.GetBSNOWorkflowid('" + WorkFlowName + "','" + BSNO + "'))) ");
|
|
|
//strSql.Append(" if (@LASTCOUNT=0) begin select 1 [count] end else begin select 0 [count] end ");
|
|
|
//strSql.Append(" end else begin select @LASTCOUNT [Count] end");
|
|
|
strSql.Append(" select @LASTCOUNT as Count ");
|
|
|
//if (SetWorkFlowFinal(strSql) > 1)
|
|
|
if (SetWorkFlowFinal(strSql) > 0)
|
|
|
{ return true; }
|
|
|
else { return false; }
|
|
|
}
|
|
|
public static Boolean GetWorkFlowFinal_BSNO(string WorkFlowName, string BSNO, string USERID, DbTransaction tran)
|
|
|
{
|
|
|
//20170117 改成在当前步骤组内该用户是否具备最终审核权限
|
|
|
var WORKFLOWID = GetBSNOWorkFlowID(WorkFlowName, BSNO)[0].GID;
|
|
|
var GROUPIDList = GetBSNOGROUPID(WORKFLOWID, BSNO, tran);
|
|
|
if (GROUPIDList.Count == 0)
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
var GROUPID = GetBSNOGROUPID(WORKFLOWID, BSNO, tran)[0].GROUPID;
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @LASTCOUNT int ");
|
|
|
strSql.Append(" set @LASTCOUNT=( select count(*) [Count] from workflow_step ");
|
|
|
strSql.Append(" where workflowid ='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" and auditor='" + USERID + "' and groupid='" + GROUPID + "' and islast=1 )");
|
|
|
//strSql.Append(" if (@LASTCOUNT=0) begin");
|
|
|
//strSql.Append(" set @LASTCOUNT=( select count(*) [Count] from workflow_step ");
|
|
|
//strSql.Append(" where workflowid =(select dbo.GetBSNOWorkflowid('" + WorkFlowName + "','" + BSNO + "'))) ");
|
|
|
//strSql.Append(" if (@LASTCOUNT=0) begin select 1 [count] end else begin select 0 [count] end ");
|
|
|
//strSql.Append(" end else begin select @LASTCOUNT [Count] end");
|
|
|
strSql.Append(" select @LASTCOUNT as Count ");
|
|
|
//if (SetWorkFlowFinal(strSql) > 1)
|
|
|
if (SetWorkFlowFinal(strSql) > 0)
|
|
|
{ return true; }
|
|
|
else { return false; }
|
|
|
}
|
|
|
private static int SetWorkFlowFinal(StringBuilder strSql)
|
|
|
{
|
|
|
var Count = 0;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
Count = Convert.ToInt32(reader["Count"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
return Count;
|
|
|
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 从workflow_using表删除(工作流状态删除)
|
|
|
/*
|
|
|
static public int GetWorkFlowDo(string WorkFlowName, string DEPTGID, string BSNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID=(select dbo.getworkflowid('" + WorkFlowName + "','" + DEPTGID + "')) ");
|
|
|
strSql.Append(" select count(*) [count] from workflow_do ");
|
|
|
strSql.Append(" where workflowid=@WorkFlowID and bsno='" + BSNO + "' and isdelete is null ");
|
|
|
return SetWorkFlowDo(strSql.ToString());
|
|
|
}*/
|
|
|
|
|
|
//通过bsno和workflowid判断该业务是否存在未删除的操作记录
|
|
|
//如果存在(返回值大于0),一般来说上位操作将会据此禁止对此业务的修改。
|
|
|
static public int GetWorkFlowDo(string WORKFLOWID, string BSNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" select count(*) [count] from workflow_do ");
|
|
|
strSql.Append(" where workflowid=@WorkFlowID and bsno='" + BSNO + "' and isdelete is null ");
|
|
|
return SetWorkFlowDo(strSql.ToString());
|
|
|
}
|
|
|
private static int SetWorkFlowDo(string strSql)
|
|
|
{
|
|
|
var _count = 0;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
_count = Convert.ToInt32(reader["count"]);
|
|
|
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return _count;
|
|
|
}
|
|
|
static public Resultmb DeleteWorkFlowUsing(string WorkFlowName, string BSNO, string USERID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50),@GROUPID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID=(select dbo.getworkflowid('" + WorkFlowName + "','" + BSNO + "')) ");
|
|
|
strSql.Append(" if (select count(*) from workflow_do where workflowid=@WorkFlowID and bsno='" + BSNO + "' and isdelete is null)=0");
|
|
|
strSql.Append(" begin delete workflow_using ");
|
|
|
strSql.Append(" where workflowid=@WorkFlowID and bsno='" + BSNO + "' end");//select '1' as candel
|
|
|
//strSql.Append(" else begin select '0' as candel end");
|
|
|
return DoDeleteWorkFlowUsing(strSql.ToString());
|
|
|
}/*
|
|
|
static public int DeleteWorkFlowUsing(string WORKFLOWID, string BSNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WorkFlowID varchar(50),@GROUPID varchar(50) ");
|
|
|
strSql.Append(" set @WorkFlowID='" + WORKFLOWID + "' ");
|
|
|
strSql.Append(" if (select count(*) from workflow_do where workflowid=@WorkFlowID and bsno='" + BSNO + "' and isdelete is null)=0");
|
|
|
strSql.Append(" begin delete workflow_using ");
|
|
|
strSql.Append(" where workflowid=@WorkFlowID and bsno='" + BSNO + "' select '1' as candel end");
|
|
|
strSql.Append(" else begin select '0' as candel end");
|
|
|
return DoDeleteWorkFlowUsing(strSql.ToString());
|
|
|
}*/
|
|
|
|
|
|
private static Resultmb DoDeleteWorkFlowUsing(string strSql)
|
|
|
{
|
|
|
var result = new Resultmb();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = "删除workflow_using出错" + ee.Message;
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 通过workflowid和groupid来取得需要通知的操作人
|
|
|
|
|
|
static public List<Auditormb> GetAuditor(string WORKFLOWID, string GROUPID)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select ws.auditor,u.showname from workflow_step ws left join [user] u on u.gid=ws.auditor ");
|
|
|
strSql.Append(" where workflowid='" + WORKFLOWID + "' and groupid=" + GROUPID + " ");
|
|
|
|
|
|
return SetAuditor(strSql.ToString());
|
|
|
}
|
|
|
static public List<Auditormb> GetAuditor(string WORKFLOWID, string GROUPID, DbTransaction tran)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select ws.auditor,u.showname from workflow_step ws left join [user] u on u.gid=ws.auditor ");
|
|
|
strSql.Append(" where workflowid='" + WORKFLOWID + "' and groupid=" + GROUPID + " ");
|
|
|
|
|
|
return SetAuditor(strSql.ToString());
|
|
|
}
|
|
|
static public List<Auditormb> GetSender(string WORKFLOWID, string BSNO)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select wu.OP auditor,u.showname from workflow_using wu left join [user] u on u.gid=wu.OP ");
|
|
|
strSql.Append(" where workflowid='" + WORKFLOWID + "' and BSNO='" + BSNO + "' ");
|
|
|
|
|
|
return SetAuditor(strSql.ToString());
|
|
|
}
|
|
|
private static List<Auditormb> SetAuditor(string strSql)
|
|
|
{
|
|
|
var bodyList = new List<Auditormb>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
Auditormb data = new Auditormb();
|
|
|
data.GID = Convert.ToString(reader["auditor"]);
|
|
|
data.NAME = Convert.ToString(reader["showname"]);
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
|
|
|
reader.Close();
|
|
|
}
|
|
|
return bodyList;
|
|
|
}
|
|
|
private static List<Auditormb> SetAuditor(string strSql, DbTransaction tran)
|
|
|
{
|
|
|
var bodyList = new List<Auditormb>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(tran, CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
Auditormb data = new Auditormb();
|
|
|
data.GID = Convert.ToString(reader["auditor"]);
|
|
|
data.NAME = Convert.ToString(reader["showname"]);
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
|
|
|
reader.Close();
|
|
|
}
|
|
|
return bodyList;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 审核通过时通知发起人
|
|
|
static public int PassMessage(string WORKFLOWID, string BSNO, string GROUDPID, string Auditor)
|
|
|
{
|
|
|
//var strSql = new StringBuilder();
|
|
|
var _count = 0;
|
|
|
/*
|
|
|
var strSql = new StringBuilder();
|
|
|
//Message.RECEIVER = Auditor.GID;
|
|
|
strSql.Append(" declare @WORKFLOWID varchar(50),@OP varchar(50),@BSNO varchar(50),@CURRENTID varchar(50),@STEPNAME varchar(100) ");
|
|
|
strSql.Append(" set @WORKFLOWID ='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" set @OP = (select OP from workflow_using where workflowid='" + WORKFLOWID + "' and bsno='" + BSNO + "')");
|
|
|
strSql.Append(" set @BSNO = '"+BSNO+"'");
|
|
|
strSql.Append(" set @CURRENTID = '" + GROUDPID + "'");
|
|
|
strSql.Append(" set @STEPNAME = (select top 1 description from workflow_step where workflowid=@workflowid and auditor='" + Auditor + "' and groupid='" + GROUDPID + "')");
|
|
|
strSql.Append(" select newid() GID,(select [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) [name] ");
|
|
|
strSql.Append(" ,(select DESCRIPTION from workflow where gid=@WORKFLOWID) description,getdate() createtime,0 isread,0 readcount, ");
|
|
|
strSql.Append(" ((select showname from [user] where gid='" + Auditor + "')+' 审核了['+(select DESCRIPTION from workflow ");
|
|
|
strSql.Append(" where gid=@WORKFLOWID)+']'+' 单号:'+@BSNO+' 步骤:'+@STEPNAME+'') messagecontent,null lastreadtime,@OP receiver, ");
|
|
|
strSql.Append(" 0 [type],(select top 1 TASKURL from workflow_step where workflowid=@WORKFLOWID and auditor='" + Auditor );
|
|
|
strSql.Append(" ' and GROUPID=@CURRENTID)+'?BSNO='+@BSNO taskurl,@BSNO taskid,0 isdelete,null deleteuser,null deletetime,0 [number],2 recvtype ");
|
|
|
var _message = SetInsertMessage(strSql);
|
|
|
if (SaveMessage(_message)) { _count = 1; }
|
|
|
* */
|
|
|
return _count;
|
|
|
}
|
|
|
|
|
|
static public int PassMessage(string WORKFLOWID, string BSNO, string GROUDPID, string Auditor, string BILLNO, string GID, string URL)
|
|
|
{
|
|
|
//var strSql = new StringBuilder();
|
|
|
var _count = 0;
|
|
|
/*
|
|
|
var strSql = new StringBuilder();
|
|
|
//Message.RECEIVER = Auditor.GID;
|
|
|
|
|
|
strSql.Append(" declare @WORKFLOWID varchar(50),@OP varchar(50),@BSNO varchar(50),@BILLNO varchar(50),@CURRENTID varchar(50),@STEPNAME varchar(100) ");
|
|
|
strSql.Append(" set @WORKFLOWID ='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" set @OP = (select OP from workflow_using where workflowid='" + WORKFLOWID + "' and bsno='" + BSNO + "')");
|
|
|
strSql.Append(" set @BSNO = '" + BSNO + "'");
|
|
|
strSql.Append(" set @BILLNO = '" + BILLNO + "'");
|
|
|
strSql.Append(" set @CURRENTID = '" + GROUDPID + "'");
|
|
|
strSql.Append(" set @STEPNAME = (select top 1 description from workflow_step where workflowid=@workflowid and auditor='" + Auditor + "' and groupid='" + GROUDPID + "')");
|
|
|
strSql.Append(" delete from sys_message where name=(select [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) and taskid='" + GID + "' and isread=0 ");
|
|
|
strSql.Append(" select newid() GID,(select [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) [name] ");
|
|
|
strSql.Append(" ,(select DESCRIPTION from workflow where gid=@WORKFLOWID) description,getdate() createtime,0 isread,0 readcount, ");
|
|
|
strSql.Append(" ((select showname from [user] where gid='" + Auditor + "')+' 审核了['+(select DESCRIPTION from workflow ");
|
|
|
strSql.Append(" where gid=@WORKFLOWID)+']'+' 单号:'+@BILLNO+' 步骤:'+@STEPNAME+'') messagecontent,null lastreadtime,@OP receiver, ");
|
|
|
strSql.Append(" 0 [type],'"+URL+"' taskurl,'"+GID+"' taskid,0 isdelete,null deleteuser,null deletetime,0 [number],2 recvtype ");
|
|
|
var _message = SetInsertMessage(strSql, BILLNO, GID, URL );
|
|
|
if (SaveMessage(_message)) { _count = 1; }
|
|
|
* */
|
|
|
return _count;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 提交时通知审核人
|
|
|
static public int StartMessage(string WORKFLOWID, string OP, string RECEIVER, string BSNO,string BILLNO)
|
|
|
{
|
|
|
var _count = 0;
|
|
|
var cookies = new Cookies();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" select newid() GID,(select top 1 [name] from workflow_type where typeno=(select [type] from workflow where gid='" + WORKFLOWID + "')) [name] ");
|
|
|
strSql.Append(" ,(select DESCRIPTION from workflow where gid='" + WORKFLOWID + "') description,getdate() createtime,0 isread,0 readcount, ");
|
|
|
strSql.Append(" ((select showname from [user] where gid='" + OP + "')+' 提交了['+(select DESCRIPTION from workflow where gid='" + WORKFLOWID + "')+']'+' 单号:" + BILLNO + "') messagecontent,null lastreadtime,'" + RECEIVER + "' receiver, ");
|
|
|
strSql.Append(" 0 [type],(select top 1 TASKURL from workflow_step where workflowid='" + WORKFLOWID + "' and auditor='" + RECEIVER + "' and GROUPID=1)+'?BSNO='+'" + BSNO + "' taskurl,'" + BSNO + "' taskid,null isdelete,null deleteuser,null deletetime,0 [number],2 recvtype ");
|
|
|
|
|
|
var _message = SetInsertMessage(strSql);
|
|
|
if (SaveMessage(_message)) { _count = 1; }
|
|
|
}
|
|
|
return _count;
|
|
|
}
|
|
|
private static SYSMessagemb SetInsertMessage(StringBuilder strSql)
|
|
|
{
|
|
|
var data = new SYSMessagemb();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
try
|
|
|
{
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
data.GID = Convert.ToString(reader["GID"]);
|
|
|
data.NAME = Convert.ToString(reader["NAME"]);
|
|
|
data.DESCRIPTION = Convert.ToString(reader["DESCRIPTION"]);
|
|
|
data.CREATETIME = Convert.ToString(reader["CREATETIME"]);
|
|
|
data.ISREAD = Convert.ToString(reader["ISREAD"]);
|
|
|
data.READCOUNT = Convert.ToString(reader["READCOUNT"]);
|
|
|
data.MESSAGECONTENT = Convert.ToString(reader["MESSAGECONTENT"]);
|
|
|
data.LASTREADTIME = Convert.ToString(reader["LASTREADTIME"]);
|
|
|
data.RECEIVER = Convert.ToString(reader["RECEIVER"]);
|
|
|
data.TYPE = Convert.ToString(reader["TYPE"]);
|
|
|
data.TASKURL = Convert.ToString(reader["TASKURL"]);
|
|
|
data.TASKID = Convert.ToString(reader["TASKID"]);
|
|
|
data.ISDELETE = Convert.ToString(reader["ISDELETE"]);
|
|
|
data.DELETEUSER = Convert.ToString(reader["DELETEUSER"]);
|
|
|
data.DELETETIME = Convert.ToString(reader["DELETETIME"]);
|
|
|
data.NUMBER = Convert.ToString(reader["NUMBER"]);
|
|
|
data.RECVTYPE = Convert.ToString(reader["RECVTYPE"]);
|
|
|
data.ISSEND ="0";
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
var _Result = new DBResult();
|
|
|
_Result.Success = false;
|
|
|
_Result.Message = ee.Message;
|
|
|
return data;
|
|
|
}
|
|
|
return data;
|
|
|
}
|
|
|
|
|
|
|
|
|
static public int StartMessage(string WORKFLOWID, string OP, string RECEIVER, string BSNO, string BILLNO, string GID, string URL,string MSG="")
|
|
|
{
|
|
|
var _count = 0;
|
|
|
var cookies = new Cookies();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
//strSql.Append(" delete from sys_message where name=(select top 1 [name] from workflow_type where typeno=(select [type] from workflow where gid='" + WORKFLOWID + "')) and taskid='" + GID + "' and RECEIVER='" + RECEIVER + "' and isread=0 ");
|
|
|
strSql.Append(" select newid() GID,(select top 1 [name] from workflow_type where typeno=(select [type] from workflow where gid='" + WORKFLOWID + "')) [name] ");
|
|
|
strSql.Append(" ,(select DESCRIPTION from workflow where gid='" + WORKFLOWID + "') description,getdate() createtime,0 isread,0 readcount, ");
|
|
|
strSql.Append(" ((select showname from [user] where gid='" + OP + "')+' 提交了['+(select DESCRIPTION from workflow where gid='" + WORKFLOWID + "')+']'+',单号:" + BILLNO +","+MSG+"') messagecontent,null lastreadtime,'" + RECEIVER + "' receiver, ");
|
|
|
strSql.Append(" 0 [type],'" + URL + "' taskurl,'" + GID + "' taskid,null isdelete,null deleteuser,null deletetime,0 [number],2 recvtype ");
|
|
|
|
|
|
var _message = SetInsertMessage(strSql, BILLNO, GID, URL);
|
|
|
if (SaveMessage(_message)) { _count = 1; }
|
|
|
}
|
|
|
return _count;
|
|
|
}
|
|
|
private static SYSMessagemb SetInsertMessage(StringBuilder strSql, string BILLNO, string GID, string URL)
|
|
|
{
|
|
|
var data = new SYSMessagemb();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
data.GID = Convert.ToString(reader["GID"]);
|
|
|
data.NAME = Convert.ToString(reader["NAME"]);
|
|
|
data.DESCRIPTION = Convert.ToString(reader["DESCRIPTION"]);
|
|
|
data.CREATETIME = Convert.ToString(reader["CREATETIME"]);
|
|
|
data.ISREAD = Convert.ToString(reader["ISREAD"]);
|
|
|
data.READCOUNT = Convert.ToString(reader["READCOUNT"]);
|
|
|
data.MESSAGECONTENT = Convert.ToString(reader["MESSAGECONTENT"]);
|
|
|
data.LASTREADTIME = Convert.ToString(reader["LASTREADTIME"]);
|
|
|
data.RECEIVER = Convert.ToString(reader["RECEIVER"]);
|
|
|
data.TYPE = Convert.ToString(reader["TYPE"]);
|
|
|
data.TASKURL = URL;
|
|
|
data.TASKID = GID;
|
|
|
data.ISDELETE = Convert.ToString(reader["ISDELETE"]);
|
|
|
data.DELETEUSER = Convert.ToString(reader["DELETEUSER"]);
|
|
|
data.DELETETIME = Convert.ToString(reader["DELETETIME"]);
|
|
|
data.NUMBER = Convert.ToString(reader["NUMBER"]);
|
|
|
data.RECVTYPE = Convert.ToString(reader["RECVTYPE"]);
|
|
|
data.ISSEND ="0";
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return data;
|
|
|
}
|
|
|
|
|
|
private static SYSMessagemb SetInsertMessage(StringBuilder strSql, string BILLNO, string GID, string URL, DbTransaction tran)
|
|
|
{
|
|
|
var data = new SYSMessagemb();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(tran, CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
data.GID = Convert.ToString(reader["GID"]);
|
|
|
data.NAME = Convert.ToString(reader["NAME"]);
|
|
|
data.DESCRIPTION = Convert.ToString(reader["DESCRIPTION"]);
|
|
|
data.CREATETIME = Convert.ToString(reader["CREATETIME"]);
|
|
|
data.ISREAD = Convert.ToString(reader["ISREAD"]);
|
|
|
data.READCOUNT = Convert.ToString(reader["READCOUNT"]);
|
|
|
data.MESSAGECONTENT = Convert.ToString(reader["MESSAGECONTENT"]);
|
|
|
data.LASTREADTIME = Convert.ToString(reader["LASTREADTIME"]);
|
|
|
data.RECEIVER = Convert.ToString(reader["RECEIVER"]);
|
|
|
data.TYPE = Convert.ToString(reader["TYPE"]);
|
|
|
data.TASKURL = URL;
|
|
|
data.TASKID = GID;
|
|
|
data.ISDELETE = Convert.ToString(reader["ISDELETE"]);
|
|
|
data.DELETEUSER = Convert.ToString(reader["DELETEUSER"]);
|
|
|
data.DELETETIME = Convert.ToString(reader["DELETETIME"]);
|
|
|
data.NUMBER = Convert.ToString(reader["NUMBER"]);
|
|
|
data.RECVTYPE = Convert.ToString(reader["RECVTYPE"]);
|
|
|
data.ISSEND ="0";
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return data;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 审核步骤组 通过时 通知下一步审核人
|
|
|
static public int PushMessage(string WORKFLOWID, string BSNO, string GROUDPID,string BILLNO)
|
|
|
{
|
|
|
//var strSql = new StringBuilder();
|
|
|
var _count = 0;
|
|
|
var cookies = new Cookies();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == null)
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
var UserName = cookies.getCookie(CookieConstant.UserId);//登录组织
|
|
|
//var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
var AuditorList = GetAuditor(WORKFLOWID, GROUDPID);//取得待通知人列表
|
|
|
foreach (var Auditor in AuditorList)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
//Message.RECEIVER = Auditor.GID;
|
|
|
strSql.Append(" declare @WORKFLOWID varchar(50),@OP varchar(50),@BSNO varchar(50),@CURRENTID varchar(50) ");
|
|
|
strSql.Append(" set @WORKFLOWID ='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" set @OP = '" + UserName + "'");
|
|
|
strSql.Append(" set @BSNO = '" + BSNO + "'");
|
|
|
strSql.Append(" set @CURRENTID = '" + GROUDPID + "'");
|
|
|
strSql.Append(" select newid() GID,(select [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) [name] ");
|
|
|
strSql.Append(" ,(select DESCRIPTION from workflow where gid=@WORKFLOWID) description,getdate() createtime,0 isread,0 readcount, ");
|
|
|
strSql.Append(" ((select showname from [user] where gid=@OP)+' 提交了['+(select DESCRIPTION from workflow where gid=@WORKFLOWID)+']'+' 单号:'+@BSNO+'') messagecontent,null lastreadtime,'" + Auditor.GID + "' receiver, ");
|
|
|
strSql.Append(" 0 [type],(select top 1 TASKURL from workflow_step where workflowid=@WORKFLOWID and auditor='" + Auditor.GID + "' and GROUPID=@CURRENTID)+'?BSNO='+@BSNO taskurl,@BSNO taskid,0 isdelete,null deleteuser,null deletetime,0 [number],2 recvtype ");
|
|
|
var _message = SetInsertMessage(strSql);
|
|
|
if (SaveMessage(_message)) { _count = _count + 1; }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return _count;
|
|
|
}
|
|
|
|
|
|
static public int PushMessage(string WORKFLOWID, string BSNO, string GROUDPID, string BILLNO, string GID, string URL)
|
|
|
{
|
|
|
//var strSql = new StringBuilder();
|
|
|
var _count = 0;
|
|
|
var cookies = new Cookies();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
|
|
|
var UserName = cookies.getCookie(CookieConstant.UserId);//登录组织
|
|
|
//var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
var AuditorList = GetAuditor(WORKFLOWID, GROUDPID);//取得待通知人列表 此处应为
|
|
|
foreach (var Auditor in AuditorList)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
//Message.RECEIVER = Auditor.GID;
|
|
|
strSql.Append(" declare @WORKFLOWID varchar(50),@OP varchar(50),@BSNO varchar(50),@BILLNO varchar(50),@CURRENTID varchar(50) ");
|
|
|
strSql.Append(" set @WORKFLOWID ='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" set @OP = '" + UserName + "'");
|
|
|
strSql.Append(" set @BSNO = '" + BSNO + "'");
|
|
|
strSql.Append(" set @BILLNO = '" + BILLNO + "'");
|
|
|
strSql.Append(" set @CURRENTID = '" + GROUDPID + "'");
|
|
|
//strSql.Append(" delete from sys_message where name=(select [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) and taskid='" + GID + "' and isread=0 ");
|
|
|
strSql.Append(" select newid() GID,(select [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) [name] ");
|
|
|
strSql.Append(" ,(select DESCRIPTION from workflow where gid=@WORKFLOWID) description,getdate() createtime,0 isread,0 readcount, ");
|
|
|
strSql.Append(" ((select showname from [user] where gid=@OP)+' 提交了['+(select DESCRIPTION from workflow where gid=@WORKFLOWID)+']'+' 单号:'+@BILLNO+'') messagecontent,null lastreadtime,'" + Auditor.GID + "' receiver, ");
|
|
|
strSql.Append(" 0 [type],(select top 1 TASKURL from workflow_step where workflowid=@WORKFLOWID and auditor='" + Auditor.GID + "' and GROUPID=@CURRENTID)+'?BSNO='+@BSNO taskurl,@BSNO taskid,0 isdelete,null deleteuser,null deletetime,0 [number],2 recvtype ");
|
|
|
var _message = SetInsertMessage(strSql, BILLNO, GID, URL);
|
|
|
if (SaveMessage(_message)) { _count = _count + 1; }
|
|
|
}
|
|
|
}
|
|
|
return _count;
|
|
|
}
|
|
|
static public int PushMessage(string WORKFLOWID, string BSNO, string GROUDPID, string BILLNO, string GID, string URL, DbTransaction tran)
|
|
|
{
|
|
|
//var strSql = new StringBuilder();
|
|
|
var _count = 0;
|
|
|
var cookies = new Cookies();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
|
|
|
var UserName = cookies.getCookie(CookieConstant.UserId);//登录组织
|
|
|
//var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
var AuditorList = GetAuditor(WORKFLOWID, GROUDPID, tran);//取得待通知人列表 此处应为
|
|
|
foreach (var Auditor in AuditorList)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
//Message.RECEIVER = Auditor.GID;
|
|
|
strSql.Append(" declare @WORKFLOWID varchar(50),@OP varchar(50),@BSNO varchar(50),@BILLNO varchar(50),@CURRENTID varchar(50) ");
|
|
|
strSql.Append(" set @WORKFLOWID ='" + WORKFLOWID + "'");
|
|
|
strSql.Append(" set @OP = '" + UserName + "'");
|
|
|
strSql.Append(" set @BSNO = '" + BSNO + "'");
|
|
|
strSql.Append(" set @BILLNO = '" + BILLNO + "'");
|
|
|
strSql.Append(" set @CURRENTID = '" + GROUDPID + "'");
|
|
|
//strSql.Append(" delete from sys_message where name=(select [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) and taskid='" + GID + "' and isread=0 ");
|
|
|
strSql.Append(" select newid() GID,(select [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) [name] ");
|
|
|
strSql.Append(" ,(select DESCRIPTION from workflow where gid=@WORKFLOWID) description,getdate() createtime,0 isread,0 readcount, ");
|
|
|
strSql.Append(" ((select showname from [user] where gid=@OP)+' 提交了['+(select DESCRIPTION from workflow where gid=@WORKFLOWID)+']'+' 单号:'+@BILLNO+'') messagecontent,null lastreadtime,'" + Auditor.GID + "' receiver, ");
|
|
|
strSql.Append(" 0 [type],(select top 1 TASKURL from workflow_step where workflowid=@WORKFLOWID and auditor='" + Auditor.GID + "' and GROUPID=@CURRENTID)+'?BSNO='+@BSNO taskurl,@BSNO taskid,0 isdelete,null deleteuser,null deletetime,0 [number],2 recvtype ");
|
|
|
var _message = SetInsertMessage(strSql, BILLNO, GID, URL, tran);
|
|
|
if (SaveMessage(_message)) { _count = _count + 1; }
|
|
|
}
|
|
|
}
|
|
|
return _count;
|
|
|
}
|
|
|
|
|
|
static public int RepeatMessage(string WORKFLOWID, string BSNO, string GROUDPID, string auditor_GID, string BILLNO, string GID, string URL)
|
|
|
{
|
|
|
//var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
//var strSql = new StringBuilder();
|
|
|
var _count = 0;
|
|
|
var cookies = new Cookies();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
var SenderList = GetSender(WORKFLOWID, BSNO);//取得待通知人列表 此处应为该工作流的提交人
|
|
|
foreach (var Sender in SenderList)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
//Message.RECEIVER = Auditor.GID;
|
|
|
strSql.Append(" declare @WORKFLOWID varchar(50),@BSNO varchar(50),@CURRENTID varchar(50) ");
|
|
|
strSql.Append(" set @WORKFLOWID ='" + WORKFLOWID + "'");
|
|
|
//strSql.Append(" set @OP = '" + Sender.GID + "'");
|
|
|
strSql.Append(" set @BSNO = '" + BILLNO + "'");
|
|
|
strSql.Append(" set @CURRENTID = '" + GROUDPID + "'");
|
|
|
//strSql.Append(" delete from sys_message where name=(select [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) and taskid='" + GID + "' and isread=0 ");
|
|
|
strSql.Append(" select newid() GID,(select [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) [name] ");
|
|
|
strSql.Append(" ,(select DESCRIPTION from workflow where gid=@WORKFLOWID) description,getdate() createtime,0 isread,0 readcount, ");
|
|
|
strSql.Append(" ((select showname from [user] where gid='" + auditor_GID + "')+' 通过了['+(select DESCRIPTION from workflow where gid=@WORKFLOWID)+']'+' 单号:'+@BSNO+'') messagecontent,null lastreadtime,'" + Sender.GID + "' receiver, ");
|
|
|
strSql.Append(" 0 [type],'" + URL + "' taskurl,@BSNO taskid,0 isdelete,null deleteuser,null deletetime,0 [number],2 recvtype ");
|
|
|
var _message = SetInsertMessage(strSql, BILLNO, GID, URL);
|
|
|
if (SaveMessage(_message)) { _count = _count + 1; }
|
|
|
}
|
|
|
}
|
|
|
return _count;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 驳回时通知发起人
|
|
|
static public int RefuseMessage(string WORKFLOWID, string BSNO, string RefuseID, string Reason)
|
|
|
{
|
|
|
var _count = 0;
|
|
|
var cookies = new Cookies();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WORKFLOWID varchar(50),@OP varchar(50),@BSNO varchar(50) ");
|
|
|
strSql.Append(" set @WORKFLOWID = '" + WORKFLOWID + "'");
|
|
|
strSql.Append(" set @OP = (select OP from workflow_using where workflowid='" + WORKFLOWID + "' and bsno='" + BSNO + "')");
|
|
|
strSql.Append(" set @BSNO = '" + BSNO + "'");
|
|
|
strSql.Append(" select newid() GID,(select top 1 [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) [name] ");
|
|
|
strSql.Append(" ,(select DESCRIPTION from workflow where gid=@WORKFLOWID) description,getdate() createtime,0 isread,0 readcount, ");
|
|
|
strSql.Append(" ((select showname from [user] where gid='" + RefuseID + "')+' 驳回了['+(select DESCRIPTION from workflow where gid=@WORKFLOWID)+'] ");
|
|
|
strSql.Append(" 原因'+'" + Reason + "') messagecontent,null lastreadtime,@OP receiver, ");
|
|
|
strSql.Append(" 0 [type],(select top 1 TASKURL from workflow_step where workflowid=@WORKFLOWID and auditor='" + RefuseID + "' )+'?BSNO='+@BSNO taskurl,@BSNO taskid,0 isdelete,null deleteuser,null deletetime,0 [number],2 recvtype ");
|
|
|
|
|
|
var _message = SetInsertMessage(strSql);
|
|
|
if (SaveMessage(_message)) { _count = 1; }
|
|
|
}
|
|
|
return _count;
|
|
|
}
|
|
|
|
|
|
static public int RefuseMessage(string WORKFLOWID, string BSNO, string RefuseID, string Reason, string BILLNO, string GID, string URL)
|
|
|
{
|
|
|
var _count = 0;
|
|
|
var cookies = new Cookies();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(" declare @WORKFLOWID varchar(50),@OP varchar(50),@BSNO varchar(50) ");
|
|
|
strSql.Append(" set @WORKFLOWID = '" + WORKFLOWID + "'");
|
|
|
strSql.Append(" set @OP = (select OP from workflow_using where workflowid='" + WORKFLOWID + "' and bsno='" + BSNO + "')");
|
|
|
strSql.Append(" set @BSNO = '" + BSNO + "'");
|
|
|
//strSql.Append(" delete from sys_message where name=(select top 1 [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) and taskid='" + GID + "' and isread=0 ");
|
|
|
strSql.Append(" select newid() GID,(select top 1 [name] from workflow_type where typeno=(select [type] from workflow where gid=@WORKFLOWID)) [name] ");
|
|
|
strSql.Append(" ,(select DESCRIPTION from workflow where gid=@WORKFLOWID) description,getdate() createtime,0 isread,0 readcount, ");
|
|
|
strSql.Append(" ((select showname from [user] where gid='" + RefuseID + "')+' 驳回了['+(select DESCRIPTION from workflow where gid=@WORKFLOWID)+'] 单号:" + BILLNO + ", ");
|
|
|
strSql.Append(" 原因'+'" + Reason + "') messagecontent,null lastreadtime,@OP receiver, ");
|
|
|
strSql.Append(" 0 [type],'" + URL + "' taskurl,'" + GID + "' taskid,0 isdelete,null deleteuser,null deletetime,0 [number],2 recvtype ");
|
|
|
|
|
|
var _message = SetInsertMessage(strSql, BILLNO, GID, URL);
|
|
|
if (SaveMessage(_message)) { _count = 1; }
|
|
|
}
|
|
|
return _count;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 保存信息
|
|
|
public static Boolean SaveMessage(SYSMessagemb Message)
|
|
|
{
|
|
|
var cookies = new Cookies();
|
|
|
DBResult result = new DBResult();
|
|
|
var WorkflowMsg = cookies.getCookie(CookieConstant.WorkflowMsg);//启用消息提示
|
|
|
if (WorkflowMsg == "1")
|
|
|
{
|
|
|
var head = Message;
|
|
|
|
|
|
head.DbOperationType = DbOperationType.DbotIns;
|
|
|
head.ModelUIStatus = "I";
|
|
|
|
|
|
var modb = new ModelObjectRepository();
|
|
|
result = modb.Save(head);
|
|
|
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
|
|
|
var CT = T_ALL_DA.GetStrSQL("CT", "select count(*) CT from user_msg_set WHERE USERID='" + Message.RECEIVER + "' and WORKFLOWTYPE_NAME='" + Message.NAME + "'");
|
|
|
if (CT == "0")
|
|
|
{
|
|
|
var USEDINGDINGMSG = MsSysParamSetDAL.GetData("PARAMNAME='USEDINGDINGMSG'").PARAMVALUE;
|
|
|
if (USEDINGDINGMSG == "1")
|
|
|
{
|
|
|
DingTalkHelper.SendMessage(Message.RECEIVER, Message.MESSAGECONTENT);
|
|
|
}
|
|
|
bool suessce = new ChatHub().SendMessage(head.RECEIVER, head.GID);
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
result.OK("");
|
|
|
}
|
|
|
//刷新父窗口上的父节点
|
|
|
var jsonRespose = new JsonResponse
|
|
|
{
|
|
|
Success = result.Success,
|
|
|
Message = result.Message,
|
|
|
Data = ""
|
|
|
};
|
|
|
|
|
|
return jsonRespose.Success;
|
|
|
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region 通用 提交 撤回 审核 驳回
|
|
|
|
|
|
#region 提交审核和撤销审核 目前是固化状态的方式,将来期望改成与任务状态联动的形式
|
|
|
|
|
|
/// <summary>
|
|
|
/// AuditInfomb的参数包括
|
|
|
/// </summary>
|
|
|
/// <param name="AuditInfo"></param>
|
|
|
/// <param name="extracmd"></param>
|
|
|
/// <returns></returns>
|
|
|
public static DBResult SubmitAudit(AuditInfomb AuditInfo,string extracmd="")
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
var tran = conn.BeginTransaction();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
|
|
|
|
|
|
Resultmb WorkResult = WorkFlowDAL.WorkFlowStart(AuditInfo.WORKFLOWNAME, AuditInfo.BSNO, AuditInfo.USERID, AuditInfo.BSNO, AuditInfo.BSNO,"");
|
|
|
|
|
|
if (WorkResult.Success)
|
|
|
{
|
|
|
result = ChangeBillWorkflow(AuditInfo, tran, WorkResult.islast, db, extracmd);
|
|
|
|
|
|
if (result.Success == true)
|
|
|
{
|
|
|
tran.Commit();
|
|
|
result.Message = "提交审核成功!";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//tran.Rollback();
|
|
|
//result.Success = false;
|
|
|
//result.Message = "提交审核错误!";
|
|
|
result.Message = "提交审核错误!" + result.Message;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
|
|
|
result.Success = false;
|
|
|
result.Message = "提交审核错误,请重试或联系系统管理员";
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public static DBResult SubmitAuditBack(AuditInfomb AuditInfo, string extracmd="")
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
var tran = conn.BeginTransaction();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
|
|
|
|
|
|
Resultmb WorkResult = WorkFlowDAL.WorkFlowReset(AuditInfo.WORKFLOWNAME, AuditInfo.BSNO, AuditInfo.USERID);
|
|
|
result = ChangeBillWorkflow(AuditInfo, tran, WorkResult.islast, db, extracmd);
|
|
|
|
|
|
if (result.Success == true)
|
|
|
{
|
|
|
tran.Commit();
|
|
|
result.Message = "撤回提交成功!";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//tran.Rollback();
|
|
|
//result.Success = false;
|
|
|
//result.Message = "提交审核错误!";
|
|
|
result.Message = "已经审核或部分审核 不允许撤回!" + result.Message;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
|
|
|
result.Success = false;
|
|
|
result.Message = "提交审核错误,请重试或联系系统管理员";
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 审核或驳回
|
|
|
|
|
|
public static DBResult Audit(AuditInfomb AuditInfo, string extracmd="")
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
|
|
|
if (AuditInfo.BSNOArray.Count()>0)
|
|
|
{
|
|
|
foreach (var BSNO in AuditInfo.BSNOArray)
|
|
|
{
|
|
|
var tran = conn.BeginTransaction();
|
|
|
|
|
|
Resultmb WorkResult = WorkFlowDAL.InsertWorkFlowDo(AuditInfo.WORKFLOWNAME, BSNO, AuditInfo.USERID, tran,BSNO);
|
|
|
|
|
|
if (WorkResult.Success)
|
|
|
{
|
|
|
result = ChangeBillWorkflow(AuditInfo, tran, WorkResult.islast, db, extracmd);
|
|
|
if (result.Success == true)
|
|
|
{
|
|
|
tran.Commit();
|
|
|
result.Message = "审核通过!";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//tran.Rollback();
|
|
|
//result.Success = false;
|
|
|
//result.Message = "提交审核错误!";
|
|
|
result.Message = "审核失败!" + result.Message;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
result.Success = false;
|
|
|
result.Message = WorkResult.Message;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
result = new DBResult();
|
|
|
result.Success = true;
|
|
|
result.Message = "审核通过";
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
|
|
|
result.Success = false;
|
|
|
result.Message = "审核出现错误,请重试或联系系统管理员:"+e.Message;
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
result.Success = true;
|
|
|
result.Message = "审核通过";
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 在extracmd里面写 reason = '驳回理由' ,并给REASON参数传递一次驳回理由
|
|
|
/// </summary>
|
|
|
/// <param name="AuditInfo"></param>
|
|
|
/// <param name="extracmd"></param>
|
|
|
/// <returns></returns>
|
|
|
public static DBResult AuditBack(AuditInfomb AuditInfo, string extracmd,string REASON)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
|
|
|
if (AuditInfo.BSNOArray.Count() > 0)
|
|
|
{
|
|
|
foreach (var BSNO in AuditInfo.BSNOArray)
|
|
|
{
|
|
|
var tran = conn.BeginTransaction();
|
|
|
|
|
|
Resultmb WorkResult = WorkFlowDAL.DeleteWorkFlowDo(AuditInfo.WORKFLOWNAME, BSNO, AuditInfo.USERID, REASON );
|
|
|
|
|
|
if (WorkResult.Success)
|
|
|
{
|
|
|
result = ChangeBillWorkflow(AuditInfo, tran, WorkResult.islast, db, extracmd);
|
|
|
if (result.Success == true)
|
|
|
{
|
|
|
tran.Commit();
|
|
|
result.Message = "驳回成功!";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//tran.Rollback();
|
|
|
//result.Success = false;
|
|
|
//result.Message = "提交审核错误!";
|
|
|
result.Message = "驳回失败!" + result.Message;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
result.Success = false;
|
|
|
result.Message = WorkResult.Message;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
result = new DBResult();
|
|
|
result.Success = true;
|
|
|
result.Message = "驳回成功";
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
|
|
|
result.Success = false;
|
|
|
result.Message = "驳回出现错误,请重试或联系系统管理员:" + e.Message;
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
result.Success = true;
|
|
|
result.Message = "驳回成功";
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
|
/// 实际修改业务的状态
|
|
|
/// </summary>
|
|
|
/// <param name="AuditInfo"></param>
|
|
|
/// <param name="tran"></param>
|
|
|
/// <param name="islast"></param>
|
|
|
/// <param name="db"></param>
|
|
|
/// <returns></returns>
|
|
|
private static DBResult ChangeBillWorkflow(AuditInfomb AuditInfo, DbTransaction tran, bool islast, Database db, string extracmd="")
|
|
|
{
|
|
|
var result = new DBResult(true, "", null);
|
|
|
|
|
|
try
|
|
|
{
|
|
|
var cmdupdate_base = "update {0} set {1}={2} where {3} in({4}) and {5}={6}";
|
|
|
if (!string.IsNullOrEmpty(extracmd.Trim())) {
|
|
|
cmdupdate_base = "update {0} set {1}={2},"+ extracmd + " where {3} in({4}) and {5}={6}";
|
|
|
}
|
|
|
var cmdupdate = "";
|
|
|
if (islast == true)
|
|
|
{//update tablename set STATEFIELDNAME=TOSTATE where BSNOFIELDNAME=BSNO and STATEFIELDNAME=FROMSTATE
|
|
|
cmdupdate = string.Format(cmdupdate_base
|
|
|
, AuditInfo.TABLENAME
|
|
|
, AuditInfo.STATEFIELDNAME, AuditInfo.LASTSTATE
|
|
|
, AuditInfo.BSNOFIELDNAME, AuditInfo.BSNOListStr
|
|
|
, AuditInfo.STATEFIELDNAME, AuditInfo.FROMSTATE
|
|
|
);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
cmdupdate = string.Format(cmdupdate_base
|
|
|
, AuditInfo.TABLENAME
|
|
|
, AuditInfo.STATEFIELDNAME, AuditInfo.TOSTATE
|
|
|
, AuditInfo.BSNOFIELDNAME, AuditInfo.BSNOListStr
|
|
|
, AuditInfo.STATEFIELDNAME, AuditInfo.FROMSTATE
|
|
|
);
|
|
|
}
|
|
|
DbCommand dc = db.GetSqlStringCommand(cmdupdate);
|
|
|
|
|
|
db.ExecuteNonQuery(dc, tran);
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
result.Success = false;
|
|
|
result.Message = e.Message;
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
}
|
|
|
} |