123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- package service
- import (
- "fmt"
- "strconv"
- "time"
- "gorm.io/gorm"
- "kpt.xdmy/pkg/util"
- log "github.com/sirupsen/logrus"
- "github.com/xuri/excelize/v2"
- )
- func PartBatch() (count int, e error) {
- nch = make(chan error, 10)
- r, e := s.d.DB.Raw(`select id FROM parts WHERE issync = 0 and statue = 1 `).Rows()
- defer r.Close()
- if e != nil {
- fmt.Print(e)
- return 0, e
- }
- var id string
- for r.Next() {
- r.Scan(&id)
- easBillSync(id)
- if e = <-nch; e != nil {
- fmt.Print(e)
- } else {
- count++
- }
- }
- return count, nil
- }
- func easBillSync(id string) {
- e := util.EASBillSync(5, id, "1")
- nch <- e
- }
- var parchan chan *gorm.DB
- func (s *Service) PartUpdate() {
- parchan = make(chan *gorm.DB, 10)
- // f, e := excelize.OpenFile("/Users/desire/Documents/partcode.xlsx")
- f, e := excelize.OpenFile("partcode.xlsx")
- if e != nil {
- log.Error("excle open :%d", e)
- }
- defer func() {
- // Close the spreadsheet.
- if err := f.Close(); err != nil {
- fmt.Println(err)
- }
- }()
- sheet := []string{"Sheet1", "Sheet2"}
- // var s []string
- for _, name := range sheet {
- rows, err := f.GetRows(name)
- if err != nil {
- fmt.Println(err)
- return
- }
- fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
- value := ""
- for i, row := range rows {
- if i == 0 {
- value += fmt.Sprintf("('%s', '%s','%s',%s)", row[0], row[1], row[2], row[3])
- } else {
- value += fmt.Sprintf(",('%s', '%s','%s',%s)", row[0], row[1], row[2], row[3])
- }
- }
- iusql := fmt.Sprintf(`insert into parts (partcode ,new_partcode,unit,issave) values %s
- on DUPLICATE KEY UPDATE new_partcode=values(new_partcode) ,unit=values(unit),issave=values(issave) `, value)
- if r := s.d.DB.Exec(iusql); r.Error != nil {
- fmt.Printf("insert part_Data: %v\n", r.Error)
- return
- } else {
- fmt.Printf("insert part_Data success!:%d\n", r.RowsAffected)
- }
- fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) PartInsert() {
- // f, e := excelize.OpenFile("/Users/desire/Downloads/part_insert.xlsx")
- f, e := excelize.OpenFile("part_insert.xlsx")
- if e != nil {
- log.Error("excle open :%d", e)
- }
- defer func() {
- if err := f.Close(); err != nil {
- fmt.Println(err)
- }
- }()
- slist := f.GetSheetList()
- log.Infof("%v", slist)
- // sheet := "Sheet1"
- rows, err := f.GetRows(slist[0])
- if err != nil {
- fmt.Println(err)
- return
- }
- value := ""
- for i, row := range rows {
- // if i > 3550 {
- // continue
- // }
- if i == 0 {
- value += fmt.Sprintf("('%s', '%s','%s','%s')", row[0], row[1], row[2], row[3])
- } else {
- value += fmt.Sprintf(",('%s', '%s','%s','%s')", row[0], row[1], row[2], row[3])
- }
- }
- iusql := fmt.Sprintf(`insert into parts (partcode ,name,specification,unit) values %s
- on DUPLICATE KEY UPDATE partcode=values(partcode) ,name=values(name),specification=values(specification),
- unit=values(unit)`, value)
- if r := s.d.DB.Exec(iusql); r.Error != nil {
- fmt.Printf("insert parts: %v\n", r.Error)
- return
- } else {
- fmt.Printf("insert parts success!:%d\n", r.RowsAffected)
- }
- }
- func (s *Service) RepertoryUpdate() {
- f, e := excelize.OpenFile("repertory.xlsx")
- // f, e := excelize.OpenFile("/Users/desire/Documents/repertory.xlsx")
- if e != nil {
- log.Errorf("excle open :%d", e)
- }
- defer func() {
- if err := f.Close(); err != nil {
- fmt.Println(err)
- }
- }()
- rows, e := f.GetRows("SheetJS")
- if e != nil {
- fmt.Println(e)
- return
- }
- sql := "call insertRepertory(?,?,?,?,?,?,?,?,?,?,?)"
- var sum, count, suc int
- for _, row := range rows[1:2] {
- sum++
- var e error
- // var msg, msg2 string
- // scan := new(sqlScan)
- var res interface{}
- var storage, price float64
- if storage, e = strconv.ParseFloat(row[6], 64); e != nil {
- log.Errorf("failed to parse storage:%s , e:%v", row[6], e)
- continue
- }
- if price, e = strconv.ParseFloat(row[7], 64); e != nil {
- log.Errorf("failed to parse price:%s , e:%v", row[7], e)
- continue
- }
- if r := s.d.DB.Raw(sql, row[0], row[1], row[2], row[3], row[4], storage, price, row[7], row[8], row[9], "00611"); r.Error != nil {
- log.Errorf("exec :%v", r.Error)
- } else {
- count++
- // r.Row().Scan(&msg, &msg2)
- r.Row().Scan(&res)
- // r.Row().Scan(scan)
- log.Infof("res:%s", res)
- // if msg == "success" {
- // suc++
- // } else {
- // log.Infoln(msg)
- // }
- }
- }
- log.Infoln(suc, count, sum)
- }
- type sqlScan struct {
- msg string
- id string
- contractid string
- }
|