充电异常结算订单统计

This commit is contained in:
yuyang 2022-09-06 22:30:25 +08:00
parent 580541a621
commit 6bb97b1412
5 changed files with 166 additions and 4 deletions

View File

@ -417,4 +417,13 @@ public class XhpcStatisticsController extends BaseController {
{
return AjaxResult.success(xhpcStatisticsService.getEmptyOrder(chargingStationId,startTime,endTime));
}
/**
* 异常订单量列表统计
* @param type 1 近30天 2上个月 3本月 4.近12月
*/
@GetMapping("/getWorkHistoryOrderList")
public AjaxResult getWorkHistoryOrderList(Long operatorId,Long chargingStationId,Long chargingPileId,Long terminalId,String stopReason,@RequestParam(value = "startTime")String startTime,@RequestParam(value = "endTime")String endTime,Integer type){
return AjaxResult.success(xhpcStatisticsService.getWorkHistoryOrderList(operatorId,chargingStationId,chargingPileId,terminalId,stopReason,startTime,endTime,type));
}
}

View File

@ -221,5 +221,5 @@ public interface XhpcStatisticsServiceMapper {
List<Map<String, Object>> getTerminalEmptyOrder(@Param("chargingStationId")Long chargingStationId,@Param("status") Integer status,@Param("logOperatorId")Long logOperatorId,@Param("tenantId")String tenantId,@Param("beginOfDay")String beginOfDay,@Param("endOfDay")String endOfDay);
List<Map<String, Object>> getWorkHistoryOrderList(@Param("operatorId")Long operatorId, @Param("chargingStationId")Long chargingStationId,@Param("chargingPileId") Long chargingPileId,@Param("terminalId")Long terminalId, @Param("stopReason")String stopReason,@Param("status") Integer status,@Param("logOperatorId")Long logOperatorId,@Param("tenantId")String tenantId,@Param("beginOfDay")String beginOfDay,@Param("endOfDay")String endOfDay);
}

View File

@ -307,4 +307,9 @@ public interface IXhpcStatisticsService {
*/
List<Map<String, Object>> getEmptyOrder(Long chargingStationId,String startTime,String endTime);
/**
* 异常订单量列表统计
*/
List<Map<String, Object>> getWorkHistoryOrderList(Long operatorId,Long chargingStationId,Long chargingPileId,Long terminalId,String stopReason,String startTime,String endTime,Integer type);
}

View File

