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#

This file contains ambiguous Unicode characters!

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

using 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
}
}