/*******************************************************************************
* Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:HRModuleDAL.cs
* 2.功能描述:员工管理更新db逻辑处理
* 编辑履历:
* 作者 日期 版本 修改内容
* 王鑫 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.Service.DataModels;
using Dongke.IBOSS.PRD.WCF.DataModels;
using Oracle.ManagedDataAccess.Client;
namespace Dongke.IBOSS.PRD.Service.HRModuleLogic
{
///
/// 员工管理更新db逻辑处理
///
public static class HRModuleDAL
{
#region 员工档案
///
/// 添加员工档案
///
/// 员工实体类
/// 用户基本信息
/// 员工图片集
/// HRResultEntity
public static HRResultEntity AddStaffInfo(StaffEntity staffInfo, SUserInfo sUserInfo, List staffPhoto)
{
HRResultEntity resultEnity = new HRResultEntity();
if (staffInfo == null)
{
resultEnity.OperateStatus = 0;
return resultEnity;
}
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
string nextval = "select SEQ_HR_STAFF_STAFFID.nextval from dual";
int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(nextval));
#region 向员工档案表插入数据
string sqlString = " INSERT INTO TP_HR_STAFF "
+ "(StaffID,StaffCode"
+ ",StaffName"
+ ",IDCardNo"
+ ",Birthday"
+ ",Gender"
+ ",MaritalStatus"
+ ",HomeTown"
+ ",PolicitalStatus"
+ ",National"
+ ",Educational"
+ ",Graduated"
+ ",SpecialField"
+ ",Telephone"
+ ",Height"
+ ",BloodGroup"
+ ",Weight"
+ ",Address"
+ ",LaidOff"
+ ",Disability"
+ ",JoinPartyDate"
+ ",Email"
+ ",OpeningBank"
+ ",AccountNo"
+ ",Remarks"
//+ ",UserID"
+ ",AccountID"
+ ",ValueFlag"
+ ",CreateUserID"
+ ",UpdateUserID"
+ ",CreateTime"
+ ",UpdateTime"
+ ",OPTimeStamp"
+ ",StaffStatus"
+ ",OrganizationID"
+ ",Jobs"
+ ",Post"
+ ")"
+ " VALUES"
+ " (:StaffID"
+ " ,:StaffCode"
+ ",:StaffName"
+ ",:IDCardNo"
+ ",:Birthday"
+ ",:Gender"
+ ",:MaritalStatus"
+ ",:HomeTown"
+ ",:PolicitalStatus"
+ ",:National"
+ ",:Educational"
+ ",:Graduated"
+ ",:SpecialField"
+ ",:Telephone"
+ ",:Height"
+ ",:BloodGroup"
+ ",:Weight"
+ ",:Address"
+ ",:LaidOff"
+ ",:Disability"
+ ",:JoinPartyDate"
+ ",:Email"
+ ",:OpeningBank"
+ ",:AccountNo"
+ ",:Remarks"
//+ ",:UserID"
+ ",:AccountID"
+ ",:ValueFlag"
+ ",:CreateUserID"
+ ",:UpdateUserID"
+ ",sysdate"
+ ",sysdate"
+ ",FUN_CMN_GetAccountDate(:AccountID)"
+ ",:StaffStatus"
+ ",:OrganizationID"
+ ",:Jobs"
+ ",:Post"
+ " )";
OracleParameter[] parmeters = new OracleParameter[]
{
new OracleParameter(":StaffID",id),
new OracleParameter(":StaffCode",staffInfo.StaffCode),
new OracleParameter(":StaffName",staffInfo.StaffName),
new OracleParameter(":IDCardNo",staffInfo.IDCardNo),
new OracleParameter(":Birthday",staffInfo.Birthday),
new OracleParameter(":Gender",staffInfo.Gender),
new OracleParameter(":MaritalStatus",staffInfo.MaritalStatus),
new OracleParameter(":HomeTown",staffInfo.HomeTown),
new OracleParameter(":PolicitalStatus",staffInfo.PolicitalStatus),
new OracleParameter(":National",staffInfo.National),
new OracleParameter(":Educational",staffInfo.Educational),
new OracleParameter(":Graduated",staffInfo.Graduated),
new OracleParameter(":SpecialField",staffInfo.SpecialField),
new OracleParameter(":Telephone",staffInfo.Telephone),
new OracleParameter(":Height",staffInfo.Height),
new OracleParameter(":BloodGroup",staffInfo.BloodGroup),
new OracleParameter(":Weight",staffInfo.Weight),
new OracleParameter(":Address",staffInfo.Address),
new OracleParameter(":LaidOff",staffInfo.LaidOff?1:0),
new OracleParameter(":Disability",staffInfo.Disability?1:0),
new OracleParameter(":JoinPartyDate",staffInfo.JoinPartyDate),
new OracleParameter(":Email",staffInfo.Email),
new OracleParameter(":OpeningBank",staffInfo.OpeningBank),
new OracleParameter(":AccountNo",staffInfo.AccountNo),
new OracleParameter(":Remarks",staffInfo.Remarks),
// new OracleParameter(":UserID",sUserInfo.UserID),
new OracleParameter(":AccountID",sUserInfo.AccountID),
new OracleParameter(":ValueFlag",staffInfo.ValueFlag?1:0),
new OracleParameter(":CreateUserID",sUserInfo.UserID),
new OracleParameter(":UpdateUserID",sUserInfo.UserID),
new OracleParameter(":StaffStatus",staffInfo.StaffStatus),
new OracleParameter(":OrganizationID",OracleDbType.Int32, staffInfo.OrganizationID, ParameterDirection.Input ),
new OracleParameter(":Jobs",OracleDbType.Int32, staffInfo.Jobs, ParameterDirection.Input ),
new OracleParameter(":Post",OracleDbType.Int32, staffInfo.Post, ParameterDirection.Input ),
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
resultEnity.HRStaffID = id;
#region 向TP_HR_STAFFPHOTO插入数据
StringBuilder sbSql = new StringBuilder();
//此处添加图片信息
foreach (StaffPhotoEntity img in staffPhoto)
{
// 缩略图
img.Thumbnail = CommonModuleLogic.CommonModuleLogic.ConvertThumbnail(img.Photo);
sbSql.Clear();
sbSql.Append("Insert into TP_HR_STAFFPHOTO");
sbSql.Append("( StaffID,Thumbnail,Photo,AccountID,");
sbSql.Append("CreateUserID,UpdateUserID)");
sbSql.Append(" VALUES(:StaffID,:Thumbnail,:Photo,:AccountID,");
sbSql.Append(":CreateUserID,:UpdateUserID)");
OracleParameter[] imgParas = new OracleParameter[] {
new OracleParameter(":StaffID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":Thumbnail",OracleDbType.Blob,
img.Thumbnail,ParameterDirection.Input),
new OracleParameter(":Photo",OracleDbType.Blob,
img.Photo,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
};
oracleTrConn.ExecuteNonQuery(sbSql.ToString(), imgParas);
}
#endregion
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
///
/// 导入员工档案
///
/// 员工信息
/// 用户基本信息
/// ServiceResultEntity
public static ServiceResultEntity ImportStaffInfo(DataTable staffInfo, SUserInfo sUserInfo)
{
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
//StringBuilder staffCodes = new StringBuilder();
//foreach (DataRow item in staffInfo.Rows)
//{
// staffCodes.Append("'" + item["员工编码"] + "',");
//}
//string sql = "select StaffCode from TP_HR_Staff where StaffCode in ("
// + staffCodes.ToString(0, staffCodes.Length - 1) + ")";
//DataTable existsCode = oracleTrConn.GetSqlResultToDt(sql);
// if (existsCode != null && existsCode.Rows.Count > 0)
// {
// ServiceResultEntity sre = new ServiceResultEntity();
// sre.Status = Constant.ServiceResultStatus.Other;
// staffCodes.Clear();
// staffCodes = new StringBuilder();
// foreach (DataRow item in existsCode.Rows)
// {
// staffCodes.Append(item["StaffCode"] + ",");
// }
// sre.Message = "系统中已存在以下员工编码:" + System.Environment.NewLine
// + staffCodes.ToString(0, staffCodes.Length - 1);
// return sre;
// }
string sql = "select StaffCode from TP_HR_Staff where StaffCode = '{0}'";
List staffCodes = new List();
string nextval = "select SEQ_HR_STAFF_STAFFID.nextval from dual";
#region 向员工档案表插入数据
string sqlString = " INSERT INTO TP_HR_STAFF "
+ "(StaffID,StaffCode"
+ ",StaffName"
+ ",IDCardNo"
+ ",Birthday"
+ ",Gender"
+ ",MaritalStatus"
+ ",HomeTown"
+ ",PolicitalStatus"
+ ",National"
+ ",Educational"
+ ",Graduated"
+ ",SpecialField"
+ ",Telephone"
+ ",Height"
+ ",BloodGroup"
+ ",Weight"
+ ",Address"
+ ",LaidOff"
+ ",Disability"
+ ",JoinPartyDate"
+ ",Email"
+ ",OpeningBank"
+ ",AccountNo"
+ ",Remarks"
+ ",AccountID"
+ ",ValueFlag"
+ ",CreateUserID"
+ ",UpdateUserID"
+ ",CreateTime"
+ ",UpdateTime"
+ ",OrganizationID"
+ ",Jobs"
+ ",Post"
+ ",StaffStatus"
+ ",EntryDate"
+ ")"
+ " VALUES"
+ " (:StaffID"
+ " ,:StaffCode"
+ ",:StaffName"
+ ",:IDCardNo"
+ ",:Birthday"
+ ",:Gender"
+ ",:MaritalStatus"
+ ",:HomeTown"
+ ",:PolicitalStatus"
+ ",:National"
+ ",:Educational"
+ ",:Graduated"
+ ",:SpecialField"
+ ",:Telephone"
+ ",:Height"
+ ",:BloodGroup"
+ ",:Weight"
+ ",:Address"
+ ",:LaidOff"
+ ",:Disability"
+ ",:JoinPartyDate"
+ ",:Email"
+ ",:OpeningBank"
+ ",:AccountNo"
+ ",:Remarks"
+ ",:AccountID"
+ ",'1'"
+ ",:CreateUserID"
+ ",:CreateUserID"
+ ",sysdate"
+ ",sysdate"
+ ",:OrganizationID"
+ ",:Jobs"
+ ",:Post"
+ ",:StaffStatus"
+ ",decode(:StaffStatus, 0, null, trunc(sysdate))"
+ " )";
List ids = new List();
foreach (DataRow item in staffInfo.Rows)
{
// 已存在不影响 其他导入 chenxy 2019-10-14
object objCode = oracleTrConn.GetSqlResultToObj(string.Format(sql, item["员工编码"]));
if (!string.IsNullOrEmpty(objCode + ""))
{
staffCodes.Add(objCode + "");
continue;
}
int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(nextval));
ids.Add(id);
OracleParameter[] parmeters = new OracleParameter[]
{
new OracleParameter(":StaffID",id),
new OracleParameter(":StaffCode",item["员工编码"]),
new OracleParameter(":StaffName",item["员工姓名"]),
new OracleParameter(":IDCardNo",item["身份证号码"]),
new OracleParameter(":Birthday", OracleDbType.Date, item["生日"], ParameterDirection.Input ),
new OracleParameter(":Gender",OracleDbType.Char, item["性别"], ParameterDirection.Input ),
new OracleParameter(":MaritalStatus",OracleDbType.Int32, int.Parse(item["婚姻状况"].ToString()), ParameterDirection.Input ),
new OracleParameter(":HomeTown",OracleDbType.NVarchar2, item["籍贯"], ParameterDirection.Input ),
new OracleParameter(":PolicitalStatus",OracleDbType.NVarchar2, item["政治面貌"], ParameterDirection.Input ),
new OracleParameter(":National",OracleDbType.Int32, int.Parse(item["民族"].ToString()), ParameterDirection.Input ),
new OracleParameter(":Educational",OracleDbType.Int32,int.Parse( item["学历"].ToString()), ParameterDirection.Input ),
new OracleParameter(":Graduated",OracleDbType.NVarchar2, item["毕业学校"], ParameterDirection.Input ),
new OracleParameter(":SpecialField",OracleDbType.NVarchar2, item["专业"], ParameterDirection.Input ),
new OracleParameter(":Telephone",OracleDbType.NVarchar2, item["联系电话"], ParameterDirection.Input ),
new OracleParameter(":Height",OracleDbType.Decimal, item["身高(CM)"], ParameterDirection.Input ),
new OracleParameter(":BloodGroup",OracleDbType.NVarchar2, item["血型"], ParameterDirection.Input ),
new OracleParameter(":Weight",OracleDbType.Decimal, item["体重(KG)"], ParameterDirection.Input ),
new OracleParameter(":Address",OracleDbType.NVarchar2, item["家庭住址"], ParameterDirection.Input ),
new OracleParameter(":LaidOff",OracleDbType.Char, item["下岗职工"], ParameterDirection.Input ),
new OracleParameter(":Disability",OracleDbType.Char, item["残疾职工"], ParameterDirection.Input ),
new OracleParameter(":JoinPartyDate",OracleDbType.Date, item["入党日期"], ParameterDirection.Input ),
new OracleParameter(":Email",OracleDbType.NVarchar2, item["电子邮箱"], ParameterDirection.Input ),
new OracleParameter(":OpeningBank",OracleDbType.NVarchar2, item["开户行"], ParameterDirection.Input ),
new OracleParameter(":AccountNo",OracleDbType.NVarchar2, item["开户账号"], ParameterDirection.Input ),
new OracleParameter(":Remarks",OracleDbType.NVarchar2, item["备注"], ParameterDirection.Input ),
new OracleParameter(":AccountID",sUserInfo.AccountID),
new OracleParameter(":CreateUserID",sUserInfo.UserID),
new OracleParameter(":OrganizationID",OracleDbType.Int32, item["部门(全称)"].ToString()==""?null:item["部门(全称)"], ParameterDirection.Input ),
new OracleParameter(":Jobs",OracleDbType.Int32, item["工种"].ToString()==""?null:item["工种"], ParameterDirection.Input ),
new OracleParameter(":Post",OracleDbType.Int32, item["职务"].ToString()==""?null:item["职务"], ParameterDirection.Input ),
new OracleParameter(":StaffStatus",OracleDbType.Int32, item["StaffStatus"], ParameterDirection.Input ),
};
oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
}
#endregion
oracleTrConn.Commit();
oracleTrConn.Disconnect();
ServiceResultEntity result = new ServiceResultEntity();
if (staffCodes.Count > 0)
{
result.Status = Constant.ServiceResultStatus.Other;
result.Message = "系统中已存在以下员工编码(其他已导入):" + System.Environment.NewLine
+ string.Join(",", staffCodes);
return result;
}
result.Status = Constant.ServiceResultStatus.Success;
result.Result = string.Join(",", ids);
return result;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
///
/// 更新员工档案
///
/// 员工实体类
/// 用户基本信息
/// 员工图片集
/// HRResultEntity
public static HRResultEntity EditStaffInfo(StaffEntity staffInfo, SUserInfo sUserInfo, List staffPhoto)
{
HRResultEntity resultEnity = new HRResultEntity();
if (staffInfo == null)
{
resultEnity.OperateStatus = 0;
return resultEnity;
}
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 验证员工档案表时间戳
string sql = "SELECT OPTimeStamp FROM tp_hr_staff"
+ " WHERE Staffid = " + staffInfo.StaffID + " and OPTimeStamp = :OPTimeStamp";
OracleParameter[] parmetersSql = new OracleParameter[]
{
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, staffInfo.OPTimeStamp, ParameterDirection.Input),
};
DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, parmetersSql);
if (returnDataset != null
&& returnDataset.Tables[0].Rows.Count == 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;
}
#endregion
#region 更新员工档案表中的数据
string sqlString = " UPDATE TP_HR_STAFF SET"
+ " StaffCode=:StaffCode"
+ ",StaffName=:StaffName"
+ ",IDCardNo=:IDCardNo"
+ ",Birthday=:Birthday"
+ ",Gender=:Gender"
+ ",MaritalStatus=:MaritalStatus"
+ ",HomeTown=:HomeTown"
+ ",PolicitalStatus=:PolicitalStatus"
+ ",National=:National"
+ ",Educational=:Educational"
+ ",Graduated=:Graduated"
+ ",SpecialField=:SpecialField"
+ ",Telephone=:Telephone"
+ ",Height=:Height"
+ ",BloodGroup=:BloodGroup"
+ ",Weight=:Weight"
+ ",Address=:Address"
+ ",LaidOff=:LaidOff"
+ ",Disability=:Disability"
+ ",JoinPartyDate=:JoinPartyDate"
+ ",Email=:Email"
+ ",OpeningBank=:OpeningBank"
+ ",AccountNo=:AccountNo"
+ ",Remarks=:Remarks"
+ ",ValueFlag=:ValueFlag"
+ ",UpdateUserID=:UpdateUserID"
+ ",OrganizationID=:OrganizationID"
+ ",Post=:Post"
+ ",Jobs=:Jobs"
+ " where staffid=" + staffInfo.StaffID;
OracleParameter[] parmeters = new OracleParameter[]
{
new OracleParameter(":StaffCode",staffInfo.StaffCode),
new OracleParameter(":StaffName",staffInfo.StaffName),
new OracleParameter(":IDCardNo",staffInfo.IDCardNo),
new OracleParameter(":Birthday",staffInfo.Birthday),
new OracleParameter(":Gender",staffInfo.Gender),
new OracleParameter(":MaritalStatus",staffInfo.MaritalStatus),
new OracleParameter(":HomeTown",staffInfo.HomeTown),
new OracleParameter(":PolicitalStatus",staffInfo.PolicitalStatus),
new OracleParameter(":National",staffInfo.National),
new OracleParameter(":Educational",staffInfo.Educational),
new OracleParameter(":Graduated",staffInfo.Graduated),
new OracleParameter(":SpecialField",staffInfo.SpecialField),
new OracleParameter(":Telephone",staffInfo.Telephone),
new OracleParameter(":Height",staffInfo.Height),
new OracleParameter(":BloodGroup",staffInfo.BloodGroup),
new OracleParameter(":Weight",staffInfo.Weight),
new OracleParameter(":Address",staffInfo.Address),
new OracleParameter(":LaidOff",staffInfo.LaidOff?1:0),
new OracleParameter(":Disability",staffInfo.Disability?1:0),
new OracleParameter(":JoinPartyDate",staffInfo.JoinPartyDate),
new OracleParameter(":Email",staffInfo.Email),
new OracleParameter(":OpeningBank",staffInfo.OpeningBank),
new OracleParameter(":AccountNo",staffInfo.AccountNo),
new OracleParameter(":Remarks",staffInfo.Remarks),
new OracleParameter(":ValueFlag",staffInfo.ValueFlag?1:0),
new OracleParameter(":UpdateUserID",sUserInfo.UserID),
new OracleParameter(":OrganizationID",staffInfo.OrganizationID),
new OracleParameter(":Post",staffInfo.Post),
new OracleParameter(":Jobs",staffInfo.Jobs),
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
resultEnity.HRStaffID = staffInfo.StaffID;
#region 更新员工照片表数据 注释掉
/*
StringBuilder sbSql = new StringBuilder();
foreach (StaffPhotoEntity img in staffPhoto)
{
sbSql.Clear();
string sqlExist = "SELECT 1 FROM TP_HR_STAFFPHOTO"
+ " WHERE StaffPhotoID = " + img.StaffPhotoID + " and AccountID = :AccountID";
OracleParameter[] parmetersExist = new OracleParameter[]
{
new OracleParameter(":AccountID",sUserInfo.AccountID),
};
DataSet returnDSexist = oracleTrConn.GetSqlResultToDs(sqlExist, parmetersExist);
if (returnDSexist != null
&& returnDSexist.Tables[0].Rows.Count == 0)
{
string sqlExistStaff = "SELECT 1 FROM TP_HR_STAFFPHOTO"
+ " WHERE StaffID = " + staffInfo.StaffID + " and AccountID = :AccountID";
OracleParameter[] parmetersExistStaff = new OracleParameter[]
{
new OracleParameter(":AccountID",sUserInfo.AccountID),
};
DataSet returnDSexistStaff = oracleTrConn.GetSqlResultToDs(sqlExistStaff, parmetersExistStaff);
if (returnDSexistStaff != null
&& returnDSexistStaff.Tables[0].Rows.Count == 0)
{
sbSql.Append("Insert into TP_HR_STAFFPHOTO");
sbSql.Append("(StaffID,Thumbnail,Photo,AccountID,ValueFlag,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append(" VALUES(:StaffID,:Thumbnail,:Photo,:AccountID,:ValueFlag,:CreateTime,");
sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] imgParas = new OracleParameter[] {
new OracleParameter(":StaffID",OracleDbType.Int32,
staffInfo.StaffID,ParameterDirection.Input),
new OracleParameter(":Thumbnail",OracleDbType.Blob,
img.Thumbnail,ParameterDirection.Input),
new OracleParameter(":Photo",OracleDbType.Blob,
img.Photo,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
img.ValueFlag,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
DateTime.Now,ParameterDirection.Input)
};
oracleTrConn.ExecuteNonQuery(sbSql.ToString(), imgParas);
}
else
{
sbSql.Append(" update TP_HR_STAFFPHOTO");
sbSql.Append(" set Thumbnail=:Thumbnail,Photo=:Photo,AccountID=:AccountID,ValueFlag=:ValueFlag,");
sbSql.Append(" UpdateUserID=:UpdateUserID");
sbSql.Append(" where StaffID=:StaffID");
OracleParameter[] imgParasStaff = new OracleParameter[] {
new OracleParameter(":Thumbnail",OracleDbType.Blob,
img.Thumbnail,ParameterDirection.Input),
new OracleParameter(":Photo",OracleDbType.Blob,
img.Photo,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
img.ValueFlag,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
staffInfo.StaffID,ParameterDirection.Input),};
oracleTrConn.ExecuteNonQuery(sbSql.ToString(), imgParasStaff);
}
}
else
{
sbSql.Clear();
sbSql.Append(" update TP_HR_STAFFPHOTO");
sbSql.Append(" set StaffID=:StaffID,Thumbnail=:Thumbnail,Photo=:Photo,AccountID=:AccountID,ValueFlag=:ValueFlag,");
sbSql.Append(" UpdateUserID=:UpdateUserID");
sbSql.Append(" where STAFFPHOTOID=:STAFFPHOTOID");
OracleParameter[] imgParas = new OracleParameter[] {
new OracleParameter(":StaffID",OracleDbType.Int32,
staffInfo.StaffID,ParameterDirection.Input),
new OracleParameter(":Thumbnail",OracleDbType.Blob,
img.Thumbnail,ParameterDirection.Input),
new OracleParameter(":Photo",OracleDbType.Blob,
img.Photo,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
img.ValueFlag,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":STAFFPHOTOID",OracleDbType.Int32,
img.StaffPhotoID,ParameterDirection.Input)
};
oracleTrConn.ExecuteNonQuery(sbSql.ToString(), imgParas);
}
}
*/
#endregion
#region 先删除图片
string strDel = "delete TP_HR_STAFFPHOTO where StaffID=:staffID";
OracleParameter[] imgParas = new OracleParameter[] {
new OracleParameter(":staffID",OracleDbType.Int32,
staffInfo.StaffID,ParameterDirection.Input),
};
oracleTrConn.ExecuteNonQuery(strDel, imgParas);
#endregion
#region 向TP_HR_STAFFPHOTO插入数据
StringBuilder sbSql = new StringBuilder();
//此处添加图片信息
foreach (StaffPhotoEntity img in staffPhoto)
{
// 缩略图
img.Thumbnail = CommonModuleLogic.CommonModuleLogic.ConvertThumbnail(img.Photo);
sbSql.Clear();
sbSql.Append("Insert into TP_HR_STAFFPHOTO");
sbSql.Append("( StaffID,Thumbnail,Photo,AccountID,");
sbSql.Append("CreateUserID,UpdateUserID)");
sbSql.Append(" VALUES(:StaffID,:Thumbnail,:Photo,:AccountID,");
sbSql.Append(":CreateUserID,:UpdateUserID)");
imgParas = new OracleParameter[] {
new OracleParameter(":StaffID",OracleDbType.Int32,
staffInfo.StaffID,ParameterDirection.Input),
new OracleParameter(":Thumbnail",OracleDbType.Blob,
img.Thumbnail,ParameterDirection.Input),
new OracleParameter(":Photo",OracleDbType.Blob,
img.Photo,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
};
oracleTrConn.ExecuteNonQuery(sbSql.ToString(), imgParas);
}
#endregion
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
///
/// 设置禁用员工
///
/// 员工ID
/// 用户基本信息
/// HRResultEntity
public static HRResultEntity SetValueFlag(int staffid, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
string sql = "SELECT Count(*) FROM TP_HR_STAFF WHERE staffid=" + staffid + " AND ValueFlag=1";
string strCount = oracleTrConn.GetSqlResultToStr(sql);
if (!"0".Equals(strCount))
{
string sqlString = "Update TP_HR_STAFF SET ValueFlag=0,UpdateUserID =" + sUserInfo.UserID
+ " WHERE staffid=" + staffid;
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString);
//string sqlString2 = "Select StaffRecordID From TP_HR_StaffRecord "
// + " Where ApprovalStatus = 0 AND RecordType = 1 And ValueFlag = 1 And StaffID = " + staffid;
//string strStaffRecordID = oracleTrConn.GetSqlResultToStr(sqlString2);
//if (!string.IsNullOrEmpty(strStaffRecordID))
//{
string sqlString3 = "Update TP_HR_StaffRecord Set ValueFlag = 0,UpdateUserID = " + sUserInfo.UserID
+ " Where ApprovalStatus = 0 AND RecordType = 1 And ValueFlag = 1 And StaffID = " + staffid;
oracleTrConn.ExecuteNonQuery(sqlString3);
//}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
else
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -4;
return resultEnity;
}
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
}
#endregion
#region 员工入职
///
/// 添加员工履历
///
/// 员工履历实体类
/// 用户基本信息
/// HRResultEntity
public static HRResultEntity AddStaffRecord(StaffRecordEntity staffrecord, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
if (staffrecord == null)
{
resultEnity.OperateStatus = 0;
return resultEnity;
}
if (staffrecord.ExProbationEndDate != null)
{
// 取得最近一次工资结算日
DateTime wageDate = CommonModuleLogic.CommonModuleLogic.GetSystemDate(Constant.SystemDateType.WageSettlementDate, sUserInfo);
if (staffrecord.ExProbationEndDate.Value <= wageDate)
{
resultEnity.OperateStatus = Constant.INT_IS_NEGATIE_FOUR;
return resultEnity;
}
}
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
//查询此员工是否有待审批的履历
string sql = "SELECT 1 FROM TP_HR_STAFFRECORD"
+ " WHERE Staffid =:Staffid and RecordType = 1 And ValueFlag = 1 and ApprovalStatus=0";
OracleParameter[] parmetersSql = new OracleParameter[]
{
new OracleParameter(":Staffid", OracleDbType.Int32, staffrecord.StaffID , ParameterDirection.Input),
};
DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, parmetersSql);
if (returnDataset != null && returnDataset.Tables[0].Rows.Count > 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -1;
return resultEnity;//不允许在添加,此员工有待审批的履历
}
// 查询新插入的生产数据ID
string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
#region 插入员工履历数据
string sqlString = " INSERT INTO TP_HR_STAFFRECORD "
+ "(StaffRecordID,StaffID"
+ ",StaffCode"
+ ",RecordDate"
+ ",RecordType"
+ ",ExProbationEndDate"
+ ",OriginalStaffStatus"
+ ",OriginalJobs"
+ ",OriginalOrganizationID"
+ ",OriginalPost"
+ ",TargetStaffStatus"
+ ",TargetJobs"
+ ",TargetOrganizationID"
+ ",TargetPost"
+ ",Applicant"
+ ",Reason"
+ ",Suggestion"
+ ",ApprovalStatus"
+ ",Approver"
+ ",ApprovalDate"
+ ",Remarks"
+ ",AccountID"
+ ",ValueFlag"
+ ",CreateUserID"
+ ",UpdateUserID"
+ ")"
+ " VALUES "
+ " (:StaffRecordID,:StaffID"
+ ",:StaffCode"
+ ",sysdate"
+ ",:RecordType"
+ ",:ExProbationEndDate"
+ ",:OriginalStaffStatus"
+ ",:OriginalJobs"
+ ",:OriginalOrganizationID"
+ ",:OriginalPost"
+ ",:TargetStaffStatus"
+ ",:TargetJobs"
+ ",:TargetOrganizationID"
+ ",:TargetPost"
+ ",:Applicant"
+ ",:Reason"
+ ",:Suggestion"
+ ",:ApprovalStatus"
+ ",:Approver"
+ ",FUN_CMN_GetAccountDate(:ACCOUNTID)"
+ ",:Remarks"
+ ",:AccountID"
+ ",:ValueFlag"
+ ",:CreateUserID"
+ ",:UpdateUserID"
+ " )";
OracleParameter[] parmeters = new OracleParameter[]
{
new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,staffrecord.StaffID,ParameterDirection.Input),
new OracleParameter(":StaffCode",OracleDbType.Varchar2,staffrecord.StaffCode,ParameterDirection.Input),
new OracleParameter(":RecordType",OracleDbType.Int32,staffrecord.RecordType,ParameterDirection.Input),
new OracleParameter(":ExProbationEndDate",OracleDbType.Date,staffrecord.ExProbationEndDate,ParameterDirection.Input),
new OracleParameter(":OriginalStaffStatus",OracleDbType.Int32,staffrecord.OriginalStaffStatus,ParameterDirection.Input),
new OracleParameter(":OriginalJobs",OracleDbType.Int32,staffrecord.OriginalJobs,ParameterDirection.Input),
new OracleParameter(":OriginalOrganizationID",OracleDbType.Int32,staffrecord.OriginalOrganizationID,ParameterDirection.Input),
new OracleParameter(":OriginalPost",OracleDbType.Int32,staffrecord.OriginalPost,ParameterDirection.Input),
new OracleParameter(":TargetStaffStatus",OracleDbType.Int32,staffrecord.TargetStaffStatus,ParameterDirection.Input),
new OracleParameter(":TargetJobs",OracleDbType.Int32,staffrecord.TargetJobs,ParameterDirection.Input),
new OracleParameter(":TargetOrganizationID",OracleDbType.Int32,staffrecord.TargetOrganizationID,ParameterDirection.Input),
new OracleParameter(":TargetPost",OracleDbType.Int32,staffrecord.TargetPost,ParameterDirection.Input),
new OracleParameter(":Applicant",OracleDbType.Int32,staffrecord.Applicant,ParameterDirection.Input),
new OracleParameter(":Reason",OracleDbType.Varchar2,staffrecord.Reason,ParameterDirection.Input),
new OracleParameter(":Suggestion",OracleDbType.Varchar2,staffrecord.Suggestion,ParameterDirection.Input),
new OracleParameter(":ApprovalStatus",OracleDbType.Int32,staffrecord.ApprovalStatus,ParameterDirection.Input),
new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,staffrecord.Remarks,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,staffrecord.ValueFlag,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
resultEnity.HRStaffRecordID = Convert.ToInt32(strSeq);
#region 更新员工档案的试用期时间
string strSql2 = "Update TP_HR_Staff Set ExProbationEndDate = :pExProbationEndDate WHERE StaffID = :pStaffID";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":pExProbationEndDate", OracleDbType.Date, staffrecord.ExProbationEndDate, ParameterDirection.Input),
new OracleParameter(":pStaffID", OracleDbType.Int32, staffrecord.StaffID , ParameterDirection.Input)
};
foreach (var itemNull in parmetersSql2)
{
if (string.IsNullOrEmpty(itemNull.Value + ""))
{
itemNull.Value = DBNull.Value;
}
}
oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
#endregion
if (staffrecord.ApprovalStatus == 3) //审批通过
{
#region 更新数据到员工档案表
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ "StaffStatus=" + staffrecord.TargetStaffStatus //试用
+ ",EntryDate=FUN_CMN_GetAccountDate(:pACCOUNTID)"
+ ",UpdateUserID=:pUpdateUserID"
+ ",OrganizationID=:OrganizationID"
+ ",Post=:Post"
+ ",Jobs=:Jobs"
+ ",TurnoverDate=NULL"
+ " Where StaffID=:pStaffID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":pACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pStaffID",OracleDbType.Int32,staffrecord.StaffID,ParameterDirection.Input),
new OracleParameter(":OrganizationID",OracleDbType.Int32,staffrecord.TargetOrganizationID,ParameterDirection.Input),
new OracleParameter(":Post",OracleDbType.Int32,staffrecord.TargetPost,ParameterDirection.Input),
new OracleParameter(":Jobs",OracleDbType.Int32,staffrecord.TargetJobs,ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
if (staffrecord.TargetStaffStatus == 1)
{
#region 如果试用,往试用表里插入数据
string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
+ "StaffID"
+ ",JobsID"
+ ",BeginDate"
+ ",AccountID"
+ ",CreateUserID"
+ ",UpdateUserID) VALUES ("
+ ":StaffID"
+ ",:JobsID"
+ ",sysdate"
+ ",:AccountID"
+ ",:CreateUserID"
+ ",:UpdateUserID)";
OracleParameter[] parmeters3 = new OracleParameter[]
{
new OracleParameter(":StaffID",OracleDbType.Int32,staffrecord.StaffID,ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,staffrecord.TargetJobs,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
#endregion
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
///
/// 编辑员工履历
///
/// 员工履历实体类
/// 用户基本信息
/// HRResultEntity
public static HRResultEntity EditStaffRecord(StaffRecordEntity staffrecord, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
if (staffrecord == null)
{
resultEnity.OperateStatus = 0;
return resultEnity;
}
if (staffrecord.ExProbationEndDate != null)
{
// 取得最近一次工资结算日
DateTime wageDate = CommonModuleLogic.CommonModuleLogic.GetSystemDate(Constant.SystemDateType.WageSettlementDate, sUserInfo);
if (staffrecord.ExProbationEndDate.Value <= wageDate)
{
resultEnity.OperateStatus = Constant.INT_IS_NEGATIE_FOUR;
return resultEnity;
}
}
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
string sql = "SELECT OPTimeStamp FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = " + staffrecord.StaffRecordID + " and OPTimeStamp = :OPTimeStamp";
OracleParameter[] parmetersSql = new OracleParameter[]
{
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, staffrecord.OPTimeStamp, ParameterDirection.Input),
};
DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, parmetersSql);
if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity;
}
#region 更新员工履历信息
string sqlString = " UPDATE TP_HR_STAFFRECORD SET "
+ "StaffID=:StaffID"
+ ",StaffCode=:StaffCode"
+ ",ExProbationEndDate=:ExProbationEndDate"
+ ",OriginalStaffStatus=:OriginalStaffStatus"
+ ",OriginalJobs=:OriginalJobs"
+ ",OriginalOrganizationID=:OriginalOrganizationID"
+ ",OriginalPost=:OriginalPost"
+ ",TargetStaffStatus=:TargetStaffStatus"
+ ",TargetJobs=:TargetJobs"
+ ",TargetOrganizationID=:TargetOrganizationID"
+ ",TargetPost=:TargetPost"
+ ",Reason=:Reason"
+ ",Suggestion=:Suggestion"
+ ",UpdateUserID=:UpdateUserID"
+ ",Applicant=:Applicant"
+ ",Remarks=:Remarks"
+ " Where StaffRecordID=:StaffRecordID";
OracleParameter[] parmeters = new OracleParameter[]
{
new OracleParameter(":StaffID",OracleDbType.Int32,staffrecord.StaffID,ParameterDirection.Input),
new OracleParameter(":StaffCode",OracleDbType.Varchar2,staffrecord.StaffCode,ParameterDirection.Input),
new OracleParameter(":ExProbationEndDate",OracleDbType.Date,staffrecord.ExProbationEndDate,ParameterDirection.Input),
new OracleParameter(":OriginalStaffStatus",OracleDbType.Int32,staffrecord.OriginalStaffStatus,ParameterDirection.Input),
new OracleParameter(":OriginalJobs",OracleDbType.Int32,staffrecord.OriginalJobs,ParameterDirection.Input),
new OracleParameter(":OriginalOrganizationID",OracleDbType.Int32,staffrecord.OriginalOrganizationID,ParameterDirection.Input),
new OracleParameter(":OriginalPost",OracleDbType.Int32,staffrecord.OriginalPost,ParameterDirection.Input),
new OracleParameter(":TargetStaffStatus",OracleDbType.Int32,staffrecord.TargetStaffStatus,ParameterDirection.Input),
new OracleParameter(":TargetJobs",OracleDbType.Int32,staffrecord.TargetJobs,ParameterDirection.Input),
new OracleParameter(":TargetOrganizationID",OracleDbType.Int32,staffrecord.TargetOrganizationID,ParameterDirection.Input),
new OracleParameter(":TargetPost",OracleDbType.Int32,staffrecord.TargetPost,ParameterDirection.Input),
new OracleParameter(":Reason",OracleDbType.Varchar2,staffrecord.Reason,ParameterDirection.Input),
new OracleParameter(":Suggestion",OracleDbType.Varchar2,staffrecord.Suggestion,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":StaffRecordID",OracleDbType.Int32,staffrecord.StaffRecordID,ParameterDirection.Input),
new OracleParameter(":Applicant",OracleDbType.Int32,staffrecord.Applicant,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,staffrecord.Remarks,ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
resultEnity.HRStaffRecordID = staffrecord.StaffRecordID;
#region 更新员工档案的试用期时间
string strSql2 = "Update TP_HR_Staff Set ExProbationEndDate = :pExProbationEndDate WHERE StaffID = :pStaffID";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":pExProbationEndDate", OracleDbType.Date, staffrecord.ExProbationEndDate, ParameterDirection.Input),
new OracleParameter(":pStaffID", OracleDbType.Int32, staffrecord.StaffID , ParameterDirection.Input)
};
foreach (var itemNull in parmetersSql2)
{
if (string.IsNullOrEmpty(itemNull.Value + ""))
{
itemNull.Value = DBNull.Value;
}
}
oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
#endregion
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 员工离职
///
/// 保存员工离职履历信息
///
/// 员工编号
/// 员工档案表时间戳
/// 员工履历表实体
/// 用户基本信息
/// 窗体是新增还是编辑
/// 0 没有数据被修改 -1员工档案被其他用户修改 -2存在待审批履历 -3员工履历被其他用户修改
public static HRResultEntity SaveStaffRecordDimission(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, SUserInfo sUserInfo, WCFConstant.FormMode pStatus)
{
HRResultEntity resultEnity = new HRResultEntity();
if (pStaffRecord == null)
{
resultEnity.OperateStatus = 0;
return resultEnity;
}
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 员工档案被其他用户修改
string sql1 = "SELECT * FROM TP_HR_Staff"
+ " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
};
DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
if (dtStaff == null || dtStaff.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;// 员工档案被其他用户修改
}
#endregion
if (pStatus == WCFConstant.FormMode.Add)
{
#region 新增加记录
#region 查询此员工是否有待审批的履历
string sql2 = "SELECT Count(*) FROM TP_HR_STAFFRECORD"
+ " WHERE Staffid =:Staffid And ApprovalStatus=0 And ValueFlag = 1";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
};
string strCount = oracleTrConn.GetSqlResultToStr(sql2, parmetersSql2);
if (strCount != "0")
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -1;
return resultEnity;//不允许在添加,此员工有待审批的履历
}
#endregion
// 查询新插入的生产数据ID
string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
#region 向员工履历表插入数据
string sqlString = " INSERT INTO TP_HR_STAFFRECORD "
+ "(StaffRecordID,StaffID"
+ ",StaffCode"
+ ",RecordDate"
+ ",RecordType"
+ ",OriginalStaffStatus"
+ ",OriginalJobs"
+ ",OriginalOrganizationID"
+ ",OriginalPost"
+ ",TargetStaffStatus"
+ ",TargetJobs"
+ ",TargetOrganizationID"
+ ",TargetPost"
+ ",Applicant"
+ ",Reason"
+ ",Suggestion"
+ ",ApprovalStatus"
+ ",Approver"
+ ",ApprovalDate"
+ ",Remarks"
+ ",AccountID"
+ ",ValueFlag"
+ ",CreateUserID"
+ ",UpdateUserID"
+ ")"
+ " VALUES "
+ " (:StaffRecordID,:StaffID"
+ ",:StaffCode"
+ ",:RecordDate"
+ ",:RecordType"
+ ",:OriginalStaffStatus"
+ ",:OriginalJobs"
+ ",:OriginalOrganizationID"
+ ",:OriginalPost"
+ ",:TargetStaffStatus"
+ ",:TargetJobs"
+ ",:TargetOrganizationID"
+ ",:TargetPost"
+ ",:Applicant"
+ ",:Reason"
+ ",:Suggestion"
+ ",:ApprovalStatus"
+ ",:Approver"
+ ",FUN_CMN_GetAccountDate(:ACCOUNTID)"
+ ",:Remarks"
+ ",:AccountID"
+ ",:ValueFlag"
+ ",:CreateUserID"
+ ",:UpdateUserID"
+ " )";
OracleParameter[] parmeters = new OracleParameter[]
{
new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,pStaffRecord.StaffID,ParameterDirection.Input),
new OracleParameter(":StaffCode",OracleDbType.Varchar2,dtStaff.Rows[0]["StaffCode"].ToString(),ParameterDirection.Input),
new OracleParameter(":RecordDate",OracleDbType.Date,pStaffRecord.RecordDate,ParameterDirection.Input),
new OracleParameter(":RecordType",OracleDbType.Int32,6,ParameterDirection.Input),
new OracleParameter(":OriginalStaffStatus",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["StaffStatus"].ToString()),ParameterDirection.Input),
new OracleParameter(":OriginalJobs",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Jobs"].ToString()),ParameterDirection.Input),
new OracleParameter(":OriginalOrganizationID",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["OrganizationID"].ToString()),ParameterDirection.Input),
new OracleParameter(":OriginalPost",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Post"].ToString()),ParameterDirection.Input),
new OracleParameter(":TargetStaffStatus",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["StaffStatus"].ToString()),ParameterDirection.Input),
new OracleParameter(":TargetJobs",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Jobs"].ToString()),ParameterDirection.Input),
new OracleParameter(":TargetOrganizationID",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["OrganizationID"].ToString()),ParameterDirection.Input),
new OracleParameter(":TargetPost",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Post"].ToString()),ParameterDirection.Input),
new OracleParameter(":Applicant",OracleDbType.Int32,pStaffRecord.Applicant,ParameterDirection.Input),
new OracleParameter(":Reason",OracleDbType.Varchar2,pStaffRecord.Reason,ParameterDirection.Input),
new OracleParameter(":Suggestion",OracleDbType.Varchar2,pStaffRecord.Suggestion,ParameterDirection.Input),
new OracleParameter(":ApprovalStatus",OracleDbType.Int32,pStaffRecord.ApprovalStatus,ParameterDirection.Input),
new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
//new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,pStaffRecord.Remarks,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,1,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
#endregion
resultEnity.HRStaffRecordID = Convert.ToInt32(strSeq);
}
else if (pStatus == WCFConstant.FormMode.Edit)
{
#region 编辑记录
#region 员工履历被其他用户修改
string sql2 = "SELECT Count(*) FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = " + pStaffRecord.StaffRecordID + " And OPTimeStamp = :OPTimeStamp";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
};
string strCount = oracleTrConn.GetSqlResultToStr(sql2, parmetersSql2);
if ("0".Equals(strCount))
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity; //员工履历被其他用户修改
}
#endregion
#region 更新数据到员工履历表
string sqlString = " UPDATE TP_HR_STAFFRECORD SET "
+ "RecordDate=:RecordDate"
+ ",Applicant=:Applicant"
+ ",Reason=:Reason"
+ ",Suggestion=:Suggestion"
+ ",Remarks = :Remarks"
+ ",UpdateUserID=:UpdateUserID"
+ " Where StaffRecordID=:StaffRecordID";
OracleParameter[] parmeters = new OracleParameter[]
{
new OracleParameter(":RecordDate",OracleDbType.Date,pStaffRecord.RecordDate,ParameterDirection.Input),
new OracleParameter(":Applicant",OracleDbType.Int32,pStaffRecord.Applicant,ParameterDirection.Input),
new OracleParameter(":Reason",OracleDbType.Varchar2,pStaffRecord.Reason,ParameterDirection.Input),
new OracleParameter(":Suggestion",OracleDbType.Varchar2,pStaffRecord.Suggestion,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,pStaffRecord.Remarks,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":StaffRecordID",OracleDbType.Int32,pStaffRecord.StaffRecordID,ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
resultEnity.HRStaffRecordID = pStaffRecord.StaffRecordID;
#endregion
}
#region 更新数据到员工档案表
// 如果审批通过,直接更新员工为离职状态
if (pStaffRecord.ApprovalStatus == 3)
{
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ "StaffStatus=3"
+ ",TurnoverDate=FUN_CMN_GetAccountDate(:pACCOUNTID)"
+ ",UpdateUserID=:pUpdateUserID"
+ " Where StaffID=:pStaffID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":pACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
};
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
}
#endregion
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
}
///
/// 员工离职操作
///
///
///
///
public static ServiceResultEntity StaffTurnover(ClientRequestEntity cre, SUserInfo sUserInfo)
{
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
ServiceResultEntity sre = new ServiceResultEntity();
string staffIDs = cre.Properties["staffIDs"] + "";
if (staffIDs == null || staffIDs.Length == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
return sre;
}
if (cre.Data == null || cre.Data.Tables.Count == 0 || cre.Data.Tables[0].Rows.Count == 0)
{
sre.Message = "无员工信息";
return null;
}
DataTable dtStaff = cre.Data.Tables[0];
oracleTrConn.Connect();
#region 更新员工状态为离职
string sqlString = @" UPDATE TP_HR_Staff
SET StaffStatus = 3,
TurnoverDate = SYSDATE
WHERE StaffID IN ("+ staffIDs + ")";
int returnRows = oracleTrConn.ExecuteNonQuery(sqlString);
#endregion
#region 向员工履历表插入数据
// 新建个履历实体
StaffRecordEntity pStaffRecord = new StaffRecordEntity();
pStaffRecord.RecordDate = DateTime.Now; // 履历日期取今天
pStaffRecord.Applicant = sUserInfo.UserID; // 申请人取操作者
pStaffRecord.Reason = "-"; // 原因为空
pStaffRecord.Suggestion = "-"; // 意见为空
pStaffRecord.ApprovalStatus = 3; // 直接审批通过
pStaffRecord.Remarks = "一键离职"; // 备注一键离职
int returnStaffRecordRows = 0;
sqlString = " INSERT INTO TP_HR_STAFFRECORD "
+ "(StaffRecordID,StaffID"
+ ",StaffCode"
+ ",RecordDate"
+ ",RecordType"
+ ",OriginalStaffStatus"
+ ",OriginalJobs"
+ ",OriginalOrganizationID"
+ ",OriginalPost"
+ ",TargetStaffStatus"
+ ",TargetJobs"
+ ",TargetOrganizationID"
+ ",TargetPost"
+ ",Applicant"
+ ",Reason"
+ ",Suggestion"
+ ",ApprovalStatus"
+ ",Approver"
+ ",ApprovalDate"
+ ",Remarks"
+ ",AccountID"
+ ",ValueFlag"
+ ",CreateUserID"
+ ",UpdateUserID"
+ ")"
+ " VALUES "
+ " (:StaffRecordID,:StaffID"
+ ",:StaffCode"
+ ",:RecordDate"
+ ",:RecordType"
+ ",:OriginalStaffStatus"
+ ",:OriginalJobs"
+ ",:OriginalOrganizationID"
+ ",:OriginalPost"
+ ",:TargetStaffStatus"
+ ",:TargetJobs"
+ ",:TargetOrganizationID"
+ ",:TargetPost"
+ ",:Applicant"
+ ",:Reason"
+ ",:Suggestion"
+ ",:ApprovalStatus"
+ ",:Approver"
+ ",FUN_CMN_GetAccountDate(:ACCOUNTID)"
+ ",:Remarks"
+ ",:AccountID"
+ ",:ValueFlag"
+ ",:CreateUserID"
+ ",:UpdateUserID"
+ " )";
foreach (DataRow row in dtStaff.Rows)
{
string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
OracleParameter[] parmeters = new OracleParameter[]
{
new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,Convert.ToInt32(row["staffID"]),ParameterDirection.Input),
new OracleParameter(":StaffCode",OracleDbType.Varchar2,dtStaff.Rows[0]["StaffCode"].ToString(),ParameterDirection.Input),
new OracleParameter(":RecordDate",OracleDbType.Date,pStaffRecord.RecordDate,ParameterDirection.Input),
new OracleParameter(":RecordType",OracleDbType.Int32,6,ParameterDirection.Input),
new OracleParameter(":OriginalStaffStatus",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["StaffStatus"].ToString()),ParameterDirection.Input),
new OracleParameter(":OriginalJobs",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Jobs"].ToString()),ParameterDirection.Input),
new OracleParameter(":OriginalOrganizationID",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["OrganizationID"].ToString()),ParameterDirection.Input),
new OracleParameter(":OriginalPost",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Post"].ToString()),ParameterDirection.Input),
new OracleParameter(":TargetStaffStatus",OracleDbType.Int32,3,ParameterDirection.Input),
new OracleParameter(":TargetJobs",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Jobs"].ToString()),ParameterDirection.Input),
new OracleParameter(":TargetOrganizationID",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["OrganizationID"].ToString()),ParameterDirection.Input),
new OracleParameter(":TargetPost",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Post"].ToString()),ParameterDirection.Input),
new OracleParameter(":Applicant",OracleDbType.Int32,pStaffRecord.Applicant,ParameterDirection.Input),
new OracleParameter(":Reason",OracleDbType.Varchar2,pStaffRecord.Reason,ParameterDirection.Input),
new OracleParameter(":Suggestion",OracleDbType.Varchar2,pStaffRecord.Suggestion,ParameterDirection.Input),
new OracleParameter(":ApprovalStatus",OracleDbType.Int32,pStaffRecord.ApprovalStatus,ParameterDirection.Input),
new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
//new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,pStaffRecord.Remarks,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,1,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
returnStaffRecordRows = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
}
#endregion
oracleTrConn.Commit();
oracleTrConn.Disconnect();
if (returnRows > 0 && returnStaffRecordRows > 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
}
return sre;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
///
/// 导入员工离职
///
///
///
///
public static ServiceResultEntity ImportStaffTurnover(ClientRequestEntity cre, SUserInfo sUserInfo)
{
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
ServiceResultEntity sre = new ServiceResultEntity();
if (cre.Data == null || cre.Data.Tables.Count == 0 || cre.Data.Tables[0].Rows.Count == 0)
{
sre.Message = "无员工信息";
return null;
}
DataTable staffInfo = cre.Data.Tables[0];
staffInfo.Columns.Add("StaffID",typeof(int));
oracleTrConn.Connect();
#region 验证员工编码是否都存在
StringBuilder staffCodes = new StringBuilder();
foreach (DataRow item in staffInfo.Rows)
{
string sql = @"SELECT StaffID FROM TP_HR_Staff
WHERE StaffStatus <> 3 AND ValueFlag = 1
AND StaffCode = '" + item["员工编码"] + "'";
DataTable dtExistsID = oracleTrConn.GetSqlResultToDt(sql);
if (dtExistsID != null && dtExistsID.Rows.Count > 0)
{
item["StaffID"] = dtExistsID.Rows[0][0];
}
else
{
item["StaffID"] = DBNull.Value;
staffCodes.Append(item["员工编码"] + ",");
}
}
// 无效员工不处理 前台提示 chenxy 2019-10-14
//if (staffCodes != null && staffCodes.Length > 0)
//{
// sre.Status = Constant.ServiceResultStatus.Other;
// sre.Message = "以下员工编码在系统中不存在或已离职或停用:" + System.Environment.NewLine
// + staffCodes.ToString(0, staffCodes.Length - 1);
// return sre;
//}
#endregion
#region 更新员工状态为离职
int returnRows = 0;
DateTime turnoverDate;
string sqlString = string.Empty;
OracleParameter[] parmeters = null;
foreach (DataRow item in staffInfo.Rows)
{
// 无效员工不处理 前台提示 chenxy 2019-10-14
if (item["StaffID"] == DBNull.Value)
{
continue;
}
if (!DateTime.TryParse(item["离职日期"] + "", out turnoverDate))
{
turnoverDate = DateTime.Now;
}
sqlString = @" UPDATE TP_HR_Staff
SET StaffStatus = 3,
TurnoverDate = :TurnoverDate
WHERE StaffID = :StaffID";
parmeters = new OracleParameter[]
{
new OracleParameter(":TurnoverDate",OracleDbType.Date, turnoverDate, ParameterDirection.Input ),
new OracleParameter(":StaffID",OracleDbType.Int32,item["StaffID"], ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
sre.Result += item["StaffID"] + ",";
}
sre.Result = (sre.Result + "").Substring(0, (sre.Result + "").Length - 1);
#endregion
#region 向员工履历表插入数据
//// 新建个履历实体
StaffRecordEntity pStaffRecord = new StaffRecordEntity();
pStaffRecord.RecordDate = DateTime.Now; // 履历日期取今天
pStaffRecord.Applicant = sUserInfo.UserID; // 申请人取操作者
pStaffRecord.Reason = "-"; // 原因为空
pStaffRecord.Suggestion = "-"; // 意见为空
pStaffRecord.ApprovalStatus = 3; // 直接审批通过
pStaffRecord.Remarks = "一键导入离职"; // 备注一键离职
int returnStaffRecordRows = 0;
sqlString = "INSERT INTO TP_HR_STAFFRECORD(\n" +
" StaffRecordID\n" +
",StaffID\n" +
",StaffCode\n" +
",RecordDate\n" +
",RecordType\n" +
",OriginalStaffStatus\n" +
",OriginalJobs\n" +
",OriginalOrganizationID\n" +
",OriginalPost\n" +
",TargetStaffStatus\n" +
",TargetJobs\n" +
",TargetOrganizationID\n" +
",TargetPost\n" +
",Applicant\n" +
",Reason\n" +
",Suggestion\n" +
",ApprovalStatus\n" +
",Approver\n" +
",ApprovalDate\n" +
",Remarks\n" +
",AccountID\n" +
",ValueFlag\n" +
",CreateUserID\n" +
",UpdateUserID)\n" +
" SELECT SEQ_HR_STAFFRECORD_ID.nextval\n" +
",StaffID\n" +
",StaffCode\n" +
",SYSDATE\n" +
",:RecordType\n" +
",StaffStatus\n" +
",Jobs\n" +
",OrganizationID\n" +
",POST\n" +
",:TargetStaffStatus\n" +
",Jobs\n" +
",OrganizationID\n" +
",POST\n" +
",:Applicant\n" +
",:Reason\n" +
",:Suggestion\n" +
",:ApprovalStatus\n" +
",:Approver\n" +
",SYSDATE\n" +
",:Remarks\n" +
",:AccountID\n" +
",:ValueFlag\n" +
",:CreateUserID\n" +
",:UpdateUserID\n" +
" FROM TP_HR_STAFF\n" +
" WHERE StaffID IN ("+ sre.Result + ")";
parmeters = new OracleParameter[]
{
new OracleParameter(":RecordType",OracleDbType.Int32,6,ParameterDirection.Input),
new OracleParameter(":TargetStaffStatus",OracleDbType.Int32,3,ParameterDirection.Input),
new OracleParameter(":Applicant",OracleDbType.Int32,pStaffRecord.Applicant,ParameterDirection.Input),
new OracleParameter(":Reason",OracleDbType.Varchar2,pStaffRecord.Reason,ParameterDirection.Input),
new OracleParameter(":Suggestion",OracleDbType.Varchar2,pStaffRecord.Suggestion,ParameterDirection.Input),
new OracleParameter(":ApprovalStatus",OracleDbType.Int32,pStaffRecord.ApprovalStatus,ParameterDirection.Input),
new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,pStaffRecord.Remarks,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,1,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
};
returnStaffRecordRows = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
#endregion
oracleTrConn.Commit();
oracleTrConn.Disconnect();
// 无效员工不处理 前台提示 chenxy 2019-10-14
if (staffCodes != null && staffCodes.Length > 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Message = "以下员工编码在系统中不存在或已离职或停用(其他已导入):" + System.Environment.NewLine
+ staffCodes.ToString(0, staffCodes.Length - 1);
return sre;
}
if (returnRows > 0 && returnStaffRecordRows > 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
}
return sre;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 工种调整
///
/// 保存工种调整方法;
///
/// 员工履历实体类
/// 用户基本信息
/// 状态 1:新增 2:保存
/// 0 没有数据被修改 -1存在待审批履历 -2员工履历被其他用户修改 -3员工档案被其他用户修改
public static HRResultEntity SaveTargetJobInfo(StaffRecordEntity staffRecordEntity, SUserInfo sUserInfo, WCFConstant.FormMode editStatus)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 判断时间戳
string sqlString1 = "SELECT Count(*) FROM TP_HR_Staff"
+ " WHERE AccountID = :AccountID AND StaffID = :staffID"; // AND OPTimeStamp = :oPTimeStamp ";
OracleParameter[] parmeters1 = new OracleParameter[]
{
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
//new OracleParameter(":oPTimeStamp",OracleDbType.TimeStamp, staffRecordEntity.OPTimeStamp,ParameterDirection.Input),
};
DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sqlString1, parmeters1);
if (dtStaff == null || dtStaff.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;// 员工档案被其他用户修改
}
#endregion
// 新建工种调整信息
if (editStatus == WCFConstant.FormMode.Add)
{
#region 验证员工是否存在未审批数据
sqlString1 = "SELECT Count(*) FROM TP_HR_StaffRecord "
+ " WHERE AccountID = :AccountID and ApprovalStatus in(0,1) AND StaffID = :staffID And ValueFlag = 1";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input)
};
string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
if (strCount != "0")
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -1;
return resultEnity;//员工档案存在未审批数据
}
#endregion
//
string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
#region 新增工种调整信息
sqlString1 = "INSERT INTO TP_HR_StaffRecord "
+ "(StaffRecordID,StaffID,StaffCode,RecordDate,RecordType,ExProbationEndDate,ApprovalStatus,Approver,ApprovalDate"
+ ",OriginalOrganizationID,OriginalStaffStatus,OriginalJobs"
+ ",TargetOrganizationID,TargetStaffStatus,TargetJobs"
+ ",Applicant,Reason,Suggestion,Remarks"
+ ",AccountID,CreateTime,UpdateTime,UpdateUserID,CreateUserID)"
+ " VALUES "
+ "(:StaffRecordID,:staffID,:staffCode,:recordDate,:recordType,:exProbationEndDate,:approvalStatus,:Approver,FUN_CMN_GetAccountDate(:ACCOUNTID)"
+ ",:originalOrganizationID,:originalStaffStatus,:originalJobs"
+ ",:targetOrganizationID,:targetStaffStatus,:targetJobs"
+ ",:applicant,:reason,:suggestion,:remarks"
+ ",:AccountID,sysdate,sysdate,:UpdateUserID,:CreateUserID)";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
new OracleParameter(":staffCode",OracleDbType.Varchar2,staffRecordEntity.StaffCode,ParameterDirection.Input),
new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
new OracleParameter(":recordType",OracleDbType.Int32,staffRecordEntity.RecordType,ParameterDirection.Input),
new OracleParameter(":exProbationEndDate",OracleDbType.Date,staffRecordEntity.ExProbationEndDate,ParameterDirection.Input),
new OracleParameter(":approvalStatus",OracleDbType.Int32,staffRecordEntity.ApprovalStatus,ParameterDirection.Input),
new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":originalOrganizationID",OracleDbType.Int32,staffRecordEntity.OriginalOrganizationID,ParameterDirection.Input),
new OracleParameter(":originalStaffStatus",OracleDbType.Int32,staffRecordEntity.OriginalStaffStatus,ParameterDirection.Input),
new OracleParameter(":originalJobs",OracleDbType.Int32,staffRecordEntity.OriginalJobs,ParameterDirection.Input),
new OracleParameter(":targetOrganizationID",OracleDbType.Int32,staffRecordEntity.TargetOrganizationID,ParameterDirection.Input),
new OracleParameter(":targetStaffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
new OracleParameter(":targetJobs",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString1, parmeters1);
resultEnity.HRStaffRecordID = Convert.ToInt32(strSeq);
}//修改工种调整信息
else if (editStatus == WCFConstant.FormMode.Edit)
{
#region 员工履历被其他用户修改
sqlString1 = "SELECT Count(*) FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :OPTimeStamp";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, staffRecordEntity.OPTimeStamp, ParameterDirection.Input)
};
string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
if ("0".Equals(strCount))
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity; //员工履历被其他用户修改
}
#endregion
#region 更新工种调整信息
string sqlString = "UPDATE TP_HR_StaffRecord SET "
+ "RecordDate = :recordDate"
+ ",TargetJobs = :targetJobs"
+ ",TargetStaffStatus = :targetStaffStatus"
+ ",ExProbationEndDate = :exProbationEndDate"
+ ",Applicant = :applicant"
+ ",Reason = :reason"
+ ",Suggestion = :suggestion"
+ ",Remarks = :remarks"
+ ",UpdateUserID = :UpdateUserID"
+ ",UpdateTime = sysdate"
+ " WHERE StaffRecordID = :staffRecordID";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
new OracleParameter(":targetJobs",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
new OracleParameter(":targetStaffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
new OracleParameter(":exProbationEndDate",OracleDbType.Date,staffRecordEntity.ExProbationEndDate,ParameterDirection.Input),
new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input)
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
resultEnity.HRStaffRecordID = staffRecordEntity.StaffRecordID;
}
#region 更新员工档案表中的预计试用期结束日期
string strSql2 = "Update TP_HR_Staff Set ExProbationEndDate = :pExProbationEndDate WHERE StaffID = :pStaffID";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":pExProbationEndDate", OracleDbType.Date, staffRecordEntity.ExProbationEndDate, ParameterDirection.Input),
new OracleParameter(":pStaffID", OracleDbType.Int32, staffRecordEntity.StaffID , ParameterDirection.Input)
};
foreach (var itemNull in parmetersSql2)
{
if (string.IsNullOrEmpty(itemNull.Value + ""))
{
itemNull.Value = DBNull.Value;
}
}
oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
#endregion
#region 更新数据到员工档案表
if (staffRecordEntity.ApprovalStatus == 3)
{
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ "Jobs = :jobs"
+ ",StaffStatus=:staffStatus"
+ ",ExProbationEndDate=:exProbationEndDate"
+ ",UpdateUserID=:pUpdateUserID"
+ " Where StaffID=:pStaffID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":jobs",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
new OracleParameter(":staffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
new OracleParameter(":exProbationEndDate", OracleDbType.Date, staffRecordEntity.ExProbationEndDate, ParameterDirection.Input),
new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pStaffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
};
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
if (staffRecordEntity.ExProbationEndDate != null)
{
#region 如果试用,往试用表里插入数据
string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
+ "StaffID"
+ ",JobsID"
+ ",BeginDate"
+ ",AccountID"
+ ",CreateUserID"
+ ",UpdateUserID) VALUES ("
+ ":StaffID"
+ ",:JobsID"
+ ",sysdate"
+ ",:AccountID"
+ ",:CreateUserID"
+ ",:UpdateUserID)";
OracleParameter[] parmeters3 = new OracleParameter[]
{
new OracleParameter(":StaffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
#endregion
}
}
#endregion
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
///
/// 工种调整审批保存
///
/// 员工编号
/// 员工档案表时间戳
/// 员工履历表实体
/// 审批状态 True 通过 False 不通过
/// 审批意见
/// 用户基本信息
/// 0 没有数据被修改 -1员工档案被其他用户修改 -2存在待审批履历 -3员工履历被其他用户修改
public static HRResultEntity SaveHRStaffJobsApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 员工档案被其他用户修改
string sql1 = "SELECT * FROM TP_HR_Staff"
+ " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
};
DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
if (dtStaff == null || dtStaff.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;// 员工档案被其他用户修改
}
#endregion
#region 员工履历被其他用户修改
string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :oPTimeStamp";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":staffRecordID", OracleDbType.Int32, pStaffRecord.StaffRecordID, ParameterDirection.Input),
new OracleParameter(":oPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
};
DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity;// 员工履历被其他用户修改
}
#endregion
//保存数据到员工履历表和人事审批表
resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
if (pState)
{
#region 更新数据到员工档案表
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ "Jobs = :jobs"
+ ",StaffStatus=:staffStatus"
+ ",ExProbationEndDate=:exProbationEndDate"
+ ",UpdateUserID=:pUpdateUserID"
+ " Where StaffID=:pStaffID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":jobs",OracleDbType.Int32,pStaffRecord.TargetJobs,ParameterDirection.Input),
new OracleParameter(":staffStatus",OracleDbType.Int32,pStaffRecord.TargetStaffStatus,ParameterDirection.Input),
new OracleParameter(":exProbationEndDate", OracleDbType.Date, pStaffRecord.ExProbationEndDate, ParameterDirection.Input),
new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
if (pStaffRecord.ExProbationEndDate != null)
{
#region 如果试用,往试用表里插入数据
string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
+ "StaffID"
+ ",JobsID"
+ ",BeginDate"
+ ",AccountID"
+ ",CreateUserID"
+ ",UpdateUserID) VALUES ("
+ ":StaffID"
+ ",:JobsID"
+ ",sysdate"
+ ",:AccountID"
+ ",:CreateUserID"
+ ",:UpdateUserID)";
OracleParameter[] parmeters3 = new OracleParameter[]
{
new OracleParameter(":StaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,pStaffRecord.TargetJobs,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
#endregion
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 职务调整
///
/// 保存职务调整方法
///
/// 员工履历实体类
/// 用户基本信息
/// 状态 1:新增 2:保存
/// 0 没有数据被修改 -1存在待审批履历 -2员工履历被其他用户修改 -3员工档案被其他用户修改
public static HRResultEntity SaveTargetPostInfo(StaffRecordEntity staffRecordEntity, SUserInfo sUserInfo, WCFConstant.FormMode editStatus)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 判断时间戳
string sqlString1 = "SELECT Count(*) FROM TP_HR_Staff"
+ " WHERE AccountID = :AccountID AND StaffID = :staffID AND OPTimeStamp = :oPTimeStamp ";
OracleParameter[] parmeters1 = new OracleParameter[]
{
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
new OracleParameter(":oPTimeStamp",OracleDbType.TimeStamp, staffRecordEntity.OPTimeStamp,ParameterDirection.Input),
};
DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sqlString1, parmeters1);
if (dtStaff == null || dtStaff.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;// 员工档案被其他用户修改
}
#endregion
// 新建职务调整信息
if (editStatus == WCFConstant.FormMode.Add)
{
#region 验证员工是否存在未审批数据
sqlString1 = "SELECT Count(*) FROM TP_HR_StaffRecord "
+ " WHERE AccountID = :AccountID and ApprovalStatus in(0,1) AND StaffID = :staffID And ValueFlag = 1";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input)
};
string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
if (strCount != "0")
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -1;
return resultEnity;//员工档案存在未审批数据
}
#endregion
//
string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
#region 新增职务调整信息
sqlString1 = "INSERT INTO TP_HR_StaffRecord "
+ "(StaffRecordID,StaffID,StaffCode,RecordDate,RecordType,ExProbationEndDate,ApprovalStatus,Approver,ApprovalDate"
+ ",OriginalOrganizationID,OriginalStaffStatus,OriginalPost"
+ ",TargetOrganizationID,TargetStaffStatus,TargetPost"
+ ",Applicant,Reason,Suggestion,Remarks"
+ ",AccountID,CreateTime,UpdateTime,UpdateUserID,CreateUserID)"
+ " VALUES "
+ "(:StaffRecordID,:staffID,:staffCode,:recordDate,:recordType,:exProbationEndDate,:approvalStatus,:Approver,FUN_CMN_GetAccountDate(:ACCOUNTID)"
+ ",:originalOrganizationID,:originalStaffStatus,:originalPost"
+ ",:targetOrganizationID,:targetStaffStatus,:targetPost"
+ ",:applicant,:reason,:suggestion,:remarks"
+ ",:AccountID,sysdate,sysdate,:UpdateUserID,:CreateUserID)";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
new OracleParameter(":staffCode",OracleDbType.Varchar2,staffRecordEntity.StaffCode,ParameterDirection.Input),
new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
new OracleParameter(":recordType",OracleDbType.Int32,staffRecordEntity.RecordType,ParameterDirection.Input),
new OracleParameter(":exProbationEndDate",OracleDbType.Date,staffRecordEntity.ExProbationEndDate,ParameterDirection.Input),
new OracleParameter(":approvalStatus",OracleDbType.Int32,staffRecordEntity.ApprovalStatus,ParameterDirection.Input),
new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":originalOrganizationID",OracleDbType.Int32,staffRecordEntity.OriginalOrganizationID,ParameterDirection.Input),
new OracleParameter(":originalStaffStatus",OracleDbType.Int32,staffRecordEntity.OriginalStaffStatus,ParameterDirection.Input),
new OracleParameter(":originalPost",OracleDbType.Int32,staffRecordEntity.OriginalPost,ParameterDirection.Input),
new OracleParameter(":targetOrganizationID",OracleDbType.Int32,staffRecordEntity.TargetOrganizationID,ParameterDirection.Input),
new OracleParameter(":targetStaffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
new OracleParameter(":targetPost",OracleDbType.Int32,staffRecordEntity.TargetPost,ParameterDirection.Input),
new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString1, parmeters1);
resultEnity.HRStaffRecordID = Convert.ToInt32(strSeq);
}//修改职务调整信息
else if (editStatus == WCFConstant.FormMode.Edit)
{
#region 员工履历被其他用户修改
sqlString1 = "SELECT Count(*) FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :OPTimeStamp";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, staffRecordEntity.OPTimeStamp, ParameterDirection.Input)
};
string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
if (strCount != "0")
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity; //员工履历被其他用户修改
}
#endregion
#region 更新职务调整信息
string sqlString = "UPDATE TP_HR_StaffRecord SET "
+ "RecordDate = :recordDate"
+ ",TargetPost = :targetPost"
+ ",Applicant = :applicant"
+ ",Reason = :reason"
+ ",Suggestion = :suggestion"
+ ",Remarks = :remarks"
+ ",UpdateUserID = :UpdateUserID"
+ ",UpdateTime = sysdate"
+ " WHERE StaffRecordID = :staffRecordID";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
new OracleParameter(":targetPost",OracleDbType.Int32,staffRecordEntity.TargetPost,ParameterDirection.Input),
new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input)
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
resultEnity.HRStaffRecordID = staffRecordEntity.StaffRecordID;
}
#region 更新数据到员工档案表
if (staffRecordEntity.ApprovalStatus == 3) //审批通过
{
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ "Post = :post"
+ ",UpdateUserID=:pUpdateUserID"
+ " Where StaffID=:pStaffID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":post",OracleDbType.Int32,staffRecordEntity.TargetPost,ParameterDirection.Input),
new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pStaffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
};
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
}
#endregion
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
///
/// 职务调整审批保存
///
/// 员工编号
/// 员工档案表时间戳
/// 员工履历表实体
/// 审批状态 True 通过 False 不通过
/// 审批意见
/// 用户基本信息
/// 0 没有数据被修改 -1员工档案被其他用户修改 -2存在待审批履历 -3员工履历被其他用户修改
public static HRResultEntity SaveHRStaffPostApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 员工档案被其他用户修改
string sql1 = "SELECT * FROM TP_HR_Staff"
+ " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
};
DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
if (dtStaff == null || dtStaff.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;// 员工档案被其他用户修改
}
#endregion
#region 员工履历被其他用户修改
string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :oPTimeStamp";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":staffRecordID", OracleDbType.Int32, pStaffRecord.StaffRecordID, ParameterDirection.Input),
new OracleParameter(":oPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
};
DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity;// 员工履历被其他用户修改
}
#endregion
//保存数据到员工履历表和人事审批表
resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
if (pState) //审批通过
{
#region 更新数据到员工档案表
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ "Post = :post"
+ ",UpdateUserID=:pUpdateUserID"
+ " Where StaffID=:pStaffID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":post",OracleDbType.Int32,pStaffRecord.TargetPost,ParameterDirection.Input),
new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 部门调整
///
/// 保存部门调整方法
///
/// 员工履历实体类
/// 用户基本信息
/// 状态 1:新增 2:保存
/// 0 没有数据被修改 -1存在待审批履历 -2员工履历被其他用户修改 -3员工档案被其他用户修改
public static HRResultEntity SaveTargetOrganizationInfo(StaffRecordEntity staffRecordEntity, SUserInfo sUserInfo, WCFConstant.FormMode editStatus)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 判断时间戳
string sqlString1 = "SELECT Count(*) FROM TP_HR_Staff"
+ " WHERE AccountID = :AccountID AND StaffID = :staffID";
OracleParameter[] parmeters1 = new OracleParameter[]
{
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
};
DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sqlString1, parmeters1);
if (dtStaff == null || dtStaff.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;// 员工档案被其他用户修改
}
#endregion
// 新建工种调整信息
if (editStatus == WCFConstant.FormMode.Add)
{
#region 验证员工是否存在未审批数据
sqlString1 = "SELECT Count(*) FROM TP_HR_StaffRecord "
+ " WHERE AccountID = :AccountID and ApprovalStatus in(0,1) AND StaffID = :staffID And ValueFlag = 1";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input)
};
string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
if (strCount != "0")
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -1;
return resultEnity;//员工档案存在未审批数据
}
#endregion
// 查询新插入的生产数据ID
string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
#region 新增部门调整信息
sqlString1 = "INSERT INTO TP_HR_StaffRecord "
+ "(StaffRecordID,StaffID,StaffCode,RecordDate,RecordType,ExProbationEndDate,ApprovalStatus,Approver,ApprovalDate"
+ ",OriginalOrganizationID,OriginalStaffStatus,OriginalJobs,OriginalPost"
+ ",TargetOrganizationID,TargetStaffStatus,TargetJobs,TargetPost"
+ ",Applicant,Reason,Suggestion,Remarks"
+ ",AccountID,CreateTime,UpdateTime,UpdateUserID,CreateUserID)"
+ " VALUES "
+ "(:StaffRecordID,:staffID,:staffCode,:recordDate,:recordType,:exProbationEndDate,:approvalStatus,:Approver,FUN_CMN_GetAccountDate(:ACCOUNTID)"
+ ",:originalOrganizationID,:originalStaffStatus,:originalJobs,:originalPost"
+ ",:targetOrganizationID,:targetStaffStatus,:targetJobs,:targetPost"
+ ",:applicant,:reason,:suggestion,:remarks"
+ ",:AccountID,sysdate,sysdate,:UpdateUserID,:CreateUserID)";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
new OracleParameter(":staffCode",OracleDbType.Varchar2,staffRecordEntity.StaffCode,ParameterDirection.Input),
new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
new OracleParameter(":recordType",OracleDbType.Int32,staffRecordEntity.RecordType,ParameterDirection.Input),
new OracleParameter(":exProbationEndDate",OracleDbType.Date,staffRecordEntity.ExProbationEndDate,ParameterDirection.Input),
new OracleParameter(":approvalStatus",OracleDbType.Int32,staffRecordEntity.ApprovalStatus,ParameterDirection.Input),
new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":originalOrganizationID",OracleDbType.Int32,staffRecordEntity.OriginalOrganizationID,ParameterDirection.Input),
new OracleParameter(":originalStaffStatus",OracleDbType.Int32,staffRecordEntity.OriginalStaffStatus,ParameterDirection.Input),
new OracleParameter(":originalJobs",OracleDbType.Int32,staffRecordEntity.OriginalJobs,ParameterDirection.Input),
new OracleParameter(":originalPost",OracleDbType.Int32,staffRecordEntity.OriginalPost,ParameterDirection.Input),
new OracleParameter(":targetOrganizationID",OracleDbType.Int32,staffRecordEntity.TargetOrganizationID,ParameterDirection.Input),
new OracleParameter(":targetStaffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
new OracleParameter(":targetJobs",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
new OracleParameter(":targetPost",OracleDbType.Int32,staffRecordEntity.TargetPost,ParameterDirection.Input),
new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
};
foreach (OracleParameter para in parmeters1)
{
if ((para.Value + "").Equals(""))
{
para.Value = DBNull.Value;
}
}
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString1, parmeters1);
resultEnity.HRStaffRecordID = Convert.ToInt32(strSeq);
}//修改部门调整信息
else if (editStatus == WCFConstant.FormMode.Edit)
{
#region 员工履历被其他用户修改
sqlString1 = "SELECT Count(*) FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :OPTimeStamp";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, staffRecordEntity.OPTimeStamp, ParameterDirection.Input)
};
string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
if ("0".Equals(strCount))
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity; //员工履历被其他用户修改
}
#endregion
#region 更新部门调整信息
string sqlString = "UPDATE TP_HR_StaffRecord SET "
+ "RecordDate = :recordDate"
+ ",TargetOrganizationID = :targetOrganizationID"
+ ",TargetStaffStatus = :targetStaffStatus"
+ ",TargetJobs = :targetJobs"
+ ",TargetPost = :targetPost "
+ ",ExProbationEndDate = :exProbationEndDate"
+ ",Applicant = :applicant"
+ ",Reason = :reason"
+ ",Suggestion = :suggestion"
+ ",Remarks = :remarks"
+ ",UpdateUserID = :UpdateUserID"
+ ",UpdateTime = sysdate"
+ " WHERE StaffRecordID = :staffRecordID";
parmeters1 = new OracleParameter[]
{
new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
new OracleParameter(":targetOrganizationID",OracleDbType.Int32,staffRecordEntity.TargetOrganizationID,ParameterDirection.Input),
new OracleParameter(":targetStaffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
new OracleParameter(":targetJobs",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
new OracleParameter(":targetPost",OracleDbType.Int32,staffRecordEntity.TargetPost,ParameterDirection.Input),
new OracleParameter(":exProbationEndDate",OracleDbType.Date,staffRecordEntity.ExProbationEndDate,ParameterDirection.Input),
new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input)
};
foreach (OracleParameter para in parmeters1)
{
if ((para.Value + "").Equals(""))
{
para.Value = DBNull.Value;
}
}
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
resultEnity.HRStaffRecordID = staffRecordEntity.StaffRecordID;
}
#region 更新员工档案表中的预计试用期结束日期
string strSql2 = "Update TP_HR_Staff Set ExProbationEndDate = :pExProbationEndDate WHERE StaffID = :pStaffID";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":pExProbationEndDate", OracleDbType.Date, staffRecordEntity.ExProbationEndDate, ParameterDirection.Input),
new OracleParameter(":pStaffID", OracleDbType.Int32, staffRecordEntity.StaffID , ParameterDirection.Input)
};
foreach (var itemNull in parmetersSql2)
{
if (string.IsNullOrEmpty(itemNull.Value + ""))
{
itemNull.Value = DBNull.Value;
}
}
oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
#endregion
if (staffRecordEntity.ApprovalStatus == 3)
{
List parmeters2 = new List();
parmeters2.Add(new OracleParameter(":organizationID", OracleDbType.Int32, staffRecordEntity.TargetOrganizationID, ParameterDirection.Input));
parmeters2.Add(new OracleParameter(":staffStatus", OracleDbType.Int32, staffRecordEntity.TargetStaffStatus, ParameterDirection.Input));
parmeters2.Add(new OracleParameter(":exProbationEndDate", OracleDbType.TimeStamp, staffRecordEntity.ExProbationEndDate, ParameterDirection.Input));
parmeters2.Add(new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
parmeters2.Add(new OracleParameter(":pStaffID", OracleDbType.Int32, staffRecordEntity.StaffID, ParameterDirection.Input));
#region 更新数据到员工档案表
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ " OrganizationID = :organizationID"
+ " ,StaffStatus=:staffStatus"
+ " ,ExProbationEndDate=:exProbationEndDate";
if (staffRecordEntity.TargetJobs != -1000)
{
sqlString2 += " ,Jobs = :jobs";
parmeters2.Add(new OracleParameter(":jobs", OracleDbType.Int32, staffRecordEntity.TargetJobs, ParameterDirection.Input));
}
if (staffRecordEntity.TargetPost != -1000)
{
sqlString2 += " ,Post = :post";
parmeters2.Add(new OracleParameter(":post", OracleDbType.Int32, staffRecordEntity.TargetPost, ParameterDirection.Input));
}
sqlString2 += " ,UpdateUserID=:pUpdateUserID"
+ " Where StaffID=:pStaffID";
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2.ToArray());
if (staffRecordEntity.ExProbationEndDate != null)
{
#region 如果试用,往试用表里插入数据
string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
+ "StaffID"
+ ",JobsID"
+ ",BeginDate"
+ ",AccountID"
+ ",CreateUserID"
+ ",UpdateUserID) VALUES ("
+ ":StaffID"
+ ",:JobsID"
+ ",sysdate"
+ ",:AccountID"
+ ",:CreateUserID"
+ ",:UpdateUserID)";
OracleParameter[] parmeters3 = new OracleParameter[]
{
new OracleParameter(":StaffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
#endregion
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
///
/// 部门调整审批保存
///
/// 员工编号
/// 员工档案表时间戳
/// 员工履历表实体
/// 审批状态 True 通过 False 不通过
/// 审批意见
/// 用户基本信息
/// 0 没有数据被修改 -1员工档案被其他用户修改 -2存在待审批履历 -3员工履历被其他用户修改
public static HRResultEntity SaveHRStaffOrganizationApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 员工档案被其他用户修改
string sql1 = "SELECT * FROM TP_HR_Staff"
+ " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
};
DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
if (dtStaff == null || dtStaff.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;// 员工档案被其他用户修改
}
#endregion
#region 员工履历被其他用户修改
string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :oPTimeStamp";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":staffRecordID", OracleDbType.Int32, pStaffRecord.StaffRecordID, ParameterDirection.Input),
new OracleParameter(":oPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
};
DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity;// 员工履历被其他用户修改
}
#endregion
//保存数据到员工履历表和人事审批表
resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
if (pState)
{
List parmeters2 = new List();
parmeters2.Add(new OracleParameter(":organizationID", OracleDbType.Int32, pStaffRecord.TargetOrganizationID, ParameterDirection.Input));
parmeters2.Add(new OracleParameter(":staffStatus", OracleDbType.Int32, pStaffRecord.TargetStaffStatus, ParameterDirection.Input));
parmeters2.Add(new OracleParameter(":exProbationEndDate", OracleDbType.TimeStamp, pStaffRecord.ExProbationEndDate, ParameterDirection.Input));
parmeters2.Add(new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input));
parmeters2.Add(new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId, ParameterDirection.Input));
#region 更新数据到员工档案表
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ " OrganizationID = :organizationID"
+ " ,StaffStatus=:staffStatus"
+ " ,ExProbationEndDate=:exProbationEndDate";
if (pStaffRecord.TargetJobs != -1000)
{
sqlString2 += " ,Jobs = :jobs";
parmeters2.Add(new OracleParameter(":jobs", OracleDbType.Int32, pStaffRecord.TargetJobs, ParameterDirection.Input));
}
if (pStaffRecord.TargetPost != -1000)
{
sqlString2 += " ,Post = :post";
parmeters2.Add(new OracleParameter(":post",OracleDbType.Int32,pStaffRecord.TargetPost,ParameterDirection.Input));
}
sqlString2 += " ,UpdateUserID=:pUpdateUserID"
+ " Where StaffID=:pStaffID";
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2.ToArray());
if (pStaffRecord.ExProbationEndDate != null)
{
#region 如果试用,往试用表里插入数据
string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
+ "StaffID"
+ ",JobsID"
+ ",BeginDate"
+ ",AccountID"
+ ",CreateUserID"
+ ",UpdateUserID) VALUES ("
+ ":StaffID"
+ ",:JobsID"
+ ",sysdate"
+ ",:AccountID"
+ ",:CreateUserID"
+ ",:UpdateUserID)";
OracleParameter[] parmeters3 = new OracleParameter[]
{
new OracleParameter(":StaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,pStaffRecord.TargetJobs,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
#endregion
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 员工离职审批
///
/// 人事审批保存
///
/// 员工编号
/// 员工档案表时间戳
/// 员工履历表实体
/// 审批状态 True 通过 False 不通过
/// 审批意见
/// 用户基本信息
/// 0 没有数据被修改 -1员工档案被其他用户修改 -2存在待审批履历 -3员工履历被其他用户修改
public static HRResultEntity SaveHRDimissionApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 员工档案被其他用户修改
string sql1 = "SELECT * FROM TP_HR_Staff"
+ " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
};
DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
if (dtStaff == null || dtStaff.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;// 员工档案被其他用户修改
}
#endregion
#region 员工履历被其他用户修改
string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = " + pStaffRecord.StaffRecordID + " And OPTimeStamp = :OPTimeStamp";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
};
DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity;// 员工履历被其他用户修改
}
#endregion
//保存数据到员工履历表和人事审批表
resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
if (pState) //审批通过
{
#region 更新数据到员工档案表
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ "StaffStatus=3"
+ ",TurnoverDate=FUN_CMN_GetAccountDate(:pACCOUNTID)"
+ ",UpdateUserID=:pUpdateUserID"
+ " Where StaffID=:pStaffID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":pACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 员工履历停用
///
/// 设置禁用员工履历
///
/// 员工履历ID
/// 用户基本信息
/// HRResultEntity
public static HRResultEntity SetStaffRecordValueFlag(int staffrecordid, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
string sql = "Select Count(*) From TP_HR_StaffRecord Where StaffRecordID=" + staffrecordid + " And ApprovalStatus=0 And ValueFlag=1";
string strCount = oracleTrConn.GetSqlResultToStr(sql);
if (!"0".Equals(strCount))
{
string sqlString = "Update TP_HR_StaffRecord Set ValueFlag = 0,UpdateUserID = " + sUserInfo.UserID
+ " Where StaffRecordID =" + staffrecordid;
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString);
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
else
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -5;
return resultEnity;
}
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 员工入职审批
///
/// 员工入职审批
///
/// 员工编号
/// 员工时间戳
/// 员工履历表实体
/// 审批状态 True 通过 False 不通过
/// 审批意见
/// 用户基本信息
///
public static HRResultEntity SaveHRStaffRecordApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 员工档案被其他用户修改
string sql1 = "SELECT * FROM TP_HR_Staff"
+ " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
};
DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
if (dtStaff == null || dtStaff.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;// 员工档案被其他用户修改
}
#endregion
#region 员工履历被其他用户修改
int job = 0;
int Post = 0;
int OrganizationID = 0;
string ExProbationEndDate = "";
string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = " + pStaffRecord.StaffRecordID + " And OPTimeStamp = :OPTimeStamp";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
};
DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity;// 员工履历被其他用户修改
}
else
{
job = Convert.ToInt32(dtStaffRecord.Rows[0]["OriginalJobs"]);//工种
if (dtStaffRecord.Rows[0]["ExProbationEndDate"] != DBNull.Value)
ExProbationEndDate = dtStaffRecord.Rows[0]["ExProbationEndDate"].ToString();
Post = Convert.ToInt32(dtStaffRecord.Rows[0]["OriginalPost"]);//职务
OrganizationID = Convert.ToInt32(dtStaffRecord.Rows[0]["OriginalOrganizationID"]);//组织机构
}
#endregion
//保存数据到员工履历表和人事审批表
resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
if (pState) //审批通过
{
#region 更新数据到员工档案表
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ "StaffStatus=" + (ExProbationEndDate == "" ? "2" : "1") //试用
+ ",EntryDate=FUN_CMN_GetAccountDate(:pACCOUNTID)"
+ ",UpdateUserID=:pUpdateUserID"
+ ",OrganizationID=:OrganizationID"
+ ",Post=:Post"
+ ",Jobs=:Jobs"
+ " Where StaffID=:pStaffID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":pACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
new OracleParameter(":OrganizationID",OracleDbType.Int32,OrganizationID,ParameterDirection.Input),
new OracleParameter(":Post",OracleDbType.Int32,Post,ParameterDirection.Input),
new OracleParameter(":Jobs",OracleDbType.Int32,job,ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
if (ExProbationEndDate != "")
{
#region 如果试用,往试用表里插入数据
string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
+ "StaffID"
+ ",JobsID"
+ ",BeginDate"
+ ",AccountID"
+ ",CreateUserID"
+ ",UpdateUserID) VALUES ("
+ ":StaffID"
+ ",:JobsID"
+ ",sysdate"
+ ",:AccountID"
+ ",:CreateUserID"
+ ",:UpdateUserID)";
OracleParameter[] parmeters3 = new OracleParameter[]
{
new OracleParameter(":StaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,job,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
#endregion
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 员工转正审批
///
/// 员工转正审批
///
/// 员工编号
/// 员工档案表的时间戳
/// 员工履历表实体
/// 审批状态 True 通过 False 不通过
/// 审批原因
/// 用户基本信息
/// HRResultEntity
public static HRResultEntity SaveHrStaffPositiveApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
#region 员工档案被其他用户修改
string sql1 = "SELECT * FROM TP_HR_Staff"
+ " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
};
DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
if (dtStaff == null || dtStaff.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -3;
return resultEnity;// 员工档案被其他用户修改
}
#endregion
#region 员工履历被其他用户修改
int job = 0;
string ExProbationEndDate = "";
string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
+ " WHERE StaffRecordID = " + pStaffRecord.StaffRecordID + " And OPTimeStamp = :OPTimeStamp";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
};
DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity;// 员工履历被其他用户修改
}
else
{
job = Convert.ToInt32(dtStaffRecord.Rows[0]["OriginalJobs"]);//工种
if (dtStaffRecord.Rows[0]["ExProbationEndDate"] != DBNull.Value)
ExProbationEndDate = dtStaffRecord.Rows[0]["ExProbationEndDate"].ToString();
}
#endregion
//保存数据到员工履历表和人事审批表
resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
if (pState) //审批通过
{
#region 更新数据到员工档案表
string sqlString2 = " UPDATE TP_HR_STAFF SET "
+ "StaffStatus=2" //2:转正
+ ",UpdateUserID=:pUpdateUserID"
+ " Where StaffID=:pStaffID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input)
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
if (ExProbationEndDate != "")
{
UpdateHRStaffProbation(pUserId, job, sUserInfo, oracleTrConn);
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 员工考勤
///
/// 根据DataTable中的考勤数据更新数据表
///
/// 考勤数据表
/// 用户基本信息
/// HRResultEntity
public static HRResultEntity SaveStaffAttendanceInfo(DataTable pStaffAttendance, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
if (pStaffAttendance == null || pStaffAttendance.Rows.Count <= 0)
{
resultEnity.OperateStatus = 0;
return resultEnity;
}
oracleTrConn.Connect();
foreach (DataRow newRowStaff in pStaffAttendance.Rows)
{
#region 验证该员工是否存在
if (string.IsNullOrEmpty(newRowStaff["StaffID"].ToString()))
{
resultEnity.OperateLogInfo += "员工编号:" + newRowStaff["StaffCode"].ToString() + " 不存在,不能被添加!" + Environment.NewLine;
continue;
}
#endregion
#region 获取DataRow中的考勤数据
int intStaffID = Convert.ToInt32(newRowStaff["STAFFID"]);
string strStaffName = newRowStaff["StaffName"].ToString();
DateTime dtAttendanceDate = Convert.ToDateTime(newRowStaff["ATTENDANCEDATE"]);
string strCardNumber = newRowStaff["CARDNUMBER"].ToString();
string strAttendanceStatus = newRowStaff["ATTENDANCESTATUS"].ToString();
string strAbsenceReason = newRowStaff["ABSENCEREASON"].ToString();
double douTardinessTimes = Convert.ToDouble(newRowStaff["TARDINESSTIMES"]);
string strRemarks = newRowStaff["Remarks"].ToString();
#endregion
#region 验证数据表中是否存在该数据
string strSql1 = "Select max(SettlementFlag) From TP_HR_StaffAttendance "
+ " Where StaffID = :pStaffID And AttendanceDate = :pAttendanceDate";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID , ParameterDirection.Input),
new OracleParameter(":pAttendanceDate", OracleDbType.Date, dtAttendanceDate , ParameterDirection.Input)
};
#endregion
string strSettlementFlag = oracleTrConn.GetSqlResultToStr(strSql1, parmetersSql1);
if (string.IsNullOrEmpty(strSettlementFlag))
{
#region 向员工考勤表 插入新数据
string strSql2 = "Insert into TP_HR_StaffAttendance Value ("
+ "StaffID"
+ ",AttendanceDate"
+ ",CardNumber"
+ ",AttendanceStatus"
+ ",AbsenceReason"
+ ",TardinessTimes"
+ ",Remarks"
+ ",AccountID"
+ ",CreateUserID"
+ ",UpdateUserID"
+ ",SettlementFlag"
+ ")"
+ " VALUES ("
+ " :pStaffID"
+ " ,:pAttendanceDate"
+ " ,:pCardNumber"
+ " ,:pAttendanceStatus"
+ " ,:pAbsenceReason"
+ " ,:pTardinessTimes"
+ " ,:pRemarks"
+ " ,:pAccountID"
+ " ,:pCreateUserID"
+ " ,:pUpdateUserID"
+ " ,0"
+ " )";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID , ParameterDirection.Input),
new OracleParameter(":pAttendanceDate", OracleDbType.Date, dtAttendanceDate , ParameterDirection.Input),
new OracleParameter(":pCardNumber", OracleDbType.Varchar2, strCardNumber , ParameterDirection.Input),
new OracleParameter(":pAttendanceStatus", OracleDbType.Char, strAttendanceStatus , ParameterDirection.Input),
new OracleParameter(":pAbsenceReason", OracleDbType.Char, strAbsenceReason , ParameterDirection.Input),
new OracleParameter(":pTardinessTimes", OracleDbType.Double, douTardinessTimes , ParameterDirection.Input),
new OracleParameter(":pRemarks", OracleDbType.Varchar2, strRemarks , ParameterDirection.Input),
new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
new OracleParameter(":pCreateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
}
else
{
if ("1".Equals(strSettlementFlag))
{
//工资已经结算 不能进行编辑
resultEnity.OperateLogInfo += strStaffName + dtAttendanceDate.ToString("yyyy-MM-dd") + "工资已经结算!" + Environment.NewLine;
}
else
{
#region 更新员工考勤表的数据
string strSql3 = "Update TP_HR_StaffAttendance Set "
+ "CardNumber = :pCardNumber"
+ ",AttendanceStatus = :pAttendanceStatus"
+ ",AbsenceReason = :pAbsenceReason"
+ ",TardinessTimes = :pTardinessTimes"
+ ",Remarks = :pRemarks"
+ ",UpdateUserID = :pUpdateUserID"
+ " Where StaffID = :pStaffID And AttendanceDate = :pAttendanceDate And AccountID = :pAccountID";
OracleParameter[] parmetersSql3 = new OracleParameter[]
{
new OracleParameter(":pCardNumber", OracleDbType.Varchar2, strCardNumber , ParameterDirection.Input),
new OracleParameter(":pAttendanceStatus", OracleDbType.Char, strAttendanceStatus , ParameterDirection.Input),
new OracleParameter(":pAbsenceReason", OracleDbType.Char, strAbsenceReason , ParameterDirection.Input),
new OracleParameter(":pTardinessTimes", OracleDbType.Double, douTardinessTimes , ParameterDirection.Input),
new OracleParameter(":pRemarks", OracleDbType.Varchar2, strRemarks , ParameterDirection.Input),
new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID , ParameterDirection.Input),
new OracleParameter(":pAttendanceDate", OracleDbType.Date, dtAttendanceDate , ParameterDirection.Input),
new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
}
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 行政奖惩
///
/// 根据传入的实体保存 行政奖惩记录
///
/// 行政奖惩实体
/// 用户基本信息
/// 新增还是编辑枚举
/// HRResultEntity
public static HRResultEntity SaveStaffAdminRAPInfo(HRAdminRAPEntity pAdminRAPEntity, SUserInfo sUserInfo, WCFConstant.FormMode pStatus)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
if (pAdminRAPEntity == null)
{
resultEnity.OperateStatus = 0;
return resultEnity;
}
oracleTrConn.Connect();
if (pStatus == WCFConstant.FormMode.Add)
{
string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_AdminRAP_RAPID.nextval from dual");
#region 新建时插入数据
string strSql1 = "Insert Into TP_HR_ADMINRAP (RAPID,"
+ "STAFFID"
+ ",RAPTYPE"
+ ",REASON"
+ ",RAPDATE"
+ ",RAPAMOUNT"
+ ",ADMINISTRATIONTYPE"
+ ",REMARKS"
+ ",AUDITSTATUS"
+ ",ACCOUNTID"
+ ",CREATEUSERID"
+ ",UPDATEUSERID)"
+ " Values (:RAPID,"
+ ":pSTAFFID"
+ ",:pRAPTYPE"
+ ",:pREASON"
+ ",:pRAPDATE"
+ ",:pRAPAMOUNT"
+ ",:pADMINISTRATIONTYPE"
+ ",:pREMARKS"
+ ",:pAUDITSTATUS"
+ ",:pACCOUNTID"
+ ",:pCREATEUSERID"
+ ",:pUPDATEUSERID"
+ ")";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":RAPID", OracleDbType.Int32,Convert.ToInt32(strSeq) , ParameterDirection.Input),
new OracleParameter(":pSTAFFID", OracleDbType.Int32, pAdminRAPEntity.StaffID , ParameterDirection.Input),
new OracleParameter(":pRAPTYPE", OracleDbType.Double, pAdminRAPEntity.RAPType , ParameterDirection.Input),
new OracleParameter(":pREASON", OracleDbType.Varchar2, pAdminRAPEntity.Reason , ParameterDirection.Input),
new OracleParameter(":pRAPDATE", OracleDbType.Date, pAdminRAPEntity.RAPDate , ParameterDirection.Input),
new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pAdminRAPEntity.RAPAmount , ParameterDirection.Input),
new OracleParameter(":pADMINISTRATIONTYPE", OracleDbType.Int32, pAdminRAPEntity.AdministrationType , ParameterDirection.Input),
new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pAdminRAPEntity.Remarks , ParameterDirection.Input),
new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32, 0 , ParameterDirection.Input),
new OracleParameter(":pACCOUNTID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
new OracleParameter(":pCREATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql1, parmetersSql1);
resultEnity.HRStaffID = Convert.ToInt32(strSeq);
}
else
{
#region 判断数据是否可以编辑
string strSlq2 = "Select max(AuditStatus) From TP_HR_AdminRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":pRAPID", OracleDbType.Int32, pAdminRAPEntity.RAPID , ParameterDirection.Input),
new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pAdminRAPEntity.OPTimeStamp , ParameterDirection.Input),
};
string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq2, parmetersSql2);
if (string.IsNullOrEmpty(strAuditStatus))
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity;
}
if (!"0".Equals(strAuditStatus))
{
//不是待审批状态
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -1;
return resultEnity;
}
#endregion
#region 编辑时更新数据
string strSql3 = "Update TP_HR_AdminRAP Set "
+ "RAPTYPE = :pRAPTYPE"
+ ",REASON = :pREASON"
+ ",RAPDATE = :pRAPDATE"
+ ",RAPAMOUNT = :pRAPAMOUNT"
+ ",ADMINISTRATIONTYPE = :pADMINISTRATIONTYPE"
+ ",REMARKS = :pREMARKS"
+ ",UPDATEUSERID = :pUPDATEUSERID"
+ " Where RAPID = :pRAPID And STAFFID = :pSTAFFID And AccountID = :pAccountID";
OracleParameter[] parmetersSql3 = new OracleParameter[]
{
new OracleParameter(":pRAPTYPE", OracleDbType.Double, pAdminRAPEntity.RAPType , ParameterDirection.Input),
new OracleParameter(":pREASON", OracleDbType.Varchar2, pAdminRAPEntity.Reason , ParameterDirection.Input),
new OracleParameter(":pRAPDATE", OracleDbType.Date, pAdminRAPEntity.RAPDate , ParameterDirection.Input),
new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pAdminRAPEntity.RAPAmount , ParameterDirection.Input),
new OracleParameter(":pADMINISTRATIONTYPE", OracleDbType.Int32, pAdminRAPEntity.AdministrationType , ParameterDirection.Input),
new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pAdminRAPEntity.Remarks , ParameterDirection.Input),
new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
new OracleParameter(":pRAPID", OracleDbType.Int32, pAdminRAPEntity.RAPID , ParameterDirection.Input),
new OracleParameter(":pSTAFFID", OracleDbType.Int32, pAdminRAPEntity.StaffID , ParameterDirection.Input),
new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
resultEnity.HRStaffID = pAdminRAPEntity.RAPID;
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
///
/// 行政奖惩审批
///
/// 行政奖惩实体
/// 审批状态 True 通过 False 不通过
/// 审批原因
/// 用户基本信息
/// HRResultEntity
public static HRResultEntity SaveStaffAdminRAPApprovalInfo(HRAdminRAPEntity pAdminRAPEntity, bool pState, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
if (pAdminRAPEntity == null)
{
resultEnity.OperateStatus = 0;
return resultEnity;
}
oracleTrConn.Connect();
#region 判断数据是否可以编辑
string strSlq1 = "Select max(AuditStatus) From TP_HR_AdminRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":pRAPID", OracleDbType.Int32, pAdminRAPEntity.RAPID , ParameterDirection.Input),
new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pAdminRAPEntity.OPTimeStamp , ParameterDirection.Input),
};
string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq1, parmetersSql1);
if (string.IsNullOrEmpty(strAuditStatus))
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -2;
return resultEnity;
}
if (!"0".Equals(strAuditStatus))
{
//不是待审批状态
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -1;
return resultEnity;
}
#endregion
#region 更新审批数据
int intAuditStatus = 2; //2:审核未通过
if (pState)
{
intAuditStatus = 1; //1:审核通过;
}
string strSql2 = "Update TP_HR_AdminRAP Set "
+ "AUDITSTATUS = :pAUDITSTATUS"
+ ",AUDITOR = :pAUDITOR"
+ ",AUDITDATE = sysdate"
+ ",ACCOUNTDATE = FUN_CMN_GetAccountDate(:pAccountID1)"
+ ",UPDATEUSERID = :pUPDATEUSERID"
+ " Where RAPID = :pRAPID And AccountID = :pAccountID";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32,intAuditStatus, ParameterDirection.Input),
new OracleParameter(":pAUDITOR", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
new OracleParameter(":pAccountID1", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
new OracleParameter(":pRAPID", OracleDbType.Int32, pAdminRAPEntity.RAPID , ParameterDirection.Input),
new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
resultEnity.HRStaffID = pAdminRAPEntity.RAPID;
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
///
/// 设置行政奖惩停用
///
/// 行政奖惩编号
/// 用户基本信息
/// HRResultEntity
public static HRResultEntity SetStaffAdminRAPValueFlag(int pRAPID, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
string sql = "Select max(SettlementFlag) From TP_HR_AdminRAP Where RAPID =" + pRAPID + " And AuditStatus = 0 And ValueFlag = 1";
string strSettlementFlag = oracleTrConn.GetSqlResultToStr(sql);
if (!string.IsNullOrEmpty(strSettlementFlag))
{
if ("1".Equals(strSettlementFlag)) //工资结算标识 1:已经结算 0:未结算
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -6;
return resultEnity;
}
string sqlString = "Update TP_HR_AdminRAP Set ValueFlag = 0,UpdateUserID = :pUpdateUserID"
+ " Where RAPID = :pRAPID And AccountID = :pAccountID";
OracleParameter[] parmetersSql = new OracleParameter[]
{
new OracleParameter(":pUpdateUserID", OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
new OracleParameter(":pRAPID", OracleDbType.Int32, pRAPID , ParameterDirection.Input),
new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
};
resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmetersSql);
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
else
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
resultEnity.OperateStatus = -5;
return resultEnity;
}
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 员工报餐
///
/// 员工报餐保存
///
/// 待保存的数据表
/// 窗口状态枚举
/// 用户基本信息
/// HRResultEntity
public static HRResultEntity SaveStaffDailyMealInfo(DataTable pStaff, WCFConstant.FormMode pStatus, SUserInfo sUserInfo)
{
HRResultEntity resultEnity = new HRResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
if (pStaff == null || pStaff.Rows.Count <= 0)
{
resultEnity.OperateStatus = 0;
return resultEnity;
}
oracleTrConn.Connect();
foreach (DataRow newRowStaff in pStaff.Rows)
{
#region 验证该员工是否存在
if (string.IsNullOrEmpty(newRowStaff["StaffID"].ToString()))
{
resultEnity.OperateLogInfo += "员工编号:" + newRowStaff["StaffCode"].ToString() + " 不存在,不能被添加!" + Environment.NewLine;
continue;
}
#endregion
#region 获取DataRow中的报餐数据
int intStaffID = Convert.ToInt32(newRowStaff["StaffID"]);
DateTime dtMealDate = Convert.ToDateTime(newRowStaff["MealDate"]);
string strOrderBreakfast = string.IsNullOrEmpty(newRowStaff["OrderBreakfast"].ToString()) ? "0" : newRowStaff["OrderBreakfast"].ToString();
string strOrderLunch = string.IsNullOrEmpty(newRowStaff["OrderLunch"].ToString()) ? "0" : newRowStaff["OrderLunch"].ToString();
string strOrderDinner = string.IsNullOrEmpty(newRowStaff["OrderDinner"].ToString()) ? "0" : newRowStaff["OrderDinner"].ToString();
string strMealBreakfast = string.IsNullOrEmpty(newRowStaff["MealBreakfast"].ToString()) ? "0" : newRowStaff["MealBreakfast"].ToString();
string strMealLunch = string.IsNullOrEmpty(newRowStaff["MealLunch"].ToString()) ? "0" : newRowStaff["MealLunch"].ToString();
string strMealDinner = string.IsNullOrEmpty(newRowStaff["MealDinner"].ToString()) ? "0" : newRowStaff["MealDinner"].ToString();
string strRemarks = newRowStaff["Remarks"].ToString();
if (pStatus == WCFConstant.FormMode.MealEdit)
{
strOrderBreakfast = "0";
strOrderLunch = "0";
strOrderDinner = "0";
strRemarks = string.Empty;
}
#endregion
#region 验证数据表中是否存在该数据
string strSql1 = "Select max(StaffID) From TP_HR_StaffDailyMeal "
+ " Where StaffID = :pStaffID And MealDate = :pMealDate";
OracleParameter[] parmetersSql1 = new OracleParameter[]
{
new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID , ParameterDirection.Input),
new OracleParameter(":pMealDate", OracleDbType.Date, dtMealDate , ParameterDirection.Input)
};
#endregion
string strResultStaffID = oracleTrConn.GetSqlResultToStr(strSql1, parmetersSql1);
if (string.IsNullOrEmpty(strResultStaffID))
{
#region 向员工报餐表 插入新数据
string strSql2 = "Insert into TP_HR_StaffDailyMeal Value ("
+ "StaffID"
+ ",MealDate"
+ ",OrderBreakfast"
+ ",OrderLunch"
+ ",OrderDinner"
+ ",MealBreakfast"
+ ",MealLunch"
+ ",MealDinner"
+ ",Remarks"
+ ",AccountID"
+ ",CreateUserID"
+ ",UpdateUserID"
+ ")"
+ " VALUES ("
+ " :pStaffID"
+ " ,:pMealDate"
+ " ,:pOrderBreakfast"
+ " ,:pOrderLunch"
+ " ,:pOrderDinner"
+ " ,:pMealBreakfast"
+ " ,:pMealLunch"
+ " ,:pMealDinner"
+ " ,:pRemarks"
+ " ,:pAccountID"
+ " ,:pCreateUserID"
+ " ,:pUpdateUserID"
+ " )";
OracleParameter[] parmetersSql2 = new OracleParameter[]
{
new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID , ParameterDirection.Input),
new OracleParameter(":pMealDate", OracleDbType.Date, dtMealDate , ParameterDirection.Input),
new OracleParameter(":pOrderBreakfast", OracleDbType.Varchar2, strOrderBreakfast , ParameterDirection.Input),
new OracleParameter(":pOrderLunch", OracleDbType.Varchar2, strOrderLunch , ParameterDirection.Input),
new OracleParameter(":pOrderDinner", OracleDbType.Varchar2, strOrderDinner , ParameterDirection.Input),
new OracleParameter(":pMealBreakfast", OracleDbType.Varchar2, strMealBreakfast , ParameterDirection.Input),
new OracleParameter(":pMealLunch", OracleDbType.Varchar2, strMealLunch , ParameterDirection.Input),
new OracleParameter(":pMealDinner", OracleDbType.Varchar2, strMealDinner , ParameterDirection.Input),
new OracleParameter(":pRemarks", OracleDbType.Varchar2, strRemarks , ParameterDirection.Input),
new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
new OracleParameter(":pCreateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
}
else
{
if (pStatus == WCFConstant.FormMode.Edit)
{
#region 更新员工报餐表的数据
string strSql3 = "Update TP_HR_StaffDailyMeal Set "
+ "OrderBreakfast = :pOrderBreakfast"
+ ",OrderLunch = :pOrderLunch"
+ ",OrderDinner = :pOrderDinner"
+ ",MealBreakfast = :pMealBreakfast"
+ ",MealLunch = :pMealLunch"
+ ",MealDinner = :pMealDinner"
+ ",Remarks = :pRemarks"
+ ",UpdateUserID = :pUpdateUserID"
+ " Where StaffID = :pStaffID And MealDate = :pMealDate And AccountID = :pAccountID";
OracleParameter[] parmetersSql3 = new OracleParameter[]
{
new OracleParameter(":pOrderBreakfast", OracleDbType.Varchar2, strOrderBreakfast , ParameterDirection.Input),
new OracleParameter(":pOrderLunch", OracleDbType.Varchar2, strOrderLunch , ParameterDirection.Input),
new OracleParameter(":pOrderDinner", OracleDbType.Varchar2, strOrderDinner , ParameterDirection.Input),
new OracleParameter(":pMealBreakfast", OracleDbType.Varchar2, strMealBreakfast , ParameterDirection.Input),
new OracleParameter(":pMealLunch", OracleDbType.Varchar2, strMealLunch, ParameterDirection.Input),
new OracleParameter(":pMealDinner", OracleDbType.Varchar2, strMealDinner, ParameterDirection.Input),
new OracleParameter(":pRemarks", OracleDbType.Varchar2, strRemarks, ParameterDirection.Input),
new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID, ParameterDirection.Input),
new OracleParameter(":pMealDate", OracleDbType.Date, dtMealDate , ParameterDirection.Input),
new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
}
else
{
#region 更新员工报餐表的数据
string strSql4 = "Update TP_HR_StaffDailyMeal Set "
+ "MealBreakfast = :pMealBreakfast"
+ ",MealLunch = :pMealLunch"
+ ",MealDinner = :pMealDinner"
+ ",UpdateUserID = :pUpdateUserID"
+ " Where StaffID = :pStaffID And MealDate = :pMealDate And AccountID = :pAccountID";
OracleParameter[] parmetersSql4 = new OracleParameter[]
{
new OracleParameter(":pMealBreakfast", OracleDbType.Varchar2, strMealBreakfast , ParameterDirection.Input),
new OracleParameter(":pMealLunch", OracleDbType.Varchar2, strMealLunch, ParameterDirection.Input),
new OracleParameter(":pMealDinner", OracleDbType.Varchar2, strMealDinner, ParameterDirection.Input),
new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID, ParameterDirection.Input),
new OracleParameter(":pMealDate", OracleDbType.Date, dtMealDate , ParameterDirection.Input),
new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
};
#endregion
resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(strSql4, parmetersSql4);
}
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return resultEnity;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
}
#endregion
#region 私有方法
///
/// 根据传入的数据更新员工履历表数据
///
/// 员工档案表
/// 员工履历表
/// 审批状态 True 通过 False 不通过
/// 审批意见
/// 用户基本信息
/// 数据库事物
/// int返回更新数据行数
private static int UpdateHRApprovalInfo(DataTable pStaff, DataTable pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo, IDBTransaction pTrConn)
{
int returnCount = 0;
int intRECORDTYPE = Convert.ToInt32(pStaffRecord.Rows[0]["RecordType"]);
int intSTAFFRECORDID = Convert.ToInt32(pStaffRecord.Rows[0]["StaffRecordID"]);
int intRESULT = pState ? 1 : 0;
int intApprovalStatus = pState ? 3 : 2;
#region 向人事审批表中插入数据
string strSql1 = "INSERT INTO TP_HR_HRAPPROVAL ("
+ " RECORDTYPE"
+ " ,STAFFRECORDID"
+ " ,SUGGESTION"
+ " ,RESULT"
+ " ,REMARKS"
+ " ,ACCOUNTID"
+ " ,VALUEFLAG"
+ " ,CREATEUSERID"
+ " ,UPDATEUSERID"
+ ")"
+ " VALUES "
+ " (:pRECORDTYPE"
+ ",:pSTAFFRECORDID"
+ ",:pSUGGESTION"
+ ",:pRESULT"
+ ",:pREMARKS"
+ ",:pACCOUNTID"
+ ",:pVALUEFLAG"
+ ",:pCREATEUSERID"
+ ",:pUPDATEUSERID"
+ " )";
OracleParameter[] parmeters1 = new OracleParameter[]
{
new OracleParameter(":pRECORDTYPE",OracleDbType.Int32,intRECORDTYPE,ParameterDirection.Input),
new OracleParameter(":pSTAFFRECORDID",OracleDbType.Int32,intSTAFFRECORDID,ParameterDirection.Input),
new OracleParameter(":pSUGGESTION",OracleDbType.Varchar2,pMemo,ParameterDirection.Input),
new OracleParameter(":pRESULT",OracleDbType.Int32,intRESULT,ParameterDirection.Input),
new OracleParameter(":pREMARKS",OracleDbType.Varchar2,"",ParameterDirection.Input),
new OracleParameter(":pACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":pVALUEFLAG",OracleDbType.Int32,1,ParameterDirection.Input),
new OracleParameter(":pCREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pUPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
};
#endregion
returnCount += pTrConn.ExecuteNonQuery(strSql1, parmeters1);
#region 更新数据到员工履历表
string sqlString2 = " UPDATE TP_HR_STAFFRECORD SET "
+ "ApprovalStatus=:pApprovalStatus"
+ ",Approver=:pApprover"
+ ",ApprovalDate=FUN_CMN_GetAccountDate(:ACCOUNTID)"
+ ",UpdateUserID=:pUpdateUserID"
+ " Where StaffRecordID=:pStaffRecordID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":pApprovalStatus",OracleDbType.Int32,intApprovalStatus,ParameterDirection.Input),
new OracleParameter(":pApprover",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":pStaffRecordID",OracleDbType.Int32,intSTAFFRECORDID,ParameterDirection.Input),
};
#endregion
returnCount += pTrConn.ExecuteNonQuery(sqlString2, parmeters2);
return returnCount;
}
///
/// 更新试用期表中的试用结束日期
///
/// 员工编号
/// 工种编号
/// 用户基本信息
/// 数据库事务
private static void UpdateHRStaffProbation(int pStaffID, int pJobsID, SUserInfo sUserInfo, IDBTransaction pTrConn)
{
string strSql1 = "SELECT MAX(ProbationID) FROM TP_HR_StaffProbation WHERE StaffID = :pStaffID AND JobsID = :pJobsID";
OracleParameter[] parmeters1 = new OracleParameter[]
{
new OracleParameter(":pStaffID", OracleDbType.Int32, pStaffID, ParameterDirection.Input),
new OracleParameter(":pJobsID", OracleDbType.Int32, pJobsID, ParameterDirection.Input)
};
string strProbationID = pTrConn.GetSqlResultToStr(strSql1, parmeters1);
if (!string.IsNullOrEmpty(strProbationID))
{
int intProbationID = Convert.ToInt32(strProbationID);
string strSql2 = "UPDATE TP_HR_StaffProbation SET EndDate = FUN_CMN_GetAccountDate(:pAccountID),UpdateUserID = :pUpdateUserID "
+ " WHERE ProbationID = :pProbationID";
OracleParameter[] parmeters2 = new OracleParameter[]
{
new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
new OracleParameter(":pProbationID", OracleDbType.Int32, intProbationID, ParameterDirection.Input)
};
pTrConn.ExecuteNonQuery(strSql2, parmeters2);
}
}
#endregion
#region 工资结算
///
/// 添加工资结算信息
///
/// 总结算信息实体
/// 各明细结算信息数据集
/// 结算用生产数据
/// 结算用考勤数据
/// 当前操作用户
/// 结果值
public static int AddSalarySettlement(GetSalaryEntity salaryEntity, DataSet dsStaffSalary,
DataSet dsBase,SUserInfo userInfo)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
//首先添加总结算信息
StringBuilder sbSql = new StringBuilder();
sbSql.Clear();
sbSql.Append("select SEQ_SSM_SalarySettlement_ID.nextval from dual");
int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_SalarySettlement");
sbSql.Append(" (SalarySettlementID,AccountMonth,AccountDateFrom,AccountDateTo,SettlementAmount,AdjustmentAmount,");
sbSql.Append(" TotalAmount,Remarks,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:SalarySettlementID,:AccountMonth,:AccountDateFrom,:AccountDateTo,:SettlementAmount,:AdjustmentAmount,");
sbSql.Append(" :TotalAmount,:Remarks,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":SalarySettlementID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":AccountMonth",OracleDbType.Date,
salaryEntity.AccountMonth,ParameterDirection.Input),
new OracleParameter(":AccountDateFrom",OracleDbType.Date,
salaryEntity.SalaryDateS,ParameterDirection.Input),
new OracleParameter(":AccountDateTo",OracleDbType.Date,
salaryEntity.SalaryDateE,ParameterDirection.Input),
new OracleParameter(":SettlementAmount",OracleDbType.Decimal,
salaryEntity.SettlementAmount,ParameterDirection.Input),
new OracleParameter(":AdjustmentAmount",OracleDbType.Decimal,
salaryEntity.AdjustmentAmount,ParameterDirection.Input),
new OracleParameter(":TotalAmount",OracleDbType.Decimal,
salaryEntity.TotalAmount,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
salaryEntity.Remarks,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//然后循环添加各个结算员工工资的总信息
foreach(DataRow drStaffSalaryFor in dsStaffSalary.Tables[0].Rows)
{
sbSql.Clear();
sbSql.Append("select SEQ_SSM_SSStaffSalaryID.nextval from dual");
int ssid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_StaffSalary");
sbSql.Append(" (StaffSalaryID,SalarySettlementID,StaffID,AccountMonth,AccountDateFrom,AccountDateTo,");
sbSql.Append(" BasicSalary,ManagerSalary,WagesSalary,ScrapFine,DefectFine,ProgressSalary,");
sbSql.Append(" AdminSalary,SettlementAmount,AdjustmentAmount,TotalAmount,AuditStatus,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:StaffSalaryID,:SalarySettlementID,:StaffID,:AccountMonth,:AccountDateFrom,:AccountDateTo,");
sbSql.Append(" :BasicSalary,:ManagerSalary,:WagesSalary,:ScrapFine,:DefectFine,:ProgressSalary,");
sbSql.Append(" :AdminSalary,:SettlementAmount,:AdjustmentAmount,:TotalAmount,:AuditStatus,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] SSParas = new OracleParameter[] {
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
ssid,ParameterDirection.Input),
new OracleParameter(":SalarySettlementID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
drStaffSalaryFor["StaffID"],ParameterDirection.Input),
new OracleParameter(":AccountMonth",OracleDbType.Date,
drStaffSalaryFor["AccountMonth"],ParameterDirection.Input),
new OracleParameter(":AccountDateFrom",OracleDbType.Date,
drStaffSalaryFor["AccountDateFrom"],ParameterDirection.Input),
new OracleParameter(":AccountDateTo",OracleDbType.Date,
drStaffSalaryFor["AccountDateTo"],ParameterDirection.Input),
new OracleParameter(":BasicSalary",OracleDbType.Decimal,
drStaffSalaryFor["BasicSalary"],ParameterDirection.Input),
new OracleParameter(":ManagerSalary",OracleDbType.Decimal,
drStaffSalaryFor["ManagerSalary"],ParameterDirection.Input),
new OracleParameter(":WagesSalary",OracleDbType.Decimal,
drStaffSalaryFor["WagesSalary"],ParameterDirection.Input),
new OracleParameter(":ScrapFine",OracleDbType.Decimal,
drStaffSalaryFor["ScrapFine"],ParameterDirection.Input),
new OracleParameter(":DefectFine",OracleDbType.Decimal,
drStaffSalaryFor["DefectFine"],ParameterDirection.Input),
new OracleParameter(":ProgressSalary",OracleDbType.Decimal,
drStaffSalaryFor["ProgressSalary"],ParameterDirection.Input),
new OracleParameter(":AdminSalary",OracleDbType.Decimal,
drStaffSalaryFor["AdminSalary"],ParameterDirection.Input),
new OracleParameter(":SettlementAmount",OracleDbType.Decimal,
drStaffSalaryFor["SettlementAmount"],ParameterDirection.Input),
new OracleParameter(":AdjustmentAmount",OracleDbType.Decimal,
drStaffSalaryFor["AdjustmentAmount"],ParameterDirection.Input),
new OracleParameter(":TotalAmount",OracleDbType.Decimal,
drStaffSalaryFor["TotalAmount"],ParameterDirection.Input),
new OracleParameter(":AuditStatus",OracleDbType.Int32,
drStaffSalaryFor["AuditStatus"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SSParas);
//插入总信息成功后,根据员工ID筛选该员工的各明细信息
//基本工资
DataTable dtBasicSalary = dsStaffSalary.Tables[1];
dtBasicSalary.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
DataTable dtBasicSalaryNow = dtBasicSalary.DefaultView.ToTable();
foreach(DataRow drNow in dtBasicSalaryNow.Rows)
{
sbSql.Clear();
sbSql.Append("select SEQ_SSM_BSBasicSalaryID.nextval from dual");
int bsid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_BasicSalary");
sbSql.Append(" (BasicSalaryID,StaffSalaryID,StaffID,JobsID,SalaryType,BeginDate,EndDate,BasicSalary,Subsidy,");
sbSql.Append(" CheckedDays,AttendanceDays,AbsenceDays,FineAmount,TotalAmount,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:BasicSalaryID,:StaffSalaryID,:StaffID,:JobsID,:SalaryType,:BeginDate,:EndDate,:BasicSalary,:Subsidy,");
sbSql.Append(" :CheckedDays,:AttendanceDays,:AbsenceDays,:FineAmount,:TotalAmount,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] BSParas = new OracleParameter[] {
new OracleParameter(":BasicSalaryID",OracleDbType.Int32,
bsid,ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
ssid,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
drNow["StaffID"],ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,
drNow["JobsID"],ParameterDirection.Input),
new OracleParameter(":SalaryType",OracleDbType.Int32,
Convert.ToInt32(drNow["SalaryType"])-1,ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
drNow["BeginDate"],ParameterDirection.Input),
new OracleParameter(":EndDate",OracleDbType.Date,
drNow["EndDate"],ParameterDirection.Input),
new OracleParameter(":BasicSalary",OracleDbType.Decimal,
drNow["BasicSalary"],ParameterDirection.Input),
new OracleParameter(":Subsidy",OracleDbType.Decimal,
drNow["Subsidy"],ParameterDirection.Input),
new OracleParameter(":CheckedDays",OracleDbType.Decimal,
drNow["CheckedDays"],ParameterDirection.Input),
new OracleParameter(":AttendanceDays",OracleDbType.Decimal,
drNow["AttendanceDays"],ParameterDirection.Input),
new OracleParameter(":AbsenceDays",OracleDbType.Decimal,
drNow["AbsenceDays"],ParameterDirection.Input),
new OracleParameter(":FineAmount",OracleDbType.Decimal,
drNow["FineAmount"],ParameterDirection.Input),
new OracleParameter(":TotalAmount",OracleDbType.Decimal,
drNow["TotalAmount"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), BSParas);
}
//计件工资
DataTable dtWages = dsStaffSalary.Tables[2];
dtWages.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
DataTable dtWagesNow = dtWages.DefaultView.ToTable();
foreach (DataRow drNow in dtWagesNow.Rows)
{
sbSql.Clear();
sbSql.Append("select SEQ_SSM_Wages_WagesID.nextval from dual");
int wid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_Wages");
sbSql.Append(" (WagesID,StaffSalaryID,StaffID,WagesJobs,PriceType,SalaryType,AccountDateFrom,AccountDateTo,BarCode,KilnID,");
sbSql.Append(@" KilnCarID,IntoKilnTime,OutKilnTime,GoodsId,GoodsLevelTypeID,
Wages,Salary,Remarks,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:WagesID,:StaffSalaryID,:StaffID,:WagesJobs,:PriceType,:SalaryType,:AccountDateFrom,:AccountDateTo,:BarCode,:KilnID,");
sbSql.Append(@" :KilnCarID,:IntoKilnTime,:OutKilnTime,:GoodsId,:GoodsLevelTypeID,
:Wages,:Salary,:Remarks,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] WParas = new OracleParameter[] {
new OracleParameter(":WagesID",OracleDbType.Int32,
wid,ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
ssid,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
drNow["StaffID"],ParameterDirection.Input),
new OracleParameter(":WagesJobs",OracleDbType.Int32,
drNow["WagesJobs"],ParameterDirection.Input),
new OracleParameter(":PriceType",OracleDbType.Int32,
drNow["PriceType"],ParameterDirection.Input),
new OracleParameter(":SalaryType",OracleDbType.Int32,
drNow["SalaryType"],ParameterDirection.Input),
new OracleParameter(":AccountDateFrom",OracleDbType.Date,
drNow["AccountDateFrom"],ParameterDirection.Input),
new OracleParameter(":AccountDateTo",OracleDbType.Date,
drNow["AccountDateTo"],ParameterDirection.Input),
new OracleParameter(":BarCode",OracleDbType.NVarchar2,
drNow["BarCode"],ParameterDirection.Input),
new OracleParameter(":KilnID",OracleDbType.Int32,
drNow["KilnID"],ParameterDirection.Input),
new OracleParameter(":KilnCarID",OracleDbType.Int32,
drNow["KilnCarID"],ParameterDirection.Input),
new OracleParameter(":IntoKilnTime",OracleDbType.Date,
drNow["IntoKilnTime"],ParameterDirection.Input),
new OracleParameter(":OutKilnTime",OracleDbType.Date,
drNow["OutKilnTime"],ParameterDirection.Input),
new OracleParameter(":GoodsId",OracleDbType.Int32,
drNow["GoodsId"],ParameterDirection.Input),
new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
drNow["GoodsLevelTypeID"],ParameterDirection.Input),
new OracleParameter(":Wages",OracleDbType.Decimal,
drNow["Wages"],ParameterDirection.Input),
new OracleParameter(":Salary",OracleDbType.Decimal,
drNow["Salary"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
drNow["Remarks"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), WParas);
}
//缺陷扣罚
DataTable dtDefectFine = dsStaffSalary.Tables[3];
dtDefectFine.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
DataTable dtDefectFineNow = dtDefectFine.DefaultView.ToTable();
foreach (DataRow drNow in dtDefectFineNow.Rows)
{
sbSql.Clear();
sbSql.Append("select SEQ_SSM_DefectFine_DefectID.nextval from dual");
int dfid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_DefectFine");
sbSql.Append(" (DefectFineID,StaffSalaryID,StaffID,StaffStatus,JobsID,SalaryType,BeginDate,EndDate,BarCode,");
sbSql.Append(" DefectFine,FineType,FineAmount,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:DefectFineID,:StaffSalaryID,:StaffID,:StaffStatus,:JobsID,:SalaryType,:BeginDate,:EndDate,:BarCode,");
sbSql.Append(" :DefectFine,:FineType,:FineAmount,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] WParas = new OracleParameter[] {
new OracleParameter(":DefectFineID",OracleDbType.Int32,
dfid,ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
ssid,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
drNow["StaffID"],ParameterDirection.Input),
new OracleParameter(":StaffStatus",OracleDbType.Int32,
drNow["StaffStatus"],ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,
drNow["JobsID"],ParameterDirection.Input),
new OracleParameter(":SalaryType",OracleDbType.Int32,
drNow["SalaryType"],ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
drNow["BeginDate"],ParameterDirection.Input),
new OracleParameter(":EndDate",OracleDbType.Date,
drNow["EndDate"],ParameterDirection.Input),
new OracleParameter(":BarCode",OracleDbType.NVarchar2,
drNow["BarCode"],ParameterDirection.Input),
new OracleParameter(":DefectFine",OracleDbType.Decimal,
drNow["DefectFine"],ParameterDirection.Input),
new OracleParameter(":FineType",OracleDbType.Int32,
drNow["FineType"],ParameterDirection.Input),
new OracleParameter(":FineAmount",OracleDbType.Decimal,
drNow["FineAmount"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), WParas);
}
//损坯扣罚
DataTable dtScrap = dsStaffSalary.Tables[4];
dtScrap.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
DataTable dtScrapNow = dtScrap.DefaultView.ToTable();
foreach (DataRow drNow in dtScrapNow.Rows)
{
sbSql.Clear();
sbSql.Append("select SEQ_SSM_ScrapFine_ScrapID.nextval from dual");
int Sid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_ScrapFine");
sbSql.Append(" (ScrapFineID,StaffSalaryID,StaffID,StaffStatus,JobsID,BeginDate,EndDate,BarCode,");
sbSql.Append(" GoodsID,ScrapTime,ScrapFine,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:ScrapFineID,:StaffSalaryID,:StaffID,:StaffStatus,:JobsID,:BeginDate,:EndDate,:BarCode,");
sbSql.Append(" :GoodsID,:ScrapTime,:ScrapFine,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] SParas = new OracleParameter[] {
new OracleParameter(":ScrapFineID",OracleDbType.Int32,
Sid,ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
ssid,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
drNow["StaffID"],ParameterDirection.Input),
new OracleParameter(":StaffStatus",OracleDbType.Int32,
drNow["StaffStatus"],ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,
drNow["JobsID"],ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
drNow["BeginDate"],ParameterDirection.Input),
new OracleParameter(":EndDate",OracleDbType.Date,
drNow["EndDate"],ParameterDirection.Input),
new OracleParameter(":BarCode",OracleDbType.NVarchar2,
drNow["BarCode"],ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
drNow["GoodsID"],ParameterDirection.Input),
new OracleParameter(":ScrapTime",OracleDbType.Date,
drNow["ScrapTime"],ParameterDirection.Input),
new OracleParameter(":ScrapFine",OracleDbType.Decimal,
drNow["ScrapFine"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SParas);
}
//行政奖惩
DataTable dtAdmin = dsStaffSalary.Tables[5];
dtAdmin.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
DataTable dtAdminNow = dtAdmin.DefaultView.ToTable();
foreach(DataRow drNow in dtAdminNow.Rows)
{
sbSql.Clear();
sbSql.Append("select SEQ_SSM_Admin_ProgressID.nextval from dual");
int Aid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_Admin");
sbSql.Append(" (AdminID,StaffSalaryID,StaffID,JobsID,SalaryType,BeginDate,EndDate,TATAdminID,");
sbSql.Append(" AdministrationType,BaseAmount,IsEnd,RAPAmount,TotalAmount,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:AdminID,:StaffSalaryID,:StaffID,:JobsID,:SalaryType,:BeginDate,:EndDate,:TATAdminID,");
sbSql.Append(" :AdministrationType,:BaseAmount,:IsEnd,:RAPAmount,:TotalAmount,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] AParas = new OracleParameter[] {
new OracleParameter(":AdminID",OracleDbType.Int32,
Aid,ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
ssid,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
drNow["StaffID"],ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,
drNow["JobsID"],ParameterDirection.Input),
new OracleParameter(":SalaryType",OracleDbType.Int32,
drNow["SalaryType"],ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
drNow["BeginDate"],ParameterDirection.Input),
new OracleParameter(":EndDate",OracleDbType.Date,
drNow["EndDate"],ParameterDirection.Input),
new OracleParameter(":TATAdminID",OracleDbType.Int32,
drNow["TATAdminID"],ParameterDirection.Input),
new OracleParameter(":AdministrationType",OracleDbType.Int32,
drNow["AdministrationType"],ParameterDirection.Input),
new OracleParameter(":BaseAmount",OracleDbType.Decimal,
drNow["BaseAmount"],ParameterDirection.Input),
new OracleParameter(":IsEnd",OracleDbType.Int32,
drNow["IsEnd"],ParameterDirection.Input),
new OracleParameter(":RAPAmount",OracleDbType.Decimal,
drNow["RAPAmount"],ParameterDirection.Input),
new OracleParameter(":TotalAmount",OracleDbType.Decimal,
drNow["TotalAmount"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), AParas);
//然后根据员工ID以及策略ID,获取该条行政奖惩的明细信息
DataTable dtAdminDetail = dsStaffSalary.Tables[6];
dtAdminDetail.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"] + " And AdminID=" + drNow["TATAdminID"] + " And AccountID=" + drNow["SalaryType"] + " And StaffSalaryID=" + drNow["JobsId"];
DataTable dtAdminDetailNow = dtAdminDetail.DefaultView.ToTable();
foreach(DataRow drDetailNow in dtAdminDetailNow.Rows)
{
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_AdminDetail");
sbSql.Append(" (AdminRAPID,AdminID,StaffSalaryID,StaffID,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:AdminRAPID,:AdminID,:StaffSalaryID,:StaffID,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] ADParas = new OracleParameter[] {
new OracleParameter(":AdminRAPID",OracleDbType.Int32,
drDetailNow["AdminRAPID"],ParameterDirection.Input),
new OracleParameter(":AdminID",OracleDbType.Int32,
Aid,ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
ssid,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
drDetailNow["StaffID"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), ADParas);
}
}
//进度奖惩
DataTable dtProgress = dsStaffSalary.Tables[7];
dtProgress.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
DataTable dtProgressNow = dtProgress.DefaultView.ToTable();
foreach (DataRow drNow in dtProgressNow.Rows)
{
sbSql.Clear();
sbSql.Append("select SEQ_SSM_Progress_ProgressID.nextval from dual");
int Pid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_Progress");
sbSql.Append(" (ProgressID,StaffSalaryID,StaffID,JobsID,SalaryType,BeginDate,EndDate,TATProgressID,");
sbSql.Append(" BaseAmount,IsEnd,RAPAmount,TotalAmount,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:ProgressID,:StaffSalaryID,:StaffID,:JobsID,:SalaryType,:BeginDate,:EndDate,:TATProgressID,");
sbSql.Append(" :BaseAmount,:IsEnd,:RAPAmount,:TotalAmount,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] PParas = new OracleParameter[] {
new OracleParameter(":ProgressID",OracleDbType.Int32,
Pid,ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
ssid,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
drNow["StaffID"],ParameterDirection.Input),
new OracleParameter(":JobsID",OracleDbType.Int32,
drNow["JobsID"],ParameterDirection.Input),
new OracleParameter(":SalaryType",OracleDbType.Int32,
drNow["SalaryType"],ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
drNow["BeginDate"],ParameterDirection.Input),
new OracleParameter(":EndDate",OracleDbType.Date,
drNow["EndDate"],ParameterDirection.Input),
new OracleParameter(":TATProgressID",OracleDbType.Int32,
drNow["TATProgressID"],ParameterDirection.Input),
new OracleParameter(":BaseAmount",OracleDbType.Decimal,
drNow["BaseAmount"],ParameterDirection.Input),
new OracleParameter(":IsEnd",OracleDbType.Int32,
drNow["IsEnd"],ParameterDirection.Input),
new OracleParameter(":RAPAmount",OracleDbType.Decimal,
drNow["RAPAmount"],ParameterDirection.Input),
new OracleParameter(":TotalAmount",OracleDbType.Decimal,
drNow["TotalAmount"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), PParas);
//然后根据员工ID以及策略ID,获取该条行政奖惩的明细信息(前台把区分用的工种ID存在主信息ID中了)
DataTable dtProgressDetail = dsStaffSalary.Tables[8];
dtProgressDetail.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"] + " And ProgressID=" + drNow["JobsID"] + " And AccountID=" + drNow["SalaryType"];
DataTable dtProgressDetailNow = dtProgressDetail.DefaultView.ToTable();
foreach (DataRow drDetailNow in dtProgressDetailNow.Rows)
{
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_ProgressDetail");
sbSql.Append(" (ProgressRAPID,ProgressID,StaffSalaryID,StaffID,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:ProgressRAPID,:ProgressID,:StaffSalaryID,:StaffID,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] PDParas = new OracleParameter[] {
new OracleParameter(":ProgressRAPID",OracleDbType.Int32,
drDetailNow["ProgressRAPID"],ParameterDirection.Input),
new OracleParameter(":ProgressID",OracleDbType.Int32,
Pid,ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
ssid,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
drDetailNow["StaffID"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), PDParas);
}
}
//管理岗位工资
DataTable dtManagerSalary = dsStaffSalary.Tables[9];
dtManagerSalary.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
DataTable dtManagerSalaryNow = dtManagerSalary.DefaultView.ToTable();
foreach (DataRow drNow in dtManagerSalaryNow.Rows)
{
sbSql.Clear();
sbSql.Append("select SEQ_SSM_M_ManagerSalaryID.nextval from dual");
int Mid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_SSM_ManagerSalary");
sbSql.Append(" (ManagerSalaryID,StaffSalaryID,StaffID,Member,Salary,AccountID,CreateUserID,UpdateUserID)");
sbSql.Append(" values (:ManagerSalaryID,:StaffSalaryID,:StaffID,:Member,:Salary,:AccountID,:CreateUserID,:UpdateUserID)");
OracleParameter[] MParas = new OracleParameter[] {
new OracleParameter(":ManagerSalaryID",OracleDbType.Int32,
Mid,ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
ssid,ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32,
drNow["StaffID"],ParameterDirection.Input),
new OracleParameter(":Member",OracleDbType.Int32,
drNow["Member"],ParameterDirection.Input),
new OracleParameter(":Salary",OracleDbType.Decimal,
drNow["Salary"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
userInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), MParas);
}
}
//结算完毕后要把所有相关的常规数据修改为已结算
//sbSql.Clear();
//sbSql.Append("Update TP_PM_ProductionData set SettlementFlag = 1 where ProductionDataID = :ProductionDataID");
//foreach(DataRow drFor in dsProductionData.Tables[0].Rows)
//{
// OracleParameter[] PDParas = new OracleParameter[] {
// new OracleParameter(":ProductionDataID",OracleDbType.Int32,
// drFor["ProductionDataID"],ParameterDirection.Input)
// };
// returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), PDParas);
//}
//sbSql.Clear();
//sbSql.Append("Update TP_HR_StaffAttendance set SettlementFlag = 1 where StaffID = :StaffID and AttendanceDate=:AttendanceDate");
//foreach(DataRow drFor in dsStaffAttendance.Tables[0].Rows)
//{
// OracleParameter[] HRParas = new OracleParameter[] {
// new OracleParameter(":StaffID",OracleDbType.Int32,
// drFor["StaffID"],ParameterDirection.Input),
// new OracleParameter(":AttendanceDate",OracleDbType.Date,
// drFor["AttendanceDate"],ParameterDirection.Input)
// };
// returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), HRParas);
//}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch(Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
}
return returnRows;
}
///
/// 调整工资结算信息
///
/// 调整工资总体信息
/// 各员工工资信息集合
/// 影响行数
public static int EditSalarySettlement(GetSalaryEntity salaryEntity, DataTable dtStaffSalary)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
//首先修改工资结算整体信息
StringBuilder sbSql = new StringBuilder();
sbSql.Append(@"Update TP_SSM_SalarySettlement Set Remarks = :Remarks,AdjustmentAmount = :AdjustmentAmount,TotalAmount = :TotalAmount
Where SalarySettlementID = :SalarySettlementID");
OracleParameter[] SParas = new OracleParameter[] {
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
salaryEntity.Remarks,ParameterDirection.Input),
new OracleParameter(":AdjustmentAmount",OracleDbType.Decimal,
salaryEntity.AdjustmentAmount,ParameterDirection.Input),
new OracleParameter(":TotalAmount",OracleDbType.Decimal,
salaryEntity.TotalAmount,ParameterDirection.Input),
new OracleParameter(":SalarySettlementID",OracleDbType.Int32,
salaryEntity.SalarySettlementID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SParas);
//然后遍历修改每一条调整信息
sbSql.Clear();
sbSql.Append(@"Update TP_SSM_StaffSalary Set AdjustmentAmount = :AdjustmentAmount,
TotalAmount = :TotalAmount,Remarks = :Remarks
Where StaffSalaryID = :StaffSalaryID");
foreach(DataRow drFor in dtStaffSalary.Rows)
{
if(drFor.RowState == DataRowState.Modified)
{
OracleParameter[] SSParas = new OracleParameter[] {
new OracleParameter(":AdjustmentAmount",OracleDbType.Decimal,
drFor["AdjustmentAmount"],ParameterDirection.Input),
new OracleParameter(":TotalAmount",OracleDbType.Decimal,
drFor["TotalAmount"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
drFor["Remarks"],ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
drFor["StaffSalaryID"],ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SSParas);
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return returnRows;
}
catch(Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
}
///
/// 审批工资结算信息
///
/// 各员工工资信息集合
/// 影响行数
public static int AuditSalarySettlement(DataTable dtStaffSalary,SUserInfo userInfo)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
StringBuilder sbSql = new StringBuilder();
//遍历修改每一条调整信息
sbSql.Append(@"Update TP_SSM_StaffSalary Set AuditStatus = :AuditStatus,
Auditor = :Auditor,AuditlDate = :AuditlDate
Where StaffSalaryID = :StaffSalaryID");
foreach (DataRow drFor in dtStaffSalary.Rows)
{
if (drFor.RowState == DataRowState.Modified)
{
OracleParameter[] SSParas = new OracleParameter[] {
new OracleParameter(":AuditStatus",OracleDbType.Int32,
drFor["AuditStatus"],ParameterDirection.Input),
new OracleParameter(":Auditor",OracleDbType.Int32,
userInfo.UserID,ParameterDirection.Input),
new OracleParameter(":AuditlDate",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
drFor["StaffSalaryID"],ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SSParas);
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return returnRows;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
}
#endregion
}
}