123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- package main
- import (
- "fmt"
- "github.com/spf13/viper"
- "github.com/xuri/excelize/v2"
- util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
- "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
- "log"
- "strings"
- )
- var (
- Mgo *mongodb.MongodbSim
- LMap = make(map[string]string, 0) // 企业人数 存储
- CMap = make(map[string]string, 0) // 参保人数 存储
- filename string
- GF GlobalConf
- )
- func InitConfig() (err error) {
- viper.SetConfigFile("config.toml") // 指定配置文件路径
- viper.SetConfigName("config") // 配置文件名称(无扩展名)
- viper.SetConfigType("toml") // 如果配置文件的名称中没有扩展名,则需要配置此项
- viper.AddConfigPath("./")
- viper.AddConfigPath("./conf/") // 还可以在工作目录中查找配置
- viper.AddConfigPath("../conf/") // 还可以在工作目录中查找配置
- err = viper.ReadInConfig() // 查找并读取配置文件
- if err != nil { // 处理读取配置文件的错误
- return
- }
- err = viper.Unmarshal(&GF)
- return err
- }
- func InitMgo() {
- Mgo = &mongodb.MongodbSim{
- MongodbAddr: GF.Mongo.Host,
- DbName: GF.Mongo.DB,
- Size: 10,
- UserName: GF.Mongo.Username,
- Password: GF.Mongo.Password,
- Direct: GF.Mongo.Direct,
- }
- Mgo.InitPool()
- }
- func Init() {
- InitConfig()
- InitMgo()
- filename = GF.Env.File
- }
- func main() {
- Init()
- f, err := excelize.OpenFile(filename)
- if err != nil {
- fmt.Println(err)
- return
- }
- defer func() {
- f.Save()
- if err := f.Close(); err != nil {
- fmt.Println(err)
- }
- }()
- //L0Num := 0//
- rows, err := f.GetRows(GF.Env.Sheet)
- for i := 1; i < len(rows); i++ {
- if i%100 == 0 {
- log.Println("current: ", i, rows[i][0])
- }
- //var member_no, employee_no, l_no, can_no string
- if len(rows[i]) <= 0 {
- continue
- }
- //1. 处理L0 企业人数人数
- name := strings.TrimSpace(dealName(rows[i][0]))
- if _, ok := LMap[name]; !ok {
- base, _ := Mgo.FindOne("company_base", map[string]interface{}{"company_name": name})
- baseInfo := *base
- if len(baseInfo) == 0 || baseInfo == nil {
- continue
- }
- company_id := util.ObjToString(baseInfo["company_id"])
- l_no, can_no := getQn(company_id, name)
- LMap[name] = l_no
- CMap[name] = can_no
- f.SetCellValue(GF.Env.Sheet, fmt.Sprintf("D%v", i+1), l_no)
- f.SetCellValue(GF.Env.Sheet, fmt.Sprintf("C%v", i+1), can_no)
- //where := map[string]interface{}{
- // "company_id": company_id,
- //}
- //reports, _ := Mgo.Find("annual_report_base", where, `{"_id":-1}`, nil, false, -1, -1)
- //reportsData := *reports
- //
- //if len(reportsData) > 0 {
- // for _, da := range reportsData {
- // if mo, ok := da["member_no"]; ok && mo != nil {
- // if moStr, ok := mo.(string); ok {
- // member_no = moStr
- // }
- // }
- // if eo, ok := da["employee_no"]; ok && eo != nil {
- // if eoStr, ok := eo.(string); ok {
- // employee_no = eoStr
- // }
- // }
- // if member_no != "" || employee_no != "" {
- // if strings.Contains(member_no, "不公示") && strings.Contains(employee_no, "不公示") {
- // continue
- // } else {
- // if strings.Contains(member_no, "不公示") {
- // l_no = employee_no
- // } else if strings.Contains(employee_no, "不公示") {
- // l_no = member_no
- // } else {
- // if member_no > employee_no {
- // l_no = employee_no
- // } else {
- // l_no = member_no
- // }
- // }
- // }
- // }
- // }
- //}
- //LMap[name] = l_no
- //
- ////2. 处理参保人数
- //socials, _ := Mgo.Find("annual_report_social_security", where, `{"_id":-1}`, nil, false, -1, -1)
- //socialData := *socials
- //if len(socialData) > 0 {
- // for _, da := range socialData {
- // if ia, ok := da["insurance_amount"]; ok && ia != nil {
- // if iaStr, ok := ia.(string); ok {
- // if strings.Contains(iaStr, "不公示") || iaStr == "" {
- // continue
- // } else {
- // can_no = strings.Replace(iaStr, "人", "", -1)
- // }
- // }
- // }
- // }
- //}
- //CMap[name] = can_no
- } else {
- f.SetCellValue(GF.Env.Sheet, fmt.Sprintf("D%v", i+1), LMap[name])
- f.SetCellValue(GF.Env.Sheet, fmt.Sprintf("C%v", i+1), CMap[name])
- }
- //2. 二级数据L2
- if len(rows[i]) >= 2 {
- name2 := strings.TrimSpace(dealName(rows[i][1]))
- base, _ := Mgo.FindOne("company_base", map[string]interface{}{"company_name": name2})
- baseInfo := *base
- if len(baseInfo) == 0 || baseInfo == nil {
- continue
- }
- company_id := util.ObjToString(baseInfo["company_id"])
- l_no, can_no := getQn(company_id, name2)
- f.SetCellValue(GF.Env.Sheet, fmt.Sprintf("F%v", i+1), l_no)
- f.SetCellValue(GF.Env.Sheet, fmt.Sprintf("E%v", i+1), can_no)
- }
- //LastL0 = name
- //base, _ := Mgo.FindOne("company_base", map[string]interface{}{"company_name": name})
- //baseInfo := *base
- //if len(baseInfo) == 0 || baseInfo == nil {
- // //f.SetCellValue("企业名单", fmt.Sprintf("B%v", i+1), "无")
- // continue
- //}
- //company_id := baseInfo["company_id"]
- //where := map[string]interface{}{
- // "company_id": company_id,
- //}
- }
- log.Println("over ------")
- }
- //getQn 获取企业人数,参保人数
- func getQn(company_id, name string) (string, string) {
- var member_no, employee_no, l_no, can_no string
- where := map[string]interface{}{
- "company_id": company_id,
- }
- reports, _ := Mgo.Find("annual_report_base", where, `{"_id":-1}`, nil, false, -1, -1)
- reportsData := *reports
- if len(reportsData) > 0 {
- for _, da := range reportsData {
- if mo, ok := da["member_no"]; ok && mo != nil {
- if moStr, ok := mo.(string); ok {
- member_no = strings.Replace(moStr, "人", "", -1)
- }
- }
- if eo, ok := da["employee_no"]; ok && eo != nil {
- if eoStr, ok := eo.(string); ok {
- employee_no = strings.Replace(eoStr, "人", "", -1)
- }
- }
- if member_no != "" && employee_no != "" {
- continue
- }
- if member_no != "" || employee_no != "" {
- if strings.Contains(member_no, "不公示") && strings.Contains(employee_no, "不公示") {
- continue
- } else {
- if strings.Contains(member_no, "不公示") {
- l_no = employee_no
- } else if strings.Contains(employee_no, "不公示") {
- l_no = member_no
- } else {
- if member_no == "" && employee_no != "" {
- l_no = employee_no
- } else if employee_no == "" && member_no != "" {
- l_no = member_no
- } else {
- if member_no > employee_no {
- l_no = employee_no
- } else {
- l_no = member_no
- }
- }
- break
- }
- }
- }
- }
- }
- LMap[name] = l_no
- //2. 处理参保人数
- socials, _ := Mgo.Find("annual_report_social_security", where, `{"_id":-1}`, nil, false, -1, -1)
- socialData := *socials
- if len(socialData) > 0 {
- for _, da := range socialData {
- if ia, ok := da["insurance_amount"]; ok && ia != nil {
- if iaStr, ok := ia.(string); ok {
- if strings.Contains(iaStr, "不公示") || iaStr == "" {
- continue
- } else {
- can_no = strings.Replace(iaStr, "人", "", -1)
- break
- }
- }
- }
- }
- }
- CMap[name] = can_no
- return l_no, can_no
- }
- //dealName 处理name
- func dealName(name string) string {
- if strings.ContainsAny(name, "()()") {
- name = strings.Replace(name, "(", "(", -1)
- name = strings.Replace(name, ")", ")", -1)
- }
- return name
- }
|