数据分析平台 定期检查记录抓取

This commit is contained in:
jh_peng 2024-12-17 10:29:04 +08:00
parent dcfe86989d
commit cf166c9d8e
2 changed files with 102 additions and 1 deletions

View File

@ -30,6 +30,21 @@ func InitCronListCron() {
c.Start() c.Start()
} }
func InitCronCheckListCron() {
c := cron.New(cron.WithChain(cron.SkipIfStillRunning(cron.DefaultLogger)))
//_, err := c.AddFunc("0 */1 * * *", func() {
_, err := c.AddFunc("0 0 */1 * *", func() {
fmt.Println(carbon.Now().Format("Y-m-d H:i:s") + "CronCheckListCron start")
test_data.CronCheckCPList()
fmt.Println(carbon.Now().Format("Y-m-d H:i:s") + "CronCheckListCron finish")
})
if err != nil {
global.Log.Errorf("InitCronCheckListCron AddFunc error: %s", err)
log.Fatalln(err)
}
c.Start()
}
func InitEmailCron() { func InitEmailCron() {
c := cron.New(cron.WithChain(cron.SkipIfStillRunning(cron.DefaultLogger))) c := cron.New(cron.WithChain(cron.SkipIfStillRunning(cron.DefaultLogger)))
//_, err := c.AddFunc("0 */1 * * *", func() { //_, err := c.AddFunc("0 */1 * * *", func() {

View File

@ -679,8 +679,8 @@ func CronBPList() {
} }
func CronCPList() { func CronCPList() {
var oldTcSfcFile []*model.TcSfcFile
var cpListIDs []string var cpListIDs []string
var oldTcSfcFile []*model.TcSfcFile
global.PostGreSQL.Model(&model.CPList{}).Where("status = ?", "未结案"). global.PostGreSQL.Model(&model.CPList{}).Where("status = ?", "未结案").
Select("pbi").Group("pbi").Find(&cpListIDs) Select("pbi").Group("pbi").Find(&cpListIDs)
_ = global.Oracle.Transaction(func(tx *gorm.DB) error { _ = global.Oracle.Transaction(func(tx *gorm.DB) error {
@ -867,6 +867,92 @@ func CronCPList() {
} }
} }
func CronCheckCPList() {
var cpListIDs []string
var oldTcSfcFile []*model.TcSfcFile
global.PostGreSQL.Model(&model.CPList{}).Where("status = ? AND online_quantity != ?", "结案", 0).
Select("pbi").Group("pbi").Find(&cpListIDs)
_ = global.Oracle.Transaction(func(tx *gorm.DB) error {
page := len(cpListIDs)/200 + 1
for i := 0; i < page; i++ {
var pageTcSfcFile []*model.TcSfcFile
var s []string
if i == page-1 {
s = cpListIDs[i*200:]
} else {
s = cpListIDs[i*200 : (i+1)*200]
}
tx.Where("tc_sfc01 IN ? AND tc_sfc08 = ?", s, "CP").
Preload("TcSfdFile", func(db *gorm.DB) *gorm.DB {
return db.Preload("SfbFile").Preload("ImaFile").Preload("TcImbFile").Preload("RvbFile", func(db *gorm.DB) *gorm.DB {
return db.Preload("IddFile").Preload("RvaFile")
})
}).Preload("TcSfeFile", func(db *gorm.DB) *gorm.DB {
return db.Preload("ImaFile")
}).
Preload("PmcFile").Find(&pageTcSfcFile)
oldTcSfcFile = append(oldTcSfcFile, pageTcSfcFile...)
}
return nil
})
for _, tcSfc := range oldTcSfcFile {
for _, tcSfd := range tcSfc.TcSfdFile {
if tcSfd.TcSfd13 == "" {
continue
}
status := "未结案"
if tcSfd.SfbFile.Sfb04 == "8" {
status = "结案"
} else if tcSfd.SfbFile.Sfb04 == "0" {
continue
}
var returnQuantity, dieQuantity float64
orderDateStockMap := make(map[string][]float64)
for _, rvb := range tcSfd.RvbFile {
if _, ok := orderDateStockMap[rvb.RvaFile.Rva06.Format("2006-01-02")]; !ok {
orderDateStockMap[rvb.RvaFile.Rva06.Format("2006-01-02")] = []float64{0, 0}
}
returnQuantity += rvb.Rvb30
dieQuantity += rvb.Rvb85
orderDateStockMap[rvb.RvaFile.Rva06.Format("2006-01-02")][0] += rvb.Rvb30
orderDateStockMap[rvb.RvaFile.Rva06.Format("2006-01-02")][1] += rvb.Rvb85
}
var cpList *model.CPList
global.PostGreSQL.Where("pbi = ? AND outsourcing_pbi = ?",
tcSfc.TcSfc01, tcSfd.TcSfd13).Find(&cpList)
global.PostGreSQL.Transaction(func(tx *gorm.DB) error {
global.PostGreSQL.Model(&cpList).Where("pbi = ? AND outsourcing_pbi = ?",
tcSfc.TcSfc01, tcSfd.TcSfd13).Updates(map[string]interface{}{
"status": status,
"online_quantity": tcSfd.TcSfd05 - returnQuantity,
"return_quantity": returnQuantity,
"die_quantity": dieQuantity,
})
for k, v := range orderDateStockMap {
var cpListStock *model.CPListStock
if errors.Is(global.PostGreSQL.Where("cp_list_id = ? AND return_date = ?", cpList.ID, k).
First(&cpListStock).Error, gorm.ErrRecordNotFound) {
global.PostGreSQL.Create(&model.CPListStock{
CPListID: cpList.ID,
ReturnDate: k,
Quantity: v[0],
DieQuantity: v[1],
})
} else {
global.PostGreSQL.Model(&cpListStock).Where("cp_list_id = ? AND return_date = ?", cpList.ID, k).
Updates(map[string]interface{}{
"quantity": v[0],
"die_quantity": v[1],
})
}
}
return nil
})
}
}
}
func CronFTList() { func CronFTList() {
var oldTcSfcFile []*model.TcSfcFile var oldTcSfcFile []*model.TcSfcFile
var ftListIDs []string var ftListIDs []string