|
|
using System;
|
|
|
using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Data;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Reflection;
|
|
|
using System.Text;
|
|
|
using System.Web.Mvc;
|
|
|
using System.Web.Script.Serialization;
|
|
|
using System.Xml;
|
|
|
using DSWeb.SoftMng.BLL;
|
|
|
using DSWeb.SoftMng.DAL;
|
|
|
using DSWeb.SoftMng.Model;
|
|
|
using DSWeb.SoftMng.XmlHelper;
|
|
|
using DSWeb.TruckMng.Helper;
|
|
|
using DSWeb.TruckMng.Comm.Cookie;
|
|
|
using DSWeb.MvcShipping.DAL.MsSysBillNoSet;
|
|
|
using HcUtility.Comm;
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
using DSWeb.Areas.MvcShipping.Comm;
|
|
|
|
|
|
using DSWeb.MvcShipping.DAL.MsOpApplyDAL;
|
|
|
using DSWeb.MvcShipping.Models.MsOpApply;
|
|
|
using DSWeb.MvcShipping.Models.MsOpApply_BOSH383;
|
|
|
using DSWeb.MvcShipping.Models.MsOpApply_BOSH385;
|
|
|
|
|
|
using DSWeb.Areas.MvcShipping.DB;
|
|
|
using System.Text.RegularExpressions;
|
|
|
using HcUtility.Core;
|
|
|
using DSWeb.MvcShipping.DAL.MsSysParamSet;
|
|
|
using Microsoft.Practices.EnterpriseLibrary.Data;
|
|
|
using DSWeb.MvcShipping.DAL.MsOpSeaiDAL;
|
|
|
using DSWeb.MvcShipping.DAL.MsCodeSgAuditRule;
|
|
|
using System.Xml;
|
|
|
using System.Xml.Serialization;
|
|
|
using System.Xml.XPath;
|
|
|
using DSWeb.Areas.CommMng.DAL;
|
|
|
using DSWeb.Common.DB;
|
|
|
using DSWeb.Common.Helper;
|
|
|
using Terminal_CDMA;
|
|
|
using DSWeb.Areas.Mobile.DAL;
|
|
|
using DSWeb.MvcShipping.Models.MsCodeSgAuditRule;
|
|
|
|
|
|
namespace DSWeb.SoftMng.Controllers
|
|
|
{
|
|
|
public class ExportController : Controller
|
|
|
{
|
|
|
private readonly DecHeadBLL bll = new DecHeadBLL();
|
|
|
private readonly DecListBLL lbll = new DecListBLL();
|
|
|
private readonly ContainerBLL cbll = new ContainerBLL();
|
|
|
private readonly LicenseDocuBLL dbll = new LicenseDocuBLL();
|
|
|
private readonly DecFreeTxBLL tbll = new DecFreeTxBLL();
|
|
|
private readonly DecGoodsLimitBLL gbll = new DecGoodsLimitBLL();
|
|
|
private readonly DecGoodsLimitVinBLL vbll = new DecGoodsLimitVinBLL();
|
|
|
private readonly DecCopLimitBLL ebll = new DecCopLimitBLL();
|
|
|
private readonly DecRequestCertBLL rcbll = new DecRequestCertBLL();
|
|
|
private readonly DecCopLimitBLL clbll = new DecCopLimitBLL();
|
|
|
private readonly DecOtherPackBLL opbll = new DecOtherPackBLL();
|
|
|
#region View
|
|
|
/// <summary>
|
|
|
/// 首页
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
//[ModuleAuthFilter(Name = "secRegist")]//过滤器
|
|
|
public ActionResult Index()
|
|
|
{
|
|
|
if (Session["CODENAME"] == null)
|
|
|
Response.Redirect("/login.aspx");
|
|
|
return View();
|
|
|
}
|
|
|
public ActionResult Single() {
|
|
|
DecModelBLL mbll = new DecModelBLL();
|
|
|
var model = mbll.GetModelList("type=0").FirstOrDefault();
|
|
|
if (model != null)
|
|
|
ViewData["AgentInfo"] = model.Model;
|
|
|
var pmodel = bll.GetModelList("PDate in (select min(pdate) from DecHead)").FirstOrDefault();
|
|
|
if (pmodel != null)
|
|
|
ViewData["FirstRecord"] = pmodel;
|
|
|
return View();
|
|
|
}
|
|
|
|
|
|
public ActionResult SingleAudit()
|
|
|
{
|
|
|
|
|
|
return View();
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 模板管理
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public ActionResult DecModel()
|
|
|
{
|
|
|
if (Session["CODENAME"] == null)
|
|
|
Response.Redirect("/login.aspx");
|
|
|
return View();
|
|
|
}
|
|
|
#endregion
|
|
|
#region Handler
|
|
|
/// <summary>
|
|
|
/// 对应 单一窗口 暂存 上传 按钮
|
|
|
/// </summary>
|
|
|
/// <param name="headData"></param>
|
|
|
/// <param name="dataList"></param>
|
|
|
/// <param name="containerList"></param>
|
|
|
/// <param name="licensedocuList"></param>
|
|
|
/// <param name="decfreeTx"></param>
|
|
|
/// <param name="decGoodsLimitList"></param>
|
|
|
/// <param name="decGoodsLimitVinList"></param>
|
|
|
/// <param name="decRequestCert"></param>
|
|
|
/// <param name="decCopLimit"></param>
|
|
|
/// <param name="decOtherPack"></param>
|
|
|
/// <param name="action"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult Save(string headData, string dataList, string containerList, string licensedocuList, string decfreeTx, string decGoodsLimitList, string decGoodsLimitVinList, string decRequestCert, string decCopLimit, string decOtherPack, string action)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
JavaScriptSerializer json = new JavaScriptSerializer();
|
|
|
//DecHead
|
|
|
DecHead model = json.Deserialize<DecHead>(headData);
|
|
|
MsOpApply applyhead = MsOpApplyDAL.GetData("BSNO='" + model.BSNO + "'");
|
|
|
|
|
|
model.AgentStatus = action == "post" ? "已上传" : "暂存";
|
|
|
/* CopCode
|
|
|
* 录入单位代码
|
|
|
*/
|
|
|
model.CopCode = "";
|
|
|
/* CopCode
|
|
|
* 录入单位名称
|
|
|
*/
|
|
|
model.CopName = "";
|
|
|
/* IEFlag
|
|
|
* 进出口标志
|
|
|
* “I”:进口
|
|
|
* “E”:出口
|
|
|
*/
|
|
|
model.IEFlag = "E";
|
|
|
if (applyhead.BSTYPEREF.IndexOf("进口")>0) model.IEFlag = "I";
|
|
|
|
|
|
/* Type
|
|
|
* 报关单类型
|
|
|
前两位:一般报关单填空值;
|
|
|
ML:保税区进出境备案清单
|
|
|
SD: “属地申报,口岸验放”报关单
|
|
|
LY:两单一审备案清单;
|
|
|
CL:汇总征税报关单;
|
|
|
SS:”属地申报,属地验放”报关单
|
|
|
ZB:自主报税
|
|
|
SW:税单无纸化
|
|
|
SZ:水运中转普通报关单
|
|
|
SM:水运中转保税区进出境备案清单
|
|
|
SL:水运中转两单一审备案清单
|
|
|
Z:自报自缴
|
|
|
MF:公路舱单跨境快速通关报关单
|
|
|
MK: 公路舱单跨境快速通关备案清单
|
|
|
ZY:自报自缴,两单一审备案清单
|
|
|
ZC:自报自缴,汇总征税报关单
|
|
|
ZW:自报自缴,税单无纸化
|
|
|
ZF:自报自缴,公路舱单跨境快速通关
|
|
|
ZX:自报自缴,多项式联运
|
|
|
MT:多项式联运。
|
|
|
EX:低值快速货物报关单;
|
|
|
EC:低值快速货物汇总征税报关单;
|
|
|
EZ:低值快速货物自报自缴报关单;
|
|
|
ES:低值快速货物汇总征税、自报自缴报关单。
|
|
|
|
|
|
*/
|
|
|
//20210621 改为从"cusRemark": "{\\"cusRemark\\":\\"SW\\"}", 中解析出两个字母
|
|
|
//然后
|
|
|
//第三位:
|
|
|
//0 / 空:整合申报一次录入;
|
|
|
//1:概要申报;
|
|
|
//2:完整申报;
|
|
|
//3:两步申报一次录入,人工提交;如之前进行过辅助提交,该值表示取消辅助提交且调整为人工提交。
|
|
|
//4:两步申报一次录入,辅助提交;
|
|
|
//第四位:涉证标记0 - 否,1 - 是,概要申报必传。
|
|
|
//第五位:涉检标记0 - 否,1 - 是,概要申报必传。
|
|
|
//第六位:涉税标记0 - 否,1 - 是,概要申报必传
|
|
|
|
|
|
|
|
|
model.Type = "";
|
|
|
/* EdiId
|
|
|
* 报关标志
|
|
|
* 1:普通报关
|
|
|
* 3:北方转关提前
|
|
|
* 5:南方转关提前
|
|
|
* 6:普通报关,运输工具名称以‘◎’开头,南方H2000直转
|
|
|
*/
|
|
|
model.EdiId = "1";
|
|
|
/* PDate
|
|
|
* 打印日期
|
|
|
*/
|
|
|
model.PDate = DateTime.Now;
|
|
|
/* TypistNo
|
|
|
* 录入员IC卡号
|
|
|
*/
|
|
|
model.TypistNo = "";
|
|
|
/* InputerName
|
|
|
* 录入员名称
|
|
|
*/
|
|
|
model.InputerName = "";
|
|
|
/* PartenerID
|
|
|
* 申报人标识
|
|
|
*/
|
|
|
model.PartenerID = "";
|
|
|
/* DeclTrnRel
|
|
|
* 报关/转关关系标志
|
|
|
* 0:一般报关单
|
|
|
* 1:转关提前报关单
|
|
|
*/
|
|
|
model.DeclTrnRel = "0";
|
|
|
/* ChkSurety
|
|
|
* 担保验放标志
|
|
|
*/
|
|
|
model.ChkSurety = "";
|
|
|
/* CheckFlow
|
|
|
* 查验分流:
|
|
|
* 1:表示是查验分流
|
|
|
* 0:表示不是查验分流
|
|
|
*/
|
|
|
model.CheckFlow = "";
|
|
|
/* TaxAaminMark
|
|
|
* 税收征管标记:
|
|
|
* 0-无
|
|
|
* 1-有
|
|
|
*/
|
|
|
model.TaxAaminMark = "";
|
|
|
/*
|
|
|
* 入境口岸代码【货物从运输工具卸离的第一个境内口岸】
|
|
|
*/
|
|
|
model.EntyPortCode = model.DespPortCode;
|
|
|
/* BLNo
|
|
|
* 提货单号【本批货物的提货单或出库单号码】
|
|
|
*/
|
|
|
model.BLNo = "";
|
|
|
if (model.DDateStr!="")
|
|
|
model.DDate= DateTime.ParseExact(model.DDateStr, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture);
|
|
|
if (model.IEDateStr != "")
|
|
|
model.IEDate= DateTime.ParseExact(model.IEDateStr, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture);
|
|
|
|
|
|
//20200109 需求编号SR2020010700004
|
|
|
//20200306 由于单一窗口和报关业务的关系已改为一对一 故此序列号改为使用报关业务的CUSTNO
|
|
|
if (string.IsNullOrWhiteSpace(model.ClientSeqNo))
|
|
|
{
|
|
|
//var ClientSeqNo = MsSysBillNoSetDAL.GetNewNo("报关业务", "委托编号", "0125", Session["COMPANYID"].ToString(), System.DateTime.Now.ToString("yyyy-MM-dd"));
|
|
|
//model.ClientSeqNo = ClientSeqNo;
|
|
|
|
|
|
|
|
|
model.ClientSeqNo = applyhead.CUSTNO;
|
|
|
}
|
|
|
|
|
|
if (string.IsNullOrEmpty(model.GID))
|
|
|
{
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
|
|
|
|
|
|
bll.Add(model);
|
|
|
}
|
|
|
else
|
|
|
bll.Update(model);
|
|
|
//decGoodsLimitList
|
|
|
List<DecGoodsLimit> list3 = json.Deserialize<List<DecGoodsLimit>>(decGoodsLimitList);
|
|
|
gbll.DeleteListWhere("PID in (select GID from DecList where PID ='" + model.GID + "')");
|
|
|
foreach (var item in list3)
|
|
|
gbll.Add(item);
|
|
|
//decGoodsLimitVinList
|
|
|
List<DecGoodsLimitVin> list4 = json.Deserialize<List<DecGoodsLimitVin>>(decGoodsLimitVinList);
|
|
|
vbll.DeleteListWhere("PID in (select GID from DecGoodsLimit where PID in (select GID from DecList where PID ='" + model.GID + "'))");
|
|
|
foreach (var item in list4)
|
|
|
vbll.Add(item);
|
|
|
//DecList
|
|
|
List<DecList> list = json.Deserialize<List<DecList>>(dataList);
|
|
|
lbll.DeleteListWhere("PID='" + model.GID + "'");
|
|
|
foreach (var item in list)
|
|
|
{
|
|
|
item.PID = model.GID;
|
|
|
lbll.Add(item);
|
|
|
}
|
|
|
//containerList
|
|
|
List<Container> list1 = json.Deserialize<List<Container>>(containerList);
|
|
|
cbll.DeleteListWhere("PID='" + model.GID + "'");
|
|
|
foreach (var item in list1)
|
|
|
{
|
|
|
item.PID = model.GID;
|
|
|
cbll.Add(item);
|
|
|
}
|
|
|
//licensedocuList
|
|
|
List<LicenseDocu> list2 = json.Deserialize<List<LicenseDocu>>(licensedocuList);
|
|
|
dbll.DeleteListWhere("PID='" + model.GID + "'");
|
|
|
foreach (var item in list2)
|
|
|
{
|
|
|
item.PID = model.GID;
|
|
|
dbll.Add(item);
|
|
|
}
|
|
|
//decfreeTx
|
|
|
tbll.DeleteListWhere("PID='" + model.GID + "'");
|
|
|
DecFreeTx tmodel = json.Deserialize<DecFreeTx>(decfreeTx);
|
|
|
tmodel.GID = Guid.NewGuid().ToString();
|
|
|
tmodel.PID = model.GID;
|
|
|
tbll.Add(tmodel);
|
|
|
//decRequestCert
|
|
|
List<DecRequestCert> list5 = json.Deserialize<List<DecRequestCert>>(decRequestCert);
|
|
|
rcbll.DeleteListWhere("PID='" + model.GID + "'");
|
|
|
foreach (var item in list5)
|
|
|
{
|
|
|
item.PID = model.GID;
|
|
|
rcbll.Add(item);
|
|
|
}
|
|
|
//decOtherPack
|
|
|
List<DecOtherPack> list6 = json.Deserialize<List<DecOtherPack>>(decOtherPack);
|
|
|
opbll.DeleteListWhere("PID='" + model.GID + "'");
|
|
|
foreach (var item in list6)
|
|
|
{
|
|
|
item.PID = model.GID;
|
|
|
opbll.Add(item);
|
|
|
}
|
|
|
//decCopLimit
|
|
|
List<DecCopLimit> list7 = json.Deserialize<List<DecCopLimit>>(decCopLimit);
|
|
|
clbll.DeleteListWhere("PID='" + model.GID + "'");
|
|
|
foreach (var item in list7)
|
|
|
{
|
|
|
item.PID = model.GID;
|
|
|
clbll.Add(item);
|
|
|
}
|
|
|
|
|
|
|
|
|
if (action == "post")
|
|
|
{
|
|
|
|
|
|
model.EntyPortCode = model.DespPortCode;
|
|
|
//生成XML
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
XmlDeclaration ver = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
|
|
|
doc.AppendChild(ver);
|
|
|
//根节点
|
|
|
XmlElement root = doc.CreateElement("DecMessage");
|
|
|
doc.AppendChild(root);
|
|
|
root.SetAttribute("xmlns", "http://www.chinaport.gov.cn/dec");
|
|
|
//报关单表头
|
|
|
XmlHelper<DecHead>.EntityToXml(doc, model, root, new ArrayList() { "Insp_cert", "AgentStatus" });
|
|
|
//报关单表体
|
|
|
XmlElement decLists = doc.CreateElement("DecLists");
|
|
|
root.AppendChild(decLists);
|
|
|
foreach (var item in list)
|
|
|
{
|
|
|
var decxmlItem = XmlHelper<DecList>.EntityToXml(doc, item, decLists);
|
|
|
//产品许可证
|
|
|
XmlElement decGoodsLimits = doc.CreateElement("DecGoodsLimits");
|
|
|
decxmlItem.AppendChild(decGoodsLimits);
|
|
|
foreach (var item1 in list3.FindAll(p => p.PID == item.GID))
|
|
|
{
|
|
|
var limitxmlItem = XmlHelper<DecGoodsLimit>.EntityToXml(doc, item1, decGoodsLimits);
|
|
|
var vinModel = list4.Find(p => p.PID == item1.GID);
|
|
|
if (vinModel != null)
|
|
|
//许可证VIN信息
|
|
|
XmlHelper<DecGoodsLimitVin>.EntityToXml(doc, vinModel, limitxmlItem, new ArrayList() { "GoodsNoVin" });
|
|
|
}
|
|
|
}
|
|
|
//集装箱信息
|
|
|
var containerXml = XmlHelper<Container>.EntityToXml(doc, list1, "DecContainers");
|
|
|
root.AppendChild(containerXml);
|
|
|
//单证信息
|
|
|
var licenseDocuXml = XmlHelper<LicenseDocu>.EntityToXml(doc, list2, "DecLicenseDocus");
|
|
|
root.AppendChild(licenseDocuXml);
|
|
|
//申报要素
|
|
|
var requestCertXml = XmlHelper<DecRequestCert>.EntityToXml(doc, list5, "DecRequestCerts");
|
|
|
root.AppendChild(requestCertXml);
|
|
|
//其他包装
|
|
|
var otherPackXml = XmlHelper<DecOtherPack>.EntityToXml(doc, list6, "DecOtherPacks");
|
|
|
root.AppendChild(otherPackXml);
|
|
|
//企业资质
|
|
|
var copLimitXml = XmlHelper<DecCopLimit>.EntityToXml(doc, list7, "DecCopLimits");
|
|
|
root.AppendChild(copLimitXml);
|
|
|
//自由文本信息
|
|
|
XmlHelper<DecFreeTx>.EntityToXml(doc, tmodel, root);
|
|
|
//报关单签名
|
|
|
var signmodel = new DecSignBLL().GetModelList("").FirstOrDefault();
|
|
|
|
|
|
//ClientSeqNo 客户端报关单编号 需求编号SR2020010700004
|
|
|
signmodel.ClientSeqNo = model.ClientSeqNo;
|
|
|
|
|
|
XmlHelper<DecSign>.EntityToXml(doc, signmodel, root);
|
|
|
|
|
|
var newPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "OutBox");
|
|
|
Directory.CreateDirectory(newPath);
|
|
|
doc.Save(Path.Combine(newPath, model.GID + ".xml"));
|
|
|
|
|
|
bll.UpdateBillState(model.GID, "L","");
|
|
|
}
|
|
|
return Json(new { success = true, gid = model.GID });
|
|
|
}
|
|
|
catch (Exception se)
|
|
|
{
|
|
|
return Json(new { success = false, message = se.Message + se.Source });
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 对应 单一窗口 提交 按钮
|
|
|
/// </summary>
|
|
|
/// <param name="billGID"></param>
|
|
|
/// <param name="billState"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult Audit(string billGID, string billState,string reason="",string isaudit="0")
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if (billState == "P"&& isaudit=="0") {
|
|
|
var AuditdataList = MsCodeSgAuditRuleDAL.GetDataList("", Convert.ToString(Session["COMPANYID"]));
|
|
|
var CodeSgAuditRuleGroupList = new List<CodeSgAuditRuleGroup>();
|
|
|
foreach (var audit in AuditdataList)
|
|
|
{ var newCodeSgAuditRuleGroup=CodeSgAuditRuleGroupList.Find(x => x.SGANO == audit.SGANO);
|
|
|
if (newCodeSgAuditRuleGroup == null)
|
|
|
{
|
|
|
var CodeSgAuditRuleGroup = new CodeSgAuditRuleGroup();
|
|
|
CodeSgAuditRuleGroup.SGANO = audit.SGANO;
|
|
|
var CodeSgAuditRuleList = new List<CodeSgAuditRule>();
|
|
|
CodeSgAuditRuleList.Add(audit);
|
|
|
CodeSgAuditRuleGroup.CodeSgAuditRuleList = CodeSgAuditRuleList;
|
|
|
CodeSgAuditRuleGroupList.Add(CodeSgAuditRuleGroup);
|
|
|
}
|
|
|
else {
|
|
|
newCodeSgAuditRuleGroup.CodeSgAuditRuleList.Add(audit);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var model = bll.GetModel(billGID);
|
|
|
var list = lbll.GetModelList(0, 100, "PID='" + billGID + "'", String.Format("{0} {1}", "", "GNo"));
|
|
|
var propArr = model.GetType().GetProperties();
|
|
|
var errorstr = "";
|
|
|
|
|
|
foreach (var CodeSgAuditRuleGroup in CodeSgAuditRuleGroupList) {
|
|
|
var billerrorstr = "";
|
|
|
var iserror = true;
|
|
|
foreach (var audit in CodeSgAuditRuleGroup.CodeSgAuditRuleList) {
|
|
|
if (!iserror)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
|
|
|
if (audit.BSTYPE == "DecHead")
|
|
|
{
|
|
|
var prop = propArr.FirstOrDefault(p => p.Name.ToLower() == audit.FIELDNAME.ToLower());
|
|
|
if (audit.COMPARETYPE == "字段")
|
|
|
{
|
|
|
var newprop = propArr.FirstOrDefault(p => p.Name.ToLower() == audit.VALUE.ToLower());
|
|
|
if (prop != null && newprop != null)
|
|
|
{
|
|
|
if (audit.COMPARE == "包含")
|
|
|
{
|
|
|
if (prop.GetValue(model).ToString().IndexOf(newprop.GetValue(model).ToString()) > 0)
|
|
|
{
|
|
|
billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
iserror = true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
iserror = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (audit.COMPARE == "不包含")
|
|
|
{
|
|
|
if (prop.GetValue(model).ToString().IndexOf(newprop.GetValue(model).ToString()) <= 0)
|
|
|
{
|
|
|
billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
iserror = true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
iserror = false;
|
|
|
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "大于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) > Convert.ToDecimal(newprop.GetValue(model)))
|
|
|
{
|
|
|
billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
|
|
|
}
|
|
|
else {
|
|
|
iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) > Convert.ToInt32(newprop.GetValue(model))) { billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; }
|
|
|
else {
|
|
|
iserror = false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "小于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) < Convert.ToDecimal(newprop.GetValue(model)))
|
|
|
{ billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; }
|
|
|
else {
|
|
|
iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) < Convert.ToInt32(newprop.GetValue(model))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "大于等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) >= Convert.ToDecimal(newprop.GetValue(model))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) >= Convert.ToInt32(newprop.GetValue(model))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (audit.COMPARE == "小于等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) <= Convert.ToDecimal(newprop.GetValue(model))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) <= Convert.ToInt32(newprop.GetValue(model))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) == Convert.ToDecimal(newprop.GetValue(model))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) == Convert.ToInt32(newprop.GetValue(model))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (prop.GetValue(model).ToString() == newprop.GetValue(model).ToString()) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "不等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) != Convert.ToDecimal(newprop.GetValue(model))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) != Convert.ToInt32(newprop.GetValue(model))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (prop.GetValue(model).ToString() != newprop.GetValue(model).ToString()) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (prop != null)
|
|
|
{
|
|
|
if (audit.COMPARE == "包含")
|
|
|
{
|
|
|
if (audit.VALUE.IndexOf(";") > 0)
|
|
|
{
|
|
|
var valuelist = audit.VALUE.Split(';');
|
|
|
var isnobh = false;
|
|
|
foreach (var valuestr in valuelist)
|
|
|
{
|
|
|
if (prop.GetValue(model).ToString().IndexOf(valuestr) > 0) isnobh = true;
|
|
|
}
|
|
|
if (isnobh) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (prop.GetValue(model).ToString().IndexOf(audit.VALUE) > 0) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (audit.COMPARE == "不包含")
|
|
|
{
|
|
|
if (audit.VALUE.IndexOf(";") > 0)
|
|
|
{
|
|
|
var valuelist = audit.VALUE.Split(';');
|
|
|
var isnobh = false;
|
|
|
foreach (var valuestr in valuelist)
|
|
|
{
|
|
|
if (prop.GetValue(model).ToString().IndexOf(valuestr) > 0) isnobh = true;
|
|
|
}
|
|
|
if (!isnobh) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else
|
|
|
if (prop.GetValue(model).ToString().IndexOf(audit.VALUE) <= 0) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (audit.COMPARE == "大于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) > Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) > Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "小于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) < Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) < Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "大于等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) >= Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) >= Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (audit.COMPARE == "小于等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) <= Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) <= Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) == Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) == Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.GetValue(model).ToString() == audit.VALUE)
|
|
|
{
|
|
|
billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
}
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (audit.COMPARE == "不等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(model)) != Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(model)) != Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (prop.GetValue(model).ToString() != audit.VALUE)
|
|
|
{ billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; }
|
|
|
else iserror = false;
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|
|
|
if (audit.BSTYPE == "DecList")
|
|
|
{
|
|
|
foreach (var dec in list)
|
|
|
{
|
|
|
var decArr = dec.GetType().GetProperties();
|
|
|
var prop = decArr.FirstOrDefault(p => p.Name.ToLower() == audit.FIELDNAME.ToLower());
|
|
|
if (audit.COMPARETYPE == "字段")
|
|
|
{
|
|
|
var newprop = decArr.FirstOrDefault(p => p.Name.ToLower() == audit.VALUE.ToLower());
|
|
|
if (prop != null && newprop != null)
|
|
|
{
|
|
|
if (audit.COMPARE == "包含")
|
|
|
{
|
|
|
if (prop.GetValue(dec).ToString().IndexOf(newprop.GetValue(dec).ToString()) > 0) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
|
|
|
}
|
|
|
else if (audit.COMPARE == "不包含")
|
|
|
{
|
|
|
if (prop.GetValue(dec).ToString().IndexOf(newprop.GetValue(dec).ToString()) <= 0) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
else if (audit.COMPARE == "大于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) > Convert.ToDecimal(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) > Convert.ToInt32(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "小于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) < Convert.ToDecimal(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) < Convert.ToInt32(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "大于等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) >= Convert.ToDecimal(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) >= Convert.ToInt32(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (audit.COMPARE == "小于等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) <= Convert.ToDecimal(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) <= Convert.ToInt32(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) == Convert.ToDecimal(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) == Convert.ToInt32(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
else if (prop.GetValue(dec).ToString() == newprop.GetValue(dec).ToString()) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
else if (audit.COMPARE == "不等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) != Convert.ToDecimal(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) != Convert.ToInt32(newprop.GetValue(dec))) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
}
|
|
|
else if (prop.GetValue(dec).ToString() != newprop.GetValue(dec).ToString()) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUEREF; else iserror = false;
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (prop != null)
|
|
|
{
|
|
|
if (audit.COMPARE == "包含")
|
|
|
{
|
|
|
if (audit.VALUE.IndexOf(";") > 0)
|
|
|
{
|
|
|
var valuelist = audit.VALUE.Split(';');
|
|
|
var isnobh = false;
|
|
|
foreach (var valuestr in valuelist)
|
|
|
{
|
|
|
if (prop.GetValue(dec).ToString().IndexOf(valuestr) > 0) isnobh = true;
|
|
|
}
|
|
|
if (isnobh) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (prop.GetValue(dec).ToString().IndexOf(audit.VALUE) > 0) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
|
|
|
}
|
|
|
else if (audit.COMPARE == "不包含")
|
|
|
{
|
|
|
if (audit.VALUE.IndexOf(";") > 0)
|
|
|
{
|
|
|
var valuelist = audit.VALUE.Split(';');
|
|
|
var isnobh = false;
|
|
|
foreach (var valuestr in valuelist)
|
|
|
{
|
|
|
if (prop.GetValue(dec).ToString().IndexOf(valuestr) > 0) isnobh = true;
|
|
|
}
|
|
|
if (!isnobh) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (prop.GetValue(dec).ToString().IndexOf(audit.VALUE) <= 0) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (audit.COMPARE == "大于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) > Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) > Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "小于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) < Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) < Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "大于等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) >= Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) >= Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (audit.COMPARE == "小于等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) <= Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) <= Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
}
|
|
|
else if (audit.COMPARE == "等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) == Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) == Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (prop.GetValue(dec).ToString() == audit.VALUE)
|
|
|
billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
}
|
|
|
else if (audit.COMPARE == "不等于")
|
|
|
{
|
|
|
if (prop.PropertyType == typeof(decimal?))
|
|
|
{
|
|
|
if (Convert.ToDecimal(prop.GetValue(dec)) != Convert.ToDecimal(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (prop.PropertyType == typeof(int?))
|
|
|
{
|
|
|
if (Convert.ToInt32(prop.GetValue(dec)) != Convert.ToInt32(audit.VALUE)) billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE; else iserror = false;
|
|
|
}
|
|
|
else if (prop.GetValue(dec).ToString() != audit.VALUE)
|
|
|
billerrorstr = billerrorstr + Environment.NewLine + audit.FIELDNAMEREF + "[" + audit.COMPARE + "]" + audit.VALUE;
|
|
|
else iserror = false;
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
if (iserror) {
|
|
|
errorstr= errorstr+ Environment.NewLine+"序号:"+ CodeSgAuditRuleGroup.SGANO+"("+billerrorstr+")";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
if (errorstr != "") {
|
|
|
return Json(new { success = false, message ="审核条件不通过:"+errorstr});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
if (billState == "S" || billState == "P" || billState == "R") {
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
var tran = conn.BeginTransaction();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
|
|
|
var cmdupdateStatus =
|
|
|
db.GetSqlStringCommand(
|
|
|
@"insert op_status (ST_ID,BSNO,STATUS,ISCOMP,COMPTIME,COMPOP,INPUTTIME,STTYPE,REMARK)
|
|
|
Select NEWID(),BSNO,@STATUS,@ISCOMP,@COMPTIME,@COMPOP,@INPUTTIME,'1',@REMARK FROM DecHead WHERE GID IN ('" + billGID + "') ");
|
|
|
|
|
|
var statusstr ="报关单待复核";
|
|
|
if (billState == "P") statusstr = "报关单可正式申报";
|
|
|
if (billState == "R") statusstr = "报关单复核驳回";
|
|
|
|
|
|
|
|
|
cmdupdateStatus.Parameters.Clear();
|
|
|
db.AddInParameter(cmdupdateStatus, "@STATUS", DbType.String,statusstr);
|
|
|
db.AddInParameter(cmdupdateStatus, "@ISCOMP", DbType.Boolean, true);
|
|
|
db.AddInParameter(cmdupdateStatus, "@COMPTIME", DbType.DateTime, DateTime.Now);
|
|
|
db.AddInParameter(cmdupdateStatus, "@COMPOP", DbType.String, Convert.ToString(Session["SHOWNAME"]));
|
|
|
db.AddInParameter(cmdupdateStatus, "@INPUTTIME", DbType.DateTime, DateTime.Now);
|
|
|
db.AddInParameter(cmdupdateStatus, "@REMARK", DbType.String, reason);
|
|
|
db.ExecuteNonQuery(cmdupdateStatus, tran);
|
|
|
|
|
|
|
|
|
|
|
|
tran.Commit();
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (bll.UpdateBillState(billGID, billState,reason) > 0)
|
|
|
{
|
|
|
return Json(new { success = true });
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return Json(new { success = true });
|
|
|
}
|
|
|
}
|
|
|
catch (Exception se)
|
|
|
{
|
|
|
return Json(new { success = false, message = se.Message + se.Source });
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public JsonResult GetHead(string gid)
|
|
|
{
|
|
|
var model = bll.GetModel(gid);
|
|
|
var tmodel = tbll.GetModelList("PID='" + gid + "'").FirstOrDefault();
|
|
|
var rclist = rcbll.GetModelList("PID='" + gid + "'");
|
|
|
var oplist = opbll.GetModelList("PID='" + gid + "'");
|
|
|
var cllist = clbll.GetModelList("PID='" + gid + "'");
|
|
|
var goodsLimit = gbll.GetModelList("PID in (SELECT GID FROM DecList WHERE PID ='" + gid + "')").OrderBy(p => p.GoodsNo).ToList();
|
|
|
var goodsLimitVin = vbll.GetModelList("PID in (SELECT GID FROM DecGoodsLimit WHERE PID IN(SELECT GID FROM DecList WHERE PID ='" + gid + "'))").OrderBy(p => p.GoodsNoVin).ToList();
|
|
|
return Json(new { success = true, model, tmodel, rclist, oplist, cllist, goodsLimit, goodsLimitVin });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 报文列表
|
|
|
/// </summary>
|
|
|
/// <param name="startIndex"></param>
|
|
|
/// <param name="limit"></param>
|
|
|
/// <param name="sortOrder"></param>
|
|
|
/// <param name="sortName"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetList(int startIndex, int limit, string sortOrder, string sortName, string pId)
|
|
|
{
|
|
|
var list = lbll.GetModelList(startIndex, limit, "PID='" + pId + "'", String.Format("{0} {1}", sortName, sortOrder));
|
|
|
var count = lbll.GetRecordCount("PID='" + pId + "'");
|
|
|
return Json(new { total = count, rows = list });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 集装箱列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetList1(string pId)
|
|
|
{
|
|
|
var list = cbll.GetModelList("PID='" + pId + "'");
|
|
|
return Json(list);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取单证
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetList2(string pId)
|
|
|
{
|
|
|
var list = dbll.GetModelList("PID='" + pId + "'");
|
|
|
return Json(list);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 产品许可证列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetList3(string pId)
|
|
|
{
|
|
|
var list = gbll.GetModelList("PID='" + pId + "'").OrderBy(p => p.GoodsNo).ToList();
|
|
|
return Json(list);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 许可证VIN列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetList4(string pId)
|
|
|
{
|
|
|
var list = vbll.GetModelList("PID='" + pId + "'").OrderBy(p => p.GoodsNoVin).ToList();
|
|
|
return Json(list);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 企业资质列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetList5(string pId)
|
|
|
{
|
|
|
var list = ebll.GetModelList("PID='" + pId + "'");
|
|
|
return Json(list);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 按类别获取下拉列表
|
|
|
/// </summary>
|
|
|
/// <param name="pageIndex"></param>
|
|
|
/// <param name="pageSize"></param>
|
|
|
/// <param name="query"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetSelection(int pageIndex, int pageSize, string query, string type)
|
|
|
{
|
|
|
sys_EnumerationBLL bll = new sys_EnumerationBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append("Type='" + type + "'");
|
|
|
if (!String.IsNullOrEmpty(query))
|
|
|
where.Append(string.Format("And ([Value] LIKE '%{0}%' OR Name LIKE '%{0}%')", query));
|
|
|
var total = bll.GetRecordCount(where.ToString());
|
|
|
var list = bll.GetModelList(pageIndex, pageSize, where.ToString(), "[Value] collate Chinese_PRC_CS_AS_KS_WS");
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = p.Value,
|
|
|
text = p.Value + " - " + p.Name
|
|
|
};
|
|
|
return Json(new { data = result, total }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取指运港
|
|
|
/// </summary>
|
|
|
/// <param name="pageIndex"></param>
|
|
|
/// <param name="pageSize"></param>
|
|
|
/// <param name="query"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetPort(int pageIndex, int pageSize, string query)
|
|
|
{
|
|
|
sys_b_PortBLL bll = new sys_b_PortBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append("1=1");
|
|
|
if (!String.IsNullOrEmpty(query))
|
|
|
where.Append(string.Format(" And ([Value] LIKE '%{0}%' OR Name LIKE '%{0}%')", query));
|
|
|
var total = bll.GetRecordCount(where.ToString());
|
|
|
var list = bll.GetModelList(pageIndex, pageSize, where.ToString(), "[Value] collate Chinese_PRC_CS_AS_KS_WS");
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = p.Value,
|
|
|
text = p.Value + " - " + p.Name
|
|
|
};
|
|
|
return Json(new { data = result, total }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
|
|
|
#region 导入XML文件生成报关和单一窗口数据
|
|
|
|
|
|
[HttpPost]
|
|
|
public ContentResult ImportXmlBs()
|
|
|
{
|
|
|
var jsonRespose = new JsonResponse { Success = false, Message = "" };
|
|
|
|
|
|
if (Request.Files.Count != 1)
|
|
|
{
|
|
|
jsonRespose.Success = false;
|
|
|
jsonRespose.Message = "请选择上传的文件";
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
}
|
|
|
|
|
|
var file = Request.Files["LoadXml"];
|
|
|
if (file == null)
|
|
|
{
|
|
|
jsonRespose.Success = false;
|
|
|
jsonRespose.Message = "上传文件发生未知错误,请重新上传";
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
}
|
|
|
|
|
|
var path = Server.MapPath(OPAPPLYFilePath);
|
|
|
|
|
|
if (!Directory.Exists(path))
|
|
|
{
|
|
|
Directory.CreateDirectory(path);
|
|
|
}
|
|
|
|
|
|
var size = file.ContentLength;
|
|
|
var name = Path.GetFileName(file.FileName);
|
|
|
var bsno = Request.Form["bsno"];
|
|
|
|
|
|
var usercode = CookieConfig.GetCookie_UserCode(Request);
|
|
|
string filename = path + "\\" + usercode + DateTime.Now.ToString("yyyyMMddHHmmssfff") + name;
|
|
|
|
|
|
if (System.IO.File.Exists(filename))
|
|
|
{
|
|
|
System.IO.File.Delete(filename);
|
|
|
}
|
|
|
file.SaveAs(filename);
|
|
|
|
|
|
|
|
|
if (!System.IO.File.Exists(filename))
|
|
|
{
|
|
|
var json = JsonConvert.Serialize(new { success = false, Message = "上传文件发生未知错误,请重新上传" });
|
|
|
return new ContentResult() { Content = json };
|
|
|
}
|
|
|
string ext = Path.GetExtension(file.FileName).ToLower();
|
|
|
if (ext == ".asp" || ext == ".aspx")
|
|
|
{
|
|
|
jsonRespose.Success = false;
|
|
|
jsonRespose.Message = "不允许上传ASP货ASPX文件";
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
}
|
|
|
|
|
|
|
|
|
var result = DecHeadDAL.Deal381XML(filename, Session["USERID"].ToString(), Session["SHOWNAME"].ToString(), Session["COMPANYID"].ToString());
|
|
|
//try
|
|
|
//{
|
|
|
// XmlSerializer serializer = new XmlSerializer(typeof(SHIPMENT_CDF_INBOUND_V2));
|
|
|
// using (FileStream fs = new FileStream(filename, FileMode.Open))
|
|
|
// {
|
|
|
// SHIPMENT_CDF_INBOUND_V2 SHIPMENTLIST = (SHIPMENT_CDF_INBOUND_V2)serializer.Deserialize(fs);
|
|
|
// result = ImportXmlBs(SHIPMENTLIST,Session["USERID"].ToString(), Session["SHOWNAME"].ToString(), Session["COMPANYID"].ToString());
|
|
|
// }
|
|
|
|
|
|
|
|
|
// var json = JsonConvert.Serialize(new { success = result.Success, Message = result.Message });
|
|
|
// return new ContentResult() { Content = json };
|
|
|
//}
|
|
|
//catch (Exception e)
|
|
|
//{
|
|
|
|
|
|
// jsonRespose.Success = false;
|
|
|
// jsonRespose.Message = "读取文件出错,请确认文件正确性" + e.Message;
|
|
|
// return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
//}
|
|
|
|
|
|
var json2 = JsonConvert.Serialize(new { success = result.Success, Message = result.Message });
|
|
|
return new ContentResult() { Content = json2 };
|
|
|
}
|
|
|
|
|
|
[HttpGet]
|
|
|
public ContentResult ImportXmlBs(string fullname,string USERID,string SHOWNAME,string COMPANYID) {
|
|
|
|
|
|
var result = DecHeadDAL.Deal381XML(fullname, USERID, SHOWNAME, COMPANYID);
|
|
|
|
|
|
var json2 = JsonConvert.Serialize(new { success = result.Success, Message = result.Message });
|
|
|
return new ContentResult() { Content = json2 };
|
|
|
}
|
|
|
//移动到DAL层 以方便被调用
|
|
|
public DBResult Deal381XML(string filename) {
|
|
|
|
|
|
var result = new DBResult();
|
|
|
try
|
|
|
{
|
|
|
XmlSerializer serializer = new XmlSerializer(typeof(SHIPMENT_CDF_INBOUND_V2));
|
|
|
using (FileStream fs = new FileStream(filename, FileMode.Open))
|
|
|
{
|
|
|
SHIPMENT_CDF_INBOUND_V2 SHIPMENTLIST = (SHIPMENT_CDF_INBOUND_V2)serializer.Deserialize(fs);
|
|
|
result = DecHeadDAL.ImportXmlBs(SHIPMENTLIST, Session["USERID"].ToString(), Session["SHOWNAME"].ToString(), Session["COMPANYID"].ToString());
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
result.SetErrorInfo("读取文件出错,请确认文件正确性:" + e.Message);
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
public static bool TryToInt32(object value, out int result)
|
|
|
{
|
|
|
if (value == null)
|
|
|
{
|
|
|
result = 0;
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
return int.TryParse(value.ToString(), out result);
|
|
|
}
|
|
|
public static bool TryToDecimal(object value, out Decimal result)
|
|
|
{
|
|
|
|
|
|
if (value == null)
|
|
|
{
|
|
|
result = 0;
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
return Decimal.TryParse(value.ToString(), out result);
|
|
|
}
|
|
|
|
|
|
public static string GetTextByCode(EnumerableRowCollection<DataRow> emlistQuery, string emtype, string emcode)
|
|
|
{
|
|
|
var result = "";
|
|
|
var emlists =
|
|
|
emlistQuery.Where(p => p.Field<string>("type") == emtype && p.Field<string>("Value") == emcode);
|
|
|
foreach (DataRow em in emlists)
|
|
|
{
|
|
|
result = em.Field<string>("Name");
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public static string GetCodeByText(EnumerableRowCollection<DataRow> emlistQuery, string emtype, string emname)
|
|
|
{
|
|
|
var result = "";
|
|
|
var emlists =
|
|
|
emlistQuery.Where(p => p.Field<string>("type") == emtype && p.Field<string>("Name") == emname);
|
|
|
foreach (DataRow em in emlists)
|
|
|
{
|
|
|
result = em.Field<string>("Value");
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
private const string OPAPPLYFilePath= "../../UploadFiles/OpApply";
|
|
|
private const string LOGICNAME_381 = "381HEAD";
|
|
|
|
|
|
//移动到DAL层
|
|
|
public DBResult ImportXmlBs(SHIPMENT_CDF_INBOUND_V2 SHIPMENT, string userid, string showname, string companyid)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
int blcount = 0;
|
|
|
var CCS_HEADERLIST = SHIPMENT.CCS_HEADER;
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var items in CCS_HEADERLIST)
|
|
|
{
|
|
|
var OPAPPLY = MsOpApplyDAL.GetData(" CUSTOMNO='" + items.CCS_NUMBER + "'");
|
|
|
var needinsert = false;//需要新建 还是更新信息
|
|
|
if (string.IsNullOrWhiteSpace(OPAPPLY.CUSTOMNO))
|
|
|
{
|
|
|
needinsert = true;
|
|
|
}
|
|
|
#region 报关信息
|
|
|
OPAPPLY.CUSTOMNO = items.CCS_NUMBER;
|
|
|
//根据报关单号 结尾0出口 结尾1进口
|
|
|
OPAPPLY.setbstype();
|
|
|
OPAPPLY.BSSTATUS = false;
|
|
|
OPAPPLY.FEESTATUS = false;
|
|
|
OPAPPLY.BSDATE = DateTime.Now;
|
|
|
OPAPPLY.CUSTOMDATE = items.DECLARATION_DATE;//报关日期=申报日期
|
|
|
OPAPPLY.OPDATE = items.IMPORT_EXPORT_DATE;//业务日期=申报日期
|
|
|
OPAPPLY.MBLNO = items.BL_NUMBER;//20210610 从BLNo改为使用 BL_NUMBER
|
|
|
OPAPPLY.INPUTBY = showname;
|
|
|
OPAPPLY.CORPID = companyid;
|
|
|
OPAPPLY.CONTRACTNO = items.CONTRACT_NUMBER;
|
|
|
OPAPPLY.ACCDATE = DateTime.Now.ToString("yyyy-MM");
|
|
|
|
|
|
if (needinsert)
|
|
|
{
|
|
|
OPAPPLY.DbOperationType = DbOperationType.DbotIns;
|
|
|
OPAPPLY.ModelUIStatus = "I";
|
|
|
|
|
|
OPAPPLY.BSNO = Guid.NewGuid().ToString();
|
|
|
OPAPPLY.MASTERNO = OPAPPLY.BSNO;
|
|
|
var _r = MsOpApplyDAL.getCUSTNO(OPAPPLY, userid, showname, companyid);
|
|
|
if (_r.Success)
|
|
|
{
|
|
|
OPAPPLY.CUSTNO = _r.Data.ToString();
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
OPAPPLY.DbOperationType = DbOperationType.DbotUpd;
|
|
|
OPAPPLY.ModelUIStatus = "E";
|
|
|
}
|
|
|
//OPAPPLY.CUSTNO = items.INTERNAL_CCS;
|
|
|
OPAPPLY.CUSTOMNO = items.CCS_NUMBER;//20210609 经过比对确认这个字段是博世写报关单号的字段
|
|
|
OPAPPLY.BOOKNO = items.HANDBOOK_NUMBER;
|
|
|
OPAPPLY.BYCUSTOM = items.DECLARATION_PORT;
|
|
|
OPAPPLY.EXPCUSTOMTYPE = items.IMPORT_EXPORT_PORT;
|
|
|
OPAPPLY.ETD = items.IMPORT_EXPORT_DATE;
|
|
|
OPAPPLY.BSTYPE = items.TRANSPORTATION_METHOD;
|
|
|
OPAPPLY.VESSEL = items.TRAF_NAME;
|
|
|
OPAPPLY.VOYNO = items.VOYAGE_NUMBER;
|
|
|
if (string.IsNullOrEmpty(OPAPPLY.ENTERP))
|
|
|
OPAPPLY.ENTERP = items.CUSTOMS_BROKER_NAME;
|
|
|
OPAPPLY.ENTERPID = items.CUSTOMS_BROKER_CODE;
|
|
|
OPAPPLY.TRADETERM = items.TRADE_MODE;
|
|
|
OPAPPLY.PORTDISCHARGE = items.DESTINATION_PORT;
|
|
|
OPAPPLY.PKGS = Convert.ToDecimal(items.PIECES);
|
|
|
OPAPPLY.KGS = Convert.ToDecimal(items.GROSS_WEIGHT);
|
|
|
OPAPPLY.NETWEIGHT = Convert.ToDecimal(items.NET_WEIGHT);
|
|
|
OPAPPLY.ARCOUNTRY = items.COUNTRY;
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region 20210610邓羽 记录381头部信息
|
|
|
|
|
|
var HeadDic = new Dictionary<string, string>();
|
|
|
HeadDic.Add("ACTION", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.ACTION);
|
|
|
HeadDic.Add("COMPANY_CODE", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.COMPANY_CODE);
|
|
|
HeadDic.Add("ORG_CODE", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.ORG_CODE);
|
|
|
HeadDic.Add("PRIORITY", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.PRIORITY.ToString());
|
|
|
HeadDic.Add("MESSAGE_TYPE", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.MESSAGE_TYPE);
|
|
|
HeadDic.Add("USERID", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.USERID);
|
|
|
HeadDic.Add("RECEIVER", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.RECEIVER);
|
|
|
HeadDic.Add("SENDER", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.SENDER);
|
|
|
HeadDic.Add("BATCH_ID", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.BATCH_ID);
|
|
|
|
|
|
//HeadDic.Add("ORG_CODE", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.BUS_KEY.ORG_CODE);
|
|
|
HeadDic.Add("SHIPMENT_NUMBER", SHIPMENT.INTEGRATION_MESSAGE_CONTROL.BUS_KEY.SHIPMENT_NUMBER);
|
|
|
|
|
|
HeadDic.Add("INCOMING_STATUS", items.INCOMING_STATUS);
|
|
|
|
|
|
HeadDic.Add("INTERNAL_CCS", items.INTERNAL_CCS);
|
|
|
|
|
|
BasicDataRefDAL.SaveLogicInfo(OPAPPLY.BSNO, LOGICNAME_381, HeadDic);
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 单一窗口
|
|
|
SoftMng.BLL.sys_EnumerationBLL bllEM = new SoftMng.BLL.sys_EnumerationBLL();
|
|
|
var emlistdataset = bllEM.GetList("");
|
|
|
var emlisttable = emlistdataset.Tables[0];
|
|
|
var emlistQuery =
|
|
|
from emlist in emlisttable.AsEnumerable()
|
|
|
select emlist;
|
|
|
|
|
|
DecHead model = new DecHead();
|
|
|
model.AgentStatus = "暂存";
|
|
|
model.BSNO = OPAPPLY.BSNO;
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
model.EntryType = items.CCS_TYPE;
|
|
|
if (model.EntryType == "M") model.EntryType_Text = "无纸化通关";
|
|
|
if (model.EntryType == "O") model.EntryType_Text = "普通报关单";
|
|
|
if (model.EntryType == "L") model.EntryType_Text = "为带报关单清单的报关单";
|
|
|
if (model.EntryType == "W") model.EntryType_Text = "无纸报关类型";
|
|
|
if (model.EntryType == "D") model.EntryType_Text = "既是清单又是无纸报关的情况";
|
|
|
model.EntryId = items.CCS_NUMBER;
|
|
|
model.ManualNo = items.HANDBOOK_NUMBER;
|
|
|
model.CustomMaster = items.DECLARATION_PORT;
|
|
|
model.CustomMaster_Text = GetTextByCode(emlistQuery, "关区代码", model.CustomMaster);
|
|
|
model.IEPort = items.IMPORT_EXPORT_PORT;
|
|
|
model.IEPort_Text = GetTextByCode(emlistQuery, "关区代码", model.IEPort);
|
|
|
model.ContrNo = items.CONTRACT_NUMBER;
|
|
|
if (!string.IsNullOrEmpty(items.IMPORT_EXPORT_DATE))
|
|
|
model.IEDate = Convert.ToDateTime(items.IMPORT_EXPORT_DATE);
|
|
|
model.BillNo = items.BL_NUMBER;
|
|
|
model.TrafMode = items.TRANSPORTATION_METHOD;
|
|
|
model.TrafMode_Text = GetTextByCode(emlistQuery, "运输方式", model.TrafMode);
|
|
|
model.TrafName = items.TRAF_NAME;
|
|
|
model.NativeVoyageNo = items.VOYAGE_NUMBER;
|
|
|
model.TradeCode = items.TRADING_COMPANY_CODE;
|
|
|
model.TradeName = items.TRADING_COMPANY_NAME;
|
|
|
model.OwnerCode = items.RECEIVER_COMPANY_CODE;
|
|
|
model.OwnerName = items.RECEIVER_COMPANY_NAME;
|
|
|
model.AgentCode = items.CUSTOMS_BROKER_CODE;
|
|
|
model.AgentName = items.CUSTOMS_BROKER_NAME;
|
|
|
model.TradeCountry = items.COUNTRY;
|
|
|
model.TradeCountry_Text = GetTextByCode(emlistQuery, "国别地区", model.TradeCountry);
|
|
|
model.TradeMode = items.TRADE_MODE;
|
|
|
model.TradeMode_Text = GetTextByCode(emlistQuery, "监管方式", model.TradeMode);
|
|
|
model.TransMode = items.TRANSACTION_METHOD;
|
|
|
model.TransMode_Text = GetTextByCode(emlistQuery, "成交方式", model.TransMode);
|
|
|
model.CutMode = items.TAX_OPTION;
|
|
|
model.CutMode_Text = GetTextByCode(emlistQuery, "征免性质", model.CutMode);
|
|
|
model.FeeMark = items.FREIGHT_COST_BASIS;
|
|
|
decimal feerate = 0;
|
|
|
TryToDecimal(items.FREIGHT_RATE, out feerate);
|
|
|
model.FeeRate = feerate;
|
|
|
model.FeeCurr = items.FREIGHT_CURRENCY;
|
|
|
model.FeeCurr_Text = GetTextByCode(emlistQuery, "币别", model.FeeCurr);
|
|
|
model.LicenseNo = items.PERMIT;
|
|
|
model.InsurMark = items.INSURANCE_FEE_BASIS;
|
|
|
decimal InsurRate = 0;
|
|
|
TryToDecimal(items.INSURANCE_RATE, out InsurRate);
|
|
|
model.InsurRate = InsurRate;
|
|
|
|
|
|
model.FeeRate = feerate;
|
|
|
model.InsurCurr = items.INSURANCE_CURRENCY;
|
|
|
model.InsurCurr_Text = GetTextByCode(emlistQuery, "币别", model.InsurCurr);
|
|
|
model.ApprNo = items.MOFCOM_APPROVAL_NUMBER;
|
|
|
model.OtherMark = items.MISCELLANEOUS_EXPENSE_BASIS;
|
|
|
|
|
|
decimal OtherRate = 0;
|
|
|
TryToDecimal(items.MISCELLANEOUS_EXPENSE_RATE, out OtherRate);
|
|
|
model.OtherRate = OtherRate;
|
|
|
model.OtherCurr = items.MISCELLANEOUS_EXPENSE_CURRENCY;
|
|
|
model.OtherCurr_Text = GetTextByCode(emlistQuery, "币别", model.OtherCurr);
|
|
|
model.WrapType = items.PACKAGING_TYPE;
|
|
|
model.WrapType_Text = GetTextByCode(emlistQuery, "包装种类", model.WrapType);
|
|
|
|
|
|
Int32 PackNo = 0;
|
|
|
TryToInt32(items.PIECES, out PackNo);
|
|
|
model.PackNo = PackNo;
|
|
|
|
|
|
decimal NetWt = 0;
|
|
|
TryToDecimal(items.NET_WEIGHT, out NetWt);
|
|
|
model.NetWt = NetWt;
|
|
|
|
|
|
decimal GrossWet = 0;
|
|
|
TryToDecimal(items.GROSS_WEIGHT, out GrossWet);
|
|
|
model.GrossWet = GrossWet;
|
|
|
|
|
|
model.NoteS = items.REMARK;
|
|
|
model.SeqNo = items.E_PORT_DECLARATION_ID;
|
|
|
model.ChkSurety = items.ChkSurety;
|
|
|
model.BillType = items.BillType;
|
|
|
model.AgentCodeScc = items.AgentCodeScc;
|
|
|
model.OwnerCodeScc = items.OwnerCodeScc;
|
|
|
model.TradeCoScc = items.TradeCodeScc;
|
|
|
model.CopCodeScc = items.CopCodeScc;
|
|
|
model.PromiseItmes = items.PromiseItmes;
|
|
|
model.TradeAreaCode = items.TradeAreaCode;
|
|
|
// model.TrnHead = items.TradeCodeScc;
|
|
|
model.PreEntryId = items.PreEntryId;
|
|
|
model.Type = items.Type;
|
|
|
model.OverseasConsignorCode = items.OverseasConsignorCode;
|
|
|
model.OverseasConsignorCname = items.OverseasConsignorCname;
|
|
|
model.OverseasConsignorEname = items.OverseasConsignorEname;
|
|
|
model.OverseasConsignorAddr = items.OverseasConsignorAddr;
|
|
|
model.OverseasConsigneeCode = items.OverseasConsigneeCode;
|
|
|
model.OverseasConsigneeEname = items.OverseasConsigneeEname;
|
|
|
model.GoodsPlace = items.GoodsPlace;
|
|
|
model.MarkNo = items.MarkNo;
|
|
|
model.DespPortCode = items.DespPortCode;
|
|
|
model.EntyPortCode = items.EntyPortCode;
|
|
|
model.DeclareName = items.DeclareName;
|
|
|
model.NoOtherPack = items.NoOtherPack;
|
|
|
model.DeclTrnRel = items.DeclTrnRel;
|
|
|
model.EdiId = items.EdiId;
|
|
|
model.CheckFlow = items.CheckFlow;
|
|
|
model.TaxAaminMark = items.TaxAaminMark;
|
|
|
model.BLNo = items.BLNo;
|
|
|
model.InspOrgCode = items.InspOrgCode;
|
|
|
model.SpecDeclFlag = items.SpecDeclFlag;
|
|
|
model.PurpOrgCode = items.PurpOrgCode;
|
|
|
if (!string.IsNullOrEmpty(items.DespDate))
|
|
|
model.DespDate = DateTime.ParseExact(items.DespDate, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
|
|
|
if (!string.IsNullOrEmpty(items.CmplDschrgDt))
|
|
|
model.CmplDschrgDt = DateTime.ParseExact(items.CmplDschrgDt, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
|
|
|
model.CorrelationReasonFlag = items.CorrelationReasonFlag;
|
|
|
model.VsaOrgCode = items.VsaOrgCode;
|
|
|
model.OrigBoxFlag = items.OrigBoxFlag;
|
|
|
model.CorrelationNo = items.CorrelationNo;
|
|
|
model.EdiRemark = items.EdiRemark;
|
|
|
model.EdiRemark2 = items.EdiRemark2;
|
|
|
model.TradeCiqCode = items.TradeCiqCode;
|
|
|
model.OwnerCiqCode = items.OwnerCiqCode;
|
|
|
model.DeclCiqCode = items.DeclCiqCode;
|
|
|
model.OrgCode = items.OrgCode;
|
|
|
bll.Add(model);
|
|
|
#endregion
|
|
|
List<DecGoodsLimit> list3 = new List<DecGoodsLimit>();
|
|
|
decimal TOTAL_AMOUNT = 0;
|
|
|
if (items.CCS_DETAIL != null)
|
|
|
foreach (var GOOD in items.CCS_DETAIL)
|
|
|
{
|
|
|
OPAPPLY.CURRENCY = GOOD.CURRENCY;
|
|
|
TOTAL_AMOUNT = TOTAL_AMOUNT + GOOD.TOTAL_AMOUNT;
|
|
|
var Dec = new DecList();
|
|
|
Dec.PID = model.GID;
|
|
|
Dec.GID = Guid.NewGuid().ToString();
|
|
|
Dec.GNo = GOOD.SEQUENCE_NUMBER;
|
|
|
Dec.ContrItem = GOOD.CUSTOMS_ITEM_NUMBER;
|
|
|
Dec.ExgVersion = GOOD.PRODUCT_VERSION_NUMBER;
|
|
|
Dec.CodeTS = GOOD.HS_CODE;
|
|
|
Dec.GName = GOOD.CHINESE_DESCRIPTION;
|
|
|
Dec.GModel = GOOD.MODEL;
|
|
|
Dec.GQty = GOOD.DECLARATION_QTY;
|
|
|
Dec.GUnit = GOOD.CUSTOMS_UM;
|
|
|
Dec.GUnit_Text = GetTextByCode(emlistQuery, "成交计量单位", Dec.GUnit);
|
|
|
Dec.FirstQty = GOOD.CUSTOMS_QUANTITY;
|
|
|
Dec.FirstUnit = GOOD.FIRST_CUSTOMS_UM;
|
|
|
Dec.FirstUnit_Text = GetTextByCode(emlistQuery, "成交计量单位", Dec.FirstUnit);
|
|
|
|
|
|
decimal SecondQty = 0;
|
|
|
TryToDecimal(GOOD.SECOND_CUSTOMS_QUANTITY, out SecondQty);
|
|
|
Dec.SecondQty = SecondQty;
|
|
|
|
|
|
Dec.SecondUnit = GOOD.SECOND_CUSTOMS_UM;
|
|
|
Dec.SecondUnit_Text = GetTextByCode(emlistQuery, "成交计量单位", Dec.SecondUnit);
|
|
|
decimal DeclPrice = 0;
|
|
|
TryToDecimal(GOOD.UNIT_PRICE, out DeclPrice);
|
|
|
Dec.DeclPrice = DeclPrice;
|
|
|
|
|
|
|
|
|
Dec.DeclTotal = GOOD.TOTAL_AMOUNT;
|
|
|
Dec.TradeCurr = GOOD.CURRENCY;
|
|
|
Dec.TradeCurr_Text = GetTextByCode(emlistQuery, "币别", Dec.TradeCurr);
|
|
|
Dec.OriginCountry = GOOD.COUNTRY;
|
|
|
Dec.OriginCountry_Text = GetTextByCode(emlistQuery, "国别地区", Dec.OriginCountry);
|
|
|
Dec.DutyMode = GOOD.TAX_OPTION;
|
|
|
Dec.DutyMode_Text = GetTextByCode(emlistQuery, "征免方式", Dec.DutyMode);
|
|
|
Dec.DestinationCountry = GOOD.DestinationCountry;
|
|
|
Dec.DestinationCountry_Text = GetTextByCode(emlistQuery, "征免方式", Dec.DestinationCountry);
|
|
|
Dec.CiqCode = GOOD.CiqCode;
|
|
|
Dec.DistrictCode = GOOD.DistrictCode;
|
|
|
Dec.DestCode = GOOD.DESTINATION_DISTRICT;
|
|
|
//Dec.Factor = GOOD.Factor;
|
|
|
//Dec.DeclGoodsEname = GOOD.DeclGoodsEname;
|
|
|
//Dec.OrigPlaceCode = GOOD.OrigPlaceCode;
|
|
|
Dec.Purpose = GOOD.Purpose;
|
|
|
Dec.Purpose_Text = GetTextByCode(emlistQuery, "用途", Dec.Purpose);
|
|
|
if (!string.IsNullOrEmpty(GOOD.ProdValidDt))
|
|
|
Dec.ProdValidDt = DateTime.ParseExact(GOOD.ProdValidDt, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); ;
|
|
|
|
|
|
Int32 ProdQgp = 0;
|
|
|
TryToInt32(GOOD.ProdQgp, out ProdQgp);
|
|
|
Dec.ProdQgp = ProdQgp;
|
|
|
|
|
|
Dec.GoodsAttr = GOOD.GoodsAttr;
|
|
|
Dec.GoodsAttr_Text = GetTextByCode(emlistQuery, "货物属性", Dec.GoodsAttr);
|
|
|
Dec.Stuff = GOOD.Stuff;
|
|
|
Dec.Uncode = GOOD.Uncode;
|
|
|
Dec.DangName = GOOD.DangName;
|
|
|
Int32 DangPackType = 0;
|
|
|
TryToInt32(GOOD.DangPackType, out DangPackType);
|
|
|
Dec.ProdQgp = DangPackType;
|
|
|
Dec.DangPackSpec = GOOD.DangPackSpec;
|
|
|
Dec.DangPackSpec_Text = GetTextByCode(emlistQuery, "危包规格", Dec.DangPackSpec);
|
|
|
Dec.EngManEntCnm = GOOD.EngManEntCnm;
|
|
|
Int32 NoDangFlag = 0;
|
|
|
TryToInt32(GOOD.NoDangFlag, out NoDangFlag);
|
|
|
Dec.NoDangFlag = NoDangFlag;
|
|
|
Dec.GoodsSpec = GOOD.GoodsSpec;
|
|
|
Dec.GoodsModel = GOOD.GoodsModel;
|
|
|
Dec.GoodsBrand = GOOD.GoodsBrand;
|
|
|
Dec.ProduceDate = GOOD.ProduceDate;
|
|
|
Dec.ProdBatchNo = GOOD.ProdBatchNo;
|
|
|
lbll.Add(Dec);
|
|
|
//Dec.CiqName = GOOD.CiqName;
|
|
|
//Dec.MnufctrRegno = GOOD.MnufctrRegno;
|
|
|
//Dec.MnufctrRegName = GOOD.MnufctrRegName;
|
|
|
if (GOOD.DecGoodsLimits!=null)
|
|
|
foreach (var GOODLIMIT in GOOD.DecGoodsLimits)
|
|
|
{
|
|
|
var DecGood = new DecGoodsLimit();
|
|
|
DecGood.PID = Dec.GID;
|
|
|
DecGood.GID = Guid.NewGuid().ToString();
|
|
|
DecGood.GoodsNo = GOODLIMIT.GoodsNo;
|
|
|
DecGood.LicTypeCode = GOODLIMIT.LicTypeCode;
|
|
|
DecGood.LicTypeCode_Text = GetTextByCode(emlistQuery, "许可证类别", DecGood.LicTypeCode);
|
|
|
DecGood.LicenceNo = GOODLIMIT.LicenceNo;
|
|
|
DecGood.LicWrtofDetailNo = GOODLIMIT.LicWrtofDetailNo;
|
|
|
DecGood.LicWrtofQty = Convert.ToInt32(GOODLIMIT.LicWrtofQty);
|
|
|
gbll.Add(DecGood);
|
|
|
if (GOODLIMIT.DecGoodsLimitVin != null)
|
|
|
foreach (var GOODLIMITVIN in GOODLIMIT.DecGoodsLimitVin)
|
|
|
{
|
|
|
var DecGoodvin = new DecGoodsLimitVin();
|
|
|
DecGoodvin.PID = DecGood.GID;
|
|
|
DecGoodvin.GID = Guid.NewGuid().ToString();
|
|
|
////DecGoodvin.LicenceNo = GOODLIMITVIN.LicenceNo;
|
|
|
//DecGoodvin.LicTypeCode = GOODLIMITVIN.LicTypeCode;
|
|
|
DecGoodvin.VinNo = GOODLIMITVIN.VinNo;
|
|
|
if (!string.IsNullOrEmpty(GOODLIMITVIN.BillLadDate))
|
|
|
DecGoodvin.BillLadDate = DateTime.ParseExact(GOODLIMITVIN.BillLadDate, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
|
|
|
DecGoodvin.QualityQgp = GOODLIMITVIN.QualityQgp;
|
|
|
DecGoodvin.MotorNo = GOODLIMITVIN.MotorNo;
|
|
|
DecGoodvin.VinCode = GOODLIMITVIN.VinCode;
|
|
|
DecGoodvin.ChassisNo = GOODLIMITVIN.ChassisNo;
|
|
|
|
|
|
Int32 InvoiceNum = 0;
|
|
|
TryToInt32(GOODLIMITVIN.InvoiceNum, out InvoiceNum);
|
|
|
DecGoodvin.InvoiceNum = InvoiceNum;
|
|
|
|
|
|
DecGoodvin.ProdCnnm = GOODLIMITVIN.ProdCnnm;
|
|
|
DecGoodvin.ProdEnnm = GOODLIMITVIN.ProdEnnm;
|
|
|
DecGoodvin.ModelEn = GOODLIMITVIN.ModelEn;
|
|
|
decimal PricePerUnit = 0;
|
|
|
TryToDecimal(GOODLIMITVIN.PricePerUnit, out PricePerUnit);
|
|
|
DecGoodvin.PricePerUnit = PricePerUnit;
|
|
|
DecGoodvin.InvoiceNo = GOODLIMITVIN.InvoiceNo;
|
|
|
vbll.Add(DecGoodvin);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
OPAPPLY.CARGOVALUE = TOTAL_AMOUNT.ToString();
|
|
|
//var modb = new ModelObjectDB();
|
|
|
// var tempresult = modb.Save(OPAPPLY);
|
|
|
var bodyList = new List<MsOpCtn>();
|
|
|
if (items.CONTAINER_DETAIL != null)
|
|
|
foreach (var ctn in items.CONTAINER_DETAIL)
|
|
|
{
|
|
|
var opctn = new MsOpCtn();
|
|
|
opctn.BSNO ="*";
|
|
|
opctn.CNTRNO = ctn.CONTAINER_NUMBER;
|
|
|
opctn.CTNALL = ctn.CONTAINER_TYPE;
|
|
|
opctn.KGS = Convert.ToDecimal(ctn.GoodsContaWt);
|
|
|
Container ctnitem = new Container();
|
|
|
ctnitem.PID = model.GID;
|
|
|
ctnitem.GID = Guid.NewGuid().ToString();
|
|
|
ctnitem.ContainerId = ctn.CONTAINER_NUMBER;
|
|
|
ctnitem.ContainerMd = ctn.CONTAINER_TYPE;
|
|
|
decimal ContainerWt = 0;
|
|
|
TryToDecimal(ctn.CONTAINER_TARE_WEIGHT, out ContainerWt);
|
|
|
ctnitem.ContainerWt = ContainerWt;
|
|
|
|
|
|
ctnitem.GoodsNo = ctn.GoodsNo;
|
|
|
decimal GoodsContaWt = 0;
|
|
|
TryToDecimal(ctn.GoodsContaWt, out GoodsContaWt);
|
|
|
ctnitem.GoodsContaWt = GoodsContaWt;
|
|
|
cbll.Add(ctnitem);
|
|
|
|
|
|
}
|
|
|
if (items.ATTACHED_DOCUMENT_DETAIL != null)
|
|
|
foreach (var DOC in items.ATTACHED_DOCUMENT_DETAIL)
|
|
|
{
|
|
|
LicenseDocu docitem = new LicenseDocu();
|
|
|
docitem.PID = model.GID;
|
|
|
docitem.GID = Guid.NewGuid().ToString();
|
|
|
docitem.DocuCode = DOC.DOCUMENT_TYPE;
|
|
|
docitem.DocuCode_Text = GetTextByCode(emlistQuery, "随附单证代码", docitem.DocuCode);
|
|
|
docitem.CertCode = DOC.DOCUMENT_NUMBER;
|
|
|
dbll.Add(docitem);
|
|
|
}
|
|
|
if (items.DecOtherPack != null)
|
|
|
foreach (var OTHERPACK in items.DecOtherPack)
|
|
|
{
|
|
|
DecOtherPack otheritem = new DecOtherPack();
|
|
|
otheritem.PID = model.GID;
|
|
|
otheritem.GID = Guid.NewGuid().ToString();
|
|
|
otheritem.PackQty = OTHERPACK.PackQty;
|
|
|
otheritem.PackType = OTHERPACK.PackType;
|
|
|
opbll.Add(otheritem);
|
|
|
}
|
|
|
if (items.DecCopLimits != null)
|
|
|
foreach (var COPLIMITLIST in items.DecCopLimits)
|
|
|
{
|
|
|
DecCopLimit otheritem = new DecCopLimit();
|
|
|
otheritem.PID = model.GID;
|
|
|
otheritem.GID = Guid.NewGuid().ToString();
|
|
|
otheritem.EntQualifNo = COPLIMITLIST.EntQualifNo;
|
|
|
otheritem.EntQualifTypeCode = COPLIMITLIST.EntQualifTypeCode;
|
|
|
otheritem.EntQualifTypeCode_Text = GetTextByCode(emlistQuery, "企业资质类别", otheritem.EntQualifTypeCode);
|
|
|
clbll.Add(otheritem);
|
|
|
}
|
|
|
|
|
|
var modb = new ModelObjectDB();
|
|
|
result = modb.Save(OPAPPLY);
|
|
|
if (result.Success)
|
|
|
{
|
|
|
MsOpApplyDAL.SaveCtnDetail(OPAPPLY.BSNO, bodyList, userid, true);
|
|
|
}
|
|
|
blcount = blcount + 1;
|
|
|
|
|
|
}
|
|
|
result.Message=""+blcount+"票业务";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 20210603 百特凯瑞 根据报关业务信息 生成两个xml文件 代号383 385
|
|
|
/// 参数为报关单号 返回值为两个文件名 ,用;;隔开
|
|
|
/// </summary>
|
|
|
/// <param name="SHIPMENT"></param>
|
|
|
/// <param name="userid"></param>
|
|
|
/// <param name="showname"></param>
|
|
|
/// <param name="companyid"></param>
|
|
|
/// <returns></returns>
|
|
|
///
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
public ContentResult GetCreateXmlBs(string CUSTOMNOs) {
|
|
|
var result = new DBResult();
|
|
|
var jsonRespose = new JsonResponse { Success = false, Message = "" };
|
|
|
|
|
|
try
|
|
|
{
|
|
|
result = DoCreateXmlBs(CUSTOMNOs);
|
|
|
|
|
|
var json = JsonConvert.Serialize(new { Success = result.Success, Message = result.Message,data=result.Data });
|
|
|
return new ContentResult() { Content = json };
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
|
|
|
jsonRespose.Success = false;
|
|
|
jsonRespose.Message = "生成报文出错:" + e.Message;
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
}
|
|
|
|
|
|
}
|
|
|
private DBResult DoCreateXmlBs(string CUSTOMNOs)//, string userid, string showname, string companyid
|
|
|
{
|
|
|
var CUSTOMNOList = CUSTOMNOs.Split(',').ToList();
|
|
|
|
|
|
|
|
|
//var SHIPMENT = Get383Xml(CUSTOMNOList);
|
|
|
|
|
|
//XmlSerializer XML_1 = new XmlSerializer(SHIPMENT.GetType());
|
|
|
|
|
|
//var path = Server.MapPath("../../UploadFiles/OpApply");
|
|
|
|
|
|
//if (!Directory.Exists(path))
|
|
|
//{
|
|
|
// Directory.CreateDirectory(path);
|
|
|
//}
|
|
|
|
|
|
//var usercode = CookieConfig.GetCookie_UserCode(Request);
|
|
|
|
|
|
//string filename = path + "\\" + usercode + "_383.xml";
|
|
|
|
|
|
|
|
|
//if (System.IO.File.Exists(Path.GetFullPath(filename)))
|
|
|
//{
|
|
|
// System.IO.File.Delete(Path.GetFullPath(filename));
|
|
|
//}
|
|
|
|
|
|
|
|
|
//var tw = new StreamWriter(filename);
|
|
|
|
|
|
//XML_1.Serialize(tw, SHIPMENT);
|
|
|
|
|
|
//tw.Close();
|
|
|
|
|
|
var Filename383 = Get383XmlFile(CUSTOMNOList);
|
|
|
|
|
|
var Filename385 = Get385XmlFile(CUSTOMNOList);
|
|
|
|
|
|
var filename = Filename383 + ";;" + Filename385;
|
|
|
|
|
|
var result = new DBResult(true,"", filename);
|
|
|
|
|
|
|
|
|
result.Message = "";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
private string Get383XmlFile(List<string> CUSTOMNOList) {
|
|
|
|
|
|
var SHIPMENT = Get383Xml(CUSTOMNOList);
|
|
|
|
|
|
if (SHIPMENT == null) return "";
|
|
|
|
|
|
XmlSerializer XML_1 = new XmlSerializer(SHIPMENT.GetType());
|
|
|
|
|
|
var path = Server.MapPath(OPAPPLYFilePath);
|
|
|
|
|
|
if (!Directory.Exists(path))
|
|
|
{
|
|
|
Directory.CreateDirectory(path);
|
|
|
}
|
|
|
|
|
|
var usercode = CookieConfig.GetCookie_UserCode(Request);
|
|
|
|
|
|
string filename = path + "\\" + usercode + "_383.xml";
|
|
|
|
|
|
|
|
|
if (System.IO.File.Exists(Path.GetFullPath(filename)))
|
|
|
{
|
|
|
System.IO.File.Delete(Path.GetFullPath(filename));
|
|
|
}
|
|
|
|
|
|
|
|
|
var tw = new StreamWriter(filename);
|
|
|
|
|
|
XML_1.Serialize(tw, SHIPMENT);
|
|
|
|
|
|
tw.Close();
|
|
|
|
|
|
var result = OPAPPLYFilePath +"/"+usercode + "_383.xml";
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
private SHIPMENT_CDF_OUTBOUND_V2 Get383Xml(List<string> CUSTOMNOList) {
|
|
|
var SHIPMENT = new SHIPMENT_CDF_OUTBOUND_V2();
|
|
|
var CCS_HEADERLIST = new MvcShipping.Models.MsOpApply_BOSH383.CCS_HEADER_TYPE[CUSTOMNOList.Count()];
|
|
|
|
|
|
var CCS_HEADERLIST_COUNT = 0;
|
|
|
|
|
|
|
|
|
var headinfo = new DSWeb.MvcShipping.Models.MsOpApply_BOSH383.SHIPMENT_CDF_OUTBOUND_V2INTEGRATION_MESSAGE_CONTROL();
|
|
|
|
|
|
|
|
|
foreach (var CUSTOMNO in CUSTOMNOList) {
|
|
|
|
|
|
var OPAPPLY = MsOpApplyDAL.GetData(" CUSTOMNO='" + CUSTOMNO + "'");
|
|
|
|
|
|
#region 20210610 获取逻辑信息表的数据 如无信息则返回空
|
|
|
|
|
|
var HeadDic = BasicDataRefDAL.GetLogicInfo(OPAPPLY.BSNO, LOGICNAME_381);
|
|
|
|
|
|
if (HeadDic == null || HeadDic.Count() == 0) return SHIPMENT;
|
|
|
|
|
|
headinfo.ACTION = HeadDic["ACTION"];
|
|
|
headinfo.COMPANY_CODE = HeadDic["COMPANY_CODE"];
|
|
|
headinfo.ORG_CODE = HeadDic["ORG_CODE"];
|
|
|
var _t = decimal.Parse(HeadDic["PRIORITY"]);
|
|
|
if (HeadDic["PRIORITY"] == "")
|
|
|
{
|
|
|
headinfo.PRIORITY = null;
|
|
|
}
|
|
|
else {
|
|
|
headinfo.PRIORITY = _t;
|
|
|
}
|
|
|
|
|
|
headinfo.MESSAGE_TYPE = HeadDic["MESSAGE_TYPE"];
|
|
|
headinfo.USERID = HeadDic["USERID"];
|
|
|
headinfo.RECEIVER = HeadDic["RECEIVER"];
|
|
|
headinfo.SENDER = HeadDic["SENDER"];
|
|
|
headinfo.BATCH_ID = HeadDic["BATCH_ID"];
|
|
|
headinfo.SOURCE_SYSTEM_TOKEN = "";
|
|
|
|
|
|
headinfo.BUS_KEY = new SHIPMENT_CDF_OUTBOUND_V2INTEGRATION_MESSAGE_CONTROLBUS_KEY();
|
|
|
headinfo.BUS_KEY.ORG_CODE= HeadDic["ORG_CODE"];
|
|
|
headinfo.BUS_KEY.SHIPMENT_NUMBER = HeadDic["SHIPMENT_NUMBER"];
|
|
|
|
|
|
SHIPMENT.INTEGRATION_MESSAGE_CONTROL = headinfo;
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
var items = new DSWeb.MvcShipping.Models.MsOpApply_BOSH383.CCS_HEADER_TYPE();
|
|
|
|
|
|
var bll = new DecHeadBLL();
|
|
|
var model = bll.GetModelList("BSNO='" + OPAPPLY.BSNO + "'")[0];
|
|
|
|
|
|
DecListBLL lbll = new DecListBLL();
|
|
|
var DecList = lbll.GetModelList("PID='" + model.GID + "'").ToList();
|
|
|
|
|
|
#region 报关信息
|
|
|
//20210610 增加三个节点
|
|
|
|
|
|
items.SHIPMENT_NUMBER = HeadDic["SHIPMENT_NUMBER"];
|
|
|
items.INTERNAL_SHIPMENT_NUMBER = "";
|
|
|
items.INCOMING_STATUS = HeadDic["INCOMING_STATUS"];
|
|
|
|
|
|
items.CCS_NUMBER= "";
|
|
|
//根据报关单号 结尾0出口 结尾1进口
|
|
|
//OPAPPLY.setbstype();
|
|
|
//OPAPPLY.BSSTATUS = false;
|
|
|
//OPAPPLY.FEESTATUS = false;
|
|
|
//OPAPPLY.BSDATE = DateTime.Now;
|
|
|
//items.DECLARATION_DATE = OPAPPLY.CUSTOMDATE; //报关日期=申报日期 在上传时 此字段改为使用单一窗口的申报日期 DDate
|
|
|
items.DECLARATION_DATE = model.DDateStr;//报关日期=申报日期 在上传时 此字段改为使用单一窗口的申报日期 DDate
|
|
|
items.IMPORT_EXPORT_DATE = OPAPPLY.OPDATE ;//业务日期=申报日期
|
|
|
items.BLNo = OPAPPLY.MBLNO ;
|
|
|
//OPAPPLY.INPUTBY = showname;
|
|
|
//OPAPPLY.CORPID = companyid;
|
|
|
items.CONTRACT_NUMBER=OPAPPLY.CONTRACTNO ;
|
|
|
//OPAPPLY.ACCDATE = DateTime.Now.ToString("yyyy-MM");
|
|
|
|
|
|
//if (needinsert)
|
|
|
//{
|
|
|
// OPAPPLY.DbOperationType = DbOperationType.DbotIns;
|
|
|
// OPAPPLY.ModelUIStatus = "I";
|
|
|
|
|
|
// OPAPPLY.BSNO = Guid.NewGuid().ToString();
|
|
|
// OPAPPLY.MASTERNO = OPAPPLY.BSNO;
|
|
|
// var _r = MsOpApplyDAL.getCUSTNO(OPAPPLY, userid, showname, companyid);
|
|
|
// if (_r.Success)
|
|
|
// {
|
|
|
// OPAPPLY.CUSTNO = _r.Data.ToString();
|
|
|
// }
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// OPAPPLY.DbOperationType = DbOperationType.DbotUpd;
|
|
|
// OPAPPLY.ModelUIStatus = "E";
|
|
|
//}
|
|
|
items.INTERNAL_CCS = HeadDic["INTERNAL_CCS"] ;
|
|
|
items.CCS_NUMBER = OPAPPLY.CUSTOMNO;
|
|
|
items.HANDBOOK_NUMBER=OPAPPLY.BOOKNO ;
|
|
|
items.DECLARATION_PORT=OPAPPLY.BYCUSTOM ;
|
|
|
items.IMPORT_EXPORT_PORT=OPAPPLY.EXPCUSTOMTYPE ;
|
|
|
items.IMPORT_EXPORT_DATE=OPAPPLY.ETD ;
|
|
|
items.TRANSPORTATION_METHOD=OPAPPLY.BSTYPE ;
|
|
|
items.TRAF_NAME=OPAPPLY.VESSEL ;
|
|
|
items.VOYAGE_NUMBER=OPAPPLY.VOYNO ;
|
|
|
items.CUSTOMS_BROKER_NAME=OPAPPLY.ENTERP ;
|
|
|
items.CUSTOMS_BROKER_CODE=OPAPPLY.ENTERPID ;
|
|
|
items.TRADE_MODE=OPAPPLY.TRADETERM ;
|
|
|
items.DESTINATION_PORT=OPAPPLY.PORTDISCHARGE ;
|
|
|
items.PIECES =OPAPPLY.PKGS.ToString();
|
|
|
items.GROSS_WEIGHT=OPAPPLY.KGS.ToString();
|
|
|
items.NET_WEIGHT =OPAPPLY.NETWEIGHT.ToString();
|
|
|
items.COUNTRY=OPAPPLY.ARCOUNTRY ;
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 单一窗口
|
|
|
SoftMng.BLL.sys_EnumerationBLL bllEM = new SoftMng.BLL.sys_EnumerationBLL();
|
|
|
var emlistdataset = bllEM.GetList("");
|
|
|
var emlisttable = emlistdataset.Tables[0];
|
|
|
var emlistQuery =
|
|
|
from emlist in emlisttable.AsEnumerable()
|
|
|
select emlist;
|
|
|
|
|
|
//DecHead model = new DecHead();
|
|
|
|
|
|
|
|
|
//model.AgentStatus = "暂存";
|
|
|
//model.BSNO = OPAPPLY.BSNO;
|
|
|
//model.GID = Guid.NewGuid().ToString();
|
|
|
//model.EntryType = items.CCS_TYPE;
|
|
|
//if (model.EntryType == "M") model.EntryType_Text = "无纸化通关";
|
|
|
//if (model.EntryType == "O") model.EntryType_Text = "普通报关单";
|
|
|
//if (model.EntryType == "L") model.EntryType_Text = "为带报关单清单的报关单";
|
|
|
//if (model.EntryType == "W") model.EntryType_Text = "无纸报关类型";
|
|
|
//if (model.EntryType == "D") model.EntryType_Text = "既是清单又是无纸报关的情况";
|
|
|
items.CCS_NUMBER = model.EntryId ;
|
|
|
items.HANDBOOK_NUMBER= model.ManualNo ;
|
|
|
items.DECLARATION_PORT=model.CustomMaster ;
|
|
|
//model.CustomMaster_Text = GetTextByCode(emlistQuery, "关区代码", model.CustomMaster);
|
|
|
items.IMPORT_EXPORT_PORT =model.IEPort ;
|
|
|
//.IEPort_Text = GetTextByCode(emlistQuery, "关区代码", model.IEPort);
|
|
|
items.CONTRACT_NUMBER=model.ContrNo ;
|
|
|
//if (!string.IsNullOrEmpty(items.IMPORT_EXPORT_DATE))
|
|
|
// model.IEDate = Convert.ToDateTime(items.IMPORT_EXPORT_DATE);
|
|
|
if (model.IEDate != null)
|
|
|
items.IMPORT_EXPORT_DATE = ((DateTime)model.IEDate).ToString("yyyy-MM-dd");
|
|
|
|
|
|
items.BL_NUMBER=model.BillNo ;
|
|
|
items.TRANSPORTATION_METHOD=model.TrafMode ;
|
|
|
//model.TrafMode_Text = GetTextByCode(emlistQuery, "运输方式", model.TrafMode);
|
|
|
items.TRAF_NAME=model.TrafName ;
|
|
|
items.VOYAGE_NUMBER=model.NativeVoyageNo ;
|
|
|
items.TRADING_COMPANY_CODE=model.TradeCode ;
|
|
|
items.TRADING_COMPANY_NAME=model.TradeName ;
|
|
|
items.RECEIVER_COMPANY_CODE=model.OwnerCode ;
|
|
|
items.RECEIVER_COMPANY_NAME=model.OwnerName ;
|
|
|
items.CUSTOMS_BROKER_CODE=model.AgentCode ;
|
|
|
items.CUSTOMS_BROKER_NAME=model.AgentName ;
|
|
|
items.COUNTRY= model.TradeCountry ;
|
|
|
//model.TradeCountry_Text = GetTextByCode(emlistQuery, "国别地区", model.TradeCountry);
|
|
|
items.TRADE_MODE=model.TradeMode ;
|
|
|
//model.TradeMode_Text = GetTextByCode(emlistQuery, "监管方式", model.TradeMode);
|
|
|
items.TRANSACTION_METHOD=model.TransMode ;
|
|
|
//model.TransMode_Text = GetTextByCode(emlistQuery, "成交方式", model.TransMode);
|
|
|
items.TAX_OPTION=model.CutMode ;
|
|
|
//model.CutMode_Text = GetTextByCode(emlistQuery, "征免性质", model.CutMode);
|
|
|
items.FREIGHT_COST_BASIS=model.FeeMark ;
|
|
|
//decimal feerate = 0;
|
|
|
//TryToDecimal(items.FREIGHT_RATE, out feerate);
|
|
|
//model.FeeRate = feerate;
|
|
|
items.FREIGHT_RATE = model.FeeRate.ToString();
|
|
|
items.FREIGHT_CURRENCY=model.FeeCurr ;
|
|
|
//model.FeeCurr_Text = GetTextByCode(emlistQuery, "币别", model.FeeCurr);
|
|
|
items.PERMIT=model.LicenseNo ;
|
|
|
items.INSURANCE_FEE_BASIS=model.InsurMark ;
|
|
|
//decimal InsurRate = 0;
|
|
|
//TryToDecimal(items.INSURANCE_RATE, out InsurRate);
|
|
|
//model.InsurRate = InsurRate;
|
|
|
items.INSURANCE_RATE = model.InsurRate.ToString();
|
|
|
|
|
|
//model.FeeRate = feerate;
|
|
|
items.INSURANCE_CURRENCY=model.InsurCurr ;
|
|
|
//model.InsurCurr_Text = GetTextByCode(emlistQuery, "币别", model.InsurCurr);
|
|
|
items.MOFCOM_APPROVAL_NUMBER=model.ApprNo ;
|
|
|
items.MISCELLANEOUS_EXPENSE_BASIS=model.OtherMark ;
|
|
|
|
|
|
//decimal OtherRate = 0;
|
|
|
//TryToDecimal(items.MISCELLANEOUS_EXPENSE_RATE, out OtherRate);
|
|
|
//model.OtherRate = OtherRate;
|
|
|
items.MISCELLANEOUS_EXPENSE_RATE = model.OtherRate.ToString();
|
|
|
|
|
|
items.MISCELLANEOUS_EXPENSE_CURRENCY=model.OtherCurr ;
|
|
|
//model.OtherCurr_Text = GetTextByCode(emlistQuery, "币别", model.OtherCurr);
|
|
|
items.PACKAGING_TYPE=model.WrapType ;
|
|
|
//model.WrapType_Text = GetTextByCode(emlistQuery, "包装种类", model.WrapType);
|
|
|
|
|
|
//Int32 PackNo = 0;
|
|
|
//TryToInt32(items.PIECES, out PackNo);
|
|
|
//model.PackNo = PackNo;
|
|
|
items.PIECES = model.PackNo.ToString();
|
|
|
|
|
|
//decimal NetWt = 0;
|
|
|
//TryToDecimal(items.NET_WEIGHT, out NetWt);
|
|
|
//model.NetWt = NetWt;
|
|
|
items.NET_WEIGHT = model.NetWt.ToString();
|
|
|
|
|
|
//decimal GrossWet = 0;
|
|
|
//TryToDecimal(items.GROSS_WEIGHT, out GrossWet);
|
|
|
//model.GrossWet = GrossWet;
|
|
|
items.GROSS_WEIGHT = model.GrossWet.ToString();
|
|
|
|
|
|
items.REMARK=model.NoteS ;
|
|
|
items.E_PORT_DECLARATION_ID=model.SeqNo ;
|
|
|
items.ChkSurety=model.ChkSurety ;
|
|
|
items.BillType=model.BillType ;
|
|
|
items.AgentCodeScc=model.AgentCodeScc ;
|
|
|
items.OwnerCodeScc=model.OwnerCodeScc ;
|
|
|
items.TradeCodeScc=model.TradeCoScc ;
|
|
|
items.CopCodeScc=model.CopCodeScc ;
|
|
|
items.PromiseItmes=model.PromiseItmes ;
|
|
|
items.TradeAreaCode=model.TradeAreaCode ;
|
|
|
// model.TrnHead = items.TradeCodeScc;
|
|
|
items.PreEntryId=model.PreEntryId ;
|
|
|
items.Type=model.Type ;
|
|
|
items.OverseasConsignorCode=model.OverseasConsignorCode ;
|
|
|
items.OverseasConsignorCname=model.OverseasConsignorCname ;
|
|
|
items.OverseasConsignorEname=model.OverseasConsignorEname ;
|
|
|
items.OverseasConsignorAddr=model.OverseasConsignorAddr ;
|
|
|
items.OverseasConsigneeCode=model.OverseasConsigneeCode ;
|
|
|
items.OverseasConsigneeEname=model.OverseasConsigneeEname ;
|
|
|
items.GoodsPlace=model.GoodsPlace ;
|
|
|
items.MarkNo=model.MarkNo ;
|
|
|
items.DespPortCode=model.DespPortCode ;
|
|
|
items.EntyPortCode=model.EntyPortCode ;
|
|
|
items.DeclareName= model.DeclareName ;
|
|
|
items.NoOtherPack=model.NoOtherPack ;
|
|
|
items.DeclTrnRel=model.DeclTrnRel ;
|
|
|
items.EdiId=model.EdiId ;
|
|
|
items.CheckFlow=model.CheckFlow ;
|
|
|
items.TaxAaminMark=model.TaxAaminMark ;
|
|
|
items.BLNo=model.BLNo ;
|
|
|
items.InspOrgCode=model.InspOrgCode ;
|
|
|
items.SpecDeclFlag=model.SpecDeclFlag ;
|
|
|
items.PurpOrgCode=model.PurpOrgCode ;
|
|
|
|
|
|
//if (!string.IsNullOrEmpty(items.DespDate))
|
|
|
// model.DespDate = DateTime.ParseExact(items.DespDate, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
|
|
|
//if (!string.IsNullOrEmpty(items.CmplDschrgDt))
|
|
|
// model.CmplDschrgDt = DateTime.ParseExact(items.CmplDschrgDt, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
|
|
|
|
|
|
if(model.DespDate!=null)
|
|
|
items.DespDate = ((DateTime)model.DespDate).ToString("yyyyMMdd");
|
|
|
|
|
|
if(model.CmplDschrgDt!=null)
|
|
|
items.CmplDschrgDt = ((DateTime)model.CmplDschrgDt).ToString("yyyyMMdd");
|
|
|
|
|
|
items.CorrelationReasonFlag=model.CorrelationReasonFlag ;
|
|
|
items.VsaOrgCode=model.VsaOrgCode ;
|
|
|
items.OrigBoxFlag=model.OrigBoxFlag ;
|
|
|
items.CorrelationNo=model.CorrelationNo ;
|
|
|
items.EdiRemark=model.EdiRemark ;
|
|
|
items.EdiRemark2=model.EdiRemark2 ;
|
|
|
items.TradeCiqCode=model.TradeCiqCode ;
|
|
|
items.OwnerCiqCode=model.OwnerCiqCode ;
|
|
|
items.DeclCiqCode=model.DeclCiqCode ;
|
|
|
//items.OrgCode=model.OrgCode ;//20210610 删去此节点
|
|
|
//bll.Add(model);
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
var DecListLength = DecList.Count();
|
|
|
var CCS_DETAILList = new MvcShipping.Models.MsOpApply_BOSH383.CCS_HEADER_TYPECCS_DETAIL[DecListLength];
|
|
|
var CCS_DETAILList_COUNT = 0;
|
|
|
foreach (var Dec in DecList) {
|
|
|
|
|
|
var CCS_DETAIL = new DSWeb.MvcShipping.Models.MsOpApply_BOSH383.CCS_HEADER_TYPECCS_DETAIL();
|
|
|
|
|
|
CCS_DETAIL.CURRENCY=OPAPPLY.CURRENCY ;
|
|
|
//TOTAL_AMOUNT = TOTAL_AMOUNT + CCS_DETAIL.TOTAL_AMOUNT;
|
|
|
//var Dec = new DecList();
|
|
|
//Dec.PID = model.GID;
|
|
|
//Dec.GID = Guid.NewGuid().ToString();
|
|
|
CCS_DETAIL.SEQUENCE_NUMBER=Dec.GNo ;
|
|
|
CCS_DETAIL.CUSTOMS_ITEM_NUMBER=Dec.ContrItem ;
|
|
|
CCS_DETAIL.PRODUCT_VERSION_NUMBER=Dec.ExgVersion ;
|
|
|
CCS_DETAIL.HS_CODE=Dec.CodeTS ;
|
|
|
CCS_DETAIL.CHINESE_DESCRIPTION=Dec.GName ;
|
|
|
CCS_DETAIL.MODEL=Dec.GModel ;
|
|
|
CCS_DETAIL.DECLARATION_QTY=Dec.GQty==null?0: (decimal)Dec.GQty;
|
|
|
CCS_DETAIL.CUSTOMS_UM=Dec.GUnit ;
|
|
|
//Dec.GUnit_Text = GetTextByCode(emlistQuery, "成交计量单位", Dec.GUnit);
|
|
|
|
|
|
|
|
|
CCS_DETAIL.CUSTOMS_QUANTITY= Dec.FirstQty==null?0:(decimal)Dec.FirstQty ;
|
|
|
CCS_DETAIL.FIRST_CUSTOMS_UM=Dec.FirstUnit ;
|
|
|
//Dec.FirstUnit_Text = GetTextByCode(emlistQuery, "成交计量单位", Dec.FirstUnit);
|
|
|
|
|
|
//decimal SecondQty = 0;
|
|
|
//TryToDecimal(CCS_DETAIL.SECOND_CUSTOMS_QUANTITY, out SecondQty);
|
|
|
//Dec.SecondQty = SecondQty;
|
|
|
CCS_DETAIL.SECOND_CUSTOMS_QUANTITY = Dec.SecondQty.ToString();
|
|
|
|
|
|
CCS_DETAIL.SECOND_CUSTOMS_UM=Dec.SecondUnit ;
|
|
|
//Dec.SecondUnit_Text = GetTextByCode(emlistQuery, "成交计量单位", Dec.SecondUnit);
|
|
|
//decimal DeclPrice = 0;
|
|
|
//TryToDecimal(CCS_DETAIL.UNIT_PRICE, out DeclPrice);
|
|
|
//Dec.DeclPrice = DeclPrice;
|
|
|
CCS_DETAIL.UNIT_PRICE = Dec.DeclPrice.ToString();
|
|
|
|
|
|
CCS_DETAIL.TOTAL_AMOUNT=Dec.DeclTotal==null?0: (decimal)Dec.DeclTotal ;
|
|
|
CCS_DETAIL.CURRENCY=Dec.TradeCurr ;
|
|
|
//Dec.TradeCurr_Text = GetTextByCode(emlistQuery, "币别", Dec.TradeCurr);
|
|
|
CCS_DETAIL.COUNTRY=Dec.OriginCountry ;
|
|
|
//Dec.OriginCountry_Text = GetTextByCode(emlistQuery, "国别地区", Dec.OriginCountry);
|
|
|
CCS_DETAIL.TAX_OPTION=Dec.DutyMode ;
|
|
|
//Dec.DutyMode_Text = GetTextByCode(emlistQuery, "征免方式", Dec.DutyMode);
|
|
|
CCS_DETAIL.DestinationCountry=Dec.DestinationCountry ;
|
|
|
//Dec.DestinationCountry_Text = GetTextByCode(emlistQuery, "征免方式", Dec.DestinationCountry);
|
|
|
CCS_DETAIL.CiqCode=Dec.CiqCode ;
|
|
|
CCS_DETAIL.DistrictCode=Dec.DistrictCode ;
|
|
|
CCS_DETAIL.DESTINATION_DISTRICT=Dec.DestCode ;
|
|
|
//Dec.Factor = CCS_DETAIL.Factor;
|
|
|
//Dec.DeclGoodsEname = CCS_DETAIL.DeclGoodsEname;
|
|
|
//Dec.OrigPlaceCode = CCS_DETAIL.OrigPlaceCode;
|
|
|
CCS_DETAIL.Purpose=Dec.Purpose ;
|
|
|
//Dec.Purpose_Text = GetTextByCode(emlistQuery, "用途", Dec.Purpose);
|
|
|
//if (!string.IsNullOrEmpty(CCS_DETAIL.ProdValidDt))
|
|
|
// Dec.ProdValidDt = DateTime.ParseExact(CCS_DETAIL.ProdValidDt, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); ;
|
|
|
if(Dec.ProdValidDt!=null)
|
|
|
CCS_DETAIL.ProdValidDt = ((DateTime)Dec.ProdValidDt).ToString("yyyyMMdd");
|
|
|
|
|
|
//Int32 ProdQgp = 0;
|
|
|
//TryToInt32(CCS_DETAIL.ProdQgp, out ProdQgp);
|
|
|
//Dec.ProdQgp = ProdQgp;
|
|
|
CCS_DETAIL.ProdQgp = Dec.ProdQgp.ToString();
|
|
|
|
|
|
CCS_DETAIL.GoodsAttr=Dec.GoodsAttr ;
|
|
|
//Dec.GoodsAttr_Text = GetTextByCode(emlistQuery, "货物属性", Dec.GoodsAttr);
|
|
|
CCS_DETAIL.Stuff=Dec.Stuff ;
|
|
|
CCS_DETAIL.Uncode=Dec.Uncode ;
|
|
|
CCS_DETAIL.DangName=Dec.DangName ;
|
|
|
|
|
|
//Int32 DangPackType = 0;
|
|
|
//TryToInt32(CCS_DETAIL.DangPackType, out DangPackType);
|
|
|
//Dec.ProdQgp = DangPackType;
|
|
|
//CCS_DETAIL.DangPackTyp = Dec.ProdQgp.ToString();
|
|
|
|
|
|
CCS_DETAIL.DangPackSpec=Dec.DangPackSpec ;
|
|
|
//Dec.DangPackSpec_Text = GetTextByCode(emlistQuery, "危包规格", Dec.DangPackSpec);
|
|
|
CCS_DETAIL.EngManEntCnm=Dec.EngManEntCnm ;
|
|
|
|
|
|
//Int32 NoDangFlag = 0;
|
|
|
//TryToInt32(CCS_DETAIL.NoDangFlag, out NoDangFlag);
|
|
|
//Dec.NoDangFlag = NoDangFlag;
|
|
|
CCS_DETAIL.NoDangFlag = Dec.NoDangFlag.ToString();
|
|
|
|
|
|
CCS_DETAIL.GoodsSpec=Dec.GoodsSpec ;
|
|
|
CCS_DETAIL.GoodsModel=Dec.GoodsModel ;
|
|
|
CCS_DETAIL.GoodsBrand=Dec.GoodsBrand ;
|
|
|
CCS_DETAIL.ProduceDate=Dec.ProduceDate ;
|
|
|
CCS_DETAIL.ProdBatchNo=Dec.ProdBatchNo ;
|
|
|
|
|
|
|
|
|
DecGoodsLimitBLL gbll = new DecGoodsLimitBLL();
|
|
|
var DecGoodsLimitList = gbll.GetModelList("PID='" + Dec.GID + "'").ToList();
|
|
|
if (DecGoodsLimitList.Count == 0) { }
|
|
|
else
|
|
|
{
|
|
|
var DecGoodsLimitList_COUNT = 0;
|
|
|
var GOODLIMITList = new MvcShipping.Models.MsOpApply_BOSH383.CCS_HEADER_TYPECCS_DETAILDecGoodsLimit[DecGoodsLimitList.Count()];
|
|
|
|
|
|
foreach (var DecGood in DecGoodsLimitList)
|
|
|
{
|
|
|
var GOODLIMIT = new MvcShipping.Models.MsOpApply_BOSH383.CCS_HEADER_TYPECCS_DETAILDecGoodsLimit();
|
|
|
//DecGood.PID = Dec.GID;
|
|
|
//DecGood.GID = Guid.NewGuid().ToString();
|
|
|
GOODLIMIT.GoodsNo = DecGood.GoodsNo;
|
|
|
GOODLIMIT.LicTypeCode = DecGood.LicTypeCode;
|
|
|
//DecGood.LicTypeCode_Text = GetTextByCode(emlistQuery, "许可证类别", DecGood.LicTypeCode);
|
|
|
GOODLIMIT.LicenceNo = DecGood.LicenceNo;
|
|
|
GOODLIMIT.LicWrtofDetailNo = DecGood.LicWrtofDetailNo;
|
|
|
//DecGood.LicWrtofQty = Convert.ToInt32(GOODLIMIT.LicWrtofQty);
|
|
|
GOODLIMIT.LicWrtofQty = DecGood.LicWrtofQty.ToString();
|
|
|
|
|
|
var glvbll = new DecGoodsLimitVinBLL();
|
|
|
var DecGoodsLimitVinList = glvbll.GetModelList("PID='" + DecGood.GID + "'").ToList();
|
|
|
if (DecGoodsLimitVinList.Count == 0)
|
|
|
{}
|
|
|
else
|
|
|
{
|
|
|
var DecGoodsLimitVin_XMLArray= new MvcShipping.Models.MsOpApply_BOSH383.CCS_HEADER_TYPECCS_DETAILDecGoodsLimitDecGoodsLimitVin[DecGoodsLimitVinList.Count()];
|
|
|
var DecGoodsLimitVinList_COUNT = 0;
|
|
|
foreach (var DecGoodvin in DecGoodsLimitVinList) {
|
|
|
var GOODLIMITVIN = new MvcShipping.Models.MsOpApply_BOSH383.CCS_HEADER_TYPECCS_DETAILDecGoodsLimitDecGoodsLimitVin();
|
|
|
//DecGoodvin.PID = DecGood.GID;
|
|
|
//DecGoodvin.GID = Guid.NewGuid().ToString();
|
|
|
////DecGoodvin.LicenceNo = GOODLIMITVIN.LicenceNo;
|
|
|
//DecGoodvin.LicTypeCode = GOODLIMITVIN.LicTypeCode;
|
|
|
GOODLIMITVIN.VinNo=DecGoodvin.VinNo ;
|
|
|
//if (!string.IsNullOrEmpty(GOODLIMITVIN.BillLadDate))
|
|
|
// DecGoodvin.BillLadDate = DateTime.ParseExact(GOODLIMITVIN.BillLadDate, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
|
|
|
if (DecGoodvin.BillLadDate != null)
|
|
|
GOODLIMITVIN.BillLadDate = ((DateTime)DecGoodvin.BillLadDate).ToString("yyyyMMdd");
|
|
|
|
|
|
GOODLIMITVIN.QualityQgp=DecGoodvin.QualityQgp ;
|
|
|
GOODLIMITVIN.MotorNo=DecGoodvin.MotorNo ;
|
|
|
GOODLIMITVIN.VinCode=DecGoodvin.VinCode ;
|
|
|
GOODLIMITVIN.ChassisNo=DecGoodvin.ChassisNo ;
|
|
|
|
|
|
//Int32 InvoiceNum = 0;
|
|
|
//TryToInt32(GOODLIMITVIN.InvoiceNum, out InvoiceNum);
|
|
|
//DecGoodvin.InvoiceNum = InvoiceNum;
|
|
|
GOODLIMITVIN.InvoiceNum = DecGoodvin.InvoiceNum.ToString();
|
|
|
|
|
|
GOODLIMITVIN.ProdCnnm=DecGoodvin.ProdCnnm ;
|
|
|
GOODLIMITVIN.ProdEnnm=DecGoodvin.ProdEnnm ;
|
|
|
GOODLIMITVIN.ModelEn=DecGoodvin.ModelEn ;
|
|
|
|
|
|
//decimal PricePerUnit = 0;
|
|
|
//TryToDecimal(GOODLIMITVIN.PricePerUnit, out PricePerUnit);
|
|
|
//DecGoodvin.PricePerUnit = PricePerUnit;
|
|
|
GOODLIMITVIN.PricePerUnit = DecGoodvin.PricePerUnit.ToString();
|
|
|
|
|
|
GOODLIMITVIN.InvoiceNo = DecGoodvin.InvoiceNo ;
|
|
|
DecGoodsLimitVin_XMLArray[DecGoodsLimitVinList_COUNT] = GOODLIMITVIN;
|
|
|
DecGoodsLimitVinList_COUNT++;
|
|
|
}
|
|
|
GOODLIMIT.DecGoodsLimitVin = DecGoodsLimitVin_XMLArray;
|
|
|
}
|
|
|
|
|
|
GOODLIMITList[DecGoodsLimitList_COUNT] = GOODLIMIT;
|
|
|
DecGoodsLimitList_COUNT++;
|
|
|
}
|
|
|
}
|
|
|
CCS_DETAILList[CCS_DETAILList_COUNT] = CCS_DETAIL;
|
|
|
CCS_DETAILList_COUNT++;
|
|
|
}
|
|
|
items.CCS_DETAIL = CCS_DETAILList;
|
|
|
CCS_HEADERLIST[CCS_HEADERLIST_COUNT] = items;
|
|
|
|
|
|
CCS_HEADERLIST_COUNT++;
|
|
|
}
|
|
|
SHIPMENT.CCS_HEADER = CCS_HEADERLIST;
|
|
|
SHIPMENT.INTEGRATION_MESSAGE_CONTROL = headinfo;
|
|
|
return SHIPMENT;
|
|
|
}
|
|
|
|
|
|
private string Get385XmlFile(List<string> CUSTOMNOList)
|
|
|
{
|
|
|
|
|
|
var SHIPMENT = Get385Xml(CUSTOMNOList);
|
|
|
|
|
|
XmlSerializer XML_1 = new XmlSerializer(SHIPMENT.GetType());
|
|
|
|
|
|
var path = Server.MapPath(OPAPPLYFilePath);
|
|
|
|
|
|
if (!Directory.Exists(path))
|
|
|
{
|
|
|
Directory.CreateDirectory(path);
|
|
|
}
|
|
|
|
|
|
var usercode = CookieConfig.GetCookie_UserCode(Request);
|
|
|
|
|
|
string filename = path + "\\" + usercode + "_385.xml";
|
|
|
|
|
|
|
|
|
if (System.IO.File.Exists(Path.GetFullPath(filename)))
|
|
|
{
|
|
|
System.IO.File.Delete(Path.GetFullPath(filename));
|
|
|
}
|
|
|
|
|
|
|
|
|
var tw = new StreamWriter(filename);
|
|
|
|
|
|
XML_1.Serialize(tw, SHIPMENT);
|
|
|
|
|
|
tw.Close();
|
|
|
|
|
|
var result = OPAPPLYFilePath+"/" + usercode + "_385.xml";
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
private SHIPMENT_STATUS_OUTBOUND_V2 Get385Xml(List<string> CUSTOMNOList) {
|
|
|
var SHIPMENT = new SHIPMENT_STATUS_OUTBOUND_V2();
|
|
|
var headinfo = new DSWeb.MvcShipping.Models.MsOpApply_BOSH385.SHIPMENT_STATUS_OUTBOUND_V2INTEGRATION_MESSAGE_CONTROL();
|
|
|
|
|
|
|
|
|
foreach (var CUSTOMNO in CUSTOMNOList)
|
|
|
{
|
|
|
var OPAPPLY = MsOpApplyDAL.GetData(" CUSTOMNO='" + CUSTOMNO + "'");
|
|
|
|
|
|
|
|
|
#region 20210610 获取逻辑信息表的数据 如无信息则返回空
|
|
|
|
|
|
var HeadDic = BasicDataRefDAL.GetLogicInfo(OPAPPLY.BSNO, LOGICNAME_381);
|
|
|
|
|
|
if (HeadDic == null || HeadDic.Count() == 0) return SHIPMENT;
|
|
|
|
|
|
headinfo.ACTION = HeadDic["ACTION"];
|
|
|
headinfo.COMPANY_CODE = HeadDic["COMPANY_CODE"];
|
|
|
headinfo.ORG_CODE = HeadDic["ORG_CODE"];
|
|
|
var _t = decimal.Parse(HeadDic["PRIORITY"]);
|
|
|
if (HeadDic["PRIORITY"] == "")
|
|
|
{
|
|
|
headinfo.PRIORITY = null;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
headinfo.PRIORITY = _t;
|
|
|
}
|
|
|
|
|
|
headinfo.MESSAGE_TYPE = HeadDic["MESSAGE_TYPE"];
|
|
|
headinfo.USERID = HeadDic["USERID"];
|
|
|
headinfo.RECEIVER = HeadDic["RECEIVER"];
|
|
|
headinfo.SENDER = HeadDic["SENDER"];
|
|
|
headinfo.BATCH_ID = HeadDic["BATCH_ID"];
|
|
|
headinfo.SOURCE_SYSTEM_TOKEN = "";
|
|
|
|
|
|
headinfo.BUS_KEY = new DSWeb.MvcShipping.Models.MsOpApply_BOSH385.SHIPMENT_STATUS_OUTBOUND_V2INTEGRATION_MESSAGE_CONTROLBUS_KEY();
|
|
|
headinfo.BUS_KEY.ORG_CODE = HeadDic["ORG_CODE"];
|
|
|
headinfo.BUS_KEY.SHIPMENT_NUMBER = HeadDic["SHIPMENT_NUMBER"];
|
|
|
|
|
|
SHIPMENT.INTEGRATION_MESSAGE_CONTROL = headinfo;
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
var bll = new DecHeadBLL();
|
|
|
var model = bll.GetModelList("BSNO='" + OPAPPLY.BSNO + "'")[0];
|
|
|
|
|
|
//var message = new SHIPMENT_STATUS_OUTBOUND_V2INTEGRATION_MESSAGE_CONTROL();
|
|
|
|
|
|
|
|
|
//message.BATCH_ID = OPAPPLY.BSNO;
|
|
|
|
|
|
//message.BUS_KEY = new SHIPMENT_STATUS_OUTBOUND_V2INTEGRATION_MESSAGE_CONTROLBUS_KEY();
|
|
|
//message.BUS_KEY.SHIPMENT_NUMBER = OPAPPLY.BSNO;
|
|
|
|
|
|
SHIPMENT.INTEGRATION_MESSAGE_CONTROL = headinfo;
|
|
|
|
|
|
|
|
|
|
|
|
var header = new SHIPMENT_STATUS_HEADER_TYPE();
|
|
|
|
|
|
//SHIPMENT.SHIPMENT_STATUS_HEADER
|
|
|
header.SHIPMENT_NUMBER = HeadDic["SHIPMENT_NUMBER"];
|
|
|
header.HWB = OPAPPLY.HBLNO;
|
|
|
header.MWB = OPAPPLY.MBLNO;
|
|
|
header.INTERNAL_SHIPMENT_NUMBER = "";
|
|
|
|
|
|
|
|
|
var ies = "E";
|
|
|
if (OPAPPLY.BSTYPEREF.IndexOf("进口") >= 0)
|
|
|
{
|
|
|
ies = "I";
|
|
|
}
|
|
|
|
|
|
header.INCOMING_STATUS = ies;
|
|
|
header.INTERNAL_CCS = OPAPPLY.CUSTOMNO;
|
|
|
header.CCS_NUMBER = model.EntryId;
|
|
|
|
|
|
var DetailList = new SHIPMENT_STATUS_DETAIL_TYPE[3];
|
|
|
|
|
|
DetailList[0] = new SHIPMENT_STATUS_DETAIL_TYPE();
|
|
|
DetailList[0].STATUS_TYPE = "0";
|
|
|
DetailList[0].STATUS_CODE = "54";//海关系统申报日 //取单一窗口申报日期
|
|
|
DetailList[0].STATUS_TIME = string.IsNullOrWhiteSpace( model.DDateStr)?"": model.DDateStr + " 00:00:00";
|
|
|
|
|
|
DetailList[1] = new SHIPMENT_STATUS_DETAIL_TYPE();
|
|
|
DetailList[1].STATUS_TYPE = "0";
|
|
|
DetailList[1].STATUS_CODE = "16";//海关放行日期 //取单一窗口进出口日期
|
|
|
DetailList[1].STATUS_TIME = string.IsNullOrWhiteSpace(model.IEDateStr) ? "" : model.IEDateStr + " 00:00:00";
|
|
|
|
|
|
DetailList[2] = new SHIPMENT_STATUS_DETAIL_TYPE();
|
|
|
DetailList[2].STATUS_TYPE = "0";
|
|
|
DetailList[2].STATUS_CODE = "55";//海关查验日 //取报关业务的通关日期
|
|
|
DetailList[2].STATUS_TIME = string.IsNullOrWhiteSpace(OPAPPLY.CUSTOMDATE) ? "" : OPAPPLY.CUSTOMDATE + " 00:00:00";
|
|
|
|
|
|
|
|
|
header.SHIPMENT_STATUS_DETAIL = DetailList;
|
|
|
|
|
|
|
|
|
SHIPMENT.SHIPMENT_STATUS_HEADER = header;
|
|
|
|
|
|
}
|
|
|
return SHIPMENT;
|
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
|
public ContentResult UploadXmlBs(string CUSTOMNOs) {
|
|
|
var result = new DBResult();
|
|
|
var jsonRespose = new JsonResponse { Success = false, Message = "" };
|
|
|
BasicDataRefDAL.SaveLog("", "", "博世上传", "开始");
|
|
|
try
|
|
|
{
|
|
|
result = DoUploadXmlBs(CUSTOMNOs);
|
|
|
|
|
|
var json = JsonConvert.Serialize(new { Success = result.Success, Message = result.Message, data = result.Data });
|
|
|
return new ContentResult() { Content = json };
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
BasicDataRefDAL.SaveLog(e.Message, "", "博世上传", "错误");
|
|
|
jsonRespose.Success = false;
|
|
|
jsonRespose.Message = "生成报文出错:" + e.Message;
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public DBResult DoUploadXmlBs(string CUSTOMNOs) {
|
|
|
var result = new DBResult();
|
|
|
var mark = 0;
|
|
|
try
|
|
|
{
|
|
|
mark = 1;
|
|
|
var CUSTOMNOList = CUSTOMNOs.Split(',').ToList();
|
|
|
//寻找ftp信息
|
|
|
CommonDataContext cdc = new CommonDataContext();
|
|
|
|
|
|
var ftpinfo = new code_FtpSet_md();
|
|
|
|
|
|
var ftpinfoList = cdc.code_FtpSet.Where(x => x.EDINAME.StartsWith("BOSCH")).ToList();
|
|
|
|
|
|
if (ftpinfoList == null || ftpinfoList.Count == 0)
|
|
|
{
|
|
|
result.SetErrorInfo("没有找到BOSCH的FTP信息");
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
ftpinfo = ftpinfoList[0];
|
|
|
}
|
|
|
mark = 2;
|
|
|
//制作两个xml文件
|
|
|
var Filename383 = Get383XmlFile(CUSTOMNOList);
|
|
|
|
|
|
if (Filename383 == "") {
|
|
|
result.SetErrorInfo("没有找到导入的原始报文信息!");
|
|
|
}
|
|
|
mark = 3;
|
|
|
var Filename385 = Get385XmlFile(CUSTOMNOList);
|
|
|
mark = 4;
|
|
|
var path = Server.MapPath(OPAPPLYFilePath);
|
|
|
|
|
|
Filename383 = Filename383.Replace(OPAPPLYFilePath, path);
|
|
|
mark = 5;
|
|
|
Filename385 = Filename385.Replace(OPAPPLYFilePath, path);
|
|
|
mark = 6;
|
|
|
var targetfullpath_383 = (ftpinfo.FOLDERNAME.Replace(@"\", "/").EndsWith("/") ? ftpinfo.FOLDERNAME : ftpinfo.FOLDERNAME + "/") + CUSTOMNOList[0] + "_383.XML";
|
|
|
mark = 7;
|
|
|
var targetfullpath_385 = (ftpinfo.FOLDERNAME2.Replace(@"\", "/").EndsWith("/") ? ftpinfo.FOLDERNAME2 : ftpinfo.FOLDERNAME2 + "/") + CUSTOMNOList[0] + "_385.XML";
|
|
|
mark = 8;
|
|
|
//然后登陆ftp 把这两个文件放上去
|
|
|
SFTPHelper FTPDA = new SFTPHelper(ftpinfo);
|
|
|
mark = 9;
|
|
|
FTPDA.Connect();
|
|
|
mark = 10;
|
|
|
using (var file = System.IO.File.OpenRead(Filename383))
|
|
|
{
|
|
|
FTPDA.sftp.UploadFile(file, targetfullpath_383);
|
|
|
}
|
|
|
mark = 11;
|
|
|
using (var file = System.IO.File.OpenRead(Filename385))
|
|
|
{
|
|
|
FTPDA.sftp.UploadFile(file, targetfullpath_385);
|
|
|
}
|
|
|
mark = 12;
|
|
|
FTPDA.Disconnect();
|
|
|
}
|
|
|
catch (Exception ex) {
|
|
|
BasicDataRefDAL.SaveLog(mark.ToString()+"_"+ ex.Message, "", "博世上传", "");
|
|
|
}
|
|
|
result.setMessage(true, "发送成功");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取HS检验检疫名称
|
|
|
/// </summary>
|
|
|
/// <param name="pageIndex"></param>
|
|
|
/// <param name="pageSize"></param>
|
|
|
/// <param name="query"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetHsQua(int pageIndex, int pageSize, string query, string type)
|
|
|
{
|
|
|
Dec_HsQuaBLL bll = new Dec_HsQuaBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append("HSCode='" + type + "'");
|
|
|
if (!String.IsNullOrEmpty(query))
|
|
|
where.Append(string.Format(" And ([Value] LIKE '%{0}%' OR Name LIKE '%{0}%')", query));
|
|
|
var total = bll.GetRecordCount(where.ToString());
|
|
|
var list = bll.GetModelList(pageIndex, pageSize, where.ToString(), "[Value] collate Chinese_PRC_CS_AS_KS_WS");
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = p.Value,
|
|
|
text = p.Value + " - " + p.Name
|
|
|
};
|
|
|
return Json(new { data = result, total }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取模板
|
|
|
/// </summary>
|
|
|
/// <param name="pageIndex"></param>
|
|
|
/// <param name="pageSize"></param>
|
|
|
/// <param name="query"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetDecModel(int pageIndex, int pageSize, string query, string type)
|
|
|
{
|
|
|
DecModelBLL bll = new DecModelBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append("[Type]=" + type);
|
|
|
if (!String.IsNullOrEmpty(query))
|
|
|
where.Append(string.Format(" And [Value] LIKE '%{0}%'", query));
|
|
|
var total = bll.GetRecordCount(where.ToString());
|
|
|
var list = bll.GetModelList(pageIndex, pageSize, where.ToString(), "[Value] collate Chinese_PRC_CS_AS_KS_WS");
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = p.Value,
|
|
|
text = p.Value,
|
|
|
model = p.Model
|
|
|
};
|
|
|
return Json(new { data = result, total }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取产地代码
|
|
|
/// </summary>
|
|
|
/// <param name="pageIndex"></param>
|
|
|
/// <param name="pageSize"></param>
|
|
|
/// <param name="query"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetOriginCode(int pageIndex, int pageSize, string query)
|
|
|
{
|
|
|
sys_b_OriginCodeBLL bll = new sys_b_OriginCodeBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append("1=1");
|
|
|
if (!String.IsNullOrEmpty(query))
|
|
|
where.Append(string.Format("And ([Value] LIKE '%{0}%' OR Name LIKE '%{0}%')", query));
|
|
|
var total = bll.GetRecordCount(where.ToString());
|
|
|
var list = bll.GetModelList(pageIndex, pageSize, where.ToString(), "[Value] collate Chinese_PRC_CS_AS_KS_WS");
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = p.Value,
|
|
|
text = p.Value + " - " + p.Name
|
|
|
};
|
|
|
return Json(new { data = result, total }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取商品编码
|
|
|
/// </summary>
|
|
|
/// <param name="pageIndex"></param>
|
|
|
/// <param name="pageSize"></param>
|
|
|
/// <param name="query"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetProductCode(int pageIndex, int pageSize, string query)
|
|
|
{
|
|
|
sys_EnumerationBLL ebll = new sys_EnumerationBLL();
|
|
|
Dec_ProductBLL bll = new Dec_ProductBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append("1=1");
|
|
|
if (!String.IsNullOrEmpty(query))
|
|
|
where.Append(string.Format("And ([HSCODE] LIKE '%{0}%' OR Name LIKE '%{0}%')", query));
|
|
|
var total = bll.GetRecordCount(where.ToString());
|
|
|
var list = bll.GetModelList(pageIndex, pageSize, where.ToString(), "[HSCODE] collate Chinese_PRC_CS_AS_KS_WS");
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = p.HSCODE,
|
|
|
text = p.HSCODE,
|
|
|
name = p.NAME,
|
|
|
unit = p.UNIT,
|
|
|
code1 = ebll.GetModelList("NAME ='" + p.UNIT.Split('/')[0] + "'").FirstOrDefault(),
|
|
|
code2 = p.UNIT.Split('/').Length > 1 ? ebll.GetModelList("NAME ='" + p.UNIT.Split('/')[1] + "'").FirstOrDefault() : null
|
|
|
};
|
|
|
return Json(new { data = result, total }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取模板列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetModelList(int startIndex, int limit, string sortOrder, string sortName, string search)
|
|
|
{
|
|
|
DecModelBLL mbll = new DecModelBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
if (!String.IsNullOrEmpty(search))
|
|
|
where.Append(string.Format("[Value] LIKE '%{0}%'", search));
|
|
|
var list = mbll.GetModelList(startIndex, limit, where.ToString(), String.Format("{0} {1}", sortName, sortOrder));
|
|
|
var count = mbll.GetRecordCount(where.ToString());
|
|
|
return Json(new { total = count, rows = list });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 保存模板
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult SaveModel(DecModel dmodel)
|
|
|
{
|
|
|
DecModelBLL mbll = new DecModelBLL();
|
|
|
bool result;
|
|
|
var pmodel = mbll.GetModelList("Value='" + dmodel.Value + "' and type=" + dmodel.Type).FirstOrDefault();
|
|
|
if (pmodel == null)
|
|
|
{
|
|
|
dmodel.GID = Guid.NewGuid().ToString();
|
|
|
result = mbll.Add(dmodel) > 0;
|
|
|
} //新增
|
|
|
else
|
|
|
{
|
|
|
//类反射
|
|
|
Type type = typeof(DecModel);
|
|
|
PropertyInfo[] piArr = type.GetProperties();
|
|
|
foreach (var pi in piArr)
|
|
|
{
|
|
|
if (Array.IndexOf(Request.Params.AllKeys, pi.Name) < 0)
|
|
|
pi.SetValue(dmodel, pi.GetValue(pmodel, null), null);
|
|
|
}
|
|
|
result = mbll.Update(dmodel) > 0;
|
|
|
} //修改
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 删除模板
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult DelModel(string ids)
|
|
|
{
|
|
|
DecModelBLL mbll = new DecModelBLL();
|
|
|
bool result = mbll.DeleteListWhere(string.Format("GID in({0})", ids)) > 0;
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 删除单一窗口信息
|
|
|
/// </summary>
|
|
|
/// <param name="gid"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult Delete(string gid)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
//删除主单
|
|
|
bll.Delete(gid);
|
|
|
gbll.DeleteListWhere("PID in (select GID from DecList where PID ='" + gid + "')");
|
|
|
vbll.DeleteListWhere("PID in (select GID from DecGoodsLimit where PID in (select GID from DecList where PID ='" + gid + "'))");
|
|
|
lbll.DeleteListWhere("PID='" + gid + "'");
|
|
|
cbll.DeleteListWhere("PID='" + gid + "'");
|
|
|
dbll.DeleteListWhere("PID='" + gid + "'");
|
|
|
tbll.DeleteListWhere("PID='" + gid + "'");
|
|
|
clbll.DeleteListWhere("PID='" + gid + "'");
|
|
|
opbll.DeleteListWhere("PID='" + gid + "'");
|
|
|
rcbll.DeleteListWhere("PID='" + gid + "'");
|
|
|
return Json(new { success = true });
|
|
|
}
|
|
|
catch (Exception se)
|
|
|
{
|
|
|
return Json(new { success = false, message = se.Message });
|
|
|
}
|
|
|
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取申报要素
|
|
|
/// </summary>
|
|
|
/// <param name="hscode"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetGmodel(string hscode)
|
|
|
{
|
|
|
string code = hscode.Substring(0, 3);
|
|
|
var ds = DBUtility.DbHelperSQL.Query("select distinct [CODE] from [Dec_ProductStandard] where [CODE] LIKE'" + code + "%' ");
|
|
|
if (ds.Tables.Count > 0)
|
|
|
{
|
|
|
var dt = ds.Tables[0];
|
|
|
if (dt.Rows.Count > 0)
|
|
|
{
|
|
|
foreach (DataRow item in dt.Rows)
|
|
|
{
|
|
|
var rowcode = item[0].ToString();
|
|
|
if (rowcode.Length > code.Length && hscode.Contains(rowcode))
|
|
|
{
|
|
|
code = rowcode;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
Dec_ProductStandardBLL bll = new Dec_ProductStandardBLL();
|
|
|
var list = bll.GetModelList("[CODE] = '" + code + "'").OrderBy(p => p.SORT).ToList();
|
|
|
return Json(list);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取单一窗口列表
|
|
|
/// </summary>
|
|
|
/// <param name="bsno"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetSingleList(string bsno)
|
|
|
{
|
|
|
var list = bll.GetModelList("BSNO='" + bsno + "'");
|
|
|
// op_applyBLL opbll = new op_applyBLL();
|
|
|
// var model = opbll.GetModelList("BSNO='" + bsno + "'").FirstOrDefault();
|
|
|
var model = MsOpApplyDAL.GetData("BSNO='"+bsno+"'");
|
|
|
return Json(new { list, model });
|
|
|
}
|
|
|
#region 单一窗口审核
|
|
|
/// <summary>
|
|
|
/// 单一窗口列表信息
|
|
|
public ContentResult GetDataList(int start, int limit, string sort, string condition)
|
|
|
{
|
|
|
int count = 0;
|
|
|
|
|
|
var dataList = DecHeadDAL.GetDataList(condition, start, limit, CookieConfig.GetCookie_UserId(Request), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"]), out count, sort);
|
|
|
var timeStamp = DateTime.Now.ToShortDateString();
|
|
|
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = count, data = dataList.ToList(), timeStamp = timeStamp });
|
|
|
return new ContentResult() { Content = json };
|
|
|
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 读取单一窗口信息(读取接口)带附件
|
|
|
public const string _IURL = "http://47.104.90.170:9000/sw/download";
|
|
|
|
|
|
public const string _IURL_Nodoc= "http://47.104.90.170:9000/sw/merge/detail";
|
|
|
|
|
|
private string getPortStr(string starttime = "", string endtime = "", string CUSTOMNO = "", string MBLNO = "", string ies = "", string clearance = "0", string yardid = "sw",string unicode="",string etps_category="A",int cdntype=0, bool withdoc=true) {
|
|
|
|
|
|
string rtn = "";
|
|
|
var t_str = "";
|
|
|
|
|
|
|
|
|
var swcn = MsSysParamSetDAL.GetSysParamValue("OpApplySingle_User");
|
|
|
var swpw = MsSysParamSetDAL.GetSysParamValue("OpApplySingle_Pwd");
|
|
|
|
|
|
if (withdoc)
|
|
|
{
|
|
|
|
|
|
JObject reqObj = new JObject();
|
|
|
/*网站代号(sw)
|
|
|
卡号
|
|
|
密码(md5加密后)
|
|
|
报关单号
|
|
|
进出口标志(只有两个值) I(大写i): 进口, E: 出口
|
|
|
是否结关(只有两个值) 1:是,0:否
|
|
|
string swcn = "2020030084935", string swpw = "8a5889ea8e53b257e2a3ba053979ee64"
|
|
|
*/
|
|
|
|
|
|
|
|
|
reqObj.Add("yardid", yardid);
|
|
|
reqObj.Add("swcn", swcn);
|
|
|
reqObj.Add("swpw", swpw);
|
|
|
reqObj.Add("cdn", CUSTOMNO);
|
|
|
reqObj.Add("billno", MBLNO);
|
|
|
reqObj.Add("unicode", unicode);
|
|
|
|
|
|
reqObj.Add("ies", ies);
|
|
|
|
|
|
|
|
|
reqObj.Add("clearance", clearance);//未结关
|
|
|
|
|
|
reqObj.Add("cdnType", cdntype);//单据类型
|
|
|
|
|
|
reqObj.Add("starttime", starttime);//
|
|
|
|
|
|
reqObj.Add("endtime", endtime);//
|
|
|
|
|
|
reqObj.Add("etps_category", etps_category);//
|
|
|
|
|
|
|
|
|
//reqObj.Add("billno", "KMTCSIN2287541");
|
|
|
//reqObj.Add("ies", "I");
|
|
|
//reqObj.Add("clearance", "0");
|
|
|
|
|
|
t_str = reqObj.ToString(Newtonsoft.Json.Formatting.None);
|
|
|
|
|
|
rtn = DSWeb.Areas.MvcShipping.Comm.WebRequestHelper.DoPost(_IURL, t_str, 180000);
|
|
|
|
|
|
BasicDataRefDAL.SaveLog("_IURL=" + _IURL + ";t_str=" + t_str + ";rtn=" + rtn, "单一窗口", "读取单一窗口", "一次业务");
|
|
|
}
|
|
|
if (!withdoc) {
|
|
|
|
|
|
JObject reqObj = new JObject();
|
|
|
/*网站代号(sw)
|
|
|
卡号
|
|
|
密码(md5加密后)
|
|
|
报关单号
|
|
|
进出口标志(只有两个值) I(大写i): 进口, E: 出口
|
|
|
是否结关(只有两个值) 1:是,0:否
|
|
|
string swcn = "2020030084935", string swpw = "8a5889ea8e53b257e2a3ba053979ee64"
|
|
|
*/
|
|
|
|
|
|
reqObj.Add("card", swcn);
|
|
|
reqObj.Add("pwd", swpw);
|
|
|
reqObj.Add("ies", ies);
|
|
|
reqObj.Add("clear", clearance);//未结关
|
|
|
|
|
|
reqObj.Add("cdnType", cdntype);//单据类型
|
|
|
|
|
|
reqObj.Add("cdn", CUSTOMNO);
|
|
|
reqObj.Add("bill", MBLNO);
|
|
|
reqObj.Add("unicode", unicode);
|
|
|
|
|
|
reqObj.Add("start", starttime);//
|
|
|
|
|
|
reqObj.Add("end", endtime);//
|
|
|
|
|
|
reqObj.Add("startNumber", "0");//
|
|
|
reqObj.Add("endNumber", "1");//
|
|
|
reqObj.Add("etps_category", etps_category);//
|
|
|
|
|
|
reqObj.ToString(Newtonsoft.Json.Formatting.None);
|
|
|
|
|
|
t_str = reqObj.ToString(Newtonsoft.Json.Formatting.None);
|
|
|
|
|
|
rtn = DSWeb.Areas.MvcShipping.Comm.WebRequestHelper.DoPost(_IURL_Nodoc, t_str, 180000);
|
|
|
|
|
|
BasicDataRefDAL.SaveLog("_IURL=" + _IURL_Nodoc + ";t_str=" + t_str + ";rtn=" + rtn, "单一窗口", "读取单一窗口", "一次业务");
|
|
|
}
|
|
|
|
|
|
return rtn;
|
|
|
}
|
|
|
|
|
|
//二步申报业务的读取
|
|
|
public const string _IURL_2 = "http://47.104.90.170:9000/sw/ts/downloads";
|
|
|
|
|
|
public const string _IURL_2_Nodoc = "http://47.104.90.170:9000/sw/ts/details";
|
|
|
/// <summary>
|
|
|
/// 二步申报 读取
|
|
|
/// </summary>
|
|
|
/// <param name="starttime"></param>
|
|
|
/// <param name="endtime"></param>
|
|
|
/// <param name="CUSTOMNO"></param>
|
|
|
/// <param name="MBLNO"></param>
|
|
|
/// <param name="ies"></param>
|
|
|
/// <param name="clearance"></param>
|
|
|
/// <param name="yardid"></param>
|
|
|
/// <returns></returns>
|
|
|
private string getPortStr_2( string CUSTOMNO = "", string MBLNO = "", string SeqNo = "", string etps_category = "A", int cdntype = 0, bool withdoc = true)
|
|
|
{
|
|
|
string rtn = "";
|
|
|
JObject reqObj = new JObject();
|
|
|
/*
|
|
|
|
|
|
### 单一窗口两步申报总数据详情和pdf查询 API
|
|
|
|
|
|
#### 请求的数据:
|
|
|
|
|
|
请求方式:POST
|
|
|
|
|
|
url定义:http://47.104.90.170:9000/sw/ts/downloads
|
|
|
|
|
|
请求参数:formdata
|
|
|
|
|
|
| 参数 | 类型 | 是否必须传 | 描述 |
|
|
|
| :---------: | :----: | :--------: | :--------------------------: |
|
|
|
| card | 字符串 | 是 | 卡号 |
|
|
|
| pwd | 字符串 | 是 | 密码 |
|
|
|
| cdn | 字符串 | 否 | 报关单号 |
|
|
|
| bill | 字符串 | 否 | 提单号 |
|
|
|
| unicode | 字符串 | 否 | 统一编号 |
|
|
|
| start | 字符串 | 否 | 查询开始日期 (2020-06-09) |
|
|
|
| end | 字符串 | 否 | 查询结束日期 (2020-06-09) |
|
|
|
| startNumber | 数值 | 否 | 查询数据开始数,如:1,11,21 |
|
|
|
| endNumber | 数值 | 否 | 查询数据结束数,如:10,20,30 |
|
|
|
*/
|
|
|
|
|
|
var swcn = MsSysParamSetDAL.GetSysParamValue("OpApplySingle_User");
|
|
|
var swpw = MsSysParamSetDAL.GetSysParamValue("OpApplySingle_Pwd");
|
|
|
|
|
|
reqObj.Add("card", swcn);
|
|
|
reqObj.Add("pwd", swpw);
|
|
|
|
|
|
reqObj.Add("cdnType", cdntype);//单据类型
|
|
|
|
|
|
reqObj.Add("cdn", CUSTOMNO);
|
|
|
reqObj.Add("bill", MBLNO);
|
|
|
reqObj.Add("unicode", SeqNo);
|
|
|
|
|
|
reqObj.Add("start", "");
|
|
|
reqObj.Add("end", "");
|
|
|
|
|
|
reqObj.Add("startNumber", "1");
|
|
|
reqObj.Add("endNumber", "10");
|
|
|
|
|
|
reqObj.Add("etps_category", etps_category);//
|
|
|
|
|
|
var t_str = reqObj.ToString(Newtonsoft.Json.Formatting.None);
|
|
|
if (withdoc)
|
|
|
rtn = DSWeb.Areas.MvcShipping.Comm.WebRequestHelper.DoPost(_IURL_2, t_str, 180000);
|
|
|
if (!withdoc)
|
|
|
rtn = DSWeb.Areas.MvcShipping.Comm.WebRequestHelper.DoPost(_IURL_2_Nodoc, t_str, 180000);
|
|
|
|
|
|
BasicDataRefDAL.SaveLog("_IURL=" + _IURL + ";t_str=" + t_str + ";rtn=" + rtn, "单一窗口", "读取单一窗口", "二步申报");
|
|
|
|
|
|
return rtn;
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 读取单一窗口数据 指定报关单号/提单号/统一编号 读取
|
|
|
/// </summary>
|
|
|
/// <param name="bsno"></param>
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public JsonResult GetDecHead_Port(string bsno,bool withdoc=true)
|
|
|
{
|
|
|
var DecHead_Local = bll.GetModelList("BSNO='" + bsno + "'").FirstOrDefault();
|
|
|
|
|
|
var opapplyhead = MsOpApplyDAL.GetData("BSNO='" + bsno + "'");
|
|
|
//var billno = opapplyhead.MBLNO;
|
|
|
|
|
|
var CUSTOMNO = "";
|
|
|
var MBLNO = "";
|
|
|
var SeqNo = "";
|
|
|
|
|
|
CUSTOMNO = opapplyhead.CUSTOMNO;
|
|
|
if (string.IsNullOrWhiteSpace(CUSTOMNO)) {
|
|
|
|
|
|
}
|
|
|
MBLNO = opapplyhead.MBLNO;
|
|
|
var updateseai = false;
|
|
|
var opseaihead = MsOpSeaiDAL.GetData("MBLNO='" + MBLNO + "'");
|
|
|
if (opseaihead.MBLNO == MBLNO&&!opseaihead.BSSTATUS) updateseai = true;
|
|
|
|
|
|
SeqNo = opapplyhead.CUSCIQNO;
|
|
|
|
|
|
var needinsert = false;
|
|
|
var needupd = false;
|
|
|
|
|
|
if (DecHead_Local == null)
|
|
|
{
|
|
|
DecHead_Local = new DecHead();
|
|
|
|
|
|
needinsert = true;
|
|
|
}
|
|
|
else needupd = true;
|
|
|
|
|
|
///从接口读取信息
|
|
|
string rtn = "";
|
|
|
var result = new DBResult();
|
|
|
result.Success = true;
|
|
|
|
|
|
var ies = "E";
|
|
|
if (opapplyhead.BSTYPEREF.IndexOf("进口") >= 0)
|
|
|
{
|
|
|
ies = "I";
|
|
|
}
|
|
|
|
|
|
var clearance = opapplyhead.ISCLEAR;
|
|
|
|
|
|
//20210706 增加参数 opapply. ETPS_CATEGORY 取值范围 A C D 存储于枚举类型96100
|
|
|
|
|
|
var etps_category = opapplyhead.ETPS_CATEGORY;
|
|
|
|
|
|
var cdntype = opapplyhead.CDNTYPE;
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(etps_category)) etps_category = "A";
|
|
|
|
|
|
if (DecHead_Local.ApplyType == 1 || DecHead_Local.ApplyType == null)
|
|
|
rtn = getPortStr("", "", CUSTOMNO, MBLNO, ies, clearance,"sw", SeqNo, etps_category, cdntype, withdoc);
|
|
|
else
|
|
|
rtn = getPortStr_2(CUSTOMNO, MBLNO, SeqNo, etps_category, cdntype, withdoc);
|
|
|
|
|
|
var _status = "0";
|
|
|
|
|
|
var portresultstatus = Newtonsoft.Json.JsonConvert.DeserializeObject<DecHead_status>(rtn);
|
|
|
|
|
|
_status = portresultstatus.status;
|
|
|
var PortReturn = new DecHead_WebModel();
|
|
|
if (_status == "1")
|
|
|
{
|
|
|
//rtn = getPortStr(CUSTOMNO, MBLNO, ies, "0");
|
|
|
//rtn = formatresult(rtn);
|
|
|
PortReturn = Newtonsoft.Json.JsonConvert.DeserializeObject<DecHead_WebModel>(rtn);
|
|
|
}
|
|
|
else {
|
|
|
var _r = Newtonsoft.Json.JsonConvert.DeserializeObject<DecHead_statusmessage>(rtn);
|
|
|
return Json(new { status = false, message = _r.message });
|
|
|
}
|
|
|
|
|
|
//if (DecHead_Local.ApplyType == 1 || DecHead_Local.ApplyType == null)
|
|
|
//{
|
|
|
// rtn = getPortStr("", "", CUSTOMNO, MBLNO, ies, "1");
|
|
|
// //rtn = formatresult(rtn);
|
|
|
// PortReturn = Newtonsoft.Json.JsonConvert.DeserializeObject<DecHead_WebModel>(rtn);
|
|
|
//}
|
|
|
opapplyhead.ISDY = "1";
|
|
|
opapplyhead.ModelUIStatus="E";
|
|
|
|
|
|
|
|
|
//PortReturn.Message= JsonConvert.Deserialize<MessageModel>(PortReturn.message[0]);
|
|
|
//PortReturn.Message.Data = JsonConvert.Deserialize<DecHead_data>(PortReturn.Message.data);
|
|
|
//PortReturn.Message.Data.PreDecHeadVo = JsonConvert.Deserialize<preDecHeadVo>(PortReturn.Message.Data.preDecHeadVo);
|
|
|
|
|
|
//var preDecHeadVo = PortReturn.Message.Data.PreDecHeadVo;
|
|
|
|
|
|
foreach (var head in PortReturn.message) {
|
|
|
var preDecHeadVo = head.data.getdata();
|
|
|
|
|
|
var trueinfo = true;
|
|
|
|
|
|
//if (!string.IsNullOrWhiteSpace(CUSTOMNO)|| !string.IsNullOrWhiteSpace(MBLNO) || !string.IsNullOrWhiteSpace(SeqNo))
|
|
|
//{
|
|
|
// trueinfo = true;
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// //解析之后判断是否存在 提单号billNo 监管方式supvModeCdde 这两个字段正确的信息
|
|
|
// if (!string.IsNullOrWhiteSpace(preDecHeadVo.billNo) && !string.IsNullOrWhiteSpace(preDecHeadVo.supvModeCdde))
|
|
|
// {
|
|
|
// if (DecHead_Local.BillNo == preDecHeadVo.billNo && DecHead_Local.TradeMode == preDecHeadVo.supvModeCdde)
|
|
|
// {
|
|
|
// trueinfo = true;
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
//}
|
|
|
|
|
|
if (updateseai) {
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.trafName))
|
|
|
opseaihead.VESSEL = preDecHeadVo.trafName;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.cusVoyageNo))
|
|
|
opseaihead.VOYNO = preDecHeadVo.cusVoyageNo;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.iEDate))
|
|
|
opseaihead.ETD = DateTime.ParseExact(preDecHeadVo.iEDate, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture).ToString("yyyy-MM-dd") ;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.distinatePortName))
|
|
|
opseaihead.PORTLOAD = preDecHeadVo.distinatePortName;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.customMasterName))
|
|
|
opseaihead.MaTou = preDecHeadVo.customMasterName;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.consigneeCname))
|
|
|
opseaihead.ENTERP = preDecHeadVo.consigneeCname;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.supvModeCddeName))
|
|
|
opseaihead.TRADETYPE = preDecHeadVo.supvModeCddeName;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.contrNo))
|
|
|
opseaihead.CONTRACTNO = preDecHeadVo.contrNo;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.dDate))
|
|
|
opseaihead.CUSTOMDATE = preDecHeadVo.dDate;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.entryId))
|
|
|
opseaihead.CUSTOMNO = preDecHeadVo.entryId;
|
|
|
//opseaihead.GOODSNAME
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.packNo ))
|
|
|
opseaihead.PKGS = Convert.ToInt32(preDecHeadVo.packNo);
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.wrapTypeName))
|
|
|
opseaihead.KINDPKGS = preDecHeadVo.wrapTypeName;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.grossWt))
|
|
|
opseaihead.KGS = Convert.ToDecimal(preDecHeadVo.grossWt);
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.netWt ))
|
|
|
opseaihead.NETWEIGHT = Convert.ToDecimal(preDecHeadVo.netWt);
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.transMode))
|
|
|
opseaihead.TRADETERM = preDecHeadVo.transMode;
|
|
|
if (!string.IsNullOrWhiteSpace(preDecHeadVo.dDate))
|
|
|
opseaihead.UPDATETIME = preDecHeadVo.dDate;
|
|
|
|
|
|
|
|
|
//opseaihead.CUSTOMDATE=
|
|
|
|
|
|
}
|
|
|
opapplyhead.VESSEL = preDecHeadVo.trafName;
|
|
|
opapplyhead.VOYNO = preDecHeadVo.cusVoyageNo;
|
|
|
opapplyhead.PORTDISCHARGE = preDecHeadVo.distinatePortName;
|
|
|
if (string.IsNullOrEmpty(opapplyhead.ENTERP.Trim()))
|
|
|
opapplyhead.ENTERP = preDecHeadVo.consigneeCname;
|
|
|
if (string.IsNullOrEmpty(opapplyhead.MBLNO.Trim()))
|
|
|
opapplyhead.MBLNO = preDecHeadVo.billNo;
|
|
|
if (string.IsNullOrEmpty(opapplyhead.CUSTOMNO.Trim()))
|
|
|
opapplyhead.CUSTOMNO = preDecHeadVo.entryId;
|
|
|
//opseaihead.GOODSNAME
|
|
|
opapplyhead.PKGS = Convert.ToInt32(preDecHeadVo.packNo);
|
|
|
opapplyhead.KGS = Convert.ToDecimal(preDecHeadVo.grossWt);
|
|
|
opapplyhead.NETWEIGHT = Convert.ToDecimal(preDecHeadVo.netWt);
|
|
|
opapplyhead.CONTRACTNO = DecHead_Local.ContrNo;
|
|
|
|
|
|
|
|
|
if (opapplyhead.ENTERP == null || string.IsNullOrEmpty(opapplyhead.ENTERP.Trim()))
|
|
|
opapplyhead.ENTERP = DecHead_Local.TradeName;
|
|
|
|
|
|
//opapplyhead.RelId
|
|
|
|
|
|
if (trueinfo)
|
|
|
{
|
|
|
if (needupd)
|
|
|
{
|
|
|
preDecHeadVo.setvalue(DecHead_Local);
|
|
|
|
|
|
bll.Update(DecHead_Local);
|
|
|
}
|
|
|
else {
|
|
|
DecHead_Local.BillNo = opapplyhead.MBLNO;
|
|
|
DecHead_Local.TradeMode = opapplyhead.TRADETYPE;
|
|
|
DecHead_Local.GID = Guid.NewGuid().ToString();
|
|
|
DecHead_Local.BSNO = bsno;
|
|
|
preDecHeadVo.setvalue(DecHead_Local);
|
|
|
bll.Add(DecHead_Local);
|
|
|
|
|
|
}
|
|
|
|
|
|
opapplyhead.CUSCIQNO = DecHead_Local.SeqNo;
|
|
|
|
|
|
|
|
|
//!string.IsNullOrWhiteSpace(cnsnTradeScc) ? cnsnTradeScc : rcvgdTradeScc;
|
|
|
//20210709 经营单位改为存储TradeName
|
|
|
//20210803 改为如果经营单位为空 才填
|
|
|
if(string.IsNullOrWhiteSpace(opapplyhead.ENTERP))
|
|
|
opapplyhead.ENTERP = DecHead_Local.TradeName;
|
|
|
|
|
|
//20210708 合同协议号 DecHead.ContrNo 填入 OPAPPLY.CONTRACTNO
|
|
|
opapplyhead.CONTRACTNO = DecHead_Local.ContrNo;
|
|
|
|
|
|
#region 电子文档信息
|
|
|
ReceiptContext receiptContext = new ReceiptContext();
|
|
|
if (head.pdfFile != null)
|
|
|
{
|
|
|
foreach (var pdf in head.pdfFile)
|
|
|
{
|
|
|
|
|
|
Receipt_Doc receipt = receiptContext.ReceiptDocs.FirstOrDefault(o => o.BSNO == bsno && o.URL == pdf.filename);
|
|
|
|
|
|
if (receipt == null)
|
|
|
{
|
|
|
receipt = new Receipt_Doc();
|
|
|
receipt.GID = Guid.NewGuid().ToString();
|
|
|
receipt.BSNO = bsno;
|
|
|
receipt.URL = pdf.filename;
|
|
|
receipt.Driect_URL = pdf.path;
|
|
|
receipt.MODIFIEDUSER = Session["USERID"].ToString();
|
|
|
receipt.MODIFIEDTIME = System.DateTime.Now;
|
|
|
receiptContext.ReceiptDocs.Add(receipt);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
receipt.URL = pdf.filename;
|
|
|
receipt.Driect_URL = pdf.path;
|
|
|
receipt.MODIFIEDUSER = Session["USERID"].ToString();
|
|
|
receipt.MODIFIEDTIME = System.DateTime.Now;
|
|
|
}
|
|
|
var _r = receiptContext.SaveChanges();
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 集装箱信息
|
|
|
var containerlist = cbll.GetModelList("PID='" + DecHead_Local.GID + "'");
|
|
|
var portContainerlist = preDecHeadVo.getpreDecContainerVo();
|
|
|
|
|
|
if (portContainerlist.Count > 0)
|
|
|
{
|
|
|
foreach (var portContainer in portContainerlist)
|
|
|
{
|
|
|
var upd = false;
|
|
|
foreach (var container in containerlist)
|
|
|
{
|
|
|
if (container.ContainerId.Trim() == portContainer.containerNo.Trim())
|
|
|
{
|
|
|
upd = true;
|
|
|
var updcontainer = portContainer.getContainerValue(container);
|
|
|
cbll.Update(updcontainer);
|
|
|
}
|
|
|
}
|
|
|
if (!upd)
|
|
|
{
|
|
|
var updcontainer = new Container();
|
|
|
updcontainer = portContainer.getContainerValue(updcontainer);
|
|
|
updcontainer.GID = Guid.NewGuid().ToString();
|
|
|
updcontainer.PID = DecHead_Local.GID;
|
|
|
cbll.Add(updcontainer);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
//20210628 增加报关业务的箱信息
|
|
|
//20210630 客户又取消此逻辑 部分原因是读入的箱信息的箱型无法对应
|
|
|
/*
|
|
|
CommonDataContext cdc = new CommonDataContext();
|
|
|
|
|
|
//WEIGHKGS称重重量=ContainerWt
|
|
|
//CNTRNO = ContainerId
|
|
|
|
|
|
var ctncode = 0;
|
|
|
|
|
|
var op_ctnList = cdc.OP_CTN.Where(x => x.BSNO == opapplyhead.BSNO).ToList();
|
|
|
|
|
|
foreach (var item in portContainerlist)
|
|
|
{
|
|
|
var needinsert_ctn = true;
|
|
|
if (op_ctnList != null && op_ctnList.Count > 0)
|
|
|
{
|
|
|
if (op_ctnList.Exists(x => x.CNTRNO == item.containerNo))
|
|
|
{
|
|
|
var upditem = op_ctnList.First(x => x.CNTRNO == item.containerNo);
|
|
|
upditem.WEIGHKGS = decimal.Parse(item.containerWt);
|
|
|
needinsert_ctn = false;
|
|
|
}
|
|
|
}
|
|
|
if (needinsert_ctn)
|
|
|
{
|
|
|
ctncode++;
|
|
|
var insertitem = new op_ctn_md();
|
|
|
|
|
|
insertitem.CTN_ID = Guid.NewGuid().ToString();
|
|
|
insertitem.BSNO = opapplyhead.BSNO;
|
|
|
insertitem.CNTRNO = item.containerNo;
|
|
|
insertitem.WEIGHKGS = (string.IsNullOrWhiteSpace( item.containerWt))?0: decimal.Parse(item.containerWt);
|
|
|
insertitem.vgmconncom = "";
|
|
|
insertitem.CTNNUM = 1;
|
|
|
insertitem.TEU = 2;
|
|
|
insertitem.CTNALL = "40GP";
|
|
|
insertitem.CTNCODE= string.Format("{0:d2}", ctncode);
|
|
|
cdc.OP_CTN.Add(insertitem);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
cdc.SaveChangesAsync();
|
|
|
*/
|
|
|
}
|
|
|
containerlist = cbll.GetModelList("PID='" + DecHead_Local.GID + "'");
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 项信息
|
|
|
var declist_List = lbll.GetModelList(0, 99, "PID='" + DecHead_Local.GID + "'", String.Format("{0}", "gNo", ""));
|
|
|
|
|
|
var port_decMergeListVoList = preDecHeadVo.getdecMergeListVo();
|
|
|
var goodstr = "";
|
|
|
decimal goodsvalue = 0;
|
|
|
if (port_decMergeListVoList.Count > 0)
|
|
|
foreach (var port_decMergeListVo in port_decMergeListVoList)
|
|
|
{
|
|
|
var upd = false;
|
|
|
foreach (var declist in declist_List)
|
|
|
{
|
|
|
if (declist.GNo.Trim() == port_decMergeListVo.gNo.Trim())
|
|
|
{
|
|
|
upd = true;
|
|
|
var upddeclist = port_decMergeListVo.getDecListValue(declist);
|
|
|
lbll.Update(upddeclist);
|
|
|
}
|
|
|
}
|
|
|
if (!upd)
|
|
|
{
|
|
|
var upddeclist = new DecList();
|
|
|
upddeclist = port_decMergeListVo.getDecListValue(upddeclist);
|
|
|
upddeclist.GID = Guid.NewGuid().ToString();
|
|
|
upddeclist.PID = DecHead_Local.GID;
|
|
|
lbll.Add(upddeclist);
|
|
|
}
|
|
|
|
|
|
|
|
|
if (updateseai)
|
|
|
{
|
|
|
if (port_decMergeListVo.gName!="")
|
|
|
opseaihead.GOODSNAME = port_decMergeListVo.gName;
|
|
|
if (port_decMergeListVo.cusOriginCountryName != "")
|
|
|
opseaihead.COUNTRYOFORIGIN = port_decMergeListVo.cusOriginCountryName;
|
|
|
if (!string.IsNullOrWhiteSpace(port_decMergeListVo.declTotal))
|
|
|
goodsvalue = goodsvalue + Convert.ToDecimal(port_decMergeListVo.declTotal);
|
|
|
if (!string.IsNullOrWhiteSpace(port_decMergeListVo.declPrice))
|
|
|
opseaihead.UNITPRICE = Convert.ToDecimal(port_decMergeListVo.declPrice);
|
|
|
if (port_decMergeListVo.tradeCurrName != "")
|
|
|
opseaihead.CURRENCY = port_decMergeListVo.tradeCurrName;
|
|
|
|
|
|
goodstr = goodstr + port_decMergeListVo.codeTs + " " + port_decMergeListVo.gModel + " " + port_decMergeListVo.gName + " " + port_decMergeListVo.hsCodeDesc;
|
|
|
}
|
|
|
opapplyhead.ARCOUNTRY = port_decMergeListVo.cusOriginCountryName;
|
|
|
}
|
|
|
|
|
|
|
|
|
if (updateseai)
|
|
|
{
|
|
|
opseaihead.IMPORTVALUE = goodsvalue;
|
|
|
opseaihead.REMARK2 = goodstr;
|
|
|
var modb2 = new ModelObjectDB();
|
|
|
modb2.Save(opseaihead);
|
|
|
}
|
|
|
|
|
|
var modb3 = new ModelObjectDB();
|
|
|
modb3.Save(opapplyhead);
|
|
|
|
|
|
|
|
|
var Declist = lbll.GetModelList(0, 99, "PID='" + DecHead_Local.GID + "'", String.Format("{0}", "gNo", ""));
|
|
|
var count = lbll.GetRecordCount("PID='" + DecHead_Local.GID + "'");
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 单证信息
|
|
|
var preDecDocVoList = preDecHeadVo.getpreDecDocVo();
|
|
|
|
|
|
var currList= dbll.GetModelList(" PID='"+ DecHead_Local.GID + "' ");
|
|
|
|
|
|
if (preDecDocVoList!=null && preDecDocVoList.Count > 0){
|
|
|
foreach (var item in preDecDocVoList) {
|
|
|
LicenseDocu docitem = new LicenseDocu();
|
|
|
docitem.PID = DecHead_Local.GID;
|
|
|
docitem.GID = Guid.NewGuid().ToString();
|
|
|
//docitem.DocuCode = item.attFmtTypeCode;
|
|
|
docitem.DocuCode_Text = item.attFmtTypeCode;
|
|
|
docitem.CertCode = item.attEdocNo;
|
|
|
|
|
|
if (currList.Exists(x => x.CertCode == docitem.CertCode)) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
dbll.Add(docitem);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var cusLicenseListVoList = preDecHeadVo.getcusLicenseListVo();
|
|
|
if (cusLicenseListVoList != null && cusLicenseListVoList.Count > 0)
|
|
|
{
|
|
|
foreach (var item in cusLicenseListVoList)
|
|
|
{
|
|
|
LicenseDocu docitem = new LicenseDocu();
|
|
|
docitem.PID = DecHead_Local.GID;
|
|
|
docitem.GID = Guid.NewGuid().ToString();
|
|
|
//docitem.DocuCode = item.attFmtTypeCode;
|
|
|
docitem.DocuCode_Text = item.acmpFormCode;
|
|
|
docitem.CertCode = item.acmpFormNo;
|
|
|
|
|
|
if (currList.Exists(x => x.CertCode == docitem.CertCode))
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
dbll.Add(docitem);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 右下角关联信息
|
|
|
|
|
|
List<DecFreeTx> currDFTList = tbll.GetModelList(" PID='" + DecHead_Local.GID + "' ");
|
|
|
var tmodel = new DecFreeTx();
|
|
|
if (currDFTList != null && currDFTList.Count() > 0)
|
|
|
{
|
|
|
tmodel = currDFTList[0];
|
|
|
tmodel.RelId = preDecHeadVo.relativeId;
|
|
|
tbll.Update(tmodel);
|
|
|
}
|
|
|
else {
|
|
|
tmodel.GID = Guid.NewGuid().ToString();
|
|
|
tmodel.PID = DecHead_Local.GID;
|
|
|
tmodel.RelId = preDecHeadVo.relativeId;
|
|
|
tbll.Add(tmodel);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
return Json(new { DecHead_Local, containerlist, total = count, rows = Declist });
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (updateseai)
|
|
|
{
|
|
|
var modb2 = new ModelObjectDB();
|
|
|
modb2.Save(opseaihead);
|
|
|
}
|
|
|
|
|
|
var modb = new ModelObjectDB();
|
|
|
modb.Save(opapplyhead);
|
|
|
|
|
|
//如无 则不进行操作
|
|
|
|
|
|
//如有 则看是需要更新还是新增
|
|
|
|
|
|
return Json(new { PortReturn });
|
|
|
}
|
|
|
public JsonResult GetDecHead_Port_NoDoc(string bsno)
|
|
|
{
|
|
|
return GetDecHead_Port(bsno, false);
|
|
|
}
|
|
|
|
|
|
public class timeclass {
|
|
|
public string starttime;
|
|
|
public string endtime;
|
|
|
public timeclass(string starttime, string endtime) {
|
|
|
this.starttime= starttime;
|
|
|
this.endtime = endtime;
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 批量读取单一窗口信息 依据时间段
|
|
|
/// </summary>
|
|
|
/// <param name="bsno"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetDecHead_Port_Time(string endtime = "", string starttime = "", string ies="E"
|
|
|
, string cdnType = "0", string clearance="0", string isSecondApply = "0", string withPdf = "0")///
|
|
|
{
|
|
|
if (endtime == "")
|
|
|
{
|
|
|
endtime = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
|
|
|
|
|
|
if (starttime == "")
|
|
|
{
|
|
|
starttime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (starttime == "")
|
|
|
{
|
|
|
starttime = Convert.ToDateTime(endtime).AddDays(-1).ToString("yyyy-MM-dd");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
List<timeclass> lt = new List<timeclass>();
|
|
|
starttime = Convert.ToDateTime(starttime).AddDays(0).ToString("yyyy-MM-dd");
|
|
|
var CUSTOMDATE = starttime;
|
|
|
endtime = Convert.ToDateTime(endtime).AddDays(0).ToString("yyyy-MM-dd");
|
|
|
|
|
|
if (Convert.ToDateTime(starttime).AddDays(2) < Convert.ToDateTime(endtime)) {
|
|
|
string Message = "时间跨度不能超过3天";
|
|
|
return Json(new { Message });
|
|
|
}
|
|
|
//如果日期起止不相同 则将其改为一个日期列表(每天)
|
|
|
/*
|
|
|
if (Convert.ToDateTime(starttime) != Convert.ToDateTime(endtime))
|
|
|
{
|
|
|
while (Convert.ToDateTime( starttime) <= Convert.ToDateTime(endtime))
|
|
|
{
|
|
|
var tc = new timeclass(starttime, starttime);
|
|
|
starttime = Convert.ToDateTime(starttime).AddDays(1).ToString("yyyy-MM-dd");
|
|
|
lt.Add(tc);
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
lt.Add(new timeclass(starttime, endtime));
|
|
|
}
|
|
|
|
|
|
if (lt.Count > 0)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
else {
|
|
|
return Json(new {});
|
|
|
}*/
|
|
|
|
|
|
//var ies = "E";
|
|
|
//var clearance = "0";
|
|
|
|
|
|
SingleCondition sc = new SingleCondition(starttime,endtime,ies, cdnType, clearance,isSecondApply,withPdf,Session["USERID"].ToString(), Session["SHOWNAME"].ToString(), Session["COMPANYID"].ToString());
|
|
|
|
|
|
var sc1 = sc.copy();
|
|
|
sc1.change(starttime,endtime, ies, clearance);
|
|
|
readDAL_2.getPortInfo_thread(sc1);
|
|
|
|
|
|
//////////20201019 改为前台传入查询条件
|
|
|
//foreach (var tc in lt)
|
|
|
//{
|
|
|
// var sc1 = sc.copy();
|
|
|
// sc1.change(tc.starttime,tc.endtime,"E", "0");
|
|
|
// readDAL.getPortInfo_thread(sc1);
|
|
|
|
|
|
// var sc2 = sc.copy();
|
|
|
// sc2.change(tc.starttime, tc.endtime, "E", "1");
|
|
|
// readDAL.getPortInfo_thread(sc2);
|
|
|
|
|
|
// var sc3 = sc.copy();
|
|
|
// sc3.change(tc.starttime, tc.endtime, "I", "0");
|
|
|
// readDAL.getPortInfo_thread(sc3);
|
|
|
|
|
|
// var sc4 = sc.copy();
|
|
|
// sc4.change(tc.starttime, tc.endtime, "I", "1");
|
|
|
// readDAL.getPortInfo_thread(sc4);
|
|
|
|
|
|
//}
|
|
|
//////
|
|
|
|
|
|
//Dealrtn(PortReturn1);
|
|
|
//Dealrtn(PortReturn2);
|
|
|
//readDAL.Dealrtn(PortReturn3,Session["USERID"].ToString(),Session["SHOWNAME"].ToString(),Session["COMPANYID"].ToString());
|
|
|
//Dealrtn(PortReturn4);
|
|
|
|
|
|
return Json(new { });
|
|
|
}
|
|
|
|
|
|
public DecHead_WebModel getrtn(string starttime, string endtime, string ies, string clearance) {
|
|
|
var rtn = getPortStr(starttime, endtime, "", "", ies, clearance);
|
|
|
var _status = Newtonsoft.Json.JsonConvert.DeserializeObject<DecHead_status>(rtn).status;
|
|
|
var result = new DecHead_WebModel();
|
|
|
if (_status == "1")
|
|
|
{
|
|
|
result = Newtonsoft.Json.JsonConvert.DeserializeObject<DecHead_WebModel>(rtn);
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public void Dealrtn(DecHead_WebModel PortReturn)
|
|
|
{
|
|
|
|
|
|
foreach (var head in PortReturn.message)
|
|
|
{
|
|
|
var preDecHeadVo = head.data.getdata();
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(preDecHeadVo.entryId)) {
|
|
|
continue;//没有报关单号的不做处理
|
|
|
}
|
|
|
|
|
|
var currCUSTOMNO = preDecHeadVo.entryId;
|
|
|
//本地是否存在该业务 以报关单号为准
|
|
|
|
|
|
//根据报关单号寻找报关业务 看是否存在
|
|
|
var OPAPPLY = MsOpApplyDAL.GetData(" CUSTOMNO='" + currCUSTOMNO.Trim() + "'");
|
|
|
var needinsert = false;//需要新建 还是更新信息
|
|
|
if (string.IsNullOrWhiteSpace(OPAPPLY.CUSTOMNO)) {
|
|
|
needinsert = true;
|
|
|
}
|
|
|
|
|
|
var bsno = "";
|
|
|
|
|
|
var decheadGID = "";
|
|
|
|
|
|
if (needinsert)
|
|
|
{
|
|
|
//新建 op_apply
|
|
|
saveinfo("insert", head, OPAPPLY);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
saveinfo("edit", head, OPAPPLY);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public void saveinfo(string dealtype, MessageModel head, MsOpApply OPAPPLY) {
|
|
|
|
|
|
if (dealtype == "insert")
|
|
|
{
|
|
|
OPAPPLY.DbOperationType = DbOperationType.DbotIns;
|
|
|
OPAPPLY.ModelUIStatus = "I";
|
|
|
|
|
|
OPAPPLY.BSNO = Guid.NewGuid().ToString();
|
|
|
OPAPPLY.MASTERNO = OPAPPLY.BSNO;
|
|
|
OPAPPLY.CUSTNO = MsSysBillNoSetDAL.GetNewNo("报关业务", "委托编号", Session["COMPANYID"].ToString(), System.DateTime.Now.ToString("yyyy-MM-dd"));
|
|
|
}
|
|
|
else {
|
|
|
OPAPPLY.DbOperationType = DbOperationType.DbotUpd;
|
|
|
OPAPPLY.ModelUIStatus = "E";
|
|
|
}
|
|
|
|
|
|
var bsno = OPAPPLY.BSNO;
|
|
|
var preDecHeadVo = head.data.getdata();
|
|
|
|
|
|
OPAPPLY.CUSTOMNO = preDecHeadVo.entryId;
|
|
|
|
|
|
//根据报关单号 结尾0出口 结尾1进口
|
|
|
OPAPPLY.setbstype();
|
|
|
OPAPPLY.BSSTATUS = false;
|
|
|
OPAPPLY.FEESTATUS = false;
|
|
|
OPAPPLY.BSDATE = Convert.ToDateTime( preDecHeadVo.dDate);
|
|
|
OPAPPLY.CUSTOMDATE = preDecHeadVo.dDate;//报关日期=申报日期
|
|
|
OPAPPLY.OPDATE = preDecHeadVo.dDate;//业务日期=申报日期
|
|
|
|
|
|
OPAPPLY.MBLNO = preDecHeadVo.billNo;
|
|
|
//OPAPPLY.PORTLOAD = preDecHeadVo.despPortCode
|
|
|
|
|
|
OPAPPLY.INPUTBY = Session["SHOWNAME"].ToString();
|
|
|
OPAPPLY.CORPID = Session["COMPANYID"].ToString();
|
|
|
OPAPPLY.TRADETYPE = preDecHeadVo.supvModeCddeName;
|
|
|
var modb = new ModelObjectDB();
|
|
|
var tempresult = modb.Save(OPAPPLY);
|
|
|
|
|
|
var dealtype_detail = "edit";
|
|
|
var DecHead_Local = bll.GetModelList("BSNO='" + OPAPPLY.BSNO + "'").FirstOrDefault();
|
|
|
if (DecHead_Local == null)
|
|
|
{
|
|
|
DecHead_Local = new DecHead();
|
|
|
dealtype_detail = "insert";
|
|
|
}
|
|
|
|
|
|
if (dealtype_detail == "insert")
|
|
|
{
|
|
|
|
|
|
DecHead_Local.GID = Guid.NewGuid().ToString();
|
|
|
DecHead_Local.BSNO = OPAPPLY.BSNO;
|
|
|
|
|
|
preDecHeadVo.setvalue(DecHead_Local);
|
|
|
bll.Add(DecHead_Local);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
preDecHeadVo.setvalue(DecHead_Local);
|
|
|
|
|
|
bll.Update(DecHead_Local);
|
|
|
}
|
|
|
|
|
|
|
|
|
#region 电子文档信息
|
|
|
ReceiptContext receiptContext = new ReceiptContext();
|
|
|
|
|
|
foreach (var pdf in head.pdfFile)
|
|
|
{
|
|
|
|
|
|
Receipt_Doc receipt = receiptContext.ReceiptDocs.FirstOrDefault(o => o.BSNO == bsno && o.URL == pdf.filename);
|
|
|
|
|
|
if (receipt == null)
|
|
|
{
|
|
|
receipt = new Receipt_Doc();
|
|
|
receipt.GID = Guid.NewGuid().ToString();
|
|
|
receipt.BSNO = bsno;
|
|
|
receipt.URL = pdf.filename;
|
|
|
receipt.Driect_URL = pdf.path;
|
|
|
receipt.MODIFIEDUSER = Session["USERID"].ToString();
|
|
|
receipt.MODIFIEDTIME = System.DateTime.Now;
|
|
|
receiptContext.ReceiptDocs.Add(receipt);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
receipt.URL = pdf.filename;
|
|
|
receipt.Driect_URL = pdf.path;
|
|
|
receipt.MODIFIEDUSER = Session["USERID"].ToString();
|
|
|
receipt.MODIFIEDTIME = System.DateTime.Now;
|
|
|
}
|
|
|
var _r = receiptContext.SaveChanges();
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 集装箱信息
|
|
|
var containerlist = cbll.GetModelList("PID='" + DecHead_Local.GID + "'");
|
|
|
var portContainerlist = preDecHeadVo.getpreDecContainerVo();
|
|
|
|
|
|
if (portContainerlist.Count > 0)
|
|
|
foreach (var portContainer in portContainerlist)
|
|
|
{
|
|
|
var upd = false;
|
|
|
foreach (var container in containerlist)
|
|
|
{
|
|
|
if (container.ContainerId.Trim() == portContainer.containerNo.Trim())
|
|
|
{
|
|
|
upd = true;
|
|
|
var updcontainer = portContainer.getContainerValue(container);
|
|
|
cbll.Update(updcontainer);
|
|
|
}
|
|
|
}
|
|
|
if (!upd)
|
|
|
{
|
|
|
var updcontainer = new Container();
|
|
|
updcontainer = portContainer.getContainerValue(updcontainer);
|
|
|
updcontainer.GID = Guid.NewGuid().ToString();
|
|
|
updcontainer.PID = DecHead_Local.GID;
|
|
|
cbll.Add(updcontainer);
|
|
|
}
|
|
|
}
|
|
|
containerlist = cbll.GetModelList("PID='" + DecHead_Local.GID + "'");
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 项信息
|
|
|
var declist_List = lbll.GetModelList(0, 99, "PID='" + DecHead_Local.GID + "'", String.Format("{0}", "gNo", ""));
|
|
|
|
|
|
var port_decMergeListVoList = preDecHeadVo.getdecMergeListVo();
|
|
|
|
|
|
if (port_decMergeListVoList.Count > 0)
|
|
|
foreach (var port_decMergeListVo in port_decMergeListVoList)
|
|
|
{
|
|
|
var upd = false;
|
|
|
foreach (var declist in declist_List)
|
|
|
{
|
|
|
if (declist.GNo.Trim() == port_decMergeListVo.gNo.Trim())
|
|
|
{
|
|
|
upd = true;
|
|
|
var upddeclist = port_decMergeListVo.getDecListValue(declist);
|
|
|
lbll.Update(upddeclist);
|
|
|
}
|
|
|
}
|
|
|
if (!upd)
|
|
|
{
|
|
|
var upddeclist = new DecList();
|
|
|
upddeclist = port_decMergeListVo.getDecListValue(upddeclist);
|
|
|
upddeclist.GID = Guid.NewGuid().ToString();
|
|
|
upddeclist.PID = DecHead_Local.GID;
|
|
|
lbll.Add(upddeclist);
|
|
|
}
|
|
|
}
|
|
|
var Declist = lbll.GetModelList(0, 99, "PID='" + DecHead_Local.GID + "'", String.Format("{0}", "gNo", ""));
|
|
|
var count = lbll.GetRecordCount("PID='" + DecHead_Local.GID + "'");
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#endregion
|
|
|
}
|
|
|
|