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

1615 lines
68 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 = CtnList.Sum(s=>s.PKGS) + OpSeaeData.KINDPKGS.ToString();
OpSeaeData.GROSSWEIGHT = CtnList.Sum(s => s.KGS) + "KGS";
OpSeaeData.MEASUREMENT = CtnList.Sum(s => s.CBM) + "CBM";
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) };
}
}
var userid = Convert.ToString(Session["USERID"]);
var username = Convert.ToString(Session["SHOWNAME"]);
var COMPANYID = Convert.ToString(Session["COMPANYID"]);
var COMPANYNAME = Convert.ToString(Session["COMPANYNAME"]);
//result = modb.SaveHead(OpSeaeData);
result = DSWeb.MvcShipping.DAL.MsOpSeaeDAL.MsOpSeaeDAL.DoSave("edit", OpSeaeData, null, userid, username, COMPANYID, COMPANYNAME);
if (!result.Success)
{
//jsonRespose.SetDBResult(result);
//return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
return BasicDataRefDAL.GetContentResult(result);
}
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
}
}