|
@@ -13,6 +13,7 @@ import (
|
|
|
orm2 "github.com/beego/beego/v2/client/orm"
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
|
"log"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
@@ -623,7 +624,7 @@ func TaskToTask_Stat(T Task, userMap, adminMap map[string]string) (T_ Task_Stat)
|
|
|
}
|
|
|
|
|
|
// ---------------- Redis -------------------
|
|
|
-// Redis_Set(m.T_sn,m) // Redis 更新缓存
|
|
|
+
|
|
|
func Redis_Task_Set(key string, r Task) (err error) {
|
|
|
//json序列化
|
|
|
str, err := json.Marshal(r)
|
|
@@ -637,10 +638,6 @@ func Redis_Task_Set(key string, r Task) (err error) {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
-// if r,is :=Redis_Get(T_sn);is{
|
|
|
-// return r,nil
|
|
|
-// }
|
|
|
func Redis_Task_Get(key string) (r Task, is bool) {
|
|
|
if redisCache_Task.IsExist(key) {
|
|
|
logs.Println("找到key:", key)
|
|
@@ -656,6 +653,25 @@ func Redis_Task_DelK(key string) (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+func Redis_Task_T_report_number_Set(key string) (err error) {
|
|
|
+ err = redisCache_Task.Put(key, "", 24*time.Hour)
|
|
|
+ if err != nil {
|
|
|
+ logs.Println("set key:", key)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+func Redis_Task_T_report_number_Get(key string) (is bool) {
|
|
|
+ if redisCache_Task.IsExist(key) {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ logs.Println("没有 找到key:", key)
|
|
|
+ return false
|
|
|
+}
|
|
|
+func Redis_Task_T_report_number_DelK(key string) (err error) {
|
|
|
+ err = redisCache_Task.Delete(key)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// ---------------- 特殊方法 -------------------
|
|
|
|
|
|
// 获取 ById
|
|
@@ -1144,3 +1160,63 @@ func Read_Task_List_For_ERP(T_reporting_pass_time string) ([]Task_, int) {
|
|
|
|
|
|
return TaskList, int(cnt)
|
|
|
}
|
|
|
+
|
|
|
+// GenerateNextT_report_number 生成下一个编号
|
|
|
+func GenerateNextT_report_number(T_device_type string) (string, error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+
|
|
|
+ // 获取当前年份和季度
|
|
|
+ currentYear := time.Now().Year()
|
|
|
+ currentQuarter := int(time.Now().Month()-1)/3 + 1 // 1,2,3,4 对应 A,B,C,D
|
|
|
+ quarterChar := string(rune('A' + currentQuarter - 1))
|
|
|
+ yearQuarter := fmt.Sprintf("%s%d%s", T_device_type, currentYear, quarterChar)
|
|
|
+ var lastRecord Task
|
|
|
+ err := o.QueryTable(new(Task)).
|
|
|
+ Filter("T_report_number__startswith", yearQuarter).
|
|
|
+ OrderBy("-T_report_number").
|
|
|
+ Limit(1).
|
|
|
+ One(&lastRecord)
|
|
|
+ if err != nil && err.Error() != orm.ErrNoRows.Error() {
|
|
|
+ return "", fmt.Errorf("报告编号-查询当前年季度最后编号失败: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 初始化新编号
|
|
|
+ var newSeq = 1
|
|
|
+
|
|
|
+ if lastRecord.T_report_number != "" {
|
|
|
+ // 提取序号部分,例如 "2025A00001" -> "00001"
|
|
|
+ lastSeqStr := lastRecord.T_report_number[len(lastRecord.T_report_number)-5:]
|
|
|
+ lastSeq, _ := strconv.Atoi(lastSeqStr)
|
|
|
+ newSeq = lastSeq + 1
|
|
|
+ }
|
|
|
+
|
|
|
+ var newCode string
|
|
|
+ for {
|
|
|
+ // 格式化新编号
|
|
|
+ newCode = fmt.Sprintf("%s%05d", yearQuarter, newSeq)
|
|
|
+ if Redis_Task_T_report_number_Get(newCode) {
|
|
|
+ newSeq += 1
|
|
|
+ } else {
|
|
|
+ err = Redis_Task_T_report_number_Set(newCode)
|
|
|
+ if err != nil {
|
|
|
+ return "", fmt.Errorf("报告编号-存入redis失败: %v", err)
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return newCode, nil
|
|
|
+}
|
|
|
+
|
|
|
+// 获取 By
|
|
|
+func Read_TaskbyT_report_number(T_report_number string) (r Task, is bool) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ qs := o.QueryTable(new(Task))
|
|
|
+ //err := qs.Filter("T_task_id", T_task_id).Filter("T_State", 1).One(&r)
|
|
|
+ err := qs.Filter("T_report_number", T_report_number).Filter("T_State", 1).One(&r)
|
|
|
+ if err != nil {
|
|
|
+ return r, false
|
|
|
+ }
|
|
|
+
|
|
|
+ return r, true
|
|
|
+}
|