|
|
|
|
using System;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using DSWeb.MvcShipping.Models.BookingConfirm;
|
|
|
|
|
using Microsoft.Practices.EnterpriseLibrary.Data;
|
|
|
|
|
using DSWeb.Areas.CommMng.Models;
|
|
|
|
|
using HcUtility.Comm;
|
|
|
|
|
using System.Web.Mvc;//ContentResult
|
|
|
|
|
using DSWeb.TruckMng.Helper.Repository;//ModelObjectRepository
|
|
|
|
|
using DSWeb.MvcShipping.Helper;
|
|
|
|
|
using DSWeb.Areas.CommMng.DAL;//使用获取权限子句
|
|
|
|
|
using DSWeb.MvcShipping.Models.MsOpSeae;
|
|
|
|
|
using BookingWeb.DB;
|
|
|
|
|
using BookingWeb.DB.Model;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using DSWeb.MvcShipping.DAL.MsSysParamSet;
|
|
|
|
|
using DSWeb.MvcShipping.DAL.DsSendmail;
|
|
|
|
|
|
|
|
|
|
namespace DSWeb.Areas.MvcShipping.DAL.BookingConfirm
|
|
|
|
|
{
|
|
|
|
|
public class BookingConfirmDAL
|
|
|
|
|
{
|
|
|
|
|
#region 订舱 Order 头表
|
|
|
|
|
|
|
|
|
|
static public List<BookingConfirmmb> GetBookingList ( string strCondition,string USERID, string sort = "" )
|
|
|
|
|
{
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
strSql.Append(getHeadListStr(strCondition, USERID));
|
|
|
|
|
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by (select max(optime) from OP_LOG where billno=ORDNO and JsonValue like '%\"BSSTATUS\":\"Submit\"%') desc ");
|
|
|
|
|
}
|
|
|
|
|
return SetBookingData(strSql, USERID);
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
public static BookingConfirmmb GetBookingData(string condition, string USERID)
|
|
|
|
|
{
|
|
|
|
|
var dataList = GetBookingList(condition, USERID);
|
|
|
|
|
|
|
|
|
|
var result = new BookingConfirmmb();
|
|
|
|
|
|
|
|
|
|
if (dataList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
result = dataList[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
public static string getHeadListStr(string condition, string USERID) {
|
|
|
|
|
string sql = BookingConfirmmb.getSQL() ;
|
|
|
|
|
|
|
|
|
|
//var rangestr = BasicDataRefDAL.GetVisableRange("modBookingConfirm", USERID, "COMPANYID", "CREATEUSER", "DEPTID");
|
|
|
|
|
|
|
|
|
|
var CLIENT_ID = EntityDA.T_ALL_DA.GetSQL_str("PARAMVALUE", "select top 1 PARAMVALUE from sys_param_set where PARAMNAME='Booking_CLIENT_GID' ");
|
|
|
|
|
|
|
|
|
|
sql += " and userid in (select GID from sys_user where CLIENT_ID='"+ CLIENT_ID + "') and BSSTATUS in('Submit','Confirm','Back') ";
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(condition)) { sql += " and " + condition; }
|
|
|
|
|
|
|
|
|
|
return sql;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static List<BookingConfirmmb> SetBookingData(StringBuilder strSql,string USERID)//, List<HcUtility.Core.Fieldmb> fieldlist
|
|
|
|
|
{
|
|
|
|
|
var headList = new List<BookingConfirmmb>();
|
|
|
|
|
|
|
|
|
|
//此处使用webconfig中的 booking内定义的订舱平台地址
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase("BookingDB");
|
|
|
|
|
|
|
|
|
|
string sql = strSql.ToString();
|
|
|
|
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
|
|
|
|
|
{
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
////根据字段名设定同名属性值
|
|
|
|
|
BookingConfirmmb data = new BookingConfirmmb();
|
|
|
|
|
data.SetExtendValue(reader);
|
|
|
|
|
|
|
|
|
|
headList.Add(data);
|
|
|
|
|
}
|
|
|
|
|
reader.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return headList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 集装箱表 明细表
|
|
|
|
|
|
|
|
|
|
static public List<Booking_Ctnmb> GetCtnList(string strCondition, string sort = "")
|
|
|
|
|
{
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
strSql.Append(getCtnListStr(strCondition));
|
|
|
|
|
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by CTNALL ");
|
|
|
|
|
}
|
|
|
|
|
return SetCtnData(strSql);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Booking_Ctnmb GetCtnData(string condition)
|
|
|
|
|
{
|
|
|
|
|
var dataList = GetCtnList(condition);
|
|
|
|
|
|
|
|
|
|
var result = new Booking_Ctnmb();
|
|
|
|
|
|
|
|
|
|
if (dataList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
result = dataList[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string getCtnListStr(string condition)
|
|
|
|
|
{
|
|
|
|
|
string sql = Booking_Ctnmb.getSQL();
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(condition)) { sql += " where " + condition; }
|
|
|
|
|
|
|
|
|
|
return sql;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static List<Booking_Ctnmb> SetCtnData(StringBuilder strSql)//, List<HcUtility.Core.Fieldmb> fieldlist
|
|
|
|
|
{
|
|
|
|
|
var headList = new List<Booking_Ctnmb>();
|
|
|
|
|
|
|
|
|
|
//此处使用webconfig中的 booking内定义的订舱平台地址
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase("BookingDB");
|
|
|
|
|
|
|
|
|
|
string sql = strSql.ToString();
|
|
|
|
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
|
|
|
|
|
{
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
////根据字段名设定同名属性值
|
|
|
|
|
Booking_Ctnmb data = new Booking_Ctnmb();
|
|
|
|
|
data.SetExtendValue(reader);
|
|
|
|
|
|
|
|
|
|
headList.Add(data);
|
|
|
|
|
}
|
|
|
|
|
reader.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return headList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 集装箱装箱明细表 明细表
|
|
|
|
|
|
|
|
|
|
static public List<Booking_CtnDetailmb> GetCtnDetailList(string strCondition, string USERID, string sort = "")
|
|
|
|
|
{
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
strSql.Append(GetCtnDetailListStr(strCondition, USERID));
|
|
|
|
|
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//strSql.Append(" order by CTNALL ");
|
|
|
|
|
}
|
|
|
|
|
return SetCtnDetailData(strSql, USERID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Booking_CtnDetailmb GetCtnDetailData(string condition, string USERID)
|
|
|
|
|
{
|
|
|
|
|
var dataList = GetCtnDetailList(condition, USERID);
|
|
|
|
|
|
|
|
|
|
var result = new Booking_CtnDetailmb();
|
|
|
|
|
|
|
|
|
|
if (dataList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
result = dataList[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GetCtnDetailListStr(string condition, string USERID)
|
|
|
|
|
{
|
|
|
|
|
string sql = Booking_CtnDetailmb.getSQL();
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(condition)) { sql += " where " + condition; }
|
|
|
|
|
|
|
|
|
|
return sql;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static List<Booking_CtnDetailmb> SetCtnDetailData(StringBuilder strSql, string USERID)//, List<HcUtility.Core.Fieldmb> fieldlist
|
|
|
|
|
{
|
|
|
|
|
var headList = new List<Booking_CtnDetailmb>();
|
|
|
|
|
|
|
|
|
|
//此处使用webconfig中的 booking内定义的订舱平台地址
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase("BookingDB");
|
|
|
|
|
|
|
|
|
|
string sql = strSql.ToString();
|
|
|
|
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
|
|
|
|
|
{
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
////根据字段名设定同名属性值
|
|
|
|
|
Booking_CtnDetailmb data = new Booking_CtnDetailmb();
|
|
|
|
|
data.SetExtendValue(reader);
|
|
|
|
|
|
|
|
|
|
headList.Add(data);
|
|
|
|
|
}
|
|
|
|
|
reader.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return headList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 提单确认表 头表//截单对比中的本地数据
|
|
|
|
|
|
|
|
|
|
static public List<Booking_OP_SEAE_SImb> GetBooking_SIList(string strCondition, string USERID, string sort = "")
|
|
|
|
|
{
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
strSql.Append(getBooking_SIListStr(strCondition, USERID));
|
|
|
|
|
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by (select max(optime) from OP_LOG where billno=SINO and JsonValue like '%\"BSSTATUS\":\"Submit\"%') ");
|
|
|
|
|
}
|
|
|
|
|
return SetSIData(strSql, USERID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Booking_OP_SEAE_SImb GetBooking_SIData(string condition, string USERID)
|
|
|
|
|
{
|
|
|
|
|
var dataList = GetBooking_SIList(condition, USERID);
|
|
|
|
|
|
|
|
|
|
var result = new Booking_OP_SEAE_SImb();
|
|
|
|
|
|
|
|
|
|
if (dataList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
result = dataList[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string getBooking_SIListStr(string condition, string USERID)
|
|
|
|
|
{
|
|
|
|
|
string sql = Booking_OP_SEAE_SImb.getSQL();
|
|
|
|
|
|
|
|
|
|
string _condition = " BSSTATUS <>'Create' ";
|
|
|
|
|
|
|
|
|
|
sql += " where " + _condition;
|
|
|
|
|
|
|
|
|
|
var CLIENT_ID = EntityDA.T_ALL_DA.GetSQL_str("PARAMVALUE", "select top 1 PARAMVALUE from sys_param_set where PARAMNAME='Booking_CLIENT_GID' ");
|
|
|
|
|
|
|
|
|
|
sql += " and userid in (select GID from sys_user where CLIENT_ID='" + CLIENT_ID + "') and BSSTATUS in('Submit','Confirm','Reject')";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(condition)) { sql += " and " + condition; }
|
|
|
|
|
|
|
|
|
|
return sql;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static List<Booking_OP_SEAE_SImb> SetSIData(StringBuilder strSql, string USERID)//, List<HcUtility.Core.Fieldmb> fieldlist
|
|
|
|
|
{
|
|
|
|
|
var headList = new List<Booking_OP_SEAE_SImb>();
|
|
|
|
|
|
|
|
|
|
//此处使用webconfig中的 booking内定义的订舱平台地址
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase("BookingDB");
|
|
|
|
|
|
|
|
|
|
string sql = strSql.ToString();
|
|
|
|
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
|
|
|
|
|
{
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
////根据字段名设定同名属性值
|
|
|
|
|
Booking_OP_SEAE_SImb data = new Booking_OP_SEAE_SImb();
|
|
|
|
|
data.SetExtendValue(reader);
|
|
|
|
|
|
|
|
|
|
headList.Add(data);
|
|
|
|
|
}
|
|
|
|
|
reader.Close();
|
|
|
|
|
}
|
|
|
|
|
return headList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 获取字段列表:存在于op_seae,不存在于op_seae_billmanage,且在“需要同步”的范围之内
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取字段列表:存在于op_seae,不存在于op_seae_billmanage,且在“需要同步”的范围之内
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="HeadSIFieldList"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static List<DiffFieldmb> GetMoreField(List<DiffFieldmb> HeadSIFieldList) {
|
|
|
|
|
//最初为数据库比较 后改为固定范围
|
|
|
|
|
//var noexistfieldList = SetNoExistList();
|
|
|
|
|
|
|
|
|
|
var noexistfieldList = new List<DiffFieldmb>();
|
|
|
|
|
|
|
|
|
|
var SIREMARK = new DiffFieldmb("SIREMARK", "");
|
|
|
|
|
noexistfieldList.Add(SIREMARK);
|
|
|
|
|
var COPYNOBILL = new DiffFieldmb("COPYNOBILL", "");
|
|
|
|
|
noexistfieldList.Add(COPYNOBILL);
|
|
|
|
|
var ISCONTAINERSOC = new DiffFieldmb("ISCONTAINERSOC", "");
|
|
|
|
|
noexistfieldList.Add(ISCONTAINERSOC);
|
|
|
|
|
|
|
|
|
|
var result = new List<DiffFieldmb>();
|
|
|
|
|
foreach (var item in HeadSIFieldList)
|
|
|
|
|
{
|
|
|
|
|
foreach (var field in noexistfieldList)
|
|
|
|
|
{
|
|
|
|
|
if (item.FieldName == field.FieldName)
|
|
|
|
|
{
|
|
|
|
|
result.Add(item);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
private static List<DiffFieldmb> SetNoExistList()
|
|
|
|
|
{
|
|
|
|
|
var headList = new List<DiffFieldmb>();
|
|
|
|
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
|
|
|
|
string sql = " Select name from syscolumns Where ID=OBJECT_ID('op_seae') and name not in (select name from syscolumns Where ID = OBJECT_ID('op_seae_billmanage')) ";
|
|
|
|
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
|
|
|
|
|
{
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
////根据字段名设定同名属性值
|
|
|
|
|
DiffFieldmb data = new DiffFieldmb(Convert.ToString(reader["name"]),"");
|
|
|
|
|
//data.FieldName= Convert.ToString(reader["name"]);
|
|
|
|
|
headList.Add(data);
|
|
|
|
|
}
|
|
|
|
|
reader.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return headList;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 向Booking.Op_seae_order写入数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="head"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private BookingDB bookingDB = new BookingDB();
|
|
|
|
|
|
|
|
|
|
public static DBResult SavetoBooking(MsOpSeae head,string CORPNAME)
|
|
|
|
|
{
|
|
|
|
|
var bookingDB = new BookingDB();
|
|
|
|
|
var result = new DBResult(false, "", null);
|
|
|
|
|
OP_SEAE_ORDER model = bookingDB.Orders.First(o => o.BSNO == head.BSNO);
|
|
|
|
|
|
|
|
|
|
model.MBLNO = head.MBLNO;
|
|
|
|
|
model.VESSEL = head.VESSEL;
|
|
|
|
|
model.VOYNO = head.VOYNO;
|
|
|
|
|
model.YARD = head.YARD;
|
|
|
|
|
|
|
|
|
|
if(!string.IsNullOrWhiteSpace(head.ETD))
|
|
|
|
|
model.ETD = Convert.ToDateTime( head.ETD);
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(head.CLOSINGDATE))
|
|
|
|
|
model.CLOSINGDATE = Convert.ToDateTime(head.CLOSINGDATE);
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(head.CLOSEDOCDATE))
|
|
|
|
|
model.CLOSEDOCDATE = Convert.ToDateTime(head.CLOSEDOCDATE);
|
|
|
|
|
|
|
|
|
|
model.VESSELID = head.VESSELID;
|
|
|
|
|
model.CARRIER = head.CARRIER;
|
|
|
|
|
|
|
|
|
|
var _r = bookingDB.SaveChanges();
|
|
|
|
|
|
|
|
|
|
if (_r>0) {
|
|
|
|
|
//保存日志
|
|
|
|
|
|
|
|
|
|
var viewModel = OrderEditViewModelExt.AsEditViewModel(model);
|
|
|
|
|
|
|
|
|
|
LogHelper.Log(OpLogModule.Order, OpLogType.Save, model.ORDNO, model.MBLNO,model.CORPID,CORPNAME, Newtonsoft.Json.JsonConvert.SerializeObject(viewModel));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 判断Booking.OP_seae_order的状态是否能进行指定变化
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="BSNO"></param>
|
|
|
|
|
/// <param name="STATUS"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static DBResult Order_CanConfirm(string BSNO, string STATUS)
|
|
|
|
|
{
|
|
|
|
|
var bookingDB = new BookingDB();
|
|
|
|
|
var result = new DBResult(false, "", null);
|
|
|
|
|
if (string.IsNullOrEmpty(BSNO)) {
|
|
|
|
|
result.Success = true;
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
OP_SEAE_ORDER model = bookingDB.Orders.First(o => o.BSNO == BSNO);
|
|
|
|
|
var Confirms = bookingDB.Confirms.Where(o => o.ORDNO == model.ORDNO && (o.BSSTATUS == OrderStatus.Submit.ToString() || o.BSSTATUS == OrderStatus.Confirm.ToString()));
|
|
|
|
|
|
|
|
|
|
if (Confirms.Count() > 0)
|
|
|
|
|
{
|
|
|
|
|
result.Message = "已经开始截单的订舱业务不能更改订舱状态";
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((model.BSSTATUS == OrderStatus.Submit.ToString() && STATUS == OrderStatus.Confirm.ToString()) || ((model.BSSTATUS == OrderStatus.Confirm.ToString() || model.BSSTATUS == OrderStatus.Submit.ToString()) && STATUS == OrderStatus.Back.ToString())) {
|
|
|
|
|
result.Success = true;
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result.Message="当前状态不能进行此操作";
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 更改Booking.Op_Seae_Order的状态
|
|
|
|
|
/// 如果需要的话 对Booking.OP_STATUS_LOG进行操作
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="BSNO"></param>
|
|
|
|
|
/// <param name="CORPNAME"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static DBResult BookingStatus_Order(OP_SEAE_ORDER model, string STATUS, string CORPNAME)
|
|
|
|
|
{
|
|
|
|
|
var bookingDB = new BookingDB();
|
|
|
|
|
var result = new DBResult(false, "", null);
|
|
|
|
|
|
|
|
|
|
//OP_SEAE_ORDER model = bookingDB.Orders.FirstOrDefault(o => o.BSNO == BSNO);
|
|
|
|
|
|
|
|
|
|
//1.Confirm
|
|
|
|
|
if (STATUS == OrderStatus.Confirm.ToString()) {
|
|
|
|
|
OP_STATUS_LOG confirmlog = new OP_STATUS_LOG();
|
|
|
|
|
confirmlog.GID = System.Guid.NewGuid().ToString();
|
|
|
|
|
confirmlog.RELATIVE_ID = model.ORDNO;
|
|
|
|
|
confirmlog.STATUS = OrderLogStatus.OrderConfirm.ToString();
|
|
|
|
|
confirmlog.OP_TIME = System.DateTime.Now;
|
|
|
|
|
confirmlog.OP_USER = CORPNAME;
|
|
|
|
|
bookingDB.StatusLogs.Add(confirmlog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//statusLogs = bookingDB.StatusLogs.Where(o => o.RELATIVE_ID == model.ORDNO && o.STATUS == OrderLogStatus.OrderSubmit.ToString());
|
|
|
|
|
|
|
|
|
|
//2.Back
|
|
|
|
|
if (STATUS == OrderStatus.Back.ToString())
|
|
|
|
|
{
|
|
|
|
|
bookingDB.StatusLogs.RemoveRange(bookingDB.StatusLogs.Where(o => o.RELATIVE_ID == model.ORDNO && (o.STATUS == OrderLogStatus.OrderSubmit.ToString() || o.STATUS == OrderLogStatus.OrderConfirm.ToString())));
|
|
|
|
|
result.Success = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//model.BSSTATUS = STATUS;
|
|
|
|
|
|
|
|
|
|
var _r = bookingDB.SaveChanges();
|
|
|
|
|
if (_r > 1) {
|
|
|
|
|
result.Success = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 写回订舱网站端的订舱状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ORDNO"></param>
|
|
|
|
|
/// <param name="BSNO"></param>
|
|
|
|
|
/// <param name="STATUS"></param>
|
|
|
|
|
/// <param name="CORPNAME"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static DBResult BookingStatus_Order(string ORDNO, string BSNO, string STATUS, string CORPNAME,string OPEmail="") {
|
|
|
|
|
var bookingDB = new BookingDB();
|
|
|
|
|
OP_SEAE_ORDER model = bookingDB.Orders.FirstOrDefault(o => o.ORDNO == ORDNO);
|
|
|
|
|
model.BSNO = BSNO;
|
|
|
|
|
model.BSSTATUS = STATUS;//写回订舱状态
|
|
|
|
|
|
|
|
|
|
if (STATUS== OrderStatus.Confirm.ToString()) {
|
|
|
|
|
model.EMAIL = OPEmail;
|
|
|
|
|
}
|
|
|
|
|
bookingDB.SaveChanges();
|
|
|
|
|
|
|
|
|
|
return BookingStatus_Order(model, STATUS, CORPNAME);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 判断Booking.OP_seae_order的状态是否能进行指定变化
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="BSNO"></param>
|
|
|
|
|
/// <param name="STATUS"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static DBResult SI_CanConfirm(string SINO, string ConfirmStatus)
|
|
|
|
|
{
|
|
|
|
|
var result = new DBResult(false, "", null);
|
|
|
|
|
var bookingDB = new BookingDB();
|
|
|
|
|
var confirm = bookingDB.Confirms.FirstOrDefault(o => o.SINO == SINO);
|
|
|
|
|
|
|
|
|
|
OP_SEAE_ORDER model = bookingDB.Orders.First(o => o.ORDNO == confirm.ORDNO);
|
|
|
|
|
|
|
|
|
|
var Confirms = bookingDB.Confirms.Where(o => o.ORDNO == confirm.ORDNO);
|
|
|
|
|
|
|
|
|
|
if (ConfirmStatus == OrderConfirmStatus.Reject.ToString())
|
|
|
|
|
{
|
|
|
|
|
if (confirm.BSSTATUS == OrderConfirmStatus.Confirm.ToString())
|
|
|
|
|
{
|
|
|
|
|
result.Message = "已经确认的截单不能再驳回";
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (confirm.BSSTATUS != OrderConfirmStatus.Submit.ToString())
|
|
|
|
|
{
|
|
|
|
|
result.Message = "当前状态不能进行此操作";
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result.Success = true;
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 对Booking.Op_Seae_SI进行状态变更操作
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="SINO"></param>
|
|
|
|
|
/// <param name="ConfirmStatus"></param>
|
|
|
|
|
/// <param name="CORPNAME"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static DBResult BookingStatus_Confirm(string SINO,string ConfirmStatus, string CORPNAME,string USERID="")
|
|
|
|
|
{
|
|
|
|
|
var result = new DBResult(false, "", null);
|
|
|
|
|
var bookingDB = new BookingDB();
|
|
|
|
|
var confirm = bookingDB.Confirms.FirstOrDefault(o => o.SINO == SINO);
|
|
|
|
|
|
|
|
|
|
OP_SEAE_ORDER model = bookingDB.Orders.First(o => o.ORDNO == confirm.ORDNO);
|
|
|
|
|
|
|
|
|
|
var Confirms = bookingDB.Confirms.Where(o => o.ORDNO == confirm.ORDNO).ToList();
|
|
|
|
|
|
|
|
|
|
if (ConfirmStatus == OrderConfirmStatus.Reject.ToString()) {
|
|
|
|
|
|
|
|
|
|
//if (confirm.BSSTATUS == OrderConfirmStatus.Confirm.ToString()) {
|
|
|
|
|
// result.Message = "已经确认的截单不能再驳回";
|
|
|
|
|
// return result;
|
|
|
|
|
//}
|
|
|
|
|
confirm.BSSTATUS = OrderConfirmStatus.Reject.ToString();
|
|
|
|
|
|
|
|
|
|
model.SISTATUS = OrderConfirmStatus.Reject.ToString();
|
|
|
|
|
|
|
|
|
|
//if (Confirms.Where(o => o.BSSTATUS == OrderConfirmStatus.Reject.ToString()).Count() > 0)
|
|
|
|
|
//{
|
|
|
|
|
bookingDB.StatusLogs.RemoveRange(bookingDB.StatusLogs.Where(o => o.RELATIVE_ID == confirm.ORDNO && (o.STATUS == OrderLogStatus.ConfirmSubmit.ToString() || o.STATUS == OrderLogStatus.ConfirmConfirm.ToString())));
|
|
|
|
|
//}
|
|
|
|
|
bookingDB.SaveChanges();
|
|
|
|
|
result.Success = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ConfirmStatus == OrderConfirmStatus.Confirm.ToString())
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
confirm.BSSTATUS = OrderConfirmStatus.Confirm.ToString();
|
|
|
|
|
bookingDB.SaveChanges();
|
|
|
|
|
|
|
|
|
|
if (Confirms.Where(o => o.BSSTATUS == OrderConfirmStatus.Confirm.ToString()).Count() == Confirms.Count())
|
|
|
|
|
{
|
|
|
|
|
OP_STATUS_LOG confirmlog = new OP_STATUS_LOG();
|
|
|
|
|
confirmlog.GID = System.Guid.NewGuid().ToString();
|
|
|
|
|
confirmlog.RELATIVE_ID = confirm.ORDNO;
|
|
|
|
|
confirmlog.STATUS = OrderLogStatus.ConfirmConfirm.ToString();
|
|
|
|
|
confirmlog.OP_TIME = System.DateTime.Now;
|
|
|
|
|
confirmlog.OP_USER = CORPNAME;
|
|
|
|
|
bookingDB.StatusLogs.Add(confirmlog);
|
|
|
|
|
|
|
|
|
|
model.SISTATUS = OrderConfirmStatus.Confirm.ToString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
bookingDB.SaveChanges();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch(Exception e) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.Success = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 订舱 邮件
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ORDNO ,TYPE类型(订舱确认/驳回订舱)
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ORDER"></param>
|
|
|
|
|
/// <param name="TYPE"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static DBResult SendMail_Order(string ORDNO, string TYPE, string REASON, string EMAIL, string USERID,string COMPANYNAME,MsOpSeae headData=null)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
DBResult result = new DBResult(true, "", null);
|
|
|
|
|
var bookingDB = new BookingDB();
|
|
|
|
|
var Order = bookingDB.Orders.FirstOrDefault(o => o.ORDNO == ORDNO);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var mailtopic = TYPE + ":" + Order.ORDERNO+"|"+ Order.CARRIER+"|ETD:"+Order.ETD+"|"+Order.CNTRTOTAL+"|"+ Order.PORTDISCHARGE;
|
|
|
|
|
//var userlist = MsBaseInfoDAL.MsBaseInfoDAL.GetUserBaseList("USERID='" + userid + "'");
|
|
|
|
|
//var tel = "";
|
|
|
|
|
//var email = "";
|
|
|
|
|
var SENDEREMAIL = "";
|
|
|
|
|
var qq = "";
|
|
|
|
|
|
|
|
|
|
var p = BasicDataRefDAL.GetPhoneWithUserId(USERID, out SENDEREMAIL, out qq);
|
|
|
|
|
|
|
|
|
|
var mailbody = "订舱公司:" + COMPANYNAME + "</br>"
|
|
|
|
|
+ "订舱编号:" + Order.ORDERNO + "</br>"
|
|
|
|
|
+ "ETD:" + Order.ETD + "</br>"
|
|
|
|
|
+ "船公司:" + Order.CARRIER + "</br>"
|
|
|
|
|
+ "箱型箱量:" + Order.CNTRTOTAL + "</br>"
|
|
|
|
|
+ "卸货港:" + Order.PORTDISCHARGE + "</br>";
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(REASON))
|
|
|
|
|
mailbody += "" + REASON + "</br>";
|
|
|
|
|
|
|
|
|
|
if (headData != null) {
|
|
|
|
|
mailbody += getmailinfo(headData.OP,headData.SERVICE,headData.SALE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mailbody += "发送邮箱:" + SENDEREMAIL;
|
|
|
|
|
|
|
|
|
|
mailbody+= "</br>" + "</br>" + "</br>" + "<p style=\"color:blue\">本邮件为 " + COMPANYNAME + " 工作平台自动发送,请勿回复</p>";
|
|
|
|
|
//string toNames = "frank,lee";
|
|
|
|
|
|
|
|
|
|
var MAILTONAME = "dongshengcangdan@h8j.top";//"admin@dongshengsoft.com";
|
|
|
|
|
var PARAMVALUE = MsSysParamSetDAL.GetData("PARAMNAME='MAILTONAME'");
|
|
|
|
|
if (PARAMVALUE.PARAMVALUE != "") MAILTONAME = PARAMVALUE.PARAMVALUE;
|
|
|
|
|
var MAILTOPASSWORD = "A1B2C3ds040201";//"ds!@#)(*";
|
|
|
|
|
PARAMVALUE = MsSysParamSetDAL.GetData("PARAMNAME='MAILTOPASSWORD'");
|
|
|
|
|
if (PARAMVALUE.PARAMVALUE != "") MAILTOPASSWORD = PARAMVALUE.PARAMVALUE;
|
|
|
|
|
var MAILTOSERVER = "smtpdm.aliyun.com";// "smtpcom.263xmail.com";
|
|
|
|
|
PARAMVALUE = MsSysParamSetDAL.GetData("PARAMNAME='MAILTOSERVER'");
|
|
|
|
|
if (PARAMVALUE.PARAMVALUE != "") MAILTOSERVER = PARAMVALUE.PARAMVALUE;
|
|
|
|
|
var MAILTOPORT = "80";// "465";
|
|
|
|
|
PARAMVALUE = MsSysParamSetDAL.GetData("PARAMNAME='MAILTOPORT'");
|
|
|
|
|
if (PARAMVALUE.PARAMVALUE != "") MAILTOPORT = PARAMVALUE.PARAMVALUE;
|
|
|
|
|
var MAILISSSL = false;
|
|
|
|
|
PARAMVALUE = MsSysParamSetDAL.GetData("PARAMNAME='MAILISSSL'");
|
|
|
|
|
if (PARAMVALUE.PARAMVALUE == "1") MAILISSSL = true;
|
|
|
|
|
|
|
|
|
|
SendEmail se = new SendEmail(EMAIL, MAILTONAME, "", "", mailtopic, mailbody, true);
|
|
|
|
|
// SendEmail se = new SendEmail("dev001@dongshengsoft.com", "admin@dongshengsoft.com", "", "", mailtopic, mailbody, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
se.SetSmtp_thread(MAILTONAME, MAILTOPASSWORD, MAILTOSERVER, Convert.ToInt32(MAILTOPORT), MAILISSSL, System.Net.Mail.MailPriority.Normal);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
se.SetSmtp_thread(MAILTONAME, MAILTOPASSWORD, MAILTOSERVER, Convert.ToInt32(MAILTOPORT), MAILISSSL, System.Net.Mail.MailPriority.Normal);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
result.Success = true;
|
|
|
|
|
result.Message = "";
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static DBResult SendMail_SI(string SINO, string TYPE, string REASON,MsOpSeae headData, string EMAIL, string USERID, string COMPANYNAME)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
DBResult result = new DBResult(true, "", null);
|
|
|
|
|
var bookingDB = new BookingDB();
|
|
|
|
|
var SI = bookingDB.Confirms.FirstOrDefault(o => o.SINO == SINO);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var mailtopic = TYPE + " MBLNO:" + SI.MBLNO+"|" + SI.CARRIER + "|ETD:" + SI.ETD + "|"+SI.CNTRTOTAL+"|" + SI.PORTDISCHARGE; ;
|
|
|
|
|
//var userlist = MsBaseInfoDAL.MsBaseInfoDAL.GetUserBaseList("USERID='" + userid + "'");
|
|
|
|
|
//var tel = "";
|
|
|
|
|
//var email = "";
|
|
|
|
|
var SENDEREMAIL = "";
|
|
|
|
|
var qq = "";
|
|
|
|
|
|
|
|
|
|
var p = BasicDataRefDAL.GetPhoneWithUserId(USERID, out SENDEREMAIL, out qq);
|
|
|
|
|
|
|
|
|
|
//if (!string.IsNullOrWhiteSpace(REASON)) {
|
|
|
|
|
// REASON = "原因:" + "</br>" + REASON;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//var mailbody = "公司:" + COMPANYNAME + "\r\n" + "MBLNO:" + SI.MBLNO + "\r\n" + "订舱编号:" + SI.ORDERNO + "\r\n" + "卸货港:" + SI.PORTDISCHARGE + "\r\n" + "ETD:" + SI.ETD + "\r\n" + "" + REASON + "\r\n" + "邮箱:" + SENDEREMAIL;
|
|
|
|
|
var mailbody = "</br>" + "MBLNO:" + SI.MBLNO + "</br>"
|
|
|
|
|
+ "订舱编号:" + SI.ORDERNO + "</br>"
|
|
|
|
|
+ "卸货港:" + SI.PORTDISCHARGE + "</br>"
|
|
|
|
|
+ "ETD:" + SI.ETD + "</br>";
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(REASON))
|
|
|
|
|
{
|
|
|
|
|
mailbody += "原因:" + "</br>" + REASON + "</br>";
|
|
|
|
|
if (headData != null)
|
|
|
|
|
{
|
|
|
|
|
mailbody += getmailinfo(headData.OP, headData.SERVICE, headData.SALE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mailbody += "" + REASON + "";
|
|
|
|
|
|
|
|
|
|
mailbody += "</br>" + "</br>" + "</br>" + "<p style=\"color:blue\">本邮件为 " + COMPANYNAME + " 工作平台自动发送,请勿回复</p>";
|
|
|
|
|
//string toNames = "frank,lee";
|
|
|
|
|
|
|
|
|
|
var MAILTONAME = "admin@dongshengsoft.com";
|
|
|
|
|
var PARAMVALUE = MsSysParamSetDAL.GetData("PARAMNAME='MAILTONAME'");
|
|
|
|
|
if (PARAMVALUE.PARAMVALUE != "") MAILTONAME = PARAMVALUE.PARAMVALUE;
|
|
|
|
|
var MAILTOPASSWORD = "ds!@#)(*";
|
|
|
|
|
PARAMVALUE = MsSysParamSetDAL.GetData("PARAMNAME='MAILTOPASSWORD'");
|
|
|
|
|
if (PARAMVALUE.PARAMVALUE != "") MAILTOPASSWORD = PARAMVALUE.PARAMVALUE;
|
|
|
|
|
var MAILTOSERVER = "smtpcom.263xmail.com";
|
|
|
|
|
PARAMVALUE = MsSysParamSetDAL.GetData("PARAMNAME='MAILTOSERVER'");
|
|
|
|
|
if (PARAMVALUE.PARAMVALUE != "") MAILTOSERVER = PARAMVALUE.PARAMVALUE;
|
|
|
|
|
var MAILTOPORT = "465";
|
|
|
|
|
PARAMVALUE = MsSysParamSetDAL.GetData("PARAMNAME='MAILTOPORT'");
|
|
|
|
|
if (PARAMVALUE.PARAMVALUE != "") MAILTOPORT = PARAMVALUE.PARAMVALUE;
|
|
|
|
|
var MAILISSSL = false;
|
|
|
|
|
PARAMVALUE = MsSysParamSetDAL.GetData("PARAMNAME='MAILISSSL'");
|
|
|
|
|
if (PARAMVALUE.PARAMVALUE == "1") MAILISSSL = true;
|
|
|
|
|
|
|
|
|
|
SendEmail se = new SendEmail(EMAIL, MAILTONAME, "", "", mailtopic, mailbody, true);
|
|
|
|
|
// SendEmail se = new SendEmail("dev001@dongshengsoft.com", "admin@dongshengsoft.com", "", "", mailtopic, mailbody, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
se.SetSmtp_thread(MAILTONAME, MAILTOPASSWORD, MAILTOSERVER, Convert.ToInt32(MAILTOPORT), MAILISSSL, System.Net.Mail.MailPriority.Normal);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
se.SetSmtp_thread(MAILTONAME, MAILTOPASSWORD, MAILTOSERVER, Convert.ToInt32(MAILTOPORT), MAILISSSL, System.Net.Mail.MailPriority.Normal);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
result.Success = true;
|
|
|
|
|
result.Message = "";
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
///
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="opname">操作</param>
|
|
|
|
|
/// <param name="servicename">客服</param>
|
|
|
|
|
/// <param name="salename">销售</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private static string getmailinfo(string opname,string servicename,string salename)
|
|
|
|
|
{
|
|
|
|
|
var qq = "";
|
|
|
|
|
|
|
|
|
|
var result = "";
|
|
|
|
|
|
|
|
|
|
if(!string.IsNullOrWhiteSpace(opname))
|
|
|
|
|
result += "操作:" + getmailinfo(opname);
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(servicename))
|
|
|
|
|
result += "客服:" + getmailinfo(servicename);
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(salename))
|
|
|
|
|
result += "销售:" + getmailinfo(salename);
|
|
|
|
|
|
|
|
|
|
return result = "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static string getmailinfo(string showname) {
|
|
|
|
|
var qq = "";
|
|
|
|
|
|
|
|
|
|
var result = "";
|
|
|
|
|
|
|
|
|
|
var name = showname;
|
|
|
|
|
var mail = "";
|
|
|
|
|
var tel = BasicDataRefDAL.GetPhoneWithUserId(name, out mail, out qq);
|
|
|
|
|
|
|
|
|
|
return name + "< >" + tel + "< >" + mail+ "</br>";
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|