using System; using System.Data; using System.Linq; using System.Web.Mvc; using DSWeb.MvcShipping.DAL.MsCtBankStatementDAL; using DSWeb.MvcShipping.Models.MsCtBankStatement; using DSWeb.MvcShipping.Helper; using DSWeb.MvcShipping.Comm.Cookie; using HcUtility.Comm; using HcUtility.Core; using System.Collections.Generic; using DSWeb.MvcShipping.DAL.MsBaseInfoDAL; using DSWeb.EntityDA; using DSWeb.Areas.CommMng.DAL; using System.Data.OleDb; using System.IO; using System.Text; using System.Web.UI.MobileControls; using System.Web.Configuration; namespace DSWeb.MvcShipping.Controllers { [JsonRequestBehavior] public class MsCtBankStatementController : Controller { public ActionResult Index() { return View(); } public ActionResult Edit() { return View(); } #region 查询 public ContentResult GetDataList(int start, int limit, string sort, string condition) { var dataList = MsCtBankStatementDAL.GetDataList(condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"]), sort); var list = dataList.Skip(start).Take(limit); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = list.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetData(string handle, string condition) { MsCtBankStatement head = null; head = MsCtBankStatementDAL.GetData(condition, Convert.ToString(Session["COMPANYID"]), Convert.ToString(Session["USERID"])); var json = JsonConvert.Serialize( new { Success = true, Message = "查询成功", data = head }); return new ContentResult() { Content = json }; } public ContentResult GetDetailList(string condition) { var dataList = MsCtBankStatementDAL.GetDetailList(condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() }); return new ContentResult() { Content = json }; } #endregion #region 明细表保存 public ContentResult SaveEdit(string body)//, string DelBody, string data_v { if (Convert.ToString(Session["COMPANYID"]).Trim() == "" || Convert.ToString(Session["USERID"]).Trim() == "" || Convert.ToString(Session["CODENAME"]).Trim() == "" || Convert.ToString(Session["SHOWNAME"]).Trim() == "" || Convert.ToString(Session["DEPTNAME"]).Trim() == "") { var jsonRespose2 = new JsonResponse { Success = false, Message = "登录超时,请退出系统重新登录!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } // string strCtACCDATE = BasicDataRefDAL.GetCtACCDATE(Convert.ToString(Session["USERID"])); string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(Convert.ToString(Session["USERID"])); T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); var bodyList = JsonConvert.Deserialize>(body.Replace("T00:00:00", "")); //var DelBodyList = JsonConvert.Deserialize>(DelBody.Replace("T00:00:00", "")); var isPost = true; var errorstr = ""; string sYear = ""; string sMonth = ""; string sDay = ""; // if (isPost) { //删除列表中的多余数据 //if (DelBodyList != null) //{ // foreach (var enumValue in DelBodyList) // { // MsCtBankStatementDAL.DeleteDetail(enumValue, Convert.ToString(Session["COMPANYID"]), Convert.ToString(Session["USERID"])); // } //} //添加、修改数据 DBResult result = new DBResult(); if (bodyList != null) { foreach (var enumValue in bodyList) { MsCtBankStatement headRow = new MsCtBankStatement(); #region 默认值 headRow.ISINITIAL = enumValue.ISINITIAL;//是否期初 headRow.ACCGID = enumValue.ACCGID == null ? "" : enumValue.ACCGID.ToString().Trim();//科目GID headRow.FCYNO = enumValue.FCYNO == null ? "" : enumValue.FCYNO.ToString().Trim();//外币编号usd DateTime _VOUDATE = enumValue.VOUDATE; sYear = _VOUDATE.Year.ToString(); sMonth = _VOUDATE.Month.ToString(); sDay = _VOUDATE.Day.ToString(); if (sMonth.Length == 1) { sMonth = "0" + sMonth; } if (sDay.Length == 1) { sDay = "0" + sDay; } headRow.VOUDATE = DateTime.Parse(sYear + "-" + sMonth + "-" + sDay + " 23:59:00.000");//结算日期 int iITEMNO = int.Parse(T_ALL_DA.GetStrSQL("iITEMNO", "select isnull((select top 1 isnull(ITEMNO,0) as iITEMNO from ct_bank_statement where STARTGID='" + strCtSTARTGID + "' and convert(varchar,VOUDATE,23)='" + (sYear + "-" + sMonth + "-" + sDay) + "' order by VOUDATE desc,convert(decimal(10),ITEMNO) desc),0) as iITEMNO")); headRow.ITEMNO = iITEMNO+1;//当日序号 headRow.ACCDATE = enumValue.ACCDATE == null ? "" : enumValue.ACCDATE.ToString().Trim();//会计期间 if (headRow.ISINITIAL) { headRow.ACCDATE = sYear + "-" + sMonth;//会计期间 } headRow.SETTLETYPE = enumValue.SETTLETYPE;//结算方式 headRow.BILLNO = enumValue.BILLNO == null ? "" : enumValue.BILLNO.ToString().Trim();//结算号 headRow.DC = enumValue.DC == null ? "" : enumValue.DC.ToString().Trim();//余额方向 headRow.DR = enumValue.DR;//原币借方金额(互斥) headRow.CR = enumValue.CR;//原币贷方金额(互斥) headRow.FCYEXRATE = enumValue.FCYEXRATE;//汇率 headRow.BLC = 0;//原币余额 headRow.EXPLAN = enumValue.EXPLAN == null ? "" : enumValue.EXPLAN.ToString().Trim();//摘要,规则生成 headRow.ENTERED = enumValue.ENTERED == null ? "" : enumValue.ENTERED.ToString().Trim();//经手人 headRow.ISIMPORT = false;//是否导入的数据 headRow.CHECKINGGID = "";//对账GID headRow.STARTGID = strCtSTARTGID;//账套启用GID headRow.CORPID = Convert.ToString(Session["COMPANYID"]);//分公司GID headRow.CREATEUSER = Convert.ToString(Session["USERID"]);//制单人GID headRow.CREATETIME = DateTime.Now;//创建时间 headRow.MODIFIEDUSER = Convert.ToString(Session["USERID"]);//最后一次更改操作人GID headRow.MODIFIEDTIME = DateTime.Now;//最后一次更改操作时间 #endregion if (enumValue.GID.ToString().Trim() == "*")//"add" { headRow.GID = Guid.NewGuid().ToString(); headRow.DbOperationType = DbOperationType.DbotIns; } else//"edit" { headRow.GID = enumValue.GID.ToString().Trim();//唯一编码 headRow.DbOperationType = DbOperationType.DbotUpd; headRow.ModelUIStatus = "E"; } var modb = new ModelObjectDB(); result = modb.Save(headRow); if (result.Message.ToString().IndexOf("插入重复键") > -1) { errorstr += "重复数据不再重复插入!"; } if (result.Success) { //更新期初余额 if (headRow.ISINITIAL == true) { MsCtBankStatementDAL.onINITIAL(headRow, Convert.ToString(Session["COMPANYID"]), Convert.ToString(Session["USERID"])); } else { //插入更新余额 MsCtBankStatementDAL.onBLC(headRow, Convert.ToString(Session["COMPANYID"]), Convert.ToString(Session["USERID"])); } } } } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message, Data = MsCtBankStatementDAL.GetData("convert(varchar,VOUDATE,23)='" + (sYear + "-" + sMonth + "-" + sDay) + "'", Convert.ToString(Session["COMPANYID"]), Convert.ToString(Session["USERID"])) }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } else { var jsonRespose = new JsonResponse { Success = false, Message = errorstr + "重复,不允许保存!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } #endregion #region 删除 public ContentResult Delete(string gids) { if (Convert.ToString(Session["COMPANYID"]).Trim() == "" || Convert.ToString(Session["USERID"]).Trim() == "" || Convert.ToString(Session["CODENAME"]).Trim() == "" || Convert.ToString(Session["SHOWNAME"]).Trim() == "" || Convert.ToString(Session["DEPTNAME"]).Trim() == "") { var jsonRespose2 = new JsonResponse { Success = false, Message = "登录超时,请退出系统重新登录!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } // DBResult result = MsCtBankStatementDAL.Delete(gids, Convert.ToString(Session["COMPANYID"]), Convert.ToString(Session["USERID"])); var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } #endregion #region 导入Excel银行流水单 [HttpPost] public ContentResult onImportExcelData(string strACCGID, string strFCYNO, string strfile) { if (Convert.ToString(Session["COMPANYID"]).Trim() == "" || Convert.ToString(Session["USERID"]).Trim() == "" || Convert.ToString(Session["CODENAME"]).Trim() == "" || Convert.ToString(Session["SHOWNAME"]).Trim() == "" || Convert.ToString(Session["DEPTNAME"]).Trim() == "") { var jsonRespose2 = new JsonResponse { Success = false, Message = "登录超时,请退出系统重新登录!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } // var jsonRespose = new JsonResponse { Success = false, Message = "" }; if (Request.Files.Count != 1) { jsonRespose.Success = false; jsonRespose.Message = "请选择上传的文件"; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } var file = Request.Files["file"]; if (file == null) { jsonRespose.Success = false; jsonRespose.Message = "上传文件发生未知错误,请重新上传"; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } if (Convert.ToString(Session["COMPANYID"]).ToString().Trim() == "" || Convert.ToString(Session["USERID"]).ToString().Trim() == "" || Convert.ToString(Session["CODENAME"]).ToString().Trim() == "" || Convert.ToString(Session["SHOWNAME"]).ToString().Trim() == "" || Convert.ToString(Session["DEPTNAME"]).ToString().Trim() == "") { var jsonRespose2 = new JsonResponse { Success = false, Message = "登录超时,请退出系统重新登录!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } string ext = Path.GetExtension(file.FileName).ToLower(); if (ext == ".asp" || ext == ".aspx") { jsonRespose.Success = false; jsonRespose.Message = "不允许上传ASP或ASPX文件"; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } var path = Server.MapPath("../../UploadFiles/Bs"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var size = file.ContentLength; var name = Path.GetFileName(file.FileName); var usercode = CookieConfig.GetCookie_UserCode(Request); string filename = path + "\\" + usercode + DateTime.Now.ToString("yyyyMMddHHmmssfff") + name; if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } file.SaveAs(filename); if (!System.IO.File.Exists(filename)) { jsonRespose.Success = false; jsonRespose.Message = "上传的Excel不包含数据01"; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } var ExcelExt = ""; try { ExcelExt = WebConfigurationManager.AppSettings["ExcelExt"].ToString(); } catch { } if (ExcelExt == "" || ExcelExt == null) ExcelExt = "Excel 8.0;HDR=Yes;IMEX=1"; var errostr = ""; List sheets = ExcelSheetName(filename, ExcelExt, out errostr); if (sheets.Count == 0) { jsonRespose.Success = false; jsonRespose.Message = filename + " 上传的Excel不包含数据02"; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } //开始取模板值 string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(Convert.ToString(Session["USERID"])); T_ALL_DA T_ALL_DA = new T_ALL_DA(); string sSQL = "select top 1 * from ct_bank_deploy where STARTGID='" + strCtSTARTGID + "' and ACCGID='" + strACCGID + "' and FCYNO='" + strFCYNO + "'"; DataSet dsCtBankDeploy = T_ALL_DA.GetAllSQL(sSQL); if (dsCtBankDeploy != null) { if (dsCtBankDeploy.Tables[0].Rows.Count > 0) { try { var sheetname = sheets[0]; string excelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extended Properties=" + ExcelExt; if (filename.ToLower().IndexOf(".xlsx") > 0) { excelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + ";Extended Properties=\"Excel 12.0 Xml;IMEX=1;HDR=Yes\""; } sSQL = "select * from [" + sheetname + dsCtBankDeploy.Tables[0].Rows[0]["STARTROW"].ToString() + "]"; OleDbDataAdapter oada = new OleDbDataAdapter(sSQL, excelConn); DataSet ds = new DataSet(); oada.Fill(ds); if (ds.Tables.Count == 0) { jsonRespose.Success = false; jsonRespose.Message = "上传的Excel不包含数据03"; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } var table = ds.Tables[0]; //string ext = Path.GetExtension(file.FileName).ToLower(); //if (ext != ".xls" && ext != ".xlsx") //{ // jsonRespose.Success = false; // jsonRespose.Message = "上传的文件不是Excel文件"; // return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; //} //var strMsg = ""; //var startrow = Convert.ToInt16(dsCtBankDeploy.Tables[0].Rows[0]["STARTROW"].ToString()); //DataTable table = ExcelHelper.ExcelToDatatable(file.InputStream, ext, out strMsg, null, startrow); //if (!string.IsNullOrEmpty(strMsg)) //{ // jsonRespose.Success = false; // jsonRespose.Message = strMsg; // return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; //} if (table.Rows.Count == 0 || table.Rows.Count == 1) { jsonRespose.Success = false; jsonRespose.Message = "上传的Excel不包含数据04"; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } var InsertCount = 0; var UpdateCount = 0; var UnKnowenTruckNo = ""; var iheadList = 0; var isSucess = MsCtBankStatementDAL.ImportExcelData(strACCGID, strFCYNO, dsCtBankDeploy, table, out InsertCount, out UpdateCount, out UnKnowenTruckNo, out iheadList, Convert.ToString(Session["USERID"]), Convert.ToString(Session["COMPANYID"])); // if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } // if (!isSucess) { jsonRespose.Success = false; jsonRespose.Message = ""; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } var json = JsonConvert.Serialize(new { success = true, Message = "上传成功,共处理" + Convert.ToString(iheadList) + "条流水,其中新增" + Convert.ToString(InsertCount) + "条,跳过" + Convert.ToString(UpdateCount) + "条。" + UnKnowenTruckNo, data = "" }); return new ContentResult() { Content = json }; } catch (Exception) { jsonRespose.Success = false; jsonRespose.Message = "读取Excel文件出错,请确认文件正确性"; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } else { jsonRespose.Success = false; jsonRespose.Message = "请先设置当前银行的导入模板!"; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } else { jsonRespose.Success = false; jsonRespose.Message = "请先设置当前银行的导入模板!"; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } public List ExcelSheetName(string filepath, string ExcelExt, out string errostr) { var al = new List(); try { string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=" + ExcelExt; if (filepath.ToLower().IndexOf(".xlsx") > 0) { strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties=\"Excel 12.0 Xml;HDR=Yes\""; } OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); System.Data.DataTable sheetNames = conn.GetOleDbSchemaTable (System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); conn.Close(); foreach (DataRow dr in sheetNames.Rows) { al.Add(dr[2].ToString()); } } catch (Exception e) { errostr = e.Message; return new List(); } errostr = ""; return al; } #endregion } }