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

1447 lines
72 KiB
C#

using System;
using System.Data;
using System.Data.SqlClient;
using DSWeb.Models;
using WebSqlHelper;
using System.Collections;
using System.Collections.Generic;
using DSWeb.WorkFlow;
namespace DSWeb.EntityDA
{
public class WorkFlowDoDA
{
//workflow_do
private const string PARM_WORKFLOW_DO_GID = "@gid";
private const string PARM_WORKFLOW_DO_WORKFLOW_ID = "@workflow_id";
private const string PARM_WORKFLOW_DO_BILL_NO = "@bill_no";
private const string PARM_WORKFLOW_DO_STEP_ID = "@step_id";
private const string PARM_WORKFLOW_DO_AUDITOR = "@auditor";
private const string PARM_WORKFLOW_DO_AUDIT_TIME = "@audit_time";
private const string PARM_WORKFLOW_DO_BSNO = "@bsno";
private const string PARM_WORKFLOW_DO_FEE_ID = "@fee_id";
private const string PARM_WORKFLOW_DO_FEE_STATUS = "@fee_status";
private const string PARM_WORKFLOW_DO_DO_QUERY_SQL = "@do_query_sql";
private const string PARM_WORKFLOW_DO_STEP_NO = "@step_no";
private const string PARM_WORKFLOW_DO_IS_FINISH = "@is_finish";
private const string PARM_WORKFLOW_DO_IS_DELETED = "@is_deleted";
private const string PARM_WORKFLOW_DO_DELETE_STEP = "@delete_step";
private const string PARM_WORKFLOW_DO_DELETE_OPERATOR = "@delete_operator";
private const string PARM_WORKFLOW_DO_DELETE_STEP_NO = "@delete_stepno";
private const string PARM_WORKFLOW_DO_DELETE_APPLICANT = "@applicant";
//ch_fee_payapplication
private const string PARM_SETTLE_APPL_GID = "@gid";
private const string PARM_SETTLE_APPL_BILL_NO = "@bill_no";
private const string PARM_SETTLE_APPL_BILL_STATUS = "@bill_status";
private const string PARM_SETTLE_APPL_COMPANY_ID = "@company_id";
//ch_fee
private const string PARM_FEE_GID = "@gid";
private const string PARM_FEE_ORDER_AMOUNT = "@order_amount";
//ch_fee_do
private const string PARM_CH_FEE_DO_GID = "@gid";
private const string SQL_SELECT_WORKFLOW_DO_BY_GID = "SELECT GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH FROM workflow_do WHERE GID = @gid ";
private const string SQL_SELECT_WORKFLOW_DO_BY_WORKFLOW_ID = "SELECT GID, WORKFLOWID,BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH FROM workflow_do WHERE WORKFLOWID = @workflow_id";
private const string SQL_SELECT_WORKFLOW_DO_BY_FEEID_AND_WORKFLOWID = "SELECT GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT FROM workflow_do WHERE WORKFLOWID = @workflow_id AND FEEID = @fee_id";
private const string SQL_SELECT_WORKFLOW_DO_BY_BILLNO_AND_WORKFLOWID = "SELECT GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT FROM workflow_do WHERE ISALLFINISH = 0 AND BILLNO = @bill_no AND WORKFLOWID =@workflow_id ORDER BY STEPNO DESC ";
private const string SQL_SELECT_WORKFLOW_DO_BY_AUDITORID_AND_WORKFLOWID = "SELECT GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT FROM workflow_do WHERE WORKFLOWID = @workflow_id AND AUDITOR = @auditor ORDER BY STEPNO DESC ";
private const string SQL_SELECT_WORKFLOW_DO_BY_BILLNO = "SELECT GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT FROM workflow_do WHERE BILLNO = @bill_no ORDER BY STEPNO DESC ";
private const string SQL_INSERT_WORKFLOW_DO = "INSERT INTO workflow_do (GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT)"
+ " VALUES(@gid,@workflow_id,@bill_no,@step_id,@auditor,GETDATE(),@bsno,@fee_id,@fee_status,@do_query_sql,@step_no,@is_finish,@applicant)";
private const string SQL_UPDATE_WORKFLOW_DO_STEP = " UPDATE workflow_do SET ISFINISH = 1,AUDITTIME = GETDATE() WHERE GID = @gid ";
private const string SQL_UPDATE_CH_FEE_PAY_APP = "UPDATE ch_fee_payapplication SET BILLSTATUS = @bill_status WHERE BILLNO = @bill_no";
private const string SQL_UPDATE_WORKFLOW_DO_RECORD_REJECT_STEP = "UPDATE workflow_do SET ISDELETE = @is_deleted,DELETESTEP = @delete_step,DELETEOPERATOR = @delete_operator,DELETESTEPNO = @delete_stepno,ISFINISH = @is_finish,ISALLFINISH = 1 WHERE WORKFLOWID = @workflow_id AND BILLNO = @bill_no AND ISALLFINISH = 0 ";
private const string SQL_SELECT_WORKFLOW_DO_STEP_NO = " SELECT AUDITOR+'#'+CAST(STEPNO as varchar) FROM workflow_do WHERE GID = @gid ";
private const string SQL_UPDATE_WORKFLOW_DO_SAME_STEP = "UPDATE workflow_do SET ISFINISH = 1 WHERE WORKFLOWID = @workflow_id AND ISFINISH = 0 AND STEPNO = @step_no AND BILLNO = @bill_no";
private string SQL_UPDATE_PAY_APPLICATION_STATUS = "UPDATE ch_fee_payapplication SET BILLSTATUS = @bill_status WHERE BILLNO = @bill_no AND COMPANYID = @company_id ";
private string SQL_UPDATE_CH_FEE_FOR_REJECT = "UPDATE ch_fee SET ORDERAMOUNT = ORDERAMOUNT - @order_amount WHERE GID = @gid";
private string SQL_UPDATE_CH_FEE_DO_FOR_DELETE = "UPDATE ch_fee_do SET ISDELETED = 1 WHERE GID = @gid";
private string SQL_SELECT_WORKFLOW_DO_BY_BILLNO_FOR_MSG = "SELECT GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT FROM workflow_do WHERE WORKFLOWID = @workflow_id AND BILLNO = @bill_no AND ISNULL(ISALLFINISH,0) <> 1 AND ISNULL(ISDELETE,0) <> 1 ";
private string SQL_SELECT_WORKFLOW_DO_FEEAUDIT_PASS_FOR_MSG = "SELECT GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT FROM workflow_do WHERE WORKFLOWID = @workflow_id AND BILLNO = @bill_no AND ISNULL(ISDELETE,0) <> 1 ";
private string SQL_SELECT_WORKFLOW_DO_FEEAUDIT_REJECT_FOR_MSG = "SELECT TOP 1 GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT FROM workflow_do WHERE WORKFLOWID = @workflow_id AND BILLNO = @bill_no ORDER BY AUDITTIME DESC ";
private string SQL_SELECT_WORKFLOW_DO_Exist_WorkflowID = "select count(GID) from workflow_do where workflowid=@workflowid ";
private string SQL_SELECT_WORKFLOW_DO_Exist_WorkflowStepID = "select count(GID) from workflow_do where stepid=@step_id ";
#region 检查是否为工作流workflow.gid定义了工作步骤workflow_step
/// <summary>
/// 检查工作流workflow.gid是否开始了审批流程workflow_do
/// </summary>
/// <param name="tempWorkFlowID">工作流GID</param>
/// <returns></returns>
public int GetExistWorkFlowStepID(string tempWorkFlowStepID)
{
int iResult = 0;
int iExistState = 0;
SqlParameter runningParm = new SqlParameter(PARM_WORKFLOW_DO_STEP_ID, SqlDbType.VarChar, 36);
runningParm.Value = tempWorkFlowStepID;
using (SqlConnection sqlConnection = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
iExistState = (int)SqlHelper.ExecuteScalar(sqlConnection, CommandType.Text, SQL_SELECT_WORKFLOW_DO_Exist_WorkflowStepID, runningParm);
if (iExistState > 0)
{
iResult = 1;//如果存在工作步骤返回1
}
}
catch
{
sqlConnection.Close();
}
}
return iResult;
}
#endregion
#region 检查是否为工作流workflow.gid定义了工作步骤workflow_step
/// <summary>
/// 检查工作流workflow.gid是否开始了审批流程workflow_do
/// </summary>
/// <param name="tempWorkFlowID">工作流GID</param>
/// <returns></returns>
public int GetExistWorkFlowID(string tempWorkFlowID)
{
int iResult = 0;
int iExistState = 0;
SqlParameter runningParm = new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID, SqlDbType.VarChar, 36);
runningParm.Value = tempWorkFlowID;
using (SqlConnection sqlConnection = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
iExistState = (int)SqlHelper.ExecuteScalar(sqlConnection, CommandType.Text, SQL_SELECT_WORKFLOW_DO_Exist_WorkflowID, runningParm);
if (iExistState > 0)
{
iResult = 1;//如果存在工作步骤返回1
}
else
{
iResult = 0;
}
}
catch
{
sqlConnection.Close();
}
}
return iResult;
}
#endregion
#region 获取审核驳回的工作流信息
/// <summary>
/// 获取审核驳回的工作流信息
/// </summary>
/// <param name="tempWorkFlowGID">工作流GID</param>
/// <param name="tempBillNO">业务编号</param>
/// <returns>返回实体类工作流记录</returns>
public IList<WorkFlowDoEntity> GetWorkFlowDoAuditRejectForMessage(string tempWorkFlowGID, string tempBillNO)
{
//初始化返回变量
IList<WorkFlowDoEntity> workFlowDoEntities = new List<WorkFlowDoEntity>();
//初始化参数并赋值
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID, SqlDbType.VarChar, 36),
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO, SqlDbType.VarChar, 36)
};
parms[0].Value = tempWorkFlowGID;
parms[1].Value = tempBillNO;
using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_DO_FEEAUDIT_REJECT_FOR_MSG, parms))
{
try
{
//读取字段值
while (sqlRead.Read())
{
WorkFlowDoEntity workFlowDoEntity = new WorkFlowDoEntity();
if (!sqlRead.IsDBNull(0))
{
workFlowDoEntity.GID = sqlRead.GetString(0);
}
if (!sqlRead.IsDBNull(1))
{
workFlowDoEntity.WorkFlowID = sqlRead.GetString(1);
}
if (!sqlRead.IsDBNull(2))
{
workFlowDoEntity.BillNO = sqlRead.GetString(2);
}
if (!sqlRead.IsDBNull(3))
{
workFlowDoEntity.StepID = sqlRead.GetString(3);
}
if (!sqlRead.IsDBNull(4))
{
workFlowDoEntity.Auditor = sqlRead.GetString(4);
}
if (!sqlRead.IsDBNull(5))
{
workFlowDoEntity.AuditTime = sqlRead.GetDateTime(5);
}
if (!sqlRead.IsDBNull(6))
{
workFlowDoEntity.BSNO = sqlRead.GetString(6);
}
if (!sqlRead.IsDBNull(7))
{
workFlowDoEntity.FeeID = sqlRead.GetString(7);
}
if (!sqlRead.IsDBNull(8))
{
workFlowDoEntity.FeeStatus = sqlRead.GetInt32(8);
}
if (!sqlRead.IsDBNull(9))
{
workFlowDoEntity.DoQuerySql = sqlRead.GetString(9);
}
if (!sqlRead.IsDBNull(10))
{
workFlowDoEntity.StepNO = sqlRead.GetInt32(10);
}
if (!sqlRead.IsDBNull(11))
{
workFlowDoEntity.IsFinish = sqlRead.GetBoolean(11);
}
if (!sqlRead.IsDBNull(12))
{
workFlowDoEntity.Applicant = sqlRead.GetString(12);
}
workFlowDoEntities.Add(workFlowDoEntity);
}
}
catch (Exception exceError)
{
//抛出异常
throw exceError;
}
}
return workFlowDoEntities;
}
#endregion
#region 获取审核通过和待审核的工作流信息
/// <summary>
/// 获取审核通过和待审核的工作流信息
/// </summary>
/// <param name="tempWorkFlowGID">工作流GID</param>
/// <param name="tempBillNO">业务编号</param>
/// <returns>返回实体类工作流记录</returns>
public IList<WorkFlowDoEntity> GetWorkFlowDoAuditPassForMessage(string tempWorkFlowGID, string tempBillNO)
{
//初始化返回变量
IList<WorkFlowDoEntity> workFlowDoEntities = new List<WorkFlowDoEntity>();
//初始化参数并赋值
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID, SqlDbType.VarChar, 36),
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO, SqlDbType.VarChar, 36)
};
parms[0].Value = tempWorkFlowGID;
parms[1].Value = tempBillNO;
using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_DO_FEEAUDIT_PASS_FOR_MSG, parms))
{
try
{
//读取字段值
while (sqlRead.Read())
{
WorkFlowDoEntity workFlowDoEntity = new WorkFlowDoEntity();
if (!sqlRead.IsDBNull(0))
{
workFlowDoEntity.GID = sqlRead.GetString(0);
}
if (!sqlRead.IsDBNull(1))
{
workFlowDoEntity.WorkFlowID = sqlRead.GetString(1);
}
if (!sqlRead.IsDBNull(2))
{
workFlowDoEntity.BillNO = sqlRead.GetString(2);
}
if (!sqlRead.IsDBNull(3))
{
workFlowDoEntity.StepID = sqlRead.GetString(3);
}
if (!sqlRead.IsDBNull(4))
{
workFlowDoEntity.Auditor = sqlRead.GetString(4);
}
if (!sqlRead.IsDBNull(5))
{
workFlowDoEntity.AuditTime = sqlRead.GetDateTime(5);
}
if (!sqlRead.IsDBNull(6))
{
workFlowDoEntity.BSNO = sqlRead.GetString(6);
}
if (!sqlRead.IsDBNull(7))
{
workFlowDoEntity.FeeID = sqlRead.GetString(7);
}
if (!sqlRead.IsDBNull(8))
{
workFlowDoEntity.FeeStatus = sqlRead.GetInt32(8);
}
if (!sqlRead.IsDBNull(9))
{
workFlowDoEntity.DoQuerySql = sqlRead.GetString(9);
}
if (!sqlRead.IsDBNull(10))
{
workFlowDoEntity.StepNO = sqlRead.GetInt32(10);
}
if (!sqlRead.IsDBNull(11))
{
workFlowDoEntity.IsFinish = sqlRead.GetBoolean(11);
}
if (!sqlRead.IsDBNull(12))
{
workFlowDoEntity.Applicant = sqlRead.GetString(12);
}
workFlowDoEntities.Add(workFlowDoEntity);
}
}
catch (Exception exceError)
{
//抛出异常
throw exceError;
}
}
return workFlowDoEntities;
}
#endregion
#region 通过工作流GID和申请编号BILLNO获取工作流运行表WorkFlowDo信息发送消息
/// <summary>
/// 通过工作流GID和申请编号BILLNO获取工作流运行表WorkFlowDo信息发送消息
/// </summary>
/// <param name="tempWorkFlowGID"></param>
/// <param name="tempFeeGID"></param>
/// <returns></returns>
public IList<WorkFlowDoEntity> GetWorkFlowDoForMessage(string tempWorkFlowGID, string tempBillNO)
{
//初始化返回变量
IList<WorkFlowDoEntity> workFlowDoEntities = new List<WorkFlowDoEntity>();
//初始化参数并赋值
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID, SqlDbType.VarChar, 36),
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO, SqlDbType.VarChar, 36)
};
parms[0].Value = tempWorkFlowGID;
parms[1].Value = tempBillNO;
using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_DO_BY_BILLNO_FOR_MSG, parms))
{
try
{
//读取字段值
while (sqlRead.Read())
{
WorkFlowDoEntity workFlowDoEntity = new WorkFlowDoEntity();
if (!sqlRead.IsDBNull(0))
{
workFlowDoEntity.GID = sqlRead.GetString(0);
}
if (!sqlRead.IsDBNull(1))
{
workFlowDoEntity.WorkFlowID = sqlRead.GetString(1);
}
if (!sqlRead.IsDBNull(2))
{
workFlowDoEntity.BillNO = sqlRead.GetString(2);
}
if (!sqlRead.IsDBNull(3))
{
workFlowDoEntity.StepID = sqlRead.GetString(3);
}
if (!sqlRead.IsDBNull(4))
{
workFlowDoEntity.Auditor = sqlRead.GetString(4);
}
if (!sqlRead.IsDBNull(5))
{
workFlowDoEntity.AuditTime = sqlRead.GetDateTime(5);
}
if (!sqlRead.IsDBNull(6))
{
workFlowDoEntity.BSNO = sqlRead.GetString(6);
}
if (!sqlRead.IsDBNull(7))
{
workFlowDoEntity.FeeID = sqlRead.GetString(7);
}
if (!sqlRead.IsDBNull(8))
{
workFlowDoEntity.FeeStatus = sqlRead.GetInt32(8);
}
if (!sqlRead.IsDBNull(9))
{
workFlowDoEntity.DoQuerySql = sqlRead.GetString(9);
}
if (!sqlRead.IsDBNull(10))
{
workFlowDoEntity.StepNO = sqlRead.GetInt32(10);
}
if (!sqlRead.IsDBNull(11))
{
workFlowDoEntity.IsFinish = sqlRead.GetBoolean(11);
}
if (!sqlRead.IsDBNull(12))
{
workFlowDoEntity.Applicant = sqlRead.GetString(12);
}
workFlowDoEntities.Add(workFlowDoEntity);
}
}
catch (Exception exceError)
{
//抛出异常
throw exceError;
}
}
return workFlowDoEntities;
}
#endregion
#region 通过工作流GID和费用GID获取工作流运行表WorkFlowDo信息
/// <summary>
/// 通过工作流GID和费用GID获取工作流运行表WorkFlowDo信息
/// </summary>
/// <param name="tempWorkFlowGID"></param>
/// <param name="tempFeeGID"></param>
/// <returns></returns>
public WorkFlowDoEntity GetSigleWorkFlowDo(string tempWorkFlowGID,string tempFeeGID)
{
//初始化返回变量
WorkFlowDoEntity workFlowDoEntity = null;
//初始化参数并赋值
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID, SqlDbType.VarChar, 36),
new SqlParameter(PARM_WORKFLOW_DO_FEE_ID, SqlDbType.VarChar, 36)
};
parms[0].Value = tempWorkFlowGID;
parms[1].Value = tempFeeGID;
using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_DO_BY_FEEID_AND_WORKFLOWID, parms))
{
try
{
workFlowDoEntity = new WorkFlowDoEntity();
//读取字段值
while (sqlRead.Read())
{
if (!sqlRead.IsDBNull(0))
{
workFlowDoEntity.GID = sqlRead.GetString(0);
}
if (!sqlRead.IsDBNull(1))
{
workFlowDoEntity.WorkFlowID = sqlRead.GetString(1);
}
if (!sqlRead.IsDBNull(2))
{
workFlowDoEntity.BillNO = sqlRead.GetString(2);
}
if (!sqlRead.IsDBNull(3))
{
workFlowDoEntity.StepID = sqlRead.GetString(3);
}
if (!sqlRead.IsDBNull(4))
{
workFlowDoEntity.Auditor = sqlRead.GetString(4);
}
if (!sqlRead.IsDBNull(5))
{
workFlowDoEntity.AuditTime = sqlRead.GetDateTime(5);
}
if (!sqlRead.IsDBNull(6))
{
workFlowDoEntity.BSNO = sqlRead.GetString(6);
}
if (!sqlRead.IsDBNull(7))
{
workFlowDoEntity.FeeID = sqlRead.GetString(7);
}
if (!sqlRead.IsDBNull(8))
{
workFlowDoEntity.FeeStatus = sqlRead.GetInt32(8);
}
if (!sqlRead.IsDBNull(9))
{
workFlowDoEntity.DoQuerySql = sqlRead.GetString(9);
}
if (!sqlRead.IsDBNull(10))
{
workFlowDoEntity.StepNO = sqlRead.GetInt32(10);
}
if (!sqlRead.IsDBNull(11))
{
workFlowDoEntity.IsFinish = sqlRead.GetBoolean(11);
}
if (!sqlRead.IsDBNull(12))
{
workFlowDoEntity.Applicant = sqlRead.GetString(12);
}
}
}
catch (Exception exceError)
{
//抛出异常
throw exceError;
}
}
return workFlowDoEntity;
}
#endregion
#region 通过工作流GID和申请编号BILLNO获取工作流运行表WorkFlowDo信息
/// <summary>
/// 通过工作流GID和申请编号BILLNO获取工作流运行表WorkFlowDo信息
/// </summary>
/// <param name="tempWorkFlowGID"></param>
/// <param name="tempFeeGID"></param>
/// <returns></returns>
public WorkFlowDoEntity GetSigleWorkFlowDoByBillNO(string tempWorkFlowGID, string tempBillNO)
{
//初始化返回变量
WorkFlowDoEntity workFlowDoEntity = null;
//初始化参数并赋值
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO, SqlDbType.VarChar, 36),
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID, SqlDbType.VarChar, 36)
};
parms[0].Value = tempBillNO;
parms[1].Value = tempWorkFlowGID;
// aparms[1].Value = tempBillNO;
workFlowDoEntity = new WorkFlowDoEntity();
using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_DO_BY_BILLNO_AND_WORKFLOWID, parms))
{
try
{
//读取字段值
while (sqlRead.Read())
{
if (!sqlRead.IsDBNull(0))
{
workFlowDoEntity.GID = sqlRead.GetString(0);
}
if (!sqlRead.IsDBNull(1))
{
workFlowDoEntity.WorkFlowID = sqlRead.GetString(1);
}
if (!sqlRead.IsDBNull(2))
{
workFlowDoEntity.BillNO = sqlRead.GetString(2);
}
if (!sqlRead.IsDBNull(3))
{
workFlowDoEntity.StepID = sqlRead.GetString(3);
}
if (!sqlRead.IsDBNull(4))
{
workFlowDoEntity.Auditor = sqlRead.GetString(4);
}
if (!sqlRead.IsDBNull(5))
{
workFlowDoEntity.AuditTime = sqlRead.GetDateTime(5);
}
if (!sqlRead.IsDBNull(6))
{
workFlowDoEntity.BSNO = sqlRead.GetString(6);
}
if (!sqlRead.IsDBNull(7))
{
workFlowDoEntity.FeeID = sqlRead.GetString(7);
}
if (!sqlRead.IsDBNull(8))
{
workFlowDoEntity.FeeStatus = sqlRead.GetInt32(8);
}
if (!sqlRead.IsDBNull(9))
{
workFlowDoEntity.DoQuerySql = sqlRead.GetString(9);
}
if (!sqlRead.IsDBNull(10))
{
workFlowDoEntity.StepNO = sqlRead.GetInt32(10);
}
if (!sqlRead.IsDBNull(11))
{
workFlowDoEntity.IsFinish = sqlRead.GetBoolean(11);
}
if (!sqlRead.IsDBNull(12))
{
workFlowDoEntity.Applicant = sqlRead.GetString(12);
}
}
}
catch (Exception exceError)
{
//抛出异常
throw exceError;
}
}
return workFlowDoEntity;
}
#endregion
#region 通过工作流GID和审核人GID获取工作流运行表WorkFlowDo信息
/// <summary>
/// 通过工作流GID和申请编号BILLNO获取工作流运行表WorkFlowDo信息
/// </summary>
/// <param name="tempWorkFlowGID"></param>
/// <param name="tempFeeGID"></param>
/// <returns></returns>
public WorkFlowDoEntity GetSigleWorkFlowDoByAuditor(string tempWorkFlowGID, string tempUserID)
{
//初始化返回变量
WorkFlowDoEntity workFlowDoEntity = null;
//初始化参数并赋值
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID, SqlDbType.VarChar, 36),
new SqlParameter(PARM_WORKFLOW_DO_AUDITOR, SqlDbType.VarChar, 36)
};
parms[0].Value = tempWorkFlowGID;
parms[1].Value = tempUserID;
using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_DO_BY_AUDITORID_AND_WORKFLOWID, parms))
{
try
{
workFlowDoEntity = new WorkFlowDoEntity();
//读取字段值
while (sqlRead.Read())
{
if (!sqlRead.IsDBNull(0))
{
workFlowDoEntity.GID = sqlRead.GetString(0);
}
if (!sqlRead.IsDBNull(1))
{
workFlowDoEntity.WorkFlowID = sqlRead.GetString(1);
}
if (!sqlRead.IsDBNull(2))
{
workFlowDoEntity.BillNO = sqlRead.GetString(2);
}
if (!sqlRead.IsDBNull(3))
{
workFlowDoEntity.StepID = sqlRead.GetString(3);
}
if (!sqlRead.IsDBNull(4))
{
workFlowDoEntity.Auditor = sqlRead.GetString(4);
}
if (!sqlRead.IsDBNull(5))
{
workFlowDoEntity.AuditTime = sqlRead.GetDateTime(5);
}
if (!sqlRead.IsDBNull(6))
{
workFlowDoEntity.BSNO = sqlRead.GetString(6);
}
if (!sqlRead.IsDBNull(7))
{
workFlowDoEntity.FeeID = sqlRead.GetString(7);
}
if (!sqlRead.IsDBNull(8))
{
workFlowDoEntity.FeeStatus = sqlRead.GetInt32(8);
}
if (!sqlRead.IsDBNull(9))
{
workFlowDoEntity.DoQuerySql = sqlRead.GetString(9);
}
if (!sqlRead.IsDBNull(10))
{
workFlowDoEntity.StepNO = sqlRead.GetInt32(10);
}
if (!sqlRead.IsDBNull(11))
{
workFlowDoEntity.IsFinish = sqlRead.GetBoolean(11);
}
if (!sqlRead.IsDBNull(12))
{
workFlowDoEntity.Applicant = sqlRead.GetString(12);
}
}
}
catch (Exception exceError)
{
//抛出异常
throw exceError;
}
}
return workFlowDoEntity;
}
#endregion
#region 通过工作流GID和申请编号BILLNO获取工作流运行表WorkFlowDo信息
/// <summary>
/// 通过工作流GID和申请编号BILLNO获取工作流运行表WorkFlowDo信息
/// </summary>
/// <param name="tempWorkFlowGID"></param>
/// <param name="tempFeeGID"></param>
/// <returns></returns>
public IList<WorkFlowDoEntity> GetAllWorkFlowDoByBillNO(string tempWorkFlowGID, string tempBillNO)
{
//初始化返回变量
IList<WorkFlowDoEntity> workFlowDoEntities = new List<WorkFlowDoEntity>();
//初始化参数并赋值
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID, SqlDbType.VarChar, 36),
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO, SqlDbType.VarChar, 36)
};
parms[0].Value = tempWorkFlowGID;
parms[1].Value = tempBillNO;
using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_DO_BY_BILLNO_AND_WORKFLOWID, parms))
{
try
{
//读取字段值
while (sqlRead.Read())
{
WorkFlowDoEntity workFlowDoEntity = new WorkFlowDoEntity();
if (!sqlRead.IsDBNull(0))
{
workFlowDoEntity.GID = sqlRead.GetString(0);
}
if (!sqlRead.IsDBNull(1))
{
workFlowDoEntity.WorkFlowID = sqlRead.GetString(1);
}
if (!sqlRead.IsDBNull(2))
{
workFlowDoEntity.BillNO = sqlRead.GetString(2);
}
if (!sqlRead.IsDBNull(3))
{
workFlowDoEntity.StepID = sqlRead.GetString(3);
}
if (!sqlRead.IsDBNull(4))
{
workFlowDoEntity.Auditor = sqlRead.GetString(4);
}
if (!sqlRead.IsDBNull(5))
{
workFlowDoEntity.AuditTime = sqlRead.GetDateTime(5);
}
if (!sqlRead.IsDBNull(6))
{
workFlowDoEntity.BSNO = sqlRead.GetString(6);
}
if (!sqlRead.IsDBNull(7))
{
workFlowDoEntity.FeeID = sqlRead.GetString(7);
}
if (!sqlRead.IsDBNull(8))
{
workFlowDoEntity.FeeStatus = sqlRead.GetInt32(8);
}
if (!sqlRead.IsDBNull(9))
{
workFlowDoEntity.DoQuerySql = sqlRead.GetString(9);
}
if (!sqlRead.IsDBNull(10))
{
workFlowDoEntity.StepNO = sqlRead.GetInt32(10);
}
if (!sqlRead.IsDBNull(11))
{
workFlowDoEntity.IsFinish = sqlRead.GetBoolean(11);
}
if (!sqlRead.IsDBNull(12))
{
workFlowDoEntity.Applicant = sqlRead.GetString(12);
}
workFlowDoEntities.Add(workFlowDoEntity);
}
}
catch (Exception exceError)
{
//抛出异常
throw exceError;
}
}
return workFlowDoEntities;
}
#endregion
#region 通过申请编号BILLNO获取工作流运行表WorkFlowDo信息
/// <summary>
/// 通过申请编号BILLNO获取工作流运行表WorkFlowDo信息
/// </summary>
/// <param name="tempWorkFlowGID"></param>
/// <param name="tempFeeGID"></param>
/// <returns></returns>
public IList<WorkFlowDoEntity> GetWorkFlowDoByBillNO(string tempBillNO)
{
//初始化返回变量
IList<WorkFlowDoEntity> workFlowDoEntities = new List<WorkFlowDoEntity>();
//初始化参数并赋值
SqlParameter parm = new SqlParameter(PARM_WORKFLOW_DO_BILL_NO, SqlDbType.VarChar, 36);
parm.Value = tempBillNO;
using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_DO_BY_BILLNO, parm))
{
try
{
//读取字段值
while (sqlRead.Read())
{
WorkFlowDoEntity workFlowDoEntity = new WorkFlowDoEntity();
if (!sqlRead.IsDBNull(0))
{
workFlowDoEntity.GID = sqlRead.GetString(0);
}
if (!sqlRead.IsDBNull(1))
{
workFlowDoEntity.WorkFlowID = sqlRead.GetString(1);
}
if (!sqlRead.IsDBNull(2))
{
workFlowDoEntity.BillNO = sqlRead.GetString(2);
}
if (!sqlRead.IsDBNull(3))
{
workFlowDoEntity.StepID = sqlRead.GetString(3);
}
if (!sqlRead.IsDBNull(4))
{
workFlowDoEntity.Auditor = sqlRead.GetString(4);
}
if (!sqlRead.IsDBNull(5))
{
workFlowDoEntity.AuditTime = sqlRead.GetDateTime(5);
}
if (!sqlRead.IsDBNull(6))
{
workFlowDoEntity.BSNO = sqlRead.GetString(6);
}
if (!sqlRead.IsDBNull(7))
{
workFlowDoEntity.FeeID = sqlRead.GetString(7);
}
if (!sqlRead.IsDBNull(8))
{
workFlowDoEntity.FeeStatus = sqlRead.GetInt32(8);
}
if (!sqlRead.IsDBNull(9))
{
workFlowDoEntity.DoQuerySql = sqlRead.GetString(9);
}
if (!sqlRead.IsDBNull(10))
{
workFlowDoEntity.StepNO = sqlRead.GetInt32(10);
}
if (!sqlRead.IsDBNull(11))
{
workFlowDoEntity.IsFinish = sqlRead.GetBoolean(11);
}
if (!sqlRead.IsDBNull(12))
{
workFlowDoEntity.Applicant = sqlRead.GetString(12);
}
workFlowDoEntities.Add(workFlowDoEntity);
}
}
catch (Exception exceError)
{
//抛出异常
throw exceError;
}
}
return workFlowDoEntities;
}
#endregion
#region 插入WorkFlowDo信息
/// <summary>
/// 插入WorkFlowDo信息
/// </summary>
/// <param name="tempWorkFlowDoEntities">WorkFlowDo实体类数组</param>
/// <returns>值1表示插入正常 值为-1-2表示插入异常失败</returns>
public int InsertWorkFlowDo(IList<WorkFlowDoEntity> tempWorkFlowDoEntities)
{
int iResult = 0;
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_GID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_STEP_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_AUDITOR,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_BSNO,SqlDbType.VarChar,100),
new SqlParameter(PARM_WORKFLOW_DO_FEE_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_FEE_STATUS,SqlDbType.Int),
new SqlParameter(PARM_WORKFLOW_DO_DO_QUERY_SQL,SqlDbType.VarChar,200),
new SqlParameter(PARM_WORKFLOW_DO_STEP_NO,SqlDbType.Int),
new SqlParameter(PARM_WORKFLOW_DO_IS_FINISH,SqlDbType.Bit),
new SqlParameter(PARM_WORKFLOW_DO_DELETE_APPLICANT,SqlDbType.VarChar,36)
};
foreach (WorkFlowDoEntity workFlowDoEntity in tempWorkFlowDoEntities)
{
parms[0].Value = workFlowDoEntity.GID;
parms[1].Value = workFlowDoEntity.WorkFlowID;
parms[2].Value = workFlowDoEntity.BillNO;
parms[3].Value = workFlowDoEntity.StepID;
parms[4].Value = workFlowDoEntity.Auditor;
parms[5].Value = workFlowDoEntity.BSNO;
parms[6].Value = workFlowDoEntity.FeeID;
parms[7].Value = workFlowDoEntity.FeeStatus;
parms[8].Value = workFlowDoEntity.DoQuerySql;
parms[9].Value = workFlowDoEntity.StepNO;
parms[10].Value = workFlowDoEntity.IsFinish;
parms[11].Value = workFlowDoEntity.Applicant;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_WORKFLOW_DO, parms);
}
//事务提交
sqlTran.Commit();
iResult = 1;//状态为1表示插入成功
}
catch (Exception execError)
{
iResult = -1;//有异常,插入失败
sqlTran.Rollback();
iResult = -2;//插入异常,事务已回滚成功
throw execError;
}
finally
{
SqlHelper.CloseConnection();
}
}
return iResult;
}
#endregion
#region 更新操作审核完毕
/// <summary>
/// 更新操作审核完毕
/// </summary>
/// <param name="tempWorkFlowDoEntity">工作流DO表实体类</param>
/// <param name="tempIsLastStep">是否是最后一步操作</param>
/// <returns>值1表示更新成功 值为-2表示更新异常事务回滚</returns>
public int UpdateWorkFlowDoStep(IList<WorkFlowDoEntity> tempWorkFlowDoEntities, IList<WorkFlowDoEntity> tempNextWorkFlowDoEntities, bool tempIsLastStep, IList<WorkFlowStepEntity> tempWorkFlowStepEntities)
{
//审核人审核完毕后,先更新当前审核状态ISFINISH=True,然后将下一步需要其他审核人的步骤写入到workflow_do表
int iResult = 0;
#region 参数
SqlParameter[] updateParms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_IS_FINISH,SqlDbType.Bit),
new SqlParameter(PARM_WORKFLOW_DO_GID,SqlDbType.VarChar,36)
};
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_GID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_STEP_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_AUDITOR,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_BSNO,SqlDbType.VarChar,100),
new SqlParameter(PARM_WORKFLOW_DO_FEE_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_FEE_STATUS,SqlDbType.Int),
new SqlParameter(PARM_WORKFLOW_DO_DO_QUERY_SQL,SqlDbType.VarChar,200),
new SqlParameter(PARM_WORKFLOW_DO_STEP_NO,SqlDbType.Int),
new SqlParameter(PARM_WORKFLOW_DO_IS_FINISH,SqlDbType.Bit),
new SqlParameter(PARM_WORKFLOW_DO_DELETE_APPLICANT,SqlDbType.VarChar,36)
};
SqlParameter[] updateAppParms = new SqlParameter[] {
new SqlParameter(PARM_SETTLE_APPL_BILL_STATUS,SqlDbType.Int),
new SqlParameter(PARM_SETTLE_APPL_BILL_NO,SqlDbType.VarChar,20)
};
#endregion
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
SqlParameter stepNoParm = new SqlParameter(PARM_SETTLE_APPL_GID, SqlDbType.VarChar, 36);
stepNoParm.Value = tempWorkFlowDoEntities[0].GID;
string stepVal = (string)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, SQL_SELECT_WORKFLOW_DO_STEP_NO, stepNoParm) as string;
if (stepVal == null)
{
throw new Exception();
}
string[] strSplit = stepVal.Split(new char[] { '#' });
string strCurrentAuditor = strSplit[0].ToString();
int iCurrentStepNo = int.Parse(strSplit[1].ToString());
foreach (WorkFlowStepEntity workFlowStepEntity in tempWorkFlowStepEntities)
{
if (workFlowStepEntity.StepNO == iCurrentStepNo && workFlowStepEntity.Auditor != strCurrentAuditor)
{
SqlParameter[] updateSameParms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_STEP_NO,SqlDbType.Int),
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID,SqlDbType.VarChar,36)
};
updateSameParms[0].Value = iCurrentStepNo;
updateSameParms[1].Value = tempWorkFlowDoEntities[0].BillNO;
updateSameParms[2].Value = tempWorkFlowDoEntities[0].WorkFlowID;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_WORKFLOW_DO_SAME_STEP, updateSameParms);
}
}
foreach (WorkFlowDoEntity workFlowDoEntity in tempWorkFlowDoEntities)
{
if (workFlowDoEntity.IsFinish == true)
{
updateParms[0].Value = 1;
updateParms[1].Value = workFlowDoEntity.GID;
if (tempIsLastStep)
{
updateAppParms[0].Value = 0;
}
else
{
updateAppParms[0].Value = 3;
}
updateAppParms[1].Value = workFlowDoEntity.BillNO;
}
else
{
//如果是工作流步骤的最后一步,则不自动向workflow_do表插入下一步骤信息
if (!tempIsLastStep)
{
updateAppParms[0].Value = 3;
updateAppParms[1].Value = workFlowDoEntity.BillNO;
}
else
{
updateAppParms[0].Value = 0;
updateAppParms[1].Value = workFlowDoEntity.BillNO;
}
}
}
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_WORKFLOW_DO_STEP, updateParms);
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_PAY_APP, updateAppParms);
//如果是工作流步骤的最后一步,则不自动向workflow_do表插入下一步骤信息
if (!tempIsLastStep)
{
foreach (WorkFlowDoEntity workFlowDoEntity in tempNextWorkFlowDoEntities)
{
parms[0].Value = workFlowDoEntity.GID;
parms[1].Value = workFlowDoEntity.WorkFlowID;
parms[2].Value = workFlowDoEntity.BillNO;
parms[3].Value = workFlowDoEntity.StepID;
parms[4].Value = workFlowDoEntity.Auditor;
parms[5].Value = workFlowDoEntity.BSNO;
parms[6].Value = workFlowDoEntity.FeeID;
parms[7].Value = workFlowDoEntity.FeeStatus;
parms[8].Value = workFlowDoEntity.DoQuerySql;
parms[9].Value = workFlowDoEntity.StepNO;
parms[10].Value = workFlowDoEntity.IsFinish;
parms[11].Value = workFlowDoEntity.Applicant;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_WORKFLOW_DO, parms);
}
}
sqlTran.Commit();
iResult = 1;//状态为1表示插入成功
}
catch (Exception execError)
{
iResult = -1;//有异常,插入失败
sqlTran.Rollback();
iResult = -2;//插入异常,事务已回滚成功
throw execError;
}
finally
{
SqlHelper.CloseConnection();
}
}
return iResult;
}
#endregion
#region 审核步骤驳回操作
/// <summary>
/// 审核步骤驳回操作
/// </summary>
/// <param name="tempWorkFlowDoEntity">WorkFlowDo 实体类</param>
/// <returns>值1表示操作完成 值小于1表示操作失败</returns>
public int ExcuteRejectWorkFlowDo(WorkFlowDoEntity tempWorkFlowDoEntity,WorkFlowType workFlowType,IList<FeeDoEntity> feeDoEntities,string tempBillNO,string tempCompanyID)
{
int iResult = 0;
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_IS_DELETED,SqlDbType.Bit),
new SqlParameter(PARM_WORKFLOW_DO_DELETE_STEP,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_DELETE_OPERATOR,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_DELETE_STEP_NO,SqlDbType.Int),
new SqlParameter(PARM_WORKFLOW_DO_IS_FINISH,SqlDbType.Bit)
};
parms[0].Value = tempWorkFlowDoEntity.IsDelete;
parms[1].Value = tempWorkFlowDoEntity.DeleteStep;
parms[2].Value = tempWorkFlowDoEntity.DeleteOperator;
parms[3].Value = tempWorkFlowDoEntity.WorkFlowID;
parms[4].Value = tempWorkFlowDoEntity.BillNO;
parms[5].Value = tempWorkFlowDoEntity.DeleteStepNO;
parms[6].Value = tempWorkFlowDoEntity.IsFinish;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_WORKFLOW_DO_RECORD_REJECT_STEP, parms);
switch (workFlowType)
{
case WorkFlowType.PAYSETTLEAUDIT:
foreach(FeeDoEntity feeDoEntity in feeDoEntities)
{
SqlParameter[] updateAppParms = new SqlParameter[] {
new SqlParameter(PARM_SETTLE_APPL_BILL_STATUS,SqlDbType.Int),
new SqlParameter(PARM_SETTLE_APPL_BILL_NO,SqlDbType.VarChar,20),
new SqlParameter(PARM_SETTLE_APPL_COMPANY_ID,SqlDbType.VarChar,36)
};
updateAppParms[0].Value = 6;//付费申请费用驳回
updateAppParms[1].Value = tempBillNO;
updateAppParms[2].Value = tempCompanyID;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_PAY_APPLICATION_STATUS, updateAppParms);
SqlParameter[] updateFeeDoParms = new SqlParameter[] {
new SqlParameter(PARM_CH_FEE_DO_GID,SqlDbType.VarChar,36)
};
updateFeeDoParms[0].Value = feeDoEntity.GID;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_DO_FOR_DELETE, updateFeeDoParms);
SqlParameter[] updateFeeParms = new SqlParameter[] {
new SqlParameter(PARM_FEE_GID,SqlDbType.VarChar,36),
new SqlParameter(PARM_FEE_ORDER_AMOUNT,SqlDbType.Decimal,20)
};
updateFeeParms[0].Value = feeDoEntity.FeeID;
updateFeeParms[1].Value = feeDoEntity.Amount;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_FOR_REJECT, updateFeeParms);
}
break;
case WorkFlowType.FEEAUDIT:
break;
case WorkFlowType.FEEMODIFYAUDIT:
break;
}
sqlTran.Commit();
iResult = 1;//状态为1表示插入成功
}
catch (Exception execError)
{
iResult = -1;//有异常,插入失败
sqlTran.Rollback();
iResult = -2;//插入异常,事务已回滚成功
throw execError;
}
finally
{
SqlHelper.CloseConnection();
}
}
return iResult;
}
#endregion
#region 费用提交审核_事务
public int FeeAudit(WorkFlowEntity workFlowEntity, string strGid, string strUserID)
{
int iResult = 0;
FeeDA feeDA = new FeeDA();
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
#region 费用提交审核_工作流
string strDeptID = " SELECT B.GID FROM user_baseinfo as A INNER JOIN sys_dept as B ON A.DEPTNAME = B.DEPTNAME INNER JOIN user_company as C ON A.USERID = C.USERID WHERE A.USERID = '" + strUserID + "' ";
object statusObj = SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, strDeptID, null);
if (statusObj == null)
{
strDeptID = "";
}
else
{
strDeptID = statusObj.ToString().Trim();
}
//
//根据Gid更新ch_fee.feestatus费用状态信息:为"提交审核"
iResult = -3;
string SQL_UPDATE_FEE_STATUS_BY_GID = "UPDATE ch_fee SET FEESTATUS=2 WHERE GID='" + strGid + "'";
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_FEE_STATUS_BY_GID, null);
//
//查看当前提交的应收应付费用审核已经进入工作流通过工作流GID和申请编号BILLNO获取工作流运行表WorkFlowDo信息
WorkFlowDoDA workFlowDoDA = new WorkFlowDoDA();
string strSQL = "SELECT GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT FROM workflow_do WHERE ISALLFINISH = 0 AND BILLNO='" + strGid.Trim() + "' AND WORKFLOWID='" + workFlowEntity.GID.ToString().Trim() + "' ORDER BY STEPNO DESC ";
statusObj = SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, strSQL, null);
if (statusObj == null)
{
IList<WorkFlowDoEntity> workFlowDoEntities = new List<WorkFlowDoEntity>();
foreach (WorkFlowStepEntity step in workFlowEntity.WorkFlowSteps)
{
//遍历所有工作流下步骤,获取第一步骤GID信息
if (step.StepNO == 1)
{
if (step.IsDepartment)
{
string strDepartmentID = step.DepartmentID == null ? "" : step.DepartmentID;
if (strDepartmentID.Trim() != null)
{
SysDeptDA sysDeptDA = new SysDeptDA();
if (strDeptID.Trim().Equals(strDepartmentID) && strDepartmentID != "")
{
WorkFlowDoEntity initWorkFlowDoEntity = new WorkFlowDoEntity();
initWorkFlowDoEntity.GID = Guid.NewGuid().ToString();
initWorkFlowDoEntity.WorkFlowID = workFlowEntity.GID;
initWorkFlowDoEntity.StepID = step.GID;
initWorkFlowDoEntity.StepNO = step.StepNO;
initWorkFlowDoEntity.Auditor = step.Auditor == null ? step.DefaultAuditor : step.Auditor;
initWorkFlowDoEntity.FeeID = "";
initWorkFlowDoEntity.BSNO = "";
initWorkFlowDoEntity.FeeStatus = 0;
initWorkFlowDoEntity.DoQuerySql = "";
initWorkFlowDoEntity.BillNO = strGid;
initWorkFlowDoEntity.IsFinish = false;
initWorkFlowDoEntity.Applicant = strUserID;
workFlowDoEntities.Add(initWorkFlowDoEntity);
}
}
}
else
{
WorkFlowDoEntity initWorkFlowDoEntity = new WorkFlowDoEntity();
initWorkFlowDoEntity.GID = Guid.NewGuid().ToString();
initWorkFlowDoEntity.WorkFlowID = workFlowEntity.GID;
initWorkFlowDoEntity.StepID = step.GID;
initWorkFlowDoEntity.StepNO = step.StepNO;
initWorkFlowDoEntity.Auditor = step.Auditor == null ? step.DefaultAuditor : step.Auditor;
initWorkFlowDoEntity.FeeID = "";
initWorkFlowDoEntity.BSNO = "";
initWorkFlowDoEntity.FeeStatus = 0;
initWorkFlowDoEntity.DoQuerySql = "";
initWorkFlowDoEntity.BillNO = strGid;
initWorkFlowDoEntity.IsFinish = false;
initWorkFlowDoEntity.Applicant = strUserID;
workFlowDoEntities.Add(initWorkFlowDoEntity);
}
}
}
//插入WorkFlowDo信息
//iWorkFlowStatus = workFlowDoDA.InsertWorkFlowDo(workFlowDoEntities);
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_GID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_STEP_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_AUDITOR,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_BSNO,SqlDbType.VarChar,100),
new SqlParameter(PARM_WORKFLOW_DO_FEE_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_FEE_STATUS,SqlDbType.Int),
new SqlParameter(PARM_WORKFLOW_DO_DO_QUERY_SQL,SqlDbType.VarChar,200),
new SqlParameter(PARM_WORKFLOW_DO_STEP_NO,SqlDbType.Int),
new SqlParameter(PARM_WORKFLOW_DO_IS_FINISH,SqlDbType.Bit),
new SqlParameter(PARM_WORKFLOW_DO_DELETE_APPLICANT,SqlDbType.VarChar,36)
};
foreach (WorkFlowDoEntity workFlowDoEntity in workFlowDoEntities)
{
parms[0].Value = workFlowDoEntity.GID;
parms[1].Value = workFlowDoEntity.WorkFlowID;
parms[2].Value = workFlowDoEntity.BillNO;
parms[3].Value = workFlowDoEntity.StepID;
parms[4].Value = workFlowDoEntity.Auditor;
parms[5].Value = workFlowDoEntity.BSNO;
parms[6].Value = workFlowDoEntity.FeeID;
parms[7].Value = workFlowDoEntity.FeeStatus;
parms[8].Value = workFlowDoEntity.DoQuerySql;
parms[9].Value = workFlowDoEntity.StepNO;
parms[10].Value = workFlowDoEntity.IsFinish;
parms[11].Value = workFlowDoEntity.Applicant;
//string SQL_INSERT_WORKFLOW_DO = "INSERT INTO workflow_do (GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT) VALUES(@gid,@workflow_id,@bill_no,@step_id,@auditor,GETDATE(),@bsno,@fee_id,@fee_status,@do_query_sql,@step_no,@is_finish,@applicant)";
iResult = -4;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_WORKFLOW_DO, parms);
}
//
iResult = -5;//更新费用状态失败
string SQL_UPDATE_FEE_AUDITSTATUS = "UPDATE ch_fee SET AUDITSTATUS=1 WHERE GID='" + strGid + "'";
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_FEE_AUDITSTATUS, null);
}
else
{
IList<WorkFlowDoEntity> workFlowDoEntities = new List<WorkFlowDoEntity>();
foreach (WorkFlowStepEntity step in workFlowEntity.WorkFlowSteps)
{
//遍历所有工作流下步骤,获取第一步骤GID信息
if (step.StepNO == 1)
{
if (step.IsDepartment)
{
string strDepartmentID = step.DepartmentID == null ? "" : step.DepartmentID;
if (strDepartmentID.Trim() != null)
{
if (strDeptID.Trim().Equals(strDepartmentID) && strDepartmentID != "")
{
WorkFlowDoEntity initWorkFlowDoEntity = new WorkFlowDoEntity();
initWorkFlowDoEntity.GID = Guid.NewGuid().ToString();
initWorkFlowDoEntity.WorkFlowID = workFlowEntity.GID;
initWorkFlowDoEntity.StepID = step.GID;
initWorkFlowDoEntity.StepNO = step.StepNO;
initWorkFlowDoEntity.Auditor = step.Auditor == null ? step.DefaultAuditor : step.Auditor;
initWorkFlowDoEntity.FeeID = "";
initWorkFlowDoEntity.BSNO = "";
initWorkFlowDoEntity.FeeStatus = 0;
initWorkFlowDoEntity.DoQuerySql = "";
initWorkFlowDoEntity.BillNO = strGid;
initWorkFlowDoEntity.IsFinish = false;
initWorkFlowDoEntity.Applicant = strUserID;
workFlowDoEntities.Add(initWorkFlowDoEntity);
}
}
}
else
{
WorkFlowDoEntity initWorkFlowDoEntity = new WorkFlowDoEntity();
initWorkFlowDoEntity.GID = Guid.NewGuid().ToString();
initWorkFlowDoEntity.WorkFlowID = workFlowEntity.GID;
initWorkFlowDoEntity.StepID = step.GID;
initWorkFlowDoEntity.StepNO = step.StepNO;
initWorkFlowDoEntity.Auditor = step.Auditor == null ? step.DefaultAuditor : step.Auditor;
initWorkFlowDoEntity.FeeID = "";
initWorkFlowDoEntity.BSNO = "";
initWorkFlowDoEntity.FeeStatus = 0;
initWorkFlowDoEntity.DoQuerySql = "";
initWorkFlowDoEntity.BillNO = strGid;
initWorkFlowDoEntity.IsFinish = false;
initWorkFlowDoEntity.Applicant = strUserID;
workFlowDoEntities.Add(initWorkFlowDoEntity);
}
}
}
//iWorkFlowStatus = workFlowDoDA.InsertWorkFlowDo(workFlowDoEntities);
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter(PARM_WORKFLOW_DO_GID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_WORKFLOW_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_BILL_NO,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_STEP_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_AUDITOR,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_BSNO,SqlDbType.VarChar,100),
new SqlParameter(PARM_WORKFLOW_DO_FEE_ID,SqlDbType.VarChar,36),
new SqlParameter(PARM_WORKFLOW_DO_FEE_STATUS,SqlDbType.Int),
new SqlParameter(PARM_WORKFLOW_DO_DO_QUERY_SQL,SqlDbType.VarChar,200),
new SqlParameter(PARM_WORKFLOW_DO_STEP_NO,SqlDbType.Int),
new SqlParameter(PARM_WORKFLOW_DO_IS_FINISH,SqlDbType.Bit),
new SqlParameter(PARM_WORKFLOW_DO_DELETE_APPLICANT,SqlDbType.VarChar,36)
};
foreach (WorkFlowDoEntity workFlowDoEntity in workFlowDoEntities)
{
parms[0].Value = workFlowDoEntity.GID;
parms[1].Value = workFlowDoEntity.WorkFlowID;
parms[2].Value = workFlowDoEntity.BillNO;
parms[3].Value = workFlowDoEntity.StepID;
parms[4].Value = workFlowDoEntity.Auditor;
parms[5].Value = workFlowDoEntity.BSNO;
parms[6].Value = workFlowDoEntity.FeeID;
parms[7].Value = workFlowDoEntity.FeeStatus;
parms[8].Value = workFlowDoEntity.DoQuerySql;
parms[9].Value = workFlowDoEntity.StepNO;
parms[10].Value = workFlowDoEntity.IsFinish;
parms[11].Value = workFlowDoEntity.Applicant;
//string SQL_INSERT_WORKFLOW_DO = "INSERT INTO workflow_do (GID, WORKFLOWID, BILLNO, STEPID, AUDITOR, AUDITTIME, BSNO, FEEID, FEESTATUS, DOQUERYSQL, STEPNO, ISFINISH,APPLICANT) VALUES(@gid,@workflow_id,@bill_no,@step_id,@auditor,GETDATE(),@bsno,@fee_id,@fee_status,@do_query_sql,@step_no,@is_finish,@applicant)";
iResult = -6;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_WORKFLOW_DO, parms);
}
//int iTempStatus = feeDA.UpdateFeeAuditStatus(strGid, 1);
iResult = -7;//更新费用状态失败
string SQL_UPDATE_FEE_AUDITSTATUS = "UPDATE ch_fee SET AUDITSTATUS=1 WHERE GID='" + strGid + "'";
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_FEE_AUDITSTATUS, null);
}
#endregion
sqlTran.Commit();
iResult = 1;//状态为1表示插入成功
}
catch (Exception execError)
{
iResult = -1;//有异常,插入失败
sqlTran.Rollback();
iResult = -2;//插入异常,事务已回滚成功
throw execError;
}
finally
{
SqlHelper.CloseConnection();
}
}
return iResult;
}
#endregion
}
}