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.Util; 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 { /// /// 销售订单服务类 /// public class SaleOrderService { private Context ctx; public SaleOrderService(Context ctx) { this.ctx = ctx; } /// /// 根据纸质合同号、组织获取销售订单 /// /// 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; } /// /// 获取销售订单收款金额 /// /// 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 resultDict = WebApiServiceCall.GetSysReportData(this.ctx, "SAL_DetailReport", paramString); var resultString = JsonConvert.SerializeObject(resultDict); var result = JsonConvert.DeserializeObject>(resultString); 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 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 resultDict = WebApiServiceCall.GetSysReportData(this.ctx, "SAL_DetailReport", paramString); var resultString = JsonConvert.SerializeObject(resultDict); var result = JsonConvert.DeserializeObject>(resultString); var rows = result.Result.Rows; var dataRow = rows.Where(n => n.FBILLNO.Trim() != string.Empty).Select(n => new SaleExecuteOut { FBILLNO = n.FBILLNO, FDate = n.FDate, FSALEORGNAME = n.FSALEORGNAME, FALLMATCHAMOUNT = n.FALLMATCHAMOUNT.IsNullOrEmptyOrWhiteSpace() ? "0" : n.FALLMATCHAMOUNT.Replace(",", "").Trim(), }).ToList(); return dataRow; } } }