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.

394 lines
15 KiB
C#

11 months ago
using System;
using System.Linq;
using System.Web.Mvc;
using DSWeb.MvcShipping.DAL.MsCodeExcelExpFormatDAL;
using DSWeb.MvcShipping.Models.MsCodeExcelExpFormat;
using DSWeb.MvcShipping.Helper;
using DSWeb.MvcShipping.Comm.Cookie;
using System.Collections.Generic;
using HcUtility.Comm;
using HcUtility.Core;
using System.IO;
using Microsoft.Office.Interop.Excel;
using DSWeb.MvcShipping.DAL.MsOpSeaeDAL;
namespace DSWeb.MvcShipping.Controllers
{
[JsonRequestBehavior]
public class MsCodeExcelExpFormatController : Controller
{
//
// GET:
public ActionResult Index()
{
return View();
}
//
// GET: /
public ActionResult Edit()
{
return View();
}
//
// GET
public ContentResult GetDataList(string condition)
{
var dataList = MsCodeExcelExpFormatDAL.GetDataList(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 };
}
//
// GET/TruckMng/MsWlTyreAcc/GetData/
public ContentResult GetData(string handle, string condition)
{
MsCodeExcelExpFormat head = null;
if (handle == "edit")
{
var list = MsCodeExcelExpFormatDAL.GetDataList(condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"]));
if (list.Count > 0)
head = list[0];
}
if (head == null)
{
head = new MsCodeExcelExpFormat();
}
var json = JsonConvert.Serialize(
new { Success = true, Message = "查询成功", data = head });
return new ContentResult() { Content = json };
}
public ContentResult GetBodyList(string condition)
{
var dataList = MsCodeExcelExpFormatDAL.GetBodyList(condition);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() });
return new ContentResult() { Content = json };
}
public ContentResult Save(string opstatus, string data, string body, string bodywork)
{
var headData = JsonConvert.Deserialize<MsCodeExcelExpFormat>(data);
var bodyList = JsonConvert.Deserialize<List<MsCodeExcelExpFormatDetail>>(body);
if (opstatus == "add")
{
headData.DbOperationType = DbOperationType.DbotIns;
headData.CREATEUSER = Convert.ToString(Session["USERID"]);
headData.CREATETIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
headData.CORPID = Convert.ToString(Session["COMPANYID"]);
}
else if (opstatus == "edit")
{
headData.DbOperationType = DbOperationType.DbotUpd;
headData.ModelUIStatus = "E";
}
else
{
headData.DbOperationType = DbOperationType.DbotDel;
}
headData.MODIFIEDUSER = Convert.ToString(Session["USERID"]);
headData.MODIFIEDTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
var modb = new ModelObjectDB();
modb.Save(headData);
var OS_ID = headData.GID;
DBResult result = MsCodeExcelExpFormatDAL.SaveDetail(headData, bodyList);
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = MsCodeExcelExpFormatDAL.GetData("GID='" + OS_ID + "'")
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
//
// GET/Import/Cargoinfo/Delete
public ContentResult Delete(string data)
{
var headData = JsonConvert.Deserialize<MsCodeExcelExpFormat>(data);
var modb = new ModelObjectDB();
DBResult result = modb.Delete(headData);
if (result.Success == true) { MsCodeExcelExpFormatDAL.DeleteDetail(headData); }
var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult DeleteDetail(string GID)
{
DBResult result =MsCodeExcelExpFormatDAL.DeleteDetail(GID);
var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
#region 引入 EXCEL
[HttpPost]
public ContentResult ImportExcel()
{
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["LoadExcel"];
var BSNO = Request.Form["bsno"];
if (file == null)
{
jsonRespose.Success = false;
jsonRespose.Message = "上传文件发生未知错误,请重新上传";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var path = Server.MapPath("../../UploadFiles/MsOpFiles");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
var size = file.ContentLength;
var name = Path.GetFileName(file.FileName);
var usercode = Convert.ToString(Session["USERCODE"]);
var partname = usercode + DateTime.Now.ToString("yyyyMMddHHmmssfff") + name;
string filename = path + "\\" + partname;
string filenameURL = "../../UploadFiles/MsOpFiles/"+ partname;
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 = "上传文件发生未知错误,请重新上传";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
try
{
var message = string.Empty;
var isSucess = MsCodeExcelExpFormatDAL.UpdateFileData(filenameURL, partname, BSNO, Convert.ToString(Session["USERID"]));
var head = MsCodeExcelExpFormatDAL.GetData("GID='" + BSNO + "'");
var json = JsonConvert.Serialize(new { success = isSucess.Success, Message = isSucess.Message, data = head });
return new ContentResult() { Content = json };
}
catch (Exception)
{
jsonRespose.Success = false;
jsonRespose.Message = "上传文件出错,请确认文件正确性";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
public string getPropertiesValue<T>(T t,string fieldname)
{
string tStr ="";
if (t == null)
{
return tStr;
}
System.Reflection.PropertyInfo[] properties = t.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
if (properties.Length <= 0)
{
return tStr;
}
foreach (System.Reflection.PropertyInfo item in properties)
{
string name = item.Name;
object value = item.GetValue(t, null);
if (item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String"))
{
if (name == fieldname) tStr = value.ToString();
}
}
return tStr;
}
public string getEString(int strnum)
{
var result = "";
if (strnum == 1) result = "A";
if (strnum == 2) result = "B";
if (strnum == 3) result = "C";
if (strnum == 4) result = "D";
if (strnum == 5) result = "E";
if (strnum == 6) result = "F";
if (strnum == 7) result = "G";
if (strnum == 8) result = "H";
if (strnum == 9) result = "I";
if (strnum == 10) result = "J";
if (strnum == 11) result = "K";
if (strnum == 12) result = "L";
if (strnum == 13) result = "M";
if (strnum == 14) result = "N";
if (strnum == 15) result = "O";
if (strnum == 16) result = "P";
if (strnum == 17) result = "Q";
if (strnum == 18) result = "R";
if (strnum == 19) result = "S";
if (strnum == 20) result = "T";
if (strnum == 21) result = "U";
if (strnum == 22) result = "V";
if (strnum == 23) result = "W";
if (strnum == 24) result = "X";
if (strnum == 25) result = "Y";
if (strnum == 26) result = "Z";
return result;
}
public ContentResult SaveExcel(string bstype, string bsno, string fmid)
{
var excelfm = MsCodeExcelExpFormatDAL.GetData("GID='" + fmid + "'");
var excelfmdetail = MsCodeExcelExpFormatDAL.GetBodyList("TEMPLATEID='" + fmid + "'");
var head = MsOpSeaeDAL.GetData("BSNO='" + bsno + "'");
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
//Microsoft.Office.Interop.Excel.Application application = new Microsoft.Office.Interop.Excel.ApplicationClass()
var path = Server.MapPath("../../ExcelExp");
var path2 = Server.MapPath("../../UploadFiles/MsOpFiles/");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string expfilename = path + "\\" + head.MBLNO + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls";
string excelFilePath = path2 + excelfm.FILEPATH;
var result = new DBResult();
if (System.IO.File.Exists(excelFilePath))
{
if (excel == null)
{
result.Success = false;
result.Message = "无法创建Excel对象,可能您的服务器计算机未安装Excel!";
}
else
{
Workbook workbook = excel.Workbooks.Open(excelFilePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Worksheet mySheet = workbook.Sheets[1] as Worksheet;
var cellvalu = "";
if (excelfmdetail != null)
{
foreach (var enumValue in excelfmdetail)
{
cellvalu= getPropertiesValue(head,enumValue.FIELDNAME);
if (cellvalu != "")
{
if ((cellvalu.IndexOf("\r\n") > 0) || (cellvalu.IndexOf("\n") > 0))
{
cellvalu = cellvalu.Replace("\r\n", "\\");
cellvalu = cellvalu.Replace("\n", "\\");
cellvalu = cellvalu.Replace("\r", " ");
string[] StrList = cellvalu.Split('\\');
for (var i = 0; i <= StrList.Length - 1; i++)
{
var tmpstr = mySheet.Cells.get_Range(getEString(enumValue.YP) + (enumValue.XP + i).ToString()).Value2;
object v11new = tmpstr;
if (v11new != null)
{
if (v11new.ToString() != "")
mySheet.Cells[enumValue.XP + i, enumValue.YP] = v11new + " " + StrList[i];
else
mySheet.Cells[enumValue.XP + i, enumValue.YP] = StrList[i];
}
else mySheet.Cells[enumValue.XP + i, enumValue.YP] = StrList[i];
}
}
else {
var tmpstr = mySheet.Cells.get_Range(getEString(enumValue.YP) + (enumValue.XP).ToString()).Value2;
object v11new = tmpstr;
if (v11new != null)
{
if (v11new.ToString() != "")
mySheet.Cells[enumValue.XP, enumValue.YP] = v11new + " " + cellvalu;
else
mySheet.Cells[enumValue.XP, enumValue.YP] = cellvalu;
}
else {
mySheet.Cells[enumValue.XP, enumValue.YP] = cellvalu;
}
}
}
else
mySheet.Cells[enumValue.XP, enumValue.YP] = enumValue.FIXSTR;
}
}
mySheet.SaveAs(expfilename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
workbook.Close(true, Type.Missing, Type.Missing);
workbook = null;
excel.Quit();
excel = null;
var filename = Path.GetFileName(expfilename);
result.Data = "../../ExcelExp/" + filename;
result.Success = true;
result.Message = filename;
}
}
else {
result.Success = false;
result.Message = "服务器EXCEL模板不存在,请上传!";
}
var jsonRespose = new JsonResponse { Data = result.Data, Success = result.Success, Message = result.Message };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
#endregion
#region 参照部分
#endregion
}
}