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

480 lines
17 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.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 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.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)
{
var result = new JsonResponse();
//将head转化为报关业务
//var OpapplyHead = getHeadInfo(head);
var cdc = new CommonDataContext();
var admin = cdc.VW_user.First(x => x.CODENAME == "admin");
var OpapplyHead = getHeadInfo(head, "add", admin);
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>();
if (_count == 0)
{
OpapplyHead = getHeadInfo(head,"add",admin);
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 {
OpapplyHead = getHeadInfo(head, "update");
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) {
if (OpapplyGoodsDetailList.Exists(x => x.BsNo == bsno && x.SerialNo == item.SerialNo))
{
}
else {
delDetailList.Add(item);
}
}
}
}
var modb = new ModelObjectRepository();
DBResult _r = modb.Save(OpapplyHead
, ModelObjectConvert<MsOpApplyDetail>.ToModelObjectList(OpapplyGoodsDetailList)
, ModelObjectConvert<MsOpApplyDetail>.ToModelObjectList(delDetailList)
);
result = new JsonResponse { Success = _r.Success, Message = _r.Message,Data=_r.Data };
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 customernameList = cdc.code_cust_edi.Where(x => x.EDINAME == "关贸云" && feecustidList.Contains(x.EDICODE) ).ToList();
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))
{
}
else {
result = new JsonResponse { Success = false, Message = "【" + Fee.COAGENT_ID + "】没有对应的往来单位信息" };
return result;
}
}
//CUSTOMER = cdc.info_client.FirstOrDefault(x => x.SHORTNAME == customernameList[0].CUST);
}
else
{
var _str = string.Join(",", feecustidList);
result = new JsonResponse { Success = false, Message = "【" + _str + "】没有对应的往来单位信息" };
return result;
}
var CurrChfeelist = cdc.ch_fee.Where(x => x.BSNO == BSNO && x.BXGID=="GMY").ToList();
foreach (var item in FeeHead.COSTS) {
//20230103 导入费用时先删除所有能删的费用
var = cdc.ch_fee.Where(x => x.BSNO == BSNO && x.chfeeCanChange()).ToList();
if( != null && .Count > 0) {
var delgids = .Select(s => s.GID).ToArray();
var delgidstr = "'" + string.Join("','", delgids) + "'";
BasicDataRefDAL.ExecSql($"delete from ch_fee where gid in({delgidstr})");
}
var customername= cdc.code_cust_edi.FirstOrDefault(x => x.EDINAME == "关贸云" && x.EDICODE == item.COAGENT_ID);
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 ||
{
currfee = getFee(FeeHead, item, CUSTOMER, currfee);
cdc.ch_fee.AddOrUpdate(currfee);
cdc.SaveChanges();
result.OK();
}
else {
result.SetError("费用已审核通过,请将当前业务的费用流程回退至可被更改的状态(录入状态 驳回提交)");
//return result;
}
}
else {
//如不存在SOURCE_JOB_BALANCE_ID等于当前存在的某费用GID 则添加
var newfee = getFee(FeeHead, item, CUSTOMER);
cdc.ch_fee.Add(newfee);
cdc.SaveChanges();
result.OK();
}
}
foreach (var currfee in CurrChfeelist) {
if (FeeHead.COSTS.Exists(x => x.SOURCE_JOB_BALANCE_ID == currfee.GID))
{
}
else {
//如不存在则删除
if (currfee.FEESTATUS == 1 || currfee.FEESTATUS == 6)//currfee.FEESTATUS == 2 ||
{
BasicDataRefDAL.ExecSql($"delete from ch_fee where gid='{currfee.GID}'");
}
else
{
result.SetError("费用已审核通过,请将当前业务的费用流程回退至可被更改的状态(录入状态 驳回提交)");
//return result;
}
}
}
return result;
}
public static MsOpApply getHeadInfo(GuanMaoYun_Head headinfo,string opstatus,VW_user_md userinfo=null)
{
var result = new MsOpApply();
if (opstatus == "add")
{
result.INPUTBY = userinfo.SHOWNAME;
result.CORPID = userinfo.COMPANYID;
}
else {
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;
result.CUSTOMERNAME = headinfo.BUSINESS_ORDER_INFO.EXPORT_NAME;
//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;
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;
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;
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;
result.CUSTOMDATE = head.DECL_DATE.ToString("yyyy-MM-dd");
if (result.CUSTOMDATE == "0001-01-01") result.CUSTOMDATE = null;
result.INSPECTIONNO = head.CORRELATION_DECL_NO;
result.ENTERP = head.EXPORT_NAME; //经营单位名称
result.ENTERPID = head.EXPORT_CODE; //经营单位代码
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();
return result;
}
public static List<MsOpApplyDetail> getGoodsDetailListInfo(GuanMaoYun_Head head)
{
var result = new List<MsOpApplyDetail>();
var BSNO = head.BUSINESS_ORDER_INFO.WORK_NO;
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;
//newrec. = goodinfo.QTY;
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.BUSINESS_ORDER_INFO.WORK_NO;
//if (head.DECL_TRN_CONTAINER_LIST.Count > 0)
//{
// foreach (var good in head.GOODS_LIST)
// {
// var newrec = new MsOpCtn();
// result.Add(newrec);
// }
//}
return result;
}
public static ch_fee_md getFee(GuanMaoYun_Fee FeeHead, COSTS Fee,info_client_md CUSTOMER,ch_fee_md chfee=null) {
//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;
string FEENAME = string.IsNullOrWhiteSpace( Fee.FEE_TYPE_NAME)?Fee.MEMO: Fee.FEE_TYPE_NAME;
decimal AMOUNT = Fee.AMOUNT==null?0:(decimal)Fee.AMOUNT;
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;
//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;
return chfee;
}
}
}