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.

1604 lines
67 KiB
C#

10 months ago
using System;
using System.Linq;
using System.Web.Mvc;
using DSWeb.TruckMng.Comm.Cookie;
using DSWeb.TruckMng.Helper;
using DSWeb.TruckMng.Helper.Repository;
using DSWeb.MvcShipping.Models.MsOpSeae;
using DSWeb.MvcShipping.Models.MsOpSeai;
using DSWeb.Areas.MvcShipping.DAL.BookingConfirm;
using DSWeb.MvcShipping.Models.BookingConfirm;
using HcUtility.Core;
using System.Collections.Generic;
using HcUtility.Comm;
using DSWeb.MvcShipping.DAL.MsSysBillNoSet;
using DSWeb.Dispatch.DAL;
using DSWeb.MvcShipping.Models.MsSeaeOrder;
using System.Data.Entity;
using Microsoft.Practices.EnterpriseLibrary.Data;
using DSWeb.Areas.CommMng.DAL;
using DSWeb.MvcShipping.DAL.MsOpSeaeDAL;
using DSWeb.MvcShipping.DAL.MsSysParamSet;
using DSWeb.MvcShipping.DAL.MsBaseInfoDAL;
using MsOpSeaeDAL = DSWeb.MvcShipping.DAL.MsOpSeaeDAL.MsOpSeaeDAL;
using DSWeb.MvcShipping.DAL.MsInfoClient;
using DSWeb.SoftMng.DAL.SoftSysTable;
using DSWeb.EntityDA;
using DSWeb.Areas.MvcShipping.DAL;
using System.Text;
using DSWeb.MvcShipping.Models.MsOpSeaeBill;
using DSWeb.MvcShipping.DAL.MsOpSeaeEdiPortDAL;
using BookingWeb.DB;
using BookingWeb.DB.Model;
using DSWeb.MvcShipping.DAL.DsSendmail;
using DSWeb.MvcShipping.DAL.MsChFeeYsAutoDui;
using DSWeb.Areas.SysMng.DAL.SysUser;
using DSWeb.Common.DB;
using System.Web.UI.WebControls;
//using DSWeb.Areas.Dispatch.DB;
namespace DSWeb.MvcShipping.Controllers
{
public class BookingConfirmController : Controller
{
//
// GET:
public ActionResult Index ( )
{
return View();
}
//
public ActionResult Edit()
{
return View();
}
public ActionResult Index_SI()
{
return View();
}
//
public ActionResult Edit_SI()
{
return View();
}
//
public ActionResult OpCtnDetailEdit()
{
return View();
}
#region 订舱 订舱审核
/// <summary>
/// 从订舱平台获取向本公司订舱的所有订舱信息默认条件业务状态BSSTATUS不为create
/// </summary>
/// <param name="condition"></param>
/// <returns></returns>
public ContentResult GetBookingList (int start, int limit, string BOOKING_COMPANYID, string condition,string sort="")
{
//var dataList = MsChDuiDAL.GetDataList(start, limit, condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), CookieConfig.GetCookie_OrgCode(Request), sort);
//int count = MsChDuiDAL.getTotalCount(condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), CookieConfig.GetCookie_OrgCode(Request));
var dataList = BookingConfirmDAL.GetBookingList( condition, Convert.ToString(Session["USERID"]), sort);
var list_2 = ModelObjectBill.getDicList(ModelObjectConvert<BookingConfirmmb>.ToModelObjectList(dataList));
var list_3 = list_2.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count(), data = list_3.ToList()});
return new ContentResult() { Content = json };
}
public ContentResult GetBookingData(string BOOKING_COMPANYID, string condition, string sort = "")
{
//var dataList = MsChDuiDAL.GetDataList(start, limit, condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), CookieConfig.GetCookie_OrgCode(Request), sort);
//int count = MsChDuiDAL.getTotalCount(condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), CookieConfig.GetCookie_OrgCode(Request));
var dataList = BookingConfirmDAL.GetBookingList(condition, Convert.ToString(Session["USERID"]), sort);
var list_2 = ModelObjectBill.getDicList(ModelObjectConvert<BookingConfirmmb>.ToModelObjectList(dataList));
if (list_2.Count > 0)
{
var resultdata = list_2[0];
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = 0, data = resultdata });
return new ContentResult() { Content = json };
}
else {
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = 0, data = "" });
return new ContentResult() { Content = json };
}
}
private BookingConfirmmb GetBookingData(string condition, string sort = "")
{
var dataList = BookingConfirmDAL.GetBookingList(condition, Convert.ToString(Session["USERID"]), sort);
if (dataList.Count > 0)
{
var resultdata = dataList[0];
return resultdata;
}
else {
return new BookingConfirmmb();
}
}
/**************************************/
/* 审核订舱 */
/**************************************/
public ContentResult AuditWebOrderForm(string data, string data2, string body, string accdate, string op, string custservice, string sale)
{
DBResult result = new DBResult();
var BSNO = "";
var modb = new ModelObjectRepository();
Microsoft.Practices.EnterpriseLibrary.Data.Database db = DatabaseFactory.CreateDatabase();
var head = new BookingConfirmmb();
var headDataStr = data.Replace("}", ",") + data2.Replace("{", "");
head.SetValue(db, headDataStr);
var candoresult = BookingConfirmDAL.Order_CanConfirm(head.GetValue("BSNO"), OrderStatus.Confirm.ToString());
if (candoresult.Success == false) {
var jsonRespose = new JsonResponse();
jsonRespose.SetDBResult(candoresult);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var _op = SysUserDAL.GetData(" SHOWNAME='" + op + "'");
var OrderData = head;//JsonConvert.Deserialize<BookingConfirmmb>(data.Replace("}", ",") + data2.Replace("{", ""));
var basebody = new Booking_Ctnmb();
basebody.GetTableField(db);
var bodyList = new List<Booking_Ctnmb>();
if (body != "")
{
var savedl = JsonConvert.Deserialize<List<Dictionary<string, string>>>(body);
foreach (var sdl in savedl)
{
var _body = new Booking_Ctnmb();
basebody.Copy(_body);
_body.SetValue(sdl);
bodyList.Add(_body);
}
}
//var bodyList = JsonConvert.Deserialize<List<Booking_Ctnmb>>(body);
var headData = new MsOpSeae();
//var headData2 = new MsOpSeai();
var headData2 = new MsOpSeai();
headData.CORPID = Convert.ToString(Session["COMPANYID"]);
headData.INPUTBY = Convert.ToString(Session["SHOWNAME"]);
headData.BSDATE = DateTime.Now;
headData.BSSTATUS = false;
headData.FEESTATUS = false;
headData.DbOperationType = DbOperationType.DbotIns;
BSNO= "topseae" + Guid.NewGuid().ToString();
headData.BSNO = BSNO;//获得新的海运出口业务编号;
headData.MBLNO = OrderData.GetValue("MBLNO");
headData.HBLNO = OrderData.GetValue("HBLNO");
headData.CUSTOMERNAME = OrderData.GetValue("CUSTOMERNAME");
headData.ORDERNO = OrderData.GetValue("ORDERNO");
headData.ORDERTYPE = "网上订舱";
headData.SHIPPER = OrderData.GetValue("SHIPPER");
headData.CONSIGNEE = OrderData.GetValue("CONSIGNEE");
headData.NOTIFYPARTY = OrderData.GetValue("NOTIFYPARTY");
headData.VESSEL = OrderData.GetValue("VESSEL");
headData.VOYNO = OrderData.GetValue("VOYNO");
headData.ETD = OrderData.GetValue("ETD");
headData.PORTLOADID = OrderData.GetValue("PORTLOADID");
headData.PORTLOAD = OrderData.GetValue("PORTLOAD");
headData.PORTDISCHARGEID = OrderData.GetValue("PORTDISCHARGEID");
headData.PORTDISCHARGE = OrderData.GetValue("PORTDISCHARGE");
headData.PLACERECEIPT = OrderData.GetValue("PLACERECEIPT");
headData.PLACERECEIPTID = OrderData.GetValue("PLACERECEIPTID");
headData.PLACEDELIVERYID = OrderData.GetValue("PLACEDELIVERYID");
headData.PLACEDELIVERY = OrderData.GetValue("PLACEDELIVERY");
headData.DESTINATIONID = OrderData.GetValue("DESTINATIONID");
headData.DESTINATION = OrderData.GetValue("DESTINATION");
headData.NOBILL = OrderData.GetValue("NOBILL");
headData.ISSUETYPE = OrderData.GetValue("ISSUETYPE");
headData.ISSUEDATE = OrderData.GetValue("ISSUEDATE");
headData.ISSUEPLACE = OrderData.GetValue("ISSUEPLACE");
headData.ISSUEPLACEID = OrderData.GetValue("ISSUEPLACEID");
headData.BLFRT = OrderData.GetValue("BLFRT");
headData.PREPARDAT = OrderData.GetValue("PREPARDAT");
headData.PAYABLEAT = OrderData.GetValue("PAYABLEAT");
headData.COPYNOBILL = OrderData.GetValue("COPYNOBILL");
headData.SERVICE = OrderData.GetValue("SERVICE");
headData.MARKS = OrderData.GetValue("MARKS");
headData.NOPKGS = OrderData.GetValue("NOPKGS");
headData.DESCRIPTION = OrderData.GetValue("DESCRIPTION");
headData.GOODSNAME = OrderData.GetValue("GOODSNAME");
headData.GROSSWEIGHT = OrderData.GetValue("GROSSWEIGHT");
headData.MEASUREMENT = OrderData.GetValue("");
headData.PKGS = OrderData.GetValue("PKGS");
headData.KINDPKGS = OrderData.GetValue("KINDPKGS");
headData.KGS = OrderData.GetValue("KGS");
headData.CBM = OrderData.GetValue("CBM");
headData.TOTALNO = OrderData.GetValue("TOTALNO");
headData.CNTRTOTAL = OrderData.GetValue("CNTRTOTAL");
headData.CARRIER = OrderData.GetValue("CARRIER");
headData.CARGOID = OrderData.GetValue("CARGOID");
headData.HSCODE = OrderData.GetValue("HSCODE");
headData.DCLASS = OrderData.GetValue("DCLASS");
headData.DPAGE = OrderData.GetValue("DPAGE");
headData.DUNNO = OrderData.GetValue("DUNNO");
headData.DLABEL = OrderData.GetValue("DLABEL");
headData.LINKMAN = OrderData.GetValue("LINKMAN");
headData.REEFERF = OrderData.GetValue("REEFERF");
headData.TEMPID = OrderData.GetValue("TEMPID");
headData.TEMPSET = OrderData.GetValue("TEMPSET");
headData.TEMPMAX = OrderData.GetValue("TEMPMAX");
headData.TEMPMIN = OrderData.GetValue("TEMPMIN");
//headData.CUSTOMSNUM = OrderData.GetValue("CUSTOMSNUM");
headData.REMARK = OrderData.GetValue("REMARK");//备注
headData.ISFUMIGATION = OrderData.GetBoolen("ISFUMIGATION");//熏蒸
headData.ISSTORAGE = OrderData.GetBoolen("ISSTORAGE");//仓储
headData.ISLAND = OrderData.GetBoolen("ISLAND");//陆运
headData.ISCUSTOMS = OrderData.GetBoolen("ISCUSTOMS");//报关
headData.ISINSPECTION = OrderData.GetBoolen("ISINSPECTION");//报检
headData.ISBOOKING = OrderData.GetBoolen("ISBOOKING");//订舱
headData.ISAGENT = OrderData.GetBoolen("ISAGENT");//使用代理
headData.ISHBLNO = OrderData.GetBoolen("ISHBLNO");//分单签单
headData.SERVICE9 = OrderData.GetBoolen("SERVICE9");//服务项目9
headData.SERVICE10 = OrderData.GetBoolen("SERVICE10");//服务项目10
headData.STLNAME = OrderData.GetValue("STLNAME");//结算方式
headData.STLDATE = OrderData.GetValue("STLDATE");//结算时间
//headData.SALE = OrderData.SALE");//揽货人
headData.PACKINGTYPE = OrderData.GetValue("PACKINGTYPE");//装箱类型
headData.BLTYPE = "整箱";//装运方式
headData.OP = op;//T_ALL_DA.GetShowName(op); ////操作员
headData.CUSTSERVICE = custservice;//T_ALL_DA.GetShowName(custservice);//客服员
headData.SALE = sale;
//headData.DOC = OrderData.DOC");//单证
headData.CONTRACTNO = OrderData.GetValue("CONTRACTNO");
headData.EDIREMARK = OrderData.GetValue("EDIREMARK");
headData.ISCONTAINERSOC = OrderData.GetBoolen("ISCONTAINERSOC");
headData.BSSOURCEDETAIL= OrderData.GetValue("TRANSTYPE");
if (headData.MASTERNO == null || headData.MASTERNO == "") { headData.MASTERNO = headData.BSNO; }
if (headData.ETA == "") headData.ETA = null;
if (headData.ETD == "") headData.ETD = null;
if (headData.STLDATE == "") headData.STLDATE = null;
if (headData.ISSUEDATE == "") headData.ISSUEDATE = null;
if (headData.CLOSINGDATE == "") headData.CLOSINGDATE = null;
var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='海运出口' AND RULEBLNO='委托编号'", Convert.ToString(Session["COMPANYID"]));
if (billnoset.BILLTYPE != "")
headData.CUSTNO = MsSysBillNoSetDAL.GetBillNo(billnoset, headData.ETD.ToString().Trim(), accdate);
else
{
var jsonRespose = new JsonResponse
{
Success = false,
Message = "请先设定当前公司的海运出口编码规则",
Data = null
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
headData.ACCDATE = accdate;
//var modb = new ModelObjectDB();
result = modb.Save(headData);
BSNO = headData.BSNO;
//DoingOrder.Del(head.GetValue("ORDERNO"));
if (result.Success == true && !string.IsNullOrEmpty(body))
{
//引入箱明细
List<MsOpSeaeDetail> ctnlist = new List<MsOpSeaeDetail>();
foreach (var item in bodyList)
{
var ctn = new MsOpSeaeDetail();
ctn.GID = System.Guid.NewGuid().ToString();
ctn.CTN_ID = ctn.GID;
ctn.BSNO = "*";//用来令其执行insert操作
ctn.SIZE = item.GetValue("SIZE");
ctn.CTN = item.GetValue("CTN");
ctn.CTNNUM = item.GetInt32("CTNNUM");
ctn.TEU = item.GetInt32("TEU");
ctn.PKGS = item.GetInt32("PKGS");
ctn.KGS = item.GetInt32("KGS");
ctn.CBM = item.GetInt32("CBM");
ctn.REMARK = item.GetValue("REMARK");
ctn.CTNALL = item.GetValue("CTNALL");
ctnlist.Add(ctn);
}
result = DSWeb.MvcShipping.DAL.MsOpSeaeDAL.MsOpSeaeDAL.SaveDetail(BSNO, ctnlist, CookieConfig.GetCookie_UserId(Request), true);
}
if (result.Success == true)
{
//Audit_SaveBack(OrderData, "Confirm", headData.BSNO);
BookingConfirmDAL.BookingStatus_Order(OrderData.GetValue("ORDNO"), headData.BSNO, OrderStatus.Confirm.ToString(), Session["COMPANYNAME"].ToString(),_op.EMAIL1);
var email = head.GetValue("OPERATOREMAIL");
var _r = BookingConfirmDAL.SendMail_Order(head.GetValue("ORDNO"), "接受订舱", "", email, Session["USERID"].ToString(), Session["COMPANYNAME"].ToString(), headData);
var datareturn = GetBookingData(" ORDNO='"+ OrderData.GetValue("ORDNO") + "'","").ExtendDic;
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = datareturn
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
else
{
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = ""
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
public ContentResult AuditWebOrderBack(string data, string data2,string orreason,string email)
{
Microsoft.Practices.EnterpriseLibrary.Data.Database db = DatabaseFactory.CreateDatabase();
var head = new BookingConfirmmb();
var headDataStr = data.Replace("}", ",") + data2.Replace("{", "");
head.SetValue(db, headDataStr);
var candoresult = BookingConfirmDAL.Order_CanConfirm(head.GetValue("BSNO"), OrderStatus.Back.ToString());
if (candoresult.Success == false)
{
var jsonRespose1 = new JsonResponse();
jsonRespose1.SetDBResult(candoresult);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose1) };
}
BookingConfirmDAL.BookingStatus_Order(head.GetValue("ORDNO"),head.GetValue("BSNO"), OrderStatus.Back.ToString(),Session["COMPANYNAME"].ToString());
//20220923 删除op_seae当中 ORDERNO=这条的业务
var opseae = DSWeb.MvcShipping.DAL.MsOpSeaeDAL.MsOpSeaeDAL.GetData(" ORDERNO='" + head.GetValue("ORDERNO") + "' ");
if (opseae != null && opseae.ORDERNO == head.GetValue("ORDERNO"))
{
//说明当前已有该订舱编号的业务 看该业务是否有费用 如果有 返回错误制止驳回
var jsonRespose2 = new JsonResponse
{
Success = false,
Message = $"海运出口中已存在订舱编号为【{opseae.ORDERNO}】的业务。",
Data = null
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) };
//var cdc = new CommonDataContext();
//var chfeelist = cdc.ch_fee.Where(x => x.BSNO == opseae.BSNO).ToList();
//if (chfeelist != null && chfeelist.Count > 0)
//{
// var jsonRespose2 = new JsonResponse
// {
// Success = false,
// Message = $"海运出口中已存在订舱编号为【{opseae.ORDERNO}】的业务。",
// Data = null
// };
// return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) };
//}
//else {
// //var str = string.Format(" delete from OP_SEAE where BSNO='{0}' delete from op_ctn where BSNO='{0}'", opseae. BSNO);
// //BasicDataRefDAL.ExecSql_DB(str);
// var jsonRespose2 = new JsonResponse
// {
// Success = false,
// Message = $"海运出口中已存在订舱编号为【{opseae.ORDERNO}】的业务。",
// Data = null
// };
// return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) };
//}
}
//Audit_SaveBack(head, "Back","", orreason);
//DoingOrder.Del(head.GetValue("ORDERNO"));
var datareturn = GetBookingData(" ORDNO='" + head.GetValue("ORDNO") + "'", "").ExtendDic;
var _r = BookingConfirmDAL.SendMail_Order(head.GetValue("ORDNO"), "驳回订舱", orreason, email,Session["USERID"].ToString(),Session["COMPANYNAME"].ToString());
var jsonRespose = new JsonResponse
{
Success = true,
Message = "驳回成功",
Data = datareturn
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
/// <summary>
/// 后处理 已不再使用
/// </summary>
/// <param name="ORDNO"></param>
private void Audit_SaveBack(BookingConfirmmb Bookinghead, string audittype, string BSNO="",string ORREASON="")
{
var str = string.Format(" update OP_SEAE_ORDER set BSNO='{1}',BSSTATUS='{2}' where ORDNO='{0}' ", Bookinghead.GetValue("ORDNO"),BSNO, audittype);
BasicDataRefDAL.ExecSql_DB(str, "BookingDB");
}
public class DoingOrder
{
private static List<string> ORDERNOList { get; set; }
private static void makesureHave()
{
if (ORDERNOList == null)
ORDERNOList = new List<string>();
}
public static bool IsDoing(string ORDERNO)
{
makesureHave();
return ORDERNOList.Exists(x => x == ORDERNO);
}
public static void Add(string ORDERNO)
{
makesureHave();
ORDERNOList.Add(ORDERNO);
}
public static void Del(string ORDERNO)
{
makesureHave();
ORDERNOList.RemoveAll(x => x == ORDERNO);
}
}
#endregion
#region 提单确认
/// <summary>
/// 从订舱平台获取向本公司订舱的所有订舱信息默认条件业务状态BSSTATUS不为create
/// </summary>
/// <param name="condition"></param>
/// <returns></returns>
public ContentResult GetBooking_SIList(int start, int limit, string BOOKING_COMPANYID, string condition, string sort = "")
{
//var dataList = MsChDuiDAL.GetDataList(start, limit, condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), CookieConfig.GetCookie_OrgCode(Request), sort);
//int count = MsChDuiDAL.getTotalCount(condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), CookieConfig.GetCookie_OrgCode(Request));
var dataList = BookingConfirmDAL.GetBooking_SIList(condition, Convert.ToString(Session["USERID"]), sort);
var list_2 = ModelObjectBill.getDicList(ModelObjectConvert<Booking_OP_SEAE_SImb>.ToModelObjectList(dataList));
var list_3 = list_2.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count(), data = list_3.ToList() });
return new ContentResult() { Content = json };
}
public ContentResult GetBooking_SIData(string BOOKING_COMPANYID, string condition, string sort = "") //, string SIFieldList
{
//var dataList = MsChDuiDAL.GetDataList(start, limit, condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), CookieConfig.GetCookie_OrgCode(Request), sort);
//int count = MsChDuiDAL.getTotalCount(condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), CookieConfig.GetCookie_OrgCode(Request));
var dataList = BookingConfirmDAL.GetBooking_SIList(condition, Convert.ToString(Session["USERID"]), sort);
var list_2 = ModelObjectBill.getDicList(ModelObjectConvert<Booking_OP_SEAE_SImb>.ToModelObjectList(dataList));
Dictionary<string, string> resultdata = list_2[0];
Dictionary<string, string> t_dic = new Dictionary<string, string>(resultdata);
//var HeadSIFieldList = JsonConvert.Deserialize<List<DiffFieldmb>>(SIFieldList);
//给前台需要打勾的复选框赋值
foreach (var item in t_dic)
{
resultdata.Add("IS" + item.Key, "1");
}
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count(), data = resultdata });
return new ContentResult() { Content = json };
}
#region 保存
public ContentResult SaveSI(string SINO ,string data1,string data2,string SIFieldList, string CtnFieldList, string CtnDetailFieldList,string DelMore="false")
{
//远程SI的SINO需要将SI信息同步至本地的字段名列表需要将SI的CTN信息同步至本地的字段名列表需要将SI的CTNDetail信息同步至本地的字段名列表
//是否需要
var HeadSIFieldList = JsonConvert.Deserialize<List<DiffFieldmb>>(SIFieldList);
var CtnSIFieldList = JsonConvert.Deserialize<List<DiffFieldmb>>(CtnFieldList);
var CtnDetailSIFieldList = JsonConvert.Deserialize<List<DiffFieldmb>>(CtnDetailFieldList);
var DiffData = JsonConvert.Deserialize<DiffCheckmb>(data1.Replace("}", ",") + data2.Replace("{", ""));
var dataList_1 = BookingConfirmDAL.GetBooking_SIList(" SINO='"+ SINO + "'", Convert.ToString(Session["USERID"]), "");
var list_1 = ModelObjectBill.getDicList(ModelObjectConvert<Booking_OP_SEAE_SImb>.ToModelObjectList(dataList_1));
var SIData = list_1[0];//SI 提单确认数据
var result = new DBResult();
var jsonRespose = new JsonResponse
{
Success = false,
Message = "",
Data = ""
};
var cando = BookingConfirmDAL.SI_CanConfirm(SIData["SINO"], OrderConfirmStatus.Confirm.ToString());
if (!cando.Success)
{
jsonRespose.SetDBResult(cando);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var dataList_2 = BookingConfirmDAL.GetSICtnList(" ORDNO='" + SINO + "'", "");
//SI CTN数据
var SICtnList = ModelObjectBill.getDicList(ModelObjectConvert<Booking_SICtnmb>.ToModelObjectList(dataList_2));
var dataList_3 = BookingConfirmDAL.GetSICtnDetailList(" CTN_ID in(select CTN_ID from OP_SI_CTN where ORDNO='" + SINO + "')", Convert.ToString(Session["USERID"]), "");
//SI 多品名数据
var SICtnDetailList = ModelObjectBill.getDicList(ModelObjectConvert<Booking_SICtnDetailmb>.ToModelObjectList(dataList_3));
var BillData = new MsOpSeaeBill();
var OpSeaeData = new MsOpSeae();
var OpSeaeAms = new MsOpSeaeAms();
var CtnCondition = "";
var CtnDetailCondition = "";
var DelCtnList = new List<MsOpSeaeDetail>();//需要删除的多余ctn信息
var DelCtnDetailList = new List<MsOpCtnDetail>();//需要删除的多余ctnDetail信息
OpSeaeData = MsOpSeaeDAL.GetData(" BSNO = '" + SIData["ORDER_BSNO"] + "'");
OpSeaeAms = MsOpSeaeEdiPortDAL.GetAmsData(" BSNO = '" + SIData["ORDER_BSNO"] + "'");
if (OpSeaeAms.BSNO == "")
{
OpSeaeAms.AMSNO = System.Guid.NewGuid().ToString();
OpSeaeAms.BSNO = SIData["ORDER_BSNO"];
OpSeaeAms.DbOperationType = DbOperationType.DbotIns;
}
//本地 OPSEAE数据/提单信息数据
if (SIData["ISMULTI"] == "true")
{
//使用提单信息 提单信息下的集装箱信息 集装箱明细附着于OP_SEAE的通过CNTRNO箱号关联
BillData = MsOpSeaeDAL.GetBillData(" MBLNO = '" + SIData["MBLNO"] + "' ");
if (BillData.MBLNO == "") {
//代表需要新建一条提单信息
BillData.MBLNO = SIData["MBLNO"];
BillData.BSNO = SIData["ORDER_BSNO"];
BillData.AS_ID = System.Guid.NewGuid().ToString();
BillData.DbOperationType = DbOperationType.DbotIns;
}
CtnCondition = " BSNO = '" + BillData.AS_ID + "' ";
CtnDetailCondition = "CTN_ID in(select CTN_ID from op_ctn where " + CtnCondition + ") ";
}
else {
CtnCondition = " BSNO = '" + OpSeaeData.BSNO + "' ";
CtnDetailCondition = "CTN_ID in(select CTN_ID from op_ctn where " + CtnCondition + ") ";
}
var CtnList = MsOpSeaeDAL.GetBodyList(CtnCondition);
//var HeadCtnList = MsOpSeaeDAL.GetBodyList("CTN_ID in(select CTN_ID from op_ctn where BSNO = '" + OpSeaeData.BSNO + "') ");
//当前正在同步的业务的多品名信息(可能是主业务的,也可能是一条提单信息下的)
var CtnDetailList = MsOpSeaeDAL.GetOpCtnDetailList(CtnDetailCondition);
var ChangeCtnDetailList = new List<MsOpCtnDetail>();
var ctnParentIDValue = "";
//1: 遍历 字段名 列表 将相应值赋给对象里的相应对象
if (SIData["ISMULTI"] == "true")
{
foreach (var item in HeadSIFieldList)
{
if (!DiffData.getChecked(item.FieldName)) continue;
if (item.FieldName == "PKGS") {
BillData.SetPropertyValue("PKGS",Convert.ToInt32(DiffFieldmb.GetValue(HeadSIFieldList, SIData, "PKGS")));
}
else
if (item.FieldName == "KGS")
{
BillData.SetPropertyValue("KGS", Convert.ToDecimal(DiffFieldmb.GetValue(HeadSIFieldList, SIData, "KGS")));
}
else
if (item.FieldName == "CBM")
{
BillData.SetPropertyValue("CBM", Convert.ToDecimal(DiffFieldmb.GetValue(HeadSIFieldList, SIData, "CBM")));
}
else
BillData.SetPropertyValue(item.FieldName, DiffFieldmb.GetValue(HeadSIFieldList, SIData, item.FieldName));
}
//20191218 将一些字段用主业务信息填充
var head = MsOpSeaeDAL.GetData("BSNO='"+ SIData["ORDER_BSNO"] + "'");
BillData.VESSEL = head.VESSEL;
BillData.VOYNO = head.VOYNO;
BillData.YARD = head.YARD;
BillData.ETD = head.ETD;
BillData.CLOSINGDATE = head.CLOSINGDATE;
//BillData.CLOSEDOCDATE = head.CLOSEDOCDATE;
//BillData.VESSELID = head.VESSELID;
BillData.CARRIER = head.CARRIER;
//然后将一些op_seae_billmanage当中不存在 所以需要保存到主表的字段数据加入主业务表
var MainList = BookingConfirmDAL.GetMoreField(HeadSIFieldList);
foreach (var item in MainList)
{
if (!DiffData.getChecked(item.FieldName)) continue;
OpSeaeData.SetPropertyValue(item.FieldName, DiffFieldmb.GetValue(HeadSIFieldList, SIData, item.FieldName));
}
//将 SIREMARK字段写入OpseaeAms对象
if (!DiffData.getChecked("SIREMARK" )) { }
else
{
OpSeaeAms.SIREMARK = DiffFieldmb.GetValue(HeadSIFieldList, SIData, "SIREMARK").ToString();
}
ctnParentIDValue = BillData.AS_ID;
}
else
{
foreach (var item in HeadSIFieldList)
{
if (!DiffData.getChecked(item.FieldName)) continue;
OpSeaeData.SetPropertyValue(item.FieldName, DiffFieldmb.GetValue(HeadSIFieldList, SIData, item.FieldName));
}
//将 SIREMARK字段写入OpseaeAms对象
OpSeaeAms.SIREMARK = DiffFieldmb.GetValue(HeadSIFieldList, SIData, "SIREMARK").ToString();
ctnParentIDValue = OpSeaeData.BSNO;
}
//2: 赋值ctn数据 依靠CNTRNO关联
var needinsert = true;
foreach (var SICtn in SICtnList)
{
needinsert = true;
foreach (var ctn in CtnList)
{
if (ctn.CNTRNO == SICtn["CNTRNO"]) {
foreach (var item in CtnSIFieldList) {
ctn.SetPropertyValue(item.FieldName, DiffFieldmb.GetValue(CtnSIFieldList, SICtn, item.FieldName));
}
needinsert = false;
continue;
}
}
if (needinsert) {
//代表这条SI数据在本地不存在 需要增加
var newCtn = new MsOpSeaeDetail();
newCtn.BSNO = "";//保持为空按插入处理;
newCtn.VGMCONNCOM = "";
newCtn.CTN_ID = System.Guid.NewGuid().ToString();
foreach (var item in CtnSIFieldList)
{
newCtn.SetPropertyValue(item.FieldName, DiffFieldmb.GetValue(CtnSIFieldList, SICtn, item.FieldName));
}
newCtn.SIZE = SICtn["CTNALL"].Substring(0, 2);
newCtn.CTN = SICtn["CTNALL"].Substring(2, 2);
newCtn.DbOperationType = DbOperationType.DbotIns;
CtnList.Add(newCtn);
}
}
//3: 赋值多品名ctnDetail数据
///循环SI内的多品名 CtnDetailList
foreach (var SICtnDetail in SICtnDetailList)
{
needinsert = true;
///本地CtnDetailList(当前进行保存的);可能是主业务的,也可能是提单列表中的一票下的
foreach (var LocalCtnDetail in CtnDetailList)
{
var _localcntrno = "";
var _localCTN_ID = "";
foreach (var LocalCtn in CtnList)
{
if (LocalCtn.CTN_ID == LocalCtnDetail.CTN_ID)
{
_localcntrno = LocalCtn.CNTRNO;
_localCTN_ID = LocalCtn.CTN_ID;
break;
}
}
var _SIcntrno = "";
foreach (var SICtn in SICtnList)
{
if (SICtn["CTN_ID"] == SICtnDetail["CTN_ID"])
{
_SIcntrno = SICtn["CNTRNO"];
break;
}
}
if (_localcntrno == _SIcntrno && LocalCtnDetail.HSCODE== SICtnDetail["HSCODE"])
{
foreach (var item in CtnDetailSIFieldList)
{
LocalCtnDetail.SetPropertyValue(item.FieldName, DiffFieldmb.GetValue(CtnDetailSIFieldList, SICtnDetail, item.FieldName));
}
needinsert = false;
LocalCtnDetail.CTN_ID = _localCTN_ID;
LocalCtnDetail.DbOperationType = DbOperationType.DbotUpd;
ChangeCtnDetailList.Add(LocalCtnDetail);
break;
}
}
if (needinsert)
{
var newCtnDetail = new MsOpCtnDetail();
//寻找这条明细的CTN_ID应该是谁
//首先找到它的父节点 SI的CTN 获得它的CNTRNO
//然后在本地CTN信息里找到这个CTN获取它的CTN_ID;这就是本地即将插入的CTNDetail的BSNO
var _localCTN_ID = "";
var _cntrno = "";
foreach (var SICtn in SICtnList) {
if (SICtn["CTN_ID"] == SICtnDetail["CTN_ID"])
{
_cntrno = SICtn["CNTRNO"];
break;
}
}
foreach (var LocalCtn in CtnList) {
if (LocalCtn.CNTRNO == _cntrno) {
_localCTN_ID = LocalCtn.CTN_ID;
}
}
foreach (var item in CtnDetailSIFieldList)
{
newCtnDetail.SetPropertyValue(item.FieldName, DiffFieldmb.GetValue(CtnDetailSIFieldList, SICtnDetail, item.FieldName));
}
newCtnDetail.GID = System.Guid.NewGuid().ToString();
newCtnDetail.CTN_ID = _localCTN_ID;
newCtnDetail.DbOperationType = DbOperationType.DbotIns;
ChangeCtnDetailList.Add(newCtnDetail);
}
}
var modb = new ModelObjectRepository();
var detailmodb = new ModelObjectDB();
OpSeaeData.NOPKGS = OpSeaeData.PKGS.ToString() + OpSeaeData.KINDPKGS.ToString();
if (SIData["ISMULTI"] == "true")
{
BillData.INPUTBY = Session["SHOWNAME"].ToString();
result = modb.SaveHead(BillData);
if (!result.Success)
{
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
result = modb.SaveHead(OpSeaeData);
if (!result.Success)
{
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
result = modb.SaveHead(OpSeaeAms);
if (!result.Success)
{
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
result = modb.SaveComm("BSNO", ctnParentIDValue
, ModelObjectConvert<MsOpSeaeDetail>.ToModelObjectList(CtnList)
,null);
if (!result.Success)
{
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
foreach (var ctndetail in ChangeCtnDetailList) {
result = detailmodb.Save(ctndetail);
if (!result.Success)
{
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
if (DelMore == "true") {
result = Do_DelMore(SICtnList,SICtnDetailList,CtnList,CtnDetailList);
if (!result.Success)
{
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
if (SIData["ISMULTI"] == "true")
{
result = Do_SetSeaeChildValue(BillData.AS_ID,"true");
if (!result.Success)
{
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
else
{
result = Do_SetSeaeChildValue(OpSeaeData.BSNO, "false");
if (!result.Success)
{
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
if (result.Success) {
//SI_SaveBack(SINO, "Confirm");
BookingConfirmDAL.BookingStatus_Confirm(SIData["SINO"], OrderConfirmStatus.Confirm.ToString(),Session["COMPANYNAME"].ToString(),Session["USERID"].ToString());
//var sidata = GetBooking_SIData(" SINO='" + SIData["SINO"] + "'", Session["USERID"].ToString());
var _r = BookingConfirmDAL.SendMail_SI(SIData["SINO"], "接收提单确认", "", OpSeaeData, SIData["OPERATORMAIL"], Session["USERID"].ToString(), Session["COMPANYNAME"].ToString());
//OpSeaeData
}
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
private static BookingDB bookingDB = new BookingDB();
public ContentResult RejectSI(string SINO,string orreason="",string email="") {
var confirm = bookingDB.Confirms.FirstOrDefault(o => o.SINO == SINO);
var jsonRespose = new JsonResponse
{
Success = false,
Message = "",
Data = ""
};
var cando = BookingConfirmDAL.SI_CanConfirm(SINO, OrderConfirmStatus.Reject.ToString());
if (!cando.Success) {
jsonRespose.SetDBResult(cando);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var result = BookingConfirmDAL.BookingStatus_Confirm(SINO, OrderConfirmStatus.Reject.ToString(), Session["COMPANYNAME"].ToString());
var _order = bookingDB.Orders.FirstOrDefault(o => o.ORDNO == confirm.ORDNO);
var OpSeaeData = MsOpSeaeDAL.GetData(" BSNO = '" + _order.BSNO + "'");
var _r = BookingConfirmDAL.SendMail_SI(SINO, "拒绝截单", orreason, OpSeaeData, email, Session["USERID"].ToString(), Session["COMPANYNAME"].ToString());
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
private void SI_SaveBack(string SINO,string audittype)
{
var str = string.Format(" update OP_SEAE_SI set BSSTATUS='{1}' where SINO='{0}' ", SINO, audittype);
BasicDataRefDAL.ExecSql_DB(str, "BookingDB");
}
/// <summary>
/// 将本地的多余ctn信息和ctndetail信息删除
/// </summary>
/// <param name="CtnList"></param>
/// <param name="CtnDetailList"></param>
/// <returns></returns>
public static ContentResult DelMore(List<Dictionary<string,string>> SICtnList, List<Dictionary<string, string>> SICtnDetailList, List<MsOpSeaeDetail> LocalCtnList, List<MsOpCtnDetail> LocalCtnDetailList) {
var jsonRespose = new JsonResponse
{
Success = false,
Message = "",
Data = ""
};
var result = Do_DelMore(SICtnList, SICtnDetailList, LocalCtnList, LocalCtnDetailList);
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
private static DBResult Do_DelMore(List<Dictionary<string, string>> SICtnList, List<Dictionary<string, string>> SICtnDetailList, List<MsOpSeaeDetail> LocalCtnList, List<MsOpCtnDetail> LocalCtnDetailList) {
var needdelete = true;
var DelCtnList = new List<MsOpSeaeDetail>();
var DelCtnDetailList = new List<MsOpCtnDetail>();
foreach (var Localctn in LocalCtnList)
{
needdelete = true;
foreach (var SICtn in SICtnList)
{
if (SICtn["CNTRNO"] == Localctn.CNTRNO)
{
needdelete = false;
break;
}
}
if (needdelete)
{
Localctn.DbOperationType = DbOperationType.DbotDel;
DelCtnList.Add(Localctn);
}
}
//foreach (var LocalctnDetail in LocalCtnDetailList)
//{
// needdelete = true;
// foreach (var SICtnDetail in SICtnDetailList)
// {
// if (SICtnDetail["CNTRNO"] == LocalctnDetail.CNTRNO)
// {
// needdelete = false;
// break;
// }
// }
// if (needdelete)
// {
// LocalctnDetail.DbOperationType = DbOperationType.DbotDel;
// DelCtnDetailList.Add(LocalctnDetail);
// }
//}
var detailmodb = new ModelObjectDB();
var result = detailmodb.Save(ModelObjectConvert<MsOpSeaeDetail>.ToModelObjectList(DelCtnList));
if (!result.Success)
{
return result;
}
else
{
//删除所有无集装箱的集装箱明细
T_ALL_DA.ExecuteSqlCommand("delete from op_ctn_detail where CTN_ID not in(select ctn_id from op_ctn)");
//result = detailmodb.Save(ModelObjectConvert<MsOpCtnDetail>.ToModelObjectList(DelCtnDetailList));
}
return result;
}
/// <summary>
/// 根据SI的ctn信息和ctndetail信息重新计算Opseae主表下的ctn信息和ctndetail信息
/// </summary>
/// <param name="CtnList">传入的OP_Seae.BSNO</param>
/// <returns></returns>
public static ContentResult SetSeaeChildValue(string BSNO,string ISMULTI = "false")
{
var jsonRespose = new JsonResponse
{
Success = false,
Message = "",
Data = ""
};
var result = Do_SetSeaeChildValue(BSNO, ISMULTI);
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
private static DBResult Do_SetSeaeChildValue(string BSNO, string ISMULTI = "false")
{
var Main_BSNO = "";
var detailmodb = new ModelObjectDB();
var result = new DBResult();
var CTNDetailList = new List<MsOpCtnDetail>();
Main_BSNO = "";
bool needinsert = true;
var Main_CTNList = new List<MsOpSeaeDetail>();
//1首先看该截单对应的是否是一条提单信息 如是
if (ISMULTI == "true")
{
var BillManage = MsOpSeaeDAL.GetBillData(" AS_ID = '" + BSNO + "' ");
Main_BSNO = BillManage.BSNO;
//查询所有主业务下的集装箱信息
Main_CTNList = MsOpSeaeDAL.GetBodyList(" BSNO='" + Main_BSNO + "' ");
//查找所有提单列表信息
var BillManageList = MsOpSeaeDAL.GetBillList(" BSNO = '" + Main_BSNO + "' ");
//所有提单列表信息下的集装箱信息
var billManage_CTNList = MsOpSeaeDAL.GetBodyList(" BSNO in(select AS_ID from op_seae_billmanage where BSNO='" + Main_BSNO + "') ");
//查找其所有提单信息下的多品名明细信息
var billManage_CTNDetailList = MsOpSeaeDAL.GetOpCtnDetailList(" CTN_ID in(select CTN_ID from op_ctn where BSNO in(select AS_ID from op_seae_billmanage where BSNO='" + Main_BSNO + "')) ");
//首先查看主业务下的集装箱信息 如缺少则添加
//
foreach (var bill_ctn in billManage_CTNList)
{
needinsert = true;
foreach (var ctn in Main_CTNList)
{
if (bill_ctn.CNTRNO == ctn.CNTRNO)
{
needinsert = false;
break;
}
}
if (needinsert)
{
MsOpSeaeDetail newctn = new MsOpSeaeDetail();
//newctn = MsOpSeaeDetail.Copy(bill_ctn);
bill_ctn.Copy(newctn);
newctn.DbOperationType = DbOperationType.DbotIns;
//newctn.GID = System.Guid.NewGuid().ToString();
newctn.CTN_ID = System.Guid.NewGuid().ToString();
newctn.BSNO = Main_BSNO;
Main_CTNList.Add(newctn);
}
}
//查找所有主业务下的多品名信息 并根据CNTRNO和HSCODE合计所有主业务下的多品名信息
//但如果SI当中没有多品名信息 则不进行此操作
CTNDetailList = MsOpSeaeDAL.GetOpCtnDetailList(" CTN_ID in(select CTN_ID from op_ctn where BSNO='" + Main_BSNO + "') ");
if (billManage_CTNDetailList.Count > 0)
{
foreach (var billmanage_ctndetail in billManage_CTNDetailList) {
foreach (var CTNDetail in CTNDetailList)
if (CTNDetail.CNTRNO == billmanage_ctndetail.CNTRNO)
{
CTNDetail.PKGS = 0;
CTNDetail.KGS = 0;
CTNDetail.CBM = 0;
CTNDetail.DbOperationType = DbOperationType.DbotUpd;
}
}
}
if (billManage_CTNDetailList.Count > 0)
{
//首先根据多品名合计多品名
foreach (var billmanage_ctndetail in billManage_CTNDetailList)
{
needinsert = true;
foreach (var ctndetail in CTNDetailList)
{
if (ctndetail.CNTRNO == billmanage_ctndetail.CNTRNO && ctndetail.HSCODE == billmanage_ctndetail.HSCODE)
{
ctndetail.PKGS += billmanage_ctndetail.PKGS;
ctndetail.KGS += billmanage_ctndetail.KGS;
ctndetail.CBM += billmanage_ctndetail.CBM;
needinsert = false;
break;
}
}
if (needinsert)
{
var _ctn_id = "";
foreach (var ctn in Main_CTNList)
{
if (ctn.CNTRNO == billmanage_ctndetail.CNTRNO)
{
_ctn_id = ctn.CTN_ID;
break;
}
}
MsOpCtnDetail newctndetail = new MsOpCtnDetail();
newctndetail.GID = System.Guid.NewGuid().ToString();
newctndetail.CTN_ID = _ctn_id;
newctndetail.KINDPKGS = billmanage_ctndetail.KINDPKGS;
newctndetail.PKGS = billmanage_ctndetail.PKGS;
newctndetail.KGS = billmanage_ctndetail.KGS;
newctndetail.CBM = billmanage_ctndetail.CBM;
newctndetail.CNTRNO = billmanage_ctndetail.CNTRNO;
newctndetail.HSCODE = billmanage_ctndetail.HSCODE;
newctndetail.DbOperationType = DbOperationType.DbotIns;
CTNDetailList.Add(newctndetail);
}
}
}
else {
//SI中的该业务没有多品名
}
//按CTN_ID合计计算各个提单信息内的集装箱信息
if (billManage_CTNDetailList.Count > 0)
{
foreach (var ctndetail in billManage_CTNDetailList)
{
foreach (var ctn in billManage_CTNList)
if (ctndetail.CTN_ID == ctn.CTN_ID)
{
ctn.PKGS = 0;
ctn.KGS = 0;
ctn.CBM = 0;
ctn.DbOperationType = DbOperationType.DbotUpd;
}
}
}
if (billManage_CTNDetailList.Count > 0)
{
foreach (var ctn in billManage_CTNList)
{
foreach (var ctndetail in billManage_CTNDetailList)
{
if (ctndetail.CTN_ID == ctn.CTN_ID)
{
ctn.PKGS += ctndetail.PKGS;
ctn.KGS += ctndetail.KGS;
ctn.CBM += ctndetail.CBM;
}
}
}
}
//按CNTRNO合计计算主业务下 各个集装箱的信息
foreach (var ctn in Main_CTNList)
{
ctn.PKGS = 0;
ctn.KGS = 0;
ctn.CBM = 0;
}
foreach (var bill_ctn in billManage_CTNList)
{
foreach (var ctn in Main_CTNList)
{
if (ctn.CNTRNO == bill_ctn.CNTRNO)
{
ctn.PKGS += bill_ctn.PKGS;
ctn.KGS += bill_ctn.KGS;
ctn.CBM += bill_ctn.CBM;
}
}
}
//保存各个提单信息内的集装箱信息
result = detailmodb.Save(ModelObjectConvert<MsOpSeaeDetail>.ToModelObjectList(billManage_CTNList));
if (!result.Success)
{
return result;
}
////保存主业务下的多品名信息
//result = detailmodb.Save(ModelObjectConvert<MsOpCtnDetail>.ToModelObjectList(CTNDetailList));
//if (!result.Success)
//{
// return result;
//}
}
//如对应的不是一条提单信息 而是一对一的业务
else
{
Main_BSNO = BSNO;
//查询所有主业务下的多品名信息//查询所有主业务下的集装箱信息
Main_CTNList = MsOpSeaeDAL.GetBodyList(" BSNO='" + Main_BSNO + "' ");
CTNDetailList = MsOpSeaeDAL.GetOpCtnDetailList(" CTN_ID in(select CTN_ID from op_ctn where BSNO='" + Main_BSNO + "') ");
//如果有多品名 则根据CTN_ID合计主业务的集装箱信息
if (CTNDetailList.Count > 0)
{
foreach (var ctn in Main_CTNList)
foreach (var ctndetail in CTNDetailList)
if(ctn.CTN_ID == ctndetail.CTN_ID)
{
ctn.PKGS = 0;
ctn.KGS = 0;
ctn.CBM = 0;
}
}
if (CTNDetailList.Count > 0)
{
foreach (var ctn in Main_CTNList)
{
foreach (var ctndetail in CTNDetailList)
{
if (ctn.CTN_ID == ctndetail.CTN_ID)
{
ctn.PKGS += ctndetail.PKGS;
ctn.KGS += ctndetail.KGS;
ctn.CBM += ctndetail.CBM;
}
}
}
}
}
result = detailmodb.Save(ModelObjectConvert<MsOpSeaeDetail>.ToModelObjectList(Main_CTNList));
if (!result.Success)
{
return result;
}
result = detailmodb.Save(ModelObjectConvert<MsOpCtnDetail>.ToModelObjectList(CTNDetailList));
if (!result.Success)
{
return result;
}
SetSeaeMainCount(Main_BSNO);
return result;
}
private static void SetSeaeMainCount(string BSNO)
{
var str = string.Format(" update op_seae set pkgs = (select sum(isnull(pkgs, 0)) from op_ctn where bsno = op_seae.bsno),kgs = (select sum(isnull(kgs, 0)) from op_ctn where bsno = op_seae.bsno) ,CBM = (select sum(isnull(cbm, 0)) from op_ctn where bsno = op_seae.bsno) where bsno = '{0}'", BSNO);
BasicDataRefDAL.ExecSql(str);
var str2 = string.Format(" update op_seae_billmanage set pkgs = (select sum(isnull(pkgs, 0)) from op_ctn where bsno = op_seae_billmanage.AS_ID),kgs = (select sum(isnull(kgs, 0)) from op_ctn where bsno = op_seae_billmanage.AS_ID) ,CBM = (select sum(isnull(cbm, 0)) from op_ctn where bsno = op_seae_billmanage.AS_ID) where BSNO = '{0}'", BSNO);
BasicDataRefDAL.ExecSql(str2);
}
/// <summary>
/// 检查主业务下的集装箱信息是否有不存在于对应的Booking.OP_SEAE_SI当中的
/// </summary>
/// <param name="MBLNO"></param>
/// <returns></returns>
public ContentResult CheckDiff_Main(string SINO) {
var result = new DBResult(false, "", null);
var jsonRespose = new JsonResponse(result);
//booking端的 SI下的 CTN数据
var booking_ctnlist_main_data = BookingConfirmDAL.GetSICtnList(" ORDNO in(select SINO from op_seae_SI where ORDNO=(select ORDNO from op_seae_SI where SINO='" + SINO + "'))", "");
var booking_ctnlist_main_DicList = ModelObjectBill.getDicList(ModelObjectConvert<Booking_SICtnmb>.ToModelObjectList(booking_ctnlist_main_data));
var BSNO = booking_ctnlist_main_DicList[0]["BSNO_PARENT"];
var CtnCondition = " BSNO ='"+ BSNO + "' ";
var CtnList = MsOpSeaeDAL.GetBodyList(CtnCondition);
foreach (var localctn in CtnList) {
var ismore = true;
foreach (var BookingCtnDic in booking_ctnlist_main_DicList)
{
if (localctn.CNTRNO == BookingCtnDic["CNTRNO"]) {
ismore = false;
break;
}
}
if (ismore) {
result.Success = true;
result.Message += localctn.CNTRNO+" ";
}
}
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult DelDiff_Main(string SINO)
{
var result = new DBResult(false, "", null);
var jsonRespose = new JsonResponse(result);
//booking端的 SI下的 CTN数据
var booking_ctnlist_main_data = BookingConfirmDAL.GetSICtnList(" ORDNO in(select SINO from op_seae_SI where ORDNO=(select ORDNO from op_seae_SI where SINO='" + SINO + "'))", "");
var booking_ctnlist_main_DicList = ModelObjectBill.getDicList(ModelObjectConvert<Booking_SICtnmb>.ToModelObjectList(booking_ctnlist_main_data));
var BSNO = booking_ctnlist_main_DicList[0]["BSNO_PARENT"];
var CtnCondition = " BSNO ='" + BSNO + "' ";
var CtnList = MsOpSeaeDAL.GetBodyList(CtnCondition);
var cntrlist = "";
foreach (var BookingCtnDic in booking_ctnlist_main_DicList)
{
if (cntrlist != "") cntrlist += ",";
cntrlist +="'"+ BookingCtnDic["CNTRNO"]+ "'";
}
var str = string.Format(" delete from op_ctn where {0} and CNTRNO not in({1})", CtnCondition, cntrlist);
BasicDataRefDAL.ExecSql(str);
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
/// <summary>
/// 检查 提单信息 下的集装箱信息是否有不存在于对应的Booking.OP_SEAE_SI当中的
/// </summary>
/// <param name="MBLNO"></param>
/// <returns></returns>
public ContentResult CheckDiff_Bill(string SINO)
{
var result = new DBResult(false, "", null);
var jsonRespose = new JsonResponse(result);
//booking端的 SI下的 CTN数据
var booking_ctnlist_main_data = BookingConfirmDAL.GetSICtnList(" ORDNO ='" + SINO + "'", "");
var booking_ctnlist_main_DicList = ModelObjectBill.getDicList(ModelObjectConvert<Booking_SICtnmb>.ToModelObjectList(booking_ctnlist_main_data));
var BSNO = booking_ctnlist_main_DicList[0]["BSNO_PARENT"];
var MBLNO = booking_ctnlist_main_DicList[0]["SI_MBLNO"];
var CtnCondition = " BSNO in(select AS_ID from op_seae_billmanage where BSNO='" + BSNO + "' and MBLNO='"+ MBLNO + "') ";
var CtnList = MsOpSeaeDAL.GetBodyList(CtnCondition);
foreach (var localctn in CtnList)
{
var ismore = true;
foreach (var BookingCtnDic in booking_ctnlist_main_DicList)
{
if (localctn.CNTRNO == BookingCtnDic["CNTRNO"])
{
ismore = false;
break;
}
}
if (ismore)
{
result.Success = true;
result.Message += localctn.CNTRNO + " ";
}
}
if (result.Success)
{
jsonRespose.SetDBResult(result);
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
else{
return CheckDiff_Main(SINO);
}
}
public ContentResult DelDiff_Bill(string SINO)
{
var result = new DBResult(false, "", null);
var jsonRespose = new JsonResponse(result);
//booking端的 SI下的 CTN数据
var booking_ctnlist_main_data = BookingConfirmDAL.GetSICtnList(" ORDNO ='" + SINO + "'", "");
var booking_ctnlist_main_DicList = ModelObjectBill.getDicList(ModelObjectConvert<Booking_SICtnmb>.ToModelObjectList(booking_ctnlist_main_data));
var BSNO = booking_ctnlist_main_DicList[0]["BSNO_PARENT"];
var MBLNO = booking_ctnlist_main_DicList[0]["SI_MBLNO"];
var CtnCondition = " BSNO in(select AS_ID from op_seae_billmanage where BSNO='" + BSNO + "' and MBLNO='" + MBLNO + "') ";
var CtnList = MsOpSeaeDAL.GetBodyList(CtnCondition);
var cntrlist = "";
foreach (var BookingCtnDic in booking_ctnlist_main_DicList)
{
if (cntrlist != "") cntrlist += ",";
cntrlist += "'" + BookingCtnDic["CNTRNO"] + "'";
}
var str = string.Format(" delete from op_ctn where {0} and CNTRNO not in({1})", CtnCondition, cntrlist);
BasicDataRefDAL.ExecSql(str);
//jsonRespose.SetDBResult(result);
//return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
return DelDiff_Main(SINO);
}
public static string ToDBC(string input)
{
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 12288)
{
c[i] = (char)32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
c[i] = (char)(c[i] - 65248);
}
return new string(c);
}
public static string DelEndSpace(string input)
{
if (input == "") return "";
input = input.Replace("\n", "\\");
input = input.Replace("\r", " ");
string[] StrList = input.Split('\\');
var result = "";
for (var i = 0; i <= StrList.Length - 1; i++)
{
var tmpstr = StrList[i].TrimEnd();
if (tmpstr != "")
{
if (result == "")
result = tmpstr;
else result = result + Environment.NewLine + tmpstr;
}
}
return result;
}
#region 全角空格转半角空格
public static string FullWidthToHalfWidth(string str)
{
byte[] t = Encoding.Default.GetBytes(str);
for (int i = 0; i < t.Length; i++)
{
if ((t[i].ToString() == "161") && (t[i + 1].ToString() == "161"))
{
t[i] = 32;
if (i + 1 == t.Length - 1)
{
t[i + 1] = 0;
}
else
{
for (int j = i + 1; j + 1 < t.Length; j++)
{
t[j] = t[j + 1];
if (j + 1 == t.Length - 1)
{
t[j + 1] = 0;
}
}
}
}
}
return Encoding.Default.GetString(t);
}
#endregion
#endregion
#endregion
#region 集装箱明细信息
public ContentResult GetBookingCtnList(string condition, string sort = "")
{
var dataList = BookingConfirmDAL.GetCtnList(condition, sort);
var list_2 = ModelObjectBill.getDicList(ModelObjectConvert<Booking_Ctnmb>.ToModelObjectList(dataList));
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count(), data = list_2.ToList() });
return new ContentResult() { Content = json };
}
#endregion
#region 集装箱 内 明细信息
public ContentResult GetBookingCtnDetailList(string condition, string sort = "")
{
var dataList = BookingConfirmDAL.GetCtnDetailList(condition, Convert.ToString(Session["USERID"]), sort);
var list_2 = ModelObjectBill.getDicList(ModelObjectConvert<Booking_CtnDetailmb>.ToModelObjectList(dataList));
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count(), data = list_2.ToList() });
return new ContentResult() { Content = json };
}
#endregion
#region 集装箱明细信息
public ContentResult GetSICtnList(string condition, string sort = "")
{
var dataList = BookingConfirmDAL.GetSICtnList(condition, sort);
var list_2 = ModelObjectBill.getDicList(ModelObjectConvert<Booking_SICtnmb>.ToModelObjectList(dataList));
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count(), data = list_2.ToList() });
return new ContentResult() { Content = json };
}
#endregion
#region 集装箱 内 明细信息
public ContentResult GetSICtnDetailList(string condition, string sort = "")
{
var dataList = BookingConfirmDAL.GetSICtnDetailList(condition, Convert.ToString(Session["USERID"]), sort);
var list_2 = ModelObjectBill.getDicList(ModelObjectConvert<Booking_SICtnDetailmb>.ToModelObjectList(dataList));
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count(), data = list_2.ToList() });
return new ContentResult() { Content = json };
}
#endregion
}
}