新增销售订单获取收款金额API

This commit is contained in:
朱斌 2025-07-30 16:50:24 +08:00
parent b83a4c0773
commit 72eebf5edb
14 changed files with 435 additions and 49 deletions

View File

@ -132,6 +132,10 @@
<Reference Include="Kingdee.BOS.DataEntity">
<HintPath>..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.DataEntity.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.ServiceFacade.KDServiceFx, Version=9.0.78.3, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Library\Kingdee.BOS.ServiceFacade.KDServiceFx.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.ServiceHelper">
<HintPath>..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.ServiceHelper.dll</HintPath>
</Reference>
@ -328,6 +332,14 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Models\K3Request\ReportDataParam.cs" />
<Compile Include="Models\K3Result\KingdeeResult.cs" />
<Compile Include="Models\K3Result\ListResult.cs" />
<Compile Include="Models\K3Result\Model\K3CloudResponseStatus.cs" />
<Compile Include="Models\K3Result\Model\K3CloudResult.cs" />
<Compile Include="Models\K3Result\Model\K3CloudResultInfo.cs" />
<Compile Include="Models\K3Result\Model\K3CloudSuccessEntity.cs" />
<Compile Include="Models\VO\SaleExecuteOut.cs" />
<Compile Include="PRD_PPBOMCHANGE\PLTH.cs" />
<Compile Include="PRD_PPBOMCHANGE\PLTHForm.cs" />
<Compile Include="PRD_PPBOMCHANGE\PLTHWL.cs" />
@ -337,8 +349,8 @@
<Compile Include="SAL_ORDER\DataChage.cs" />
<Compile Include="SAL_ORDER\SaveWL.cs" />
<Compile Include="ScheduleService\SaleOrderSumSicsAmountRefresh.cs" />
<Compile Include="Service\SaleOrderService.cs" />
<Compile Include="Service\SaleSicsService.cs" />
<Compile Include="Services\SaleOrderService.cs" />
<Compile Include="Services\SaleSicsService.cs" />
<Compile Include="T_IV_SALESIC\ServicePlugIn\Audit.cs" />
<Compile Include="T_IV_SALESIC\ServicePlugIn\Submit.cs" />
<Compile Include="T_IV_SALESIC\ServicePlugIn\UnAudit.cs" />
@ -362,6 +374,7 @@
<Compile Include="SQL\SqlManage.cs" />
<Compile Include="SUB_PPBOM\AuditPOM.cs" />
<Compile Include="T_IV_SALESIC\UnAuditS_Order.cs" />
<Compile Include="WebApiService\SaleOrderApiService.cs" />
<Compile Include="XMYSLRB\AfterSave.cs" />
<Compile Include="XMYSLRB\OnLoadLR.cs" />
<Compile Include="XMYSLRB\Save.cs" />
@ -379,6 +392,7 @@
<Content Include="Library\Kingdee.BOS.Core.dll" />
<Content Include="Library\Kingdee.BOS.DataEntity.dll" />
<Content Include="Library\Kingdee.BOS.dll" />
<Content Include="Library\Kingdee.BOS.ServiceFacade.KDServiceFx.dll" />
<Content Include="Library\Kingdee.BOS.ServiceHelper.dll" />
<Content Include="Library\Kingdee.BOS.VerificationHelper.dll" />
<Content Include="Library\Kingdee.BOS.Web.dll" />

Binary file not shown.

View File

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Models.K3Request
{
public class ReportDataParam
{
public bool ReturnJsonData { get; set; }
public string FieldKeys { get; set; }
public string SchemeId { get; set; }
public int StartRow { get; set; }
public int Limit { get; set; }
public bool IsVerifyBaseDataField { get; set; }
public object[] FilterString { get; set; }
public Model Model { get; set; }
}
public class Model
{
public string FSaleOrgList { get; set; }
public DateTime FSoFromDate { get; set; }
public DateTime FSoToDate { get; set; }
public string FSaleOFrom { get; set; }
public string FSaleOTo { get; set; }
public string FFormCloseStatus { get; set; }
public string FFormStatus { get; set; }
public string FPriceFrom { get; set; }
public string FBusCloseStatus { get; set; }
public bool FMergingSOHeader { get; set; }
public bool FIncludedUnfilledOrders { get; set; }
public bool FIsRecWithMat { get; set; }
public string FSuite { get; set; }
public string FSetAccountType { get; set; }
public bool FIsGroup { get; set; }
public bool FIncludedFree { get; set; }
}
}

