using System;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using DSWeb.MvcShipping.Helper;
using DSWeb.MvcShipping.Comm.Cookie;
using HcUtility.Comm;
using HcUtility.Core;
using System.Collections.Generic;
using System.IO;
using System.Data;
using DSWeb.Areas.CommMng.DAL;
using DSWeb.TruckMng.Helper.Repository;
using DSWeb.Areas.MvcShipping.DAL.MsOp_InternalTrade;
using DSWeb.MvcShipping.Models.MsOp_InternalTrade;
using DSWeb.Areas.OA.Models.WorkFlow;
using DSWeb.EntityDA;
using DSWeb.MvcShipping.DAL.MsSysParamSet;
using Microsoft.Practices.EnterpriseLibrary.Data;
using DSWeb.MvcShipping.DAL.MsSysBillNoSet;//编码规则
using DSWeb.Areas.SysMng.DAL.SysTask;
using DSWeb.MvcShipping.DAL.MsOpSeaiDAL;
using DSWeb.MvcShipping.Models.MsOpSeai;//海运进口业务
using DSWeb.Areas.Import.Models.Comm;//用于生成费用
using DSWeb.Areas.CommMng.Models;
using DSWeb.MvcShipping.DAL.MsBaseInfoDAL;//查询OP权限
using DSWeb.MvcShipping.DAL.MsCodeOpDef;
using DSWeb.MvcShipping.DAL.MsInfoClient;
using DSWeb.MvcShipping.DAL.MsOpSeaeDAL;
using DSWeb.Common.DB;
using DSWeb.MvcShipping.DAL.MsChFeeDAL;
namespace DSWeb.MvcShipping.Controllers
{
///
/// 内贸业务 邓羽 20200311
/// 需求编号 张工
///
[JsonRequestBehavior]
public class MsOp_InternalTradeController : Controller
{
//
// GET: /RptMng/MsRptPcHeadQry
public ActionResult Index()
{
return View();
}
public ActionResult Edit()
{
return View();
}
public ActionResult FeeEdit()
{
return View();
}
public ActionResult FeeAmendEdit()
{
return View();
}
public ActionResult ReceiptEdit()
{
return View();
}
#region 内贸业务 头表/明细表
//public ContentResult GetSqlStr(string YXNOList) {
// string sql = MsOp_YAXIANGDAL.gethea;
//}
public ContentResult GetDataList(int start, int limit, string condition, string sort="")
{
var _count = 0;
var dataList = MsOp_InternalTradeDAL.GetDataList(start,limit,condition, Session["USERID"].ToString(),out _count, sort);
//var list = new List>();
var list_2 = ModelObjectBill.getDicList(ModelObjectConvert.ToModelObjectList(dataList));
var json = JsonConvert.Serialize(new
{
Success = true,
Message = "查询成功",
totalCount = _count,
data = list_2.ToList()
//totalCount = dataList.Count,
//data = list.ToList()
//,fieldlist = fieldlist.ToList()
});
return new ContentResult() { Content = json };
}
public ContentResult GetDataListStr(string condition, string sort = "")
{
var _count = 0;
var dataListStr = MsOp_InternalTradeDAL.GetDataListStr(condition, Session["USERID"].ToString(), out _count, sort);
var json = JsonConvert.Serialize(new
{
Success = true,
Message = "查询成功",
totalCount = _count,
data = dataListStr
//totalCount = dataList.Count,
//data = list.ToList()
//,fieldlist = fieldlist.ToList()
});
return new ContentResult() { Content = json };
}
public ContentResult GetData(string handle, string condition)
{
var result = new MsOp_INTERNALTRADEmb();
if (handle == "add") {
result.getDef(Session["USERID"].ToString());
}else
result = MsOp_InternalTradeDAL.GetData(condition, Session["USERID"].ToString());
if (handle == "copyadd")
{
var BSNO = System.Guid.NewGuid().ToString();
result.SetValue("BSNO", BSNO);
var feelist = MsChFeeDAL.GetAllDataList(condition);
if (feelist != null)
{
for (int _i = 0; _i < feelist.Count; _i++)
{
feelist[_i].BsNo = "*";
}
MsChFeeDAL.SaveFee(feelist, BSNO, CookieConfig.GetCookie_UserId(Request));
}
}
var json = JsonConvert.Serialize(new
{
Success = true,
Message = "查询成功",
//totalCount = 1,
data = result.ExtendDic
//,fieldlist = fieldlist.ToList()
});
return new ContentResult() { Content = json };
}
public ContentResult GetBodyList( string condition )
{
var dataList = MsOp_InternalTradeDAL.GetBodyList(condition);
var list = new List>();
if (dataList.Count() > 0)
{
foreach (var data in dataList)
{
list.Add(data.ExtendDic);
}
}
var json = JsonConvert.Serialize(new
{
Success = true,
Message = "查询成功",
totalCount = list.Count,
data = list.ToList()
});
return new ContentResult() { Content = json };
}
#endregion
///
/// 判断是否允许保存
/// 目前只判断重复 且受参数设置影响
///
///
///
///
private JsonResponse CanSave(string opstatus, MsOp_INTERNALTRADEmb head) {
var result = new JsonResponse();
result.Success = true;
result.Message = "";
if (!提单号允许重复()) {
//
if (提单号是否重复(opstatus, head)) {
result.Success = false;
result.Message += "此类业务的提单号不允许重复!";
}
}
//增加判断 费用锁定 业务锁定
if (!业务锁定(opstatus, head)) {
result.Success = false;
result.Message += "该业务已经业务锁定 不允许执行保存!";
}
return result;
}
///
/// 如未设定则允许重复
/// 如设定了该参数则value=1时允许重复
///
///
private bool 提单号允许重复() {
var cdc = new CommonDataContext();
var 系统参数_允许提单号重复List = cdc.sys_param_set.Where(x => x.GID == "14C5A14E-E5E8-4AF0-AEF5-F9D70A68DF54").ToList();
var result = new JsonResponse();
result.Success = true;
result.Message = "";
if (系统参数_允许提单号重复List != null && 系统参数_允许提单号重复List.Count() > 0)
{
if (系统参数_允许提单号重复List[0].PARAMVALUE == "1")
{
return true;
}
else {
return false;
}
}
return true;
}
private bool 提单号是否重复(string opstatus, MsOp_INTERNALTRADEmb head) {
//如果是新增 则只看是否有主题单号重复
var _mblno = head.GetValue("MBLNO");
var _bsno = head.GetValue("BSNO");
if (opstatus == "add") {
var cdc = new CommonDataContext();
var dataList = cdc.Op_INTERNALTRADE.Where(x=>x.MBLNO== _mblno).ToList();
if (dataList != null && dataList.Count > 0)
{
return true;
}
else {
return false;
}
}
//如为保存 则看是否有主提单号重复且BSNO不重复的
if (opstatus == "edit")
{
var cdc = new CommonDataContext();
var dataList = cdc.Op_INTERNALTRADE.Where(x => x.MBLNO == _mblno && x.BSNO!= _bsno).ToList();
if (dataList != null && dataList.Count > 0)
{
return true;
}
else
{
return false;
}
}
return false;
}
private bool 业务锁定(string opstatus, MsOp_INTERNALTRADEmb head) {
var _mblno = head.GetValue("MBLNO");
var _bsno = head.GetValue("BSNO");
if (opstatus == "edit")
{
var cdc = new CommonDataContext();
var dataList = cdc.Op_INTERNALTRADE.Where(x => x.BSNO == _bsno).ToList();
if (dataList != null && dataList.Count > 0)
{
if (dataList[0].BSSTATUS == true )
{
return false;
}
}
else
{
}
}
return true;
}
private bool 费用锁定(string opstatus, MsOp_INTERNALTRADEmb head)
{
var _mblno = head.GetValue("MBLNO");
var _bsno = head.GetValue("BSNO");
if (opstatus == "edit")
{
var cdc = new CommonDataContext();
var dataList = cdc.Op_INTERNALTRADE.Where(x => x.BSNO == _bsno).ToList();
if (dataList != null && dataList.Count > 0)
{
if (dataList[0].FEESTATUS == true)
{
return false;
}
}
else
{
}
}
return true;
}
public ContentResult Save(string opstatus, string data, string Body, string DelBody)//
{
var modb = new ModelObjectRepository();
Database db = DatabaseFactory.CreateDatabase();
var _date = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
var head = new MsOp_INTERNALTRADEmb();
head.SetValue(db, data);
head.GetTableField(db);
var cansave = CanSave(opstatus, head);
if (!cansave.Success) {
return new ContentResult() { Content = JsonConvert.Serialize(cansave) };
}
var basebody = new MsOp_INTERNALTRADE_Detailmb();
basebody.GetTableField(db);
var BodyList = new List();
var DelBodyList = new List();
if (Body != "" )
{
var savedl = JsonConvert.Deserialize>>(Body);
foreach (var sdl in savedl)
{
var body = new MsOp_INTERNALTRADE_Detailmb();
basebody.Copy(body);
body.SetValue(sdl);
if (opstatus == "add")
{
body.SetValue("GID", System.Guid.NewGuid().ToString());
body.SetValue("BSNO", "");
}
BodyList.Add(body);
}
}
if (string.IsNullOrWhiteSpace(head.GetValue("CUSTNO"))) {
var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='内贸海运业务' AND RULEBLNO='委托编号' ", Convert.ToString(Session["COMPANYID"]));
var CUSTNO = MsSysBillNoSetDAL.GetBillNo(billnoset, _date, _date, "", Session["USERID"].ToString(), Session["COMPANYID"].ToString());
if (string.IsNullOrWhiteSpace(CUSTNO))
{
var _r = new DBResult();
_r.SetErrorInfo("请检查【编码规则】设置,【内贸海运业务-委托编号】");
var jsonRespose2 = new JsonResponse
{
Success = _r.Success,
Message = _r.Message,
Data = ""
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) };
}
else {
head.SetValue("CUSTNO", CUSTNO);
}
}
if (head.GetValue("ETD") != "" && head.GetValue("CUSTOMERNAME") != "")// headData.STLDATE == "" &&
{
//根据客户、开船日计算账期
var _dmb = MsInfoClientDAL.GetSTLDATE(head.GetValue("CUSTOMERNAME"), "内贸海运", head.GetValue("ETD"), head.GetValue("SALE"));
head.SetValue("STLNAME",_dmb.STLNAME);
head.SetValue("STLDATE",_dmb.STLDATE);
if (_dmb.STLNAME == "")
{
head.SetValue("STLNAME","现结买单");
head.SetValue("STLDATE",head.GetValue("ETD"));
}
if (_dmb.BSSOURCE != "") head.SetValue("BSSOURCE",_dmb.BSSOURCE);
}
if (opstatus == "add")
{
head.DbOperationType = DbOperationType.DbotIns;
head.ModelUIStatus = "I";
if (string.IsNullOrEmpty(head.GetValue("BSNO")))
{
var _bsno = System.Guid.NewGuid().ToString();
head.SetValue("BSNO", _bsno);
}
head.SetValue("BSDATE", _date);
head.SetValue("CREATOR", Session["SHOWNAME"].ToString());
}
else if (opstatus == "edit")
{
head.DbOperationType = DbOperationType.DbotUpd;
head.ModelUIStatus = "E";
}
else
{
head.DbOperationType = DbOperationType.DbotDel;
}
DBResult result = modb.Save(head,
ModelObjectConvert.ToModelObjectList(BodyList),
ModelObjectConvert.ToModelObjectList(DelBodyList)
);
var bsnovalue = head.GetBillNoValue();
var bsnoname = head.GetBillNoFieldName();
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = MsOp_InternalTradeDAL.GetData(head.GetBillNoFieldName() + " = '" + head.GetBillNoValue() + "'",Session["USERID"].ToString()).ExtendDic//fieldlist
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult Delete(string data)
{
Database db = DatabaseFactory.CreateDatabase();
var head = new MsOp_INTERNALTRADEmb();
head.SetValue(db, data);
var canbedel = true;
var isfee = MsOpSeaeDAL.GetFeeCount(head.GetValue("BSNO"));
if (isfee)
{
var jsonRespose = new JsonResponse { Success = false, Message = "此票业务存在费用,请先删除费用才能删除此票业务!" };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
T_ALL_DA T_ALL_DA = new T_ALL_DA();
var BLCOUNT = T_ALL_DA.GetStrSQL("BLCOUNT", "select count(*) BLCOUNT from op_letter_truck WHERE TRUCKSTATUS in ('已接单','已派车','已发单','提交派车') and BSNO='" + head.GetValue("BSNO") + "'");
if (BLCOUNT != "0")
{
var jsonRespose = new JsonResponse { Success = false, Message = "此票业务存在派车信息,请先删除派车信息!" };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
if (canbedel == false)
{
var jsonRespose = new JsonResponse { Success = false, Message = "此状态下的内贸业务不能进行删除!" };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
else
{
var modb = new ModelObjectDBBill();
DBResult result = modb.Delete(head,
"delete from Op_InternalTrade_DETAIL where BSNO='" + head.GetValue("BSNO") + "'");
//MsSysBillNoSetDAL.DeleteBsNo(head.BillNo);
var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
public ContentResult DelDetail(string data,string GID)
{
Database db = DatabaseFactory.CreateDatabase();
var head = new MsOp_INTERNALTRADEmb();
head.SetValue(db, data);
//var canbedel = SysTaskDAL.TaskGetWord(head.GetValue("YXSTATE"), "candelete");
var canbedel = true;
if (canbedel == false)
{
var jsonRespose = new JsonResponse { Success = false, Message = "此状态下的内贸业务不能进行删除!" };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
else
{
var strSql = new StringBuilder();
var jsonRespose = new JsonResponse { Success = false, Message = "" };
strSql.Append(" delete from MsOp_InternalTrade_DETAIL where GID in (" + GID + ")");
try
{
var _r = db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
//MsOp_YAXIANGDAL.ReCount(head);
}
catch (Exception ee)
{
jsonRespose.Success = false;
jsonRespose.Message = ee.Message;
}
jsonRespose.Success = true;
jsonRespose.Message = "明细删除成功";
jsonRespose.Data = "";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
#region 获取打印的sql文本
public ContentResult GetPrintSql(string printname,string BSNOList)
{
var jsonRespose = new JsonResponse { Success = false, Message = "" };
if (printname == "Print1")
{
var result = new PrintSql();
result.sql1 = MsOp_InternalTradeDAL.getHeadListStr(" Op_INTERNALTRADE.BSNO in(" + BSNOList + ")");
result.sql2 = MsOp_InternalTradeDAL.getBodyListStr(" and d.BSNO in(" + BSNOList + ")");
jsonRespose.Success = true;
jsonRespose.Message = "查询成功";
jsonRespose.Data = result;
}
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
#endregion
[HttpPost]
public ContentResult ImpExcel()
{
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) };
}
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["DsLoadExcel"];
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/ImpBsExcel");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
var imptype = Request.Form["imptype"];
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) };
}
try
{
if (ext != ".xls" && ext != ".xlsx")
{
jsonRespose.Success = false;
jsonRespose.Message = "上传的文件不是Excel文件";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var strMsg = "";
System.Data.DataTable table = ExcelHelper.ReadStreamToDataTable(file.InputStream, out strMsg);
if (!string.IsNullOrEmpty(strMsg))
{
jsonRespose.Success = false;
jsonRespose.Message = strMsg;
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
if (table.Rows.Count > 0)
{
}
else
{
jsonRespose.Success = false;
jsonRespose.Message = "excel无数据!";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var result = new DBResult();
//if (customerFieldName == "委托单位")
//{
var userid = Session["USERID"].ToString();
var username = Session["SHOWNAME"].ToString();
var companyid = Session["COMPANYID"].ToString();
if (imptype == "2")
{
result = MsOp_InternalTradeDAL.UpdateOpInternalTrade(table, userid, username, companyid);
}
else
{
result = MsOp_InternalTradeDAL.ImpOpInternalTrade(table, userid, username, companyid);
}
var json = JsonConvert.Serialize(new
{
success = result.Success,
Message = result.Message
});
return new ContentResult() { Content = json };
}
catch (Exception e)
{
jsonRespose.Success = false;
jsonRespose.Message = "读取Excel文件出错,请确认文件正确性" + e.Message;
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
public ContentResult SaveList(string BSNOList, string headdata)//
{
var modb = new ModelObjectRepository();
Database db = DatabaseFactory.CreateDatabase();
var Updhead = new MsOp_INTERNALTRADEmb();
Updhead.SetValue(db, headdata);
//找到所有相关业务
var count = 0;
var headList = MsOp_InternalTradeDAL.GetDataList(0, 9999, " BSNO in (" + BSNOList + ") and (bsstatus=0 and feestatus=0)", Session["USERID"].ToString(),out count, "");
DBResult result = new DBResult();
var savehead = new MsOp_INTERNALTRADEmb();
savehead.GetTableField(db);
var basebody = new MsOp_INTERNALTRADE_Detailmb();
basebody.GetTableField(db);
foreach (var _head in headList)
{
var head = new MsOp_INTERNALTRADEmb();
savehead.Copy(head);
head.SetValue(_head.ExtendDic);
head.DbOperationType = DbOperationType.DbotUpd;
head.ModelUIStatus = "E";
//更新哪些字段
head.setValue_NoNull("ACCDATE", Updhead.GetValue("ACCDATE"));
head.setValue_NoNull("ETD", Updhead.GetValue("ETD"));
head.setValue_NoNull("VOYNO", Updhead.GetValue("VOYNO"));
head.setValue_NoNull("VESSEL", Updhead.GetValue("VESSEL"));
head.setValue_NoNull("ETA", Updhead.GetValue("ETA"));
head.setValue_NoNull("CTNALL", Updhead.GetValue("CTNALL"));
var BodyList = new List();
var SaveBodyList = new List();
var DelList = new List();
if (!string.IsNullOrWhiteSpace(Updhead.GetValue("LOADADDR")) || !string.IsNullOrWhiteSpace(Updhead.GetValue("LOADADDR"))) {
BodyList = MsOp_InternalTradeDAL.GetBodyList(" D.BSNO='" + head.GetValue("BSNO") + "'");
foreach (var body in BodyList) {
var savebody = new MsOp_INTERNALTRADE_Detailmb();
basebody.Copy(savebody);
savebody.SetValue(body.ExtendDic);
savebody.setValue_NoNull("LOADADDR", Updhead.GetValue("LOADADDR"));
savebody.setValue_NoNull("ACCDATE", Updhead.GetValue("LOADDATE"));
SaveBodyList.Add(savebody);
}
}
result = modb.Save(head,
ModelObjectConvert.ToModelObjectList(SaveBodyList),
ModelObjectConvert.ToModelObjectList(DelList)
);
if (!result.Success) break;
}
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = null
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
}