SJA APS后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
3.1 KiB

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
}