You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1311 lines
57 KiB
C#

This file contains ambiguous Unicode characters!

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

using System;
using System.Text;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Data;
using DSWeb.SoftMng.DBUtility;
using Newtonsoft.Json.Linq;
using DSWeb.Areas.MvcShipping.Comm;
using DSWeb.MvcShipping.DAL.MsSysParamSet;
using DSWeb.SoftMng.Model;
using DSWeb.MvcShipping.DAL.MsOpApplyDAL;
using DSWeb.MvcShipping.Models.MsOpApply;
using HcUtility.Comm;
using DSWeb.MvcShipping.DAL.MsSysBillNoSet;
using HcUtility.Core;
using DSWeb.Areas.MvcShipping.DB;
using DSWeb.SoftMng.BLL;
using System.Linq;
using System.Threading;
using DSWeb.Areas.CommMng.DAL;
using Microsoft.Practices.EnterpriseLibrary.Data;
using DSWeb.MvcShipping.DAL.MsOpReceiptDAL;
using DSWeb.Areas.Import.DAL.ReceiptDoc;
using DSWeb.MvcShipping.DAL.MsCodeOpMustField;
using DSWeb.MvcShipping.DAL.MsCodeOpDef;
// ReSharper disable once CheckNamespace
namespace DSWeb.SoftMng.DAL
{
public class SingleCondition
{
public string starttime { get; set; }
public string endtime { get; set; }
public string CUSTOMNO { get; set; }
public string MBLNO { get; set; }
public string ies { get; set; }
public string cdnType { get; set; }
public string clearance { get; set; }
public bool isSecondApply { get; set; }
public bool withPdf { get; set; }
public string USERID { get; set; }
public string SHOWNAME { get; set; }
public string COMPANYID { get; set; }
public SingleCondition() { }
public SingleCondition(string starttime, string endtime, string ies, string cdnType, string clearance, string isSecondApply, string withPdf, string USERID, string SHOWNAME, string COMPANYID) {
this.starttime = starttime;
this.endtime = endtime;
this.ies = ies;
this.cdnType = cdnType;
this.clearance = clearance;
if (isSecondApply == "0") this.isSecondApply = false;
else this.isSecondApply = true;
if (withPdf == "0") this.withPdf = false;
else this.withPdf = true;
this.USERID = USERID;
this.SHOWNAME = SHOWNAME;
this.COMPANYID = COMPANYID;
}
public void change(string starttime,string endtime, string ies, string clearance)
{
this.starttime = starttime;
this.endtime = endtime;
this.ies = ies;
this.clearance = clearance;
}
public SingleCondition copy() {
return new SingleCondition(starttime, endtime, ies, cdnType, clearance
, isSecondApply ? "1" : "0"
, withPdf ? "1" : "0"
, USERID, SHOWNAME, COMPANYID) ;
}
}
//读取
public partial class readDAL
{
const string _IURL = "http://47.104.90.170:9000/sw/download";
private static string getPortStr(string starttime = "", string endtime = "", string CUSTOMNO = "", string MBLNO = "", string ies = "", string cdnType = "", string clearance = "0",string startn="1",string endn="10")
{
string rtn = "";
JObject reqObj = new JObject();
/*网站代号sw
卡号
密码md5加密后
报关单号
进出口标志(只有两个值) I大写i: 进口, E: 出口
是否结关(只有两个值) 1:是0:否
*/
var swcn = MsSysParamSetDAL.GetSysParamValue("OpApplySingle_User");
var swpw = MsSysParamSetDAL.GetSysParamValue("OpApplySingle_Pwd");
var yardid = "sw";
reqObj.Add("yardid", yardid);
reqObj.Add("swcn", swcn);
reqObj.Add("swpw", swpw);
reqObj.Add("cdn", CUSTOMNO);
reqObj.Add("billno", MBLNO);
reqObj.Add("ies", ies);
reqObj.Add("clearance", clearance);//未结关
reqObj.Add("starttime", starttime);//
reqObj.Add("endtime", endtime);//
reqObj.Add("startn", startn);//
reqObj.Add("endn", endn);//
//reqObj.Add("billno", "KMTCSIN2287541");
//reqObj.Add("ies", "I");
//reqObj.Add("clearance", "0");
var t_str = reqObj.ToString(Newtonsoft.Json.Formatting.None);
BasicDataRefDAL.SaveLog(t_str, "", "单一窗口批量读取", "执行读取");
rtn = WebRequestHelper.DoPost(_IURL, t_str, 480000);
BasicDataRefDAL.SaveLog(rtn, "", "单一窗口批量读取", "读取返回");
return rtn;
}
public static DecHead_WebModel getrtn(SingleCondition sc, string startn = "1", string endn = "10")
{
var rtn = getPortStr(sc.starttime, sc.endtime, "", "", sc.ies,sc.cdnType, sc.clearance, startn, endn);
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 static void getPortInfo_thread(SingleCondition SingleCondition)
{
Thread_getrtn getrtn = new Thread_getrtn();
//有参调用实例方法ParameterizedThreadStart是一个委托input为object,返回值为void
Thread thread1 = new Thread(new ParameterizedThreadStart(getrtn.FuncSend));
thread1.Start(SingleCondition);
}
class Thread_getrtn
{
public void FuncSend(object o)
{
SingleCondition condition = o as SingleCondition;
try
{
BasicDataRefDAL.SaveLog(condition, condition.USERID, "单一窗口批量读取", "开始");
doread(condition, 1, 10);
//DecHead_WebModel DecHead = getrtn(condition);
//if (DecHead.message != null)
//{
// Dealrtn(DecHead, condition.USERID, condition.SHOWNAME, condition.COMPANYID);
//}
}
catch (Exception e) {
BasicDataRefDAL.SaveLog(e.Message, condition.USERID, "单一窗口批量读取", "错误");
}
}
}
//20200409 每次读10个 如果读回来的不到10个就停止 否则再读下面10个。
private static void doread(SingleCondition condition, int startn, int endn)
{
DecHead_WebModel DecHead = getrtn(condition, startn.ToString(), endn.ToString());
if (DecHead.message != null)
{
Dealrtn(DecHead, condition.USERID, condition.SHOWNAME, condition.COMPANYID,condition.clearance);
if (!(DecHead.message.Count < 10))
{
doread(condition, startn + 10, endn + 10);
}
}
else {
BasicDataRefDAL.SaveLog("status="+DecHead.status.ToString()+";message="+ DecHead.message.ToString(), condition.USERID, "单一窗口批量读取", "错误");
}
}
public static void Dealrtn(DecHead_WebModel PortReturn, string USERID, string SHOWNAME, string COMPANYID,string isclear="0")
{
BasicDataRefDAL.SaveLog(PortReturn, USERID, "单一窗口批量读取", "返回值处理");
try
{
if (PortReturn.message == null) return;
foreach (var head in PortReturn.message)
{
if (head.data == null) continue;
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;
}
//20201021 根据查询条件[已结关]填入[已通关]。
OPAPPLY.ISCLEAR = isclear;
var bsno = "";
var decheadGID = "";
if (needinsert)
{
//新建 op_apply
saveinfo("insert", head, OPAPPLY, USERID, SHOWNAME, COMPANYID, isclear);
}
else
{
saveinfo("edit", head, OPAPPLY, USERID, SHOWNAME, COMPANYID, isclear);
}
}
}
catch(Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "返回值处理错误");
}
}
//private static string CUSTNO { get; set; }
//public static void setCUSTNO(string custno) {
// CUSTNO = custno;
//}
//private static string getCUSTNO() {
// //BasicDataRefDAL.SaveLog(CUSTNO, USERID, "单一窗口批量读取", "新业务编号");
// var result = "";
// result=CUSTNO.ToString();
// var _t_head = CUSTNO.Substring(0, CUSTNO.Length - 4);
// var index = Convert.ToInt32(CUSTNO.Substring(CUSTNO.Length - 4, 4));
// index++;
// var newindex = index.ToString();
// while (newindex.Length < 4)
// {
// newindex = "0" + newindex;
// }
// CUSTNO = _t_head + newindex;
// return result;
//}
public static void saveinfo(string dealtype, MessageModel head, MsOpApply OPAPPLY,string USERID,string SHOWNAME,string COMPANYID,string ISCLEAR)
{
var mark = 0;
try
{
DecHeadBLL bll = new DecHeadBLL();
ContainerBLL cbll = new ContainerBLL();
DecListBLL lbll = new DecListBLL();
if (dealtype == "insert")
{
OPAPPLY.DbOperationType = DbOperationType.DbotIns;
OPAPPLY.ModelUIStatus = "I";
OPAPPLY.BSNO = Guid.NewGuid().ToString();
OPAPPLY.MASTERNO = OPAPPLY.BSNO;
mark = 11;
var _r = MsOpApplyDAL.getCUSTNO(OPAPPLY, USERID,SHOWNAME,COMPANYID);
if (_r.Success)
OPAPPLY.CUSTNO = _r.Data.ToString();
else {
BasicDataRefDAL.SaveLog(_r.Message, USERID, "单一窗口批量读取", "获取单号出错");
return;
}
//OPAPPLY.CUSTNO = MsSysBillNoSetDAL.GetNewNo("报关业务", "委托编号", "0602", COMPANYID, System.DateTime.Now.ToString("yyyy-MM-dd"));
mark = 12;
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存1.1");
}
else
{
OPAPPLY.DbOperationType = DbOperationType.DbotUpd;
OPAPPLY.ModelUIStatus = "E";
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存1.2");
mark = 1;
}
var bsno = OPAPPLY.BSNO;
var preDecHeadVo = head.data.getdata();
mark = 2;
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
mark = 3;
OPAPPLY.INPUTBY = SHOWNAME;
OPAPPLY.CORPID = COMPANYID;
OPAPPLY.TRADETYPE = preDecHeadVo.supvModeCddeName;
OPAPPLY.ISDY = "1";
OPAPPLY.CUSCIQNO = preDecHeadVo.cusCiqNo;
OPAPPLY.GOODSOURCE = preDecHeadVo.ciqDespCtryCodeName;
OPAPPLY.EXPCUSTOMTYPE = preDecHeadVo.iEPortName;
OPAPPLY.DESPPORT = preDecHeadVo.despPortCodeName;
OPAPPLY.CONSIGNEE = preDecHeadVo.consigneeCname;
OPAPPLY.ENTERP = preDecHeadVo.consignorCname;
if (preDecHeadVo.ciqTrafMode == "3")
OPAPPLY.BSTYPE = "5";
OPAPPLY.ISCLEAR = ISCLEAR;
if (OPAPPLY.CUSTOMERNAME == "") OPAPPLY.CUSTOMERNAME = MsCodeOpDefDAL.GetData("BSTYPE='OP_APPLY' AND FIELDNAME='CUSTOMERNAME'", COMPANYID).DEFVALUE;
var modb = new ModelObjectDB();
var tempresult = modb.Save(OPAPPLY);
OPAPPLY.DbOperationType = DbOperationType.DbotUpd;
OPAPPLY.ModelUIStatus = "E";
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存2");
#region 单一窗口信息
var dealtype_detail = "edit";
var DecHead_Local = bll.GetModelList("BSNO='" + OPAPPLY.BSNO + "'").FirstOrDefault();
if (DecHead_Local == null)
{
DecHead_Local = new DecHead();
dealtype_detail = "insert";
}
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存3");
if (dealtype_detail == "insert")
{
DecHead_Local.GID = Guid.NewGuid().ToString();
DecHead_Local.BSNO = OPAPPLY.BSNO;
preDecHeadVo.setvalue(DecHead_Local);
bll.Add(DecHead_Local);
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存4.1");
}
else
{
preDecHeadVo.setvalue(DecHead_Local);
mark++;
bll.Update(DecHead_Local);
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存4.2");
}
#endregion
#region 电子文档信息
var docdataList = ReceiptDocDAL.GetDocList("BSNO='" + bsno + "'");
//ReceiptContext receiptContext = new ReceiptContext();
foreach (var pdf in head.pdfFile)
{
//Receipt_Doc receipt = receiptContext.ReceiptDocs.FirstOrDefault(o => o.BSNO == bsno && o.URL == pdf.filename);
var doc = docdataList.Find(x=>x.URL==pdf.filename);
if (doc == null||doc.BSNO == "")
{
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdInsert =
db.GetSqlStringCommand(
@"insert into Receipt_Doc (GID,BSNO,URL,Driect_URL,MODIFIEDUSER,MODIFIEDTIME,RECEIPTTYPE,DOCUMENTATTACHEDCODE,DOCUMENTATTACHEDNO)
values (@GID,@BSNO,@URL,@Driect_URL,@MODIFIEDUSER,@MODIFIEDTIME,@RECEIPTTYPE,@DOCUMENTATTACHEDCODE,@DOCUMENTATTACHEDNO) ");
cmdInsert.Parameters.Clear();
db.AddInParameter(cmdInsert, "@GID", DbType.String, Guid.NewGuid().ToString());
db.AddInParameter(cmdInsert, "@BSNO", DbType.String, bsno);
db.AddInParameter(cmdInsert, "@URL", DbType.String, pdf.filename);
db.AddInParameter(cmdInsert, "@Driect_URL", DbType.String,pdf.path);
db.AddInParameter(cmdInsert, "@MODIFIEDUSER", DbType.String, USERID);
db.AddInParameter(cmdInsert, "@MODIFIEDTIME", DbType.String, DateTime.Now.ToString());
db.AddInParameter(cmdInsert, "@RECEIPTTYPE", DbType.String,"");
db.AddInParameter(cmdInsert, "@DOCUMENTATTACHEDCODE", DbType.String, "");
db.AddInParameter(cmdInsert, "@DOCUMENTATTACHEDNO", DbType.String, "");
db.ExecuteNonQuery(cmdInsert, tran);
tran.Commit();
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "保存错误" + e.Message);
tran.Rollback();
}
}
}
else {
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdInsert =
db.GetSqlStringCommand(
@"update Receipt_Doc set URL=@URL,Driect_URL=@Driect_URL,MODIFIEDUSER=@MODIFIEDUSER,MODIFIEDTIME=@MODIFIEDTIME
WHERE GID=@GID ");
cmdInsert.Parameters.Clear();
db.AddInParameter(cmdInsert, "@GID", DbType.String, doc.GID);
db.AddInParameter(cmdInsert, "@URL", DbType.String, pdf.filename);
db.AddInParameter(cmdInsert, "@Driect_URL", DbType.String, pdf.path);
db.AddInParameter(cmdInsert, "@MODIFIEDUSER", DbType.String, USERID);
db.AddInParameter(cmdInsert, "@MODIFIEDTIME", DbType.String, DateTime.Now.ToString());
db.ExecuteNonQuery(cmdInsert, tran);
tran.Commit();
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "保存错误" + e.Message);
tran.Rollback();
}
}
}
//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 = USERID;
// receipt.MODIFIEDTIME = System.DateTime.Now;
// receiptContext.ReceiptDocs.Add(receipt);
//}
//else
//{
// receipt.URL = pdf.filename;
// receipt.Driect_URL = pdf.path;
// receipt.MODIFIEDUSER = USERID;
// receipt.MODIFIEDTIME = System.DateTime.Now;
//}
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存5");
//var _r = receiptContext.SaveChanges();
}
mark = 7;
#endregion
#region 集装箱信息
var opapplyctnlist= MsOpApplyDAL.GetCtnBodyList("BSNO='" + OPAPPLY.BSNO + "'", "");
var containerlist = cbll.GetModelList("PID='" + DecHead_Local.GID + "'");
var portContainerlist = preDecHeadVo.getpreDecContainerVo();
mark = 71;
if (portContainerlist.Count > 0)
{
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
mark = 72;
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);
}
var updapply = false;
foreach (var container in opapplyctnlist)
{
if (container.CNTRNO.Trim() == portContainer.containerNo.Trim())
{
updapply = true;
}
}
if (!updapply)
{
var tran = conn.BeginTransaction();
try
{
var cmdInsert = db.GetSqlStringCommand(@"insert into op_ctn (CTN_ID,BSNO,CTNNUM,CNTRNO,CTNALL) values (NEWID()"
+ ",'" + OPAPPLY.BSNO + "',1,'" + portContainer.containerNo.Trim() + "','40GP')");
db.ExecuteNonQuery(cmdInsert, tran);
tran.Commit();
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "保存错误" + e.Message);
tran.Rollback();
}
}
}
}
}
mark = 8;
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存6");
containerlist = cbll.GetModelList("PID='" + DecHead_Local.GID + "'");
mark = 9;
#endregion
#region 项信息
var declist_List = lbll.GetModelList(0, 99, "PID='" + DecHead_Local.GID + "'", String.Format("{0}", "gNo", ""));
var port_decMergeListVoList = preDecHeadVo.getdecMergeListVo();
var curr = "USD";
decimal cargovalue = 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);
}
try
{
cargovalue = cargovalue + Convert.ToDecimal(port_decMergeListVo.declTotal);
curr = port_decMergeListVo.tradeCurr;
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "保存错误" + e.Message);
}
}
OPAPPLY.CARGOVALUE = cargovalue.ToString();
OPAPPLY.CURRENCY = curr;
modb = new ModelObjectDB();
tempresult = modb.Save(OPAPPLY);
mark = 10;
var Declist = lbll.GetModelList(0, 99, "PID='" + DecHead_Local.GID + "'", String.Format("{0}", "gNo", ""));
var count = lbll.GetRecordCount("PID='" + DecHead_Local.GID + "'");
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存7");
mark = 11;
#endregion
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "保存错误"+ mark.ToString());
}
}
}
public partial class readDAL_2
{
const string _IURL_noPdf = "http://47.104.90.170:9000/sw/merge/detail";
/*
* ### 单一窗口数据详情查询 API
#### 请求的数据:
请求方式POST
url定义http://47.104.90.170:9000/sw/merge/detail
请求参数formdata
| 参数 | 类型 | 是否必须传 | 描述 |
| :---------: | :----: | :--------: | :----------------------------------------------------------: |
| card | 字符串 | 是 | 卡号 |
| pwd | 字符串 | 是 | 密码 |
| ies | 字符串 | 是 | 进出口标志 (只有两个值) I (大写i) : 进口, E: 出口 |
| clear | 布尔型 | 是 | 是否结关 (只有两个值) 1:是0:否 |
| cdnType | 字符串 | 是 | 报关单类型 (0: 一般报关单, 1: 转关提前报关单, <br />2: 备案清单, 3: 转关提前备案清单, 4: 出口二次转关) |
| cdn | 字符串 | 否 | 报关单号 |
| bill | 字符串 | 否 | 提单号 |
| unicode | 字符串 | 否 | 统一编号 |
| start | 字符串 | 否 | 查询开始日期 (2020-06-09) |
| end | 字符串 | 否 | 查询结束日期 (2020-06-09) |
| startNumber | 数值 | 否 | 查询数据开始数1,11,21 |
| endNumber | 数值 | 否 | 查询数据结束数10,20,30 |
*/
const string _IURL_withPdf = "http://47.104.90.170:9000/sw/merge/downloads";
/*
### 单一窗口总数据详情和pdf查询 API
#### 请求的数据:
请求方式POST
url定义http://47.104.90.170:9000/sw/merge/downloads
请求参数formdata
| 参数 | 类型 | 是否必须传 | 描述 |
| :---------: | :----: | :--------: | :-----------------------------------------------: |
| card | 字符串 | 是 | 卡号 |
| pwd | 字符串 | 是 | 密码 |
| ies | 字符串 | 是 | 进出口标志 (只有两个值) I (大写i) : 进口, E: 出口 |
| clear | 布尔型 | 是 | 是否结关 (只有两个值) 1:是0:否 |
| cdn | 字符串 | 否 | 报关单号 |
| bill | 字符串 | 否 | 提单号 |
| unicode | 字符串 | 否 | 统一编号 |
| start | 字符串 | 否 | 查询开始日期 (2020-06-09) |
| end | 字符串 | 否 | 查询结束日期 (2020-06-09) |
| startNumber | 数值 | 否 | 查询数据开始数1,11,21 |
| endNumber | 数值 | 否 | 查询数据结束数10,20,30 |
> 注startNumber和endNumber输入其他的数不一定是想要的结果
*/
const string _IURL_secondapply_noPdf = "http://47.104.90.170:9000/sw/ts/detail";
/*
### 单一窗口两步申报数据详情查询 API
#### 请求的数据:
请求方式POST
url定义http://47.104.90.170:9000/sw/ts/detail
请求参数formdata
| 参数 | 类型 | 是否必须传 | 描述 |
| :---------: | :----: | :--------: | :-------------------------------------: |
| card | 字符串 | 是 | 卡号 |
| pwd | 字符串 | 是 | 密码 |
| cdnType | 字符串 | 是 | 报关单类型 (0: 一般报关单, 2: 备案清单) |
| cdn | 字符串 | 否 | 报关单号 |
| bill | 字符串 | 否 | 提单号 |
| unicode | 字符串 | 否 | 统一编号 |
| start | 字符串 | 否 | 查询开始日期 (2020-06-09) |
| end | 字符串 | 否 | 查询结束日期 (2020-06-09) |
| startNumber | 数值 | 否 | 查询数据开始数1,11,21 |
| endNumber | 数值 | 否 | 查询数据结束数10,20,30 |
*/
const string _IURL_secondapply_withPdf = "http://47.104.90.170:9000/sw/ts/downloads";
/*
### 单一窗口两步申报数据详情和pdf查询 API
#### 请求的数据:
请求方式POST
url定义http://47.104.90.170:9000/sw/ts/download
请求参数formdata
| 参数 | 类型 | 是否必须传 | 描述 |
| :---------: | :----: | :--------: | :-------------------------------------: |
| card | 字符串 | 是 | 卡号 |
| pwd | 字符串 | 是 | 密码 |
| cdnType | 字符串 | 是 | 报关单类型 (0: 一般报关单, 2: 备案清单) |
| cdn | 字符串 | 否 | 报关单号 |
| bill | 字符串 | 否 | 提单号 |
| unicode | 字符串 | 否 | 统一编号 |
| start | 字符串 | 否 | 查询开始日期 (2020-06-09) |
| end | 字符串 | 否 | 查询结束日期 (2020-06-09) |
| startNumber | 数值 | 否 | 查询数据开始数1,11,21 |
| endNumber | 数值 | 否 | 查询数据结束数10,20,30 |
*/
private static string getPortStr(SingleCondition sc,string startn = "1", string endn = "10")
{
string rtn = "";
JObject reqObj = new JObject();
/*网站代号sw
卡号
密码md5加密后
报关单号
进出口标志(只有两个值) I大写i: 进口, E: 出口
是否结关(只有两个值) 1:是0:否
*/
var swcn = MsSysParamSetDAL.GetSysParamValue("OpApplySingle_User");
var swpw = MsSysParamSetDAL.GetSysParamValue("OpApplySingle_Pwd");
//var yardid = "sw";
//reqObj.Add("yardid", yardid);
reqObj.Add("card", swcn);
reqObj.Add("pwd", swpw);
reqObj.Add("ies", sc.ies);
reqObj.Add("clear", sc.clearance);//未结关
reqObj.Add("cdnType", sc.cdnType);
//reqObj.Add("bill", sc.MBLNO);
reqObj.Add("cdn", "");//
reqObj.Add("bill", "");//
reqObj.Add("unicode", "");//
reqObj.Add("start", sc.starttime);//
reqObj.Add("end", sc.endtime);//
reqObj.Add("startNumber", startn);//
reqObj.Add("endNumber", endn);//
//reqObj.Add("billno", "KMTCSIN2287541");
//reqObj.Add("ies", "I");
//reqObj.Add("clearance", "0");
var t_str = reqObj.ToString(Newtonsoft.Json.Formatting.None);
BasicDataRefDAL.SaveLog(t_str, "", "单一窗口批量读取_新", "执行读取");
if (!sc.isSecondApply)
{
if (sc.withPdf)
rtn = WebRequestHelper.DoPost(_IURL_withPdf, t_str, 480000);
else
rtn = WebRequestHelper.DoPost(_IURL_noPdf, t_str, 480000);
}
else {
if (sc.withPdf)
rtn = WebRequestHelper.DoPost(_IURL_secondapply_withPdf, t_str, 480000);
else
rtn = WebRequestHelper.DoPost(_IURL_secondapply_noPdf, t_str, 480000);
}
BasicDataRefDAL.SaveLog(rtn, "", "单一窗口批量读取_新", "读取返回");
return rtn;
}
public static DecHead_WebModel getrtn(SingleCondition sc, string startn = "1", string endn = "10")
{
var rtn = getPortStr(sc, startn, endn);
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 static void getPortInfo_thread(SingleCondition SingleCondition)
{
Thread_getrtn getrtn = new Thread_getrtn();
//有参调用实例方法ParameterizedThreadStart是一个委托input为object,返回值为void
Thread thread1 = new Thread(new ParameterizedThreadStart(getrtn.FuncSend));
thread1.Start(SingleCondition);
}
class Thread_getrtn
{
public void FuncSend(object o)
{
SingleCondition condition = o as SingleCondition;
try
{
BasicDataRefDAL.SaveLog(condition, condition.USERID, "单一窗口批量读取", "开始");
doread(condition, 1, 10);
//DecHead_WebModel DecHead = getrtn(condition);
//if (DecHead.message != null)
//{
// Dealrtn(DecHead, condition.USERID, condition.SHOWNAME, condition.COMPANYID);
//}
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, condition.USERID, "单一窗口批量读取", "错误");
}
}
}
//20200409 每次读10个 如果读回来的不到10个就停止 否则再读下面10个。
private static void doread(SingleCondition condition, int startn, int endn)
{
DecHead_WebModel DecHead = getrtn(condition, startn.ToString(), endn.ToString());
if (DecHead.message != null)
{
Dealrtn(DecHead, condition.USERID, condition.SHOWNAME, condition.COMPANYID, condition.clearance);
if (!(DecHead.message.Count < 10))
{
doread(condition, startn + 10, endn + 10);
}
}
else
{
BasicDataRefDAL.SaveLog("status=" + DecHead.status.ToString() + ";message=" + DecHead.message.ToString(), condition.USERID, "单一窗口批量读取", "错误");
}
}
public static void Dealrtn(DecHead_WebModel PortReturn, string USERID, string SHOWNAME, string COMPANYID, string isclear = "0")
{
BasicDataRefDAL.SaveLog(PortReturn, USERID, "单一窗口批量读取", "返回值处理");
try
{
if (PortReturn.message == null) return;
foreach (var head in PortReturn.message)
{
if (head.data == null) continue;
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;
}
//20201021 根据查询条件[已结关]填入[已通关]。
OPAPPLY.ISCLEAR = isclear;
var bsno = "";
var decheadGID = "";
if (needinsert)
{
//新建 op_apply
saveinfo("insert", head, OPAPPLY, USERID, SHOWNAME, COMPANYID, isclear);
}
else
{
saveinfo("edit", head, OPAPPLY, USERID, SHOWNAME, COMPANYID, isclear);
}
}
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "返回值处理错误");
}
}
//private static string CUSTNO { get; set; }
//public static void setCUSTNO(string custno) {
// CUSTNO = custno;
//}
//private static string getCUSTNO() {
// //BasicDataRefDAL.SaveLog(CUSTNO, USERID, "单一窗口批量读取", "新业务编号");
// var result = "";
// result=CUSTNO.ToString();
// var _t_head = CUSTNO.Substring(0, CUSTNO.Length - 4);
// var index = Convert.ToInt32(CUSTNO.Substring(CUSTNO.Length - 4, 4));
// index++;
// var newindex = index.ToString();
// while (newindex.Length < 4)
// {
// newindex = "0" + newindex;
// }
// CUSTNO = _t_head + newindex;
// return result;
//}
public static void saveinfo(string dealtype, MessageModel head, MsOpApply OPAPPLY, string USERID, string SHOWNAME, string COMPANYID, string ISCLEAR)
{
var mark = 0;
try
{
DecHeadBLL bll = new DecHeadBLL();
ContainerBLL cbll = new ContainerBLL();
DecListBLL lbll = new DecListBLL();
if (dealtype == "insert")
{
OPAPPLY.DbOperationType = DbOperationType.DbotIns;
OPAPPLY.ModelUIStatus = "I";
OPAPPLY.BSNO = Guid.NewGuid().ToString();
OPAPPLY.MASTERNO = OPAPPLY.BSNO;
mark = 11;
var _r = MsOpApplyDAL.getCUSTNO(OPAPPLY, USERID, SHOWNAME, COMPANYID);
if (_r.Success)
OPAPPLY.CUSTNO = _r.Data.ToString();
else
{
BasicDataRefDAL.SaveLog(_r.Message, USERID, "单一窗口批量读取", "获取单号出错");
return;
}
//OPAPPLY.CUSTNO = MsSysBillNoSetDAL.GetNewNo("报关业务", "委托编号", "0602", COMPANYID, System.DateTime.Now.ToString("yyyy-MM-dd"));
mark = 12;
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存1.1");
}
else
{
OPAPPLY.DbOperationType = DbOperationType.DbotUpd;
OPAPPLY.ModelUIStatus = "E";
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存1.2");
mark = 1;
}
var bsno = OPAPPLY.BSNO;
var preDecHeadVo = head.data.getdata();
mark = 2;
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
mark = 3;
OPAPPLY.INPUTBY = SHOWNAME;
OPAPPLY.CORPID = COMPANYID;
OPAPPLY.TRADETYPE = preDecHeadVo.supvModeCddeName;
OPAPPLY.ISDY = "1";
OPAPPLY.CUSCIQNO = preDecHeadVo.cusCiqNo;
OPAPPLY.GOODSOURCE = preDecHeadVo.ciqDespCtryCodeName;
OPAPPLY.EXPCUSTOMTYPE = preDecHeadVo.iEPortName;
OPAPPLY.DESPPORT = preDecHeadVo.despPortCodeName;
OPAPPLY.CONSIGNEE = preDecHeadVo.consigneeCname;
OPAPPLY.ENTERP = preDecHeadVo.consignorCname;
if (preDecHeadVo.ciqTrafMode == "3")
OPAPPLY.BSTYPE = "5";
OPAPPLY.ISCLEAR = ISCLEAR;
if (OPAPPLY.CUSTOMERNAME == "") OPAPPLY.CUSTOMERNAME = MsCodeOpDefDAL.GetData("BSTYPE='OP_APPLY' AND FIELDNAME='CUSTOMERNAME'", COMPANYID).DEFVALUE;
var modb = new ModelObjectDB();
var tempresult = modb.Save(OPAPPLY);
OPAPPLY.DbOperationType = DbOperationType.DbotUpd;
OPAPPLY.ModelUIStatus = "E";
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存2");
#region 单一窗口信息
var dealtype_detail = "edit";
var DecHead_Local = bll.GetModelList("BSNO='" + OPAPPLY.BSNO + "'").FirstOrDefault();
if (DecHead_Local == null)
{
DecHead_Local = new DecHead();
dealtype_detail = "insert";
}
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存3");
if (dealtype_detail == "insert")
{
DecHead_Local.GID = Guid.NewGuid().ToString();
DecHead_Local.BSNO = OPAPPLY.BSNO;
preDecHeadVo.setvalue(DecHead_Local);
bll.Add(DecHead_Local);
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存4.1");
}
else
{
preDecHeadVo.setvalue(DecHead_Local);
mark++;
bll.Update(DecHead_Local);
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存4.2");
}
#endregion
#region 电子文档信息
var docdataList = ReceiptDocDAL.GetDocList("BSNO='" + bsno + "'");
//ReceiptContext receiptContext = new ReceiptContext();
foreach (var pdf in head.pdfFile)
{
//Receipt_Doc receipt = receiptContext.ReceiptDocs.FirstOrDefault(o => o.BSNO == bsno && o.URL == pdf.filename);
var doc = docdataList.Find(x => x.URL == pdf.filename);
if (doc == null || doc.BSNO == "")
{
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdInsert =
db.GetSqlStringCommand(
@"insert into Receipt_Doc (GID,BSNO,URL,Driect_URL,MODIFIEDUSER,MODIFIEDTIME,RECEIPTTYPE,DOCUMENTATTACHEDCODE,DOCUMENTATTACHEDNO)
values (@GID,@BSNO,@URL,@Driect_URL,@MODIFIEDUSER,@MODIFIEDTIME,@RECEIPTTYPE,@DOCUMENTATTACHEDCODE,@DOCUMENTATTACHEDNO) ");
cmdInsert.Parameters.Clear();
db.AddInParameter(cmdInsert, "@GID", DbType.String, Guid.NewGuid().ToString());
db.AddInParameter(cmdInsert, "@BSNO", DbType.String, bsno);
db.AddInParameter(cmdInsert, "@URL", DbType.String, pdf.filename);
db.AddInParameter(cmdInsert, "@Driect_URL", DbType.String, pdf.path);
db.AddInParameter(cmdInsert, "@MODIFIEDUSER", DbType.String, USERID);
db.AddInParameter(cmdInsert, "@MODIFIEDTIME", DbType.String, DateTime.Now.ToString());
db.AddInParameter(cmdInsert, "@RECEIPTTYPE", DbType.String, "");
db.AddInParameter(cmdInsert, "@DOCUMENTATTACHEDCODE", DbType.String, "");
db.AddInParameter(cmdInsert, "@DOCUMENTATTACHEDNO", DbType.String, "");
db.ExecuteNonQuery(cmdInsert, tran);
tran.Commit();
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "保存错误" + e.Message);
tran.Rollback();
}
}
}
else
{
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdInsert =
db.GetSqlStringCommand(
@"update Receipt_Doc set URL=@URL,Driect_URL=@Driect_URL,MODIFIEDUSER=@MODIFIEDUSER,MODIFIEDTIME=@MODIFIEDTIME
WHERE GID=@GID ");
cmdInsert.Parameters.Clear();
db.AddInParameter(cmdInsert, "@GID", DbType.String, doc.GID);
db.AddInParameter(cmdInsert, "@URL", DbType.String, pdf.filename);
db.AddInParameter(cmdInsert, "@Driect_URL", DbType.String, pdf.path);
db.AddInParameter(cmdInsert, "@MODIFIEDUSER", DbType.String, USERID);
db.AddInParameter(cmdInsert, "@MODIFIEDTIME", DbType.String, DateTime.Now.ToString());
db.ExecuteNonQuery(cmdInsert, tran);
tran.Commit();
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "保存错误" + e.Message);
tran.Rollback();
}
}
}
//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 = USERID;
// receipt.MODIFIEDTIME = System.DateTime.Now;
// receiptContext.ReceiptDocs.Add(receipt);
//}
//else
//{
// receipt.URL = pdf.filename;
// receipt.Driect_URL = pdf.path;
// receipt.MODIFIEDUSER = USERID;
// receipt.MODIFIEDTIME = System.DateTime.Now;
//}
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存5");
//var _r = receiptContext.SaveChanges();
}
mark = 7;
#endregion
#region 集装箱信息
var opapplyctnlist = MsOpApplyDAL.GetCtnBodyList("BSNO='" + OPAPPLY.BSNO + "'", "");
var containerlist = cbll.GetModelList("PID='" + DecHead_Local.GID + "'");
var portContainerlist = preDecHeadVo.getpreDecContainerVo();
mark = 71;
if (portContainerlist.Count > 0)
{
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
mark = 72;
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);
}
var updapply = false;
foreach (var container in opapplyctnlist)
{
if (container.CNTRNO.Trim() == portContainer.containerNo.Trim())
{
updapply = true;
}
}
if (!updapply)
{
var tran = conn.BeginTransaction();
try
{
var cmdInsert = db.GetSqlStringCommand(@"insert into op_ctn (CTN_ID,BSNO,CTNNUM,CNTRNO,CTNALL) values (NEWID()"
+ ",'" + OPAPPLY.BSNO + "',1,'" + portContainer.containerNo.Trim() + "','40GP')");
db.ExecuteNonQuery(cmdInsert, tran);
tran.Commit();
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "保存错误" + e.Message);
tran.Rollback();
}
}
}
}
}
mark = 8;
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存6");
containerlist = cbll.GetModelList("PID='" + DecHead_Local.GID + "'");
mark = 9;
#endregion
#region 项信息
var declist_List = lbll.GetModelList(0, 99, "PID='" + DecHead_Local.GID + "'", String.Format("{0}", "gNo", ""));
var port_decMergeListVoList = preDecHeadVo.getdecMergeListVo();
var curr = "USD";
decimal cargovalue = 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);
}
try
{
cargovalue = cargovalue + Convert.ToDecimal(port_decMergeListVo.declTotal);
curr = port_decMergeListVo.tradeCurr;
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "保存错误" + e.Message);
}
}
OPAPPLY.CARGOVALUE = cargovalue.ToString();
OPAPPLY.CURRENCY = curr;
modb = new ModelObjectDB();
tempresult = modb.Save(OPAPPLY);
mark = 10;
var Declist = lbll.GetModelList(0, 99, "PID='" + DecHead_Local.GID + "'", String.Format("{0}", "gNo", ""));
var count = lbll.GetRecordCount("PID='" + DecHead_Local.GID + "'");
//BasicDataRefDAL.SaveLog(OPAPPLY, USERID, "单一窗口批量读取", "保存7");
mark = 11;
#endregion
}
catch (Exception e)
{
BasicDataRefDAL.SaveLog(e.Message, USERID, "单一窗口批量读取", "保存错误" + mark.ToString());
}
}
}
}