From dc40143800edd914d0f721b06f90c8b4d307b979 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期四, 17 八月 2023 15:46:19 +0800
Subject: [PATCH] 调整bom
---
report/send.go | 115 +++++++++++++++++++++++---------------
kingdee/bom.go | 37 ++++++------
2 files changed, 88 insertions(+), 64 deletions(-)
diff --git a/kingdee/bom.go b/kingdee/bom.go
index 2a3003c..8426c84 100644
--- a/kingdee/bom.go
+++ b/kingdee/bom.go
@@ -6,24 +6,25 @@
)
type ICBom struct {
- FInterID int `gorm:"column:FInterID" json:"FInterID"` // 鍐呯爜
- FBOMNumber string `gorm:"column:FBOMNumber" json:"FBOMNumber"` // BOM鍗曠紪鍙�
- FUseStatus int `gorm:"column:FUseStatus" json:"FUseStatus"` // 浣跨敤鐘舵�佺爜
- FUseStatusName string `gorm:"column:FUseStatusName" json:"FUseStatusName"` // 浣跨敤鐘舵��
- FItemIDNumber string `gorm:"column:FItemIDNumber" json:"FItemIDNumber"` // 鐗╂枡浠g爜
- FItemIDName string `gorm:"column:FItemIDName" json:"FItemIDName"` // 鐗╂枡鍚嶇О
- FModel string `gorm:"column:FModel" json:"FModel"` // 瑙勬牸鍨嬪彿
- FErpClsID string `gorm:"column:FErpClsID" json:"FErpClsID"` // 鐗╂枡灞炴��
- FQty float64 `gorm:"column:FQty" json:"FQty"` // 鏁伴噺
- FUnitName string `gorm:"column:FUnitName" json:"FUnitName"` // 鍗曚綅
- FYield float64 `gorm:"column:FYield" json:"FYield"` // 鎴愬搧鐜�
- FRoutingIDNumber string `gorm:"column:FRoutingIDNumber" json:"FRoutingIDNumber"` // 宸ヨ壓璺嚎浠g爜
- FRoutingIDName string `gorm:"column:FRoutingIDName" json:"FRoutingIDName"` // 宸ヨ壓璺嚎鍚嶇О
- FNote string `gorm:"column:FNote" json:"FNote"` // 澶囨敞
- FBomType int `gorm:"column:FBomType" json:"FBomType"` // BOM绫诲瀷
- FAudDate string `gorm:"column:FAudDate" json:"FAudDate"` // 鏇存柊鏃堕棿
- FPDMImportDate string `gorm:"column:FPDMImportDate" json:"FPDMImportDate"` // 瀵煎叆鏃堕棿
- FStatus int `gorm:"column:FStatus" json:"FStatus"` // 鐘舵��
+ FInterID int `gorm:"column:FInterID" json:"FInterID"` // 鍐呯爜
+ FBOMNumber string `gorm:"column:FBOMNumber" json:"FBOMNumber"` // BOM鍗曠紪鍙�
+ FUseStatus int `gorm:"column:FUseStatus" json:"FUseStatus"` // 浣跨敤鐘舵�佺爜
+ FUseStatusName string `gorm:"column:FUseStatusName" json:"FUseStatusName"` // 浣跨敤鐘舵��
+ FItemIDNumber string `gorm:"column:FItemIDNumber" json:"FItemIDNumber"` // 鐗╂枡浠g爜
+ FItemIDName string `gorm:"column:FItemIDName" json:"FItemIDName"` // 鐗╂枡鍚嶇О
+ FModel string `gorm:"column:FModel" json:"FModel"` // 瑙勬牸鍨嬪彿
+ FErpClsID string `gorm:"column:FErpClsID" json:"FErpClsID"` // 鐗╂枡灞炴��
+ FQty float64 `gorm:"column:FQty" json:"FQty"` // 鏁伴噺
+ FUnitName string `gorm:"column:FUnitName" json:"FUnitName"` // 鍗曚綅
+ FYield float64 `gorm:"column:FYield" json:"FYield"` // 鎴愬搧鐜�
+ FRoutingIDNumber string `gorm:"column:FRoutingIDNumber" json:"FRoutingIDNumber"` // 宸ヨ壓璺嚎浠g爜
+ FRoutingIDName string `gorm:"column:FRoutingIDName" json:"FRoutingIDName"` // 宸ヨ壓璺嚎鍚嶇О
+ FNote string `gorm:"column:FNote" json:"FNote"` // 澶囨敞
+ FBomType int `gorm:"column:FBomType" json:"FBomType"` // BOM绫诲瀷
+ FAudDate string `gorm:"column:FAudDate" json:"FAudDate"` // 鏇存柊鏃堕棿
+ FPDMImportDate string `gorm:"column:FPDMImportDate" json:"FPDMImportDate"` // 瀵煎叆鏃堕棿
+ FStatus int `gorm:"column:FStatus" json:"FStatus"` // 鐘舵��
+ Component []ICBomChild `json:"Component"` // BOM缁勪欢
}
func BomList(fData bool) []ICBom {
diff --git a/report/send.go b/report/send.go
index f495445..35a6311 100644
--- a/report/send.go
+++ b/report/send.go
@@ -2,6 +2,7 @@
import (
"encoding/json"
+ "io/ioutil"
"time"
"kingdee-dbapi/cache"
@@ -143,27 +144,48 @@
// bom鏁版嵁鍒哹om鍜宐omChild涓や釜琛�
func SendBom(fData bool) {
+ var bomList []kingdee.ICBom
+ var bomChildList []kingdee.ICBomChild
+
// 涓婃姤bom
- bomList := kingdee.BomList(fData)
+ bomList = kingdee.BomList(fData)
logger.Debug("鏌ヨ鍒�%d鏉OM鏁版嵁", len(bomList))
// 杩囨护鏁版嵁, 鍒ゆ柇鏄惁宸茬粡涓婃姤杩�, 璇锋眰鍏ㄩ噺鏁版嵁涓嶈繃婊�, 鐩存帴涓婃姤
if !fData {
+ var bomNumbers []string
for i := 0; i < len(bomList); {
cacheKey := bomList[i].FBOMNumber + bomList[i].FAudDate
if _, ok := bomReportedCache[cacheKey]; ok {
bomList = append(bomList[:i], bomList[i+1:]...)
} else {
bomReportedCache[cacheKey] = struct{}{}
+ bomNumbers = append(bomNumbers, bomList[i].FBOMNumber)
i++
}
}
+ if len(bomNumbers) > 0 {
+ bomChildList = kingdee.BomChild(bomNumbers)
+ }
+ } else {
+ bomChildList = kingdee.BomChild(nil)
}
// 鍒嗙粍涓婁紶bom鏁版嵁
if len(bomList) == 0 {
logger.Debug("娌℃湁瑕佹洿鏂扮殑BOM鏁版嵁.")
} else {
+ // 灏哹om缁勪欢鎸塨omId鏁寸悊
+ var bomChildMap = make(map[int][]kingdee.ICBomChild, 0)
+ for idx, bomChild := range bomChildList {
+ bomChildMap[bomChild.FInterID] = append(bomChildMap[bomChild.FInterID], bomChildList[idx])
+ }
+
+ // 缁檅om娣诲姞缁勪欢
+ for _, bom := range bomList {
+ bom.Component = bomChildMap[bom.FInterID]
+ }
+
// 姣忔鍙� 1000 鏉�
successCnt := 0
for i := 0; i < len(bomList); i += 1000 {
@@ -173,6 +195,8 @@
}
b, _ := json.Marshal(bomList[i:end])
+
+ ioutil.WriteFile("bomList.tmp", b, 0644)
ok := nsqclient.Produce(config.Options.BomTopic, b)
if !ok {
@@ -190,49 +214,48 @@
logger.Debug("宸蹭笂鎶�%d鏉OM鏁版嵁", successCnt)
}
-
- // 涓婃姤bom瀛愰」
- var bomChildList []kingdee.ICBomChild
-
- // 濡傛灉璇锋眰鍏ㄩ噺鏁版嵁, 鐩存帴鏌ヨ鎵�鏈夌殑鏁版嵁骞跺彂閫�. 澧為噺涓婃姤, 鍏堝垽鏂璪om鏄惁鏈夋洿鏂�,鐒跺悗鎸塨om缂栫爜鏌ヨ瀛愰」
- if fData {
- bomChildList = kingdee.BomChild(nil)
- } else {
- if len(bomList) <= 0 {
- return
- }
-
- var bomIds []string
- for _, v := range bomList {
- bomIds = append(bomIds, v.FBOMNumber)
- }
-
- bomChildList = kingdee.BomChild(bomIds)
- }
-
- logger.Debug("鏌ヨ鍒�%d鏉OM瀛愰」鏁版嵁", len(bomList))
-
- if len(bomChildList) == 0 {
- logger.Debug("娌℃湁瑕佹洿鏂扮殑BOM瀛愰」鏁版嵁.")
- return
- }
-
- // 姣忔鍙� 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鏉OM瀛愰」鏁版嵁", successCnt)
+ //
+ //// 涓婃姤bom瀛愰」
+ //
+ //// 濡傛灉璇锋眰鍏ㄩ噺鏁版嵁, 鐩存帴鏌ヨ鎵�鏈夌殑鏁版嵁骞跺彂閫�. 澧為噺涓婃姤, 鍏堝垽鏂璪om鏄惁鏈夋洿鏂�,鐒跺悗鎸塨om缂栫爜鏌ヨ瀛愰」
+ //if fData {
+ // bomChildList = kingdee.BomChild(nil)
+ //} else {
+ // if len(bomList) <= 0 {
+ // return
+ // }
+ //
+ // var bomIds []string
+ // for _, v := range bomList {
+ // bomIds = append(bomIds, v.FBOMNumber)
+ // }
+ //
+ // bomChildList = kingdee.BomChild(bomIds)
+ //}
+ //
+ //logger.Debug("鏌ヨ鍒�%d鏉OM瀛愰」鏁版嵁", len(bomList))
+ //
+ //if len(bomChildList) == 0 {
+ // logger.Debug("娌℃湁瑕佹洿鏂扮殑BOM瀛愰」鏁版嵁.")
+ // return
+ //}
+ //
+ //// 姣忔鍙� 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鏉OM瀛愰」鏁版嵁", successCnt)
}
--
Gitblit v1.8.0