//using Kingdee.CDP.WebApi.SDK; using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto; using NewPdaSqlServer.entity; using SqlSugar; namespace NewPdaSqlServer.service; public class ErpKcManager : Repository { public bool QueryStocks(Inventory inventory) { //List erpKc = GetErpInventory(inventory); var erpKc = new List(); // 检查返回结果是否为空 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 * * 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 MapErpCABtoWomcab(List dtoList) { var ErpMesKcList = new List(); 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 kcc) { Db.Deleteable() .ExecuteCommand(); var save = base.InsertRange(kcc); if (save) return true; throw new NotImplementedException("插入失败"); } }