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.

1322 lines
58 KiB
C#

10 months ago
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
Ii: , 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}", "CONVERT(int, 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}", "CONVERT(int, 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
urlhttp://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
urlhttp://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 |
> startNumberendNumber
*/
const string _IURL_secondapply_noPdf = "http://47.104.90.170:9000/sw/ts/detail";
/*
### API
####
POST
urlhttp://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
urlhttp://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
Ii: , 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");
}
//20210707 境内收发货人 填入 op_apply.CUSTOMER(ENTERP)
//!string.IsNullOrWhiteSpace(cnsnTradeScc) ? cnsnTradeScc : rcvgdTradeScc;
OPAPPLY.ENTERP = DecHead_Local.TradeCoScc;
//20210708 合同协议号 DecHead.ContrNo 填入 OPAPPLY.CONTRACTNO
OPAPPLY.CONTRACTNO = DecHead_Local.ContrNo;
#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}", "CONVERT(int, 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}", "CONVERT(int, 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());
}
}
}
}