package kingdee
|
|
import (
|
"fmt"
|
"strings"
|
)
|
|
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"` // 物料代码
|
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"` // 工艺路线代码
|
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 {
|
sql := `
|
SELECT
|
ICBom.FInterID,
|
ICBom.FBOMNumber,
|
ICBom.FUseStatus,
|
t_SubMessage.FName as FUseStatusName,
|
t_ICItem.FNumber as FItemIDNumber,
|
t_ICItem.FName as FItemIDName,
|
t_ICItem.FModel as FModel,
|
(SELECT FName FROM t_SubMessage WHERE t_ICItem.FErpClsID=FInterID) as FErpClsID,
|
ICBom.FQty,
|
t_MeasureUnit.FName as FUnitName,
|
ICBom.FYield,
|
t_Routing.FBillNO as FRoutingIDNumber,
|
t_Routing.FRoutingName as FRoutingIDName,
|
ICBom.FNote,
|
ICBom.FBomType,
|
ICBom.FAudDate,
|
ICBom.FPDMImportDate,
|
ICBom.FStatus
|
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
|
left join t_Routing on ICBom.FRoutingID = t_Routing.FInterID AND t_Routing.FInterID <> 0
|
`
|
|
// 如果不是请求全部数据, 仅查询当天更新的, 默认查当天
|
if !fData {
|
sql = sql + " WHERE DateDiff(dd, ICBom.FAudDate, getdate())=1"
|
}
|
|
var result []ICBom
|
|
db.Raw(sql).Scan(&result)
|
|
return result
|
}
|
|
type ICBomChild struct {
|
FInterID int `gorm:"column:FInterID" json:"FInterID"` // 所属BOM内码
|
FBOMNumber string `gorm:"column:FBOMNumber" json:"FBOMNumber"` // 所属BOM单编号
|
FEntryID int `gorm:"column:FEntryID" json:"FEntryID"` // 顺序号
|
FItemIDNumber string `gorm:"column:FItemIDNumber" json:"FItemIDNumber"` // 物料代码
|
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"` // 是否倒冲代码
|
FBackFlushName string `gorm:"column:FBackFlushName" json:"FBackFlushName"` // 是否倒
|
FUseState string `gorm:"column:FUseState" json:"FUseState"` // 使用状态
|
FStockIDNumber string `gorm:"column:FStockIDNumber" json:"FStockIDNumber"` // 仓库代码
|
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
|
`
|
|
// 按bom查询
|
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
|
}
|