You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/DSWeb/Areas/OA/DAL/Jiekuan/JiekuanDAL.cs

272 lines
11 KiB
C#

2 years ago
using System;
using System.Data;
using System.Data.Common;
using System.Collections.Generic;
using System.Text;
using DSWeb.Areas.OA.Models.Jiekuan;
using DSWeb.Areas.OA.Models.Comm;
using Microsoft.Practices.EnterpriseLibrary.Data;
using HcUtility.Comm;
namespace DSWeb.Areas.OA.DAL.Jiekuan
{
public partial class JiekuanDAL
{
#region 借款单列表
static public List<Jiekuanmb> GetDataList(string strCondition)
{ //借款单列表
var strSql = new StringBuilder();
strSql.Append(" select jk.GID,jk.ENTEROPERATOR,u.showname,dbo.trimdate(jk.ENTERDATE) ENTERDATE,jk.COMPANYID,jk.DEPTID,jk.AMOUNT");
strSql.Append(" ,sd.deptname,jk.ISDELETE,jk.DELETEUSER,jk.DELETETIME,jk.bsno,vs.CUSTNO,vs.MBLNO,jk.JKSTATUS");
strSql.Append(" ,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=jk.JKSTATUS) as JKSTATUS_Ref ");
//strSql.Append(" ,(select dbo.GetRemain_ZWC (jk.deptid,jk.enterdate)) remain,jk.remark");
strSql.Append(" ,'' remain,jk.remark");
strSql.Append(" FROM OA_Jiekuan jk ");
strSql.Append("left join sys_dept sd on sd.gid=jk.deptid ");
strSql.Append("left join [user] u on u.gid=jk.ENTEROPERATOR ");
strSql.Append("left join vw_settlement vs on vs.bsno=jk.bsno ");
strSql.Append(" where (jk.isdelete=0 or jk.isdelete is null) ");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
return SetData(strSql);
}
static public Jiekuanmb GetData(string condition)
{
var list = GetDataList(condition);
if (list.Count > 0)
return list[0];
return new Jiekuanmb();
}
private static List<Jiekuanmb> SetData(StringBuilder strSql)
{
var headList = new List<Jiekuanmb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
Jiekuanmb data = new Jiekuanmb();
#region Set DB data to Object
data.GID = Convert.ToString(reader["GID"]);
data.ENTEROPERATOR = Convert.ToString(reader["ENTEROPERATOR"]);
data.ENTERDATE = Convert.ToString(reader["ENTERDATE"]);
data.COMPANYID = Convert.ToString(reader["COMPANYID"]);
data.DEPTID = Convert.ToString(reader["DEPTID"]);
data.DEPTNAME = Convert.ToString(reader["DEPTNAME"]);
data.AMOUNT = Convert.ToString(reader["AMOUNT"]);
data.ISDELETE = Convert.ToString(reader["ISDELETE"]);
data.DELETEUSER = Convert.ToString(reader["DELETEUSER"]);
data.DELETETIME = Convert.ToString(reader["DELETETIME"]);
data.SHOWNAME = Convert.ToString(reader["SHOWNAME"]);
data.BSNO = Convert.ToString(reader["BSNO"]);
data.CUSTNO = Convert.ToString(reader["CUSTNO"]);
data.MBLNO = Convert.ToString(reader["MBLNO"]);
data.JKSTATUS = Convert.ToString(reader["JKSTATUS"]);
data.JKSTATUS_REF = Convert.ToString(reader["JKSTATUS_REF"]);
data.REMAIN = Convert.ToString(reader["REMAIN"]);
data.REMARK = Convert.ToString(reader["REMARK"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
static public List<CHEQUEmb> GetCHEQUE(string condition)
{
var strSql = new StringBuilder();
strSql.Append(" select GID,BILLNO,CHEQUENO,CHEQUEAMOUNT,CHEQUEAMOUNTUPPER,MAKETIMEUPPER,PASSWORD,ModifiedTime, ");
strSql.Append(" dbo.trimdate(CHEQUEMAKETIME) CHEQUEMAKETIME,PRINTTIME,PRINTUSER,PURPOSE,CHEQUECUSTNAME,vs.MBLNO,cfc.customername ");
strSql.Append(" from ch_fee_cheque cfc ");
strSql.Append(" left join vw_settlement vs on vs.bsno=cfc.MAKETIMEUPPER ");//where billno='" + BILLNO + "' ");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" where " + condition);
}
return SetDataCHEQUE(strSql);
}
private static List<CHEQUEmb> SetDataCHEQUE(StringBuilder strSql)
{
var headList = new List<CHEQUEmb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
CHEQUEmb data = new CHEQUEmb();
#region Set DB data to Object
data.GID = Convert.ToString(reader["GID"]);
data.BILLNO = Convert.ToString(reader["BILLNO"]);
data.CHEQUECUSTNAME = Convert.ToString(reader["CHEQUECUSTNAME"]);
data.MAKETIMEUPPER = Convert.ToString(reader["MAKETIMEUPPER"]);
data.MBLNO = Convert.ToString(reader["MBLNO"]);
data.CHEQUENO = Convert.ToString(reader["CHEQUENO"]);
data.CHEQUEAMOUNTUPPER = Convert.ToString(reader["CHEQUEAMOUNTUPPER"]);
data.CHEQUEAMOUNT = Convert.ToString(reader["CHEQUEAMOUNT"]);
data.PASSWORD = Convert.ToString(reader["PASSWORD"]);
data.CHEQUEMAKETIME = Convert.ToString(reader["CHEQUEMAKETIME"]);
data.PRINTTIME = Convert.ToString(reader["PRINTTIME"]);
data.PRINTUSER = Convert.ToString(reader["PRINTUSER"]);
data.PURPOSE = Convert.ToString(reader["PURPOSE"]);
data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]);
data.ModifiedTime = Convert.ToString(reader["ModifiedTime"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#region 提交申请
// 根据handle类型执行更新操作更新费用信息ch_fee.feestatus和工作流运行表WorkFlowDo信息
// 费用状态值 费用状态主要有11个状态,分别为
// 审核通过STATUS=0录入状态STATUS=1提交审核STATUS=2申请修改 (STATUS=3)
// 取消申请(STATUS=5)驳回提交STATUS=6驳回申请STATUS=7部分结算STATUS=8结算完毕STATUS=9
//List<C_Mmb> chfeeList
internal static DBResult Audit(int newStatus, List<Jiekuanmb> JiekuanList)
{
var result = new DBResult();
foreach (var JK in JiekuanList)
{
var status = int.Parse(JK.JKSTATUS);
var canAudit = true;
var GID = JK.GID;
if (newStatus == 2)
{
canAudit = status == 1 || status == 6;
}
else if (newStatus == 0)
{
canAudit = status == 2;
}
else if (newStatus == 6)
{
canAudit = status == 0 || status == 2;
}
else if (newStatus == 8 || newStatus == 9)
{
canAudit = status == 0;
}
if (!canAudit)
{
result.Success = false;
if (newStatus == 2)
result.Message = "只有在'录入状态'和'驳回提交'状态下才能提交审核操作";
else if (newStatus == 0)
{
result.Message = "只有在‘提交审核’状态下才能进行‘审核通过’操作";
}
else if (newStatus == 6)
{
result.Message = "只有在‘审核通过’或‘提交审核’状态下才能进行此操作";
}
else if (newStatus == 8 || newStatus == 9)
{
result.Message = "只有在‘审核通过’状态下才能进行此操作";
}
return result;
}
}
Database db = DatabaseFactory.CreateDatabase();
var updateSql = " update OA_Jiekuan set JKStatus=@JKStatus where GID=@GID ";
const string enumSql =
"select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=@EnumValueID";
using (DbConnection connection = db.CreateConnection())
{
connection.Open();
try
{
var cmdEnum = db.GetSqlStringCommand(enumSql);
db.AddInParameter(cmdEnum, "@EnumValueID", DbType.Int32, newStatus);
var newStatusRef = Convert.ToString(db.ExecuteScalar(cmdEnum));
DbTransaction transaction = connection.BeginTransaction();
try
{
foreach (var JK in JiekuanList)
{
var cmdUpdate = db.GetSqlStringCommand(updateSql);
db.AddInParameter(cmdUpdate, "@JKStatus", DbType.Int32, newStatus);
db.AddInParameter(cmdUpdate, "@GID", DbType.String, JK.GID);
db.ExecuteNonQuery(cmdUpdate, transaction);
}
transaction.Commit();
result.Success = true;
result.Message = "提交成功";
result.Data = newStatusRef;
}
catch (Exception e)
{
transaction.Rollback();
result.Success = false;
if (e is MsChFeeDealException)
result.Message = e.Message;
else
result.Message = "执行提交发生未知错误,请重试";
}
}
finally
{
connection.Close();
}
}
return result;
}
#endregion
#region 明细部分
#endregion
#region 参照部分
#endregion
}
internal class MsChFeeDealException : Exception
{
internal MsChFeeDealException(string message)
: base(message)
{
}
}
}