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

628 lines
23 KiB
C#

2 years ago
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.Entity.Migrations;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using Colo.Web.admin.user;
using com.sun.org.apache.bcel.@internal.generic;
2 years ago
using DSWeb.Areas.CommMng.Models;
using DSWeb.Areas.MvcShipping.Helper;
using DSWeb.Common.DB;
using DSWeb.EntityDA;
using DSWeb.MvcShipping.DAL.MsChFeeDAL;
using DSWeb.MvcShipping.DAL.MsOpApplyDAL;
using DSWeb.MvcShipping.Helper;
using DSWeb.MvcShipping.Helper.Repository;
using DSWeb.MvcShipping.Models.MsInfoClient;
using DSWeb.MvcShipping.Models.MsOpApply;
using DSWeb.ParameterSet;
2 years ago
using DSWeb.SoftMng.Model;
using DSWeb.TruckMng.Comm.Cookie;
using HcUtility.Comm;
using java.rmi.server;
using Microsoft.Practices.EnterpriseLibrary.Data;
using NPOI.SS.Formula.Functions;
namespace DSWeb.Areas.CommMng.DAL
{
public class PublicAPIDAL
{
public static JsonResponse GuanMaoYun_Head_Save(GuanMaoYun_Head head,string OP)
2 years ago
{
var result = new JsonResponse();
//将head转化为报关业务
//var OpapplyHead = getHeadInfo(head);
var cdc = new CommonDataContext();
var admin = cdc.VW_user.First(x => x.CODENAME == "admin");
var _r2 = getHeadInfo(head, "add", admin);
if (!_r2.Success)
{
result = new JsonResponse { Success = _r2.Success, Message = _r2.Message, Data = _r2.Data };
return result;
}
var OpapplyHead = (MsOpApply)_r2.Data;
2 years ago
var OpapplyGoodsDetailList = new List<MsOpApplyDetail>();
var OpapplyCtnList = new List<MsOpCtn>();
//根据唯一编号判断是否重复
//如重复则更新 如不重复则添加MsOpApply 和 MsOpApplyDetail都是
//
var bsno = OpapplyHead.BSNO;
var _count = BasicDataRefDAL.GetExist("OP_APPLY", " BSNO='" + bsno + "' ");
var delDetailList = new List<MsOpApplyDetail>();
var delCtnList = new List<MsOpCtn>();
2 years ago
if (_count == 0)
{
var _r3 = getHeadInfo(head, "add", admin);
if (!_r3.Success)
{
result = new JsonResponse { Success = _r3.Success, Message = _r3.Message, Data = _r3.Data };
return result;
}
OpapplyHead = (MsOpApply)_r3.Data;
2 years ago
OpapplyHead.DbOperationType = DbOperationType.DbotIns;
OpapplyHead.ModelUIStatus = "I";
if (OpapplyHead.CUSTNO == "")
{
var isuse = false;
var _r1 = MsOpApplyDAL.getCUSTNO(OpapplyHead, admin.USERID, admin.SHOWNAME, admin.COMPANYID);
if (_r1.Success)
{
OpapplyHead.CUSTNO = _r1.Data.ToString();
//iscreatecustno = true;
}
else
{
var jsonRespose2 = new JsonResponse
{
Success = _r1.Success,
Message = _r1.Message,
Data = null
};
return jsonRespose2;
}
}
OpapplyGoodsDetailList = getGoodsDetailListInfo(head);
OpapplyCtnList = getCtnListInfo(head);
}
else
{
2 years ago
//OpapplyHead = getHeadInfo(head, "update");
var _r4 = getHeadInfo(head, "update");
if (!_r4.Success)
{
result = new JsonResponse { Success = _r4.Success, Message = _r4.Message, Data = _r4.Data };
return result;
}
OpapplyHead = (MsOpApply)_r4.Data;
2 years ago
OpapplyHead.DbOperationType = DbOperationType.DbotUpd;
OpapplyHead.ModelUIStatus = "E";
//var currhead= MsOpApplyDAL.GetData("BSNO='"+ bsno + "'");
OpapplyGoodsDetailList = getGoodsDetailListInfo(head);
OpapplyCtnList = getCtnListInfo(head);
//同时将后台已有而此次没有的明细加入删除列表
//var currDetailList= MsOpApplyDAL.GetBodyList(" BsNo='" + bsno + "'");
//if (currDetailList.Count > 0) {
// foreach (var item in currDetailList) {
// //如果存在 则update
// if (OpapplyGoodsDetailList.Exists(x => x.BsNo == bsno && x.SerialNo == item.SerialNo))
// {
// var updrec = OpapplyGoodsDetailList.First(x => x.BsNo == bsno && x.SerialNo == item.SerialNo);
// OpapplyGoodsDetailList.Remove(updrec);
// updrec.DbOperationType = DbOperationType.DbotUpd;
// updrec.BsNo=
// OpapplyGoodsDetailList.Add(updrec) ;
// }
// else {
// delDetailList.Add(item);
// }
// }
//}
//20230111 改为删除所有明细
BasicDataRefDAL.ExecSql($"delete from op_apply_detail where BSNO ='{bsno}'");
BasicDataRefDAL.ExecSql($"delete from op_ctn where BSNO ='{bsno}'");
//var currctnList = MsOpApplyDAL.GetCtnBodyList(" BsNo='" + bsno + "'");
//if (currctnList.Count > 0)
//{
// foreach (var item in currctnList)
// {
// if (OpapplyCtnList.Exists(x => x.BSNO == bsno && x.CNTRNO == item.CNTRNO))
// {
// var updrec = OpapplyCtnList.First(x => x.BSNO == bsno && x.CNTRNO == item.CNTRNO);
// OpapplyCtnList.Remove(updrec);
// updrec.DbOperationType = DbOperationType.DbotUpd;
// updrec.CTN_ID= item.CTN_ID;
// updrec.GID = item.GID;
// OpapplyCtnList.Add(updrec);
// }
// else
// {
// delCtnList.Add(item);
// }
// }
//}
2 years ago
}
OpapplyHead.OP = OP;
2 years ago
var modb = new ModelObjectRepository();
2 years ago
DBResult _r = modb.Save(OpapplyHead
, ModelObjectConvert<MsOpApplyDetail>.ToModelObjectList(OpapplyGoodsDetailList)
, ModelObjectConvert<MsOpApplyDetail>.ToModelObjectList(delDetailList)
, ModelObjectConvert<MsOpCtn>.ToModelObjectList(OpapplyCtnList)
, ModelObjectConvert<MsOpCtn>.ToModelObjectList(delCtnList)
2 years ago
);
result = new JsonResponse { Success = _r.Success, Message = _r.Message, Data = _r.Data };
2 years ago
return result;
}
public static JsonResponse GuanMaoYun_Fee_Save(GuanMaoYun_Fee FeeHead)
{
var result = new JsonResponse();
//根据 GuanMaoYun_Fee.CUSTOMER 查找客户
//在 code_cust_edi当中寻找EDICODE=关贸云的对应关系取EDINAME=GuanMaoYun_Fee.CUSTOMER的CUST
var BSNO = FeeHead.JOB_ID;
var _count = BasicDataRefDAL.GetExist("OP_APPLY", " BSNO='" + BSNO + "' ");
if (_count == 0)
{
result = new JsonResponse { Success = false, Message = "【" + BSNO + "】没有该业务编号的业务,请先导出业务" };
return result;
}
var cdc = new CommonDataContext();
var feecustidList = new List<string>();
foreach (var costs in FeeHead.COSTS)
{
feecustidList.Add(costs.COAGENT_ID.ToString());
}
var feecodelist = new List<string>();
foreach (var costs in FeeHead.COSTS)
{
feecodelist.Add(costs.FEE_TYPE_CODE.ToString());
}
var customernameList = cdc.code_cust_edi.Where(x => x.EDINAME == "关贸云" && feecustidList.Contains(x.EDICODE)).ToList();
2 years ago
var CUSTOMER = new info_client_md();
if (customernameList.Count > 0)
{
foreach (var Fee in FeeHead.COSTS)
{
if (customernameList.Exists(x => x.EDICODE == Fee.COAGENT_ID))
2 years ago
{
}
else
{
result = new JsonResponse { Success = false, Message = "【" + Fee.COAGENT_ID + "】没有对应的往来单位信息" };
2 years ago
return result;
}
}
2 years ago
//CUSTOMER = cdc.info_client.FirstOrDefault(x => x.SHORTNAME == customernameList[0].CUST);
}
else
{
var _str = string.Join(",", feecustidList);
result = new JsonResponse { Success = false, Message = "【" + _str + "】没有对应的往来单位信息" };
2 years ago
return result;
}
var feelist = cdc.code_fee_edi.Where(x => feecodelist.Contains(x.FEEENAME)).ToList();
foreach (var costs in FeeHead.COSTS)
{
if (!feelist.Exists(x => x.FEEENAME == costs.FEE_TYPE_CODE))
{
result = new JsonResponse { Success = false, Message = "【" + costs.FEE_TYPE_CODE + "】没有对应的费用名称" };
2 years ago
return result;
}
}
2 years ago
var CurrChfeelist = cdc.ch_fee.Where(x => x.BSNO == BSNO && x.BXGID == "GMY").ToList();
2 years ago
2 years ago
//20230103 导入费用时先删除所有能删的费用
2 years ago
var = cdc.ch_fee.Where(x => x.BSNO == BSNO).ToList();
2 years ago
var delgidListstr = "";
foreach (var item2 in )
{
if (MsChFeeDAL.ChFeeCanChange(item2))
{
var delgidstr = "'" + item2.GID + "'";
if (delgidListstr != "") delgidListstr += ",";
delgidListstr += delgidstr;
}
2 years ago
}
if (delgidListstr != "")
{
delgidListstr += BasicDataRefDAL.ExecSql($"delete from ch_fee where gid in({delgidListstr})");
}
foreach (var item in FeeHead.COSTS)
{
var customername = cdc.code_cust_edi.FirstOrDefault(x => x.EDINAME == "关贸云" && x.EDICODE == item.COAGENT_ID);
2 years ago
CUSTOMER = cdc.info_client.FirstOrDefault(x => x.SHORTNAME == customername.CUST);
//如果存在SOURCE_JOB_BALANCE_ID等于当前存在的某费用
//如状态为 1 6 录入 提交 驳回 则直接更新之
//如状态不为1 6 则返回错误
//如不存在SOURCE_JOB_BALANCE_ID等于当前存在的某费用GID 则添加
if (CurrChfeelist.Exists(x => x.GID == item.SOURCE_JOB_BALANCE_ID))
{
//如状态为 1 6 录入 提交 驳回 则直接更新之
//如状态不为1 6 则返回错误
var currfee = CurrChfeelist.First(x => x.GID == item.SOURCE_JOB_BALANCE_ID);
if (currfee.FEESTATUS == 1 || currfee.FEESTATUS == 6)//currfee.FEESTATUS == 2 ||
2 years ago
{
currfee = getFee(FeeHead, item, CUSTOMER, currfee);
cdc.ch_fee.AddOrUpdate(currfee);
cdc.SaveChanges();
2 years ago
result.OK();
2 years ago
}
else
{
2 years ago
result.SetError("费用已审核通过,请将当前业务的费用流程回退至可被更改的状态(录入状态 驳回提交)");
//return result;
}
}
else
{
2 years ago
//如不存在SOURCE_JOB_BALANCE_ID等于当前存在的某费用GID 则添加
var newfee = getFee(FeeHead, item, CUSTOMER);
cdc.ch_fee.Add(newfee);
cdc.SaveChanges();
2 years ago
result.OK();
}
2 years ago
}
foreach (var currfee in CurrChfeelist)
{
2 years ago
if (FeeHead.COSTS.Exists(x => x.SOURCE_JOB_BALANCE_ID == currfee.GID))
{
}
else
{
2 years ago
//如不存在则删除
if (currfee.FEESTATUS == 1 || currfee.FEESTATUS == 6)//currfee.FEESTATUS == 2 ||
2 years ago
{
BasicDataRefDAL.ExecSql($"delete from ch_fee where gid='{currfee.GID}'");
}
else
{
result.SetError("费用已审核通过,请将当前业务的费用流程回退至可被更改的状态(录入状态 驳回提交)");
//return result;
}
}
}
return result;
}
public static DBResult getHeadInfo(GuanMaoYun_Head headinfo, string opstatus, VW_user_md userinfo = null)
2 years ago
{
var result = new MsOpApply();
var returnresult = new DBResult();
2 years ago
if (opstatus == "add")
{
result.INPUTBY = userinfo.SHOWNAME;
result.CORPID = userinfo.COMPANYID;
}
else
{
2 years ago
result = MsOpApplyDAL.GetData("BSNO='" + headinfo.BUSINESS_ORDER_INFO.WORK_NO + "'");
}
var head = headinfo.DECL_HEAD;
result.BSNO = headinfo.GetBSNO();
result.MASTERNO = headinfo.BUSINESS_ORDER_INFO.WORK_NO;
result.CUSCIQNO = head.EPROT_NO;
var cdc = new CommonDataContext();
//委托单位使用BUSINESS_ORDER_INFO.EXPORT_CODE和code_cust_edi中ediname=关贸云的数据相关联 如无则返回错误
var code = headinfo.BUSINESS_ORDER_INFO.EXPORT_CODE;
var customernameList = cdc.code_cust_edi.Where(x => x.EDINAME == "关贸云" && code == x.EDICODE).ToList();
var CUSTOMER = new info_client_md();
if (customernameList.Count > 0)
{
result.CUSTOMERNAME = customernameList[0].CUST;
}
else
{
returnresult.SetErrorInfo($"[{委托单位关贸云code}]没有做代码对应ediname=关贸云,edicode=关贸云的用户id");
return returnresult;
}
//result.CUSTOMERNAME = headinfo.BUSINESS_ORDER_INFO.EXPORT_NAME;
2 years ago
//E出口 I进口
if (head.IE_TYPE == "E") result.BSTYPE = "2";
if (head.IE_TYPE == "I") result.BSTYPE = "1";
//head.DECL_TYPE //暂不处理
//head.DECL_PORT
//result.MBLNO = head.BILL_NO;
2 years ago
result.VESSEL = head.TRANS_TOOL_NAME;
result.VOYNO = head.VOYAGE_NO;
if (head.())
{
result.ETD = head.IE_DATE.ToString("yyyy-MM-dd");
if (result.ETD == "0001-01-01") result.ETD = null;
2 years ago
result.PORTDISCHARGE = head.DEST_PORT_CODE;
result.DESPPORT = head.CIQ_ENTY_PORT_CODE;
}
if (head.())
{
result.ETA = head.IE_DATE.ToString("yyyy-MM-dd");
if (result.ETD == "0001-01-01") result.ETD = null;
2 years ago
result.PORTLOAD = head.DEST_PORT_CODE;
result.GOODSOURCE = head.COUNTRY_CODE_EN;
result.CONSIGNEE = head.EXPORT_NAME;//经营单位名称 进口:境内收货人名称 出口:发货人名称
}
result.ARCOUNTRY = head.COUNTRY_CODE_EN;
result.CUSTOMNO = head.CUSTOMS_NO;//报关单号
2 years ago
result.CUSTOMDATE = head.DECL_DATE.ToString("yyyy-MM-dd");
if (result.CUSTOMDATE == "0001-01-01") result.CUSTOMDATE = null;
2 years ago
result.INSPECTIONNO = head.CORRELATION_DECL_NO;
2 years ago
2 years ago
result.BOOKNO = head.HAND_BOOK_NO;//手册备案号
result.CONTRACTNO = head.CONTR_NO;//合同号
result.PKGS = string.IsNullOrWhiteSpace(head.TOTAL_PACKEGES) ? 0 : Convert.ToDecimal(head.TOTAL_PACKEGES);
result.KGS = string.IsNullOrWhiteSpace(head.TOTAL_GROSS_WEIGHT) ? 0 : Convert.ToDecimal(head.TOTAL_GROSS_WEIGHT);
result.NETWEIGHT = string.IsNullOrWhiteSpace(head.TOTAL_NET_WEIGHT) ? 0 : Convert.ToDecimal(head.TOTAL_NET_WEIGHT);
//result.CBM = string.IsNullOrWhiteSpace(head.TOTAL_NET_WEIGHT) ? 0 : Convert.ToDecimal(head.TOTAL_NET_WEIGHT);
//result.BYCUSTOM = head.cus;
result.BSCUSTOMNO = head.RELATIVE_ENTRY_ID;//关联报关单号
result.TRADETERM = head.TRADE_TYPE_CODE;//贸易方式
result.CURRENCY = head.CURRENCY_CODE;
result.CURRENCY = head.CURRENCY_CODE;
result.CARGOVALUE = head.TOTAL_AMOUNT;
result.INQUNO = head.CIQ_BILL_NO; //检验检疫号
result.CUSCIQNO = head.EPROT_NO; //统一编号 电子口岸统一编号
result.TRANCUSTOMNO = head.TRN_PRE_ID;
result.EXPCUSTOMTYPE = head.IE_PORT; //出境关别 代码
//result.DESPPORT = head.CIQ_ENTY_PORT_CODE;
result.CUSTOMSNUM = headinfo.GOODS_LIST.Count();
//SR2023012800001
result.MBLNO = headinfo.BUSINESS_ORDER_INFO.CONSIGN_REMARK;//东盛主提单号------关贸云的委托备注
result.HBLNO = headinfo.DECL_HEAD.BILL_NO;// 东盛分提单号--------关贸云的订舱/提运单号
result.ENTERP = head.EXPORT_NAME; //经营单位名称
result.ENTERPID = head.EXPORT_CODE; //经营单位代码 东盛经营单位-----------关贸云的经营单位,并且需要放在报关界面。
//东盛委托单位--------关贸云客户名称
result.OP = headinfo.BUSINESS_ORDER_INFO.PROJECT_NO;//操作 2023-1-13
returnresult.OK("", result);
return returnresult;
2 years ago
}
public static List<MsOpApplyDetail> getGoodsDetailListInfo(GuanMaoYun_Head head)
{
var result = new List<MsOpApplyDetail>();
var BSNO = head.BUSINESS_ORDER_INFO.WORK_NO;
2 years ago
if (head.GOODS_LIST.Count > 0)
{
foreach (var good in head.GOODS_LIST)
{
var newrec = new MsOpApplyDetail();
var goodinfo = good.DECL_GOODS;
newrec.BsNo = BSNO;
newrec.SerialNo = BasicDataRefDAL.String2Decimal(goodinfo.GOODS_SEQ);
newrec.GoodsCode = goodinfo.HSCODE_TS;
newrec.GoodsName = goodinfo.GOODS_NAME;
newrec.GOODSMODEL = goodinfo.GOODS_MODEL;
newrec.Pkgs = BasicDataRefDAL.String2Decimal(goodinfo.PACKEGES);
newrec.GOODSNUM = BasicDataRefDAL.String2Decimal(goodinfo.PACKEGES);
newrec.KGS = goodinfo.QTY;
2 years ago
newrec.Price = BasicDataRefDAL.String2Decimal(goodinfo.PRICE);
newrec.Total = BasicDataRefDAL.String2Decimal(goodinfo.AMOUNT);
newrec.Currency = goodinfo.CURRENCY;
result.Add(newrec);
}
}
return result;
}
public static List<MsOpCtn> getCtnListInfo(GuanMaoYun_Head head)
{
var result = new List<MsOpCtn>();
var BSNO = head.GetBSNO();
2 years ago
if (head.CONTA_LIST != null && head.CONTA_LIST.Count > 0)
{
foreach (var ctn in head.CONTA_LIST)
{
var _ctn = ctn.DECL_CONTA;
var _ctnid = Guid.NewGuid().ToString();
decimal = string.IsNullOrWhiteSpace(_ctn.CONTA_GROSS_WEIGHT) ? 0 : Convert.ToDecimal(_ctn.CONTA_GROSS_WEIGHT);
decimal = string.IsNullOrWhiteSpace(_ctn.GOODS_CONTA_WT) ? 0 : Convert.ToDecimal(_ctn.GOODS_CONTA_WT);
decimal kgs = - ;
2 years ago
var newrec = new MsOpCtn
{
CTN_ID = _ctnid,
GID = _ctnid,
BSNO = BSNO,
CTNNUM = 1,
CNTRNO = _ctn.CONTA_NO,
CTNALL = _ctn.CONTA_SIZE + _ctn.CONTA_TYPE,
TAREWEIGHT = ,
KGS = kgs,
};
2 years ago
result.Add(newrec);
}
}
2 years ago
return result;
}
public static ch_fee_md getFee(GuanMaoYun_Fee FeeHead, COSTS Fee, info_client_md CUSTOMER, ch_fee_md chfee = null)
{
2 years ago
//if (chfee == null)
//{
// chfee = new ch_fee_md();
//}
string USERID = "1BEC90E1-9780-472F-90C2-0C6390C044A4";
string BSNO = FeeHead.JOB_ID;
string CUSTOMERNAME = CUSTOMER.SHORTNAME;
int FEETYPE = Fee.BALANCE_DIRECTION_ID.ToUpper() == "PAYOUT" ? 2 : 1;
var cdc = new CommonDataContext();
//string FEENAME = string.IsNullOrWhiteSpace( Fee.FEE_TYPE_NAME)?Fee.MEMO: Fee.FEE_TYPE_NAME;
string FEENAME = cdc.code_fee_edi.First(x => x.FEEENAME == Fee.FEE_TYPE_CODE).FEENAME;
decimal AMOUNT = Fee.AMOUNT == null ? 0 : (decimal)Fee.AMOUNT;
2 years ago
string UNIT = "";
decimal QUANTITY = Fee.UNIT_NUMBER == null ? 0 : (decimal)Fee.UNIT_NUMBER;
chfee = MsChFeeDAL.getChFee(USERID, BSNO, CUSTOMERNAME, FEETYPE, FEENAME, AMOUNT, UNIT, QUANTITY);
chfee.BXGID = "GMY";//用于标记关贸云产生的费用
//chfee.GID = Fee.SOURCE_JOB_BALANCE_ID;
//chfee.BSNO = FeeHead.JOB_ID;
//chfee.FEETYPE = Fee.BALANCE_DIRECTION_ID.ToUpper() == "PAYOUT" ? 2 : 1;
//chfee.CUSTOMERNAME = CUSTOMER.SHORTNAME;
2 years ago
//chfee.CURRENCY = CURRENCYCODE.GetName(string.IsNullOrWhiteSpace( Fee.MONEY_TYPE_ID)?142: Convert.ToInt32(Fee.MONEY_TYPE_ID));
//chfee.EXCHANGERATE = Fee.EXCHANGE_RATE;
//chfee.UNIT = "";
//chfee.AMOUNT = Fee.AMOUNT;
//chfee.QUANTITY = Fee.UNIT_NUMBER;
2 years ago
return chfee;
}
}
}