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 < List < MsCtBankStatement > > ( body . Replace ( "T00:00:00" , "" ) ) ;
//var DelBodyList = JsonConvert.Deserialize<List<MsCtBankStatement>>(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 < string > 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 < string > ExcelSheetName ( string filepath , string ExcelExt , out string errostr )
{
var al = new List < string > ( ) ;
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 < string > ( ) ;
}
errostr = "" ;
return al ;
}
# endregion
}
}