View File

@ -0,0 +1,15 @@
using GZ_LTHPilot_ORDER.Models.K3Result.Model;
namespace GZ_LTHPilot_ORDER.Models.K3Result
{
/// <summary>
/// 金蝶云星空返回类
/// </summary>
public class KingdeeResult<T>
{
/// <summary>
/// 返回对象
/// </summary>
public K3CloudResult<T> Result { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System.Collections.Generic;
namespace GZ_LTHPilot_ORDER.Models.K3Result
{
/// <summary>
/// 列表查询输出类
/// </summary>
public class ListResult
{
/// <summary>
/// 列表
/// </summary>
public List<dynamic> List { get; set; }
/// <summary>
/// 构造函数
/// </summary>
/// <param name="list"></param>
public ListResult(List<dynamic> list)
{
List = list;
}
}
}

View File

@ -0,0 +1,35 @@
using System.Collections.Generic;
namespace GZ_LTHPilot_ORDER.Models.K3Result.Model
{
/// <summary>
/// 响应对象
/// </summary>
public class K3CloudResponseStatus
{
/// <summary>
/// 错误代码
/// </summary>
public int ErrorCode { get; set; }
/// <summary>
/// 是否成功
/// </summary>
public bool IsSuccess { get; set; }
/// <summary>
/// 错误信息列表
/// </summary>
public List<K3CloudResultInfo> Errors { get; set; }
/// <summary>
/// 成功实体
/// </summary>
public List<K3CloudSuccessEntity> SuccessEntitys { get; set; }
/// <summary>
/// 成功消息
/// </summary>
public List<K3CloudResultInfo> SuccessMessages { get; set; }
/// <summary>
/// 消息代码
/// </summary>
public int MsgCode { get; set; }
}
}

View File

@ -0,0 +1,53 @@
using System.Collections.Generic;
namespace GZ_LTHPilot_ORDER.Models.K3Result.Model
{
/// <summary>
/// 返回类
/// </summary>
public class K3CloudResult<T>
{
/// <summary>
/// 响应对象
/// </summary>
public K3CloudResponseStatus ResponseStatus { get; set; }
/// <summary>
/// 转换响应对象
/// </summary>
public K3CloudResponseStatus ConvertResponseStatus { get; set; }
/// <summary>
/// 返回结果,用于查看单据
/// </summary>
public object Result { get; set; }
/// <summary>
/// 开始索引
/// </summary>
public long? StartIndex { get; set; }
/// <summary>
/// 是否最后
/// </summary>
public bool? IsLast { get; set; }
/// <summary>
/// 文件大小
/// </summary>
public long? FileSize { get; set; }
/// <summary>
/// 文件名称
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 文件内容Base64
/// </summary>
public string FilePart { get; set; }
/// <summary>
/// 返回数据行数
/// </summary>
public int? RowCount { get; set; }
public List<T> Rows { get; set; }
}
}

View File

@ -0,0 +1,21 @@
namespace GZ_LTHPilot_ORDER.Models.K3Result.Model
{
/// <summary>
/// 金蝶云星空查看错误信息类
/// </summary>
public class K3CloudResultInfo
{
/// <summary>
/// 字段名称
/// </summary>
public string FieldName { get; set; }
/// <summary>
/// 错误信息
/// </summary>
public string Message { get; set; }
/// <summary>
/// 序号
/// </summary>
public int DIndex { get; set; }
}
}

View File

@ -0,0 +1,25 @@
namespace GZ_LTHPilot_ORDER.Models.K3Result.Model
{
/// <summary>
/// 成功实体
/// </summary>
public class K3CloudSuccessEntity
{
/// <summary>
/// 单据Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 单据编号
/// </summary>
public string Number { get; set; }
/// <summary>
/// 实体索引
/// </summary>
public int DIndex { get; set; }
/// <summary>
/// 分录Id
/// </summary>
public object EntryIds { get; set; }
}
}

View File

@ -0,0 +1,18 @@

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Models.VO
{
public class SaleExecuteOut
{
public string FSALEORGNAME { get; set; }
public string FBILLNO { get; set; }
public string FDate { get; set; }
public string FALLMATCHAMOUNT { get; set; }
}
}

View File

@ -1,47 +0,0 @@
using Kingdee.BOS;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Service
{
/// <summary>
/// 销售订单服务类
/// </summary>
public class SaleOrderService
{
private Context ctx;
public SaleOrderService(Context ctx)
{
this.ctx = ctx;
}
/// <summary>
/// 根据纸质合同号、组织获取销售订单
/// </summary>
/// <returns></returns>
public DynamicObjectCollection GetSaleOrderByOrgIdAndContractNo(string orgId, string contractNo)
{
var sqlTemp = @"/*dialect*/SELECT
*
FROM
T_SAL_ORDER t1
LEFT JOIN T_SAL_ORDERFIN t1fin ON t1.FID = t1fin.FID
WHERE
1 = 1
AND t1.FDOCUMENTSTATUS = 'C'
AND t1.FCANCELSTATUS = 'A'
AND t1.FSALEORGID = '{0}'
AND t1.F_CONTRACTNUMBER = '{1}'
";
var sql = string.Format(sqlTemp, orgId, contractNo);
var resultData = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
return resultData;
}
}
}

View File

@ -0,0 +1,144 @@
using GZ_LTHPilot_ORDER.Models.K3Request;
using GZ_LTHPilot_ORDER.Models.K3Result;
using GZ_LTHPilot_ORDER.Models.VO;
using Kingdee.BOS;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.WebApi.FormService;
using Kingdee.K3.FIN.App.Core.Match.Object;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Service
{
/// <summary>
/// 销售订单服务类
/// </summary>
public class SaleOrderService
{
private Context ctx;
public SaleOrderService(Context ctx)
{
this.ctx = ctx;
}
/// <summary>
/// 根据纸质合同号、组织获取销售订单
/// </summary>
/// <returns></returns>
public DynamicObjectCollection GetSaleOrderByOrgIdAndContractNo(string orgId, string contractNo)
{
var sqlTemp = @"/*dialect*/SELECT
*
FROM
T_SAL_ORDER t1
LEFT JOIN T_SAL_ORDERFIN t1fin ON t1.FID = t1fin.FID
WHERE
1 = 1
AND t1.FDOCUMENTSTATUS = 'C'
AND t1.FCANCELSTATUS = 'A'
AND t1.FSALEORGID = '{0}'
AND t1.F_CONTRACTNUMBER = '{1}'
";
var sql = string.Format(sqlTemp, orgId, contractNo);
var resultData = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
return resultData;
}
/// <summary>
/// 获取销售订单收款金额
/// </summary>
/// <returns></returns>
public decimal GetSaleOrderReceiveAmount(string orgId, string billNo)
{
var saleOrder = this.GetSaleOrderByBillNoAndOrgId(orgId, billNo);
var date = Convert.ToDateTime(saleOrder["FDATE"]);
ReportDataParam param = new ReportDataParam()
{
ReturnJsonData = true,
FieldKeys = "FSALEORGNAME,FBILLNO,FDate,FALLMATCHAMOUNT",
IsVerifyBaseDataField = true,
Model = new Model()
{
FSaleOrgList = orgId,
FSoFromDate = date.AddDays(-2),
FSoToDate = date.AddDays(1),
FSaleOFrom = billNo,
FSaleOTo = billNo,
FFormCloseStatus = "ALL",
FFormStatus = "C",
FPriceFrom = "SALORDERBILL",
FBusCloseStatus = "ALL",
FMergingSOHeader = true,
FIncludedUnfilledOrders = false,
FIsRecWithMat = true,
}
};
var paramString = JsonConvert.SerializeObject(param);
var reusltString = WebApiServiceCall.GetSysReportData(this.ctx, "SAL_DetailReport", paramString).ToString();
var result = JsonConvert.DeserializeObject<KingdeeResult<SaleExecuteOut>>(reusltString);
var rows = result.Result.Rows;
var dataRow = rows.Where(n => n.FBILLNO == billNo).FirstOrDefault();
if (dataRow != null)
{
return Convert.ToDecimal(dataRow.FALLMATCHAMOUNT);
}
return 0m;
}
public DynamicObject GetSaleOrderByBillNoAndOrgId(string orgId, string billNo)
{
var sqlTemp = @"/*dialect*/SELECT
*
FROM
T_SAL_ORDER t1
WHERE
1 = 1
AND t1.FSALEORGID = '{0}'
AND t1.FBILLNO = '{1}'
";
var sql = string.Format(sqlTemp, orgId, billNo);
var result = DBServiceHelper.ExecuteDynamicObject(this.ctx, sql);
if (result.Count == 0)
{
throw new Exception($"组织:{orgId},没有找到编号为 {billNo} 的销售订单");
}
return result[0];
}
public List<SaleExecuteOut> GetSaleOrderReceiveAmountByDate(string orgId, DateTime startDate, DateTime endDate)
{
ReportDataParam param = new ReportDataParam()
{
ReturnJsonData = true,
FieldKeys = "FSALEORGNAME,FBILLNO,FDate,FALLMATCHAMOUNT",
IsVerifyBaseDataField = true,
Model = new Model()
{
FSaleOrgList = orgId,
FSoFromDate = startDate,
FSoToDate = startDate,
FFormCloseStatus = "ALL",
FFormStatus = "C",
FPriceFrom = "SALORDERBILL",
FBusCloseStatus = "ALL",
FMergingSOHeader = true,
FIncludedUnfilledOrders = false,
FIsRecWithMat = true,
}
};
var paramString = JsonConvert.SerializeObject(param);
var reusltString = WebApiServiceCall.GetSysReportData(this.ctx, "SAL_DetailReport", paramString).ToString();
var result = JsonConvert.DeserializeObject<KingdeeResult<SaleExecuteOut>>(reusltString);
var rows = result.Result.Rows;
var dataRow = rows.Where(n => n.FBILLNO.Trim() == string.Empty).ToList();
return dataRow;
}
}
}

View File

@ -0,0 +1,39 @@

using GZ_LTHPilot_ORDER.Models.VO;
using GZ_LTHPilot_ORDER.Service;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.ServiceFacade.KDServiceFx;
using Kingdee.BOS.Util;
using Kingdee.BOS;
using Kingdee.BOS.WebApi.Client;
using Kingdee.BOS.WebApi.ServicesStub;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.WebApiService
{
[Description("商品类型"), HotUpdate]
public class SaleOrderApiService : AbstractWebApiBusinessService
{
public SaleOrderApiService(KDServiceContext context) : base(context)
{
}
public decimal GetSaleOrderReceiveAmount(string orgId, string billNo)
{
SaleOrderService saleOrderService = new SaleOrderService(this.KDContext.Session.AppContext);
return saleOrderService.GetSaleOrderReceiveAmount(orgId, billNo);
}
public List<SaleExecuteOut> GetSaleOrderReceiveAmountByDate(string orgId, DateTime startDate, DateTime endDate)
{
SaleOrderService saleOrderService = new SaleOrderService(this.KDContext.Session.AppContext);
return saleOrderService.GetSaleOrderReceiveAmountByDate(orgId, startDate, endDate);
}
}
}