package services import ( "easydo-echo_win7/models" "fmt" "time" "github.com/jmoiron/sqlx" ) func GetFlowNo(flow_type string, tenant_id string, conn ...*sqlx.Tx) (string, error) { flow_no := new(models.FlowNo) flow_no.Type = &flow_type flow_no.TenantId = &tenant_id if len(conn) > 0 { tx := conn[0] err := JdbcClient.GetJdbcModel(flow_no, tx) if err != nil { return "", fmt.Errorf("SQL执行失败: %v", err) } } else { err := JdbcClient.GetJdbcModel(flow_no) if err != nil { return "", fmt.Errorf("SQL执行失败: %v", err) } } // 获取当前时间 now := time.Now() // 格式化日期 currDate := now.Format("2006-01-02") currDate2 := now.Format("20060102") var no string // 判断是否需要重置序列号(新的一天) if flow_no.CurrDate == nil || len(*flow_no.CurrDate) == 0 || (len(*flow_no.CurrDate) > 0 && *flow_no.CurrDate != currDate) { flow_no.CurrDate = &currDate *flow_no.CurrSeq = 1 } else { *flow_no.CurrSeq = *flow_no.CurrSeq + 1 } // 生成流水号 if len(*flow_no.CurrDate) == 0 { // 没有日期的情况,使用6位序列号 currSeq := fmt.Sprintf("%06d", *flow_no.CurrSeq) no = *flow_no.Prefix + currSeq } else { // 有日期的情况,使用5位序列号 currSeq := fmt.Sprintf("%05d", *flow_no.CurrSeq) no = *flow_no.Prefix + currDate2 + currSeq } flow_no.CurrNo = &no paramMap := map[string]interface{}{ "type": flow_type, } if len(conn) > 0 { tx := conn[0] err := JdbcClient.JdbcUpdate(flow_no, paramMap, tx) if err != nil { return "", fmt.Errorf("SQL执行失败: %v", err) } } else { err := JdbcClient.JdbcUpdate(flow_no, paramMap) if err != nil { return "", fmt.Errorf("SQL执行失败: %v", err) } } return no, nil }