From dc40143800edd914d0f721b06f90c8b4d307b979 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期四, 17 八月 2023 15:46:19 +0800
Subject: [PATCH] 调整bom

---
 kingdee/bom.go |  110 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 89 insertions(+), 21 deletions(-)

diff --git a/kingdee/bom.go b/kingdee/bom.go
index 9b276bf..8426c84 100644
--- a/kingdee/bom.go
+++ b/kingdee/bom.go
@@ -1,24 +1,30 @@
 package kingdee
 
+import (
+	"fmt"
+	"strings"
+)
+
 type ICBom struct {
-	FInterID         int     // 鍐呯爜
-	FBOMNumber       string  // BOM鍗曠紪鍙�
-	FUseStatus       int     // 浣跨敤鐘舵�佺爜
-	FUseStatusName   string  // 浣跨敤鐘舵��
-	FItemIDNumber    string  // 鐗╂枡浠g爜
-	FItemIDName      string  // 鐗╂枡鍚嶇О
-	FModel           string  // 瑙勬牸鍨嬪彿
-	FErpClsID        string  // 鐗╂枡灞炴��
-	FQty             float64 // 鏁伴噺
-	FUnitName        string  // 鍗曚綅
-	FYield           float64 // 鎴愬搧鐜�
-	FRoutingIDNumber string  // 宸ヨ壓璺嚎浠g爜
-	FRoutingIDName   string  // 宸ヨ壓璺嚎鍚嶇О
-	FNote            string  // 澶囨敞
-	FBomType         int     // BOM绫诲瀷
-	FAudDate         string  // 鏇存柊鏃堕棿
-	FPDMImportDate   string  // 瀵煎叆鏃堕棿
-	FStatus          int     // 鐘舵��
+	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 {
@@ -42,7 +48,7 @@
 		ICBom.FAudDate, 
 		ICBom.FPDMImportDate, 
 		ICBom.FStatus
-	 FROM ICBom 
+	FROM ICBom 
 		left join t_SubMessage on ICBom.FUseStatus = t_SubMessage.FInterID AND t_SubMessage.FInterID <> 0  
 		join t_ICItem on ICBom.FItemID= t_ICItem.FItemID  AND t_ICItem.FItemID <> 0  
 		left join t_MeasureUnit on ICBom.FUnitID = t_MeasureUnit.FItemID AND t_MeasureUnit.FItemID <> 0  
@@ -51,13 +57,75 @@
 
 	// 濡傛灉涓嶆槸璇锋眰鍏ㄩ儴鏁版嵁, 浠呮煡璇㈠綋澶╂洿鏂扮殑, 榛樿鏌ュ綋澶�
 	if !fData {
-		sql = sql + " Where DateDiff(dd,FAudDate,getdate())=1"
+		sql = sql + " WHERE DateDiff(dd, ICBom.FAudDate, getdate())=1"
 	}
 
 	var result []ICBom
 
 	db.Raw(sql).Scan(&result)
-	//db.Raw(sql).Debug().Scan(&result)
+
+	return result
+}
+
+type ICBomChild struct {
+	FInterID          int     `gorm:"column:FInterID" json:"FInterID"`                   // 鎵�灞濨OM鍐呯爜
+	FBOMNumber        string  `gorm:"column:FBOMNumber" json:"FBOMNumber"`               // 鎵�灞濨OM鍗曠紪鍙�
+	FEntryID          int     `gorm:"column:FEntryID" json:"FEntryID"`                   // 椤哄簭鍙�
+	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"`                 // 鐗╂枡灞炴��
+	FMaterielTypeName string  `gorm:"column:FMaterielTypeName" json:"FMaterielTypeName"` // 瀛愰」绫诲瀷
+	FMarshalTypeName  string  `gorm:"column:FMarshalTypeName" json:"FMarshalTypeName"`   // 閰嶇疆灞炴��
+	FQty              float64 `gorm:"column:FQty" json:"FQty"`                           // 鏁伴噺
+	FUnitName         string  `gorm:"column:FUnitName" json:"FUnitName"`                 // 鍗曚綅
+	FPercent          float64 `gorm:"column:FPercent" json:"FPercent"`                   // 璁″垝鐧惧垎姣�
+	FBackFlushNumber  string  `gorm:"column:FBackFlushNumber" json:"FBackFlushNumber"`   // 鏄惁鍊掑啿浠g爜
+	FBackFlushName    string  `gorm:"column:FBackFlushName" json:"FBackFlushName"`       // 鏄惁鍊�
+	FUseState         string  `gorm:"column:FUseState" json:"FUseState"`                 // 浣跨敤鐘舵��
+	FStockIDNumber    string  `gorm:"column:FStockIDNumber" json:"FStockIDNumber"`       // 浠撳簱浠g爜
+	FStockIDName      string  `gorm:"column:FStockIDName" json:"FStockIDName"`           // 浠撳簱鍚嶇О
+	FPDMImportDate    string  `gorm:"column:FPDMImportDate" json:"FPDMImportDate"`       // 瀵煎叆鏃堕棿
+}
+
+func BomChild(bomNumber []string) []ICBomChild {
+	sql := `
+	SELECT ICBomChild.FInterID,
+		ICBOM.FBOMNumber,
+		ICBomChild.FEntryID,
+		t_ICItem.FNumber as  FItemIDNumber,
+		t_ICItem.FName as FItemName,
+		t_ICItem.FModel as FModel,
+		(SELECT FName FROM t_SubMessage WHERE t_ICItem.FErpClsID=FInterID) as FErpCls,
+		t010.FName as FMaterielTypeName,
+		t011.FName as FMarshalTypeName,
+		ICBomChild.FQty,
+		t_MeasureUnit.FName as FUnitName,
+		ICBomChild.FPercent,
+		t012.FID as FBackFlushNumber,
+		t012.FName as FBackFlushName,
+		(SELECT FName FROM t_SubMessage WHERE t_ICItem.FUseState=FInterID) as FUseState,
+		t_Stock.FNumber as FStockIDNumber,
+		t_Stock.FName as FStockIDName,
+		ICBomChild.FPDMImportDate
+	FROM ICBomChild 
+		join t_ICItem on t_ICItem.FItemID = ICBomChild.FItemID AND t_ICItem.FItemID <>0
+		left join ICBOM on ICBOM.FInterID = ICBomChild.FInterID  AND ICBOM.FInterID<>0
+		left join t_MeasureUnit on t_MeasureUnit.FItemID = t_ICItem.FUnitID  AND t_MeasureUnit.FItemID<>0
+		left join t_SubMessage  t010 on t010.FInterID = ICBomChild.FMaterielType AND t010.FInterID <>0
+		left join t_SubMessage  t011 on t011.FInterID = ICBomChild.FMarshalType AND t011.FInterID <>0
+		left join t_SubMessage  t012 on t012.FInterID = ICBomChild.FBackFlush AND t012.FInterID <>0
+		left join t_Stock on t_Stock.FItemID = ICBomChild.FStockID AND t_Stock.FItemID <>0
+	`
+
+	// 鎸塨om鏌ヨ
+	if bomNumber != nil {
+		sql = fmt.Sprintf("%s WHERE ICBOM.FBOMNumber in('%s')", sql, strings.Join(bomNumber, "','"))
+	}
+
+	var result []ICBomChild
+
+	db.Raw(sql).Scan(&result)
 
 	return result
 }

--
Gitblit v1.8.0