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 DSWeb.Areas.Account.Models.BSNOLB; using DSWeb.Areas.Account.Models.MsOpBill; using DSWeb.MvcShipping.Models.MonthDataSet; using DSWeb.SoftMng.Filter; namespace DSWeb.Areas.Account.Controllers { /// /// 月末结账 /// [JsonRequestBehavior] public class Account_MonthLockController : Controller { // // GET: public ActionResult Index() { return View(); } public ActionResult FeeLockIndex() { return View(); } public ActionResult Chfee_lockDetail() { return View(); } // // GET: [SqlKeyWordsFilter(Type = "Action")]//sql 防注入过滤器 public ContentResult BsListData(int start, int limit, string condition,string sort,string type,string printstr) { var strDa ="CORPID='"+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.OPLB, B.OPLBNAME, B.BSTYPE,B.CUSTOMERNAME, B.CUSTNO, B.MBLNO, B.HBLNO,B.VESSEL, B.VOYNO, B.INPUTBY, B.CREATETIME, B.BSSTATUS,B.FEESTATUS,B.SALE, B.OP, B.DOC"); strSql.Append(",case B.BSSTATUS when 1 then '已锁定' else '未锁定' end as BSSTATUSREF"); strSql.Append(",case B.FEESTATUS when 1 then '已锁定' else '未锁定' end as FEESTATUSREF"); 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.CNTR1,B.CNTR2,B.CNTR3,B.CNTR4,B.CNTR5,B.CNTR6,B.CNTR7,B.CNTR8,B.CNTR9,B.CNTR10,B.OTCNTR,B.TRADETYPE,B.GOODSNAME,B.FEESTATUS"); strSql.Append(",G.RMBDR,G.RMBCR,G.STLRMBDR,G.STLRMBCR,G.USDDR,G.USDCR,G.STLUSDDR,G.STLUSDCR,G.OTDR,G.OTCR,G.STLOTDR,G.STLOTCR,G.TTLDR,G.TTLCR,G.STLTTLDR,G.STLTTLCR"); strSql.Append(",G.USDDR-G.USDCR AS USDPROFIT,G.RMBDR-G.RMBCR AS RMBPROFIT,G.OTDR-G.OTCR AS OTPROFIT,G.TTLDR-G.TTLCR AS TTLPROFIT "); strSql.Append(", (CASE WHEN (G.TTLCR)= 0 THEN '无法计算' ELSE ltrim(str((G.TTLDR-G.TTLCR) / (G.TTLCR) * 100, 10, 2)) + '%' END) AS PROFITRATE"); strSql.Append(" FROM V_OP_BILL B "); strSql.Append("LEFT JOIN v_op_gain_sum G ON (G.BSNO=B.BSNO) "); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" Where " + condition); } var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by B.CUSTOMERNAME,B.OPLB,B.CREATETIME 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 static string GetRangDAStr(string tb,string type, 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]='modBlockBSSTATUS' and USERID='" + userid + "' and ISDELETE=0"); if (type == "BS") { strSql.Append(" where [NAME]='modBlockBSSTATUS' and USERID='" + userid + "' and ISDELETE=0"); } else if (type == "FEE") { strSql.Append(" where [NAME]='modBlockFEESTATUS' 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 = " (B.OP='" + usercode + "' OR B.SALE='" + usercode + "')"; } else if (visiblerange == "2") { if (tb == "index") { var rangeDa = new RangeDA(); var deptname = rangeDa.GetDEPTNAME(userid); var userstr = new StringBuilder(); userstr.Append(" select SHOWNAME 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 = " (B.OP='" + Convert.ToString(reader["SHOWNAME"]) + "' OR B.SALE='" + Convert.ToString(reader["SHOWNAME"]) + "'"; } else { str = str + " or B.OP='" + Convert.ToString(reader["SHOWNAME"]) + "' OR B.SALE='" + Convert.ToString(reader["SHOWNAME"]) + "'"; }; } str =str+ ")"; reader.Close(); } } else { str = " UPPER(B.Corpid)='" + companyid + "'"; } } else if (visiblerange == "1") { str = " UPPER(B.Corpid)='" + companyid + "'"; } return str; } [SqlKeyWordsFilter(Type = "Action")]//sql 防注入过滤器 static public List GetFeeDataList(string strCondition,string userid,string username,string companyid) { var rangstr = GetRangDAStr("index","FEE",userid,username,companyid); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append("BSNO,OPLB,OPLBNAME,ACCDATE,MBLNO,HBLNO,CUSTNO"); strSql.Append(",CUSTOMERNAME"); strSql.Append(",VESSEL,VOYNO,ETD,PORTLOAD"); strSql.Append(",PORTDISCHARGE,INPUTBY,OP,CUSTSERVICE"); strSql.Append(",DOC,SALE,BSSTATUS,FEESTATUS"); strSql.Append(" from v_op_bill b "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where " + strCondition); } strSql.Append(" order by BsNo"); return SetFeeData(strSql); } private static List SetFeeData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsOpBill data = new MsOpBill(); #region Set DB data to Object data.BSNO = Convert.ToString(reader["BSNO"]); if (reader["ETD"] != DBNull.Value) data.ETD = Convert.ToString(reader["ETD"]); data.ACCDATE = Convert.ToString(reader["ACCDATE"]); data.OPLB = Convert.ToString(reader["OPLB"]); data.OPLBNAME = Convert.ToString(reader["OPLBNAME"]); data.MBLNO = Convert.ToString(reader["MBLNO"]); data.HBLNO = Convert.ToString(reader["HBLNO"]); data.CUSTNO = Convert.ToString(reader["CUSTNO"]); data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]); data.VESSEL = Convert.ToString(reader["VESSEL"]); data.VOYNO = Convert.ToString(reader["VOYNO"]); data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]); data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]); data.INPUTBY = Convert.ToString(reader["INPUTBY"]); data.OP = Convert.ToString(reader["OP"]); data.CUSTSERVICE = Convert.ToString(reader["CUSTSERVICE"]); data.DOC = Convert.ToString(reader["DOC"]); data.SALE = Convert.ToString(reader["SALE"]); data.BSSTATUS = Convert.ToBoolean(reader["BSSTATUS"]); data.FEESTATUS = Convert.ToBoolean(reader["FEESTATUS"]); #endregion headList.Add(data); } reader.Close(); } return headList; } #region 应月末结账期间 public ContentResult GetMonthsData() { var dataList = GetMonthList(Convert.ToString(Session["COMPANYID"])); var json = JsonConvert.Serialize( new { Success = true, Message = "查询成功", data = dataList }); return new ContentResult() { Content = json }; } static public MonthDataSet GetMonthList(string companyid) { var strSql = new StringBuilder(); strSql.Append("SELECT TOP 1 PERIOD,PYEAR,PMONTH,CLOSED from sys_Period"); strSql.Append(" Where COMPANYID='" + companyid + "'"); strSql.Append(" ORDER BY PERIOD DESC "); Database db = DatabaseFactory.CreateDatabase(); var evList = new List(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { var evData = new MonthDataSet(); var period = Convert.ToString(reader["PERIOD"]); DateTime dt = DateTime.ParseExact(period+"-01", "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture); dt = dt.AddMonths(1); evData.MONTHNAME = dt.ToString("yyyy-MM"); evList.Add(evData); } reader.Close(); } if (evList.Count > 0) return evList[0]; var evData2 =new MonthDataSet(); evData2.MONTHNAME="2014-01"; return evData2; } public static DBResult MonthClose(string monthdate, string companyid) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdInsert = db.GetSqlStringCommand( @"insert into sys_Period (PERIOD,PYEAR,PMONTH,CLOSED,COMPANYID) values (@PERIOD,@PYEAR,@PMONTH,@CLOSED,@COMPANYID) "); var cmdDelete = db.GetSqlStringCommand( @"delete from sys_Period where period=@period and companyid=@companyid"); cmdDelete.Parameters.Clear(); db.AddInParameter(cmdDelete, "@period", DbType.String,monthdate); db.AddInParameter(cmdDelete, "@companyid", DbType.String, companyid); db.ExecuteNonQuery(cmdDelete, tran); cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@PERIOD", DbType.String, monthdate); //db.AddInParameter(cmdInsert, "@PYEAR", DbType.Int16, ); //db.AddInParameter(cmdInsert, "@PMONTH", DbType.Int16,); db.AddInParameter(cmdInsert, "@CLOSED", DbType.String, "T"); db.AddInParameter(cmdInsert, "@COMPANYID", DbType.String, companyid); db.ExecuteNonQuery(cmdInsert, tran); result = new DBResult(); result.Success = true; result.Message = "成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功"; return result; } #endregion #region 参照部分 #endregion } }