using System; using System.Data; using System.Collections.Generic; using System.Text; using DSWeb.MvcShipping.DAL.MsCtInitialBalanceDAL; using DSWeb.MvcShipping.Models.RptCtGenlegAccitems; using DSWeb.MvcShipping.Models.MsCwAccitemsGl; using Microsoft.Practices.EnterpriseLibrary.Data; using DSWeb.EntityDA; using DSWeb.Areas.CommMng.Models; using HcUtility.Comm; using System.Data.SqlClient; using DSWeb.DataAccess; using HcUtility.Core; using DSWeb.Areas.CommMng.DAL; namespace DSWeb.MvcShipping.DAL.RptCtGenlegAccitemsDAL { public class RptCtGenlegAccitemsDAL { #region 查询 static public List GetDataList(string sVOUDATE, string sACCID, string sCURRENCY, string userid, string usercode, string companyid, string sort = null) { var strSql = new StringBuilder(); string sSql = GetDataListSQL(sVOUDATE, sACCID, sCURRENCY, userid, usercode, companyid); strSql.Append(sSql); // var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by LINKCODE"); } return SetData(strSql); } private static List SetData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { RptCtGenlegAccitems data = new RptCtGenlegAccitems(); #region Set DB data to Object data.GID = (reader["GID"] == null ? "" : Convert.ToString(reader["GID"]));//唯一编码 data.YEAR = (reader["YEAR"] == null ? "" : Convert.ToString(reader["YEAR"]));//年 data.MONTH = (reader["MONTH"] == null ? "" : Convert.ToString(reader["MONTH"]));//月 data.DAY = (reader["DAY"] == null ? "" : Convert.ToString(reader["DAY"]));//日 data.LINKGID = (reader["LINKGID"] == null ? "" : Convert.ToString(reader["LINKGID"]));//科目GID(cw_accitems) data.CURRENCY = (reader["CURRENCY"] == null ? "" : Convert.ToString(reader["CURRENCY"]));//币别 data.AMTYEARDR = (reader["AMTYEARDR"] == null ? 0 : Convert.ToDecimal(reader["AMTYEARDR"]));//RMB年初借方 data.AMTYEARCR = (reader["AMTYEARCR"] == null ? 0 : Convert.ToDecimal(reader["AMTYEARCR"]));//RMB年初贷方 data.AMTYEARBLC = (reader["AMTYEARBLC"] == null ? 0 : Convert.ToDecimal(reader["AMTYEARBLC"]));//RMB年初余额 data.AMTDR = (reader["AMTDR"] == null ? 0 : Convert.ToDecimal(reader["AMTDR"]));//RMB本月借方 data.AMTCR = (reader["AMTCR"] == null ? 0 : Convert.ToDecimal(reader["AMTCR"]));//RMB本月贷方 data.AMTBLC = (reader["AMTBLC"] == null ? 0 : Convert.ToDecimal(reader["AMTBLC"]));//RMB本月余额 data.AMTLASTDR = (reader["AMTLASTDR"] == null ? 0 : Convert.ToDecimal(reader["AMTLASTDR"]));//RMB累计借方 data.AMTLASTCR = (reader["AMTLASTCR"] == null ? 0 : Convert.ToDecimal(reader["AMTLASTCR"]));//RMB累计贷方 data.AMTLASTBLC = (reader["AMTLASTBLC"] == null ? 0 : Convert.ToDecimal(reader["AMTLASTBLC"]));//RMB累计余额 data.FCYYEARDR = (reader["FCYYEARDR"] == null ? 0 : Convert.ToDecimal(reader["FCYYEARDR"]));//USD年初借方 data.FCYYEARCR = (reader["FCYYEARCR"] == null ? 0 : Convert.ToDecimal(reader["FCYYEARCR"]));//USD年初贷方 data.FCYYEARBLC = (reader["FCYYEARBLC"] == null ? 0 : Convert.ToDecimal(reader["FCYYEARBLC"]));//USD年初余额 data.FCYDR = (reader["FCYDR"] == null ? 0 : Convert.ToDecimal(reader["FCYDR"]));//USD本月借方 data.FCYCR = (reader["FCYCR"] == null ? 0 : Convert.ToDecimal(reader["FCYCR"]));//USD本月贷方 data.FCYBLC = (reader["FCYBLC"] == null ? 0 : Convert.ToDecimal(reader["FCYBLC"]));//USD本月余额 data.FCYLASTDR = (reader["FCYLASTDR"] == null ? 0 : Convert.ToDecimal(reader["FCYLASTDR"]));//外币累计借方 data.FCYLASTCR = (reader["FCYLASTCR"] == null ? 0 : Convert.ToDecimal(reader["FCYLASTCR"]));//外币累计贷方 data.FCYLASTBLC = (reader["FCYLASTBLC"] == null ? 0 : Convert.ToDecimal(reader["FCYLASTBLC"]));//外币累计余额 data.QTYYEARDR = (reader["QTYYEARDR"] == null ? 0 : Convert.ToDecimal(reader["QTYYEARDR"]));//年初借方 data.QTYYEARCR = (reader["QTYYEARCR"] == null ? 0 : Convert.ToDecimal(reader["QTYYEARCR"]));//年初贷方 data.QTYYEARBLC = (reader["QTYYEARBLC"] == null ? 0 : Convert.ToDecimal(reader["QTYYEARBLC"]));//年初余额 data.QTYDR = (reader["QTYDR"] == null ? 0 : Convert.ToDecimal(reader["QTYDR"]));//本月借方 data.QTYCR = (reader["QTYCR"] == null ? 0 : Convert.ToDecimal(reader["QTYCR"]));//本月贷方 data.QTYBLC = (reader["QTYBLC"] == null ? 0 : Convert.ToDecimal(reader["QTYBLC"]));//本月余额 data.QTYLASTDR = (reader["QTYLASTDR"] == null ? 0 : Convert.ToDecimal(reader["QTYLASTDR"]));//累计借方 data.QTYLASTCR = (reader["QTYLASTCR"] == null ? 0 : Convert.ToDecimal(reader["QTYLASTCR"]));//累计贷方 data.QTYLASTBLC = (reader["QTYLASTBLC"] == null ? 0 : Convert.ToDecimal(reader["QTYLASTBLC"]));//累计余额 data.IsInitialEntry = (reader["IsInitialEntry"] == null ? false : Convert.ToBoolean(reader["IsInitialEntry"]));//是否期初录入 data.CORPID = (reader["CORPID"] == null ? "" : Convert.ToString(reader["CORPID"]));//分公司代码 data.CREATEUSER = (reader["CREATEUSER"] == null ? "" : Convert.ToString(reader["CREATEUSER"]));//创建人gid data.CREATETIME = (reader["CREATETIME"] == null ? DateTime.Now : Convert.ToDateTime(reader["CREATETIME"]));//创建时间 data.MODIFIEDUSER = (reader["MODIFIEDUSER"] == null ? "" : Convert.ToString(reader["MODIFIEDUSER"]));//最后一次更新操作人GID data.MODIFIEDTIME = (reader["MODIFIEDTIME"] == null ? DateTime.Now : Convert.ToDateTime(reader["MODIFIEDTIME"]));//最后一次更改时间 data.ACCDATE = (reader["ACCDATE"] == null ? "" : Convert.ToString(reader["ACCDATE"]));//会计期间 data.STARTGID = (reader["STARTGID"] == null ? "" : Convert.ToString(reader["STARTGID"]));//账套启用GID data.LINKNAME = (reader["LINKNAME"] == null ? "" : Convert.ToString(reader["LINKNAME"]));//科目名称 data.LINKCODE = (reader["LINKCODE"] == null ? "" : Convert.ToString(reader["LINKCODE"])); data.DC = (reader["DC"] == null ? "" : Convert.ToString(reader["DC"]));//余额方向 data.DC2 = (reader["DC2"] == null ? "" : Convert.ToString(reader["DC2"]));//余额方向 data.iDR = (reader["iDR"] == null ? "" : Convert.ToString(reader["iDR"]));//余额方向 data.iCR = (reader["iCR"] == null ? "" : Convert.ToString(reader["iCR"]));//余额方向 #endregion headList.Add(data); } reader.Close(); } return headList; } static public string GetDataListStr(string sVOUDATE, string sACCID, string sCURRENCY, string sTYPE, string userid, string usercode, string companyid) { var strSql = new StringBuilder(); string sSql = GetDataListSQL(sVOUDATE, sACCID, sCURRENCY, userid, usercode, companyid); if (sCURRENCY == "RMB") { strSql.Append("select LINKCODE as 科目代码,LINKNAME as 科目名称,DC as 方向,QTYYEARBLC as 昨日余额,QTYDR as 今日借方,QTYCR as 今日贷方,DC2 as 方向,QTYLASTBLC as 今日余额,iDR as 借方笔数,iCR as 贷方笔数 from (" + sSql + ") as ls"); } else { strSql.Append("select LINKCODE as [科目代码],LINKNAME as [科目名称],DC as 方向,FCYYEARBLC as [昨日余额(原币)],QTYYEARBLC as [昨日余额(本位币)],FCYDR as [今日借方(原币)],QTYDR as [今日借方(本位币)],FCYCR as [今日贷方(原币)],QTYCR as [今日贷方(本位币)],DC2 as [方向],FCYLASTBLC as [今日余额(原币)],QTYLASTBLC as [今日余额(本位币)],iDR as [借方笔数],iCR as [贷方笔数] from (" + sSql + ") as ls"); } if (sTYPE != "export") { strSql.Append(" order by LINKCODE"); } return strSql.ToString(); } static public string GetDataListSQL(string sVOUDATE, string sACCID, string sCURRENCY, string userid, string usercode, string companyid) { #region 基本信息 string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(userid); string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid); String strCondition = ""; String strCondition2 = ""; String strCondition3 = ""; if (!string.IsNullOrEmpty(sVOUDATE)) { strCondition += " and ([YEAR]+'-'+[MONTH]+'-'+[DAY])='" + sVOUDATE + "'"; strCondition2 += " and VOUDATE='" + sVOUDATE + "'"; } if (!string.IsNullOrEmpty(sACCID)) { strCondition += " and LINKGID in (select GID from cw_accitems_gl where [YEAR]=SUBSTRING('" + sVOUDATE + "',1,4) and [STARTGID]='" + strCwSTARTGID + "' and ACCID='" + sACCID + "')"; strCondition3 += " and ACCID='" + sACCID + "'"; } if (!string.IsNullOrEmpty(sCURRENCY)) { strCondition += " and CURRENCY='" + sCURRENCY + "'"; strCondition2 += " and FCYNO='" + sCURRENCY + "'"; } #endregion #region 判断ct_genleg_accitems是否有数据 T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); string sSQL = "select * from cw_accitems_gl where ISBANK=1 and DETAILED=1 and [YEAR]=SUBSTRING('" + sVOUDATE + "',1,4) and [STARTGID]='" + strCwSTARTGID + "' and gid in (select LINKGID from ct_genleg_accitems WITH(NOLOCK) WHERE STARTGID='" + strCtSTARTGID + "' GROUP BY LINKGID) and gid not in (select LINKGID from ct_genleg_accitems WITH(NOLOCK) WHERE STARTGID='" + strCtSTARTGID + "'" + strCondition + ")" + strCondition3; DataSet dsCwAccitemsGl = T_ALL_DA.GetAllSQL(sSQL); // if (dsCwAccitemsGl != null) { if (dsCwAccitemsGl.Tables[0].Rows.Count > 0) { for (int i = 0; i < dsCwAccitemsGl.Tables[0].Rows.Count; i++) { insertRow(dsCwAccitemsGl.Tables[0].Rows[i]["GID"].ToString(), dsCwAccitemsGl.Tables[0].Rows[i]["DC"].ToString(), sCURRENCY, sVOUDATE, strCtSTARTGID, companyid, userid); #region 今日父类总账表 MsCtInitialBalanceDAL.MsCtInitialBalanceDAL.SaveRow(dsCwAccitemsGl.Tables[0].Rows[i]["GID"].ToString(), sCURRENCY, sVOUDATE, strCtSTARTGID, false, companyid, userid); #endregion } } } #endregion #region 查询数据 var strSql = new StringBuilder(); strSql.Append("select [GID],[YEAR],[MONTH],[DAY],[LINKGID],[CURRENCY],[AMTYEARDR],[AMTYEARCR],[AMTYEARBLC],[AMTDR],[AMTCR],[AMTBLC],[AMTLASTDR],[AMTLASTCR]"); strSql.Append(",[AMTLASTBLC]=(case when AMTLASTBLC<0 then (0-AMTLASTBLC) else AMTLASTBLC end)"); strSql.Append(",[FCYYEARDR],[FCYYEARCR]"); strSql.Append(",[FCYYEARBLC]=(case when FCYYEARBLC<0 then (0-FCYYEARBLC) else FCYYEARBLC end)"); strSql.Append(",[FCYDR],[FCYCR],[FCYBLC],[FCYLASTDR],[FCYLASTCR]"); strSql.Append(",[FCYLASTBLC]=(case when FCYLASTBLC<0 then (0-FCYLASTBLC) else FCYLASTBLC end)"); strSql.Append(",[QTYYEARDR],[QTYYEARCR]"); strSql.Append(",[QTYYEARBLC]=(case when QTYYEARBLC<0 then (0-QTYYEARBLC) else QTYYEARBLC end)"); strSql.Append(",[QTYDR],[QTYCR],[QTYBLC],[QTYLASTDR],[QTYLASTCR]"); strSql.Append(",[QTYLASTBLC]=(case when QTYLASTBLC<0 then (0-QTYLASTBLC) else QTYLASTBLC end)"); strSql.Append(",[IsInitialEntry],[CORPID],[CREATEUSER],[CREATETIME],[MODIFIEDUSER],[MODIFIEDTIME],[ACCDATE],[STARTGID],LINKCODE=(select top 1 ACCID from [cw_accitems_gl] WITH(NOLOCK) WHERE STARTGID='" + strCwSTARTGID + "' AND gid=ct_genleg_accitems.LINKGID),LINKNAME=(select top 1 ACCNAME from [cw_accitems_gl] WITH(NOLOCK) WHERE STARTGID='" + strCwSTARTGID + "' AND gid=ct_genleg_accitems.LINKGID),DC=(CASE WHEN QTYYEARBLC<0 THEN '贷' ELSE '借' END),DC2=(CASE WHEN QTYLASTBLC<0 THEN '贷' ELSE '借' END),iDR=(SELECT COUNT(*) AS inum from ct_bank_journal WHERE STARTGID='" + strCtSTARTGID + "' and DR<>0 AND ACCGID=ct_genleg_accitems.LINKGID" + strCondition2 + "),iCR=(SELECT COUNT(*) AS inum from ct_bank_journal WHERE STARTGID='" + strCtSTARTGID + "' and CR<>0 AND ACCGID=ct_genleg_accitems.LINKGID" + strCondition2 + ") from ct_genleg_accitems where STARTGID='" + strCtSTARTGID + "'" + strCondition); //strSql.Append(" and CORPID='" + companyid + "'"); #endregion return strSql.ToString(); } #region 插入ct_genleg_accitems表 public static void insertRow(string strACCGID, string sACCDC, string sCURRENCY, string sVOUDATE, string strCtSTARTGID, string strCOMPANYID, string strUSERID) { #region 基本信息 T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); string sYear = DateTime.Parse(sVOUDATE).Year.ToString(); string sMonth = DateTime.Parse(sVOUDATE).Month.ToString(); if (sMonth.Trim().Length == 1) { sMonth = "0" + sMonth; } string sDay = DateTime.Parse(sVOUDATE).Day.ToString(); if (sDay.Trim().Length == 1) { sDay = "0" + sDay; } #endregion #region 插入当日总账表 string sSQL = "select top 1 * from ct_genleg_accitems WITH(NOLOCK) WHERE STARTGID='" + strCtSTARTGID + "' AND LINKGID='" + strACCGID + "' and CURRENCY='" + sCURRENCY + "' and ([Year]+'-'+[Month]+'-'+[Day])<'" + sVOUDATE + "' order by [YEAR] desc,[MONTH] desc,[DAY] desc"; DataSet dsLS = T_ALL_DA.GetAllSQL(sSQL); if (dsLS != null) { if (dsLS.Tables[0].Rows.Count > 0) { Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { #region 插入当日总账表 sSQL = "INSERT INTO [ct_genleg_accitems]([GID],[YEAR],[MONTH],[DAY],[LINKGID],[CURRENCY],[AMTYEARDR],[AMTYEARCR],[AMTYEARBLC],[AMTDR],[AMTCR],[AMTBLC],[AMTLASTDR],[AMTLASTCR],[AMTLASTBLC],[FCYYEARDR],[FCYYEARCR],[FCYYEARBLC],[FCYDR],[FCYCR],[FCYBLC],[FCYLASTDR],[FCYLASTCR],[FCYLASTBLC],[QTYYEARDR],[QTYYEARCR],[QTYYEARBLC],[QTYDR],[QTYCR],[QTYBLC],[QTYLASTDR],[QTYLASTCR],[QTYLASTBLC],[IsInitialEntry],[CORPID],[CREATEUSER],[CREATETIME],[MODIFIEDUSER],[MODIFIEDTIME],[ACCDATE],[STARTGID])" + " select NEWID() as GID,'" + sYear + "' as [YEAR],'" + sMonth + "' as [MONTH],'" + sDay + "' as [DAY],'" + strACCGID + "' as [LINKGID],'" + sCURRENCY + "' as [CURRENCY]" + ",AMTYEARDR=" + (sACCDC == "借" ? dsLS.Tables[0].Rows[0]["AMTLASTBLC"].ToString() : "0") + ",AMTYEARCR=" + (sACCDC == "贷" ? dsLS.Tables[0].Rows[0]["AMTLASTBLC"].ToString() : "0") + ",AMTYEARBLC=" + dsLS.Tables[0].Rows[0]["AMTLASTBLC"].ToString() + ",AMTDR=0,AMTCR=0,AMTBLC=0" + ",AMTLASTDR=" + (sACCDC == "借" ? dsLS.Tables[0].Rows[0]["AMTLASTBLC"].ToString() : "0") + ",AMTLASTCR=" + (sACCDC == "贷" ? dsLS.Tables[0].Rows[0]["AMTLASTBLC"].ToString() : "0") + ",AMTLASTBLC=" + dsLS.Tables[0].Rows[0]["AMTLASTBLC"].ToString() + ",FCYYEARDR=" + (sACCDC == "借" ? dsLS.Tables[0].Rows[0]["FCYLASTBLC"].ToString() : "0") + ",FCYYEARCR=" + (sACCDC == "贷" ? dsLS.Tables[0].Rows[0]["FCYLASTBLC"].ToString() : "0") + ",FCYYEARBLC=" + dsLS.Tables[0].Rows[0]["FCYLASTBLC"].ToString() + ",FCYDR=0,FCYCR=0,FCYBLC=0" + ",FCYLASTDR=" + (sACCDC == "借" ? dsLS.Tables[0].Rows[0]["FCYLASTBLC"].ToString() : "0") + ",FCYLASTCR=" + (sACCDC == "贷" ? dsLS.Tables[0].Rows[0]["FCYLASTBLC"].ToString() : "0") + ",FCYLASTBLC=" + dsLS.Tables[0].Rows[0]["FCYLASTBLC"].ToString() + ",QTYYEARDR=" + (sACCDC == "借" ? dsLS.Tables[0].Rows[0]["QTYLASTBLC"].ToString() : "0") + ",QTYYEARCR=" + (sACCDC == "贷" ? dsLS.Tables[0].Rows[0]["QTYLASTBLC"].ToString() : "0") + ",QTYYEARBLC=" + dsLS.Tables[0].Rows[0]["QTYLASTBLC"].ToString() + ",QTYDR=0,QTYCR=0,QTYBLC=0" + ",QTYLASTDR=" + (sACCDC == "借" ? dsLS.Tables[0].Rows[0]["QTYLASTBLC"].ToString() : "0") + ",QTYLASTCR=" + (sACCDC == "贷" ? dsLS.Tables[0].Rows[0]["QTYLASTBLC"].ToString() : "0") + ",QTYLASTBLC=" + dsLS.Tables[0].Rows[0]["QTYLASTBLC"].ToString() + ",0 as IsInitialEntry,'" + strCOMPANYID + "' as CORPID,'" + strUSERID + "' as CREATEUSER,getdate() as CREATETIME,'" + strUSERID + "' as MODIFIEDUSER,getdate() as MODIFIEDTIME,'" + sYear + "-" + sMonth + "' as ACCDATE,'" + strCtSTARTGID + "' as STARTGID" + " FROM ct_genleg_accitems WITH(NOLOCK) WHERE STARTGID='" + strCtSTARTGID + "' AND gid='" + dsLS.Tables[0].Rows[0]["gid"].ToString() + "'"; #endregion var cmdSql = db.GetSqlStringCommand(sSQL); db.ExecuteNonQuery(cmdSql, tran); tran.Commit(); } catch (Exception) { tran.Rollback(); } } } } #endregion } #endregion static public String GetData(string strUserID) { string strCwACCDATE = BasicDataRefDAL.GetCwACCDATE(strUserID); return strCwACCDATE; } #endregion } }