|
@@ -36,6 +36,7 @@ var (
|
|
{"oldCode":"070200","show":"数据事业部/售前与售后组","newId":"59007"}
|
|
{"oldCode":"070200","show":"数据事业部/售前与售后组","newId":"59007"}
|
|
]`
|
|
]`
|
|
codeDeptMapping = map[string]*newDept{}
|
|
codeDeptMapping = map[string]*newDept{}
|
|
|
|
+ beforeMoneyMap = map[string]int{}
|
|
)
|
|
)
|
|
|
|
|
|
type (
|
|
type (
|
|
@@ -58,9 +59,22 @@ func init() {
|
|
Id: gconv.Int(m["newId"]),
|
|
Id: gconv.Int(m["newId"]),
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ res, err := g.DB("release").Query(context.TODO(), "SELECT createTime,orderCode,payMoney from moneyCorrection WHERE redType='金额红冲' and payMoney!=0 AND createTime >'2024-01-01 00:00:00' and createTime < '2024-09-10 00:00:00'")
|
|
|
|
+ if err != nil {
|
|
|
|
+ panic(err)
|
|
|
|
+ }
|
|
|
|
+ //计算原金额
|
|
|
|
+ for _, row := range res.List() {
|
|
|
|
+ var (
|
|
|
|
+ orderCode = gconv.String(row["orderCode"])
|
|
|
|
+ payMoney = gconv.Int(row["payMoney"])
|
|
|
|
+ )
|
|
|
|
+ beforeMoneyMap[orderCode] = beforeMoneyMap[orderCode] - payMoney
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
func main() {
|
|
func main() {
|
|
|
|
+ redRecord(context.TODO())
|
|
CreateSaleRecord(context.TODO())
|
|
CreateSaleRecord(context.TODO())
|
|
//fmt.Println(int(time.Now().Month()))
|
|
//fmt.Println(int(time.Now().Month()))
|
|
}
|
|
}
|
|
@@ -88,7 +102,9 @@ func CreateSaleRecord(ctx context.Context) {
|
|
reason = "" //协议归档
|
|
reason = "" //协议归档
|
|
statistics_time = ""
|
|
statistics_time = ""
|
|
)
|
|
)
|
|
-
|
|
|
|
|
|
+ if _, ok := beforeMoneyMap[order_code]; ok {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
if is_backstage_order == 1 {
|
|
if is_backstage_order == 1 {
|
|
//后台创建订单获取业绩时间
|
|
//后台创建订单获取业绩时间
|
|
if (refund_status == 1 || refund_status == 2 || order_status == 1) && pay_money > 0 {
|
|
if (refund_status == 1 || refund_status == 2 || order_status == 1) && pay_money > 0 {
|
|
@@ -252,8 +268,129 @@ func CreateSaleRecord(ctx context.Context) {
|
|
}
|
|
}
|
|
|
|
|
|
func SaveDb(ctx context.Context, data []map[string]interface{}) {
|
|
func SaveDb(ctx context.Context, data []map[string]interface{}) {
|
|
- _, err := g.DB().Save(ctx, "order_sale_record_release", data, 10)
|
|
|
|
|
|
+ _, err := g.DB().Save(ctx, "order_sale_record_release1", data, 10)
|
|
if err != nil {
|
|
if err != nil {
|
|
g.Log().Errorf(ctx, "插入数据异常 %v", err)
|
|
g.Log().Errorf(ctx, "插入数据异常 %v", err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+// redRecord 红冲记录补全
|
|
|
|
+func redRecord(ctx context.Context) {
|
|
|
|
+ for orderCode, money := range beforeMoneyMap {
|
|
|
|
+ var insertArr []map[string]interface{}
|
|
|
|
+ m, err := g.DB("release").GetOne(ctx, "SELECT order_status,order_money,order_code,pay_money,saleDep,salesperson_id,salesperson,saleMoney,is_backstage_order,sale_time,pay_time,refund_status,create_time FROM dataexport_order WHERE order_code=?", orderCode)
|
|
|
|
+ if err != nil || m.IsEmpty() {
|
|
|
|
+ g.Log().Errorf(ctx, "查询订单异常 %s", orderCode)
|
|
|
|
+ }
|
|
|
|
+ var (
|
|
|
|
+ is_backstage_order = gconv.Int(m["is_backstage_order"])
|
|
|
|
+ sale_time = gconv.String(m["sale_time"])
|
|
|
|
+ order_code = gconv.String(m["order_code"])
|
|
|
|
+ salesperson_id = gconv.String(m["salesperson_id"])
|
|
|
|
+ salesperson = gconv.String(m["salesperson"])
|
|
|
|
+ saleDep = gconv.String(m["saleDep"])
|
|
|
|
+ create_time = gconv.String(m["create_time"])
|
|
|
|
+ pay_money = gconv.Int(m["pay_money"])
|
|
|
|
+
|
|
|
|
+ uuidStr = uuid.New().String()
|
|
|
|
+ reason = "" //协议归档
|
|
|
|
+ statistics_time = ""
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ if is_backstage_order == 1 {
|
|
|
|
+ date, err := time.ParseInLocation(time.DateTime, sale_time, time.Local)
|
|
|
|
+ if err != nil {
|
|
|
|
+ g.Log().Printf(ctx, "格式化销售时间异常 %s %s", order_code, sale_time)
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ if date.Month() <= 3 {
|
|
|
|
+ //用录入的业绩统计时间
|
|
|
|
+ statistics_time = sale_time
|
|
|
|
+ } else {
|
|
|
|
+ //管理后台创建的订单:协议归档时间和首笔回款时间的最小值。
|
|
|
|
+ res, _ := g.DB("release").GetOne(ctx, "SELECT * FROM (SELECT * FROM(SELECT contract_archive_time as t ,'0' as v FROM contract WHERE order_code=? and contract_archive_time is NOT NULL) as t1 UNION ALL SELECT * FROM(SELECT return_time as t ,'1' as v FROM return_money_record WHERE order_code=? AND state=1) as t2) as d ORDER BY t asc LIMIT 1", order_code, order_code)
|
|
|
|
+ if !res.IsEmpty() {
|
|
|
|
+ var (
|
|
|
|
+ tStr = gconv.String(res.Map()["t"])
|
|
|
|
+ v = gconv.String(res.Map()["v"])
|
|
|
|
+ )
|
|
|
|
+ if tStr != "" {
|
|
|
|
+ statistics_time = tStr
|
|
|
|
+ }
|
|
|
|
+ if v == "1" {
|
|
|
|
+ reason = "协议归档"
|
|
|
|
+ } else {
|
|
|
|
+ reason = "回款成功"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if statistics_time == "" {
|
|
|
|
+ statistics_time = sale_time
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ g.Log().Errorf(ctx, "线上单子", orderCode)
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var lastRecord map[string]interface{}
|
|
|
|
+ if strings.Contains(salesperson, ",") {
|
|
|
|
+ g.Log().Errorf(ctx, "撞单单", orderCode)
|
|
|
|
+ continue
|
|
|
|
+ } else {
|
|
|
|
+ dept, ok := codeDeptMapping[saleDep]
|
|
|
|
+ if !ok {
|
|
|
|
+ g.Log().Errorf(ctx, "%s 未找到 %s 部门对应关系 ", order_code, saleDep)
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ record := map[string]interface{}{
|
|
|
|
+ "state": -1,
|
|
|
|
+ "ordercode": order_code,
|
|
|
|
+ "saler_Id": salesperson_id,
|
|
|
|
+ "saler_name": salesperson,
|
|
|
|
+ "saler_dept": dept.Name,
|
|
|
|
+ "saler_dept_id": dept.Id,
|
|
|
|
+ "change_value": pay_money + money,
|
|
|
|
+ "money": pay_money + money,
|
|
|
|
+ "group_uuid": uuidStr,
|
|
|
|
+ "operator": "系统自动",
|
|
|
|
+ "change_reason": reason,
|
|
|
|
+ "statistics_time": statistics_time,
|
|
|
|
+ "create_time": create_time,
|
|
|
|
+ }
|
|
|
|
+ insertArr = append(insertArr, record)
|
|
|
|
+ lastRecord = record
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //红冲记录插入
|
|
|
|
+ res, err := g.DB("release").Query(ctx, "SELECT createTime,orderCode,payMoney from moneyCorrection WHERE redType='金额红冲' and payMoney!=0 AND orderCode=? order by createTime asc", orderCode)
|
|
|
|
+ if err != nil {
|
|
|
|
+ panic(err)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for index, row := range res.List() {
|
|
|
|
+ var (
|
|
|
|
+ createTime = gconv.String(row["createTime"])
|
|
|
|
+ payMoney = gconv.Int(row["payMoney"])
|
|
|
|
+ newRecord = map[string]interface{}{}
|
|
|
|
+ )
|
|
|
|
+ for key, value := range lastRecord {
|
|
|
|
+ newRecord[key] = value
|
|
|
|
+ }
|
|
|
|
+ lastUUid := lastRecord["group_uuid"]
|
|
|
|
+ newRecord["change_value"] = payMoney
|
|
|
|
+ newRecord["money"] = gconv.Int(lastRecord["money"]) + payMoney
|
|
|
|
+ newRecord["group_uuid"] = uuid.New().String()
|
|
|
|
+ newRecord["last_group_uuid"] = lastUUid
|
|
|
|
+ newRecord["operator"] = "系统自动"
|
|
|
|
+ newRecord["change_reason"] = "业绩红冲"
|
|
|
|
+ newRecord["statistics_time"] = createTime
|
|
|
|
+ newRecord["create_time"] = createTime
|
|
|
|
+ if index == res.Len()-1 {
|
|
|
|
+ newRecord["state"] = 1
|
|
|
|
+ }
|
|
|
|
+ lastRecord = newRecord
|
|
|
|
+ insertArr = append(insertArr, newRecord)
|
|
|
|
+ }
|
|
|
|
+ SaveDb(ctx, insertArr)
|
|
|
|
+ }
|
|
|
|
+}
|