搭建基础接口,新增采购入库单、采购订单接口

This commit is contained in:
2025-12-04 11:51:13 +08:00
parent 32fc5d0e20
commit 41edc294f1
13 changed files with 228 additions and 286 deletions

View File

@@ -209,12 +209,26 @@ namespace Gatedge.K3Cloud.Utils
var jsonData = viewBill.ToString();
var resultString = _cloudApi.View(formId, jsonData);
var result = JsonSerializer.Deserialize<KingdeeResult>(resultString);
if (result?.Result?.ResponseStatus?.IsSuccess != true)
// SB云星空 v7和v8的响应信息格式不同导致无法使用统一的处理方式
if (viewBill.Version >= 8)
{
var responseStatus = result?.Result?.ResponseStatus;
Exception error = new K3CloudException("查看单据出错", responseStatus);
throw error;
if (result?.Result?.ResponseStatus?.IsSuccess != true)
{
var responseStatus = result?.Result?.ResponseStatus;
Exception error = new K3CloudException("查看单据出错", responseStatus);
throw error;
}
}
else
{
if (result?.Result?.ResponseStatus != null)
{
var responseStatus = result?.Result?.ResponseStatus;
Exception error = new K3CloudException("查看单据出错", responseStatus);
throw error;
}
}
var data = result?.Result?.Result;
return data;
}
@@ -231,11 +245,23 @@ namespace Gatedge.K3Cloud.Utils
var jsonData = viewBill.ToString();
var resultString = _cloudApi.View(formId, jsonData);
var result = JsonSerializer.Deserialize<KingdeeResult>(resultString);
if (result?.Result?.ResponseStatus?.IsSuccess != true)
if (viewBill.Version >= 8)
{
var responseStatus = result?.Result?.ResponseStatus;
Exception error = new K3CloudException("查看单据出错", responseStatus);
throw error;
if (result?.Result?.ResponseStatus?.IsSuccess != true)
{
var responseStatus = result?.Result?.ResponseStatus;
Exception error = new K3CloudException("查看单据出错", responseStatus);
throw error;
}
}
else
{
if (result?.Result?.ResponseStatus != null)
{
var responseStatus = result?.Result?.ResponseStatus;
Exception error = new K3CloudException("查看单据出错", responseStatus);
throw error;
}
}
var data = result?.Result?.Result;
var dataString = JsonSerializer.Serialize(data);

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Gatedge.K3Cloud.Utils.Model.K3Request
{
public class BaseRequest
{
public int Version { get; set; } = 7;
}
}

View File

