ssjygl-xsct-service/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/overall/OverallService.java

413 lines
20 KiB
Java
Raw Normal View History

2020-09-18 17:10:33 +08:00
package com.cowr.ssjygl.overall;
import com.cowr.common.enums.OrderStateEnum;
import com.cowr.common.utils.DateTimeUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
2020-11-02 10:02:58 +08:00
import java.math.BigDecimal;
2020-09-18 18:04:07 +08:00
import java.util.ArrayList;
2020-09-18 17:10:33 +08:00
import java.util.Calendar;
import java.util.Date;
2020-09-18 18:04:07 +08:00
import java.util.List;
2020-09-18 17:10:33 +08:00
public class OverallService {
public static OverallService me = new OverallService();
2020-09-18 17:42:20 +08:00
/*
/overall/stat?token=
{
"code": 200,
"data": {
"ordercluster": {
"before_month_total_weight": 446.00, // 前月配额重量
"before_day_total_weight": 693.00, // 前日配额重量
"month_total_weight": 7930.00, // 当月配额重量
"day_total_weight": 160.00, // 当日配额重量
2020-09-24 19:57:38 +08:00
"total_weight": 8376.00, // 总配额重量
"month_truck_cnt": 49, // 当月分配车次
"day_truck_cnt": 0, // 当日分配车次
"truck_cnt": 53, // 总分配车次
"before_month_truck_cnt": 4, // 前月分配车次
"before_daytruck__cnt": 0 // 前日分配撤职
2020-09-18 17:42:20 +08:00
],
"by_supermarket": [
{
"supermarket_id": 1,
"supermarket_name": "竹瓦",
"supermarket_name2": "竹瓦",
2020-10-11 22:50:32 +08:00
"total_price": 43826.40, // 砂站总销售额
"weight": 486.96, // 砂站总销售重量
"truck_cnt": 18, // 砂站总运输车次
"month_total_price": 43826.40, // 当月砂站总销售额
"month_weight": 486.96, // 当月砂站销售重量
"month_truck_cnt": 18, // 当月砂站运输车次
"day_total_price": 0.00, // 当日砂站销售总额
"day_weight": 0.00, // 当日砂站销售重量
"day_truck_cnt": 0 // 当日砂站运输车次
"before_month_total_price": 0.00, // 前月砂站总销售额
"before_month_weight": 0.00, // 前月砂站总销售重量
"before_month_truck_cnt": 0, // 前月砂站运输车次
"before_day_total_price": 1796.40, // 前日砂站销售总额
"before_day_weight": 19.96, // 前日砂站销售重量
"before_day_truck_cnt": 2, // 前日砂站运输车次
"day_quota_total_price": 253.00, // 当日砂站配额重量
2020-09-18 17:42:20 +08:00
},
],
"by_customer": [
{
"total_price": 41310.00,
"month_total_price": 41310.00,
"before_day_truck_cnt": 0,
"month_truck_cnt": 14,
"truck_cnt": 14,
"day_total_price": 0.00,
"weight": 459.00,
"before_day_total_price": 0.00,
"month_weight": 459.00,
"before_month_total_price": 0.00,
"before_month_weight": 0.00,
"day_weight": 0.00,
"before_month_truck_cnt": 0,
"customer_name": "零散客户",
"before_day_weight": 0.00,
"day_truck_cnt": 0
},
{
"total_price": 3330.00,
"month_total_price": 3330.00,
"before_day_truck_cnt": 0,
"month_truck_cnt": 1,
"truck_cnt": 1,
"day_total_price": 0.00,
"weight": 37.00,
"before_day_total_price": 0.00,
"month_weight": 37.00,
"before_month_total_price": 0.00,
"before_month_weight": 0.00,
"day_weight": 0.00,
"before_month_truck_cnt": 0,
"customer_name": "中铁十六局集团有限公司黄黄高铁项目部(一标)",
"customer_id": 8,
"before_day_weight": 0.00,
"day_truck_cnt": 0
},
{
"total_price": 3690.00,
"month_total_price": 3690.00,
"before_day_truck_cnt": 0,
"month_truck_cnt": 3,
"truck_cnt": 3,
"day_total_price": 0.00,
"weight": 41.00,
"before_day_total_price": 0.00,
"month_weight": 41.00,
"before_month_total_price": 0.00,
"before_month_weight": 0.00,
"day_weight": 0.00,
"before_month_truck_cnt": 0,
"customer_name": "湖北碁润商砼有限公司",
"customer_id": 12,
"before_day_weight": 0.00,
"day_truck_cnt": 0
}
]
}
}
2020-09-24 19:57:38 +08:00
select count(t.sn) cnt, sum(t.weight) weight, sum(t.total_price) total_price, date_format(t.create_time, '%Y-%m-%d') date from order_temp t
where t.state = 5
group by date
2020-09-18 17:42:20 +08:00
*/
2020-10-11 22:50:32 +08:00
public Record stat(Integer supermarket_id) {
long st = System.currentTimeMillis();
2020-09-18 17:10:33 +08:00
Record out = new Record();
2020-10-11 22:50:32 +08:00
Date now = new Date();
2020-09-18 18:04:07 +08:00
List<Object> params2 = new ArrayList<>();
params2.add(OrderStateEnum.RECEIVED.getStateid());
2020-09-18 17:10:33 +08:00
Calendar c = Calendar.getInstance();
c.setTime(now);
c.add(Calendar.DAY_OF_MONTH, -1);
String nowmonttm = DateTimeUtil.sd.get().format(now); // 当月
2020-10-11 22:50:32 +08:00
String nowdaytm = DateTimeUtil.sdf.get().format(now); // 当日
String predaytm = DateTimeUtil.sdf.get().format(c.getTime()); // 前一日
2020-09-18 17:10:33 +08:00
c.add(Calendar.DAY_OF_MONTH, 1);
c.add(Calendar.MONTH, -1);
String premonthtm = DateTimeUtil.sd.get().format(c.getTime()); // 前一月
2020-09-18 18:04:07 +08:00
String sql_ordercluster = "select \n" +
2020-10-14 15:26:30 +08:00
" ifnull(sum(t.weight), 0) total_weight, \n" +
" ifnull(sum(case when t.create_time like '" + nowmonttm + "%' then t.weight end ), 0) month_total_weight, \n" +
" ifnull(sum(case when t.create_time like '" + nowdaytm + "%' then t.weight end ), 0) day_total_weight, \n" +
" ifnull(sum(case when t.create_time like '" + premonthtm + "%' then t.weight end ), 0) before_month_total_weight, \n" +
" ifnull(sum(case when t.create_time like '" + predaytm + "%' then t.weight end) , 0) before_day_total_weight,\n" +
" \n" +
" ifnull(sum(t.total_price), 0) total_price, \n" +
" ifnull(sum(case when t.create_time like '" + nowmonttm + "%' then t.total_price end ), 0) month_total_price, \n" +
" ifnull(sum(case when t.create_time like '" + nowdaytm + "%' then t.total_price end ), 0) day_total_price, \n" +
" ifnull(sum(case when t.create_time like '" + premonthtm + "%' then t.total_price end ), 0) before_month_total_price, \n" +
2020-10-14 15:50:27 +08:00
" ifnull(sum(case when t.create_time like '" + predaytm + "%' then t.total_price end) , 0) before_day_total_price, \n" +
" \n" +
" ifnull(count(t.sn), 0) truck_cnt, \n" +
" ifnull(sum(case when t.create_time like '" + nowmonttm + "%' then 1 else 0 end ), 0) month_truck_cnt, \n" +
" ifnull(sum(case when t.create_time like '" + nowdaytm + "%' then 1 else 0 end ), 0) day_truck_cnt, \n" +
" ifnull(sum(case when t.create_time like '" + premonthtm + "%' then 1 else 0 end ), 0) before_month_truck_cnt, \n" +
" ifnull(sum(case when t.create_time like '" + predaytm + "%' then 1 else 0 end) , 0) before_day_truck_cnt \n" +
2020-10-14 15:26:30 +08:00
" from order_temp t\n" +
2020-10-14 15:29:53 +08:00
" where t.state = ?";
2020-09-18 17:10:33 +08:00
2020-09-18 18:04:07 +08:00
String sql_by_customer = "\n" +
" select\n" +
" t.customer_id,\n" +
" ifnull(max(case when t.customer_id is null then null else t.customer_name end), '零散客户') customer_name,\n" +
" sum(t.weight) weight,\n" +
" sum(t.total_price) total_price,\n" +
" count(*) truck_cnt,\n" +
" \n" +
2020-10-11 22:50:32 +08:00
" ifnull(sum(case when t.create_time like '" + nowmonttm + "%' then t.weight end), 0) month_weight,\n" +
2020-09-18 18:04:07 +08:00
" ifnull(sum(case when t.create_time like '" + nowdaytm + "%' then t.weight end), 0) day_weight,\n" +
" \n" +
2020-10-11 22:50:32 +08:00
" ifnull(sum(case when t.create_time like '" + nowmonttm + "%' then t.total_price end), 0) month_total_price,\n" +
2020-09-18 18:04:07 +08:00
" ifnull(sum(case when t.create_time like '" + nowdaytm + "%' then t.total_price end), 0) day_total_price,\n" +
" \n" +
2020-10-11 22:50:32 +08:00
" count(case when t.create_time like '" + nowmonttm + "%' then t.sn end) month_truck_cnt,\n" +
2020-09-18 18:04:07 +08:00
" count(case when t.create_time like '" + nowdaytm + "%' then t.sn end) day_truck_cnt,\n" +
" \n" +
" ifnull(sum(case when t.create_time like '" + premonthtm + "%' then t.weight end), 0) before_month_weight,\n" +
" ifnull(sum(case when t.create_time like '" + predaytm + "%' then t.weight end), 0) before_day_weight,\n" +
" \n" +
" ifnull(sum(case when t.create_time like '" + premonthtm + "%' then t.total_price end), 0) before_month_total_price,\n" +
" ifnull(sum(case when t.create_time like '" + predaytm + "%' then t.total_price end), 0) before_day_total_price,\n" +
" \n" +
" count(case when t.create_time like '" + premonthtm + "%' then t.sn end) before_month_truck_cnt,\n" +
" count(case when t.create_time like '" + predaytm + "%' then t.sn end) before_day_truck_cnt\n" +
" from order_temp t\n" +
" where t.state = ?\n";
2020-09-18 17:10:33 +08:00
2020-09-18 18:04:07 +08:00
String sql_by_supermarket = " select \n" +
2020-09-18 17:42:20 +08:00
" s.id supermarket_id,\n" +
" s.name supermarket_name,\n" +
" s.name2 supermarket_name2,\n" +
" ifnull(a.total_price, 0) total_price,\n" +
" ifnull(a.month_total_price, 0) month_total_price,\n" +
" ifnull(a.before_day_truck_cnt, 0) before_day_truck_cnt,\n" +
" ifnull(a.month_truck_cnt, 0) month_truck_cnt,\n" +
" ifnull(a.truck_cnt, 0) truck_cnt,\n" +
" ifnull(a.day_total_price, 0) day_total_price,\n" +
" ifnull(a.weight, 0) weight,\n" +
" ifnull(a.before_day_total_price, 0) before_day_total_price,\n" +
" ifnull(a.month_weight, 0) month_weight,\n" +
" ifnull(a.before_month_total_price, 0) before_month_total_price,\n" +
" ifnull(a.before_month_weight, 0) before_month_weight,\n" +
" ifnull(a.day_weight, 0) day_weight,\n" +
" ifnull(a.before_month_truck_cnt, 0) before_month_truck_cnt,\n" +
" ifnull(a.before_day_weight, 0) before_day_weight,\n" +
" ifnull(a.day_truck_cnt, 0) day_truck_cnt" +
" from supermarket s\n" +
" left join (\n" +
" select\n" +
" t.supermarket_id,\n" +
" sum(t.weight) weight,\n" +
" sum(t.total_price) total_price,\n" +
" count(*) truck_cnt,\n" +
" \n" +
2020-10-11 22:50:32 +08:00
" ifnull(sum(case when t.create_time like '" + nowmonttm + "%' then t.weight end), 0) month_weight,\n" +
2020-09-18 17:42:20 +08:00
" ifnull(sum(case when t.create_time like '" + nowdaytm + "%' then t.weight end), 0) day_weight,\n" +
" \n" +
2020-10-11 22:50:32 +08:00
" ifnull(sum(case when t.create_time like '" + nowmonttm + "%' then t.total_price end), 0) month_total_price,\n" +
2020-09-18 17:42:20 +08:00
" ifnull(sum(case when t.create_time like '" + nowdaytm + "%' then t.total_price end), 0) day_total_price,\n" +
" \n" +
2020-10-11 22:50:32 +08:00
" count(case when t.create_time like '" + nowmonttm + "%' then t.sn end) month_truck_cnt,\n" +
2020-09-18 17:42:20 +08:00
" count(case when t.create_time like '" + nowdaytm + "%' then t.sn end) day_truck_cnt,\n" +
" \n" +
" ifnull(sum(case when t.create_time like '" + premonthtm + "%' then t.weight end), 0) before_month_weight,\n" +
" ifnull(sum(case when t.create_time like '" + predaytm + "%' then t.weight end), 0) before_day_weight,\n" +
" \n" +
" ifnull(sum(case when t.create_time like '" + premonthtm + "%' then t.total_price end), 0) before_month_total_price,\n" +
" ifnull(sum(case when t.create_time like '" + predaytm + "%' then t.total_price end), 0) before_day_total_price,\n" +
" \n" +
" count(case when t.create_time like '" + premonthtm + "%' then t.sn end) before_month_truck_cnt,\n" +
" count(case when t.create_time like '" + predaytm + "%' then t.sn end) before_day_truck_cnt\n" +
" from order_temp t\n" +
2020-09-18 18:04:07 +08:00
" where t.state = ?\n";
2020-09-18 17:10:33 +08:00
2020-10-11 22:50:32 +08:00
List<Record> by_supermarket_list;
if (supermarket_id != null) {
2020-09-18 18:04:07 +08:00
sql_ordercluster += " and t.supermarket_id = ? ";
sql_by_customer += " and t.supermarket_id = ? ";
params2.add(supermarket_id);
2020-10-11 22:50:32 +08:00
by_supermarket_list = Db.find(sql_by_supermarket +
2020-09-18 18:04:07 +08:00
" and t.supermarket_id = ? " +
" group by t.supermarket_id\n" +
" ) a on a.supermarket_id = s.id \n" +
2020-10-11 22:50:32 +08:00
" where s.id = ? ", OrderStateEnum.RECEIVED.getStateid(), supermarket_id, supermarket_id);
} else {
by_supermarket_list = Db.find(sql_by_supermarket +
2020-09-18 18:04:07 +08:00
" group by t.supermarket_id\n" +
2020-10-11 22:50:32 +08:00
" ) a on a.supermarket_id = s.id", OrderStateEnum.RECEIVED.getStateid());
}
List<Record> suppeie = Db.find("select t.supermarket_id, sum(t.total_weight) total_weight from ordercluster t\n" +
"where t.cutoff_time like ? \n" +
"and t.state < ? \n" +
"group by t.supermarket_id", nowdaytm + "%", OrderStateEnum.RECEIVED.getStateid());
2020-10-18 00:39:17 +08:00
for (Record record : by_supermarket_list) {
for (Record r : suppeie) {
if (r.getInt("supermarket_id") != null && r.getInt("supermarket_id").equals(record.getInt("supermarket_id"))) {
2020-10-11 22:50:32 +08:00
record.set("day_quota_total_price", r.get("total_weight"));
}
}
2020-09-18 18:04:07 +08:00
}
2020-10-14 15:35:21 +08:00
Record ocout = Db.findFirst(sql_ordercluster, params2.toArray());
2020-09-24 19:57:38 +08:00
out.set("ordercluster", ocout);
2020-09-18 18:04:07 +08:00
out.set("by_customer", Db.find(sql_by_customer + " group by t.customer_id", params2.toArray()));
2020-10-11 22:50:32 +08:00
out.set("by_supermarket", by_supermarket_list);
2020-09-18 17:10:33 +08:00
return out;
}
2020-10-11 22:50:32 +08:00
/**
* 31
2020-10-18 00:39:17 +08:00
*
2020-10-11 22:50:32 +08:00
* @return
*/
public List<Record> lastStat() {
Date now = new Date();
Calendar c = Calendar.getInstance();
c.setTime(now);
c.add(Calendar.DAY_OF_MONTH, -31);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return Db.find("\n" +
"select count(t.sn) cnt, sum(t.weight) weight, sum(t.total_price) total_price, date_format(t.create_time, '%Y-%m-%d') date from order_temp t\n" +
"where t.state = ?\n" +
"and t.create_time >= ?\n" +
"group by date",
OrderStateEnum.RECEIVED.getStateid(),
DateTimeUtil.sdfhms.get().format(c.getTime()));
}
/**
* 31
2020-10-18 00:39:17 +08:00
*
2020-10-11 22:50:32 +08:00
* @return
*/
public List<Record> lastSupermarketStat(int supermarket_id) {
Date now = new Date();
Calendar c = Calendar.getInstance();
c.setTime(now);
c.add(Calendar.DAY_OF_MONTH, -31);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return Db.find("\n" +
"select count(t.sn) cnt, sum(t.weight) weight, sum(t.total_price) total_price, date_format(t.create_time, '%Y-%m-%d') date from order_temp t\n" +
"where t.state = ?\n" +
"and t.supermarket_id = ?\n" +
"and t.create_time >= ?\n" +
"group by date",
OrderStateEnum.RECEIVED.getStateid(),
supermarket_id,
DateTimeUtil.sdfhms.get().format(c.getTime()));
}
/**
* 31
2020-10-18 00:39:17 +08:00
*
2020-10-11 22:50:32 +08:00
* @return
*/
public List<Record> lastCustomerStat(int customer_id) {
Date now = new Date();
Calendar c = Calendar.getInstance();
c.setTime(now);
c.add(Calendar.DAY_OF_MONTH, -31);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return Db.find("\n" +
"select count(t.sn) cnt, sum(t.weight) weight, sum(t.total_price) total_price, date_format(t.create_time, '%Y-%m-%d') date from order_temp t\n" +
"where t.state = ?\n" +
"and t.customer_id = ?\n" +
"and t.create_time >= ?\n" +
"group by date",
OrderStateEnum.RECEIVED.getStateid(),
customer_id,
DateTimeUtil.sdfhms.get().format(c.getTime()));
}
/**
* 31
2020-10-18 00:39:17 +08:00
*
2020-10-11 22:50:32 +08:00
* @return
*/
public List<Record> lastTempStat() {
Date now = new Date();
Calendar c = Calendar.getInstance();
c.setTime(now);
c.add(Calendar.DAY_OF_MONTH, -31);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return Db.find("\n" +
"select count(t.sn) cnt, sum(t.weight) weight, sum(t.total_price) total_price, date_format(t.create_time, '%Y-%m-%d') date from order_temp t\n" +
"where t.state = ?\n" +
"and t.customer_id is null \n" +
"and t.create_time >= ?\n" +
"group by date",
OrderStateEnum.RECEIVED.getStateid(),
DateTimeUtil.sdfhms.get().format(c.getTime()));
}
2020-11-03 14:27:22 +08:00
public List<Record> lastOrder(Integer supermarket_id) {
if (supermarket_id != null) {
return Db.find("select t.sn, t.customer_name, t.truck_license, t.weight, t.total_price, t.create_time, s.name supermarket_name from order_temp t\n" +
" left join supermarket s on s.id = t.supermarket_id\n" +
" where t.state = 5 \n" +
" and t.supermarket_id = ? \n" +
" order by t.create_time desc \n" +
" limit 30", supermarket_id);
} else {
return Db.find("select t.sn, t.customer_name, t.truck_license, t.weight, t.total_price, t.create_time, s.name supermarket_name from order_temp t\n" +
" left join supermarket s on s.id = t.supermarket_id\n" +
" where t.state = 5 \n" +
" order by t.create_time desc \n" +
" limit 30");
}
}
2020-09-18 17:10:33 +08:00
}