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

1011 lines
39 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 DSWeb.Common.DB;
using DSWeb.Common.Extentions;
using DSWeb.Common.Helper;
using JobReqWebData;
using log4net;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Quartz.Impl;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Topshelf;
namespace DSWeb.Service.Output.DingtalkUserList
{
public class DingtalkUserListService : ServiceControl
{
private static ILog logger = LogManager.GetLogger("DingtalkUserListService");
private IConnection mqConn;
public bool Start(HostControl hostControl)
{
// 开始具体的业务逻辑
logger.Debug("开始运行");
//只调用一下ds7的公开接口
return true;
}
public bool Stop(HostControl hostControl)
{
// 结束
logger.Debug("停止运行");
//StdSchedulerFactory.GetDefaultScheduler().Shutdown();
mqConn.Close();
return true;
}
#region 舱单数据解析实体类
public class Ctnlist
{
/// <summary>
///
/// </summary>
public string ctn_id { get; set; }
/// <summary>
///
/// </summary>
public string MFNO { get; set; }
/// <summary>
///
/// </summary>
public string CTNCODE { get; set; }
/// <summary>
///
/// </summary>
public int? SIZE { get; set; }
/// <summary>
///
/// </summary>
public string CTN { get; set; }
/// <summary>
///
/// </summary>
public int? CTNNUM { get; set; }
/// <summary>
///
/// </summary>
public int? TEU { get; set; }
/// <summary>
///
/// </summary>
public string CTNALL { get; set; }
/// <summary>
///
/// </summary>
public string CNTRNO { get; set; }
/// <summary>
///
/// </summary>
public string SEALNO { get; set; }
/// <summary>
///
/// </summary>
public int? PKGS { get; set; }
/// <summary>
///
/// </summary>
public decimal? KGS { get; set; }
/// <summary>
///
/// </summary>
public decimal? CBM { get; set; }
/// <summary>
///
/// </summary>
public string KINDPKGS { get; set; }
/// <summary>
///
/// </summary>
public string DESCRIPTION { get; set; }
/// <summary>
///
/// </summary>
public string MARKS { get; set; }
/// <summary>
///
/// </summary>
public string PO { get; set; }
/// <summary>
///
/// </summary>
public string SKU { get; set; }
/// <summary>
///
/// </summary>
public string SKUDESCRIP { get; set; }
/// <summary>
///
/// </summary>
public string DUNNO { get; set; }
/// <summary>
///
/// </summary>
public string HTS { get; set; }
/// <summary>
///
/// </summary>
public string CTOFORIGIN { get; set; }
/// <summary>
///
/// </summary>
public decimal? GOODVALUE { get; set; }
/// <summary>
///
/// </summary>
public string CTNOWNER { get; set; }
/// <summary>
///
/// </summary>
public string ShiFengRen { get; set; }
/// <summary>
///
/// </summary>
public string LeiXingFa { get; set; }
/// <summary>
///
/// </summary>
public string LeiXingShou { get; set; }
/// <summary>
///
/// </summary>
public string LeiXingTong { get; set; }
/// <summary>
///
/// </summary>
public int ZhongKongBiaoShi { get; set; }
/// <summary>
///
/// </summary>
public string ChengZhongZhongLiang { get; set; }
/// <summary>
///
/// </summary>
public string ChengZhongFangShi { get; set; }
/// <summary>
///
/// </summary>
public string ChengZhongShiJian { get; set; }
/// <summary>
///
/// </summary>
public decimal? PIZHONG { get; set; }
/// <summary>
///
/// </summary>
public string APICTNID { get; set; }
/// <summary>
///
/// </summary>
public DateTime? VGMCLOSETIME { get; set; }
}
public class OpSeaeEdi
{
/// <summary>
///
/// </summary>
public string MBLNO { get; set; }
/// <summary>
///
/// </summary>
public string HBLNO { get; set; }
/// <summary>
///
/// </summary>
public string CARRIERID { get; set; }
/// <summary>
///
/// </summary>
public string CARRIER { get; set; }
/// <summary>
///
/// </summary>
public string WeiTuoFaSongFang { get; set; }
/// <summary>
///
/// </summary>
public string DESTINATION { get; set; }
/// <summary>
///
/// </summary>
public string DESTINATIONID { get; set; }
/// <summary>
///
/// </summary>
public string PORTDISCHARGE { get; set; }
/// <summary>
///
/// </summary>
public string PORTDISCHARGEID { get; set; }
/// <summary>
///
/// </summary>
public DateTime? ETD { get; set; }
/// <summary>
///
/// </summary>
public string CompId { get; set; }
/// <summary>
/// 东方海外物流(中国)有限公司青岛分公司
/// </summary>
public string CompName { get; set; }
/// <summary>
///
/// </summary>
public string MFNO { get; set; }
/// <summary>
///
/// </summary>
public string BSNO { get; set; }
/// <summary>
///
/// </summary>
public string MASTERNO { get; set; }
/// <summary>
///
/// </summary>
public string SHIPPERNAME { get; set; }
/// <summary>
///
/// </summary>
public string SHIPPERADDR1 { get; set; }
/// <summary>
///
/// </summary>
public string SHIPPERCOUNTRY { get; set; }
/// <summary>
///
/// </summary>
public string SHIPPERTEL { get; set; }
/// <summary>
///
/// </summary>
public string CONSIGNEENAME { get; set; }
/// <summary>
///
/// </summary>
public string CONSIGNEEADDR1 { get; set; }
/// <summary>
///
/// </summary>
public string CONSIGNEECOUNTRY { get; set; }
public string CONSIGNEETEL { get; set; }
public string NOTIFYPARTYNAME { get; set; }
public string NOTIFYPARTYADDR1 { get; set; }
/// <summary>
///
/// </summary>
public string NOTIFYPARTYCOUNTRY { get; set; }
/// <summary>
///
/// </summary>
public string NOTIFYPARTYTEL { get; set; }
/// <summary>
///
/// </summary>
public string SHIPPER { get; set; }
/// <summary>
///
/// </summary>
public string CONSIGNEE { get; set; }
/// <summary>
///
/// </summary>
public string NOTIFYPARTY { get; set; }
/// <summary>
///
/// </summary>
public string VESSEL { get; set; }
/// <summary>
///
/// </summary>
public string VOYNO { get; set; }
/// <summary>
///
/// </summary>
public string PORTLOADID { get; set; }
/// <summary>
///
/// </summary>
public string PORTLOAD { get; set; }
/// <summary>
///
/// </summary>
public string PLACEDELIVERYID { get; set; }
/// <summary>
///
/// </summary>
public string PLACEDELIVERY { get; set; }
/// <summary>
///
/// </summary>
public string SERVICE { get; set; }
/// <summary>
///
/// </summary>
public string MARKS { get; set; }
/// <summary>
///
/// </summary>
public string DESCRIPTION { get; set; }
/// <summary>
///
/// </summary>
public int? PKGS { get; set; }
/// <summary>
///
/// </summary>
public string KINDPKGS { get; set; }
/// <summary>
///
/// </summary>
public decimal? KGS { get; set; }
/// <summary>
///
/// </summary>
public decimal? CBM { get; set; }
/// <summary>
///
/// </summary>
public string CARGOID { get; set; }
/// <summary>
///
/// </summary>
public string DCLASS { get; set; }
/// <summary>
///
/// </summary>
public string DUNNO { get; set; }
/// <summary>
///
/// </summary>
public string REEFERF { get; set; }
/// <summary>
///
/// </summary>
public string TEMPID { get; set; }
/// <summary>
///
/// </summary>
public string TEMPSET { get; set; }
/// <summary>
///
/// </summary>
public string TEMPMAX { get; set; }
/// <summary>
///
/// </summary>
public string TEMPMIN { get; set; }
/// <summary>
///
/// </summary>
public string FREIGHTAGMNO { get; set; }
/// <summary>
///
/// </summary>
public string HUMIDITY { get; set; }
/// <summary>
///
/// </summary>
public string SHIPIMO { get; set; }
/// <summary>
///
/// </summary>
public DateTime? ETA { get; set; }
/// <summary>
///
/// </summary>
public string BLFRT { get; set; }
/// <summary>
///
/// </summary>
public DateTime? SENDTIME { get; set; }
/// <summary>
///
/// </summary>
public string YARD { get; set; }
/// <summary>
/// 外代
/// </summary>
public string FORWARDER { get; set; }
/// <summary>
///
/// </summary>
public List<Ctnlist> ctnlist { get; set; }
}
#endregion
/// <summary>
/// 舱单数据生成到OPOther版本的舱单业务中 经汉专用
/// </summary>
/// <param name="jarr"></param>
public void CangdanDataToDS7_OPOther(JArray jarr)
{
try
{
var opUser = dS7Data.User.AsNoTracking().First(u => u.GID == FeeInputUserId);
foreach (var item in jarr)
{
var obj = item as JObject;
var itemstr = item.ToString();
var _edi = JsonConvert.DeserializeObject<OpSeaeEdi>(itemstr);
var MBLNO = obj.GetValue("MBLNO").ToString();
var HBLNO = obj.GetValue("HBLNO").ToString();
var CARRIERID = obj.GetValue("CARRIERID").ToString();
var CARRIER = obj.GetValue("CARRIER").ToString();
var WeiTuoFaSongFang = obj.GetValue("WeiTuoFaSongFang").ToString();
var DESTINATION = obj.GetValue("DESTINATION").ToString();
var DESTINATIONID = obj.GetValue("DESTINATIONID").ToString();
var PORTDISCHARGE = obj.GetValue("PORTDISCHARGE").ToString();
var PORTDISCHARGEID = obj.GetValue("PORTDISCHARGEID").ToString();
var strETD = obj.GetValue("ETD").ToString();
var ETD = Convert.ToDateTime(strETD);
var CompId = obj.GetValue("CompId").ToString();
//看op_other当中有没有该业务主单 如无则增加
var mfno = "topother" + _edi.MFNO;
if (!string.IsNullOrWhiteSpace(_edi.BSNO)) mfno = "topother" + _edi.BSNO;
op_other_md op_other = dS7Data.op_other.FirstOrDefault(x => x.BSNO == mfno);
var BSNO = "";
var CUSTNOHEAD = "";
var CUSTOMERNAME = "";
var custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == WeiTuoFaSongFang);
if (custEdi != null)
{
CUSTOMERNAME = custEdi.CUST;
}
if (op_other == null || op_other.BSNO == null || op_other.BSNO == "")
{
logger.Debug($"未找到委托数据:{MBLNO}");
BSNO = mfno;
//件数 毛重 净重 尺码 sum
var PKGS = 0;
var KGS = 0M;
var CBM = 0M;
foreach (var ja in jarr)
{
var _edi2= JsonConvert.DeserializeObject<OpSeaeEdi>(ja.ToString());
PKGS += _edi2.PKGS==null?0:(int)_edi2.PKGS;
KGS += _edi2.KGS == null ? 0M : (decimal)_edi2.KGS;
CBM += _edi2.CBM == null ? 0M : (decimal)_edi2.CBM;
}
var newrec = new op_other_md
{
BSNO = BSNO,
OPLB = "op_other",
OPLBNAME = "舱单申报",
BSSTATUS = false,
FEESTATUS = false,
MBLNO = MBLNO,
HBLNO = "",
CUSTOMERNAME = CUSTOMERNAME,
//CARRIER
BSDATE = DateTime.Today,
ACCDATE = DateTime.Now.ToString("yyyy-MM"),
BSSOURCE = "",
OP = opUser.SHOWNAME,
CUSTSERVICE = opUser.SHOWNAME,
SALE = opUser.SHOWNAME,
CORPID = Corpid,
ETD = ETD,//业务日期
//SR2023011000005
PORTLOAD = _edi.PORTLOAD,//装货港
PORTDISCHARGE = _edi.PORTDISCHARGE,//卸货港
PKGS= PKGS,
KGS= KGS,
NETWEIGHT=0,
CBM= CBM
};
var billnoset = dS7Data.SysBillNoSet.AsNoTracking().FirstOrDefault(x => x.COMPANYID == Corpid && x.OPLBNAME == "舱单申报" && x.RULEBLNO == "委托编号");
if (billnoset != null)
newrec.CUSTNO = GetBillNo(billnoset, newrec.ETD.ToString(), newrec.ACCDATE, opname: opUser.SHOWNAME, corpid: Corpid);
else
{
logger.Debug($"SysBillNoSet数据未找到无法生成编号{MBLNO}");
}
dS7Data.op_other.Add(newrec);
dS7Data.SaveChanges();
op_other= dS7Data.op_other.FirstOrDefault(x => x.BSNO == mfno);
}
else
{
logger.Debug($"委托数据已存在:{MBLNO}");
BSNO = op_other.BSNO;
CUSTNOHEAD = op_other.CUSTNO;
}
//看op_seae_edi当中有没有该业务 如无则增加
var ediList = dS7Data.op_seae_edi.Where(x => x.BSNO == BSNO).ToList();
if (!ediList.Exists(x => x.MBLNO == MBLNO && x.HBLNO == HBLNO))
{
var newedi = new op_seae_edi_md {
MFNO = _edi.MFNO,
BSNO = mfno,
MASTERNO = mfno,
CUSTNO = CUSTNOHEAD + (ediList.Count + 1).ToString(),
MBLNO =_edi.MBLNO,
HBLNO = _edi.HBLNO,
CARRIERID = _edi.CARRIERID,
CARRIER = _edi.CARRIER,
//WeiTuoFaSongFang = _edi.WeiTuoFaSongFang,
DESTINATION = _edi.DESTINATION,
DESTINATIONID = _edi.DESTINATIONID,
PORTDISCHARGE = _edi.PORTDISCHARGE,
PORTDISCHARGEID = _edi.PORTDISCHARGEID,
ETD = _edi.ETD,
SHIPPERNAME = _edi.SHIPPERNAME,
SHIPPERADDR1 = _edi.SHIPPERADDR1,
SHIPPERCOUNTRY = _edi.SHIPPERCOUNTRY,
SHIPPERTEL = _edi.SHIPPERTEL,
CONSIGNEENAME = _edi.CONSIGNEENAME,
CONSIGNEEADDR1 = _edi.CONSIGNEEADDR1,
CONSIGNEECOUNTRY = _edi.CONSIGNEECOUNTRY,
CONSIGNEETEL = _edi.CONSIGNEETEL,
NOTIFYPARTYNAME = _edi.NOTIFYPARTYNAME,
NOTIFYPARTYADDR1 = _edi.NOTIFYPARTYADDR1,
NOTIFYPARTYCOUNTRY = _edi.NOTIFYPARTYCOUNTRY,
NOTIFYPARTYTEL = _edi.NOTIFYPARTYTEL,
SHIPPER = _edi.SHIPPER,
CONSIGNEE = _edi.CONSIGNEE,
NOTIFYPARTY = _edi.NOTIFYPARTY,
VESSEL = _edi.VESSEL,
VOYNO = _edi.VOYNO,
PORTLOADID = _edi.PORTLOADID,
PORTLOAD = _edi.PORTLOAD,
PLACEDELIVERYID = _edi.PLACEDELIVERYID,
PLACEDELIVERY = _edi.PLACEDELIVERY,
SERVICE = _edi.SERVICE,
MARKS = _edi.MARKS,
DESCRIPTION = _edi.DESCRIPTION,
PKGS = _edi.PKGS,
KINDPKGS = _edi.KINDPKGS,
KGS = _edi.KGS,
CBM = _edi.CBM,
CARGOID = _edi.CARGOID,
DCLASS = _edi.DCLASS,
DUNNO = _edi.DUNNO,
REEFERF = _edi.REEFERF,
TEMPID = _edi.TEMPID,
TEMPSET = _edi.TEMPSET,
TEMPMAX = _edi.TEMPMAX,
TEMPMIN = _edi.TEMPMIN,
FREIGHTAGMNO = _edi.FREIGHTAGMNO,
HUMIDITY = _edi.HUMIDITY,
SHIPIMO = _edi.SHIPIMO,
ETA = _edi.ETA,
BLFRT = _edi.BLFRT,
SENDTIME = _edi.SENDTIME,
YARD = _edi.YARD,
FORWARDER = _edi.FORWARDER
};
dS7Data.op_seae_edi.Add(newedi);
if (_edi.ctnlist != null && _edi.ctnlist.Count > 0) {
foreach (var ctn in _edi.ctnlist) {
var newctn = new op_seae_edi_ctn_md
{
ctn_id = Guid.NewGuid().ToString(),//ctn.ctn_id,
MFNO = _edi.MFNO,
CTNCODE = ctn.CTNCODE,
CNTRNO= ctn.CNTRNO,
SEALNO = ctn.SEALNO,
SIZE = ctn.SIZE.ToString(),
CTN = ctn.CTN,
CTNNUM = ctn.CTNNUM,
TEU = ctn.TEU,
CTNALL = ctn.CTNALL,
PKGS = ctn.PKGS,
KGS = ctn.KGS,
CBM = ctn.CBM,
KINDPKGS = ctn.KINDPKGS,
DESCRIPTION = ctn.DESCRIPTION,
MARKS = ctn.MARKS,
PO = ctn.PO,
SKU = ctn.SKU,
SKUDESCRIP = ctn.SKUDESCRIP,
DUNNO = ctn.DUNNO,
HTS = ctn.HTS,
CTOFORIGIN = ctn.CTOFORIGIN,
GOODVALUE = ctn.GOODVALUE,
CTNOWNER = ctn.CTNOWNER
};
dS7Data.op_seae_edi_ctn.Add(newctn);
}
}
dS7Data.SaveChanges();
}
//只要有对应的往来单位=委托发送方 主分单都产生相应的应收
InfoClient infoClient = null;
if (!string.IsNullOrEmpty(CUSTOMERNAME))
{
infoClient = dS7Data.InfoClient.AsNoTracking().FirstOrDefault(x => x.SHORTNAME == CUSTOMERNAME);
if (infoClient != null)
{
op_other.SALE = infoClient.SALE; //揽货人赋值
//查询配置,生成应收
var fee = dS7Data.CustFeeTemplateDetail.AsNoTracking().FirstOrDefault(x => x.CUSTOMERNAME == infoClient.SHORTNAME && x.FEENAME == FeeShouName);
if (fee != null )
{
var feeShou = new ChFee();
feeShou.GID = Guid.NewGuid().ToString().Replace("-", "");
feeShou.BSNO = op_other.BSNO;
feeShou.FEETYPE = 1;
feeShou.FEENAME = FeeShouName;
feeShou.CUSTOMERTYPE = "其他";
feeShou.CUSTOMERNAME = infoClient.SHORTNAME;
feeShou.UNIT = fee.UNIT;
feeShou.UNITPRICE = fee.UNITPRICE;
feeShou.QUANTITY = 1;
feeShou.AMOUNT = fee.UNITPRICE;
feeShou.EXCHANGERATE = 1;
feeShou.CURRENCY = "RMB";
feeShou.ENTEROPERATOR = FeeInputUserId;
feeShou.ENTERDATE = DateTime.Now;
feeShou.MODIFIEDUSER = FeeInputUserId;
feeShou.MODIFIEDTIME = DateTime.Now;
feeShou.LOCALCURR = feeShou.CURRENCY;
feeShou.FEEDESCRIPTION = feeShou.FEENAME;
feeShou.FEESTATUS = 0;//费用插入时状态为提交审核2021-12-8要求插入时状态改为录入状态12021-12-9要求状态为审核通过状态0
//2021-12-8下列字段不能为空写入默认值
feeShou.SETTLEMENT = 0;
feeShou.ORDERAMOUNT = 0;
feeShou.ORDERINVOICE = 0;
feeShou.ORDERINVSETTLEMENT = 0;
feeShou.ORDERSETTLEMENT = 0;
feeShou.INVOICE = 0;
feeShou.TAXRATE = 0;
feeShou.ISADVANCEDPAY = false;
feeShou.ISINVOICE = false;
feeShou.ISCRMORDERFEE = false;
feeShou.TAXUNITPRICE = fee.UNITPRICE;//2021-12-29于菲同样赋值单价和金额
feeShou.NOTAXAMOUNT = fee.UNITPRICE;//2021-12-29于菲同样赋值单价和金额
//2021-12-9要求下列字段不能为空填写0或false
feeShou.COMMISSIONRATE = 0;
feeShou.AUDITSTATUS = 0;
feeShou.LINENUM = 0;
feeShou.ISDEBIT = false;
feeShou.ISOPEN = false;
feeShou.ACCTAXRATE = 0;
feeShou.ISVOU = false;
feeShou.TAX = 0;
feeShou.PREAMOUNT = 0;
feeShou.ISACC = false;
feeShou.CUSTDUI = false;
feeShou.BXGID = HBLNO;
//2021-12-23分单号写入备注
//if (!string.IsNullOrEmpty(HBLNO))
//{
// feeShou.REMARK += $" {HBLNO} ";
//}
dS7Data.ChFee.Add(feeShou);
}
}
}
//应付
if (string.IsNullOrEmpty(HBLNO) && FeePayPrice>0) //主单才插入船代费用
{
var feeFu = new ChFee();
feeFu.GID = Guid.NewGuid().ToString().Replace("-", "");
feeFu.BSNO = op_other.BSNO;
feeFu.FEETYPE = 2;
feeFu.FEENAME = FeePayName;
feeFu.CUSTOMERTYPE = FeePayCustomerType;
feeFu.CUSTOMERNAME = FeePayCustomer;
feeFu.UNIT = "票";
feeFu.UNITPRICE = FeePayPrice;
feeFu.QUANTITY = 1;
feeFu.AMOUNT = FeePayPrice;
feeFu.EXCHANGERATE = 1;
feeFu.CURRENCY = "RMB";
feeFu.ENTEROPERATOR = FeeInputUserId;
feeFu.ENTERDATE = DateTime.Now;
feeFu.MODIFIEDUSER = FeeInputUserId;
feeFu.MODIFIEDTIME = DateTime.Now;
feeFu.LOCALCURR = feeFu.CURRENCY;
feeFu.FEEDESCRIPTION = feeFu.FEENAME;
feeFu.FEESTATUS = 0;//费用插入时状态为提交审核2021-12-8要求插入时状态改为录入状态12021-12-9要求状态为审核通过状态0
//2021-12-8下列字段不能为空写入默认值
feeFu.SETTLEMENT = 0;
feeFu.ORDERAMOUNT = 0;
feeFu.ORDERINVOICE = 0;
feeFu.ORDERINVSETTLEMENT = 0;
feeFu.ORDERSETTLEMENT = 0;
feeFu.INVOICE = 0;
feeFu.TAXRATE = 0;
feeFu.ISADVANCEDPAY = false;
feeFu.ISINVOICE = false;
feeFu.ISCRMORDERFEE = false;
feeFu.TAXUNITPRICE = FeePayPrice;
feeFu.NOTAXAMOUNT = 0;
//2021-12-9要求下列字段不能为空填写0或false
feeFu.COMMISSIONRATE = 0;
feeFu.AUDITSTATUS = 0;
feeFu.LINENUM = 0;
feeFu.ISDEBIT = false;
feeFu.ISOPEN = false;
feeFu.ACCTAXRATE = 0;
feeFu.ISVOU = false;
feeFu.TAX = 0;
feeFu.PREAMOUNT = 0;
feeFu.ISACC = false;
feeFu.CUSTDUI = false;
feeFu.BXGID = HBLNO;
dS7Data.ChFee.Add(feeFu);
dS7Data.SaveChanges();
}
if (FeePayMyshippingPrice > 0) {
//不管主单分单都要付费给大简云
var feeFuDJY = new ChFee();
feeFuDJY.GID = Guid.NewGuid().ToString().Replace("-", "");
feeFuDJY.BSNO = op_other.BSNO;
feeFuDJY.FEETYPE = 2;
feeFuDJY.FEENAME = FeePayMyshippingName;
feeFuDJY.CUSTOMERTYPE = "其他";
feeFuDJY.CUSTOMERNAME = FeePayMyshippingCustomer;
feeFuDJY.UNIT = "票";
feeFuDJY.UNITPRICE = FeePayMyshippingPrice;
feeFuDJY.QUANTITY = 1;
feeFuDJY.AMOUNT = FeePayMyshippingPrice;
feeFuDJY.EXCHANGERATE = 1;
feeFuDJY.CURRENCY = "RMB";
feeFuDJY.ENTEROPERATOR = FeeInputUserId;
feeFuDJY.ENTERDATE = DateTime.Now;
feeFuDJY.MODIFIEDUSER = FeeInputUserId;
feeFuDJY.MODIFIEDTIME = DateTime.Now;
feeFuDJY.LOCALCURR = feeFuDJY.CURRENCY;
feeFuDJY.FEEDESCRIPTION = feeFuDJY.FEENAME;
feeFuDJY.FEESTATUS = 0;//费用插入时状态为提交审核2021-12-8要求插入时状态改为录入状态12021-12-9要求状态为审核通过状态0
//2021-12-8下列字段不能为空写入默认值
feeFuDJY.SETTLEMENT = 0;
feeFuDJY.ORDERAMOUNT = 0;
feeFuDJY.ORDERINVOICE = 0;
feeFuDJY.ORDERINVSETTLEMENT = 0;
feeFuDJY.ORDERSETTLEMENT = 0;
feeFuDJY.INVOICE = 0;
feeFuDJY.TAXRATE = 0;
feeFuDJY.ISADVANCEDPAY = false;
feeFuDJY.ISINVOICE = false;
feeFuDJY.ISCRMORDERFEE = false;
feeFuDJY.TAXUNITPRICE = FeePayMyshippingPrice;
feeFuDJY.NOTAXAMOUNT = 0;
//2021-12-9要求下列字段不能为空填写0或false
feeFuDJY.COMMISSIONRATE = 0;
feeFuDJY.AUDITSTATUS = 0;
feeFuDJY.LINENUM = 0;
feeFuDJY.ISDEBIT = false;
feeFuDJY.ISOPEN = false;
feeFuDJY.ACCTAXRATE = 0;
feeFuDJY.ISVOU = false;
feeFuDJY.TAX = 0;
feeFuDJY.PREAMOUNT = 0;
feeFuDJY.ISACC = false;
feeFuDJY.CUSTDUI = false;
feeFuDJY.BXGID = HBLNO;
dS7Data.ChFee.Add(feeFuDJY);
//dS7Data.Database.Log = (x => { logger.Debug(x); });
dS7Data.SaveChanges();
}
}
}
catch (Exception e) {
logger.Error($"导入舱单出错:{e}");
}
}
/// <summary>
/// 生成编号从东胜7移植并修改
/// </summary>
/// <param name="billType"></param>
/// <param name="bsdate"></param>
/// <param name="accdate"></param>
/// <param name="dbname"></param>
/// <param name="opname"></param>
/// <param name="corpid"></param>
/// <param name="bshead"></param>
/// <returns></returns>
private string GetBillNo(SysBillNoSet billType, string bsdate, string accdate, string dbname = "", string opname = "", string corpid = "", string bshead = "")
{
var orgCode = "";
var UserCode = "";
UserCode = GetUserCode(opname, dbname);
orgCode = GetCorpCode(corpid, dbname);
//List<SqlParameter> paramArray = new List<SqlParameter>();
//paramArray.Add(new SqlParameter("@ps_BillType", billType.BILLTYPE));
//paramArray.Add(new SqlParameter("@ps_OrgCode", orgCode));
//paramArray.Add(new SqlParameter("@ps_EmpCode", UserCode));
//paramArray.Add(new SqlParameter("@ps_bshead", bshead));
//if (billType.RULEDATETYPE == "业务日期")
// paramArray.Add(new SqlParameter("@ps_Date", bsdate));
//else if (billType.RULEDATETYPE == "会计期间" && accdate.Length == 7)
// paramArray.Add(new SqlParameter("@ps_Date", accdate + "-01"));
//else
// paramArray.Add(new SqlParameter("@ps_Date", accdate + ""));
//paramArray.Add(new SqlParameter("@ps_BillNo", 20));
//SqlParameter sqlParaOut = new SqlParameter("@ps_RefBillNo", SqlDbType.VarChar, 50);
//sqlParaOut.Direction = ParameterDirection.Output;
//paramArray.Add(sqlParaOut);
//dS7Data.Database.ExecuteSqlCommand("EXEC [sSysGetBillNo_new] @ps_BillType,@ps_OrgCode,@ps_EmpCode,@ps_bshead,@ps_Date,@ps_BillNo,@ps_RefBillNo output", paramArray.ToArray());
//ExecStoredProcedure("sSysGetBillNo_new", paramArray.ToArray());
var bsDate = string.Empty;
if (!string.IsNullOrWhiteSpace(bsdate))
bsdate = Convert.ToDateTime(bsdate).ToString("yyyy-MM-dd");
if (billType.RULEDATETYPE == "业务日期")
bsDate = bsdate;
else if (billType.RULEDATETYPE == "会计期间" && accdate.Length == 7)
bsDate = accdate + "-01";
else
bsDate = accdate;
var cmd = $@"DECLARE @ps_BillNo varchar(20)
EXEC [sSysGetBillNo_new]
@ps_BillType = N'{billType.BILLTYPE}',
@ps_OrgCode = N'{orgCode}',
@ps_EmpCode = N'{UserCode}',
@ps_Date = N'{bsDate}',
@ps_bshead = N'{bshead}',
@ps_BillNo = @ps_BillNo OUTPUT,
@ps_RefBillNo = N''
SELECT @ps_BillNo as N'billno'";
return dS7Data.Database.SqlQuery<string>(cmd).First();
}
/// <summary>
/// 获取用户code参考东胜7修改
/// </summary>
/// <param name="username"></param>
/// <param name="dbname"></param>
/// <returns></returns>
private string GetUserCode(string username, string dbname = "")
{
//string EDICODE = "";
//var strSql = new StringBuilder();
//strSql.Append("select CODENAME from [user] where SHOWNAME='" + username + "'");
//Database db = string.IsNullOrWhiteSpace(dbname) ? DatabaseFactory.CreateDatabase() : DatabaseFactory.CreateDatabase(dbname);
//using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
//{
// while (reader.Read())
// {
// EDICODE = Convert.ToString(reader["CODENAME"]);
// }
// reader.Close();
//}
//return EDICODE;
return dS7Data.Database.SqlQuery<string>("select CODENAME from [user] where SHOWNAME='" + username + "'").FirstOrDefault();
}
/// <summary>
/// 获取公司code参考东胜7修改
/// </summary>
/// <param name="Corpid"></param>
/// <param name="dbname"></param>
/// <returns></returns>
private string GetCorpCode(string Corpid, string dbname = "")
{
//string EDICODE = "";
//var strSql = new StringBuilder();
//strSql.Append("select CODENAME from [company] where GID='" + Corpid + "'");
//Database db = string.IsNullOrWhiteSpace(dbname) ? DatabaseFactory.CreateDatabase() : DatabaseFactory.CreateDatabase(dbname);
//using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
//{
// while (reader.Read())
// {
// EDICODE = Convert.ToString(reader["CODENAME"]);
// }
// reader.Close();
//}
//return EDICODE;
return dS7Data.Database.SqlQuery<string>("select CODENAME from [company] where GID='" + Corpid + "'").FirstOrDefault();
}
public static int ExecStoredProcedure(string procName, params SqlParameter[] parameters)
{
int rtn = 0;
using (SqlConnection conn = new SqlConnection(DS7ConnStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
SqlTransaction st = conn.BeginTransaction();
cmd.Transaction = st;
try
{
cmd.CommandText = procName;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(parameters);
var rr = cmd.ExecuteScalar();
st.Commit();
return rtn;
}
catch (SqlException sqlex)
{
st.Rollback();
throw sqlex;
}
}
}
}
}
}