@@ -6,7 +6,7 @@ namespace Gatedge.K3Cloud.Utils.Model.K3Request
/// <summary>
/// 单据查询条件类
/// </summary>
public class View
public class View : BaseRequest
{
/// <summary>
/// 单据内码
@@ -22,12 +22,6 @@ namespace Gatedge.K3Cloud.Utils.Model.K3Request
/// 单据编码
/// </summary>
public string? Number { get; set; }
/// <summary>
/// 单据体是否按序号排序
/// </summary>
public bool IsSortBySeq { get; set; }
/// <summary>
/// 重写ToString方法
/// </summary>

View File

@@ -0,0 +1,74 @@
using Gatedge.K3Cloud.Utils;
using Gatedge.K3Cloud.Utils.Model.K3Request;
using Gatedge.ScanCode.Common;
using Gatedge.ScanCode.Extension;
using Gatedge.ScanCode.Models.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Gatedge.ScanCode.Controllers
{
/// <summary>
/// 采购入库单
/// </summary>
[Route("api/[controller]")]
[Authorize]
[ApiController]
public class InStockController : ControllerBase
{
private readonly string _FormName = "采购入库单";
private readonly string _FormId = "STK_InStock";
private readonly K3CloudApiUtils _utils;
/// <summary>
/// 构造方法
/// </summary>
public InStockController(K3CloudApiUtils utils)
{
_utils = utils;
}
/// <summary>
/// 列表
/// </summary>
/// <param name="Param"></param>
/// <returns></returns>
[HttpGet("List")]
public AjaxResult List([FromQuery] PageParam Param)
{
if (Param.PageSize <= 0 || Param.PageIndex <= 0)
{
var errMes = string.Format("传递的参数不合法请检查PageIndex:{0},PageSize:{1}", Param.PageIndex, Param.PageSize);
return AjaxResult.Error(500, errMes);
}
Query queryParam = new Query()
{
FormId = this._FormId,
// 单据ID、单据编号
FieldKeys = "FID,FBillNo,FDate",
Limit = Param.PageSize,
StartRow = Param.PageSize * (Param.PageIndex - 1),
};
//// 已审核未禁用
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
queryParam.FilterString = $"FDocumentStatus = 'C' AND FFORBIDSTATUS = 'A' AND FPurchaseOrgId.FNumber = '{loginInfo.OrgNum}' AND (FBILLNO LIKE '{Param.QueryString}%') ";
_utils.InitCloudApi(loginInfo);
var data = _utils.QueryList(queryParam);
return AjaxResult.Success(data).AddBillId(_FormId);
}
/// <summary>
/// 查看
/// </summary>
/// <param name="Param"></param>
/// <returns></returns>
[HttpGet("View")]
public AjaxResult View([FromQuery] View Param)
{
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
var result = _utils.Query(_FormId, Param);
return AjaxResult.Success(result);
}
}
}

View File

@@ -52,18 +52,11 @@ namespace Gatedge.ScanCode.Controllers
StartRow = Param.PageSize * (Param.PageIndex - 1),
};
//// 已审核未禁用
//FilterList filterString = new FilterList().AddAuditedItems().AddNotCancelItems("FForbidStatus");
//if (Param.QueryString != string.Empty && Param.QueryString != null)
//{
// FilterItem NamefilterItem = new FilterItem("(", "FNAME", "17", Param.QueryString, "", "1");
// FilterItem NumberfilterItem = new FilterItem("", "FNUMBER", "17", Param.QueryString, ")", "0");
// filterString.AddFilterItem(NamefilterItem).AddFilterItem(NumberfilterItem);
// queryParam.FilterString = filterString.GetFilterString();
//}
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
queryParam.FilterString = $"FDocumentStatus = 'C' AND FFORBIDSTATUS = 'A' AND FUseOrgId.FNumber = '{loginInfo.OrgNum}' AND (FNAME LIKE '{Param.QueryString}%' OR FNUMBER LIKE '{Param.QueryString}%' ) ";
_utils.InitCloudApi(loginInfo);
var data = _utils.QueryList(queryParam);
return AjaxResult.Success(data);
return AjaxResult.Success(data).AddBillId(_FormId);
}
/// <summary>

View File

@@ -41,14 +41,12 @@ namespace Gatedge.ScanCode.Controllers
//Limit = Param.PageSize,
//StartRow = Param.PageSize * (Param.PageIndex - 1),
};
//FilterList filterString = new FilterList();
//if (Param.QueryString != string.Empty && Param.QueryString != null)
//{
// FilterItem filterItem = new FilterItem("FNumber", "17", Param.QueryString, "0");
// filterString.AddFilterItem(filterItem);
//}
//queryParam.FilterString = filterString.GetFilterString();
queryParam.FilterString = string.Empty;
FilterList filterString = new FilterList();
if (Param.QueryString != string.Empty && Param.QueryString != null)
{
queryParam.FilterString = $"FNumber LIKE '{Param.QueryString}%'";
}
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
var data = _utils.QueryList(queryParam);

View File

