using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Web; using System.Web.Mvc; using DSWeb.MvcShipping.Helper; using DSWeb.MvcShipping.Comm.Cookie; using DSWeb.Areas.CommMng.DAL; using DSWeb.Areas.RptMng.Comm; using HcUtility.Comm; using HcUtility.Core; using Microsoft.Practices.EnterpriseLibrary.Data; using DSWeb.EntityDA; using DSWeb.Areas.CommMng.Models; using System.IO; namespace DSWeb.MvcShipping.Controllers { /// /// 发票统计报表查询 /// [JsonRequestBehavior] public class MsRptChInvTotalController : Controller { // // GET: /MvcShipping/MsRptInvTotal public ActionResult Index() { return View(); } public ActionResult BsView() { return View(); } // // GET:/RptMng/MsRptPcHeadQry/QryData public ContentResult BsListData(int start, int limit, string condition, string sort, string printstr) { var strDa = GetRangDAStr("index", Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); if (!string.IsNullOrEmpty(strDa)) { if (!string.IsNullOrEmpty(condition)) { condition = condition + " and " + strDa; } else { condition = strDa; } } var strSql = new StringBuilder(); strSql.Append("SELECT B.BSNO, B.OPLBNAME, B.BSTYPE,B.CUSTOMERNAME, B.CUSTNO, B.MBLNO, B.HBLNO,B.VESSEL, B.VOYNO, B.INPUTBY, B.CREATETIME, B.BSSTATUS, B.SALE, B.OP, B.DOC,"); strSql.Append("case B.ETD when '1900-01-01 00:00:00.000' then '' else CONVERT(varchar(100), B.ETD,23) end as ETD"); strSql.Append(",case B.OPDATE when '1900-01-01 00:00:00.000' then '' else CONVERT(varchar(100), B.OPDATE,23) end as OPDATE,B.ENTERP"); strSql.Append(",case B.CUSTOMDATE when '1900-01-01 00:00:00.000' then '' else CONVERT(varchar(100), B.CUSTOMDATE,23) end as CUSTOMDATE"); strSql.Append(",B.CUSTSERVICE, B.PORTLOAD, B.PORTDISCHARGE, B.CUSTOMNO, B.ACCDATE,B.CARRIER, B.BSSOURCE, B.LANE, B.FORWARDER,B.NETWEIGHT,B.KGS,B.TEU,B.CNTRTOTAL,B.CORPID"); strSql.Append(",B.TRADETYPE,B.GOODSNAME,B.FEESTATUS"); strSql.Append(",(CASE B.FEESTATUS WHEN 1 THEN '锁定' else '未锁定' end) as FEESTATUSREF "); strSql.Append(",F.CUSTOMERNAME AS CUSTNAME "); strSql.Append(",i.INVOICENO,i.INVOICEMAKETIME "); strSql.Append(",isnull(SUM(CASE F.CURRENCY WHEN 'RMB' THEN CASE WHEN F.FEETYPE=1 THEN ISNULL(F.AMOUNT,0) ELSE -ISNULL(F.AMOUNT,0) END ELSE 0 END),0) AS TTLRMB"); strSql.Append(",isnull(SUM(CASE D.ORIGCURRENCY WHEN 'RMB' THEN CASE WHEN F.FEETYPE=1 THEN ISNULL(ORIGAMOUNT,0) ELSE -ISNULL(ORIGAMOUNT,0) END ELSE 0 END),0) AS INVRMB"); strSql.Append(",isnull(SUM(CASE F.CURRENCY WHEN 'USD' THEN CASE WHEN F.FEETYPE=1 THEN ISNULL(F.AMOUNT,0) ELSE -ISNULL(F.AMOUNT,0) END ELSE 0 END),0) AS TTLUSD"); strSql.Append(",isnull(SUM(CASE D.ORIGCURRENCY WHEN 'USD' THEN CASE WHEN F.FEETYPE=1 THEN ISNULL(ORIGAMOUNT,0) ELSE -ISNULL(ORIGAMOUNT,0) END ELSE 0 END),0) AS INVUSD"); strSql.Append(" FROM CH_FEE_DO D "); strSql.Append(" LEFT JOIN ch_fee_invoice i ON (D.BILLNO=I.BILLNO) "); strSql.Append(" INNER JOIN V_OP_BILL B ON (D.BSNO=B.BSNO) "); strSql.Append(" LEFT JOIN ch_fee F ON (D.FEEID=F.GID) "); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" Where " + condition); } strSql.Append(" GROUP BY B.BSNO,B.OPLBNAME, B.BSTYPE,B.CUSTOMERNAME, B.CUSTNO, B.MBLNO, B.HBLNO,B.VESSEL, B.VOYNO, B.INPUTBY, B.CREATETIME, B.BSSTATUS, B.SALE, B.OP, B.DOC,"); strSql.Append(" B.ETD"); strSql.Append(" ,B.OPDATE,B.ENTERP"); strSql.Append(" ,B.CUSTOMDATE"); strSql.Append(" ,B.CUSTSERVICE, B.PORTLOAD, B.PORTDISCHARGE, B.CUSTOMNO, B.ACCDATE,B.CARRIER, B.BSSOURCE, B.LANE, B.FORWARDER,B.NETWEIGHT,B.KGS,B.TEU,B.CNTRTOTAL,B.CORPID"); strSql.Append(" ,B.TRADETYPE,B.GOODSNAME,B.FEESTATUS,F.CUSTOMERNAME"); strSql.Append(",i.INVOICENO,i.INVOICEMAKETIME "); var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by i.INVOICEMAKETIME DESC,i.INVOICENO "); } if ((!string.IsNullOrEmpty(printstr)) && (printstr == "true")) { var jsonRespose = new JsonResponse { Success = true, Message = "完成", Data = strSql.ToString() }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } else { var dbparams = new List(); var paramps_sSQL = new CustomDbParamter(); paramps_sSQL.ParameterName = "@sSQL"; paramps_sSQL.DbType = DbType.String; paramps_sSQL.Direction = ParameterDirection.Input; paramps_sSQL.Value = strSql.ToString(); dbparams.Add(paramps_sSQL); var dbRptResult = PubSysDAL.GetMsSqlPrcDataSet("sMsExesqlQry", dbparams, "Result_Set"); var json = RptHelper.GetRptJsonResult(start, limit, dbRptResult, "Result_Set", true); return new ContentResult() { Content = json }; } } public static string GetRangDAStr(int type, string optype, string userid, string username, string companyid) { string str = ""; string modustr = ""; if (type == 1) { if (optype == "op_Seae") { modustr = "modRecvFeeManagement"; } else if (optype == "op_Apply") { modustr = "modApplyRecvFeeManagement"; } else if (optype == "op_Seai") { modustr = "modSeaiRecvFeeManagement"; } else if (optype == "op_Aire") { modustr = "modAireRecvFeeManagement"; } else if (optype == "op_Airi") { modustr = "modAiriRecvFeeManagement"; } else if (optype == "op_Seailcl") { modustr = "modSeaiLCLRecvFeeManagement"; } else if (optype == "op_other" || optype == "tMsWlPcHead" || optype == "OpCtnBsCard" || optype == "op_Airn") { modustr = "modOtherRecvFeeManagement"; } else if (optype == "op_Bulk") { modustr = "modBulkRecvFeeManagement"; } else if (optype == "op_railway") { modustr = "modRailwayRecvFeeManagement"; } else if (optype == "import_main") { modustr = "modImport_Fee"; } else if (optype == "WMSMAIN") { modustr = "modWMSMAIN"; } else if (optype == "op_truckbulk") { modustr = "modTruckRecvFeeManagement"; } } else if (type== 2) { if (optype == "op_Seae") { modustr = "modPayFeeManagement"; } else if (optype == "op_Apply") { modustr = "modApplyPayFeeManagement"; } else if (optype == "op_Seai") { modustr = "modSeaiPayFeeManagement"; } else if (optype == "op_Aire") { modustr = "modAirePayFeeManagement"; } else if (optype == "op_Airi") { modustr = "modAiriPayFeeManagement"; } else if (optype == "op_Seailcl") { modustr = "modSeaiLCLPayFeeManagement"; } else if (optype == "op_other" || optype == "tMsWlPcHead" || optype == "OpCtnBsCard" || optype == "op_Airn") { modustr = "modOtherPayFeeManagement"; } else if (optype == "op_Bulk") { modustr = "modBulkPayFeeManagement"; } else if (optype == "op_railway") { modustr = "modRailwayPayFeeManagement"; } else if (optype == "import_main") { modustr = "modImport_Fee"; } else if (optype == "WMSMAIN") { modustr = "modWMSMAIN"; } else if (optype == "op_truckbulk") { modustr = "modTruckPayFeeManagement"; } } var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(" VISIBLERANGE,OPERATERANGE,AUTHORITYID "); strSql.Append(" from VW_User_Authority "); strSql.Append(" where [NAME]='" + modustr+ "' and USERID='" + userid + "' and ISDELETE=0"); string visiblerange = "4"; string operaterange = "4"; string AUTHORITYID = ""; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { visiblerange = Convert.ToString(reader["VISIBLERANGE"]); operaterange = Convert.ToString(reader["OPERATERANGE"]); AUTHORITYID = Convert.ToString(reader["AUTHORITYID"]); break; } reader.Close(); } if (visiblerange == "4") { str = " F.ENTEROPERATOR='" + userid + "'"; } else if (visiblerange == "3") { str = " F.ENTEROPERATOR='" + userid + "'"; } else if (visiblerange == "2") { var rangeDa = new RangeDA(); var deptname = rangeDa.GetDEPTNAME(userid); str = " F.ENTEROPERATOR in (select USERID from user_company where COMPANYID='" + companyid + "') and ENTEROPERATOR in (select userid from user_baseinfo where DEPTNAME='" + deptname + "')"; } else if (visiblerange == "1") { str = " F.ENTEROPERATOR in (select USERID from user_company where COMPANYID='" + companyid + "') "; } else if (visiblerange == "5") { var userstr = new StringBuilder(); userstr.Append(" select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = " (F.ENTEROPERATOR in (select USERID from user_company where COMPANYID='" + companyid + "') "; } else { str = str + " or F.ENTEROPERATOR in (select USERID from user_company where COMPANYID='" + companyid + "')"; }; } if (str != "") str = str + ")"; reader.Close(); } } else if (visiblerange == "6") { var userstr = new StringBuilder(); userstr.Append(" select OPID,(select SHOWNAME from [user] where GID=user_authority_range_op.OPID) SHOWNAME from user_authority_range_op where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = " (F.ENTEROPERATOR='" + Convert.ToString(reader["OPID"]) + "' "; } else { str = str + " or F.ENTEROPERATOR='" + Convert.ToString(reader["OPID"]) + "'"; }; } if (str != "") str = str + ")"; reader.Close(); } } else if (visiblerange == "0") { str = " 1=1 "; } return str; } public ContentResult BsListData2(int start, int limit, string condition, string sort, string printstr) { var strDa = GetRangDAStr(1, "op_Seae", Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); if (!string.IsNullOrEmpty(strDa)) { if (!string.IsNullOrEmpty(condition)) { condition = condition + " and " + strDa; } else { condition = strDa; } } var strSql = new StringBuilder(); strSql.Append("SELECT B.BSNO, B.OPLBNAME, B.BSTYPE,B.CUSTOMERNAME, B.CUSTNO, B.MBLNO, B.HBLNO,B.VESSEL, B.VOYNO, B.INPUTBY, B.CREATETIME, B.BSSTATUS, B.SALE, B.OP, B.DOC,"); strSql.Append("case B.ETD when '1900-01-01 00:00:00.000' then '' else CONVERT(varchar(100), B.ETD,23) end as ETD"); strSql.Append(",case B.OPDATE when '1900-01-01 00:00:00.000' then '' else CONVERT(varchar(100), B.OPDATE,23) end as OPDATE,B.ENTERP"); strSql.Append(",case B.CUSTOMDATE when '1900-01-01 00:00:00.000' then '' else CONVERT(varchar(100), B.CUSTOMDATE,23) end as CUSTOMDATE"); strSql.Append(",B.CUSTSERVICE, B.PORTLOAD, B.PORTDISCHARGE, B.CUSTOMNO, B.ACCDATE,B.CARRIER, B.BSSOURCE, B.LANE, B.FORWARDER,B.NETWEIGHT,B.KGS,B.TEU,B.CNTRTOTAL,B.CORPID"); strSql.Append(",B.TRADETYPE,B.GOODSNAME,B.FEESTATUS"); strSql.Append(",(CASE B.FEESTATUS WHEN 1 THEN '锁定' else '未锁定' end) as FEESTATUSREF "); strSql.Append(",F.CUSTOMERNAME AS CUSTNAME "); strSql.Append(",i.INVOICENO,i.INVOICEMAKETIME "); strSql.Append(",isnull(SUM(CASE F.CURRENCY WHEN 'RMB' THEN CASE WHEN F.FEETYPE=1 THEN ISNULL(F.AMOUNT,0) ELSE -ISNULL(F.AMOUNT,0) END ELSE 0 END),0) AS TTLRMB"); strSql.Append(",isnull(SUM(CASE D.ORIGCURRENCY WHEN 'RMB' THEN CASE WHEN F.FEETYPE=1 THEN ISNULL(ORIGAMOUNT,0) ELSE -ISNULL(ORIGAMOUNT,0) END ELSE 0 END),0) AS INVRMB"); strSql.Append(",isnull(SUM(CASE F.CURRENCY WHEN 'USD' THEN CASE WHEN F.FEETYPE=1 THEN ISNULL(F.AMOUNT,0) ELSE -ISNULL(F.AMOUNT,0) END ELSE 0 END),0) AS TTLUSD"); strSql.Append(",isnull(SUM(CASE D.ORIGCURRENCY WHEN 'USD' THEN CASE WHEN F.FEETYPE=1 THEN ISNULL(ORIGAMOUNT,0) ELSE -ISNULL(ORIGAMOUNT,0) END ELSE 0 END),0) AS INVUSD"); strSql.Append(" FROM ch_fee F "); strSql.Append(" LEFT JOIN ch_fee_do D ON (D.FEEID=F.GID AND D.CATEGORY=7) "); strSql.Append(" LEFT JOIN ch_fee_invoice i ON (D.BILLNO=I.BILLNO) "); strSql.Append(" left JOIN V_OP_BILL B ON (f.BSNO=B.BSNO) "); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" Where " + condition); } strSql.Append(" GROUP BY B.BSNO,B.OPLBNAME, B.BSTYPE,B.CUSTOMERNAME, B.CUSTNO, B.MBLNO, B.HBLNO,B.VESSEL, B.VOYNO, B.INPUTBY, B.CREATETIME, B.BSSTATUS, B.SALE, B.OP, B.DOC,"); strSql.Append(" B.ETD"); strSql.Append(" ,B.OPDATE,B.ENTERP"); strSql.Append(" ,B.CUSTOMDATE"); strSql.Append(" ,B.CUSTSERVICE, B.PORTLOAD, B.PORTDISCHARGE, B.CUSTOMNO, B.ACCDATE,B.CARRIER, B.BSSOURCE, B.LANE, B.FORWARDER,B.NETWEIGHT,B.KGS,B.TEU,B.CNTRTOTAL,B.CORPID"); strSql.Append(" ,B.TRADETYPE,B.GOODSNAME,B.FEESTATUS,F.CUSTOMERNAME"); strSql.Append(",i.INVOICENO,i.INVOICEMAKETIME "); var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by i.INVOICEMAKETIME DESC,i.INVOICENO "); } if ((!string.IsNullOrEmpty(printstr)) && (printstr == "true")) { var jsonRespose = new JsonResponse { Success = true, Message = "完成", Data = strSql.ToString() }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } else { var dbparams = new List(); var paramps_sSQL = new CustomDbParamter(); paramps_sSQL.ParameterName = "@sSQL"; paramps_sSQL.DbType = DbType.String; paramps_sSQL.Direction = ParameterDirection.Input; paramps_sSQL.Value = strSql.ToString(); dbparams.Add(paramps_sSQL); var dbRptResult = PubSysDAL.GetMsSqlPrcDataSet("sMsExesqlQry", dbparams, "Result_Set"); var json = RptHelper.GetRptJsonResult(start, limit, dbRptResult, "Result_Set", true); return new ContentResult() { Content = json }; } } public ContentResult InvListData(int start, int limit, string condition, string sort, string printstr) { var strDa = GetRangDAStr("index", Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); if (!string.IsNullOrEmpty(strDa)) { if (!string.IsNullOrEmpty(condition)) { condition = condition + " and " + strDa; } else { condition = strDa; } } var strSql = new StringBuilder(); strSql.Append(" SELECT i.GID,i.INVOICENO,i.BILLNO,i.CUSTOMERNAME,i.ACTUALCUSTOMERNAME,i.INVOICECUSTNAME,i.INVOICEMAKETIME,i.BANK,i.ACCOUNT,i.BSNO,i.VESSELVOYAGE,i.ETD,i.POL,i.POD"); strSql.Append(" ,i.FEEITEM,i.AMOUNT,cast(i.INVAMOUNT as decimal(18,2))INVAMOUNT,i.AMOUNTCAPITAL,i.OTCURRAMOUNT,i.CURRENCY,i.REMARK,i.APPLICANT,i.APPLYTIME,i.OPERATOR,i.LICENSECODE,i.TAXCODE,i.INVOICETYPE,i.BILLSTATUS"); strSql.Append(" ,i.ISNEEDPRINT,i.ISNEEDFEE,i.OPERATETIME,i.MBLNO,i.EXCHANGERATE,i.PRINTCAPITAL,i.PRINTAMOUNT,i.PRINTTITLE,i.COMPANYID,i.VOUCHERNO "); strSql.Append(" ,i.CUSTRATENO,i.CUSTADDRTEL,i.CUSTBANK,i.INVOICECATEGORY,i.ISDELETE,i.DELETEOPERATOR,i.DELETETIME "); strSql.Append(",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97008 and EnumValueID=i.INVOICECATEGORY) as INVOICECATEGORYREF"); strSql.Append(",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97009 and EnumValueID=i.INVOICETYPE) as INVOICETYPEREF"); strSql.Append(",(case i.billstatus when 1 then '已锁定' else '未锁定' end) as BILLSTATUSREF"); strSql.Append(",(select ShowName from [user] where GID=i.OPERATOR) as OPERATORNAME"); strSql.Append(",(select ShowName from [user] where GID=i.DELETEOPERATOR) as DELOPERATORNAME"); strSql.Append(",isnull(SUM(CASE D.ORIGCURRENCY WHEN 'RMB' THEN CASE WHEN D.FEETYPE=1 THEN ISNULL(ORIGAMOUNT,0) ELSE -ISNULL(ORIGAMOUNT,0) END ELSE 0 END),0) AS INVRMB"); strSql.Append(",isnull(SUM(CASE D.ORIGCURRENCY WHEN 'USD' THEN CASE WHEN D.FEETYPE=1 THEN ISNULL(ORIGAMOUNT,0) ELSE -ISNULL(ORIGAMOUNT,0) END ELSE 0 END),0) AS INVUSD"); strSql.Append(" FROM ch_fee_invoice i "); strSql.Append(" left join CH_FEE_DO D on (D.BILLNO=i.BILLNO)"); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" Where " + condition); } strSql.Append(" GROUP BY i.GID,i.INVOICENO,i.BILLNO,i.CUSTOMERNAME,i.ACTUALCUSTOMERNAME,i.INVOICECUSTNAME,i.INVOICEMAKETIME,i.BANK,i.ACCOUNT,i.BSNO,i.VESSELVOYAGE,i.ETD,i.POL,i.POD"); strSql.Append(" ,i.FEEITEM,i.AMOUNT,i.INVAMOUNT,i.AMOUNTCAPITAL,i.OTCURRAMOUNT,i.CURRENCY,i.REMARK,i.APPLICANT,i.APPLYTIME,i.OPERATOR,i.LICENSECODE,i.TAXCODE,i.INVOICETYPE,i.BILLSTATUS"); strSql.Append(" ,i.ISNEEDPRINT,i.ISNEEDFEE,i.OPERATETIME,i.MBLNO,i.EXCHANGERATE,i.PRINTCAPITAL,i.PRINTAMOUNT,i.PRINTTITLE,i.COMPANYID,i.VOUCHERNO "); strSql.Append(" ,i.CUSTRATENO,i.CUSTADDRTEL,i.CUSTBANK,i.INVOICECATEGORY,i.ISDELETE,i.DELETEOPERATOR,i.DELETETIME "); var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by i.INVOICEMAKETIME DESC"); } if ((!string.IsNullOrEmpty(printstr)) && (printstr == "true")) { var jsonRespose = new JsonResponse { Success = true, Message = "完成", Data = strSql.ToString() }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } else { var dbparams = new List(); var paramps_sSQL = new CustomDbParamter(); paramps_sSQL.ParameterName = "@sSQL"; paramps_sSQL.DbType = DbType.String; paramps_sSQL.Direction = ParameterDirection.Input; paramps_sSQL.Value = strSql.ToString(); dbparams.Add(paramps_sSQL); var dbRptResult = PubSysDAL.GetMsSqlPrcDataSet("sMsExesqlQry", dbparams, "Result_Set"); var json = RptHelper.GetRptJsonResult(start, limit, dbRptResult, "Result_Set", true); return new ContentResult() { Content = json }; } } public ContentResult GetSqlStr(string condition) { var strDa = GetRangDAStr("index", Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); if (!string.IsNullOrEmpty(strDa)) { if (!string.IsNullOrEmpty(condition)) { condition = condition + " and " + strDa; } else { condition = strDa; } } var jsonRespose = new JsonResponse { Success = true, Message = "完成", Data = condition }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult CustListData(int start, int limit, string condition, string sort, string printstr) { var strDa = GetRangDAStr("index", Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); if (!string.IsNullOrEmpty(strDa)) { if (!string.IsNullOrEmpty(condition)) { condition = condition + " and " + strDa; } else { condition = strDa; } } var strSql = new StringBuilder(); strSql.Append("SELECT F.CUSTOMERNAME AS CUSTNAME "); strSql.Append(",CASE F.FEETYPE WHEN 1 THEN '收' WHEN 2 THEN '付' ELSE '' END AS FEETYPEREF"); strSql.Append(",isnull(SUM(CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT,0) ELSE 0 END),0) AS TTLRMB,"); strSql.Append("isnull(SUM(CASE CURRENCY WHEN 'RMB' THEN ISNULL(INVOICE,0) ELSE 0 END),0) AS INVRMB,"); strSql.Append("isnull(SUM(CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT-ISNULL(INVOICE,0),0) ELSE 0 END),0) AS BALINVRMB,"); strSql.Append("isnull(SUM(CASE CURRENCY WHEN 'RMB' THEN ISNULL(SETTLEMENT,0) ELSE 0 END),0) AS STLRMB,"); strSql.Append("isnull(SUM(CASE WHEN CURRENCY='RMB' AND ISNULL(INVOICE,0)<>0 THEN ISNULL(CASE WHEN INVOICE>ISNULL(SETTLEMENT,0) THEN INVOICE-ISNULL(SETTLEMENT,0) ELSE 0 END,0) ELSE 0 END),0) AS INVNOSTLRMB,"); strSql.Append("isnull(SUM(CASE WHEN CURRENCY='RMB' AND ISNULL(SETTLEMENT,0)<>0 THEN ISNULL(CASE WHEN SETTLEMENT>ISNULL(INVOICE,0) THEN SETTLEMENT-ISNULL(INVOICE,0) ELSE 0 END,0) ELSE 0 END),0) AS STLNOINVRMB,"); strSql.Append("isnull(SUM(CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT,0) ELSE 0 END),0) AS TTLUSD,"); strSql.Append("isnull(SUM(CASE CURRENCY WHEN 'USD' THEN ISNULL(INVOICE,0) ELSE 0 END),0) AS INVUSD,"); strSql.Append("isnull(SUM(CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT-ISNULL(INVOICE,0),0) ELSE 0 END),0) AS BALINVUSD,"); strSql.Append("isnull(SUM(CASE CURRENCY WHEN 'USD' THEN ISNULL(SETTLEMENT,0) ELSE 0 END),0) AS STLUSD,"); strSql.Append("isnull(SUM(CASE WHEN CURRENCY='USD' AND ISNULL(INVOICE,0)<>0 THEN ISNULL(CASE WHEN INVOICE>ISNULL(SETTLEMENT,0) THEN INVOICE-ISNULL(SETTLEMENT,0) ELSE 0 END,0) ELSE 0 END),0) AS INVNOSTLUSD,"); strSql.Append("isnull(SUM(CASE WHEN CURRENCY='USD' AND ISNULL(SETTLEMENT,0)<>0 THEN ISNULL(CASE WHEN SETTLEMENT>ISNULL(INVOICE,0) THEN SETTLEMENT-ISNULL(INVOICE,0) ELSE 0 END,0) ELSE 0 END),0) AS STLNOINVUSD,"); strSql.Append("isnull(SUM(ISNULL(AMOUNT,0) * ISNULL(EXCHANGERATE,0)),0) AS TTL,"); strSql.Append("isnull(SUM(ISNULL(INVOICE,0) * ISNULL(EXCHANGERATE,0)),0) AS TTLINV,"); strSql.Append("isnull(SUM(ISNULL(AMOUNT-ISNULL(INVOICE,0),0) * ISNULL(EXCHANGERATE,0)),0) AS BALINVTTL,"); strSql.Append("isnull(SUM(ISNULL(SETTLEMENT,0) * ISNULL(EXCHANGERATE,0)),0) AS STLTTL,"); strSql.Append("isnull(SUM(CASE WHEN ISNULL(INVOICE,0)<>0 THEN ISNULL(CASE WHEN INVOICE>ISNULL(SETTLEMENT,0) THEN INVOICE-ISNULL(SETTLEMENT,0) ELSE 0 END,0)* ISNULL(EXCHANGERATE,0) ELSE 0 END),0) AS INVNOSTL,"); strSql.Append("isnull(SUM(CASE WHEN ISNULL(SETTLEMENT,0)<>0 THEN ISNULL(CASE WHEN SETTLEMENT>ISNULL(INVOICE,0) THEN SETTLEMENT-ISNULL(INVOICE,0) ELSE 0 END,0)* ISNULL(EXCHANGERATE,0) ELSE 0 END),0) AS STLNOINV"); strSql.Append(" FROM CH_FEE F "); strSql.Append("INNER JOIN V_OP_BILL B ON (F.BSNO=B.BSNO) "); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" Where " + condition); } strSql.Append(" Group by F.CUSTOMERNAME,F.FEETYPE "); var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by F.CUSTOMERNAME"); } if ((!string.IsNullOrEmpty(printstr)) && (printstr == "true")) { var jsonRespose = new JsonResponse { Success = true, Message = "完成", Data = strSql.ToString() }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } else { var dbparams = new List(); var paramps_sSQL = new CustomDbParamter(); paramps_sSQL.ParameterName = "@sSQL"; paramps_sSQL.DbType = DbType.String; paramps_sSQL.Direction = ParameterDirection.Input; paramps_sSQL.Value = strSql.ToString(); dbparams.Add(paramps_sSQL); var dbRptResult = PubSysDAL.GetMsSqlPrcDataSet("sMsExesqlQry", dbparams, "Result_Set"); var json = RptHelper.GetRptJsonResult(start, limit, dbRptResult, "Result_Set", true); return new ContentResult() { Content = json }; } } public ContentResult SumListData(int start, int limit, string condition, string sort) { var strDa = GetRangDAStr("index", Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); if (!string.IsNullOrEmpty(strDa)) { if (!string.IsNullOrEmpty(condition)) { condition = condition + " and " + strDa; } else { condition = strDa; } } var strSql = new StringBuilder(); strSql.Append("SELECT 1 AS NO"); strSql.Append(",isnull(SUM(CASE F.CURRENCY WHEN 'RMB' THEN CASE WHEN D.FEETYPE=1 THEN ISNULL(F.AMOUNT,0) ELSE -ISNULL(F.AMOUNT,0) END ELSE 0 END),0) AS TTLRMB"); strSql.Append(",isnull(SUM(CASE D.ORIGCURRENCY WHEN 'RMB' THEN CASE WHEN D.FEETYPE=1 THEN ISNULL(ORIGAMOUNT,0) ELSE -ISNULL(ORIGAMOUNT,0) END ELSE 0 END),0) AS INVRMB"); strSql.Append(",isnull(SUM(CASE F.CURRENCY WHEN 'USD' THEN CASE WHEN D.FEETYPE=1 THEN ISNULL(F.AMOUNT,0) ELSE -ISNULL(F.AMOUNT,0) END ELSE 0 END),0) AS TTLUSD"); strSql.Append(",isnull(SUM(CASE D.ORIGCURRENCY WHEN 'USD' THEN CASE WHEN D.FEETYPE=1 THEN ISNULL(ORIGAMOUNT,0) ELSE -ISNULL(ORIGAMOUNT,0) END ELSE 0 END),0) AS INVUSD"); strSql.Append(",(select sum(cast(INVAMOUNT as decimal(18,2))) from ch_fee_invoice i "); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" Where " + condition); } strSql.Append(") AS TTLINV"); strSql.Append(" FROM CH_FEE_DO D "); strSql.Append(" LEFT JOIN ch_fee_invoice i ON (D.BILLNO=I.BILLNO) "); strSql.Append(" INNER JOIN V_OP_BILL B ON (D.BSNO=B.BSNO) "); strSql.Append(" LEFT JOIN ch_fee F ON (D.FEEID=F.GID) "); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" Where " + condition); } var dbparams = new List(); var paramps_sSQL = new CustomDbParamter(); paramps_sSQL.ParameterName = "@sSQL"; paramps_sSQL.DbType = DbType.String; paramps_sSQL.Direction = ParameterDirection.Input; paramps_sSQL.Value = strSql.ToString(); dbparams.Add(paramps_sSQL); var dbRptResult = PubSysDAL.GetMsSqlPrcDataSet("sMsExesqlQry", dbparams, "Result_Set"); var json = RptHelper.GetRptJsonResult(start, limit, dbRptResult, "Result_Set", true); return new ContentResult() { Content = json }; } public static string GetRangDAStr(string tb, string userid, string usercode, string companyid) { string str = ""; var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(" VISIBLERANGE,OPERATERANGE "); strSql.Append(" from VW_User_Authority "); strSql.Append(" where [NAME]='modInvTotalreportRange' and USERID='" + userid + "' and ISDELETE=0"); string visiblerange = "4"; string operaterange = "4"; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { visiblerange = Convert.ToString(reader["VISIBLERANGE"]); operaterange = Convert.ToString(reader["OPERATERANGE"]); break; } reader.Close(); } if (visiblerange == "4") { str = "1=2"; } else if (visiblerange == "3") { str = " (i.OPERATOR='" + usercode+"')"; } else if (visiblerange == "2") { if (tb == "index") { var rangeDa = new RangeDA(); var deptname = rangeDa.GetDEPTNAME(userid); var userstr = new StringBuilder(); userstr.Append(" select GID from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "')"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = " (i.OPERATOR='" + Convert.ToString(reader["GID"]) + "'"; } else { str = str + " or i.OPERATOR='" + Convert.ToString(reader["GID"]) + "'"; }; } str =str+ ")"; reader.Close(); } } else { str = " UPPER(i.COMPANYID)='" + companyid + "'"; } } else if (visiblerange == "1") { str = " UPPER(i.COMPANYID)='" + companyid + "'"; } return str; } #region 参照部分 #endregion } }