using System ;
using System.Data ;
using System.Data.Common ;
using System.Collections.Generic ;
using System.Text ;
using DSWeb.Areas.OA.Models.WorkFlow ;
using DSWeb.Areas.OA.Models.Comm ;
using Microsoft.Practices.EnterpriseLibrary.Data ;
using HcUtility.Comm ;
using DSWeb.Areas.CommMng.DAL ;
using DSWeb.Areas.CommMng.Models ;
namespace DSWeb.Areas.OA.DAL.WorkFlow
{
public partial class WorkFlowDAL
{
#region WorkFlow_Type列表
static public List < WorkFlowTypemb > GetTypeList ( string strCondition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select GID,NAME,DESCRIPTION,TYPENO " ) ;
strSql . Append ( " ,(select showname from [user] where gid=CREATEUSER) CREATEUSER,dbo.trimtime(CREATETIME) CREATETIME " ) ;
strSql . Append ( " ,(select showname from [user] where gid=MODIFIEDUSER) MODIFIEDUSER,dbo.trimtime(MODIFIEDTIME) MODIFIEDTIME " ) ;
strSql . Append ( " FROM WorkFlow_Type WT " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where " + strCondition ) ;
}
return SetTypeListData ( strSql ) ;
}
static public WorkFlowTypemb GetTypeData ( string condition )
{
var list = GetTypeList ( condition ) ;
if ( list . Count > 0 )
return list [ 0 ] ;
return new WorkFlowTypemb ( ) ;
}
private static List < WorkFlowTypemb > SetTypeListData ( StringBuilder strSql )
{
var headList = new List < WorkFlowTypemb > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
WorkFlowTypemb data = new WorkFlowTypemb ( ) ;
#region Set DB data to Object
data . GID = Convert . ToString ( reader [ "GID" ] ) ;
data . NAME = Convert . ToString ( reader [ "NAME" ] ) ;
data . DESCRIPTION = Convert . ToString ( reader [ "DESCRIPTION" ] ) ;
data . TYPENO = Convert . ToString ( reader [ "TYPENO" ] ) ;
data . CREATEUSER = Convert . ToString ( reader [ "CREATEUSER" ] ) ;
data . CREATETIME = Convert . ToString ( reader [ "CREATETIME" ] ) ;
data . MODIFIEDUSER = Convert . ToString ( reader [ "MODIFIEDUSER" ] ) ;
data . MODIFIEDTIME = Convert . ToString ( reader [ "MODIFIEDTIME" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#region WorkFlow列表
static public List < WorkFlowmb > GetWorkFlowList ( string strCondition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select GID,[name],[description],[type],CREATEUSER, " ) ;
strSql . Append ( " (select showname from [user] u where u.gid=wf.CREATEUSER) CREATEUSER_REF, " ) ;
strSql . Append ( " dbo.trimdate(CREATETIME) CREATETIME,MODIFIEDUSER, " ) ;
strSql . Append ( " (select showname from [user] u where u.gid=wf.MODIFIEDUSER) MODIFIEDUSER_REF, " ) ;
strSql . Append ( " dbo.trimdate(MODIFIEDTIME) MODIFIEDTIME,COMPANYID, " ) ;
//strSql.Append(" (select [name] from [COMPANY] c where c.gid=wf.COMPANYID) COMPANY_REF,DEPTGID, ");
//strSql.Append(" (select [deptname] from [sys_dept] sd where sd.gid=wf.DEPTGID) DEPT_REF from workflow wf ");
strSql . Append ( " (select [name] from [COMPANY] c where c.gid=wf.COMPANYID) COMPANY_REF,ISDEFAULT,ISCONDITION,CONDITIONSQL,SORTNO from workflow wf " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where " + strCondition ) ;
}
return SetWorkFlowData ( strSql ) ;
}
static public WorkFlowmb GetWorkFlowData ( string condition )
{
var list = GetWorkFlowList ( condition ) ;
if ( list . Count > 0 )
return list [ 0 ] ;
return new WorkFlowmb ( ) ;
}
private static List < WorkFlowmb > SetWorkFlowData ( StringBuilder strSql )
{
var headList = 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 [ "GID" ] ) ;
data . NAME = Convert . ToString ( reader [ "NAME" ] ) ;
data . DESCRIPTION = Convert . ToString ( reader [ "DESCRIPTION" ] ) ;
data . TYPE = Convert . ToString ( reader [ "TYPE" ] ) ;
data . CREATEUSER = Convert . ToString ( reader [ "CREATEUSER" ] ) ;
data . CREATEUSER_REF = Convert . ToString ( reader [ "CREATEUSER_REF" ] ) ;
data . CREATETIME = Convert . ToString ( reader [ "CREATETIME" ] ) ;
data . MODIFIEDUSER = Convert . ToString ( reader [ "MODIFIEDUSER" ] ) ;
data . MODIFIEDUSER_REF = Convert . ToString ( reader [ "MODIFIEDUSER_REF" ] ) ;
data . MODIFIEDTIME = Convert . ToString ( reader [ "MODIFIEDTIME" ] ) ;
data . COMPANYID = Convert . ToString ( reader [ "COMPANYID" ] ) ;
data . COMPANY_REF = Convert . ToString ( reader [ "COMPANY_REF" ] ) ;
data . ISDEFAULT = Convert . ToString ( reader [ "ISDEFAULT" ] ) ;
if ( reader [ "ISCONDITION" ] ! = DBNull . Value )
data . ISCONDITION = Convert . ToBoolean ( reader [ "ISCONDITION" ] ) ;
data . CONDITIONSQL = Convert . ToString ( reader [ "CONDITIONSQL" ] ) ;
if ( reader [ "SORTNO" ] ! = DBNull . Value )
data . SORTNO = Convert . ToString ( reader [ "SORTNO" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#region WorkFlow_Step列表
static public List < DSWeb . Areas . OA . Models . WorkFlow . WorkFlowStepmb > GetStepList ( string WorkFlowID )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select GID,[name],[description],CREATEUSER, " ) ;
strSql . Append ( " (select showname from [user] u where u.gid=ws.CREATEUSER)as CREATEUSER_REF, " ) ;
strSql . Append ( " dbo.trimdate(CREATETIME) CREATETIME,MODIFIEDUSER, " ) ;
strSql . Append ( " (select showname from [user] u where u.gid=ws.MODIFIEDUSER)as MODIFIEDUSER_REF, " ) ;
strSql . Append ( " dbo.trimdate(MODIFIEDTIME) MODIFIEDTIME,WORKFLOWID,STEPNO,AUDITOR, " ) ;
strSql . Append ( " (select showname from [user] u where u.gid=ws.AUDITOR)as AUDITOR_REF, " ) ;
strSql . Append ( " ISLAST,dbo.f_YN(ISLAST) ISLAST_REF,GROUPID,NEXTGROUP,stepno,REMARK " ) ;
strSql . Append ( " from workflow_step ws " ) ;
if ( ! string . IsNullOrEmpty ( WorkFlowID ) )
{
strSql . Append ( " where " + WorkFlowID ) ;
}
return SetStepData ( strSql ) ;
}
private static List < DSWeb . Areas . OA . Models . WorkFlow . WorkFlowStepmb > SetStepData ( StringBuilder strSql )
{
var headList = new List < DSWeb . Areas . OA . Models . WorkFlow . WorkFlowStepmb > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
DSWeb . Areas . OA . Models . WorkFlow . WorkFlowStepmb data = new DSWeb . Areas . OA . Models . WorkFlow . WorkFlowStepmb ( ) ;
#region Set DB data to Object
data . GID = Convert . ToString ( reader [ "GID" ] ) ;
data . NAME = Convert . ToString ( reader [ "NAME" ] ) ;
data . DESCRIPTION = Convert . ToString ( reader [ "DESCRIPTION" ] ) ;
data . WORKFLOWID = Convert . ToString ( reader [ "WORKFLOWID" ] ) ;
data . STEPNO = Convert . ToString ( reader [ "STEPNO" ] ) ;
data . AUDITOR = Convert . ToString ( reader [ "AUDITOR" ] ) ;
data . AUDITOR_REF = Convert . ToString ( reader [ "AUDITOR_REF" ] ) ;
data . ISLAST = Convert . ToString ( reader [ "ISLAST" ] ) ;
data . ISLAST_REF = Convert . ToString ( reader [ "ISLAST_REF" ] ) ;
data . GROUPID = Convert . ToString ( reader [ "GROUPID" ] ) ;
data . NEXTGROUP = Convert . ToString ( reader [ "NEXTGROUP" ] ) ;
data . CREATEUSER = Convert . ToString ( reader [ "CREATEUSER" ] ) ;
data . CREATEUSER_REF = Convert . ToString ( reader [ "CREATEUSER_REF" ] ) ;
data . CREATETIME = Convert . ToString ( reader [ "CREATETIME" ] ) ;
data . MODIFIEDUSER = Convert . ToString ( reader [ "MODIFIEDUSER" ] ) ;
data . MODIFIEDUSER_REF = Convert . ToString ( reader [ "MODIFIEDUSER_REF" ] ) ;
data . MODIFIEDTIME = Convert . ToString ( reader [ "MODIFIEDTIME" ] ) ;
data . REMARK = Convert . ToString ( reader [ "REMARK" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#region WorkFlow_UserPath列表
static public List < WorkFlowUserPathmb > GetUserPathList ( string WorkFlowID )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select id,Up.userid,u.showname username,u.DEPTNAME,workflowtypeno,workflowid,'' workflowname " ) ;
strSql . Append ( " from workflow_userpath up " ) ;
strSql . Append ( " left join VW_user u on u.userid=up.USERID " ) ;
if ( ! string . IsNullOrEmpty ( WorkFlowID ) )
{
strSql . Append ( " where workflowid='" + WorkFlowID + "'" ) ;
}
return SetUserPathData ( strSql ) ;
}
private static List < WorkFlowUserPathmb > SetUserPathData ( StringBuilder strSql )
{
var headList = new List < WorkFlowUserPathmb > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
WorkFlowUserPathmb data = new WorkFlowUserPathmb ( ) ;
#region Set DB data to Object
data . ID = Convert . ToString ( reader [ "ID" ] ) ;
data . USERID = Convert . ToString ( reader [ "USERID" ] ) ;
data . USERNAME = Convert . ToString ( reader [ "USERNAME" ] ) ;
data . DEPTNAME = Convert . ToString ( reader [ "DEPTNAME" ] ) ;
data . WORKFLOWID = Convert . ToString ( reader [ "WORKFLOWID" ] ) ;
data . WORKFLOWTYPENO = Convert . ToString ( reader [ "WORKFLOWTYPENO" ] ) ;
data . WORKFLOWNAME = Convert . ToString ( reader [ "WORKFLOWNAME" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#region WorkFlow_UserState列表( userpath)
static public List < WorkFlowUserPathmb > GetUserStateList ( string WorkFlowID )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select up.id,U.userid,up.workflowid,u.showname username,u.DEPTNAME,w.NAME WORKFLOWNAME,up.WORKFLOWTYPENO from VW_user u " ) ;
strSql . Append ( " left join workflow_UserPath Up on u.userid=up.USERID and up.workflowTypeNO=(select type from workflow where gid='" + WorkFlowID + "') " ) ;
strSql . Append ( " left join workflow_type wt on wt.TYPENO=up.workflowtypeno " ) ;
strSql . Append ( " left join workflow w on w.GID=up.WORKFLOWID where " ) ;
strSql . Append ( " U.userid not in(select userid from workflow_UserPath where workflowid='" + WorkFlowID + "') " ) ;
strSql . Append ( " and u.userid in (select userid from user_company where companyid=(select companyid from workflow where gid='" + WorkFlowID + "')) " ) ;
//strSql.Append(" and u.ISDISABLE=0 ");
//if (!string.IsNullOrEmpty(WorkFlowID))
//{
// strSql.Append(" where " + WorkFlowID);
//}
return SetUserPathData ( strSql ) ;
}
# endregion
#region 修改userpath
static public Resultmb SaveUserPath ( string WORKFLOWTYPENO , string WorkFlowID , String USERIDList )
{
var strSql = new StringBuilder ( ) ;
var _count = 0 ;
var _Result = new Resultmb ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
strSql . Append ( " delete from workflow_userpath where WORKFLOWTYPENO='" + WORKFLOWTYPENO + "' and userid in (" + USERIDList + ") and workflowID not in (select GID FROM workflow WHERE ISNULL(ISCONDITION,0)=1)" ) ;
// strSql.Append(" delete from workflow_userpath where WORKFLOWTYPENO='" + WORKFLOWTYPENO + "' and userid in(" + USERIDList + ") ");
strSql . Append ( " insert into workflow_userpath select gid,'" + WORKFLOWTYPENO + "','" + WorkFlowID + "' from [user] " ) ;
strSql . Append ( " where gid in(" + USERIDList + ")" ) ;
try
{
_count = db . ExecuteNonQuery ( CommandType . Text , strSql . ToString ( ) ) ;
_Result . totalCount = _count ;
}
catch ( Exception ee )
{
_Result . Success = false ;
_Result . Message = ee . Message ;
}
return _Result ;
}
static public Resultmb DelUserPath ( string WORKFLOWTYPENO , string WorkFlowID , String USERIDList )
{
var strSql = new StringBuilder ( ) ;
var _count = 0 ;
var _Result = new Resultmb ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
strSql . Append ( " delete from workflow_userpath where WORKFLOWTYPENO='" + WORKFLOWTYPENO + "' and userid in(" + USERIDList + ")" ) ;
try
{
_count = db . ExecuteNonQuery ( CommandType . Text , strSql . ToString ( ) ) ;
_Result . totalCount = _count ;
}
catch ( Exception ee )
{
_Result . Success = false ;
_Result . Message = ee . Message ;
}
return _Result ;
}
# endregion
#region 删除WorkFlow
static public int DeleteWorkFlow ( string GID )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " delete from WorkFlow where gid = '" + GID + "'" ) ;
strSql . Append ( " delete from WorkFlow_step where workflowid = '" + GID + "'" ) ;
strSql . Append ( " delete from workflow_UserPath where workflowid = '" + GID + "'" ) ;
var _count = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
_count = db . ExecuteNonQuery ( CommandType . Text , strSql . ToString ( ) ) ;
return _count ;
}
# endregion
#region 增加wolkflow_type
static public int AddType ( string GID )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " insert into [workFlow_Type] (GID) values('" + GID + "')" ) ;
return setAddType ( strSql ) ; //ExecuteNonQuery
}
private static int setAddType ( StringBuilder strSql )
{
var _count = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
_count = db . ExecuteNonQuery ( CommandType . Text , strSql . ToString ( ) ) ;
return _count ;
}
# endregion
#region 设置某workflow_type的默认workflow
static public int SetDefaultStep ( string TYPE , string companyid )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " update workflow set isdefault=0 where type=" + TYPE + " and companyid='" + companyid + "' " ) ;
return SetDefaultStep ( strSql ) ; //ExecuteNonQuery
}
private static int SetDefaultStep ( StringBuilder strSql )
{
var _count = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
_count = db . ExecuteNonQuery ( CommandType . Text , strSql . ToString ( ) ) ;
return _count ;
}
# endregion
#region [查询]看是否有未完成的该工作流审批
static public List < WorkFlow_Usingmb > GetWorkFlowInUsingList ( string WorkFlowID )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select * from workflow_using " ) ;
strSql . Append ( " where workflowid='" + WorkFlowID + "' and FINISHED=0 " ) ;
//strSql.Append(" and (wd.isdelete is null or wd.isdelete=0 ) ");
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
}
public partial class WorkLogDAL {
#region WorkLog列表
static public List < WorkLogmb > GetWorkLog ( string strCondition , string sort = null )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select GID,BSNO,(select showname from [user] where [user].GID=WorkLog.OP) OP,dbo.trimtime(OPDATE) OPDATE,ACTNAME,ACTRESULT,REMARK " ) ;
strSql . Append ( " FROM WorkLog " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where " + strCondition ) ;
}
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by OPDATE desc " ) ;
}
return SetLogData ( strSql ) ;
}
static public WorkLogmb GetTypeData ( string condition )
{
var list = GetWorkLog ( condition ) ;
if ( list . Count > 0 )
return list [ 0 ] ;
return new WorkLogmb ( ) ;
}
private static List < WorkLogmb > SetLogData ( StringBuilder strSql )
{
var headList = new List < WorkLogmb > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
WorkLogmb data = new WorkLogmb ( ) ;
#region Set DB data to Object
data . GID = Convert . ToString ( reader [ "GID" ] ) ;
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
data . OP = Convert . ToString ( reader [ "OP" ] ) ;
data . OPDATE = Convert . ToString ( reader [ "OPDATE" ] ) ;
data . ACTNAME = Convert . ToString ( reader [ "ACTNAME" ] ) ;
data . ACTRESULT = Convert . ToString ( reader [ "ACTRESULT" ] ) ;
data . REMARK = Convert . ToString ( reader [ "REMARK" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
/ *
public Boolean WriteWorkLog ( WorkLogmb WorkLog )
{
WorkLog . DbOperationType = DbOperationType . DbotIns ;
WorkLog . ModelUIStatus = "I" ;
WorkLog . GID = System . Guid . NewGuid ( ) . ToString ( ) ;
WorkLog . OP = Convert . ToString ( Session [ "SHOWNAME" ] ) ;
WorkLog . OPDATE = DateTime . Now . ToLocalTime ( ) . ToString ( ) ;
var modb = new ModelObjectRepository ( ) ;
DBResult result = modb . Save ( WorkLog ) ;
return result . Success ;
} * /
# endregion
}
}