Commit 1ce40d5f by huangchengyi

1.0

parent 2325d292
Showing with 103 additions and 132 deletions
......@@ -15,6 +15,10 @@ import (
"time"
)
type Rabitmq struct {
Dsn string //rabitmq 配置1
}
type RecvPro struct {}
type RabbitMsg struct {
......@@ -34,6 +38,7 @@ func main() {
model_dong := dao.Model_dong //所有动态模型算法列表
if mod == -1 {
queues() //队列监听
return
}
_ ,ok := model_dong[mod]
......@@ -42,10 +47,6 @@ func main() {
os.Exit(1)
}
if mod == -1 {
queues() //队列监听
}
ctx := context.Background() //上下文
if mod >0 {
......@@ -82,19 +83,25 @@ func main() {
fmt.Println("\r\n所有任务已经完成")
}
}
//队列监听
func queues() {
t := &RecvPro{}
var (
dc struct {
Dsn1 *Rabitmq // rab配置1
}
)
paladin.Get("rabitmq.toml").UnmarshalTOML(&dc) //读取配置
queueExchange := &rabbitmq.QueueExchange{
"fengkong_dong_count",
"fengkong_dong_count",
"fengkong_exchange",
"direct",
"amqp://guest:guest@192.168.2.232:5672/",
"amqp://"+dc.Dsn1.Dsn+"/",
}
for{
......
......@@ -5,7 +5,7 @@ import (
"fmt"
"kaopu-server/internal/logic"
"kaopu-server/internal/model"
"strconv"
"math"
)
const (
......@@ -14,7 +14,7 @@ const (
_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(delay_day) sum_zhang from lie_basic_detail where erp_company_code='%s'" //每笔付款账期合计 应收日期在1/1-1/31的支付天数合计
_sql9 = "select sum(return_time - business_time) sum_zhang from lie_basic_detail where erp_company_code='%s'" //每笔付款账期合计 应收日期在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/31且0<逾期支付天数<容差值(目前为0)的下单订单数
_sql12 = "select sum(order_amount) sum_jiaohuo from lie_basic_detail where erp_company_code='%s'" //交货总金额 退货总金额+出库总金额
......@@ -24,49 +24,52 @@ const (
_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) {
var (
score_one float64 =0; //分数
)
//查询逾期率
oneyu,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql3,y["erp_company_code"]))
if oneyu["yuqilv"] == "" || oneyu == nil { //没有结果
return
chrate = 0
ladder_rate = "查询逾期率:0"
}else{
chrate = logic.MyFloat64(oneyu["yuqilv"])
ladder_rate = oneyu["yuqilv"]
}
//查询逾期率对应分数
yuqilv,_ := strconv.ParseFloat(oneyu["yuqilv"],64)
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 <= yuqilv && yuqilv < ladder_range_max ) {
if (ladder_range_min <= chrate && chrate < ladder_range_max ) {
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
ladder_rate = oneyu["yuqilv"]
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) {
var (
score_one float64 =0; //分数
)
//查询逾期笔数
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql5,y["erp_company_code"]))
if c1["yuqibi"] == "0" { //没有结果
return
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)
}
//收款总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql6,y["erp_company_code"]))
chrate := logic.MyFloat64(c1["yuqibi"])/logic.MyFloat64(c2["allbi"])
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
......@@ -75,27 +78,23 @@ func (d *dao) DongYuqiBi(ctx context.Context,y map[string]string,modelItems []ma
score_one = logic.MyFloat64(y["score"]) //得到的分数
}
}
//fmt.Print(modelItems,birate,score_one)
ladder_rate = c1["yuqibi"]+"/"+c2["allbi"]+"="+logic.MyFloat64ToStr(chrate)
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) {
var (
score_one float64 =0; //分数
)
//每笔逾期账款的逾期时间合计
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql8,y["erp_company_code"]))
if c1["sum_delay_day"] == "0" { //没有结果
return
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)
}
//发生逾期总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql5,y["erp_company_code"]))
chrate := logic.MyFloat64(c1["sum_delay_day"])/logic.MyFloat64(c2["yuqibi"])
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
......@@ -105,35 +104,30 @@ func (d *dao) DongYuqiDivDay(ctx context.Context,y map[string]string,modelItems
}
}
ladder_rate = c1["sum_delay_day"]+"/"+c2["yuqibi"]+"="+logic.MyFloat64ToStr(chrate)
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) {
var (
score_one float64 =0; //分数
mod_name string = Model_dong[project_id] //统计动态模型名称
log_pre string = Model_dong_log[project_id] //日志文件名称
)
//每笔付款账期合计
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql9,y["erp_company_code"]))
if c1["sum_zhang"] == "0" { //没有结果
log1 := "公司编码:"+y["erp_company_code"]+"每笔付款账期合计0,跳过";
fmt.Print(log1)
logic.Loginfo("统计--"+mod_name+log1,log_pre)
return
}
//收款总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql6,y["erp_company_code"]))
if c2["allbi"] == "0" { //没有结果
log1 := "公司编码:"+y["erp_company_code"]+"每笔付款账期合计0,跳过";
fmt.Print(log1)
logic.Loginfo("统计--"+mod_name+log1,log_pre)
return
chrate = 0
ladder_rate = "每笔付款账期合计:0"
}else{
//每笔付款账期合计算天,向下取整 1.1 =1
sum_zhang_day := math.Floor(logic.MyFloat64(c1["sum_zhang"])/86400)
//收款总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql6,y["erp_company_code"]))
if c2["allbi"] == "0" { //没有结果
chrate = 0;
ladder_rate = "收款总笔数:0"
}else{
chrate = sum_zhang_day/logic.MyFloat64(c2["allbi"])
ladder_rate = logic.MyFloat64ToStr(sum_zhang_day)+"/"+c2["allbi"]+"="+logic.MyFloat64ToStr(chrate)
}
}
chrate := logic.MyFloat64(c1["sum_zhang"])/logic.MyFloat64(c2["allbi"])
//计算分数
for _,y := range modelItems{
......@@ -144,35 +138,28 @@ func (d *dao) DongDivPayDay(ctx context.Context,y map[string]string,modelItems [
}
}
ladder_rate = c1["sum_zhang"]+"/"+c2["allbi"]+"="+logic.MyFloat64ToStr(chrate)
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) {
var (
score_one float64 =0; //分数
mod_name string = Model_dong[project_id] //统计动态模型名称
log_pre string = Model_dong_log[project_id] //日志文件名称
)
//容差范围内的收款(还款)金额
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql10,y["erp_company_code"]))
if c1["sum_rongcha_huan"] == "0" { //没有结果
log1 := "公司编码:"+y["erp_company_code"]+"容差范围内的收款(还款)金额0,跳过";
fmt.Print(log1)
logic.Loginfo("统计--"+mod_name+log1,log_pre)
return
}
//收款金额
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql15,y["erp_company_code"]))
if c2["sum_shou"] == "0" { //没有结果
log1 := "公司编码:"+y["erp_company_code"]+"收款总金额合计0,跳过";
fmt.Print(log1)
logic.Loginfo("统计--"+mod_name+log1,log_pre)
return
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)
}
}
chrate := logic.MyFloat64(c1["sum_rongcha_huan"])/logic.MyFloat64(c2["sum_shou"])
//计算分数
for _,y := range modelItems{
......@@ -183,36 +170,28 @@ func (d *dao) DongNormalPayRate(ctx context.Context,y map[string]string,modelIte
}
}
ladder_rate = c1["sum_rongcha_huan"]+"/"+c2["sum_shou"]+"="+logic.MyFloat64ToStr(chrate)
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) {
var (
score_one float64 =0; //分数
mod_name string = Model_dong[project_id] //统计动态模型名称
log_pre string = Model_dong_log[project_id] //日志文件名称
)
//完成容差范围内收款的笔数
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql11,y["erp_company_code"]))
if c1["sum_rongcha_bi"] == "0" { //没有结果
log1 := "公司编码:"+y["erp_company_code"]+"完成容差范围内收款的笔数0,跳过";
fmt.Print(log1)
logic.Loginfo("统计--"+mod_name+log1,log_pre)
return
}
//收款总笔数
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql6,y["erp_company_code"]))
if c2["allbi"] == "0" { //没有结果
log1 := "公司编码:"+y["erp_company_code"]+"收款总笔数0,跳过";
fmt.Print(log1)
logic.Loginfo("统计--"+mod_name+log1,log_pre)
return
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)
}
}
chrate := logic.MyFloat64(c1["sum_rongcha_bi"])/logic.MyFloat64(c2["allbi"])
//计算分数
for _,y := range modelItems{
ladder_range_min := logic.MyFloat64(y["ladder_range_min"])
......@@ -222,35 +201,28 @@ func (d *dao) DongNormalPayBi(ctx context.Context,y map[string]string,modelItems
}
}
ladder_rate = c1["sum_rongcha_bi"]+"/"+c2["allbi"]+"="+logic.MyFloat64ToStr(chrate)
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) {
var (
score_one float64 =0; //分数
mod_name string = Model_dong[project_id] //统计动态模型名称
log_pre string = Model_dong_log[project_id] //日志文件名称
)
//按期交货总金额
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql10,y["erp_company_code"]))
if c1["sum_rongcha_huan"] == "0" { //没有结果
log1 := "公司编码:"+y["erp_company_code"]+"按期交货总金额0,跳过";
fmt.Print(log1)
logic.Loginfo("统计--"+mod_name+log1,log_pre)
return
}
//下单总金额
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql12,y["erp_company_code"]))
if c2["sum_jiaohuo"] == "0" { //没有结果
log1 := "公司编码:"+y["erp_company_code"]+"下单总金额0,跳过";
fmt.Print(log1)
logic.Loginfo("统计--"+mod_name+log1,log_pre)
return
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)
}
}
chrate := logic.MyFloat64(c1["sum_rongcha_huan"])/logic.MyFloat64(c2["sum_jiaohuo"])
//计算分数
for _,y := range modelItems{
......@@ -261,35 +233,28 @@ func (d *dao) DongInTimeRate(ctx context.Context,y map[string]string,modelItems
}
}
ladder_rate = c1["sum_rongcha_huan"]+"/"+c2["sum_jiaohuo"]+"="+logic.MyFloat64ToStr(chrate)
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) {
var (
score_one float64 =0; //分数
mod_name string = Model_dong[project_id] //统计动态模型名称
log_pre string = Model_dong_log[project_id] //日志文件名称
)
//退货总金额
c1,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql13,y["erp_company_code"]))
if c1["sum_tuihuo"] == "0" { //没有结果
log1 := "公司编码:"+y["erp_company_code"]+"按期交货总金额0,跳过";
fmt.Print(log1)
logic.Loginfo("统计--"+mod_name+log1,log_pre)
return
}
//出库总金额
c2,_ := d.QueryOne(ctx,2,fmt.Sprintf(_sql14,y["erp_company_code"]))
if c2["sum_chuhuo"] == "0" { //没有结果
log1 := "公司编码:"+y["erp_company_code"]+"出库总金额0,跳过";
fmt.Print(log1)
logic.Loginfo("统计--"+mod_name+log1,log_pre)
return
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)
}
}
chrate := logic.MyFloat64(c1["sum_tuihuo"])/logic.MyFloat64(c2["sum_chuhuo"])
//计算分数
for _,y := range modelItems{
......@@ -300,7 +265,6 @@ func (d *dao) DongReturnRate(ctx context.Context,y map[string]string,modelItems
}
}
ladder_rate = c1["sum_tuihuo"]+"/"+c2["sum_chuhuo"]+"="+logic.MyFloat64ToStr(chrate)
ladder_score = score_one
return
}
......
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