You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/DSWeb/TruckMng/Controllers/TMSRPTController.cs

867 lines
34 KiB
C#

2 years ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using DSWeb.Areas.TruckMng.DAL.TMSRPT;
using DSWeb.Areas.TruckMng.Models;
using DSWeb.Areas.TruckMng.Models.TMSRPT;
using DSWeb.Areas.TruckMng.Models.Card;
using DSWeb.TruckMng.Comm.Cookie;
using DSWeb.TruckMng.Helper;
using DSWeb.TruckMng.Helper.Repository;
using HcUtility.Comm;
using HcUtility.Core;
using System.Text;
using System.Data;
using Microsoft.Practices.EnterpriseLibrary.Data;
using DSWeb.Areas.CommMng.Models;
using DSWeb.Areas.CommMng.DAL;
using DSWeb.Areas.TruckMng.DAL.MsWlInsure;
using System.IO;
using System.Data.OleDb;
namespace DSWeb.Areas.TruckMng.Controllers
{
[JsonRequestBehavior]
public class TMSRPTController : Controller
{
//
// GET: /TruckMng/MsWlTruck
public ActionResult MONTH_Index()
{
return View();
}
//
// GET: /TruckMng/MsWlTruck/Edit
public ActionResult MONTH_Edit()
{
return View();
}
public ActionResult MONTH_View()
{
return View();
}
//
// GET/TruckMng/MsWlTruck/GetDataList
public ContentResult MONTH_GetDataList(int start, int limit, string sort, string condition)
{
var dataList = TMSRPTDAL.GetDataList(condition, Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), CookieConfig.GetCookie_OrgCode(Request), 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 };
}
//
// GET/TruckMng/MsWlTruck/GetData/
public ContentResult MONTH_GetData ( string handle, string condition )
{
TMSRPT_MONTH head = null;
if (handle == "edit")
{
var list = TMSRPTDAL.GetDataList(condition, Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), CookieConfig.GetCookie_OrgCode(Request));
if (list.Count > 0)
head = list[0];
}
if (head == null)
{
head = new TMSRPT_MONTH();
head.GID = System.Guid.NewGuid().ToString();
head.OP = Session["SHOWNAME"].ToString();
head.COMPANYID = Session["COMPANYID"].ToString();
head.ACCDATE = TMSRPTDAL.GetACCDATE(Session["COMPANYID"].ToString());
head.OPDATE = System.DateTime.Now.ToString("yyyy-MM-dd");
head.FUELPRICE = "0";
}
var json = JsonConvert.Serialize(
new { Success = true, Message = "查询成功", data = head });
return new ContentResult() { Content = json };
}
public ContentResult Save ( string opstatus, string data, string body, string delbody )
{
TMSRPT_MONTH head = JsonConvert.Deserialize<TMSRPT_MONTH>(data);
var bodyList = JsonConvert.Deserialize<List<TMSRPT_MONTH_TRUCKDETAIL>>(body);
var bodyDelList = JsonConvert.Deserialize<List<TMSRPT_MONTH_TRUCKDETAIL>>(delbody);
if (opstatus == "add")
{
head.DbOperationType = DbOperationType.DbotIns;
head.ModelUIStatus = "I";
//head.OP = Convert.ToString(Session["SHOWNAME"]);
//head.OPDATE = System.DateTime.Now.ToString("G");
//head.OrgCode = CookieConfig.GetCookie_OrgCode(Request);
}
else if (opstatus == "edit")
{
head.DbOperationType = DbOperationType.DbotUpd;
head.ModelUIStatus = "E";
head.OP = Convert.ToString(Session["SHOWNAME"]);
head.OPDATE = System.DateTime.Now.ToString("G");
}
else
{
head.DbOperationType = DbOperationType.DbotDel;
}
var modb = new ModelObjectRepository();
DBResult result = modb.Save(head,
ModelObjectConvert<TMSRPT_MONTH_TRUCKDETAIL>.ToModelObjectList(bodyList),
ModelObjectConvert<TMSRPT_MONTH_TRUCKDETAIL>.ToModelObjectList(bodyDelList)
);
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = TMSRPTDAL.GetData("GID='" + head.GID + "'", Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), CookieConfig.GetCookie_OrgCode(Request))
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult Delete(string data)
{
var head = JsonConvert.Deserialize<TMSRPT_MONTH>(data);
var modb = new ModelObjectDB();
DBResult result = modb.Delete(head, Session["USERID"].ToString(),true
, "delete from TMSRPT_MONTH_TRUCKDETAIL where GID='"+head.GID+"'"
);
var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult GetBodyList(int start, int limit, string condition)
{
var dataList = TMSRPTDAL.GetBodyList(condition);
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 GetCompanyDetailList ( int start, int limit, string condition )
{
var dataList = TMSRPTDAL.GetCompanyDetailList(condition);
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 };
}
/*
#region 参照部分
public ContentResult GetDrvCodeList()
{
var list = MsWlTruckDAL.GetDrvCodeList(Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), CookieConfig.GetCookie_OrgCode(Request));
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", data = list.ToList() });
return new ContentResult() { Content = json };
}
#endregion
//
public ContentResult GetTruckMonthList ( string condition )
{
var dataList = MsWlTruckDAL.GetTruckMonthList(condition);
//var list = dataList.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() });
return new ContentResult() { Content = json };
}
*/
public ContentResult ReMake(string data)
{
TMSRPT_MONTH head = JsonConvert.Deserialize<TMSRPT_MONTH>(data);
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var strSql = new StringBuilder();
strSql.Append(" delete from TMSRPT_MONTH_TRUCKDETAIL where LINKGID='" + head.GID + "' ");
strSql.Append(" insert into TMSRPT_MONTH_TRUCKDETAIL(GID,LINKGID,COMPANYID,TRUCKNO,TEU,RATEDMIL,OVERLOADMIL,TONS,REALFUEL,RATEDFUEL,REMAINFUEL,AMOUNT,LQF,OTHERAMOUNT ");
strSql.Append(" ,ZJF,BXF,FUELPRICE,FUELAMOUNT,REPAIRDAYS,REPAIRAMOUNT,TYREAMOUNT,TAX,TRUCKCOST,TRUCKPROFIT_M,CARDAYS,WORKDAYS,USABLEDAYS,USABLERATE,MILPERDAY,PcBillType,FUELAMOUNTRATE) ");
strSql.Append(" exec [proc_TMSRPT_MONTH] '" + head.GID + "','" + head.COMPANYID + "'," + head.FUELPRICE + ",'" + head.ACCDATE + "','','" + head.EXPDATEBGN + "','" + head.EXPDATEEND + "' ");
var cmdupdate = db.GetSqlStringCommand(strSql.ToString());
cmdupdate.Parameters.Clear();
db.ExecuteNonQuery(cmdupdate, tran);
result = new DBResult();
result.Success = true;
result.Message = "审核成功";
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "审核错误,请重试或联系系统管理员";
}
}
if (result.Success == true) {
MakeBX(data);
}
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = null
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult LoadBeforeFee(string data)
{
//从上个月份获取数据
TMSRPT_MONTH head = JsonConvert.Deserialize<TMSRPT_MONTH>(data);
var result = new DBResult();
var beforeACCDATE = TMSRPTDAL.GetBeforeACCDATE(head);
if (beforeACCDATE != "")
{
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var strSql = new StringBuilder();
strSql.Append(" update TMSRPT_MONTH_TRUCKDETAIL set ");
strSql.Append(" zjf=(select top 1 isnull(ZJF,0) from TMSRPT_MONTH_TRUCKDETAIL T where T.TRUCKNO=TMSRPT_MONTH_TRUCKDETAIL.TRUCKNO and T.LINKGID=(select top 1 gid from TMSRPT_MONTH where ACCDATE='" + beforeACCDATE + "' and COMPANYID='" + head.COMPANYID + "' and isnull(isdelete,0)=0)) ");
// strSql.Append(" ,SBF=(select top 1 isnull(SBF,0) from TMSRPT_MONTH_TRUCKDETAIL T where T.TRUCKNO=TMSRPT_MONTH_TRUCKDETAIL.TRUCKNO and T.LINKGID=(select top 1 gid from TMSRPT_MONTH where ACCDATE='" + beforeACCDATE + "' and COMPANYID='" + head.COMPANYID + "' and isnull(isdelete,0)=0)) ");
// strSql.Append(" ,GJJ=(select top 1 isnull(GJJ,0) from TMSRPT_MONTH_TRUCKDETAIL T where T.TRUCKNO=TMSRPT_MONTH_TRUCKDETAIL.TRUCKNO and T.LINKGID=(select top 1 gid from TMSRPT_MONTH where ACCDATE='" + beforeACCDATE + "' and COMPANYID='" + head.COMPANYID + "' and isnull(isdelete,0)=0)) ");
strSql.Append(" where LINKGID='"+head.GID+"' ");
var cmdupdate = db.GetSqlStringCommand(strSql.ToString());
cmdupdate.Parameters.Clear();
db.ExecuteNonQuery(cmdupdate, tran);
result = new DBResult();
result.Success = true;
result.Message = "审核成功";
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "审核错误,请重试或联系系统管理员";
}
}
}
var jsonRespose = new JsonResponse
{
Success = false,
Message = result.Message,
Data = null
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult MakeBX ( string data ) //生成保险费
{
TMSRPT_MONTH head = JsonConvert.Deserialize<TMSRPT_MONTH>(data);
var result = new DBResult();
result.Success = true;
result.Message = "没有保险数据";
var DetailList = TMSRPTDAL.GetBodyList("LINKGID='"+head.GID+"'");
var UPDList = TMSRPTDAL.GetBodyList("1=2");
foreach (var _D in DetailList) {
var _FEE=0M;
var BXList=MsWlInsureDAL.GetAllDataList(" TRUCKNO='" + _D.TRUCKNO
+ "' and (InsureEndDate between '" + head.EXPDATEBGN.Substring(0, 10) + "' and '" + head.EXPDATEEND.Substring(0, 10) + "'"
+ " or InsureBgnDate between '" + head.EXPDATEBGN.Substring(0, 10) + "' and '" + head.EXPDATEEND.Substring(0, 10) + "' "
+ " or '" + head.EXPDATEBGN.Substring(0, 10) + "' between InsureBgnDate and InsureEndDate "
+ " or '" + head.EXPDATEEND.Substring(0, 10) + "' between InsureBgnDate and InsureEndDate ) and isnull((select sum(isnull(insuretotal,0)) from tMsWlInsureBody b where b.BillNo=tMsWlInsurehead.BillNo),0)>0 ");
var truckbgn=Convert.ToDateTime(head.EXPDATEBGN.Substring(0, 10));
var truckend=Convert.ToDateTime(head.EXPDATEEND.Substring(0, 10));
if (BXList.Count == 0) {
continue;
}
foreach (var _B in BXList) {
var insurebgn=Convert.ToDateTime(_B.InsureBgnDate);
var insureend=Convert.ToDateTime(_B.InsureEndDate);
//保险大于月内 以车时间为准
if (insurebgn <= truckbgn && insureend >= truckend)
{
TimeSpan _insuredays = insureend.Subtract(insurebgn);
var insuredays = Convert.ToDecimal(_insuredays.Days.ToString()) + 1;
var _dayFee = Convert.ToDecimal(_B.InsureTotal) / insuredays;
TimeSpan _Truckdays = truckend.Subtract(truckbgn);
var Truckdays = Convert.ToDecimal(_Truckdays.Days.ToString()) + 1;
_FEE = _FEE + Truckdays * _dayFee;
}
else
if (insurebgn <= truckbgn && insureend > truckbgn && insureend < truckend)
//前交叉 车开始日期 在保险起止日期之间
{
TimeSpan _insuredays = insureend.Subtract(insurebgn);
var insuredays = Convert.ToDecimal(_insuredays.Days.ToString()) + 1;
var _dayFee = Convert.ToDecimal(_B.InsureTotal) / insuredays;
TimeSpan _Truckdays = insureend.Subtract(truckbgn);
var Truckdays = Convert.ToDecimal(_Truckdays.Days.ToString()) + 1;
_FEE = _FEE + Truckdays * _dayFee;
}
else
if (insurebgn > truckbgn && insurebgn <= truckend && insureend > truckend)
//后交叉 车结束日期 在保险起止日期之间
{
TimeSpan _insuredays = insureend.Subtract(insurebgn);
var insuredays = Convert.ToDecimal(_insuredays.Days.ToString()) + 1;
var _dayFee = Convert.ToDecimal(_B.InsureTotal) / insuredays;
TimeSpan _Truckdays = truckend.Subtract(insurebgn);
var Truckdays = Convert.ToDecimal(_Truckdays.Days.ToString()) + 1;
_FEE = _FEE + Truckdays * _dayFee;
}
else
if (insurebgn >= truckbgn && insureend <= truckend )
//保险包含于车日之内
{
TimeSpan _insuredays = insureend.Subtract(insurebgn);
var insuredays = Convert.ToDecimal(_insuredays.Days.ToString()) + 1;
var _dayFee = Convert.ToDecimal(_B.InsureTotal) / insuredays;
TimeSpan _Truckdays = insureend.Subtract(insurebgn);
var Truckdays = Convert.ToDecimal(_Truckdays.Days.ToString()) + 1;
_FEE = _FEE + Truckdays * _dayFee;
}
}
if (_FEE > 0)
{
//费用后台计算
_D.BXF = _FEE.ToString();
//保险费加入成本
_D.TRUCKCOST = Convert.ToString(Convert.ToDecimal(_D.TRUCKCOST) + _FEE);
//计算:燃油费用占收入比
if (Convert.ToDecimal(_D.AMOUNT)!=0){
_D.FUELAMOUNTRATE = Convert.ToString(Convert.ToDecimal(_D.FUELAMOUNT) / Convert.ToDecimal(_D.AMOUNT));
}
UPDList.Add(_D);
}
}
if (UPDList.Count > 0)
{
var modb = new ModelObjectRepository();
result = modb.SaveComm(
ModelObjectConvert<TMSRPT_MONTH_TRUCKDETAIL>.ToModelObjectList(DetailList)
);
}
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = null
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
#region 审核 是否允许查看
public ContentResult StartAudit ( String USERID, String bill )
{
var result = new DBResult();
var WorkFlowName = "TMSRPT_MONTHAudit";
var billList = bill.Split(',');
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
foreach (var billno in billList)
{
Resultmb WorkResult = WorkFlowDAL.WorkFlowStart(WorkFlowName, billno, USERID,"",billno,"");
if (WorkResult.Success == true)
{
var cmdupdate = db.GetSqlStringCommand("update TMSRPT_MONTH set BLSTATUS=1 where GID=@GID and BLSTATUS in(0,4) ");
cmdupdate.Parameters.Clear();
//db.AddInParameter(cmdupdate, "@AUDITDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdupdate, "@GID", DbType.String, billno);
db.ExecuteNonQuery(cmdupdate, tran);
}
else
{
result.Success = false;
result.Message = "审核错误!";
}
}
result = new DBResult();
result.Success = true;
result.Message = "审核成功";
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "审核错误,请重试或联系系统管理员";
//return result;
}
}
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = null
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult ResetAudit ( String USERID, String bill )
{
var result = new DBResult();
var WorkFlowName = "TMSRPT_MONTHAudit";
var billList = bill.Split(',');
var _count = 0;
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
foreach (var billno in billList)
{
Resultmb WorkResult = WorkFlowDAL.WorkFlowReset(WorkFlowName, billno, USERID);
if (WorkResult.Success == true)
{
var cmdupdate = db.GetSqlStringCommand("update CRM_QUOTATION set BLSTATUS=1 where GID=@GID and BLSTATUS in()");
cmdupdate.Parameters.Clear();
//db.AddInParameter(cmdupdate, "@AUDITDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdupdate, "@GID", DbType.String, billno);
_count = db.ExecuteNonQuery(cmdupdate, tran);
}
else
{
result.Success = false;
result.Message = "审核错误!";
}
}
result = new DBResult();
if (_count > 0)
{
result.Success = true;
result.Message = "撤回成功";
}
else {
result.Success = false;
result.Message = "撤回失败";
}
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "撤回失败,请重试或联系系统管理员";
//return result;
}
}
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = null
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult Audit ( String USERID, String bill )
{
var result = new DBResult();
var WorkFlowName = "TMSRPT_MONTHAudit";
var billList = bill.Split(',');
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
foreach (var billno in billList)
{
Resultmb WorkResult = WorkFlowDAL.InsertWorkFlowDo(WorkFlowName, billno, USERID,billno);
if (WorkResult.Success == true)
{
var cmdupdate = db.GetSqlStringCommand("update TMSRPT_MONTH set BLSTATUS=2 where GID=@GID and BLSTATUS=1 ");
cmdupdate.Parameters.Clear();
//db.AddInParameter(cmdupdate, "@AUDITDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdupdate, "@GID", DbType.String, billno);
db.ExecuteNonQuery(cmdupdate, tran);
}
else
{
result.Success = false;
result.Message = "审核错误!";
}
}
result = new DBResult();
result.Success = true;
result.Message = "审核成功";
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "审核错误,请重试或联系系统管理员";
}
}
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = null
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult AuditBack ( String USERID, String bill )
{
var result = new DBResult();
var WorkFlowName = "TMSRPT_MONTHAudit";
var billList = bill.Split(',');
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
foreach (var billno in billList)
{
Resultmb WorkResult = WorkFlowDAL.DeleteWorkFlowDo(WorkFlowName, billno, USERID, "");
if (WorkResult.Success == true)
{
var cmdupdate = db.GetSqlStringCommand("update TMSRPT_MONTH set BLSTATUS=4 where GID=@GID and BLSTATUS in(1,2) ");
cmdupdate.Parameters.Clear();
//db.AddInParameter(cmdupdate, "@AUDITDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdupdate, "@GID", DbType.String, billno);
db.ExecuteNonQuery(cmdupdate, tran);
}
else
{
result.Success = false;
result.Message = "审核错误!";
}
}
result = new DBResult();
result.Success = true;
result.Message = "审核成功";
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "审核错误,请重试或联系系统管理员";
}
}
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = null
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
#endregion
[HttpPost]
public ContentResult File ( )
{
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"];
var TMSRPT_GID = Request.Form["GID"].ToString().Trim();
//var AIRLINES = Request.Form["AIRLINES"].ToString().Trim();
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/CtnTkDetail");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
var size = file.ContentLength;
var name = Path.GetFileName(file.FileName);
//var bsno = Request.Form["bsno"];
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) };
}
List<string> sheets = ExcelSheetName(filename);
if (sheets.Count == 0)
{
jsonRespose.Success = false;
jsonRespose.Message = "上传的Excel不包含数据02";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
try
{
var sheetname = sheets[0];
string excelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename +
";Extended Properties=Excel 8.0;";
if (filename.ToLower().IndexOf(".xlsx") > 0)
{
excelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename +
";Extended Properties=\"Excel 12.0 Xml;HDR=Yes\"";
}
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "A1:AA]", 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];
if (table.Rows.Count == 0)
{
jsonRespose.Success = false;
jsonRespose.Message = "上传的Excel不包含数据04";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var message = string.Empty;
List<TMSRPT_MONTH_TRUCKDETAIL> headList;
//if (customerFieldName == "委托单位")
//{
var InsertCount = 0;
var UpdateCount = 0;
var UnKnowenTruckNo = "";
var isSucess = TMSRPTDAL.ImportExcelData(Request, table, out message, out InsertCount, out UpdateCount, TMSRPT_GID, out UnKnowenTruckNo, out headList);
if (!isSucess)
{
jsonRespose.Success = false;
jsonRespose.Message = message;
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var json = JsonConvert.Serialize(new
{
success = true,
Message = "上传成功,共处理" + Convert.ToString(headList.Count) + "条记录,其中更新" + Convert.ToString(UpdateCount) + "个。" + UnKnowenTruckNo,
data = headList.ToList()
});
return new ContentResult() { Content = json };
}
catch (Exception)
{
jsonRespose.Success = false;
jsonRespose.Message = "读取Excel文件出错请确认文件正确性";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
public List<string> ExcelSheetName ( string filepath )
{
var al = new List<string>();
try
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
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)
{
return new List<string>();
}
return al;
}
}
}