| | |
| | | |
| | | //using Kingdee.CDP.WebApi.SDK; |
| | | //using Kingdee.CDP.WebApi.SDK; |
| | | |
| | | using NewPdaSqlServer.DB; |
| | | using NewPdaSqlServer.Dto; |
| | | using NewPdaSqlServer.entity; |
| | | using SqlSugar; |
| | | using NewPdaSqlServer.DB; |
| | | using System.Text; |
| | | using NewPdaSqlServer.Dto; |
| | | |
| | | namespace MES.Service.service.Kingdee; |
| | | namespace NewPdaSqlServer.service; |
| | | |
| | | public class ErpKcManager : Repository<ErpMesKc> |
| | | { |
| | | public bool QueryStocks(Inventory inventory) |
| | | { |
| | | //List<ErpKc> erpKc = GetErpInventory(inventory); |
| | | List<ErpKc> erpKc = new List<ErpKc>(); |
| | | var erpKc = new List<ErpKc>(); |
| | | |
| | | // 检查返回结果是否为空 |
| | | if (erpKc == null || erpKc.Count == 0) |
| | | { |
| | | throw new NotImplementedException("返回结果为空"); |
| | | } |
| | | else |
| | | { |
| | | var baseObjects = MapErpCABtoWomcab(erpKc); |
| | | |
| | | return UseTransaction(db => |
| | | { |
| | | return SaveData(db, baseObjects) ? 1 : 0; |
| | | }) > 0; |
| | | } |
| | | 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 |
| | | */ |
| | | |
| | | * #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>(); |
| | |
| | | { |
| | | 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), |
| | | 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); |
| | |
| | | private bool SaveData(SqlSugarScope db, List<ErpMesKc> kcc) |
| | | { |
| | | Db.Deleteable<ErpMesKc>() |
| | | .ExecuteCommand(); |
| | | .ExecuteCommand(); |
| | | |
| | | var save = base.InsertRange(kcc); |
| | | if (save) return true; |
| | | throw new NotImplementedException("插入失败"); |
| | | } |
| | | |
| | | } |
| | | } |