@@ -0,0 +1,75 @@
using Gatedge.K3Cloud.Utils;
using Gatedge.K3Cloud.Utils.Model.K3Request;
using Gatedge.ScanCode.Common;
using Gatedge.ScanCode.Extension;
using Gatedge.ScanCode.Models.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Gatedge.ScanCode.Controllers
{
/// <summary>
/// 采购订单
/// </summary>
[Route("api/[controller]")]
[Authorize]
[ApiController]
public class PurchaseOrderController : ControllerBase
{
private readonly string _FormName = "采购订单";
private readonly string _FormId = "PUR_PurchaseOrder";
private readonly K3CloudApiUtils _utils;
/// <summary>
/// 构造方法
/// </summary>
public PurchaseOrderController(K3CloudApiUtils utils)
{
_utils = utils;
}
/// <summary>
/// 列表
/// </summary>
/// <param name="Param"></param>
/// <returns></returns>
[HttpGet("List")]
public AjaxResult List([FromQuery] PageParam Param)
{
if (Param.PageSize <= 0 || Param.PageIndex <= 0)
{
var errMes = string.Format("传递的参数不合法请检查PageIndex:{0},PageSize:{1}", Param.PageIndex, Param.PageSize);
return AjaxResult.Error(500, errMes);
}
Query queryParam = new Query()
{
FormId = this._FormId,
// 单据ID、单据编号
FieldKeys = "FID,FBillNo,FDate",
Limit = Param.PageSize,
StartRow = Param.PageSize * (Param.PageIndex - 1),
};
//// 已审核未禁用
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
queryParam.FilterString = $"FDocumentStatus = 'C' AND FFORBIDSTATUS = 'A' AND FPurchaseOrgId.FNumber = '{loginInfo.OrgNum}' AND (FBILLNO LIKE '{Param.QueryString}%') ";
_utils.InitCloudApi(loginInfo);
var data = _utils.QueryList(queryParam);
return AjaxResult.Success(data).AddBillId(_FormId);
}
/// <summary>
/// 查看
/// </summary>
/// <param name="Param"></param>
/// <returns></returns>
[HttpGet("View")]
public AjaxResult View([FromQuery] View Param)
{
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
var result = _utils.Query(_FormId, Param);
return AjaxResult.Success(result);
}
}
}

View File

