utils.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503
  1. package main
  2. import (
  3. "encoding/json"
  4. "esindex/config"
  5. "fmt"
  6. "go.mongodb.org/mongo-driver/bson"
  7. "go.uber.org/zap"
  8. "jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
  9. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
  10. "jygit.jydev.jianyu360.cn/data_processing/common_utils/udp"
  11. "math"
  12. "net"
  13. "regexp"
  14. "sort"
  15. "strconv"
  16. "strings"
  17. "time"
  18. "unicode"
  19. "unicode/utf8"
  20. )
  21. //convertToMongoID convertToMongoID
  22. func convertToMongoID(query map[string]interface{}) map[string]interface{} {
  23. result := make(map[string]interface{})
  24. if query == nil {
  25. return result
  26. }
  27. idMap := query["_id"].(map[string]interface{})
  28. if idMap != nil {
  29. tmpQ := map[string]interface{}{}
  30. for c, id := range idMap {
  31. if idStr, ok := id.(string); ok && id != "" {
  32. tmpQ[c] = mongodb.StringTOBsonId(idStr)
  33. }
  34. }
  35. result["_id"] = tmpQ
  36. }
  37. return result
  38. }
  39. //StringSliceValuesEqual 判断切片相等
  40. func StringSliceValuesEqual(a, b []string) bool {
  41. if len(a) != len(b) {
  42. return false
  43. }
  44. sort.Strings(a)
  45. sort.Strings(b)
  46. for i := range a {
  47. if a[i] != b[i] {
  48. return false
  49. }
  50. }
  51. return true
  52. }
  53. //Float64SliceSum float64 数据求和
  54. func Float64SliceSum(nums []float64) float64 {
  55. sum := 0.0
  56. for _, num := range nums {
  57. sum += num
  58. }
  59. return sum
  60. }
  61. func Float64Equal1Precision(a, b float64) bool {
  62. return int(math.Round(a*10)) == int(math.Round(b*10))
  63. }
  64. //chargeType 判断mongo 字段类型和 es 字段类型相匹配
  65. func chargeType(ftype, etype string) bool {
  66. if ftype != "" {
  67. switch ftype {
  68. case "string":
  69. if etype == "keyword" || etype == "text" {
  70. return true
  71. } else {
  72. return false
  73. }
  74. case "bool":
  75. if etype == "boolean" {
  76. return true
  77. } else {
  78. return false
  79. }
  80. case "int64", "int32", "int":
  81. if etype == "long" || etype == "integer" {
  82. return true
  83. } else {
  84. return false
  85. }
  86. case "float64", "float32":
  87. if etype == "double" || etype == "float" {
  88. return true
  89. } else {
  90. return false
  91. }
  92. }
  93. }
  94. return false
  95. }
  96. //IsHanStart 判断字符串是否以汉字开头或者以字母开头
  97. func IsHanStart(s string) bool {
  98. if s == "" {
  99. return false
  100. }
  101. return unicode.Is(unicode.Scripts["Han"], []rune(s)[0]) || unicode.IsLetter([]rune(s)[0])
  102. }
  103. // 判断字符是否为汉字
  104. func IsHan(c rune) bool {
  105. return unicode.Is(unicode.Scripts["Han"], c)
  106. }
  107. // 判断公司名称是否以圆括号开头且括号内汉字开头
  108. func IsBracketStartWithHan(s string) bool {
  109. if len(s) == 0 || s[0] != '(' {
  110. return false
  111. }
  112. // 索引 i 和 j 分别是左右圆括号的位置,如果找不到右圆括号则返回 false
  113. i, j := 0, 0
  114. for j = i + 1; j < len(s); j++ {
  115. if s[j] == ')' {
  116. break
  117. }
  118. }
  119. if j >= len(s) {
  120. return false
  121. }
  122. // 检查圆括号内是否以汉字或字母开头
  123. bracketContent := s[i+1 : j]
  124. if len(bracketContent) == 0 || (!unicode.IsLetter(rune(bracketContent[0])) && !IsHan([]rune(bracketContent)[0])) {
  125. return false
  126. }
  127. return true
  128. }
  129. //IsCompanyName 判断字符串是否以汉字开头、以括号开头并且括号里面是汉字、以"公司"结尾,其中一个条件符合即返回true,否则返回false
  130. func IsCompanyName(s string) bool {
  131. r := []rune(s)
  132. //if len(r) >= 6 && (string(r[len(r)-6:]) == "有限公司" || string(r[len(r)-6:]) == "股份有限公司") {
  133. // return (IsHanStart(s) || IsBracketStartWithHan(s))
  134. //} else if len(r) >= 2 && string(r[len(r)-2:]) == "公司" {
  135. // return (IsHanStart(s) || IsBracketStartWithHan(s))
  136. //}
  137. if len(r) > 2 {
  138. return (IsHanStart(s) || IsBracketStartWithHan(s))
  139. }
  140. return false
  141. }
  142. //GetChineseCharacters 提取字符串中的汉字
  143. func GetChineseCharacters(s string) string {
  144. re := regexp.MustCompile(`[\p{Han}]+`)
  145. return re.FindString(s)
  146. }
  147. func getCompanyName(name string) string {
  148. if IsCompanyName(name) {
  149. return name
  150. }
  151. return GetChineseCharacters(name)
  152. }
  153. func IsUnicodeStart(s string) bool {
  154. if len(s) == 0 {
  155. return false
  156. }
  157. _, size := utf8.DecodeRuneInString(s)
  158. return size > 0
  159. }
  160. //RemoveDuplicateSuffix 去除字符串末尾的重复字词
  161. func RemoveDuplicateSuffix(str string, suffix string) string {
  162. // 构建正则表达式:^(.*?)(重复的结尾词)+$
  163. re := regexp.MustCompile(fmt.Sprintf(`^(.*?)(%s)+$`, suffix))
  164. matches := re.FindStringSubmatch(str)
  165. if len(matches) == 3 {
  166. return matches[1] + matches[2]
  167. }
  168. return str
  169. }
  170. func findName(name string) []map[string]interface{} {
  171. filter := bson.M{"name": name, "status": 1}
  172. info, _ := MgoB.Find("wcc_buyer", filter, nil, nil, false, -1, -1)
  173. return *info
  174. }
  175. func findNameID(id string) []map[string]interface{} {
  176. filter := bson.M{"name_id": id, "status": 1}
  177. info, _ := MgoB.Find("wcc_buyer", filter, nil, nil, false, -1, -1)
  178. return *info
  179. }
  180. //isStringRepeating 判断字符串内字符完全重复,例如:山东大学山东大学
  181. func isStringRepeating(str string) bool {
  182. for i := 0; i < len(str); i++ {
  183. for j := i + 1; j < len(str); j++ {
  184. if str[i] != str[j] {
  185. return false
  186. }
  187. }
  188. }
  189. return true
  190. }
  191. //IsInStringArray 判断数组中是否存在字符串
  192. func IsInStringArray(str string, arr []string) bool {
  193. // 先对字符串数组进行排序
  194. sort.Strings(arr)
  195. // 使用二分查找算法查找字符串
  196. pos := sort.SearchStrings(arr, str)
  197. // 如果找到了则返回 true,否则返回 false
  198. return pos < len(arr) && arr[pos] == str
  199. }
  200. //checkName 检查名称,不符合的返回false
  201. func checkName(name string) (res bool) {
  202. res = true
  203. faleNames := []string{"管理有限公司", "有限公司", "技术公司", "制水公司", "工程有限公司", "耐材公司", "检测公司", "某公司", "现对公司", "集装箱码头分公司", "质检分公司", "司公司", "供电分公司", "建设公司", "水城分公司", "工信公司", "棉纺公司", "安装公司", "管公司", "测试公司", "四公司", "电力分公司",
  204. "原平分公司", "兰州分公司", "基础设施公司", "陆丰分公司", "郴州分公司", "大渡口分公司", "汽车四分公司", "州大学", "开有限公司", "中小学幼儿园", "上级公司下级公司", "楼及幼儿园", "冷询有限公司", "市第一医院", "发展有阶公司", "楼及号地幼儿园", "第一幼儿园", "楼急救中心", "住宅楼及局", "号国际钻井公司", "管理委员会",
  205. "区地块幼儿园", "省人民政府", "具有国家铁路局", "住宅楼及幼儿园", "丿再生资源技术有限公司", "为保证医院", "网及灾备中心", "地块幼儿园", "求石油昆仑燃气限公司", "栋楼及幼儿园", "号固井压裂公司", "号吐哈钻井公司", "股为限公司", "住宅楼及社区服务中心", "井与分公司", "场监督管局", "为了保证本次政府",
  206. "人民政府东环街遂办事处", "龙湖区分公司", "澄海侨史馆", "中国移动科", "中国移动学院", "中国移动分公司"}
  207. for _, v := range faleNames {
  208. if name == v {
  209. res = false
  210. break
  211. }
  212. }
  213. if len([]rune(name)) < 6 {
  214. if strings.HasSuffix(name, "公司") {
  215. res = false
  216. } else if strings.HasSuffix(name, "办事处") {
  217. res = false
  218. } else if strings.HasSuffix(name, "分公司") {
  219. res = false
  220. } else if strings.HasSuffix(name, "管委会") {
  221. res = false
  222. } else if strings.HasSuffix(name, "支行") {
  223. res = false
  224. } else if strings.HasSuffix(name, "网络部") {
  225. res = false
  226. } else if strings.HasSuffix(name, "部队") {
  227. res = false
  228. } else if strings.HasSuffix(name, "医科大学") {
  229. res = false
  230. }
  231. }
  232. if len([]rune(name)) < 7 && strings.HasSuffix(name, "中医药大学") {
  233. res = false
  234. }
  235. if !TDName(name) {
  236. res = false
  237. }
  238. return
  239. }
  240. //TDName 根据开头、结尾、排除词,筛选名称,筛选不符合的数据
  241. func TDName(name string) (res bool) {
  242. res = true
  243. if isStringRepeating(name) { //重复数据,山东大学山东大学
  244. res = false
  245. log.Info("TDName", zap.String("isStringRepeating", name))
  246. return res
  247. }
  248. countWords := []string{"教育局", "学校", "大学", "中学", "审计局", "郑州局", "中医院", "部队", "有限公司"}
  249. //教育局出现二次
  250. for _, c := range countWords {
  251. if strings.Count(name, c) > 1 {
  252. res = false
  253. log.Info("TDName", zap.String("countWords", c), zap.String("name", name))
  254. return res
  255. }
  256. }
  257. //公司出现三次,错误
  258. if strings.Count(name, "公司") > 2 {
  259. res = false
  260. log.Info("TDName", zap.String("公司", "公司出现三次"))
  261. return res
  262. }
  263. //公司出现 二次,但是不是分公司
  264. if strings.Count(name, "公司") > 1 {
  265. if !strings.Contains(name, "分公司") && !strings.Contains(name, "子公司") && !strings.Contains(name, "市公司") {
  266. res = false
  267. log.Info("TDName", zap.String("公司", "公司出现二次,但没有分公司, 子公司"))
  268. return res
  269. }
  270. }
  271. //开头的单词
  272. preWords := []string{"取消", "转发", "省", "会议室", "某", "某单位", "某公司", "某学校", "测试", "某大学", "某医院", "拟建", "机械", "县", "市", "区", "巡察", "人民", "对", "楼", "家长", "春季", "于", "度", "初级中学", "州", "总部", "一号", "含", "育场", "选择", "第包", "医院",
  273. "共赢资产", "从", "实验中学", "公共", "乘用车", "部与", "一直", "一体化", "现对", "现为", "之", "份", "半坡", "下属", "程", "信息", "带", "工务", "技术", "于", "号", "辖属", "造", "计财", "实验", "原", "器械", "是", "师", "雨山区", "云城区", "阜涣", "公联", "批",
  274. "总承包", "姓市", "秋季学期", "哈巴河", "保险", "开发区", "尘设资", "团", "物业", "农村", "部", "东省", "于", "章", "董", "分局", "再", "微", "明", "建", "公司", "审计", "满足", "中学", "届", "大学", "按摩", "中心", "附属", "总", "教育局", "中学", "小学", "学院",
  275. "中医院", "人医院", "学校", "输", "十六", "有限", "节能", "二公司", "分公司", "子公司", "公司", "审计", "河河", "地公司", "六公司", "三公司", "十六公司", "节能",
  276. "股份", "运输公司", "堇", "家纺", "港区"}
  277. // 开头
  278. for _, word := range preWords {
  279. if strings.HasPrefix(name, word) {
  280. res = false
  281. log.Info("TDName", zap.String("preWords", word), zap.String("name", name))
  282. return res
  283. }
  284. }
  285. //结尾单词
  286. sufWords := []string{"市", "某单位", "某公司", "某学校", "测试", "某大学", "某医院", "地产鲨", "项目组", "研究", "公国司", "物资", "评估与医院", "年室", "招标", "设有", "复限公司", "服务", "有限责任", "罩套", "有阴公", "人队", "报告", "厕所", "污水处", "检查", "镇中心",
  287. "显微镜", "段", "现场局", "租赁", "镇", "市中心", "勐阿糖厂", "展厅", "等医院", "广场室", "水利顷", "市室", "交界处", "自助银行", "若源局", "布局", "联合体", "气室", "活动场", "包装公司", "投资", "有限", "等", "设备", "急件", "有限公司有限公司", "公司公司", "分公司分公司",
  288. "大学大学", "学院学院", "大学场", "学校室", "部队部队", "内部", "部分支公司"}
  289. //结尾
  290. for _, word := range sufWords {
  291. if strings.HasSuffix(name, word) {
  292. res = false
  293. log.Info("TDName", zap.String("sufWords", word), zap.String("name", name))
  294. return res
  295. }
  296. }
  297. //包含的单词
  298. falseWords := []string{"丿", "艹", "[ ", "【", "?", "亻", "#", "~", "^", "亻", "*", "$", "、", "/", "*", "<>", "[ ", "【", "?", "某", "病历系统", "不予", "薯公", "标段", "电压互感器", "我",
  299. "省道", "询比", "学校和幼儿园", "住宅", "询价", "办公区", "项目", "中旎髓细兴", "办么", "测试", "项目部", "飞地园", "购", "鉴定", "实验室", "车务段", "可测性设计", "手术室", "第二期", "退", "催促",
  300. "协议中", "影响", "工作", "动力厂", "干扰源", "指定", "达到", "控制器", "竞价", "人哥", "络络络", "路段", "示范区", "一般用", "采供", "修缮", "招标单位", "联系方式", "沟通", "配线架", "及配建",
  301. "任务", "分包", "其他", "行为", "中标人", "教室", "安置", "暂行", "建设单位", "选聘", "合同", "转发", "勿救", "既有", "装置", "任务", "开展", "依据", "指定", "试剂", "景观", "包件", "法人", "合格",
  302. "短管", "投标文件", "核实", "测汞仪", "黑名单", "制作类", "汇编", "收购", "拿", "丿", "艹", "关于", "要求", "举办", "显示所", "右阴公司", "发射", "加装", "复印纸", "终止", "生产处", "提供", "新建",
  303. "该项目", "安装", "造价", "改造", "样品", "课室", "水毁道路", "闲置资产", "#", "南校园", "扩建", "道路维修", "等所", "维稳中心", "异议", "音乐厅", "慰问", "介入", "改建", "即", "建设", "某单位",
  304. "医院医院", "中国电建中国电建", "建设建设", "建设规模", "满足", "郑州郑州", "学校学校", "&", ";", ";", "就医院", "酒医院", "至医院", "对", "所需", "提升", "提高", "学期", "学年", "规模", "必须",
  305. "建成", "各公司", "公司与公司", "公司的公司", "公司办公司", "养护"}
  306. // 包含
  307. for _, word := range falseWords {
  308. if strings.Contains(name, word) {
  309. res = false
  310. log.Info("TDName", zap.String("falseWords", word), zap.String("name", name))
  311. return res
  312. }
  313. }
  314. return
  315. }
  316. //ruleBuyer 判断采购单位正确,名称错误返回true,名称正确返回false
  317. func ruleBuyer(input string) (res bool) {
  318. //开头的单词
  319. preWords := []string{"转发", "省", "会议室", "某", "某单位", "某公司", "某学校", "测试", "某大学", "某医院", "拟建", "机械", "县", "市", "区", "巡察", "人民路", "对", "楼", "家长", "春季", "对", "度", "初级中学", "州", "总部", "一号", "含", "育场", "选择", "第包", "医院",
  320. "共赢资产", "从", "实验中学", "公共", "乘用车", "部与", "一直", "一体化", "现对", "现为", "之", "份", "半坡", "下属", "程", "信息", "带", "工务", "技术", "于", "号", "辖属", "造", "计财", "实验", "原", "器械", "是", "师", "雨山区", "云城区", "阜涣", "公联", "批",
  321. "总承包", "姓市", "秋季学期", "哈巴河", "保险", "开发区", "尘设资", "团", "物业", "农村", "部", "二", "后勤", "位于", "选定", "依法", "口", "代表", "这", "逝沮省", "上半年", "第一", "门市", "配套", "八月", "七月", "集回", "维修", "遴选", "但", "增加",
  322. "取消", "采购", "一直", "一体化", "现对", "现为", "之", "份", "取消", "转发", "省", "会议室", "某", "某单位", "某公司", "某学校", "测试", "某大学", "某医院", "拟建", "机械", "县", "市", "区", "巡察", "人民", "对", "楼", "家长", "春季", "于", "度", "初级中学", "州", "总部", "一号", "含", "育场", "选择", "第包", "医院",
  323. "共赢资产", "从", "实验中学", "公共", "乘用车", "部与", "一直", "一体化", "现对", "现为", "之", "份", "半坡", "下属", "程", "信息", "带", "工务", "技术", "于", "号", "辖属", "造", "计财", "实验", "原", "器械", "是", "师", "阜涣", "公联", "批",
  324. "总承包", "姓市", "秋季学期", "哈巴河", "保险", "开发区", "尘设资", "团", "物业", "农村", "部", "东省", "于", "章", "董", "分局", "再", "微", "明", "建", "公司", "审计", "满足", "中学", "届", "大学", "按摩", "中心", "附属", "总", "教育局", "中学", "小学", "学院",
  325. "中医院", "人医院", "学校", "输", "十六", "有限", "节能", "二公司", "分公司", "子公司", "公司", "审计", "河河", "地公司", "六公司", "三公司", "十六公司", "节能", "股份", "运输公司", "堇", "家纺", "港区", "检查"}
  326. //开头关键词
  327. for _, word := range preWords {
  328. if strings.HasPrefix(input, word) {
  329. res = true
  330. return res
  331. }
  332. }
  333. //结尾关键词
  334. suffixes := []string{"院院", "局局", "场场", "小学室", "和社", "人屡政府", "谈话室", "小区局", "今作社", "点场", "人昆政府",
  335. "年度室", "分行银行", "人政府", "人民矢院", "教学楼局", "笺理局", "地场", "人民唉院", "瞥理局", "所院", "农业衣村局",
  336. "民丢局", "委员会老干部", "办非处", "等支局", "监督站局", "停车库局", "检查员", "办直处", "进行局", "楼局", "等局", "人民政府社",
  337. "模块局", "人民政俯", "人民医标院", "农业农局", "园局", "规则局", "人乓政府", "人事条局", "箐理所", "在政府", "重点局", "大学入场",
  338. "入场", "发也站", "赘源局", "计划生育服务中心政府", "第一人民吹院", "有限公司室", "教标育局", "一民政府", "场部", "埋局", "大学大学",
  339. "分公司分公司", "医院医院", "测试", "公司", "市", "显微镜", "段", "现场局", "租赁"}
  340. for _, word := range suffixes {
  341. if strings.HasSuffix(input, word) {
  342. res = true
  343. return res
  344. }
  345. }
  346. //包含的关键词
  347. specials := []string{"丿", "艹", "[ ", "【", "?", "亻", "#", "~", "^", "亻", "*", "$", "、", "/", "*",
  348. "<>", "[ ", "【", "?", "某", "我", "第一轮", "第一次", "第一词", "第一季", "各学校", "第一批", "完全学校",
  349. "一致同意", "X", "保体障局", "人们政府", "上设局", "开发茎", "场场", "设保", "武鳖", "集回", "项日", "代理银行",
  350. "辽宁省省会", "菖处", "口国", "人民汰院", "肉州市", "火车站社", "自然资源和规局", "萎员会", "经济技术开发茎",
  351. "()", "()", "有限公司厂", "测试", "建设建设", "建设规模", "满足", "郑州郑州", "学校学校", "&", ";", ";",
  352. "就医院", "酒医院", "至医院", "对", "所需", "提升", "提高", "学期", "学年", "规模", "必须", "建成", "各公司",
  353. "养护", "拿", "艹", "关于", "要求", "举办", "显示所", "右阴公司", "发射", "加装", "扩建", "道路维修", "等所",
  354. "维稳中心", "异议", "任务", "分包", "其他", "行为", "中标人", "教室", "安置", "暂行", "选聘", "合同", "转发",
  355. "勿救", "既有", "装置", "开展", "依据", "指定", "一般用", "采供", "修缮", "招标单位", "联系方式", "沟通",
  356. "该项目", "安装", "造价", "改造", "样品", "课室", "水毁道路", "闲置资产", "某单位", "某公司", "某学校", "测试", "某大学", "某医院", "地产鲨", "项目组",
  357. "公国司", "物资", "评估与医院", "年室", "招标", "设有", "复限公司", "服务", "罩套", "有阴公", "人队", "报告",
  358. "显微镜", "现场局", "租赁", "镇", "市中心", "勐阿糖厂", "展厅", "等医院", "广场室", "水利顷", "市室", "交界处", "自助银行",
  359. "若源局", "布局", "联合体", "气室", "活动场", "包装公司", "投资", "有限", "等", "设备", "急件", "核实", "测汞仪", "黑名单", "制作类",
  360. "大学大学", "学院学院", "大学场", "学校室", "部队部队", "内部", "部分支公司", "短管", "投标文件", "汇编", "收购"}
  361. for _, v := range specials {
  362. if strings.Contains(input, v) {
  363. res = true
  364. return res
  365. }
  366. }
  367. return res
  368. }
  369. //SendUdpMsg 通知处理企业新增数据
  370. func SendUdpMsg(data map[string]interface{}, target *net.UDPAddr) {
  371. bytes, _ := json.Marshal(data)
  372. UdpClient.WriteUdp(bytes, udp.OP_TYPE_DATA, target)
  373. log.Info("SendUdpMsg", zap.Any("data", data), zap.Any("target", target))
  374. }
  375. //deletePreEsData 删除预处理索引数据
  376. func deletePreEsData(preId string) {
  377. now := time.Now()
  378. month := int(time.Now().Month())
  379. monthStr := strconv.Itoa(month)
  380. year := time.Now().Year()
  381. yearStr := strconv.Itoa(year)
  382. //当前处理索引名称
  383. preBiddingIndex := fmt.Sprintf("bidding_%s%s", yearStr, monthStr)
  384. lastIndex := ""
  385. //按小时创建
  386. if config.Conf.Env.SpecType == "hour" {
  387. preBiddingIndex = preBiddingIndex + strconv.Itoa(now.Day()) + strconv.Itoa(now.Hour())
  388. last := now.Add(-time.Hour)
  389. month2 := int(last.Month())
  390. monthStr2 := strconv.Itoa(month2)
  391. year2 := last.Year()
  392. yearStr2 := strconv.Itoa(year2)
  393. dayStr2 := strconv.Itoa(last.Day())
  394. //上个索引名称
  395. lastIndex = "bidding_" + yearStr2 + monthStr2
  396. lastIndex = lastIndex + dayStr2 + strconv.Itoa(last.Hour())
  397. } else if config.Conf.Env.SpecType == "day" {
  398. //按天创建
  399. preBiddingIndex = preBiddingIndex + strconv.Itoa(time.Now().Day())
  400. last := now.AddDate(0, 0, -1)
  401. month2 := int(last.Month())
  402. monthStr2 := strconv.Itoa(month2)
  403. year2 := last.Year()
  404. yearStr2 := strconv.Itoa(year2)
  405. dayStr2 := strconv.Itoa(last.Day())
  406. //上个索引名称
  407. lastIndex = "bidding_" + yearStr2 + monthStr2
  408. lastIndex = lastIndex + dayStr2
  409. } else if config.Conf.Env.SpecType == "month" {
  410. // 月份;
  411. last := now.AddDate(0, -1, 0)
  412. month2 := int(last.Month())
  413. monthStr2 := strconv.Itoa(month2)
  414. year2 := last.Year()
  415. yearStr2 := strconv.Itoa(year2)
  416. //上个索引名称
  417. lastIndex = "bidding_" + yearStr2 + monthStr2
  418. }
  419. //删除预处理 索引数据
  420. if len(PreEs) == 0 {
  421. time.Sleep(time.Second)
  422. }
  423. for _, client := range PreEs {
  424. if client == nil {
  425. continue
  426. }
  427. // 老索引有数据
  428. if client.Count(lastIndex, nil) > 0 {
  429. err := client.DeleteByID(lastIndex, preId)
  430. if err != nil {
  431. fmt.Println("deletePreEsData: ", preId, err)
  432. }
  433. }
  434. err := client.DeleteByID(preBiddingIndex, preId)
  435. if err != nil {
  436. fmt.Println("deletePreEsData: ", preId, err)
  437. }
  438. }
  439. }