Commit ac0894e2 by 陶然

init

parents
################################################################################
# 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。
################################################################################
/Src/bin/Debug
/Src/obj/Debug
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Njzj.Ngstc
{
internal class Configs
{
public const string baseUrl = "http://zscxnet2.gemcert.cn";
public const string orgCode = "ngstc02";
public const string signature = "1";
public const string routeNgstcDetail = "/api/NGSTC/GetSFBillInfo";
public const string routeNgstcUpdate = "/api/NGSTC/ChangeSFBillStatus";
}
}
using Kivii;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Njzj.Ngstc
{
[Api(Description = "珠宝结算明细")]
public class NgstcDetail
{
[ApiMember(Description = "客户简称")]
public string CShortName { get; set; }
[ApiMember(Description = "客户全称")]
public string CName { get; set; }
[ApiMember(Description = "区域")]
public string Region { get; set; }
[ApiMember(Description = "批次号")]
public string BatchNo { get; set; }
[ApiMember(Description = "收样日期")]
public string TabDate { get; set; }
[ApiMember(Description = "业务类型,证书或分称")]
public string BillType { get; set; }
[ApiMember(Description = "来源")]
public string Source { get; set; }
[ApiMember(Description = "收样件数")]
public decimal Amount { get; set; }
[ApiMember(Description = "完成件数")]
public decimal AmountComplete { get; set; }
[ApiMember(Description = "克重")]
public decimal Weight { get; set; }
[ApiMember(Description = "原始价")]
public decimal OriPrice { get; set; }
[ApiMember(Description = "结算价")]
public decimal CurPrice { get; set; }
}
public class NgstcResponse
{
public int code { get; set; }
public string msg { get; set; }
public List<NgstcDetail> SFBillInfos { get; set; }
}
public class NgstcUpdate
{
[ApiMember(Description = "收款单号")]
public string BillNo { get; set; }
[ApiMember(Description = "未付金额")]
public decimal UnPaid { get; set; }
[ApiMember(Description = "已付金额")]
public decimal Paid { get; set; }
[ApiMember(Description = "收款状态")]
public string BillState { get; set; }
[ApiMember(Description = "收款日期")]
public DateTime PayDate { get; set; }
[ApiMember(Description = "备注")]
public string Remark { get; set; }
}
}
using Kivii;
using Kivii.Linq;
using Kivii.Organizations.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Njzj.Ngstc
{
public static class Extension
{
private static Dictionary<string, Organization> _orgs = new Dictionary<string, Organization>();
public static List<NgstcDetail> GetNgstcDetails(this string ngstcNumber)
{
var client = new JsonHttpClient(Configs.baseUrl);
var route = $"{Configs.routeNgstcDetail}?sn={Configs.orgCode}&tn={ngstcNumber}&qn={Configs.signature}";
var rtns = client.Get<NgstcResponse>(route);
if (rtns.code != 0) throw new Exception(rtns.msg);
return rtns.SFBillInfos;
}
public static string UpdateNgstcBill(this NgstcUpdate ngstcUpdate)
{
var client = new JsonHttpClient(Configs.baseUrl);
var route = $"{Configs.routeNgstcUpdate}?sn={Configs.orgCode}&BillNo={ngstcUpdate.BillNo}&UnPaid={ngstcUpdate.UnPaid}&Paid={ngstcUpdate.Paid}&BillState={ngstcUpdate.BillState}&PayDate={ngstcUpdate.PayDate}&Remark={ngstcUpdate.Remark}&qn={Configs.signature}";
var rtns = client.Get<NgstcResponse>(route);
if (rtns.code != 0) throw new Exception(rtns.msg);
return rtns.msg;
}
public static Organization GetOrganization(this string internalCode)
{
internalCode.ThrowIfNullOrEmpty("请传入部门内部编码!");
internalCode = internalCode.ToLower();
if (_orgs.ContainsKey(internalCode))
{
return _orgs[internalCode];
}
var conn = KiviiContext.GetOpenedDbConnection<Organization>();
var orgs = conn.Select<Organization>();
foreach (var item in orgs)
{
if (item.InternalCode.IsNullOrEmpty()) continue;
var code = item.InternalCode.ToLower();
_orgs[code] = item;
}
if (_orgs.ContainsKey(internalCode))
{
return _orgs[internalCode];
}
return null;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{6F7B0422-2AE9-454E-892A-4AE31CA0F655}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Njzj.Ngstc</RootNamespace>
<AssemblyName>Njzj.Biz.Ngstc.V4.5</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Kivii.Biz.Organizations.V4.5, Version=5.6.2023.4080, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\local-njzj\packages\Kivii.Biz.Organizations.5.6.2023.4080\lib\net45\Kivii.Biz.Organizations.V4.5.dll</HintPath>
</Reference>
<Reference Include="Kivii.Common.V4.5, Version=5.6.2023.6000, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\local-njzj\packages\Kivii.Common.5.6.2023.6000\lib\net45\Kivii.Common.V4.5.dll</HintPath>
</Reference>
<Reference Include="Kivii.Core.V4.5, Version=5.6.2023.6000, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\local-njzj\packages\Kivii.Core.5.6.2023.6000\lib\net45\Kivii.Core.V4.5.dll</HintPath>
</Reference>
<Reference Include="Kivii.Linq.V4.5, Version=5.6.2023.4200, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\local-njzj\packages\Kivii.Linq.5.6.2023.4200\lib\net45\Kivii.Linq.V4.5.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Configs.cs" />
<Compile Include="Entities.cs" />
<Compile Include="Extension.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Restful.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<None Include="Resoures\南京国检财务对接.docx" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Kivii.K5\Kivii.Biz.Finances.V2.0\Src\Kivii.Biz.Finances.V2.0.csproj">
<Project>{8d9479e9-5c4f-4d96-8bc1-c771be0d91b1}</Project>
<Name>Kivii.Biz.Finances.V2.0</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
</Project>
\ No newline at end of file
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("Njzj.Biz.Ngstc.V4.5")]
[assembly: AssemblyDescription("珠宝系统对接模块")]
[assembly: AssemblyDefaultAlias("Njzj.Ngstc")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Njzj.Biz.Ngstc.V4.5")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("6f7b0422-2ae9-454e-892a-4ae31ca0f655")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("5.4.2023.9210")]
[assembly: AssemblyFileVersion("5.4.2023.9210")]
using Kivii;
using Kivii.Finances.Entities;
using Kivii.Linq;
using Kivii.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Njzj.Ngstc
{
[Api(Description = "珠宝结算明细接口")]
public class NgstcGetDetails : RestfulExecution<NgstcDetail>
{
public string NgstcId { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
NgstcId.ThrowIfNullOrEmpty("请传入账单编号!");
var results = NgstcId.GetNgstcDetails();
var rtns = new RestfulQueryResponse<NgstcDetail>();
rtns.Results = new List<NgstcDetail>();
if (!results.IsNullOrEmpty()) rtns.Results.AddRange(results);
rtns.Total = rtns.Results.Count;
return rtns;
}
}
[Api(Description = "珠宝账单回传")]
public class NgstcUpdateBill : RestfulExecution<NgstcUpdate>
{
public NgstcUpdate NgstcUpdate { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
NgstcUpdate.ThrowIfNull("请传入账单信息!");
var results = NgstcUpdate.UpdateNgstcBill();
var rtns = new RestfulQueryResponse<NgstcUpdate>();
rtns.Results = new List<NgstcUpdate>();
if (!results.IsNullOrEmpty()) rtns.Results.Add(NgstcUpdate);
rtns.Total = rtns.Results.Count;
return rtns;
}
}
[Api(Description = "珠宝系统结算接口")]
public class SettlementNgstc : RestfulExecution<Settlement>
{
public Settlement Item { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
Item.ThrowIfNull("请传入结算信息!");
Item.PayerName.ThrowIfNullOrEmpty("付款单位不能为空!");
Item.BizId.ThrowIfNullOrEmpty("请传入唯一性收款单号");
(Item.Amount <= 0).ThrowIfTrue("核算现价不能小于0");
(Item.AmountPlan <= 0).ThrowIfTrue("初始价不能小于0");
Item.OwnerName.ThrowIfNullOrEmpty("请传入实验室/中心信息");
Item.OperatorName.ThrowIfNullOrEmpty("请传入结算人");
var conn = KiviiContext.GetOpenedDbConnection<Settlement>();
if (conn.Exists<Settlement>(o => o.OffsetKvid == Guid.Empty && o.BizId == Item.BizId)) throw new Exception("存在重复结算的对象!");
var depart = Item.OwnerName.GetOrganization();
if (depart != null)
{
Item.OwnerName = depart.FullName;
Item.OwnerKvid = depart.Kvid;
}
var kvid = Guid.NewGuid();
Item.Kvid = kvid;
Item.Type = Item.Type.IsNullOrEmpty() ? "珠宝结算" : Item.Type;
Item.Category = "珠宝结算";
Item.OperateTime = Item.OperateTime == DateTime.MinValue ? DateTime.Now : Item.OperateTime;
Item.PayeeName = Item.PayeeName.IsNullOrEmpty() ? "南京市产品质量监督检验院(南京市质量发展与先进技术应用研究院)" : Item.PayeeName;
Item.AmountPayment = 0;
Item.BizType = typeof(Settlement).FullName;
Item.Currency = CurrencyUnit.CNY;
var detail = new EntitySettlementDetail<Settlement>();
detail.SettlementKvid = kvid;
detail.Type = "珠宝明细";
detail.Quantity = 1;
detail.QuantityUnit = "次";
detail.Currency = Item.Currency;
detail.Amount = Item.Amount;
detail.AmountPlan = Item.AmountPlan;
detail.BizId = Item.BizId;
detail.BizType = typeof(NgstcDetail).FullName;
detail.GoodsFullName = "珠宝结算明细";
detail.Remark = "具体结算明细请查看珠宝系统!";
var rtns = new RestfulQueryResponse<Settlement>();
rtns.Results = new List<Settlement>();
var trans = conn.OpenTransaction();
try
{
conn.Insert(Item);
rtns.Results.Add(Item);
conn.Insert(detail);
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
return rtns;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Kivii.Biz.Organizations" version="5.6.2023.4080" targetFramework="net45" />
<package id="Kivii.Common" version="5.6.2023.6000" targetFramework="net45" />
<package id="Kivii.Core" version="5.6.2023.6000" targetFramework="net45" />
<package id="Kivii.Linq" version="5.6.2023.4200" targetFramework="net45" />
</packages>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment