Commit d3916a31 by Joneq

Merge branch 'dev' of http://119.23.72.7/sunlong_v5/kaopu-server into dev

parents eb637bb9 dfa8dfa2
...@@ -43,16 +43,9 @@ type ( ...@@ -43,16 +43,9 @@ type (
//---动态开始 //---动态开始
DongMain(ctx context.Context,project_id int,erp_company_code string) (r []map[string]interface{},err error) //动态模型调用主函数 DongMain(ctx context.Context,project_id int,erp_company_code string) (r []map[string]interface{},err error) //动态模型调用主函数
//1 计算逾期金额率 ,ladder_rate 计算出来的此算法对应梯度率,ladder_score 梯度对应的分数 InsertScores2(ctx context.Context, score model.Scores,month_six_zi int64) (insertId int64, err error) //插入分数
DongYuqiRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int ) (ladder_rate string,ladder_score float64,err error) DongRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int,month_six string ) (ladder_rate float64,ladder_score float64,remark string,err error)
DongYuqiBi(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int ) (ladder_rate string,ladder_score float64,err error)//2 发生逾期笔数率 DongAddScore(ctx context.Context,com_credits_id int64,month_six_zi string )(affectNum int64) //统计动态分数,更新到每个公司
DongYuqiDivDay(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int ) (ladder_rate string,ladder_score float64,err error)//3 平均逾期支付时间
DongDivPayDay(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int ) (ladder_rate string,ladder_score float64,err error)//4 平均付款时间
DongNormalPayRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int ) (ladder_rate string,ladder_score float64,err error)//5 正常收款金额率
DongNormalPayBi(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int ) (ladder_rate string,ladder_score float64,err error)//6 正常收款笔数率
DongInTimeRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int ) (ladder_rate string,ladder_score float64,err error)//8 交货及时率
DongReturnRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int ) (ladder_rate string,ladder_score float64,err error)//9 退货率
DongAddScore(ctx context.Context,com_credits_id int64)(affectNum int64) //统计动态分数,更新到每个公司
//---动态结束 //---动态结束
} }
) )
......
...@@ -6,13 +6,16 @@ import ( ...@@ -6,13 +6,16 @@ import (
"kaopu-server/internal/logic" "kaopu-server/internal/logic"
"kaopu-server/internal/model" "kaopu-server/internal/model"
"strconv" "strconv"
"strings"
"time"
) )
//存放动态模型所有常量 //存放动态模型所有常量
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_1 = "select id,erp_company_code,company_name from lie_com_credits where status=5 order by id asc " //查询公司所有信息 _sql2_1 = "select id,erp_company_code,company_name from lie_com_credits where status>=5 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 " //查询单个公司所有信息 _sql2_2 = "select id,erp_company_code,company_name from lie_com_credits where erp_company_code = '%s' order by id asc " //查询单个公司所有信息
_sql3 = "select * from lie_model_items where project_id=%s " //查询统计项目梯度详情
) )
//项目对应的id //项目对应的id
...@@ -29,6 +32,7 @@ var Model_dong = map[int]string{ ...@@ -29,6 +32,7 @@ var Model_dong = map[int]string{
43:"退货率", 43:"退货率",
44:"近6个月逾期变化率", 44:"近6个月逾期变化率",
45:"近6个月参保人数变化率", 45:"近6个月参保人数变化率",
48:"账期使用程度倍数",
999:"累计动态分数", 999:"累计动态分数",
-1:"队列监听", -1:"队列监听",
} }
...@@ -50,9 +54,12 @@ var Model_dong_log = map[int]string{ ...@@ -50,9 +54,12 @@ var Model_dong_log = map[int]string{
func (d *dao) DongMain(ctx context.Context,project_id int,erp_company_code string) (r []map[string]interface{},err error) { func (d *dao) DongMain(ctx context.Context,project_id int,erp_company_code string) (r []map[string]interface{},err error) {
var ( var (
weight float64 //权重 weight float64 //权重
ladder_rate string //计算出来的各个动态分数率 month_six string //拼接6个月字符串,sql用
ladder_score float64 =0; //对应梯度分数 month_six_zi string //拼接6个月字符串,日期自动用
_sql2 string; //查询公司信息sql ladder_rate float64 //计算出来的各个动态分数率
ladder_score float64 =0 //对应梯度分数
_sql2 string //查询公司信息sql
remark string //备注
mod_name string = Model_dong[project_id] //统计动态模型名称 mod_name string = Model_dong[project_id] //统计动态模型名称
log_pre string = Model_dong_log[project_id] //日志文件名称 log_pre string = Model_dong_log[project_id] //日志文件名称
modelItem map[string]string //配置主表 modelItem map[string]string //配置主表
...@@ -70,7 +77,7 @@ func (d *dao) DongMain(ctx context.Context,project_id int,erp_company_code strin ...@@ -70,7 +77,7 @@ func (d *dao) DongMain(ctx context.Context,project_id int,erp_company_code strin
weight,_ = strconv.ParseFloat(modelItem["weight"],64) weight,_ = strconv.ParseFloat(modelItem["weight"],64)
//查询逾期率项目详情 //查询逾期率项目详情
sql_str4 := fmt.Sprintf(_sql4,strconv.Itoa(project_id)) sql_str4 := fmt.Sprintf(_sql3,strconv.Itoa(project_id))
modelItems,_ = d.QueryMany(ctx,1,sql_str4) modelItems,_ = d.QueryMany(ctx,1,sql_str4)
if modelItems == nil { if modelItems == nil {
logic.LogWrite("不存在该项目配置详情lie_model_items,project_id:"+strconv.Itoa(project_id),log_pre,1) logic.LogWrite("不存在该项目配置详情lie_model_items,project_id:"+strconv.Itoa(project_id),log_pre,1)
...@@ -86,44 +93,52 @@ func (d *dao) DongMain(ctx context.Context,project_id int,erp_company_code strin ...@@ -86,44 +93,52 @@ func (d *dao) DongMain(ctx context.Context,project_id int,erp_company_code strin
} }
company_info,err := d.QueryMany(ctx,1,_sql2); company_info,err := d.QueryMany(ctx,1,_sql2);
if err != nil { if err != nil {
logic.LogWrite("错误"+err.Error(),log_pre,1) logic.LogWrite("错误"+err.Error(),log_pre,1)
return return
} }
nowTime := time.Now()
getTime := nowTime.AddDate(0, -6, 0) //年,月,日 获取前六个月的时间
year := logic.MyInt64(getTime.Format("2006"))
month := logic.MyInt64(getTime.Format("01"))
month_six_zi = getTime.Format("2006")+getTime.Format("01")+time.Now().AddDate(0, -1, 0).Format("01") //20190612 代表 2019年6 至 12 月
p := 0
for i := month; i <= 12; i++ {
if p == 6 {
break;
}
if i <10 {
month_six += logic.MyInt64ToStr(year)+"0"+logic.MyInt64ToStr(i)+","
}else{
month_six += logic.MyInt64ToStr(year)+logic.MyInt64ToStr(i)+","
}
if i == 12 { //1月
year = year+1
i = 1
}
p +=1
}
month_six = strings.TrimRight(month_six,",") // 六个月sql
for _,v := range company_info{ //循环当前公司,计算各个公司对应分数 for _,v := range company_info{ //循环当前公司,计算各个公司对应分数
if v["erp_company_code"] == "" { if v["erp_company_code"] == "" {
continue; continue;
} }
//调用公共动态算法去查对应得分 if project_id == 999 { //总计所有分数
switch project_id{ d.DongAddScore(ctx,logic.MyInt64(v["id"]),month_six_zi) //总计所有分数
case 35: //逾期金额率
ladder_rate,ladder_score,_ = d.DongYuqiRate(ctx,v,modelItems,project_id)
case 36: //发生逾期笔数率
ladder_rate,ladder_score,_ = d.DongYuqiBi(ctx,v,modelItems,project_id)
case 37: //平均逾期支付时间
ladder_rate,ladder_score,_ = d.DongYuqiDivDay(ctx,v,modelItems,project_id)
case 38: //平均付款时间
ladder_rate,ladder_score,_ = d.DongDivPayDay(ctx,v,modelItems,project_id)
case 39: //正常收款金额率
ladder_rate,ladder_score,_ = d.DongNormalPayRate(ctx,v,modelItems,project_id)
case 40: //正常收款笔数率
ladder_rate,ladder_score,_ = d.DongNormalPayBi(ctx,v,modelItems,project_id)
case 42: //交货及时率
ladder_rate,ladder_score,_ = d.DongInTimeRate(ctx,v,modelItems,project_id)
case 43: //退货率
ladder_rate,ladder_score,_ = d.DongReturnRate(ctx,v,modelItems,project_id)
case 999:
d.DongAddScore(ctx,logic.MyInt64(v["id"])) //总计所有分数
continue continue
default: }else{
continue; ladder_rate,ladder_score,remark,_ = d.DongRate(ctx,v,modelItems,project_id,month_six) //调用公共动态算法去查对应得分
} }
if ladder_score == 0 { //if ladder_score == 0 {
logic.LogWrite("统计"+mod_name+"--没有梯度对应分数,公司编码:"+v["erp_company_code"]+" 计算公式:"+ladder_rate,log_pre,1) // logic.LogWrite("统计"+mod_name+"--没有梯度对应分数,公司编码:"+v["erp_company_code"]+" 计算公式:"+remark,log_pre,1)
continue; // continue;
} //}
//计算得到的分数插入分数明细表 //计算得到的分数插入分数明细表
var scores model.Scores //插入分数结构体 var scores model.Scores //插入分数结构体
ProjectPid := logic.MyInt8(modelItem["pid"]) ProjectPid := logic.MyInt8(modelItem["pid"])
...@@ -137,16 +152,21 @@ func (d *dao) DongMain(ctx context.Context,project_id int,erp_company_code strin ...@@ -137,16 +152,21 @@ func (d *dao) DongMain(ctx context.Context,project_id int,erp_company_code strin
scores.Weight= weight; scores.Weight= weight;
scores.FinalScore = weight*ladder_score; //权重乘以单位 scores.FinalScore = weight*ladder_score; //权重乘以单位
scores.ComCreditsId = logic.MyInt64(v["id"]); scores.ComCreditsId = logic.MyInt64(v["id"]);
scores.Month = logic.MyInt64(month_six_zi);
scores.Current_rate = ladder_rate
scores.Remark = remark
//fmt.Print(scores) //fmt.Print(scores)
//os.Exit(1)
//d := New() //d := New()
insertid,err := d.InsertScores(ctx,scores)
insertid,err := d.InsertScores2(ctx,scores,logic.MyInt64(month_six_zi))
if err != nil { if err != nil {
logic.Loginfo("错误:"+err.Error(),log_pre) logic.Loginfo("错误:"+err.Error(),log_pre)
fmt.Print("错误:"+err.Error(),insertid,ladder_rate) fmt.Print("错误:"+err.Error(),insertid,ladder_rate)
} }
//日志 //日志
logic.LogWrite("统计"+mod_name+"--成功,公司编码:"+v["erp_company_code"]+" 计算公式:"+ladder_rate+" 梯度得分:"+logic.MyFloat64ToStr(ladder_score)+" 权重:"+logic.MyFloat64ToStr(weight)+" 最终得分:"+logic.MyFloat64ToStr(weight*ladder_score),log_pre,1) logic.LogWrite("统计"+mod_name+"--成功,公司编码:"+v["erp_company_code"]+" 计算公式:"+remark+" 梯度得分:"+logic.MyFloat64ToStr(ladder_score)+" 权重:"+logic.MyFloat64ToStr(weight)+" 最终得分:"+logic.MyFloat64ToStr(weight*ladder_score),log_pre,1)
} }
return return
......
...@@ -5,278 +5,110 @@ import ( ...@@ -5,278 +5,110 @@ import (
"fmt" "fmt"
"kaopu-server/internal/logic" "kaopu-server/internal/logic"
"kaopu-server/internal/model" "kaopu-server/internal/model"
"time"
) )
const ( const (
_sql3 = "select sum(delay_amount)/sum(order_amount) yuqilv from lie_basic_detail where erp_company_code='%s' " //基础数据 _sql4 = "select " +
_sql4 = "select * from lie_model_items where project_id=%s " //查询统计项目梯度详情 "sum(receive_amount) receive_amount," + //收款总额
_sql5 = "select count(1) yuqibi from lie_basic_detail where delay_day>0 and erp_company_code='%s'" //发生逾期总笔数 "sum(delay_amount) delay_amount," + //逾期金额
_sql6 = "select count(1) allbi from lie_basic_detail where return_amount>0 and erp_company_code='%s'" //收款总笔数 "sum(receive_count) receive_count," + //收款总笔数
_sql8 = "select sum(delay_day) sum_delay_day from lie_basic_detail where delay_day>0 and erp_company_code='%s'" //每笔逾期账款的逾期时间合计 "sum(delay_count) delay_count," + //逾期总笔数
_sql9 = "select sum(TIMESTAMPDIFF(DAY,FROM_UNIXTIME(business_time,'%Y-%m-%d'),FROM_UNIXTIME(return_time,'%Y-%m-%d'))) sum_zhang from lie_basic_detail where erp_company_code=" //每笔付款账期合计 应收日期在1/1-1/31的支付天数合计 "sum(delay_day) delay_day," + //逾期时间合计(天)
_sql10 = "select sum(return_amount) sum_rongcha_huan from lie_basic_detail where delay_day<0 and erp_company_code='%s'" //容差范围内的收款(还款)金额 应收日期在1/1-1/31且逾期支付天数<容差值(目前为0)的下单金额合计 "abs(sum(period_day)) period_day," + //每笔付款账期合计(天)
_sql11 = "select count(1) sum_rongcha_bi from lie_basic_detail where delay_day<0 and erp_company_code='%s'" //完成容差范围内收款的笔数 应收日期在1/1-1/31且0<逾期支付天数<容差值(目前为0)的下单订单数 "sum(tolerance_receive_amount) tolerance_receive_amount," + //容差范围内收款金额
_sql12 = "select sum(order_amount) sum_jiaohuo from lie_basic_detail where erp_company_code='%s'" //交货总金额 退货总金额+出库总金额 "sum(tolerance_receive_count) tolerance_receive_count," + //容差范围内收款笔数
_sql13 = "select abs(sum(return_amount)) sum_tuihuo from lie_basic_detail where return_amount<0 and erp_company_code='%s'" //退货总金额 下单时间在1/1-1/30且下单金额为负数的金额合计 "sum(appoint_tolerance) appoint_tolerance," + //给定账期
_sql14 = "select sum(order_amount) sum_chuhuo from lie_basic_detail where order_amount>0 and erp_company_code='%s'" //出货总金额 下单时间在1/1-1/30的下单总金额合计 "sum(schedule_delivery_amount) schedule_delivery_amount," + //按期交货总金额
_sql15 = "select sum(return_amount) sum_shou from lie_basic_detail where return_amount>0 and erp_company_code='%s'" //收款总额 应收日期在1/1-1/31的回款金额 下单时间在1/1-1/30的下单总金额合计 "sum(delivery_amount) delivery_amount," + //交货总金额(下单总金额)
_sql16 = "select sum(final_score) sum_dong_score from lie_scores where type=2 and com_credits_id=%d"; //总计动态信用分 "abs(sum(return_amount)) return_amount," + //退货总金额
) "sum(unload_amount) unload_amount," + //出货总金额
"sum(insurance_user_count) insurance_user_count," + //社保参保人数
var ( "sum(gross_profit) gross_profit " + //累计毛利
chrate float64; //算出来的率或天 " from lie_basic_month where erp_company_code='%s' and month in(%s)" //基础数据
score_one float64 =0; //对应梯度分数 _sql5 = "select sum(final_score) sum_dong_score from lie_scores where type=2 and com_credits_id=%d and month in(%s)"; //总计动态信用分
_sql6 = "select * from lie_basic_month where erp_company_code='%s' and month in(%s)" //获取详情
) )
/* /*
@param ladder_score 对应梯度 率 或天 @param current_rate 对应梯度 率 或天
@param ladder_score 分数,最终对应哪个梯度得分 @param ladder_score 分数,最终对应哪个梯度得分
*/ */
//1 计算逾期金额率:延期支付时间超过平均账期的金额/收款总额: func (d *dao) DongRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int,month_six string) (ladder_rate float64,ladder_score float64,remark string,err error) {
func (d *dao) DongYuqiRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) { var (
//查询逾期率 score_one float64 =0; //对应梯度分数
oneyu,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql3,y["erp_company_code"])) s1,s2 string //拼接六个月月份字符串
if oneyu["yuqilv"] == "" || oneyu == nil { //没有结果 )
chrate = 0
ladder_rate = "查询逾期率:0"
}else{
chrate = logic.MyFloat64(oneyu["yuqilv"])
ladder_rate = oneyu["yuqilv"]
}
//查询逾期率对应分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//2 发生逾期笔数率: 发生逾期笔数/收款总笔数
func (d *dao) DongYuqiBi(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//查询逾期笔数
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql5,y["erp_company_code"]))
if c1["yuqibi"] == "0" { //没有结果
chrate = 0
ladder_rate = "查询逾期笔数:0"
}else{
//收款总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql6,y["erp_company_code"]))
chrate = logic.MyFloat64(c1["yuqibi"])/logic.MyFloat64(c2["allbi"])
ladder_rate = c1["yuqibi"]+"/"+c2["allbi"]+"="+logic.MyFloat64ToStr(chrate)
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//3 平均逾期支付时间(天): 每笔逾期账款的逾期时间合计/发生逾期总笔数
func (d *dao) DongYuqiDivDay(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//每笔逾期账款的逾期时间合计
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql8,y["erp_company_code"]))
if c1["sum_delay_day"] == "0" { //没有结果
chrate = 0
ladder_rate = "每笔逾期账款的逾期时间合计:0"
}else{
//发生逾期总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql5,y["erp_company_code"]))
chrate = logic.MyFloat64(c1["sum_delay_day"])/logic.MyFloat64(c2["yuqibi"])
ladder_rate = c1["sum_delay_day"]+"/"+c2["yuqibi"]+"="+logic.MyFloat64ToStr(chrate)
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//4 平均付款时间(天): 每笔付款账期合计/收款总笔数
func (d *dao) DongDivPayDay(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//每笔付款账期合计
sql9 := _sql9+"'"+y["erp_company_code"]+"'"
c1,_ := d.QueryOne(ctx,2,sql9)
if c1["sum_zhang"] == "0" { //没有结果
chrate = 0
ladder_rate = "每笔付款账期合计:0"
}else{
//每笔付款账期合计算天,向下取整 1.1 =1
//收款总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql6,y["erp_company_code"]))
if c2["allbi"] == "0" { //没有结果
chrate = 0;
ladder_rate = "收款总笔数:0"
}else{
chrate = logic.MyFloat64(c1["sum_zhang"])/logic.MyFloat64(c2["allbi"])
ladder_rate = logic.MyFloat64ToStr(logic.MyFloat64(c1["sum_zhang"]))+"/"+c2["allbi"]+"="+logic.MyFloat64ToStr(chrate)
}
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//5 正常收款金额率: 容差范围内的收款(还款)金额/收款总金额
func (d *dao) DongNormalPayRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//容差范围内的收款(还款)金额
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql10,y["erp_company_code"]))
if c1["sum_rongcha_huan"] == "0" { //没有结果
chrate = 0
ladder_rate = "容差范围内的收款(还款)金额:0"
}else{
//收款金额
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql15,y["erp_company_code"]))
if c2["sum_shou"] == "0" { //没有结果
chrate = 0;
ladder_rate = "收款金额:0"
}else{
chrate = logic.MyFloat64(c1["sum_rongcha_huan"])/logic.MyFloat64(c2["sum_shou"])
ladder_rate = c1["sum_rongcha_huan"]+"/"+c2["sum_shou"]+"="+logic.MyFloat64ToStr(chrate)
}
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//6 正常收款笔数率:完成容差范围内收款的笔数/收款总笔数 sqla := fmt.Sprintf(_sql4,y["erp_company_code"],month_six)
func (d *dao) DongNormalPayBi(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) { c1,_ := d.QueryOne(ctx,1,sqla)
//完成容差范围内收款的笔数
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql11,y["erp_company_code"])) switch project_id {
if c1["sum_rongcha_bi"] == "0" { //没有结果 case 35: ////1 计算逾期金额率:逾期金额/收款总额:
chrate = 0 s1 = c1["delay_amount"]
ladder_rate = "完成容差范围内收款的笔数:0" s2 = c1["receive_amount"]
}else{ case 36: //2 发生逾期笔数率: 发生逾期笔数/收款总笔数
//收款总笔数 s1 = c1["delay_count"]
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql6,y["erp_company_code"])) s2 = c1["receive_count"]
if c1["sum_rongcha_bi"] == "0" { case 37: //3 平均逾期支付时间(天): 每笔逾期账款的逾期时间合计/发生逾期总笔数
chrate = 0; s1 = c1["delay_day"]
ladder_rate = "收款总笔数:0" s2 = c1["delay_count"]
}else{ case 38: //4 平均付款时间(天): 每笔付款账期合计/收款总笔数
chrate := logic.MyFloat64(c1["sum_rongcha_bi"])/logic.MyFloat64(c2["allbi"]) s1 = c1["period_day"]
ladder_rate = c1["sum_rongcha_bi"]+"/"+c2["allbi"]+"="+logic.MyFloat64ToStr(chrate) s2 = c1["receive_count"]
} case 39: //5 正常收款金额率: 容差范围内的收款(还款)金额/收款总金额
} s1 = c1["tolerance_receive_amount"]
//计算分数 s2 = c1["receive_amount"]
for _,y := range modelItems{ case 40: //6 正常收款笔数率:完成容差范围内收款的笔数/收款总笔数
ladder_range_min := logic.MyFloat64(y["ladder_range_min"]) s1 = c1["tolerance_receive_count"]
ladder_range_max := logic.MyFloat64(y["ladder_range_max"]) s2 = c1["receive_count"]
if (ladder_range_min <= chrate && chrate < ladder_range_max ) { case 42: //8 交货及时率: 按期交货总金额/交货总金额(下单总金额) PS按期交货:逾期交付天数<0
score_one = logic.MyFloat64(y["score"]) //得到的分数 s1 = c1["schedule_delivery_amount"]
s2 = c1["delivery_amount"]
case 43: //9 退货率 : 退货总金额/出库总金额(下单总金额) PS退货总金额金额为负数的订单
s1 = c1["return_amount"]
s2 = c1["unload_amount"]
case 48: // 账期使用倍数统计
last_month := time.Now().Format("2006")+time.Now().AddDate(0, -1, 0).Format("01")
sql6 := fmt.Sprintf(_sql4,y["erp_company_code"],last_month)
c3,_ := d.QueryOne(ctx,1,sql6)
if c3["period_use_times_six"] == "" {
logic.LogWrite("账期使用倍数为空:"+y["erp_company_code"],"dong_error",1)
return
} }
ladder_rate = logic.MyFloat64(c3["period_use_times_six"]); //六个月的账期使用倍数
} }
if project_id != 48 {
ladder_score = score_one if s1 == "" || s2 == "" {
return logic.LogWrite("没有订单数据跳过:"+y["erp_company_code"],"dong_error",1)
} return
//8 交货及时率: 按期交货总金额/交货总金额(下单总金额) PS按期交货:逾期交付天数<0
func (d *dao) DongInTimeRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//按期交货总金额
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql10,y["erp_company_code"]))
if c1["sum_rongcha_huan"] == "0" { //没有结果
chrate = 0
ladder_rate = "按期交货总金额:0";
}else{
//下单总金额
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql12,y["erp_company_code"]))
if c2["sum_jiaohuo"] == "0" { //没有结果
chrate = 0;
ladder_rate = "下单总金额:0"
}else{
chrate = logic.MyFloat64(c1["sum_rongcha_huan"])/logic.MyFloat64(c2["sum_jiaohuo"])
ladder_rate = c1["sum_rongcha_huan"]+"/"+c2["sum_jiaohuo"]+"="+logic.MyFloat64ToStr(chrate)
} }
ladder_rate = logic.MyFloat64(s1)/logic.MyFloat64(s2)
remark = s1+"/"+s2+"="+logic.MyFloat64ToStr(ladder_rate)
} }
//计算分数 //计算分数
for _,y := range modelItems{ for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"]) ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"]) ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) { if (ladder_range_min <= ladder_rate && ladder_rate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数 score_one = logic.MyFloat64(y["score"]) //得到的分数
} }
} }
ladder_score = score_one ladder_score = score_one
return return
} }
//9 退货率 : 退货总金额/出库总金额(下单总金额) PS退货总金额金额为负数的订单
func (d *dao) DongReturnRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//退货总金额
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql13,y["erp_company_code"]))
if c1["sum_tuihuo"] == "0" { //没有结果
chrate = 0
ladder_rate = "退货总金额:0"
}else{
//出库总金额
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql14,y["erp_company_code"]))
if c2["sum_chuhuo"] == "0" { //没有结果
chrate = 0;
ladder_rate = "出库总金额:0"
}else{
chrate = logic.MyFloat64(c1["sum_tuihuo"])/logic.MyFloat64(c2["sum_chuhuo"])
ladder_rate = c1["sum_tuihuo"]+"/"+c2["sum_chuhuo"]+"="+logic.MyFloat64ToStr(chrate)
}
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//累计公司动态信用分 //累计公司动态信用分
func (d *dao) DongAddScore(ctx context.Context,com_credits_id int64)(affectNum int64) { func (d *dao) DongAddScore(ctx context.Context,com_credits_id int64,month_six_zi string )(affectNum int64) {
var( var(
sum_dong_score float64 //动态模型总分 sum_dong_score float64 //动态模型总分
) )
c1,_ := d.QueryOne(ctx,1,fmt.Sprintf(_sql16,com_credits_id)) c1,_ := d.QueryOne(ctx,1,fmt.Sprintf(_sql5,com_credits_id,month_six_zi))
if c1["sum_dong_score"] == "0" || c1["sum_dong_score"] == "" { //没有结果 if c1["sum_dong_score"] == "0" || c1["sum_dong_score"] == "" { //没有结果
sum_dong_score = 0 sum_dong_score = 0
}else{ }else{
...@@ -294,7 +126,14 @@ func (d *dao) DongAddScore(ctx context.Context,com_credits_id int64)(affectNum i ...@@ -294,7 +126,14 @@ func (d *dao) DongAddScore(ctx context.Context,com_credits_id int64)(affectNum i
return return
} }
/*
ear := time.Now().Format("2006")
month := time.Now().Format("01")
day := time.Now().Format("02")
hour := time.Now().Format("15")
min := time.Now().Format("04")
second := time.Now().Format("05")
*/
......
package dao
import (
"context"
"fmt"
"kaopu-server/internal/logic"
"kaopu-server/internal/model"
)
const (
_sql3 = "select sum(delay_amount)/sum(order_amount) yuqilv from lie_basic_detail where erp_company_code='%s' " //基础数据
_sql4 = "select * from lie_model_items where project_id=%s " //查询统计项目梯度详情
_sql5 = "select count(1) yuqibi from lie_basic_detail where delay_day>0 and erp_company_code='%s'" //发生逾期总笔数
_sql6 = "select count(1) allbi from lie_basic_detail where return_amount>0 and erp_company_code='%s'" //收款总笔数
_sql8 = "select sum(delay_day) sum_delay_day from lie_basic_detail where delay_day>0 and erp_company_code='%s'" //每笔逾期账款的逾期时间合计
_sql9 = "select sum(TIMESTAMPDIFF(DAY,FROM_UNIXTIME(business_time,'%Y-%m-%d'),FROM_UNIXTIME(return_time,'%Y-%m-%d'))) sum_zhang from lie_basic_detail where erp_company_code=" //每笔付款账期合计 应收日期在1/1-1/31的支付天数合计
_sql10 = "select sum(return_amount) sum_rongcha_huan from lie_basic_detail where delay_day<0 and erp_company_code='%s'" //容差范围内的收款(还款)金额 应收日期在1/1-1/31且逾期支付天数<容差值(目前为0)的下单金额合计
_sql11 = "select count(1) sum_rongcha_bi from lie_basic_detail where delay_day<0 and erp_company_code='%s'" //完成容差范围内收款的笔数 应收日期在1/1-1/310<逾期支付天数<容差值(目前为0)的下单订单数
_sql12 = "select sum(order_amount) sum_jiaohuo from lie_basic_detail where erp_company_code='%s'" //交货总金额 退货总金额+出库总金额
_sql13 = "select abs(sum(return_amount)) sum_tuihuo from lie_basic_detail where return_amount<0 and erp_company_code='%s'" //退货总金额 下单时间在1/1-1/30且下单金额为负数的金额合计
_sql14 = "select sum(order_amount) sum_chuhuo from lie_basic_detail where order_amount>0 and erp_company_code='%s'" //出货总金额 下单时间在1/1-1/30的下单总金额合计
_sql15 = "select sum(return_amount) sum_shou from lie_basic_detail where return_amount>0 and erp_company_code='%s'" //收款总额 应收日期在1/1-1/31的回款金额 下单时间在1/1-1/30的下单总金额合计
_sql16 = "select sum(final_score) sum_dong_score from lie_scores where type=2 and com_credits_id=%d"; //总计动态信用分
)
var (
chrate float64; //算出来的率或天
score_one float64 =0; //对应梯度分数
)
/*
@param ladder_score 对应梯度 或天
@param ladder_score 分数,最终对应哪个梯度得分
*/
//1 计算逾期金额率:延期支付时间超过平均账期的金额/收款总额:
func (d *dao) DongYuqiRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//查询逾期率
oneyu,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql3,y["erp_company_code"]))
if oneyu["yuqilv"] == "" || oneyu == nil { //没有结果
chrate = 0
ladder_rate = "查询逾期率:0"
}else{
chrate = logic.MyFloat64(oneyu["yuqilv"])
ladder_rate = oneyu["yuqilv"]
}
//查询逾期率对应分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//2 发生逾期笔数率: 发生逾期笔数/收款总笔数
func (d *dao) DongYuqiBi(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//查询逾期笔数
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql5,y["erp_company_code"]))
if c1["yuqibi"] == "0" { //没有结果
chrate = 0
ladder_rate = "查询逾期笔数:0"
}else{
//收款总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql6,y["erp_company_code"]))
chrate = logic.MyFloat64(c1["yuqibi"])/logic.MyFloat64(c2["allbi"])
ladder_rate = c1["yuqibi"]+"/"+c2["allbi"]+"="+logic.MyFloat64ToStr(chrate)
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//3 平均逾期支付时间(天): 每笔逾期账款的逾期时间合计/发生逾期总笔数
func (d *dao) DongYuqiDivDay(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//每笔逾期账款的逾期时间合计
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql8,y["erp_company_code"]))
if c1["sum_delay_day"] == "0" { //没有结果
chrate = 0
ladder_rate = "每笔逾期账款的逾期时间合计:0"
}else{
//发生逾期总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql5,y["erp_company_code"]))
chrate = logic.MyFloat64(c1["sum_delay_day"])/logic.MyFloat64(c2["yuqibi"])
ladder_rate = c1["sum_delay_day"]+"/"+c2["yuqibi"]+"="+logic.MyFloat64ToStr(chrate)
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//4 平均付款时间(天): 每笔付款账期合计/收款总笔数
func (d *dao) DongDivPayDay(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//每笔付款账期合计
sql9 := _sql9+"'"+y["erp_company_code"]+"'"
c1,_ := d.QueryOne(ctx,2,sql9)
if c1["sum_zhang"] == "0" { //没有结果
chrate = 0
ladder_rate = "每笔付款账期合计:0"
}else{
//每笔付款账期合计算天,向下取整 1.1 =1
//收款总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql6,y["erp_company_code"]))
if c2["allbi"] == "0" { //没有结果
chrate = 0;
ladder_rate = "收款总笔数:0"
}else{
chrate = logic.MyFloat64(c1["sum_zhang"])/logic.MyFloat64(c2["allbi"])
ladder_rate = logic.MyFloat64ToStr(logic.MyFloat64(c1["sum_zhang"]))+"/"+c2["allbi"]+"="+logic.MyFloat64ToStr(chrate)
}
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//5 正常收款金额率: 容差范围内的收款(还款)金额/收款总金额
func (d *dao) DongNormalPayRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//容差范围内的收款(还款)金额
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql10,y["erp_company_code"]))
if c1["sum_rongcha_huan"] == "0" { //没有结果
chrate = 0
ladder_rate = "容差范围内的收款(还款)金额:0"
}else{
//收款金额
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql15,y["erp_company_code"]))
if c2["sum_shou"] == "0" { //没有结果
chrate = 0;
ladder_rate = "收款金额:0"
}else{
chrate = logic.MyFloat64(c1["sum_rongcha_huan"])/logic.MyFloat64(c2["sum_shou"])
ladder_rate = c1["sum_rongcha_huan"]+"/"+c2["sum_shou"]+"="+logic.MyFloat64ToStr(chrate)
}
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//6 正常收款笔数率:完成容差范围内收款的笔数/收款总笔数
func (d *dao) DongNormalPayBi(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//完成容差范围内收款的笔数
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql11,y["erp_company_code"]))
if c1["sum_rongcha_bi"] == "0" { //没有结果
chrate = 0
ladder_rate = "完成容差范围内收款的笔数:0"
}else{
//收款总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql6,y["erp_company_code"]))
if c1["sum_rongcha_bi"] == "0" {
chrate = 0;
ladder_rate = "收款总笔数:0"
}else{
chrate := logic.MyFloat64(c1["sum_rongcha_bi"])/logic.MyFloat64(c2["allbi"])
ladder_rate = c1["sum_rongcha_bi"]+"/"+c2["allbi"]+"="+logic.MyFloat64ToStr(chrate)
}
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//8 交货及时率: 按期交货总金额/交货总金额(下单总金额) PS按期交货:逾期交付天数<0
func (d *dao) DongInTimeRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//按期交货总金额
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql10,y["erp_company_code"]))
if c1["sum_rongcha_huan"] == "0" { //没有结果
chrate = 0
ladder_rate = "按期交货总金额:0";
}else{
//下单总金额
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql12,y["erp_company_code"]))
if c2["sum_jiaohuo"] == "0" { //没有结果
chrate = 0;
ladder_rate = "下单总金额:0"
}else{
chrate = logic.MyFloat64(c1["sum_rongcha_huan"])/logic.MyFloat64(c2["sum_jiaohuo"])
ladder_rate = c1["sum_rongcha_huan"]+"/"+c2["sum_jiaohuo"]+"="+logic.MyFloat64ToStr(chrate)
}
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//9 退货率 : 退货总金额/出库总金额(下单总金额) PS退货总金额金额为负数的订单
func (d *dao) DongReturnRate(ctx context.Context,y map[string]string,modelItems []map[string]string,project_id int) (ladder_rate string,ladder_score float64,err error) {
//退货总金额
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql13,y["erp_company_code"]))
if c1["sum_tuihuo"] == "0" { //没有结果
chrate = 0
ladder_rate = "退货总金额:0"
}else{
//出库总金额
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql14,y["erp_company_code"]))
if c2["sum_chuhuo"] == "0" { //没有结果
chrate = 0;
ladder_rate = "出库总金额:0"
}else{
chrate = logic.MyFloat64(c1["sum_tuihuo"])/logic.MyFloat64(c2["sum_chuhuo"])
ladder_rate = c1["sum_tuihuo"]+"/"+c2["sum_chuhuo"]+"="+logic.MyFloat64ToStr(chrate)
}
}
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
ladder_range_max := logic.MyFloat64(y["ladder_range_max"])
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_score = score_one
return
}
//累计公司动态信用分
func (d *dao) DongAddScore(ctx context.Context,com_credits_id int64)(affectNum int64) {
var(
sum_dong_score float64 //动态模型总分
)
c1,_ := d.QueryOne(ctx,1,fmt.Sprintf(_sql16,com_credits_id))
if c1["sum_dong_score"] == "0" || c1["sum_dong_score"] == "" { //没有结果
sum_dong_score = 0
}else{
sum_dong_score = logic.MyFloat64(c1["sum_dong_score"])
}
var com_credit model.ComCredits
com_credit.DynamicCreditScore = sum_dong_score
com_credit.Id = com_credits_id
logic.LogWrite("统计动态分数完成,供应商id:"+logic.MyInt64ToStr(com_credits_id)+"总动态分:"+logic.MyFloat64ToStr(sum_dong_score),"dong_sum",1)
//最后累计总分评分
affectNum,_ = d.UpdateMoveSumScores(ctx,com_credit)
return
}
...@@ -61,3 +61,46 @@ func (d *dao) InsertScores(ctx context.Context,score model.Scores) (insertId int ...@@ -61,3 +61,46 @@ func (d *dao) InsertScores(ctx context.Context,score model.Scores) (insertId int
return return
} }
//增加或者修改记录(动态模型专用)
func (d *dao) InsertScores2(ctx context.Context,score model.Scores,month_six_zi int64) (insertId int64,err error) {
//defer d.db.Close()
var(
exitId int
execSql string
affectNum int64
)
//ss := fmt.Sprintf("select id from lie_scores where `type` = %d and project_pid = %d and project_id = %d and com_credits_id = %d limit 0,1", score.Type,score.ProjectPid,score.ProjectId,score.ComCreditsId)
//print(ss)
err = d.db.QueryRow(ctx,"select id from lie_scores where `type` = ? and project_pid = ? and project_id = ? and com_credits_id = ? and month= ? limit 0,1", score.Type,score.ProjectPid,score.ProjectId,score.ComCreditsId,month_six_zi).Scan(&exitId)
if err != nil {
//fmt.Print(err)
//sql := fmt.Sprintf("select id from lie_scores where `type` = %d and project_pid = %d and project_id = %d and com_credits_id = %d and month= %d limit 0,1", score.Type,score.ProjectPid,score.ProjectId,score.ComCreditsId,month_six_zi);
//fmt.Print("查询失败:"+sql)
//os.Exit(1)
}
if exitId == 0 {
execSql = "INSERT INTO `lie_scores` (`type`, `project_pid`, `project_id`, `total_score`, `current_score`, `weight`, `final_score`, `com_credits_id`, `create_time`,`current_rate`,`month`,`remark`)VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?)"
row,err := d.db.Exec(ctx,execSql,score.Type,score.ProjectPid,score.ProjectId,score.TotalScore,score.CurrentScore,score.Weight,score.FinalScore,score.ComCreditsId,time.Now().Unix(),score.Current_rate,score.Month,score.Remark)
if err != nil {
log.Error("InsertScoresdb.DemoExec.Exec(%s) error(%v)", execSql, err)
}else{
affectNum,_ = row.LastInsertId()
}
}else{
execSql = "update `lie_scores` set `type` = ?, `project_pid` = ?, `project_id` = ?, `total_score` = ?, `current_score` = ?, `weight` = ?, `final_score` = ?, `update_time` = ?, `current_rate` = ?, `remark` = ? where `type` = ? and project_pid = ? and project_id = ? and com_credits_id = ? and month = ?"
row,err := d.db.Exec(ctx,execSql,score.Type,score.ProjectPid,score.ProjectId,score.TotalScore,score.CurrentScore,score.Weight,score.FinalScore,time.Now().Unix(), score.Current_rate,score.Remark,score.Type,score.ProjectPid,score.ProjectId,score.ComCreditsId,month_six_zi)
if err != nil {
log.Error("updateScoresdb.DemoExec.Exec(%s) error(%v)", execSql, err)
}else{
affectNum,_ = row.RowsAffected()
}
}
insertId = affectNum
return
}
\ No newline at end of file
...@@ -14,6 +14,9 @@ type Scores struct { ...@@ -14,6 +14,9 @@ type Scores struct {
ComCreditsId int64 `json:"com_credits_id"` ComCreditsId int64 `json:"com_credits_id"`
CreateTime int64 `json:"create_time"` CreateTime int64 `json:"create_time"`
UpdateTime int64 `json:"update_time"` UpdateTime int64 `json:"update_time"`
Month int64 `json:"month"`
Current_rate float64 `json:"current_rate"`
Remark string `json:"remark"`
} }
/*CREATE TABLE `lie_scores` ( /*CREATE TABLE `lie_scores` (
......
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