/*******************************************************************************
* Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:HRModuleLogic.cs
* 2.功能描述:员工管理查询逻辑处理
* 编辑履历:
* 作者 日期 版本 修改内容
* 王鑫 2014/09/12 1.00 新建
*******************************************************************************/
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using Dongke.IBOSS.PRD.Basics.BaseResources;
using Dongke.IBOSS.PRD.Basics.DataAccess;
using Dongke.IBOSS.PRD.Basics.Library;
using Dongke.IBOSS.PRD.Service.DataModels;
using Dongke.IBOSS.PRD.WCF.DataModels;
using Dongke.IBOSS.PRD.WCF.DataModels.HRModule;
using Oracle.ManagedDataAccess.Client;
namespace Dongke.IBOSS.PRD.Service.HRModuleLogic
{
///
/// 员工管理查询逻辑处理
///
public static class HRModuleLogic
{
#region 员工档案
///
/// 员工当案一览
///
/// 员工档案实体类/param>
/// 用户基本信息
/// DataSet
public static DataSet SearchHrStaff(SearchStaffEntity pSearchStaff, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
var strValueFlag = "";
if (pSearchStaff.ValueFlag != null)
{
if (pSearchStaff.ValueFlag.Value)
{
strValueFlag = "1";
}
else
{
strValueFlag = "0";
}
}
string strIdList = string.Empty;
if (pSearchStaff.RStaffRecordIDList != null && pSearchStaff.RStaffRecordIDList.Length > 0)
{
strIdList = DataConvert.ConvertListToSqlInWhere(pSearchStaff.RStaffRecordIDList);
}
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("in_accountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
new OracleParameter("in_sStaffID", OracleDbType.Int32, pSearchStaff.StaffID, ParameterDirection.Input),
new OracleParameter("in_sStaffCode", OracleDbType.Varchar2, pSearchStaff.StaffCode, ParameterDirection.Input),
new OracleParameter("in_sStaffName", OracleDbType.Varchar2, pSearchStaff.StaffName, ParameterDirection.Input),
new OracleParameter("in_sIDCardNo", OracleDbType.Varchar2, pSearchStaff.IDCardNo, ParameterDirection.Input),
new OracleParameter("in_sStartBirthday", OracleDbType.Date, pSearchStaff.StartBirthday, ParameterDirection.Input),
new OracleParameter("in_sEndBirthday", OracleDbType.Date, pSearchStaff.EndBirthday, ParameterDirection.Input),
new OracleParameter("in_sGender", OracleDbType.Varchar2, pSearchStaff.Gender, ParameterDirection.Input),
new OracleParameter("in_sMaritalStatus", OracleDbType.Int32, pSearchStaff.MaritalStatus, ParameterDirection.Input),
new OracleParameter("in_sHomeTown", OracleDbType.Varchar2, pSearchStaff.HomeTown, ParameterDirection.Input),
new OracleParameter("in_sPolicitalStatus", OracleDbType.Varchar2, pSearchStaff.PolicitalStatus, ParameterDirection.Input),
new OracleParameter("in_sNational", OracleDbType.Int32, pSearchStaff.National, ParameterDirection.Input),
new OracleParameter("in_sEducational", OracleDbType.Int32, pSearchStaff.Educational, ParameterDirection.Input),
new OracleParameter("in_sGraduated", OracleDbType.Varchar2, pSearchStaff.Graduated, ParameterDirection.Input),
new OracleParameter("in_sSpecialField", OracleDbType.Varchar2, pSearchStaff.SpecialField, ParameterDirection.Input),
new OracleParameter("in_sTelephone", OracleDbType.Varchar2, pSearchStaff.Telephone, ParameterDirection.Input),
new OracleParameter("in_sValueFlag", OracleDbType.Varchar2, strValueFlag, ParameterDirection.Input),
new OracleParameter("in_sIDList", OracleDbType.Varchar2, strIdList, ParameterDirection.Input),
new OracleParameter("in_staffStatusArray", OracleDbType.Varchar2, pSearchStaff.StaffStatusArray, ParameterDirection.Input),
new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output),
};
con.Open();
DataSet ds = con.ExecStoredProcedure("PRO_HR_SearchHrStaff", paras);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 是否存在相同的员工编码
///
/// 员工编码
/// 用户基本信息
/// DataSet
public static DataSet IsExistsStaffCode(string staffCode, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString = "select 1 from TP_HR_STAFF where accountID=" + sUserInfo.AccountID + " and staffCode='" + staffCode + "'";
DataSet ds = con.GetSqlResultToDs(sqlString);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取员工行数据
///
/// 员工ID
/// DataSet
public static DataSet GetRowData(int staffid)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString = @"select staff.*,jobs.jobsname,organ.organizationname,
p.postname,ss.staffstatusname
from TP_HR_STAFF staff
Left join TP_MST_Jobs jobs
on staff.jobs = jobs.jobsid
Left join TP_MST_Organization organ
on staff.organizationid = organ.organizationid
Left join TP_MST_Post p
on staff.post = p.postid
Left join TP_SYS_StaffStatus ss
on staff.staffstatus = ss.staffstatusid
where staff.staffID=" + staffid;
DataSet ds = con.GetSqlResultToDs(sqlString);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取员工图片
///
/// 用户基本信息
/// 员工ID
///
public static DataSet GetImageByStaffId(SUserInfo sUserInfo, int staffId)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString1 = "SELECT * FROM TP_HR_STAFFPHOTO "
+ " WHERE staffid=: staffID AND accountID=:accountID";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":staffID",OracleDbType.Int32,staffId,ParameterDirection.Input),
new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
};
return con.GetSqlResultToDs(sqlString1, paras);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
#endregion
#region 工资结算
///
/// 根据结算时间获取各基础信息
///
/// 时间信息实体
/// 用户信息
/// 基础信息数据集
public static DataSet GetSalaryData(GetSalaryEntity gsEntity,SUserInfo userInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("In_SalaryDateS", OracleDbType.Date, Convert.ToDateTime(gsEntity.SalaryDateS).Date, ParameterDirection.Input),
new OracleParameter("In_SalaryDateE", OracleDbType.Date, Convert.ToDateTime(gsEntity.SalaryDateE).Date, ParameterDirection.Input),
new OracleParameter("In_AccountID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
new OracleParameter("In_WagesMainId", OracleDbType.Int32, gsEntity.WagesMainId, ParameterDirection.Input),
new OracleParameter("In_WagesMainIdE", OracleDbType.Int32, gsEntity.WagesMainIdE, ParameterDirection.Input),
new OracleParameter("Out_ProductionData", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_StaffAttendance", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_AdminRAP", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_Defect", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_ProgressRAP", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_KilnCar", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_Staff", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_StaffRecord", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_UpStaffRecord", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_DisProductionData", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_ScrapProduct", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_Weight", OracleDbType.RefCursor, ParameterDirection.Output)
};
con.Open();
DataSet ds = con.ExecStoredProcedure("PRO_HR_GetSalaryData", paras);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
public static DataSet GetSettlementMain(GetSalaryEntity gsEntity,SUserInfo userInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("In_SalaryDateS", OracleDbType.Date, gsEntity.SalaryDateS, ParameterDirection.Input),
new OracleParameter("In_SalaryDateE", OracleDbType.Date, gsEntity.SalaryDateE, ParameterDirection.Input),
new OracleParameter("In_AccountID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
new OracleParameter("In_Remarks", OracleDbType.NVarchar2, gsEntity.Remarks, ParameterDirection.Input),
new OracleParameter("Out_SettlementMain", OracleDbType.RefCursor, ParameterDirection.Output)
};
con.Open();
DataSet ds = con.ExecStoredProcedure("PRO_SSM_GetSettlementMain", paras);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
public static DataSet GetSettlementDetail(int MainId)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
String strSql = @"Select TP_SSM_StaffSalary.*,staffInfo.StaffName,organizationInfo.organizationName,
postInfo.postName from TP_SSM_StaffSalary
Inner join TP_HR_Staff staffInfo
on TP_SSM_StaffSalary.StaffID = staffInfo.StaffID
Inner join TP_MST_ORGANIZATION organizationInfo
ON staffInfo.Organizationid = organizationInfo.Organizationid
Inner join TP_MST_POST postInfo
ON staffInfo.Post = postInfo.Postid
where TP_SSM_StaffSalary.SalarySettlementID = " + MainId;
DataSet ds = con.GetSqlResultToDs(strSql, null);
if(MainId == 0)
{
//将基本工资的表结构返回
strSql = "Select * from TP_SSM_BasicSalary where StaffSalaryID = 0";
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
//将出勤考核的表结构带回
strSql = "Select * from TP_SSM_Attendance where StaffSalaryID = 0";
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
//将计件工资的表结构带回
strSql = "Select * from TP_SSM_Wages where StaffSalaryID = 0";
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
//将缺陷扣罚的表结构带回
strSql = "Select * from TP_SSM_DefectFine where StaffSalaryID = 0";
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
//将损坯扣罚的表结构带回
strSql = "Select * from TP_SSM_ScrapFine where StaffSalaryID = 0";
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
//将行政奖惩的表结构带回(总表以及明细表)
strSql = "Select * from TP_SSM_Admin where StaffSalaryID = 0";
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
strSql = "Select * from TP_SSM_AdminDetail where StaffSalaryID = 0";
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
//将进度奖惩的表结构带回(总表以及明细表)
strSql = "Select * from TP_SSM_Progress where StaffSalaryID = 0";
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
strSql = "Select * from TP_SSM_ProgressDetail where StaffSalaryID = 0";
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
//将管理者工资的表结构带回
strSql = "Select * from TP_SSM_ManagerSalary where StaffSalaryID = 0";
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
}
else
{
strSql = "Select * from TP_SSM_SalarySettlement where SalarySettlementID = " + MainId;
ds.Tables.Add(con.GetSqlResultToDt(strSql, null));
}
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 根据员工工资ID以及员工ID,获取员工工资各明细数据集
///
/// 员工工资ID
/// 员工ID
/// 各明细集合
public static DataSet GetStaffSalaryDetail(int StaffSalaryID, int StaffID)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("In_StaffSalaryID", OracleDbType.Int32, StaffSalaryID, ParameterDirection.Input),
new OracleParameter("In_StaffID", OracleDbType.Int32, StaffID, ParameterDirection.Input),
new OracleParameter("Out_BasicSalary", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_Progress", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_Admin", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_Wages", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_DefectFine", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_ScrapFine", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_ManagerSalary", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_ProgressDetail", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("Out_AdminDetail", OracleDbType.RefCursor, ParameterDirection.Output)
};
con.Open();
DataSet ds = con.ExecStoredProcedure("PRO_PM_GetStaffSalaryDetail", paras);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
#endregion
#region 其他方法
///
/// 获取员工和员工履历信息
///
/// 员工实体类
/// 用户基本信息
/// DataSet
public static DataSet SearchHrStaffAndRecord(SearchStaffEntity staffEntity, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
string strIdList = string.Empty;
if (staffEntity.RStaffRecordIDList != null && staffEntity.RStaffRecordIDList.Length > 0)
{
strIdList = DataConvert.ConvertListToSqlInWhere(staffEntity.RStaffRecordIDList);
}
con.Open();
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("in_sStaffID",OracleDbType.Int32,staffEntity.StaffID,ParameterDirection.Input),
new OracleParameter("in_sstaffcode",OracleDbType.Varchar2,staffEntity.StaffCode,ParameterDirection.Input),
new OracleParameter("in_sstaffname",OracleDbType.Varchar2,staffEntity.StaffName,ParameterDirection.Input),
new OracleParameter("in_sidcardno",OracleDbType.Varchar2,staffEntity.IDCardNo,ParameterDirection.Input),
new OracleParameter("in_sstartbirthday",OracleDbType.Date,staffEntity.StartBirthday,ParameterDirection.Input),
new OracleParameter("in_sendbirthday",OracleDbType.Date,staffEntity.EndBirthday,ParameterDirection.Input),
new OracleParameter("in_sgender",OracleDbType.Varchar2,staffEntity.Gender,ParameterDirection.Input),
new OracleParameter("in_smaritalstatus",OracleDbType.Int32,staffEntity.MaritalStatus,ParameterDirection.Input),
new OracleParameter("in_shometown",OracleDbType.Varchar2,staffEntity.HomeTown,ParameterDirection.Input),
new OracleParameter("in_spolicitalstatus",OracleDbType.Varchar2,staffEntity.PolicitalStatus,ParameterDirection.Input),
new OracleParameter("in_snational",OracleDbType.Int32,staffEntity.National,ParameterDirection.Input),
new OracleParameter("in_seducational",OracleDbType.Int32,staffEntity.Educational,ParameterDirection.Input),
new OracleParameter("in_sgraduated",OracleDbType.Varchar2,staffEntity.Graduated,ParameterDirection.Input),
new OracleParameter("in_sspecialfield",OracleDbType.Varchar2,staffEntity.SpecialField,ParameterDirection.Input),
new OracleParameter("in_stelephone",OracleDbType.Varchar2,staffEntity.Telephone,ParameterDirection.Input),
new OracleParameter("in_rStaffRecordID",OracleDbType.Int32,staffEntity.RStaffRecordID,ParameterDirection.Input),
new OracleParameter("in_rrecordtype",OracleDbType.Int32,staffEntity.Recordtype,ParameterDirection.Input),
new OracleParameter("in_rvalueflag",OracleDbType.Int32,staffEntity.RValueflag,ParameterDirection.Input),
new OracleParameter("in_sIDList", OracleDbType.Varchar2, strIdList, ParameterDirection.Input),
new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
};
DataSet ds = con.ExecStoredProcedure("PRO_HR_SearchHrStaffAndRecord", paras);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取员工信息中审批信息
///
/// 员工实体类
/// 用户基本信息
/// DataSet
public static DataSet SearchHrStaffApprove(SearchStaffEntity staffEntity, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
string strIdList = string.Empty;
if (staffEntity.RStaffRecordIDList != null && staffEntity.RStaffRecordIDList.Length > 0)
{
strIdList = DataConvert.ConvertListToSqlInWhere(staffEntity.RStaffRecordIDList);
}
con.Open();
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("in_userid ",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("in_sStaffID",OracleDbType.Int32,staffEntity.StaffID,ParameterDirection.Input),
new OracleParameter("in_sstaffcode",OracleDbType.Varchar2,staffEntity.StaffCode,ParameterDirection.Input),
new OracleParameter("in_sstaffname",OracleDbType.Varchar2,staffEntity.StaffName,ParameterDirection.Input),
new OracleParameter("in_sidcardno",OracleDbType.Varchar2,staffEntity.IDCardNo,ParameterDirection.Input),
new OracleParameter("in_sstartbirthday",OracleDbType.Date,staffEntity.StartBirthday,ParameterDirection.Input),
new OracleParameter("in_sendbirthday",OracleDbType.Date,staffEntity.EndBirthday,ParameterDirection.Input),
new OracleParameter("in_sgender",OracleDbType.Varchar2,staffEntity.Gender,ParameterDirection.Input),
new OracleParameter("in_smaritalstatus",OracleDbType.Int32,staffEntity.MaritalStatus,ParameterDirection.Input),
new OracleParameter("in_shometown",OracleDbType.Varchar2,staffEntity.HomeTown,ParameterDirection.Input),
new OracleParameter("in_spolicitalstatus",OracleDbType.Varchar2,staffEntity.PolicitalStatus,ParameterDirection.Input),
new OracleParameter("in_snational",OracleDbType.Int32,staffEntity.National,ParameterDirection.Input),
new OracleParameter("in_seducational",OracleDbType.Int32,staffEntity.Educational,ParameterDirection.Input),
new OracleParameter("in_sgraduated",OracleDbType.Varchar2,staffEntity.Graduated,ParameterDirection.Input),
new OracleParameter("in_sspecialfield",OracleDbType.Varchar2,staffEntity.SpecialField,ParameterDirection.Input),
new OracleParameter("in_stelephone",OracleDbType.Varchar2,staffEntity.Telephone,ParameterDirection.Input),
new OracleParameter("in_rStaffRecordID",OracleDbType.Int32,staffEntity.RStaffRecordID,ParameterDirection.Input),
new OracleParameter("in_rrecordtype",OracleDbType.Int32,staffEntity.Recordtype,ParameterDirection.Input),
new OracleParameter("in_rvalueflag",OracleDbType.Int32,staffEntity.RValueflag,ParameterDirection.Input),
new OracleParameter("in_sIDList", OracleDbType.Varchar2, strIdList, ParameterDirection.Input),
new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
};
DataSet ds = con.ExecStoredProcedure("PRO_HR_SearchHrStaffApprove", paras);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 根据工号查询员工档案信息
///
/// 员工ID
/// 用户基本信息
/// DataSet
///
/// 作者 日期 内容
/// 冯雪 2014-9-23 新建
///
public static DataSet SearchHrStaffInfo(int userId, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string strSql = " SELECT TUser.userid,Staff.Staffid,Staff.Staffname,Staff.Organizationid,"
+ " Staff.Jobs,Staff.Staffstatus,Staff.Staffcode,'' Remarks,"
+ " (CASE Staff.staffStatus"
+ " WHEN 0 THEN '未入职'"
+ " WHEN 1 THEN '试用 '"
+ " WHEN 2 THEN '转正'"
+ " WHEN 3 THEN '离职'"
+ " ELSE '' END) AS staffStatusName,"
+ " Jobs.Jobsname,Org.Organizationname,TUser.UserCode,TUserJobs.Jobsname as UJobsName,TUserJobs.JobsId as UJobsId"
+ " FROM TP_HR_Staff Staff "
+ " LEFT JOIN TP_MST_Jobs Jobs ON Jobs.Jobsid = Staff.Jobs "
+ " LEFT JOIN TP_MST_Organization Org ON Org.Organizationid = Staff.Organizationid "
+ " LEFT JOIN TP_MST_UserStaff TUserStaff on TUserStaff.StaffID = Staff.StaffID "
+ " LEFT JOIN TP_MST_User TUser on TUserStaff.Userid = TUser.Userid"
+ " LEFT JOIN TP_MST_Jobs TUserJobs on TUserJobs.Jobsid = TUserStaff.Ujobsid"
+ " WHERE Staff.Accountid = :accountID "
+ " AND TUser.Userid = :userId"
+ " AND Staff.Staffstatus in(1,2)";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":accountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":userId", OracleDbType.Int32, userId, ParameterDirection.Input),
};
DataSet ds = con.GetSqlResultToDs(strSql, paras);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 根据查询非工号下的员工档案信息
///
/// 员工查询实体
/// 用户基本信息
/// DataSet
public static DataSet SearchStaffInfo(SearchStaffEntity searchStaffEntity, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string strSql = " SELECT Staff.Staffid,Staff.Staffname,Staff.Organizationid,"
+ " Staff.Jobs,Staff.Staffstatus,Staff.Staffcode, Staff.Post,"
+ " (CASE Staff.staffStatus"
+ " WHEN 0 THEN '未入职'"
+ " WHEN 1 THEN '试用 '"
+ " WHEN 2 THEN '转正'"
+ " WHEN 3 THEN '离职'"
+ " ELSE '' END) AS staffStatusName,"
+ " Jobs.Jobsname,Org.Organizationname,Org.OrganizationFullName,Post.PostName,0 Sel"
+ " FROM TP_HR_Staff Staff"
+ " LEFT JOIN TP_MST_Jobs Jobs ON Jobs.Jobsid = Staff.Jobs "
+ " LEFT JOIN TP_MST_Organization Org ON Org.Organizationid = Staff.Organizationid "
+ " LEFT JOIN TP_MST_Post Post on Post.Postid = Staff.Post "
+ " WHERE Staff.Accountid = :accountID "
+ " AND Staff.Staffstatus in(1,2)"
+ " AND (Staff.Jobs = :jobs OR :jobs is null)";
if (!string.IsNullOrEmpty(searchStaffEntity.StaffCode))
{
strSql += " AND Staff.Staffcode like '%" + searchStaffEntity.StaffCode + "%'";
}
if (!string.IsNullOrEmpty(searchStaffEntity.StaffName))
{
strSql += " AND Staff.Staffname like '%" + searchStaffEntity.StaffName + "%'";
}
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":accountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":jobs", OracleDbType.Int32, searchStaffEntity.Jobs, ParameterDirection.Input),
new OracleParameter(":jobs", OracleDbType.Int32, searchStaffEntity.Jobs, ParameterDirection.Input),
};
DataSet ds = con.GetSqlResultToDs(strSql, paras);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
#region 员工履历
///
/// 获了员工履历行数据
///
/// 员工履历ID
/// DataSet
public static DataSet GetStaffRecorsRowData(int staffrecordid)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString = "select TP_HR_STAFFRECORD.*,tp_mst_organization.organizationcode, tp_mst_organization.organizationname,TP_HR_STAFF.StaffName as ApplicantName,A.StaffName from TP_HR_STAFFRECORD left join tp_mst_organization on TP_HR_STAFFRECORD.OriginalOrganizationID=tp_mst_organization.organizationid left join TP_HR_STAFF on TP_HR_STAFFRECORD.Applicant=TP_HR_STAFF.StaffID left join TP_HR_STAFF A on TP_HR_STAFFRECORD.StaffID=A.StaffID where TP_HR_STAFFRECORD.StaffRecordID=" + staffrecordid;
DataSet ds = con.GetSqlResultToDs(sqlString);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
#endregion
#region 员工考勤
///
/// 根据传入的查询实体获取员工考勤表中的数据
///
/// 查询实体
/// 用户基本信息
/// DataSet员工考勤数据集集合
public static DataSet SearcStaffAttendance(SearchAttendanceEntity searchAttendanceEntity, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("in_StaffID",OracleDbType.Int32,searchAttendanceEntity.StaffID,ParameterDirection.Input),
new OracleParameter("in_sIDCardNo",OracleDbType.Varchar2,searchAttendanceEntity.IDCardNo,ParameterDirection.Input),
new OracleParameter("in_sStartBirthday",OracleDbType.Date,searchAttendanceEntity.StartBirthday,ParameterDirection.Input),
new OracleParameter("in_sEndBirthday",OracleDbType.Date,searchAttendanceEntity.EndBirthday,ParameterDirection.Input),
new OracleParameter("in_sGender",OracleDbType.Varchar2,searchAttendanceEntity.Gender,ParameterDirection.Input),
new OracleParameter("in_sMaritalStatus",OracleDbType.Int32,searchAttendanceEntity.MaritalStatus,ParameterDirection.Input),
new OracleParameter("in_sHomeTown",OracleDbType.Varchar2,searchAttendanceEntity.HomeTown,ParameterDirection.Input),
new OracleParameter("in_sPolicitalStatus",OracleDbType.Varchar2,searchAttendanceEntity.PolicitalStatus,ParameterDirection.Input),
new OracleParameter("in_sNational",OracleDbType.Int32,searchAttendanceEntity.National,ParameterDirection.Input),
new OracleParameter("in_sEducational",OracleDbType.Int32,searchAttendanceEntity.Educational,ParameterDirection.Input),
new OracleParameter("in_sGraduated",OracleDbType.Varchar2,searchAttendanceEntity.Graduated,ParameterDirection.Input),
new OracleParameter("in_sSpecialField",OracleDbType.Varchar2,searchAttendanceEntity.SpecialField,ParameterDirection.Input),
new OracleParameter("in_sTelephone",OracleDbType.Varchar2,searchAttendanceEntity.Telephone,ParameterDirection.Input),
new OracleParameter("in_sStartAttendanceDate",OracleDbType.Date,searchAttendanceEntity.StartAttendanceDate,ParameterDirection.Input),
new OracleParameter("in_sEndAttendanceDate",OracleDbType.Date,searchAttendanceEntity.EndAttendanceDate,ParameterDirection.Input),
new OracleParameter("in_sCardNumber",OracleDbType.Varchar2,searchAttendanceEntity.CardNumber,ParameterDirection.Input),
new OracleParameter("in_sAttendanceStatus",OracleDbType.Char,searchAttendanceEntity.AttendanceStatus,ParameterDirection.Input),
new OracleParameter("in_sAbsenceReason",OracleDbType.Char,searchAttendanceEntity.AbsenceReason,ParameterDirection.Input),
new OracleParameter("in_sSettlementFlag",OracleDbType.Char,searchAttendanceEntity.SettlementFlag,ParameterDirection.Input),
new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
};
return con.ExecStoredProcedure("PRO_HR_StaffAttendance", paras);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取员工员工考勤编辑信息
///
/// 查询实体
/// 用户基本信息
/// DataSet员工考勤数据集集合
public static DataSet SearcStaffAttendanceForEdit(SearchAttendanceEntity searchAttendanceEntity, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
#region 获取员工的已有考勤信息 到dsAttenance中
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("in_StaffID",OracleDbType.Int32,searchAttendanceEntity.StaffID,ParameterDirection.Input),
new OracleParameter("in_sIDCardNo",OracleDbType.Varchar2,searchAttendanceEntity.IDCardNo,ParameterDirection.Input),
new OracleParameter("in_sStartBirthday",OracleDbType.Date,searchAttendanceEntity.StartBirthday,ParameterDirection.Input),
new OracleParameter("in_sEndBirthday",OracleDbType.Date,searchAttendanceEntity.EndBirthday,ParameterDirection.Input),
new OracleParameter("in_sGender",OracleDbType.Varchar2,searchAttendanceEntity.Gender,ParameterDirection.Input),
new OracleParameter("in_sMaritalStatus",OracleDbType.Int32,searchAttendanceEntity.MaritalStatus,ParameterDirection.Input),
new OracleParameter("in_sHomeTown",OracleDbType.Varchar2,searchAttendanceEntity.HomeTown,ParameterDirection.Input),
new OracleParameter("in_sPolicitalStatus",OracleDbType.Varchar2,searchAttendanceEntity.PolicitalStatus,ParameterDirection.Input),
new OracleParameter("in_sNational",OracleDbType.Int32,searchAttendanceEntity.National,ParameterDirection.Input),
new OracleParameter("in_sEducational",OracleDbType.Int32,searchAttendanceEntity.Educational,ParameterDirection.Input),
new OracleParameter("in_sGraduated",OracleDbType.Varchar2,searchAttendanceEntity.Graduated,ParameterDirection.Input),
new OracleParameter("in_sSpecialField",OracleDbType.Varchar2,searchAttendanceEntity.SpecialField,ParameterDirection.Input),
new OracleParameter("in_sTelephone",OracleDbType.Varchar2,searchAttendanceEntity.Telephone,ParameterDirection.Input),
new OracleParameter("in_sStartAttendanceDate",OracleDbType.Date,searchAttendanceEntity.StartAttendanceDate,ParameterDirection.Input),
new OracleParameter("in_sEndAttendanceDate",OracleDbType.Date,searchAttendanceEntity.EndAttendanceDate,ParameterDirection.Input),
new OracleParameter("in_sCardNumber",OracleDbType.Varchar2,searchAttendanceEntity.CardNumber,ParameterDirection.Input),
new OracleParameter("in_sAttendanceStatus",OracleDbType.Char,searchAttendanceEntity.AttendanceStatus,ParameterDirection.Input),
new OracleParameter("in_sAbsenceReason",OracleDbType.Char,searchAttendanceEntity.AbsenceReason,ParameterDirection.Input),
new OracleParameter("in_sSettlementFlag",OracleDbType.Char,searchAttendanceEntity.SettlementFlag,ParameterDirection.Input),
new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
};
DataSet dsAttenance = con.ExecStoredProcedure("PRO_HR_StaffAttendance", paras);
#endregion
DataTable dtStaffAttend = dsAttenance.Tables[0].Clone();
DataSet dsStaffAttendance = new DataSet();
dsStaffAttendance.Tables.Add(dtStaffAttend);
if (searchAttendanceEntity.StaffID == null || searchAttendanceEntity.StartAttendanceDate == null
|| searchAttendanceEntity.EndAttendanceDate == null)
{
return dsStaffAttendance;
}
#region 获取员工信息 到dtStaff中
string strSql1 = "Select TP_HR_Staff.STAFFID,"
+ " TP_HR_Staff.StaffCode,"
+ " TP_HR_Staff.StaffName,"
+ " TP_HR_Staff.IDCardNo"
+ " From TP_HR_Staff"
+ " Where TP_HR_Staff.StaffID = :pStaffID AND TP_HR_Staff.Accountid = :pAccountid";
OracleParameter[] paras1 = new OracleParameter[]{
new OracleParameter(":pStaffID",OracleDbType.Int32,searchAttendanceEntity.StaffID,ParameterDirection.Input),
new OracleParameter(":pAccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
};
DataTable dtStaff = con.GetSqlResultToDt(strSql1, paras1);
#endregion
#region 对相关属性进行赋值
foreach (DataRow newRowStaff in dtStaff.Rows)
{
DateTime dtBegin = searchAttendanceEntity.StartAttendanceDate.Value;
DateTime dtEnd = searchAttendanceEntity.EndAttendanceDate.Value;
if (dtEnd >= DateTime.Now)
{
dtEnd = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
}
for (DateTime dtItem = dtBegin; dtItem <= dtEnd; dtItem = dtItem.AddDays(1))
{
DataRow newRowAtt = dtStaffAttend.NewRow();
newRowAtt["StaffID"] = newRowStaff["StaffID"];
newRowAtt["StaffCode"] = newRowStaff["StaffCode"];
newRowAtt["StaffName"] = newRowStaff["StaffName"];
newRowAtt["IDCardNo"] = newRowStaff["IDCardNo"];
newRowAtt["AttendanceDate"] = dtItem;
newRowAtt["CardNumber"] = string.Empty;
newRowAtt["AttendanceStatus"] = 1;
newRowAtt["AttendanceStatusName"] = "全天";
newRowAtt["AbsenceReason"] = 4;
newRowAtt["AbsenceReasonName"] = "其它";
newRowAtt["TardinessTimes"] = 0;
newRowAtt["SettlementFlag"] = 0;
newRowAtt["SettlementFlagName"] = "未结算";
newRowAtt["REMARKS"] = string.Empty;
if (dsAttenance != null && dsAttenance.Tables.Count > 0)
{
if (dsAttenance.Tables[0].Rows.Count > 0)
{
string strWhere = "StaffID = " + dsAttenance.Tables[0].Rows[0]["StaffID"].ToString()
+ " And AttendanceDate = '" + dtItem + "'";
DataRow[] rowAttendances = dsAttenance.Tables[0].Select(strWhere);
if (rowAttendances != null & rowAttendances.Length > 0)
{
newRowAtt["CardNumber"] = rowAttendances[0]["CardNumber"];
newRowAtt["AttendanceStatus"] = rowAttendances[0]["AttendanceStatus"];
newRowAtt["AttendanceStatusName"] = rowAttendances[0]["AttendanceStatusName"];
newRowAtt["AbsenceReason"] = rowAttendances[0]["AbsenceReason"];
newRowAtt["AbsenceReasonName"] = rowAttendances[0]["AbsenceReasonName"];
newRowAtt["TardinessTimes"] = rowAttendances[0]["TardinessTimes"];
newRowAtt["SettlementFlag"] = rowAttendances[0]["SettlementFlag"];
newRowAtt["SettlementFlagName"] = rowAttendances[0]["SettlementFlagName"];
newRowAtt["REMARKS"] = rowAttendances[0]["REMARKS"];
newRowAtt["CREATETIME"] = rowAttendances[0]["CREATETIME"];
newRowAtt["CREATEUSERID"] = rowAttendances[0]["CREATEUSERID"];
newRowAtt["UPDATETIME"] = rowAttendances[0]["UPDATETIME"];
newRowAtt["UPDATEUSERID"] = rowAttendances[0]["UPDATEUSERID"];
newRowAtt["OPTIMESTAMP"] = rowAttendances[0]["OPTIMESTAMP"];
newRowAtt["CreateUserCode"] = rowAttendances[0]["CreateUserCode"];
newRowAtt["CreateUserName"] = rowAttendances[0]["CreateUserName"];
newRowAtt["UpdateUserCode"] = rowAttendances[0]["UpdateUserCode"];
newRowAtt["UpdateUserName"] = rowAttendances[0]["UpdateUserName"];
}
}
}
int? intStaffID = null;
if (!string.IsNullOrEmpty(newRowAtt["StaffID"].ToString()))
{
intStaffID = Convert.ToInt32(newRowAtt["StaffID"].ToString());
}
bool bolSettlementFlag = GetStaffAttendanceIsSettlementFlag(con, intStaffID, dtItem, sUserInfo);
if (!bolSettlementFlag)
{
dtStaffAttend.Rows.Add(newRowAtt);
}
}
}
#endregion
return dsStaffAttendance;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 将导入Excel中的数据转换为GridView显示的数据集
///
/// Excel中的数据员工集合
/// 用户基本信息
/// DataSet员工考勤信息表
public static DataSet GetStaffAttendanceInfoForExcel(DataTable pStaff, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
#region 获取员工的已有考勤信息 到dsAttenance中
SearchAttendanceEntity searchAttendanceEntity = new SearchAttendanceEntity();
searchAttendanceEntity.StaffID = -999;
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("in_StaffID",OracleDbType.Int32,searchAttendanceEntity.StaffID,ParameterDirection.Input),
new OracleParameter("in_sIDCardNo",OracleDbType.Varchar2,searchAttendanceEntity.IDCardNo,ParameterDirection.Input),
new OracleParameter("in_sStartBirthday",OracleDbType.Date,searchAttendanceEntity.StartBirthday,ParameterDirection.Input),
new OracleParameter("in_sEndBirthday",OracleDbType.Date,searchAttendanceEntity.EndBirthday,ParameterDirection.Input),
new OracleParameter("in_sGender",OracleDbType.Varchar2,searchAttendanceEntity.Gender,ParameterDirection.Input),
new OracleParameter("in_sMaritalStatus",OracleDbType.Int32,searchAttendanceEntity.MaritalStatus,ParameterDirection.Input),
new OracleParameter("in_sHomeTown",OracleDbType.Varchar2,searchAttendanceEntity.HomeTown,ParameterDirection.Input),
new OracleParameter("in_sPolicitalStatus",OracleDbType.Varchar2,searchAttendanceEntity.PolicitalStatus,ParameterDirection.Input),
new OracleParameter("in_sNational",OracleDbType.Int32,searchAttendanceEntity.National,ParameterDirection.Input),
new OracleParameter("in_sEducational",OracleDbType.Int32,searchAttendanceEntity.Educational,ParameterDirection.Input),
new OracleParameter("in_sGraduated",OracleDbType.Varchar2,searchAttendanceEntity.Graduated,ParameterDirection.Input),
new OracleParameter("in_sSpecialField",OracleDbType.Varchar2,searchAttendanceEntity.SpecialField,ParameterDirection.Input),
new OracleParameter("in_sTelephone",OracleDbType.Varchar2,searchAttendanceEntity.Telephone,ParameterDirection.Input),
new OracleParameter("in_sStartAttendanceDate",OracleDbType.Date,searchAttendanceEntity.StartAttendanceDate,ParameterDirection.Input),
new OracleParameter("in_sEndAttendanceDate",OracleDbType.Date,searchAttendanceEntity.EndAttendanceDate,ParameterDirection.Input),
new OracleParameter("in_sCardNumber",OracleDbType.Varchar2,searchAttendanceEntity.CardNumber,ParameterDirection.Input),
new OracleParameter("in_sAttendanceStatus",OracleDbType.Char,searchAttendanceEntity.AttendanceStatus,ParameterDirection.Input),
new OracleParameter("in_sAbsenceReason",OracleDbType.Char,searchAttendanceEntity.AbsenceReason,ParameterDirection.Input),
new OracleParameter("in_sSettlementFlag",OracleDbType.Char,searchAttendanceEntity.SettlementFlag,ParameterDirection.Input),
new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
};
DataSet dsAttenance = con.ExecStoredProcedure("PRO_HR_StaffAttendance", paras);
#endregion
foreach (DataRow newRowStaff in pStaff.Rows)
{
DataRow newStaffAnce = dsAttenance.Tables[0].NewRow();
foreach (DataColumn newColStaff in pStaff.Columns)
{
#region 设置对应的值到表格中
string strColValue = newRowStaff[newColStaff.ColumnName].ToString();
if ("员工编号".Equals(newColStaff.ColumnName))
{
#region 根据员工编号获取员工相关信息保存到dtStaffInfo中
string strSql1 = "Select TP_HR_Staff.StaffID,"
+ " TP_HR_Staff.Staffcode,"
+ " TP_HR_Staff.StaffName,"
+ " TP_HR_Staff.IDCardNo"
+ " From TP_HR_Staff"
+ " Where TP_HR_Staff.Accountid = :pAccountid And TP_HR_Staff.Staffcode = :pStaffcode";
OracleParameter[] paras1 = new OracleParameter[]{
new OracleParameter("pAccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("pStaffcode",OracleDbType.Varchar2,strColValue,ParameterDirection.Input),
};
DataTable dtStaffInfo = con.GetSqlResultToDt(strSql1, paras1);
#endregion
newStaffAnce["StaffCode"] = strColValue;
if (dtStaffInfo != null && dtStaffInfo.Rows.Count > 0)
{
newStaffAnce["StaffID"] = dtStaffInfo.Rows[0]["StaffID"];
newStaffAnce["StaffName"] = dtStaffInfo.Rows[0]["StaffName"];
newStaffAnce["IDCardNo"] = dtStaffInfo.Rows[0]["IDCardNo"];
}
}
else if ("考勤日期".Equals(newColStaff.ColumnName))
{
DateTime dtMeal = Convert.ToDateTime(strColValue);
newStaffAnce["AttendanceDate"] = new DateTime(dtMeal.Year, dtMeal.Month, dtMeal.Day);
}
else if ("考勤卡号".Equals(newColStaff.ColumnName))
{
newStaffAnce["CardNumber"] = strColValue;
}
else if ("出勤状态".Equals(newColStaff.ColumnName))
{
//1:全天 2:半天 3:缺勤
if ("全天".Equals(strColValue))
{
newStaffAnce["AttendanceStatus"] = 1;
newStaffAnce["AttendanceStatusName"] = "全天";
}
else if ("半天".Equals(strColValue))
{
newStaffAnce["AttendanceStatus"] = 2;
newStaffAnce["AttendanceStatusName"] = "半天";
}
else if ("缺勤".Equals(strColValue))
{
newStaffAnce["AttendanceStatus"] = 3;
newStaffAnce["AttendanceStatusName"] = "缺勤";
}
else
{
newStaffAnce["AttendanceStatus"] = string.Empty;
newStaffAnce["AttendanceStatusName"] = string.Empty;
}
}
else if ("缺勤原因".Equals(newColStaff.ColumnName))
{
//0:休息 1:病假 2:事假 3:旷工
if ("休息".Equals(strColValue))
{
newStaffAnce["AbsenceReason"] = 0;
newStaffAnce["AbsenceReasonName"] = "休息";
}
else if ("病假".Equals(strColValue))
{
newStaffAnce["AbsenceReason"] = 1;
newStaffAnce["AbsenceReasonName"] = "病假";
}
else if ("事假".Equals(strColValue))
{
newStaffAnce["AbsenceReason"] = 2;
newStaffAnce["AbsenceReasonName"] = "事假";
}
else if ("旷工".Equals(strColValue))
{
newStaffAnce["AbsenceReason"] = 3;
newStaffAnce["AbsenceReasonName"] = "旷工";
}
else
{
newStaffAnce["AbsenceReason"] = string.Empty;
newStaffAnce["AbsenceReasonName"] = "其它";
}
}
else if ("迟到早退次数".Equals(newColStaff.ColumnName))
{
Int32 intTardinessTimes = Convert.ToInt32(strColValue);
newStaffAnce["TardinessTimes"] = intTardinessTimes;
}
else if ("备注".Equals(newColStaff.ColumnName))
{
newStaffAnce["REMARKS"] = strColValue;
}
#endregion
}
newStaffAnce["SettlementFlag"] = 0;
newStaffAnce["SettlementFlagName"] = "未结算";
int? intStaffID = null;
if (!string.IsNullOrEmpty(newStaffAnce["StaffID"].ToString()))
{
intStaffID = Convert.ToInt32(newStaffAnce["StaffID"].ToString());
}
DateTime? dtAttendanceDate = null;
if (!string.IsNullOrEmpty(newStaffAnce["AttendanceDate"].ToString()))
{
dtAttendanceDate = Convert.ToDateTime(newStaffAnce["AttendanceDate"].ToString());
}
bool bolSettlementFlag = GetStaffAttendanceIsSettlementFlag(con, intStaffID, dtAttendanceDate, sUserInfo);
if (!bolSettlementFlag)
{
dsAttenance.Tables[0].Rows.Add(newStaffAnce);
}
}
return dsAttenance;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取考勤是否结算
///
/// 数据库连接
/// 员工ID
/// 考勤日期
/// 用户基本信息
/// bool已结算返回为True 没有结算返回为False
private static bool GetStaffAttendanceIsSettlementFlag(IDBConnection pConn, int? pStaffID, DateTime? pAttendanceDate, SUserInfo sUserInfo)
{
string strSql = "Select max(SettlementFlag) From TP_HR_StaffAttendance "
+ "Where StaffID = :pStaffID And AttendanceDate = :pAttendanceDate And AccountID = :pAccountID";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("pStaffID",OracleDbType.Int32,pStaffID,ParameterDirection.Input),
new OracleParameter("pAttendanceDate",OracleDbType.Date,pAttendanceDate,ParameterDirection.Input),
new OracleParameter("pAccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
};
string strSettlementFlag = pConn.GetSqlResultToStr(strSql, paras);
if (!string.IsNullOrEmpty(strSettlementFlag))
{
if (Constant.SettlementFlag.Settled.GetHashCode().ToString().Equals(strSettlementFlag))
{
return true;
}
}
return false;
}
#endregion
///
/// 根据传入的实体获取行政奖惩信息
///
/// 查询实体
/// 用户基本信息
/// DataSet行政奖惩信息表
public static DataSet SearcStaffAdminRAPInfo(SearchAdminRAPEntity searchAdminRAPEntity, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
string strIdList = string.Empty;
if (searchAdminRAPEntity.IDList != null && searchAdminRAPEntity.IDList.Length > 0)
{
strIdList = DataConvert.ConvertListToSqlInWhere(searchAdminRAPEntity.IDList);
}
con.Open();
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("in_staffID",OracleDbType.Int32,searchAdminRAPEntity.StaffID,ParameterDirection.Input),
new OracleParameter("in_rapType",OracleDbType.Double,searchAdminRAPEntity.RAPType,ParameterDirection.Input),
new OracleParameter("in_startRAPDate",OracleDbType.Date,searchAdminRAPEntity.StartRAPDate,ParameterDirection.Input),
new OracleParameter("in_endRAPDate",OracleDbType.Date,searchAdminRAPEntity.EndRAPDate,ParameterDirection.Input),
new OracleParameter("in_startRAPAmount",OracleDbType.Double,searchAdminRAPEntity.StartRAPAmount,ParameterDirection.Input),
new OracleParameter("in_endRAPAmount",OracleDbType.Double,searchAdminRAPEntity.EndRAPAmount,ParameterDirection.Input),
new OracleParameter("in_administrationType",OracleDbType.Int32,searchAdminRAPEntity.AdministrationType,ParameterDirection.Input),
new OracleParameter("in_auditStatus",OracleDbType.Int32,searchAdminRAPEntity.AuditStatus,ParameterDirection.Input),
new OracleParameter("in_settlementFlag",OracleDbType.Char,searchAdminRAPEntity.SettlementFlag,ParameterDirection.Input),
new OracleParameter("in_valueFlag",OracleDbType.Char,searchAdminRAPEntity.ValueFlag,ParameterDirection.Input),
new OracleParameter("in_sIDList",OracleDbType.Varchar2,strIdList,ParameterDirection.Input),
new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
};
return con.ExecStoredProcedure("PRO_HR_StaffAdminRAP", paras);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取员工报餐信息
///
/// 员工报餐查询实体
/// 用户基本信息
/// DataSet员工报餐信息表
public static DataSet SearcStaffDailyMealInfo(SearchDailyMealEntity searchDailyMealEntity, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("in_sStaffID",OracleDbType.Int32,searchDailyMealEntity.StaffID,ParameterDirection.Input),
new OracleParameter("in_sIDCardNo",OracleDbType.Varchar2,searchDailyMealEntity.IDCardNo,ParameterDirection.Input),
new OracleParameter("in_sStartBirthday",OracleDbType.Date,searchDailyMealEntity.StartBirthday,ParameterDirection.Input),
new OracleParameter("in_sEndBirthday",OracleDbType.Date,searchDailyMealEntity.EndBirthday,ParameterDirection.Input),
new OracleParameter("in_sGender",OracleDbType.Varchar2,searchDailyMealEntity.Gender,ParameterDirection.Input),
new OracleParameter("in_sMaritalStatus",OracleDbType.Int32,searchDailyMealEntity.MaritalStatus,ParameterDirection.Input),
new OracleParameter("in_sHomeTown",OracleDbType.Varchar2,searchDailyMealEntity.HomeTown,ParameterDirection.Input),
new OracleParameter("in_sPolicitalStatus",OracleDbType.Varchar2,searchDailyMealEntity.PolicitalStatus,ParameterDirection.Input),
new OracleParameter("in_sNational",OracleDbType.Int32,searchDailyMealEntity.National,ParameterDirection.Input),
new OracleParameter("in_sEducational",OracleDbType.Int32,searchDailyMealEntity.Educational,ParameterDirection.Input),
new OracleParameter("in_sGraduated",OracleDbType.Varchar2,searchDailyMealEntity.Graduated,ParameterDirection.Input),
new OracleParameter("in_sSpecialField",OracleDbType.Varchar2,searchDailyMealEntity.SpecialField,ParameterDirection.Input),
new OracleParameter("in_sTelephone",OracleDbType.Varchar2,searchDailyMealEntity.Telephone,ParameterDirection.Input),
new OracleParameter("in_sStartMealDate",OracleDbType.Date,searchDailyMealEntity.StartMealDate,ParameterDirection.Input),
new OracleParameter("in_sEndMealDate",OracleDbType.Date,searchDailyMealEntity.EndMealDate,ParameterDirection.Input),
new OracleParameter("in_sOrderBreakfast",OracleDbType.Varchar2,searchDailyMealEntity.OrderBreakfast,ParameterDirection.Input),
new OracleParameter("in_sOrderLunch", OracleDbType.Varchar2, searchDailyMealEntity.OrderLunch, ParameterDirection.Input),
new OracleParameter("in_sOrderDinner", OracleDbType.Varchar2, searchDailyMealEntity.OrderDinner, ParameterDirection.Input),
new OracleParameter("in_sMealBreakfast",OracleDbType.Varchar2,searchDailyMealEntity.MealBreakfast,ParameterDirection.Input),
new OracleParameter("in_sMealLunch", OracleDbType.Varchar2, searchDailyMealEntity.MealLunch, ParameterDirection.Input),
new OracleParameter("in_sMealDinner", OracleDbType.Varchar2, searchDailyMealEntity.MealDinner, ParameterDirection.Input),
new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
};
return con.ExecStoredProcedure("PRO_HR_StaffDailyMeal", paras);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取员工报餐编辑信息
///
/// 员工报餐查询实体
/// 用户基本信息
/// DataSet员工报餐信息表
public static DataSet SearcStaffDailyMealInfoForEdit(SearchDailyMealEntity searchDailyMealEntity, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("in_sStaffID",OracleDbType.Int32,searchDailyMealEntity.StaffID,ParameterDirection.Input),
new OracleParameter("in_OrganizationID",OracleDbType.Int32,searchDailyMealEntity.OrganizationID,ParameterDirection.Input),
new OracleParameter("in_Jobs",OracleDbType.Int32,searchDailyMealEntity.Jobs,ParameterDirection.Input),
new OracleParameter("in_sMealDate",OracleDbType.Date,searchDailyMealEntity.MealDate,ParameterDirection.Input),
new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
};
DataSet dsStaff = con.ExecStoredProcedure("PRO_HR_StaffDailyMealEdit", paras);
if (dsStaff != null && dsStaff.Tables.Count > 0 && searchDailyMealEntity.MealDate != null)
{
foreach (DataRow newRow in dsStaff.Tables[0].Rows)
{
newRow["MealDate"] = searchDailyMealEntity.MealDate.Value;
}
}
return dsStaff;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 将导入Excel中的数据转换为GridView显示的数据集
///
/// Excel中的数据员工集合
/// 用户基本信息
/// DataSet员工报餐信息表
public static DataSet GetStaffDailyMealInfoForExcel(DataTable pStaff, WCFConstant.FormMode pStatus, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
#region 获取员工用餐编辑结构保存到dsStaff中
SearchDailyMealEntity searchDailyMealEntity = new SearchDailyMealEntity();
searchDailyMealEntity.StaffID = -999;
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("in_sStaffID",OracleDbType.Int32,searchDailyMealEntity.StaffID,ParameterDirection.Input),
new OracleParameter("in_OrganizationID",OracleDbType.Int32,searchDailyMealEntity.OrganizationID,ParameterDirection.Input),
new OracleParameter("in_Jobs",OracleDbType.Int32,searchDailyMealEntity.Jobs,ParameterDirection.Input),
new OracleParameter("in_sMealDate",OracleDbType.Date,searchDailyMealEntity.MealDate,ParameterDirection.Input),
new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
};
DataSet dsStaff = con.ExecStoredProcedure("PRO_HR_StaffDailyMealEdit", paras);
#endregion
foreach (DataRow newRowStaff in pStaff.Rows)
{
DataRow newStaffMeal = dsStaff.Tables[0].NewRow();
foreach (DataColumn newColStaff in pStaff.Columns)
{
#region 设置对应的值到表格中
string strColValue = newRowStaff[newColStaff.ColumnName].ToString();
if ("员工编号".Equals(newColStaff.ColumnName))
{
#region 根据员工编号获取员工相关信息保存到dtStaffInfo中
string strSql1 = "Select TP_HR_Staff.StaffID,"
+ " TP_HR_Staff.Staffcode,"
+ " TP_HR_Staff.StaffName,"
+ " TP_HR_Staff.Jobs,"
+ " TP_HR_Staff.OrganizationID,"
+ " TP_MST_Jobs.Jobsname Jobsname,"
+ " TP_MST_Organization.Organizationname Organizationname"
+ " From TP_HR_Staff left join"
+ " TP_MST_Jobs on TP_MST_Jobs.Jobsid = TP_HR_Staff.Jobs left join"
+ " TP_MST_Organization on TP_MST_Organization.Organizationid = TP_HR_Staff.Organizationid"
+ " Where TP_HR_Staff.Accountid = :pAccountid And TP_HR_Staff.Staffcode = :pStaffcode";
OracleParameter[] paras1 = new OracleParameter[]{
new OracleParameter("pAccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("pStaffcode",OracleDbType.Varchar2,strColValue,ParameterDirection.Input),
};
DataTable dtStaffInfo = con.GetSqlResultToDt(strSql1, paras1);
#endregion
newStaffMeal["StaffCode"] = strColValue;
if (dtStaffInfo != null && dtStaffInfo.Rows.Count > 0)
{
newStaffMeal["StaffID"] = dtStaffInfo.Rows[0]["StaffID"];
newStaffMeal["StaffName"] = dtStaffInfo.Rows[0]["StaffName"];
newStaffMeal["Jobs"] = dtStaffInfo.Rows[0]["Jobs"];
newStaffMeal["OrganizationID"] = dtStaffInfo.Rows[0]["OrganizationID"];
newStaffMeal["Jobsname"] = dtStaffInfo.Rows[0]["Jobsname"];
newStaffMeal["Organizationname"] = dtStaffInfo.Rows[0]["Organizationname"];
}
}
else if ("报餐日期".Equals(newColStaff.ColumnName))
{
DateTime dtMeal = Convert.ToDateTime(strColValue);
newStaffMeal["MealDate"] = new DateTime(dtMeal.Year, dtMeal.Month, dtMeal.Day);
}
else if ("预定早餐".Equals(newColStaff.ColumnName) && pStatus == WCFConstant.FormMode.Edit)
{
if ("是".Equals(strColValue))
{
newStaffMeal["OrderBreakfast"] = "1";
newStaffMeal["OrderBreakfastName"] = "报餐";
}
else
{
newStaffMeal["OrderBreakfast"] = "0";
newStaffMeal["OrderBreakfastName"] = "未报餐";
}
}
else if ("预定午餐".Equals(newColStaff.ColumnName) && pStatus == WCFConstant.FormMode.Edit)
{
if ("是".Equals(strColValue))
{
newStaffMeal["OrderLunch"] = "1";
newStaffMeal["OrderLunchName"] = "报餐";
}
else
{
newStaffMeal["OrderLunch"] = "0";
newStaffMeal["OrderLunchName"] = "未报餐";
}
}
else if ("预定晚餐".Equals(newColStaff.ColumnName) && pStatus == WCFConstant.FormMode.Edit)
{
if ("是".Equals(strColValue))
{
newStaffMeal["OrderDinner"] = "1";
newStaffMeal["OrderDinnerName"] = "报餐";
}
else
{
newStaffMeal["OrderDinner"] = "0";
newStaffMeal["OrderDinnerName"] = "未报餐";
}
}
else if ("备注".Equals(newColStaff.ColumnName) && pStatus == WCFConstant.FormMode.Edit)
{
newStaffMeal["Remarks"] = strColValue;
}
else if ("吃早餐".Equals(newColStaff.ColumnName) && pStatus == WCFConstant.FormMode.MealEdit)
{
if ("是".Equals(strColValue))
{
newStaffMeal["MealBreakfast"] = "1";
newStaffMeal["MealBreakfastName"] = "用餐";
}
else
{
newStaffMeal["MealBreakfast"] = "0";
newStaffMeal["MealBreakfastName"] = "未用餐";
}
}
else if ("吃午餐".Equals(newColStaff.ColumnName) && pStatus == WCFConstant.FormMode.MealEdit)
{
if ("是".Equals(strColValue))
{
newStaffMeal["MealLunch"] = "1";
newStaffMeal["MealLunchName"] = "用餐";
}
else
{
newStaffMeal["MealLunch"] = "0";
newStaffMeal["MealLunchName"] = "未用餐";
}
}
else if ("吃晚餐".Equals(newColStaff.ColumnName) && pStatus == WCFConstant.FormMode.MealEdit)
{
if ("是".Equals(strColValue))
{
newStaffMeal["MealDinner"] = "1";
newStaffMeal["MealDinnerName"] = "用餐";
}
else
{
newStaffMeal["MealDinner"] = "0";
newStaffMeal["MealDinnerName"] = "未用餐";
}
}
#endregion
}
if (pStatus == WCFConstant.FormMode.MealEdit)
{
#region 根据用户编号和报餐日期获取对应的报餐信息保存到dtMeal中
if (!string.IsNullOrEmpty(newStaffMeal["StaffID"].ToString()))
{
int intStaffID = Convert.ToInt32(newStaffMeal["StaffID"]);
DateTime dtMealDate = Convert.ToDateTime(newStaffMeal["MealDate"]);
string strSql2 = "Select TP_HR_StaffDailyMeal.OrderBreakfast,"
+ " TP_HR_StaffDailyMeal.OrderLunch,"
+ " TP_HR_StaffDailyMeal.OrderDinner"
+ " From TP_HR_StaffDailyMeal"
+ " Where TP_HR_StaffDailyMeal.AccountID = :pAccountID"
+ " And TP_HR_StaffDailyMeal.Staffid = :pStaffid"
+ " And TP_HR_StaffDailyMeal.MealDate = :pMealDate";
OracleParameter[] paras2 = new OracleParameter[]{
new OracleParameter("pAccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter("pStaffid",OracleDbType.Int32,intStaffID,ParameterDirection.Input),
new OracleParameter("pMealDate",OracleDbType.Date,dtMealDate,ParameterDirection.Input),
};
DataTable dtMeal = con.GetSqlResultToDt(strSql2, paras2);
#endregion
if (dtMeal != null && dtMeal.Rows.Count > 0)
{
#region 根据数据表中的报餐值对集合进行赋值
string strOrderBreakfast = dtMeal.Rows[0]["OrderBreakfast"].ToString();
newStaffMeal["OrderBreakfast"] = "0";
newStaffMeal["OrderBreakfastName"] = "未报餐";
if ("1".Equals(strOrderBreakfast))
{
newStaffMeal["OrderBreakfast"] = "1";
newStaffMeal["OrderBreakfastName"] = "报餐";
}
string strOrderLunch = dtMeal.Rows[0]["OrderLunch"].ToString();
newStaffMeal["OrderLunch"] = "0";
newStaffMeal["OrderLunchName"] = "未报餐";
if ("1".Equals(strOrderLunch))
{
newStaffMeal["OrderLunch"] = "1";
newStaffMeal["OrderLunchName"] = "报餐";
}
string strOrderDinner = dtMeal.Rows[0]["OrderDinner"].ToString();
newStaffMeal["OrderDinner"] = "0";
newStaffMeal["OrderDinnerName"] = "未报餐";
if ("1".Equals(strOrderDinner))
{
newStaffMeal["OrderDinner"] = "1";
newStaffMeal["OrderDinnerName"] = "报餐";
}
#endregion
}
}
}
dsStaff.Tables[0].Rows.Add(newStaffMeal);
}
return dsStaff;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取管理者或组内员工的数据源
///
/// 员工查询实体
/// 用户基本信息
/// DataSet
public static DataSet SearchManagersOrMembers(SearchStaffEntity searchStaffEntity, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string strSql = " SELECT Staff.Staffid,Staff.Staffname,Staff.Organizationid,"
+ " Staff.Jobs,Staff.Staffstatus,Staff.Staffcode, Staff.Post,"
+ " (CASE Staff.staffStatus"
+ " WHEN 0 THEN '未入职'"
+ " WHEN 1 THEN '试用 '"
+ " WHEN 2 THEN '转正'"
+ " WHEN 3 THEN '离职'"
+ " ELSE '' END) AS staffStatusName,"
+ " Jobs.Jobsname,Org.Organizationname,Org.OrganizationFullName,Post.PostName,0 Sel"
+ " FROM TP_HR_Staff Staff"
+ " LEFT JOIN TP_MST_Jobs Jobs ON Jobs.Jobsid = Staff.Jobs "
+ " LEFT JOIN TP_MST_Organization Org ON Org.Organizationid = Staff.Organizationid "
+ " LEFT JOIN TP_MST_Post Post on Post.Postid = Staff.Post "
+ " WHERE Staff.Accountid = :accountID "
+ " AND Staff.Staffstatus in(1,2)"
+ " AND (Staff.Jobs = :jobs OR :jobs is null)";
if (!string.IsNullOrEmpty(searchStaffEntity.StaffCode))
{
strSql += " AND Staff.Staffcode like '%" + searchStaffEntity.StaffCode + "%'";
}
if (!string.IsNullOrEmpty(searchStaffEntity.StaffName))
{
strSql += " AND Staff.Staffname like '%" + searchStaffEntity.StaffName + "%'";
}
if (searchStaffEntity.ManagerSalaryID != 0)
{
strSql += @" AND not Exists (
Select * from TP_TAT_MANAGERS managers
where Staff.STAFFID = managers.MANAGER and managers.ManagerSalaryID= " + searchStaffEntity.ManagerSalaryID + @")
AND not Exists (
Select * from TP_TAT_Members members
where Staff.STAFFID = members.Member and members.ManagerSalaryID= " + searchStaffEntity.ManagerSalaryID + ")";
}
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":accountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":jobs", OracleDbType.Int32, searchStaffEntity.Jobs, ParameterDirection.Input),
new OracleParameter(":jobs", OracleDbType.Int32, searchStaffEntity.Jobs, ParameterDirection.Input),
};
DataSet ds = con.GetSqlResultToDs(strSql, paras);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
#endregion
}
}