Commit 592de3c0 by huangchengyi

1.0

parent b7d67be7
...@@ -47,7 +47,7 @@ func main() { ...@@ -47,7 +47,7 @@ func main() {
switch mod{ switch mod{
case 35: //计算逾期率 case 35: //计算逾期率
fmt.Println("计算逾期率开始:"+time.Now().Format("2006-01-02 15:04:05")) fmt.Println("计算逾期率开始:"+time.Now().Format("2006-01-02 15:04:05"))
svc.CountYuqi(ctx,mod); svc.CountYuqi(ctx,mod,"");
default: default:
fmt.Println(mod) fmt.Println(mod)
//实例化所有 //实例化所有
......
...@@ -34,7 +34,7 @@ type ( ...@@ -34,7 +34,7 @@ type (
GetCompanyAddSoreByCid(c context.Context, companyId int64) (r []map[string]string, err error) GetCompanyAddSoreByCid(c context.Context, companyId int64) (r []map[string]string, err error)
//---静态结束 //---静态结束
CountYuqi(ctx context.Context,project_id int) (r []map[string]interface{},err error) //计算逾期 CountYuqi(ctx context.Context,project_id int,erp_company_code string) (r []map[string]interface{},err error) //计算逾期
} }
) )
......
...@@ -3,46 +3,46 @@ package dao ...@@ -3,46 +3,46 @@ package dao
import ( import (
"context" "context"
"fmt" "fmt"
//"github.com/bilibili/kratos/pkg/database/sql"
//"github.com/pkg/errors"
//"strconv"
//"os"
//"strconv"
//"strconv"
"os" "os"
//"strconv"
// "time"
"kaopu-server/internal/model" "kaopu-server/internal/model"
"kaopu-server/internal/logic"
"strconv" "strconv"
) )
const ( const (
_sql1= "select m.full_score,m.weight,m.max_score,p.id,p.pid from lie_model m,lie_project p where m.project_id=p.id and p.id=%s" //查询项目配置 _sql1= "select m.full_score,m.weight,m.max_score,p.id,p.pid from lie_model m,lie_project p where m.project_id=p.id and p.id=%s" //查询项目配置
_sql2 = "select erp_company_code,company_name from lie_com_credits order by id asc " //查询公司所有信息 _sql2_1 = "select id,erp_company_code,company_name from lie_com_credits order by id asc " //查询公司所有信息
_sql2_2 = "select id,erp_company_code,company_name from lie_com_credits where erp_company_code = '%s' order by id asc " //查询公司所有信息
_sql3 = "select sum(delay_amount)/sum(order_amount) yuqilv from lie_basic_detail where erp_company_code='%s' " //基础数据 _sql3 = "select sum(delay_amount)/sum(order_amount) yuqilv from lie_basic_detail where erp_company_code='%s' " //基础数据
_sql4 = "select project_id,ladder_range_min,ladder_range_max from lie_model_items where project_id=%s " //查询统计项目梯度详情 _sql4 = "select * from lie_model_items where project_id=%s " //查询统计项目梯度详情
//_sql5 = "INSERT INTO lie_scores(type,project_pid,project_id,com_credits_id,total_score,current_score,weight,final_score,create_time,update_time) VALUES %s" //计算结果
) )
//计算逾期金额率:延期支付时间超过平均账期的金额/收款总额: //计算逾期金额率:延期支付时间超过平均账期的金额/收款总额:
func (d *dao) CountYuqi(ctx context.Context,project_id_c int) (r []map[string]interface{},err error) { func (d *dao) CountYuqi(ctx context.Context,project_id_c int,erp_company_code string) (r []map[string]interface{},err error) {
var ( var (
yuqilv,weight,ladder_range_min,ladder_range_max,final_score,scores_float float64 //计算逾期率 final_score float64
score_one string; //分数 score_one float64 =0; //分数
_sql2 string; //
) )
//查询逾期率项目配置 //查询逾期率项目配置
sql_str1 := fmt.Sprintf(_sql1,strconv.Itoa(project_id_c)) sql_str1 := fmt.Sprintf(_sql1,strconv.Itoa(project_id_c))
yuqilv_project,err := d.QueryOne(ctx,1,sql_str1) yuqilv_project,err := d.QueryOne(ctx,1,sql_str1)
weight,_ = strconv.ParseFloat(yuqilv_project["weight"],64) weight,_ := strconv.ParseFloat(yuqilv_project["weight"],64)
//查询逾期率项目详情 //查询逾期率项目详情
sql_str4 := fmt.Sprintf(_sql4,strconv.Itoa(project_id_c)) sql_str4 := fmt.Sprintf(_sql4,strconv.Itoa(project_id_c))
modelItems,err := d.QueryMany(ctx,1,sql_str4) modelItems,err := d.QueryMany(ctx,1,sql_str4)
fmt.Print(sql_str4,modelItems) //fmt.Print(sql_str4,modelItems)
//查询当前申请的所有公司 //查询当前申请的所有公司
if erp_company_code == "" {
_sql2 = _sql2_1
}else {
_sql2 =fmt.Sprintf(_sql2_2,erp_company_code) //查询一个公司
}
company_info,err := d.QueryMany(ctx,1,_sql2); company_info,err := d.QueryMany(ctx,1,_sql2);
if err != nil { if err != nil {
fmt.Println("\r\nerror:1004",err) fmt.Println("\r\nerror:1004",err)
...@@ -53,60 +53,51 @@ func (d *dao) CountYuqi(ctx context.Context,project_id_c int) (r []map[string]in ...@@ -53,60 +53,51 @@ func (d *dao) CountYuqi(ctx context.Context,project_id_c int) (r []map[string]in
if v["erp_company_code"] != "" { if v["erp_company_code"] != "" {
//查询逾期率 //查询逾期率
sql3 := fmt.Sprintf(_sql3,v["erp_company_code"]) sql3 := fmt.Sprintf(_sql3,v["erp_company_code"])
fmt.Print("\r\n查询sql:"+sql3) //fmt.Print("\r\n查询sql:"+sql3)
oneyu,_ := d.QueryOne(ctx,2,sql3) oneyu,_ := d.QueryOne(ctx,2,sql3)
if oneyu == nil { //没有结果 if oneyu == nil { //没有结果
fmt.Print("\r\n公司编码:"+v["erp_company_code"]+"逾期金额率为空,跳过") fmt.Print("\r\n公司编码:"+v["erp_company_code"]+"逾期金额率为空,跳过")
continue continue
} }
fmt.Print("\r\n公司编码:"+v["erp_company_code"]+"逾期金额率为:"+oneyu["yuqilv"]) fmt.Print("\r\n公司编码:"+v["erp_company_code"]+"逾期金额率为:"+oneyu["yuqilv"])
//查询逾期率对应分数 //查询逾期率对应分数
yuqilv,_= strconv.ParseFloat(oneyu["yuqilv"],64) yuqilv,_ := strconv.ParseFloat(oneyu["yuqilv"],64)
for _,y := range modelItems{ for _,y := range modelItems{
ladder_range_min,_= strconv.ParseFloat(y["ladder_range_min"],64) ladder_range_min,_ := strconv.ParseFloat(y["ladder_range_min"],64) //0.1
ladder_range_max,_= strconv.ParseFloat(y["ladder_range_max"],64) ladder_range_max,_ := strconv.ParseFloat(y["ladder_range_max"],64)
if ladder_range_max < yuqilv && ladder_range_min >= yuqilv { fmt.Print("\r\n\r\n :",ladder_range_min,ladder_range_max,0.2)
score_one = y["score"] //得到的分数 if (ladder_range_min <= yuqilv && yuqilv < ladder_range_max) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
} }
} }
fmt.Print("\r\n\r\n score_one:",score_one)
//拼接最终得分 //拼接最终得分
scores_float,_ = strconv.ParseFloat(score_one,64) final_score = weight*0.01*score_one
final_score = weight*0.01*scores_float
var scores model.Scores //插入分数结构体 var scores model.Scores //插入分数结构体
scores.Type=2; scores.Type=2;
//scores.ProjectPid = int8(ss); scores.ProjectPid = logic.MyInt8(yuqilv_project["pid"]);
//scores.ProjectId ,_ = strconv.ParseInt(yuqilv_project["id"],10,8); scores.ProjectId = logic.MyInt8(yuqilv_project["id"]);
//scores.TotalScore,_ = strconv.ParseFloat(score_one,32); scores.TotalScore = score_one;
//scores.CurrentScore,_ = strconv.ParseFloat(score_one,32); scores.CurrentScore = score_one;
//scores.Weight= weight; scores.Weight= weight;
//scores.FinalScore = fmt.Sprintf("%8.7f", final_score); scores.FinalScore = final_score;
//scores.ComCreditsId,_ = strconv.ParseInt(v["id"],10,64); scores.ComCreditsId = logic.MyInt64(v["id"]);
fmt.Print(scores) fmt.Print("\r\n\r\n 结构体:",score_one)
insertid,err := d.InsertScores(ctx,scores) insertid,err := d.InsertScores(ctx,scores)
if err != nil { if err != nil {
fmt.Print(err,insertid) fmt.Print(err,insertid)
} }
fmt.Print(scores,weight,final_score) //fmt.Print(scores,weight,final_score)
//
//fmt.Print(yuqilv_project)
//var temp_str string = "(2,"+yuqilv_project["pid"]+","+yuqilv_project["id"]+","+v["id"]+","+scores+","+scores+","+yuqilv_project["weight"]+","+str2+","+now_time+","+now_time+")";
//sql5 := fmt.Sprintf(_sql5,temp_str)
//if _, err = d.db.Exec(ctx, sql5); err != nil {
// fmt.Print("\r\n\r\n插入最终分数失败:"+sql5,err)
//}
os.Exit(1)
} }
} }
fmt.Println(company_info)
os.Exit(1) os.Exit(1)
return return
} }
......
...@@ -31,10 +31,31 @@ import ( ...@@ -31,10 +31,31 @@ import (
"unicode" "unicode"
"unicode/utf8" "unicode/utf8"
) )
////////////类型转换(字符串转数字)/////////////////////
func MyInt8(str string) int8 {
res,_ := strconv.ParseInt(str,10,64)
return int8(res)
}
func MyInt16(str string) int16 {
res,_ := strconv.ParseInt(str,10,64)
return int16(res)
}
func MyInt64(str string) int64 {
res,_ := strconv.ParseInt(str,10,64)
return int64(res)
}
func MyFloat32(str string) float32 {
res,_ := strconv.ParseFloat(str,64)
return float32(res)
}
func MyFloat64(str string) float64 {
res,_ := strconv.ParseFloat(str,64)
return float64(res)
}
//////////// Date/Time Functions //////////// //////////// Date/Time Functions ////////////
// Time time() // Time time()
func getTimeStamp()(timestamp int64) { func GetTimeStamp()(timestamp int64) {
return time.Now().Unix() return time.Now().Unix()
} }
......
...@@ -9,8 +9,8 @@ import ( ...@@ -9,8 +9,8 @@ import (
) )
//计算逾期率 //计算逾期率
func (s *Service) CountYuqi(ctx context.Context,project_id int) (res []map[string]interface{}, err error) { func (s *Service) CountYuqi(ctx context.Context,project_id int,erp_company_code string) (res []map[string]interface{}, err error) {
res, err = s.dao.CountYuqi(ctx,project_id) res, err = s.dao.CountYuqi(ctx,project_id,erp_company_code)
fmt.Print(err) fmt.Print(err)
return return
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment