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 }