| | |
| | | logger.Warn("库存数据上报失败") |
| | | |
| | | //上报失败, 缓存清空 |
| | | invReportedCache = make(map[string]float64, 0) |
| | | for _, v := range list[i:end] { |
| | | key := v.FNumber + v.FBatchNo + v.FStockNo |
| | | delete(invReportedCache, key) |
| | | } |
| | | } else { |
| | | successCnt = end |
| | | } |
| | |
| | | logger.Debug("已上报%d条库存数据", successCnt) |
| | | } |
| | | |
| | | // bom数据分bom和bomChild两个表 |
| | | func SendBom(fData bool) { |
| | | // 上报bom |
| | | bomList := kingdee.BomList(fData) |
| | | logger.Debug("查询到%d条Bom数据", len(bomList)) |
| | | |
| | | b, _ := json.Marshal(bomList) |
| | | |
| | | ioutil.WriteFile("bomList.tmp", b, 0644) |
| | | |
| | | // 过滤数据, 判断是否已经上报过, 请求全量数据不过滤, 直接上报 |
| | | if fData { |
| | | if !fData { |
| | | for i := 0; i < len(bomList); { |
| | | cacheKey := bomList[i].FBOMNumber + bomList[i].FAudDate |
| | | if _, ok := bomReportedCache[cacheKey]; ok { |
| | |
| | | } |
| | | } |
| | | |
| | | // 分组上传bom数据 |
| | | if len(bomList) == 0 { |
| | | logger.Debug("没有要更新的Bom数据.") |
| | | logger.Debug("没有要更新的BOM数据.") |
| | | } else { |
| | | // 每次发 1000 条 |
| | | successCnt := 0 |
| | |
| | | |
| | | b, _ := json.Marshal(bomList[i:end]) |
| | | |
| | | // TCP协议上报 |
| | | ok := nsqclient.Produce(config.Options.BomTopic, b) |
| | | if !ok { |
| | | logger.Warn("BOM数据上报失败") |
| | | |
| | | //上报失败, 缓存清空 |
| | | bomReportedCache = make(map[string]struct{}, 0) |
| | | for _, v := range bomList[i:end] { |
| | | key := v.FBOMNumber + v.FAudDate |
| | | delete(bomReportedCache, key) |
| | | } |
| | | } else { |
| | | successCnt = end |
| | | } |
| | |
| | | } |
| | | |
| | | // 上报bom子项 |
| | | var bomChildList []kingdee.ICBomChild |
| | | |
| | | // 如果请求全量数据, 直接查询所有的数据并发送. 增量上报, 先判断bom是否有更新,然后按bom编码查询子项 |
| | | if fData { |
| | | bomChildList = kingdee.BomChild(nil) |
| | | b, _ := json.Marshal(bomChildList) |
| | | ioutil.WriteFile("bomChdList.tmp", b, 0644) |
| | | } else { |
| | | if len(bomList) <= 0 { |
| | | return |
| | | } |
| | | } |
| | | |
| | | if len(bomChildList) == 0 { |
| | | logger.Debug("没有要更新的BOM子项数据.") |
| | | } else { |
| | | // 每次发 1000 条 |
| | | successCnt := 0 |
| | | for i := 0; i < len(bomChildList); i += 1000 { |
| | | end := i + 1000 |
| | | if end > len(bomChildList) { |
| | | end = len(bomChildList) |
| | | } |
| | | |
| | | b, _ := json.Marshal(bomChildList[i:end]) |
| | | |
| | | ok := nsqclient.Produce(config.Options.BomChildTopic, b) |
| | | if !ok { |
| | | logger.Warn("BOM数据上报失败") |
| | | } else { |
| | | successCnt = end |
| | | } |
| | | } |
| | | logger.Debug("已上报%d条BOM子项数据", successCnt) |
| | | } |
| | | } |