//using Kingdee.CDP.WebApi.SDK;
|
|
using NewPdaSqlServer.DB;
|
using NewPdaSqlServer.Dto;
|
using NewPdaSqlServer.entity;
|
using SqlSugar;
|
|
namespace NewPdaSqlServer.service;
|
|
public class ErpKcManager : Repository<ErpMesKc>
|
{
|
public bool QueryStocks(Inventory inventory)
|
{
|
//List<ErpKc> erpKc = GetErpInventory(inventory);
|
var erpKc = new List<ErpKc>();
|
|
// 检查返回结果是否为空
|
if (erpKc == null || erpKc.Count == 0)
|
throw new NotImplementedException("返回结果为空");
|
|
var baseObjects = MapErpCABtoWomcab(erpKc);
|
|
return UseTransaction(db =>
|
{
|
return SaveData(db, baseObjects) ? 1 : 0;
|
}) > 0;
|
}
|
|
/**
|
* #region 1.获取即时库存
|
* public List
|
* <ErpKc>
|
* GetErpInventory(Inventory inventory)
|
* {
|
* //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
|
* //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
|
* //读取配置,初始化SDK
|
* K3CloudApi client = new K3CloudApi();
|
* //用于记录结果
|
* StringBuilder Info = new StringBuilder();
|
* //业务对象标识
|
* string formId = "STK_Inventory";
|
* DateTime dt = DateTime.Now;
|
* //查询字段集合,即返回哪些数据,不能为空,根据不同业务单据填写不同的字段名,以下仅为示例
|
* //string fieldKeys = "FCod,FFileId,FRelevantObject";
|
* //string FilterString = "FID='-2146304'";
|
* string fieldKeys =
|
* "FMaterialId.FNumber,FMtoNo,FStockId,FLot.FNumber,FStockUnitId.FNumber,FBaseUnitId.FNumber,FStockStatusId.FName,FBASEQTY,FMaterialid.FSTOREURNOM,FMaterialid.FSTOREURNUM,FStockOrgId";
|
* string FilterString = string.Format(@"FMaterialId.FNumber like '%{0}%' and
|
* FStockId.FNumber like '%{1}%' and FBaseQty>0",
|
* inventory.ItemNo,inventory.DepotCode);
|
* string OrderString = "";
|
* int TopRowCount = 0;
|
* int StartRow = 0;
|
* int Limit = 0;
|
* var param = new QueryParam()
|
* {
|
* FormId = formId,
|
* FieldKeys = fieldKeys,
|
* FilterString = FilterString,
|
* OrderString = OrderString,
|
* TopRowCount = TopRowCount,
|
* StartRow = StartRow,
|
* Limit = Limit
|
* };
|
* //调用接口
|
* var result = client.ExecuteBillQuery(param.ToJson());
|
* return result.Select(s =>
|
* {
|
* var entity = new ErpKc
|
* {
|
* FMaterialId = s[0]?.ToString(),
|
* FMtoNo = s[1]?.ToString(),
|
* FStockId = s[2]?.ToString(),
|
* FLot = s[3]?.ToString(),
|
* FStockUnitId = s[4]?.ToString(),
|
* FBaseUnitId = s[5]?.ToString(),
|
* FStockStatusId = s[6]?.ToString(),
|
* FBASEQTY = s[7]?.ToString() ,
|
* FSTOREURNOM = s[8]?.ToString(),
|
* FSTOREURNUM = s[9]?.ToString(),
|
* FStockOrgId = s[10]?.ToString()
|
* };
|
* return entity;
|
* }).ToList();
|
* }
|
* #endregion
|
*/
|
private List<ErpMesKc> MapErpCABtoWomcab(List<ErpKc> dtoList)
|
{
|
var ErpMesKcList = new List<ErpMesKc>();
|
|
foreach (var dto in dtoList)
|
{
|
var kc = new ErpMesKc
|
{
|
FNumber = dto.FMaterialId,
|
FQty = Convert.ToDecimal(dto.FBASEQTY),
|
FBaseUnit = dto.FBaseUnitId,
|
FStockUnit = dto.FStockUnitId,
|
FStockId = dto.FStockId,
|
CreateDate = DateTime.Now,
|
FBatchno = dto.FLot,
|
FMtono = dto.FMtoNo,
|
FStockStatus = dto.FStockStatusId,
|
FStoreUrnom = Convert.ToDecimal(dto.FSTOREURNOM),
|
FStoreUrnum = Convert.ToDecimal(dto.FSTOREURNUM),
|
FStockOrgId = Convert.ToDecimal(dto.FStockOrgId)
|
};
|
|
ErpMesKcList.Add(kc);
|
}
|
|
return ErpMesKcList;
|
}
|
|
// 插入或更新数据的方法
|
private bool SaveData(SqlSugarScope db, List<ErpMesKc> kcc)
|
{
|
Db.Deleteable<ErpMesKc>()
|
.ExecuteCommand();
|
|
var save = base.InsertRange(kcc);
|
if (save) return true;
|
throw new NotImplementedException("插入失败");
|
}
|
}
|