package service
|
|
|
|
import "leit.com/leit_seat_aps/db"
|
|
|
|
// 零件族业务对象
|
|
type BL_PartFamily struct {
|
|
Partfamilyid string
|
|
Pf_attr_dict map[int]BL_PartFamily_Atcod // 零件族分配的属性字典
|
|
Partfamilytab db.Me_partfamily
|
|
}
|
|
|
|
// 零件族分配的属性对象
|
|
type BL_PartFamily_Atcod struct {
|
|
Partfamilyid string // 零件族ID
|
|
Attrcode int // 属性ID
|
|
Mandatory int // 是否强制需要
|
|
Verifyrule string // 验证规则
|
|
Partfamily_attrtab db.Me_partfamily_atcodlst
|
|
}
|
|
|
|
// 获取零件族列表
|
|
func GetPartfamilytabList() (pftablist []db.Me_partfamily, err error) {
|
|
if err = db.G_DbEngine.Where("finr = ?", db.G_FINR).Find(&pftablist); err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// 获取零件族属性列表
|
|
func GetPartfamilyAtcodtabList() (pfatcodtablist []db.Me_partfamily_atcodlst, err error) {
|
|
if err = db.G_DbEngine.Where("finr = ?", db.G_FINR).Find(&pfatcodtablist); err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// 获取项目零件族列表
|
|
func GetProjectPartfamilytabList(projnr string) (pftablist []db.Me_partfamily, err error) {
|
|
if err = db.G_DbEngine.Where("finr = ? AND projnr = ?", db.G_FINR, projnr).Find(&pftablist); err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// 获取项目零件族属性列表
|
|
func GetProjectPartfamilyAtcodtabList(projnr string) (pfatcodtablist []db.Me_partfamily_atcodlst, err error) {
|
|
var (
|
|
pftablist []db.Me_partfamily
|
|
i int
|
|
pfarray []string
|
|
)
|
|
// 获取指定项目的零件族数组
|
|
if pftablist, err = GetProjectPartfamilytabList(projnr); err != nil {
|
|
return
|
|
}
|
|
pfarray = make([]string, len(pftablist))
|
|
for i = 0; i < len(pftablist); i++ {
|
|
pfarray[i] = pftablist[i].Partfamilyid
|
|
}
|
|
if err = db.G_DbEngine.Where("finr = ?", db.G_FINR).In("partfamilyid", pfarray).Find(&pfatcodtablist); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 获取指定项目的零件族主数据字典
|
|
func GetProjectParfamilyDict(projnr string) (pfdict map[string]BL_PartFamily, err error) {
|
|
var (
|
|
pftablst []db.Me_partfamily
|
|
pfattrtablst []db.Me_partfamily_atcodlst
|
|
bl_pf BL_PartFamily
|
|
bl_pfattr BL_PartFamily_Atcod
|
|
i int
|
|
ok bool
|
|
)
|
|
pfdict = make(map[string]BL_PartFamily)
|
|
if pftablst, err = GetProjectPartfamilytabList(projnr); err != nil {
|
|
return
|
|
}
|
|
if pfattrtablst, err = GetProjectPartfamilyAtcodtabList(projnr); err != nil {
|
|
return
|
|
}
|
|
|
|
// 遍历零件族列表
|
|
for i = 0; i < len(pftablst); i++ {
|
|
pftablst[i].Clipped()
|
|
bl_pf = BL_PartFamily{}
|
|
bl_pf.Partfamilyid = pftablst[i].Partfamilyid
|
|
bl_pf.Pf_attr_dict = make(map[int]BL_PartFamily_Atcod)
|
|
bl_pf.Partfamilytab = pftablst[i]
|
|
pfdict[bl_pf.Partfamilyid] = bl_pf
|
|
}
|
|
// 遍历零件属性列表
|
|
for i = 0; i < len(pfattrtablst); i++ {
|
|
pfattrtablst[i].Clipped()
|
|
if bl_pf, ok = pfdict[pfattrtablst[i].Partfamilyid]; !ok {
|
|
continue
|
|
}
|
|
bl_pfattr = BL_PartFamily_Atcod{}
|
|
bl_pfattr.Attrcode = pfattrtablst[i].Attrcode
|
|
bl_pfattr.Mandatory = pfattrtablst[i].Mandatory
|
|
bl_pfattr.Verifyrule = pfattrtablst[i].Verifyrule
|
|
bl_pfattr.Partfamily_attrtab = pfattrtablst[i]
|
|
bl_pf.Pf_attr_dict[bl_pfattr.Attrcode] = bl_pfattr
|
|
// 更新回零件字典
|
|
pfdict[bl_pf.Partfamilyid] = bl_pf
|
|
}
|
|
return
|
|
}
|