@@ -1,225 +0,0 @@
using Gatedge.K3Cloud.Utils;
using Gatedge.K3Cloud.Utils.Common;
using Gatedge.K3Cloud.Utils.Model.K3Request;
using Gatedge.ScanCode.Common;
using Gatedge.ScanCode.Extension;
using Gatedge.ScanCode.Models.Dto;
using Gatedge.ScanCode.Models.Dto.ScanRecords;
using Gatedge.ScanCode.Services;
using Gatedge.ScanCode.Services.IServices;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Gatedge.ScanCode.Controllers
{
/// <summary>
/// 暂存扫描记录
/// </summary>
[Route("api/[controller]")]
[Authorize]
[ApiController]
public class ScanRecordsController : ControllerBase
{
private readonly string _FormName = "扫描记录#";
private readonly string _FormId = "k4b27f8773ecb443da113e1a5e64ccaf9";
private readonly K3CloudApiUtils _utils;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="utils"></param>
public ScanRecordsController(K3CloudApiUtils utils)
{
_utils = utils;
}
/// <summary>
/// 查看
/// </summary>
/// <returns></returns>
[HttpGet("View")]
public AjaxResult View([FromQuery] View Param)
{
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
IScanRecordsService service = new ScanRecordsService(_utils);
var data = service.View(Param);
return AjaxResult.Success(data).AddBillId(_FormId);
}
/// <summary>
/// 单据列表
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[HttpGet("List")]
public AjaxResult List([FromQuery] ScanRecordsPageParam param)
{
if (param.PageSize <= 0)
{
var errMes = string.Format("传递的参数不合法页大小需要大于0当前 PageSize 为 {0}", param.PageSize);
return AjaxResult.Error(500, errMes);
}
if (param.PageIndex <= 0)
{
var errMes = string.Format("传递的参数不合法页索引需要大于0当前 PageIndex 为 {0}", param.PageIndex);
return AjaxResult.Error(500, errMes);
}
if (param.UserId == null)
{
var errMes = string.Format("传递的参数不合法用户Id不能为空当前 UserId 为 {0}", param.UserId);
return AjaxResult.Error(500, errMes);
}
Query queryParam = new Query()
{
FormId = this._FormId,
FieldKeys = @"FID,FStatus,FCreatorId,FCreateDate,
FBillId.FID,FBillId.FName,FBillNo,FBarCode,FEntryId,FMaterialId,FMaterialId.FNumber,FMaterialId.FName,FQty,FStockId,FStockId.FNumber,FStockId.FName,Flot,FJSON,
FErrorInfo,FSubmitLot,
FResultBillId.FID,FResultBillId.FName,FResultBillNo,FResultId,FResultIsChecked,FIsPrinted",
Limit = param.PageSize,
StartRow = param.PageSize * (param.PageIndex - 1),
//FilterString = "",
OrderString = "FCreateDate DESC"
};
//FilterItem userItem = new FilterItem("FCreatorId", "67", param.UserId, "0");
//queryParam.FilterString.Add(userItem);
//// 如果存在FormId加到过滤条件中
//if (param.BillId != null)
//{
// queryParam.FilterString.Add(new FilterItem("FBillId.FID", "67", param.BillId, "0"));
//}
//// 如果存在FormId加到过滤条件中
//if (param.BarCode != null)
//{
// queryParam.FilterString.Add(new FilterItem("FBarCode", "67", param.BarCode, "0"));
//}
//if (param.BillNo != null)
//{
// queryParam.FilterString.Add(new FilterItem("FBillNo", "67", param.BillNo, "0"));
//}
//if (param.Status != null)
//{
// queryParam.FilterString.Add(new FilterItem("FStatus", "29", param.Status, "0"));
//}
//if (param.SubmitLot != null)
//{
// queryParam.FilterString.Add(new FilterItem("FSubmitLot", "67", param.SubmitLot, "0"));
//}
//queryParam.FilterString.Add(userItem);
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
IScanRecordsService service = new ScanRecordsService(_utils);
var data = service.List(queryParam);
return AjaxResult.Success(data);
}
/// <summary>
/// 保存扫描记录
/// </summary>
/// <returns></returns>
[HttpPost("Save")]
public AjaxResult Save([FromBody] ScanRecordsSaveDto param)
{
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
IScanRecordsService service = new ScanRecordsService(_utils);
service.Save(param);
return AjaxResult.Success("保存成功");
}
/// <summary>
/// 批量扫描记录
/// </summary>
/// <returns></returns>
[HttpPost("PatchSave")]
public AjaxResult PatchSave([FromBody] ArrayDto<ScanRecordsSaveDto> param)
{
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
IScanRecordsService service = new ScanRecordsService(_utils);
service.PatchSave(param);
return AjaxResult.Success("保存成功");
}
/// <summary>
/// 删除扫描记录
/// </summary>
/// <returns></returns>
[HttpPost("Delete")]
public AjaxResult Delete([FromBody] Delete Param)
{
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
IScanRecordsService service = new ScanRecordsService(_utils);
service.Delete(Param);
return AjaxResult.Success("删除成功");
}
/// <summary>
/// 批量删除扫描记录
/// </summary>
/// <returns></returns>
[HttpPost("MultiDelete")]
public AjaxResult MultiDelete([FromBody] ScanRecordsPageParam Param)
{
if (Param.UserId == null)
{
var errMes = string.Format("传递的参数不合法用户Id不能为空当前 UserId 为 {0}", Param.UserId);
return AjaxResult.Error(500, errMes);
}
if (Param.BillId == null)
{
var errMes = string.Format("传递的参数不合法表单Id不能为空当前 FormId 为 {0}", Param.BillId);
return AjaxResult.Error(500, errMes);
}
Query queryParam = new Query()
{
FormId = this._FormId,
FieldKeys = "FID",
};
//FilterList filterString = new FilterList();
//FilterItem userItem = new FilterItem("FCreatorId", "67", Param.UserId, "0");
//filterString.AddFilterItem(userItem);
//FilterItem formidItem = new FilterItem("FFromId", "67", Param.BillId, "0");
//filterString.AddFilterItem(formidItem);
//queryParam.FilterString = filterString.GetFilterString();
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
IScanRecordsService service = new ScanRecordsService(_utils);
var data = service.List(queryParam);
var mes = string.Format("删除成功。删除数量:{0}", data.List.Count);
if (data.List.Count == 0)
{
return AjaxResult.Success(mes);
}
Delete delete = new Delete()
{
Ids = string.Join(",", data.List.Select(n => n["FID"].ToString()))
};
var result = service.Delete(delete);
return AjaxResult.Success(mes, result);
}
/// <summary>
/// 打印成果单据
/// </summary>
/// <returns></returns>
[HttpPost("PrintResultBillNo")]
public AjaxResult PrintResultBillNo([FromBody] PrintRecord printRecord)
{
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
IScanRecordsService service = new ScanRecordsService(_utils);
var reuslt = service.PrintResultBillNo(printRecord.Ids);
return AjaxResult.Success("扫描记录更新成功.");
}
}
}