@ -1298,6 +1298,107 @@ public class XhpcStatisticsServiceImpl extends BaseService implements IXhpcStati
return map;
}
/**
* 异常订单量列表统计
*
* @param operatorId
* @param chargingStationId
* @param chargingPileId
* @param stopReason
* @param startTime
* @param endTime
*/
@Override
public List<Map<String, Object>> getWorkHistoryOrderList(Long operatorId, Long chargingStationId, Long chargingPileId,Long terminalId, String stopReason, String startTime, String endTime,Integer type) {
//判断登录用户是系统用户还是运维人员
LoginUser loginUser = tokenService.getLoginUser();
String tenantId = loginUser.getTenantId();
Long logUserId = SecurityUtils.getUserId();
SysUser sysUser = loginUser.getSysUser();
List<Map<String, Object>> map =new ArrayList<>();
//今日订单量
//今天时间格式 yyyy-mm-dd
Date date = new Date();
Date beginOfDay = DateUtil.beginOfDay(date);
Date endOfDay = DateUtil.endOfDay(date);
String conditionBeginOfDay = null;
String conditionEndOfDay = null;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(type==null){
conditionBeginOfDay = startTime;
conditionEndOfDay = endTime;
}else if(type ==1){
conditionBeginOfDay = DateUtil.formatDateTime(DateUtil.offsetDay(beginOfDay, -30));
conditionEndOfDay = DateUtil.formatDateTime(endOfDay);
}else if(type ==2){
//获取前月的第一天
Calendar c=Calendar.getInstance();//获取当前日期
c.add(Calendar.MONTH, -1);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
c.set(Calendar.HOUR, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
conditionBeginOfDay = format.format(c.getTime());
//获取前月的最后一天
Calendar ca = Calendar.getInstance();
ca.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天
ca.set(Calendar.HOUR, 23);
ca.set(Calendar.MINUTE, 59);
ca.set(Calendar.SECOND, 59);
ca.set(Calendar.MILLISECOND, 999);
conditionEndOfDay = format.format(ca.getTime());
}else if(type ==3){
//获取当前月第一天
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
c.set(Calendar.HOUR, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
conditionBeginOfDay = format.format(c.getTime());
//获取当前月最后一天
Calendar ca = Calendar.getInstance();
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
ca.set(Calendar.HOUR, 23);
ca.set(Calendar.MINUTE, 59);
ca.set(Calendar.SECOND, 59);
ca.set(Calendar.MILLISECOND, 999);
conditionEndOfDay = format.format(ca.getTime());
}else{
Calendar c=Calendar.getInstance();//获取当前日期
c.add(Calendar.MONTH, -12);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
c.set(Calendar.HOUR, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
conditionBeginOfDay = format.format(c.getTime());
conditionEndOfDay = DateUtil.formatDateTime(endOfDay);
}
if(tenantId !=null && !"".equals(tenantId)){
if(UserTypeUtil.SYS_USER_TYPE_FOUR.equals(sysUser.getUserType())){
//运维管理人员
}else{
if(sysUser.getUserId() !=UserTypeUtil.USER_ID){
Long logOperatorId = sysUser.getOperatorId();
if ("01".equals(sysUser.getUserType())) {
//运营商看自己的场站
map= xhpcStatisticsServiceMapper.getWorkHistoryOrderList(operatorId,chargingStationId,chargingPileId,terminalId,stopReason,1,logOperatorId,tenantId,conditionBeginOfDay,conditionEndOfDay);
}else{
//查询赋值的场站
map= xhpcStatisticsServiceMapper.getWorkHistoryOrderList(operatorId,chargingStationId,chargingPileId,terminalId,stopReason,2,logUserId,tenantId,conditionBeginOfDay,conditionEndOfDay);
}
}else{
//全部桩
map= xhpcStatisticsServiceMapper.getWorkHistoryOrderList(operatorId,chargingStationId,chargingPileId,terminalId,stopReason,0,null,tenantId,conditionBeginOfDay,conditionEndOfDay);
}
}
}
return map;
}
private Map<String, Object> averageOrder(Integer status,Integer type,Long logOperatorId,Long operatorId, Long chargingStationId, Long chargingPileId, String tenantId,String conditionBeginOfDay,String conditionEndOfDay) {
List<Map<String, Object>> dateOrder = xhpcStatisticsServiceMapper.getDateOrderCount(type,status,logOperatorId,operatorId,chargingStationId,chargingPileId,tenantId,conditionBeginOfDay,conditionEndOfDay);

View File

@ -1430,7 +1430,7 @@
COUNT(xh.history_order_id) totalOrder,
xcs.`name` name,
IFNULL(ut.empty,0) emptyorder,
concat(format(ifnull(empty/COUNT(xh.history_order_id)*100,0), 2),"%") orders
concat(format(ifnull(empty/COUNT(xh.history_order_id)*100,0), 2),"%") emptyOrderRate
FROM `xhpc_history_order` as xh
LEFT JOIN xhpc_charging_station xcs on xcs.charging_station_id =xh.charging_station_id
LEFT join (SELECT COUNT(xh.history_order_id) empty,xh.charging_station_id
@ -1465,7 +1465,7 @@
COUNT(xh.history_order_id) totalOrder,
xt.`name` name,
IFNULL(ut.empty,0) emptyorder,
concat(format(ifnull(empty/COUNT(xh.history_order_id)*100,0), 2),"%") orders
concat(format(ifnull(empty/COUNT(xh.history_order_id)*100,0), 2),"%") emptyOrderRate
FROM `xhpc_history_order` as xh
LEFT JOIN xhpc_charging_station xcs on xcs.charging_station_id =xh.charging_station_id
LEFT JOIN xhpc_terminal xt on xt.terminal_id =xh.terminal_id
@ -1496,5 +1496,52 @@
GROUP BY xh.terminal_id
</select>
<select id="getWorkHistoryOrderList" resultType="map">
select
count(xwho.history_order_id) totalOrder,
format(ifnull(empty/COUNT(xh.history_order_id)*100,0), 2) emptyOrderRate
FROM `xhpc_history_order` as xh
from xhpc_work_history_order xwho
LEFT JOIN (select
xwho.history_order_id
from xhpc_work_history_order xwho
where xwho.end_time &gt;=#{beginOfDay} and xwho.end_time &lt;= #{endOfDay} and xwho.total_price=0
<if test="operatorId !=null">
and xwho.charging_station_id in (select charging_station_id from xhpc_charging_station where operator_id=#{operatorId})
</if>
<if test="chargingStationId!=null">
and xwho.charging_station_id=#{chargingStationId}
</if>
<if test="chargingPileId !=null">
and xwho.terminal_id in (select terminal_id from xhpc_terminal where charging_pile_id=#{chargingPileId})
</if>
<if test="stopReason !=null and stopReason !=''">
and xwho.stop_reason_evcs_name LIKE concat('%',#{stopReason}, '%')
</if>
<if test="terminalId !=null">
and xwho.terminal_id =#{terminalId}
</if>
<if test="tenantId !=null and '' !=tenantId">
and xwho.tenant_id=#{tenantId}
</if>) ut on ut.history_order_id = xwho.history_order_id
where xwho.end_time &gt;=#{beginOfDay} and xwho.end_time &lt;= #{endOfDay}
<if test="operatorId !=null">
and xwho.charging_station_id in (select charging_station_id from xhpc_charging_station where operator_id=#{operatorId})
</if>
<if test="chargingStationId!=null">
and xwho.charging_station_id=#{chargingStationId}
</if>
<if test="chargingPileId !=null">
and xwho.terminal_id in (select terminal_id from xhpc_terminal where charging_pile_id=#{chargingPileId})
</if>
<if test="terminalId !=null">
and xwho.terminal_id =#{terminalId}
</if>
<if test="stopReason !=null and stopReason !=''">
and xwho.stop_reason_evcs_name LIKE concat('%',#{stopReason}, '%')
</if>
<if test="tenantId !=null and '' !=tenantId">
and xwho.tenant_id=#{tenantId}
</if>
</select>
</mapper>