View File

@@ -54,21 +54,16 @@ namespace Gatedge.ScanCode.Controllers
Limit = Param.PageSize,
StartRow = Param.PageSize * (Param.PageIndex - 1),
};
//// 已审核未禁用
//FilterList filterString = new FilterList().AddAuditedItems().AddNotCancelItems("FForbidStatus");
//if (Param.QueryString != string.Empty && Param.QueryString != null)
//{
// FilterItem NamefilterItem = new FilterItem("(", "FNAME", "17", Param.QueryString, "", "1");
// FilterItem NumberfilterItem = new FilterItem("", "FNUMBER", "17", Param.QueryString, ")", "0");
// //过滤名称和编码
// filterString.AddFilterItem(NamefilterItem).AddFilterItem(NumberfilterItem);
//}
//// 过滤组织
//FilterItem FOrgItem = new FilterItem("FUseOrgId.FNumber", "67", User.FindFirstValue("orgNum"), "0");
//filterString.AddFilterItem(FOrgItem);
//queryParam.FilterString = filterString.GetFilterString();
// 已审核未禁用
queryParam.FilterString = string.Empty;
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
_utils.InitCloudApi(loginInfo);
queryParam.FilterString += $"FDocumentStatus = 'C' AND FFORBIDSTATUS = 'A' AND FUseOrgId.FNumber = '{loginInfo.OrgNum}' ";
FilterList filterString = new FilterList().AddAuditedItems().AddNotCancelItems("FForbidStatus");
if (Param.QueryString != string.Empty && Param.QueryString != null)
{
queryParam.FilterString += $" AND (FNAME LIKE '%{Param.QueryString}%' OR FNUMBER LIKE '%{Param.QueryString}%')";
}
IStockService service = new StockService(_utils);
var data = service.List(queryParam);
return AjaxResult.Success(data).AddBillId(_FormId);

View File

@@ -2,5 +2,7 @@
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<NameOfLastUsedPublishProfile>E:\项目代码\澳门新东方\Gatedge.NewOrientLandMark.BOS\Gatedge.ScanCode\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
</PropertyGroup>
</Project>

View File

@@ -66,18 +66,7 @@ namespace Gatedge.ScanCode.Services
};
//// 过滤
//FilterList filterString = new FilterList();
//// 添加过滤条件// 条码
//filterString.AddFilterItem(new FilterItem()
//{
// Left = "",
// FieldName = "FBarCode",
// Compare = "67",
// Value = barCode,
// Right = "",
// Logic = "0"
//});
//queryParam.FilterString = filterString.GetFilterString();
queryParam.FilterString = $"FBarCode = '{barCode}'";
var data = this.List(queryParam);
if (data.List.Count == 0)

View File

@@ -74,10 +74,7 @@ namespace Gatedge.ScanCode.Services
Limit = 2000,
StartRow = 0,
};
//FilterList filterString = new FilterList();
//FilterItem filterItem = new FilterItem("FBarCode", "67", barCode, "0");
//filterString.AddFilterItem(filterItem);
//queryParam.FilterString = filterString.GetFilterString();
queryParam.FilterString = $"FBarCode = '{barCode}'";
return List(queryParam);
}

View File

@@ -28,6 +28,17 @@
"ServerUrl": "http://58.252.252.77/k3cloud",
"Timestamp": 300,
"OrgNumber": "100"
},
// 本地测试环境
{
"AcctID": "68d01db42795be",
"AppID": "324230_369J07sG0qD51Zzo426Py9yMTMQVWrPE",
"AppSec": "3fc411a6b17644479ac8683e0a5751cc",
"UserName": "demo",
"LCID": 2052,
"ServerUrl": "http://127.0.0.1/k3cloud",
"Timestamp": 300,
"OrgNumber": "100"
}
]
},