Commit cb77f23c authored by lisong's avatar lisong

月度困人故障高发使用单位相关接口

parent edb21db1
package com.yeejoin.amos.boot.module.elevator.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author system_generator
* @date 2023-11-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="AlertUseUnitStatisticsDto", description="")
public class AlertUseUnitStatisticsDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "监管单位ID")
private String supervisoryUnitId;
@ApiModelProperty(value = "监管单位名称")
private String supervisoryUnitName;
@ApiModelProperty(value = "监管单位编码")
private String supervisoryUnitOrgCode;
@ApiModelProperty(value = "统计月份")
private String statisticsDate;
@ApiModelProperty(value = "开始日期")
private String startDate;
@ApiModelProperty(value = "结束日期")
private String endDate;
@ApiModelProperty(value = "困人救援")
private Integer trappedNum;
@ApiModelProperty(value = "故障救援")
private Integer faultNum;
@ApiModelProperty(value = "电梯总量")
private Integer equipNum;
@ApiModelProperty(value = "使用单位")
private String useUnit;
@ApiModelProperty(value = "维保单位")
private String maintenanceUnit;
@ApiModelProperty(value = "电梯地址")
private String address;
}
package com.yeejoin.amos.boot.module.elevator.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.elevator.api.entity.AlertUseUnitStatistics;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* Mapper 接口
*
* @author system_generator
* @date 2023-11-08
*/
public interface AlertUseUnitStatisticsMapper extends BaseMapper<AlertUseUnitStatistics> {
List<Map<String, String>> getStatisticsMessage(@Param("startDate")String startDate, @Param("endDate")String endDate);
AlertUseUnitStatistics getUseUnitMessage(@Param("unitCode") String unitCode, @Param("equipmentId") String equipmentId, @Param("startDate")String startDate, @Param("endDate")String endDate);
}
package com.yeejoin.amos.boot.module.elevator.api.service;
import com.yeejoin.amos.boot.module.elevator.api.entity.AlertUseUnitStatistics;
import java.util.List;
/**
* 接口类
*
* @author system_generator
* @date 2023-11-08
*/
public interface IAlertUseUnitStatisticsService {
void statisticalGeneration();
List<AlertUseUnitStatistics> getList(String date);
}
package com.yeejoin.amos.boot.module.elevator.api.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
@Data
public class AlertUseUnitStatisticsVo {
@ColumnWidth(10)
@ExcelProperty(value = "序号", index = 0)
private Integer number;
@ExcelProperty(value = "困人(起)", index = 4)
private Integer trappedNum;
@ExcelProperty(value = "故障(起)", index = 5)
private Integer faultNum;
@ExcelProperty(value = "电梯总量(台)", index = 3)
private Integer equipNum;
@ColumnWidth(30)
@ExcelProperty(value = "高发事件单位", index = 1)
private String useUnit;
@ColumnWidth(30)
@ExcelProperty(value = "维保单位", index = 6)
private String maintenanceUnit;
@ColumnWidth(30)
@ExcelProperty(value = "电梯地址", index = 2)
private String address;
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.elevator.api.mapper.AlertUseUnitStatisticsMapper">
<select id="getStatisticsMessage"
resultType="java.util.Map">
SELECT mainName as maintenanceUnit, useName as useUnit, ADDRESS as address, unitCode as unitCode, equipmentId
from (
SELECT use.ADDRESS as address,
tac.equipment_id as equipmentId,
(
SELECT ME_UNIT_NAME
from idx_biz_jg_maintenance_record_info
WHERE RECORD = equipment_id
ORDER BY INFORM_START LIMIT 1
) as mainName,
use.USE_UNIT_NAME as useName,
use.USE_UNIT_CREDIT_CODE as unitCode from tz_alert_called tac
LEFT JOIN idx_biz_jg_use_info use on tac.equipment_id = use.RECORD
WHERE tac.alarm_type_code != '962'
and tac.equipment_id is not null
and use.ADDRESS is not null
and tac.call_time between #{startDate} and #{endDate}
)
GROUP BY mainName, useName, address
ORDER BY address
</select>
<select id="getUseUnitMessage"
resultType="com.yeejoin.amos.boot.module.elevator.api.entity.AlertUseUnitStatistics">
SELECT
(
SELECT count(1) from idx_biz_jg_use_info WHERE USE_UNIT_CREDIT_CODE = #{unitCode}
) as equipNum,
(
SELECT count(1) from tz_alert_called where alarm_type_code = '960' and equipment_id = #{equipmentId} and call_time between #{startDate} and #{endDate}
) as trappedNum,
(
SELECT count(1) from tz_alert_called where alarm_type_code = '961' and equipment_id = #{equipmentId} and call_time between #{startDate} and #{endDate}
) as faultNum
</select>
</mapper>
......@@ -7,12 +7,15 @@ import com.yeejoin.amos.boot.biz.common.excel.ExcelUtil;
import com.yeejoin.amos.boot.module.elevator.api.entity.AlertPlaceStatistics;
import com.yeejoin.amos.boot.module.elevator.api.entity.AlertRescueStatistics;
import com.yeejoin.amos.boot.module.elevator.api.entity.AlertStatistics;
import com.yeejoin.amos.boot.module.elevator.api.entity.AlertUseUnitStatistics;
import com.yeejoin.amos.boot.module.elevator.api.service.IAlertPlaceStatisticsService;
import com.yeejoin.amos.boot.module.elevator.api.service.IAlertRescueStatisticsService;
import com.yeejoin.amos.boot.module.elevator.api.service.IAlertStatisticsService;
import com.yeejoin.amos.boot.module.elevator.api.service.IAlertUseUnitStatisticsService;
import com.yeejoin.amos.boot.module.elevator.api.vo.AlertPlaceStatisticsExportVo;
import com.yeejoin.amos.boot.module.elevator.api.vo.AlertRescueStatisticsExportVo;
import com.yeejoin.amos.boot.module.elevator.api.vo.AlertStatisticsExportVo;
import com.yeejoin.amos.boot.module.elevator.api.vo.AlertUseUnitStatisticsVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -49,6 +52,8 @@ public class StatisticsController extends BaseController {
@Autowired
private IAlertPlaceStatisticsService alertPlaceStatisticsService;
@Autowired
private IAlertUseUnitStatisticsService alertUseUnitStatisticsService;
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/statisticalGeneration")
......@@ -199,4 +204,53 @@ public class StatisticsController extends BaseController {
ExcelUtil.createTemplate(response, "月度电梯困人故障高发区域统计", "月度电梯困人故障高发区域统计", exportVos, AlertPlaceStatisticsExportVo.class, null, false);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/statisticalUseUnitGeneration")
@ApiOperation(httpMethod = "GET", value = "生成统计数据", notes = "生成统计数据")
public ResponseModel<Object> statisticalUseUnitGeneration() {
alertUseUnitStatisticsService.statisticalGeneration();
return ResponseHelper.buildResponse("success");
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/useUnitList")
@ApiOperation(httpMethod = "GET", value = "查询列表", notes = "查询列表")
public ResponseModel<Object> useUnitList(@RequestParam(value = "date", required = false) String date) {
if (ObjectUtils.isEmpty(date)) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
Date nowDate = cal.getTime();
date = format.format(nowDate);
}
Page<AlertUseUnitStatistics> alertRescueStatisticsPage = new Page<>();
alertRescueStatisticsPage.setRecords(alertUseUnitStatisticsService.getList(date));
return ResponseHelper.buildResponse(alertRescueStatisticsPage);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/exportUseUnitData")
@ApiOperation(httpMethod = "GET", value = "月度困人故障高发使用单位导出", notes = "月度困人故障高发使用单位导出")
public void exportUseUnitData(HttpServletResponse response, @RequestParam(value = "date", required = false) String date) throws ParseException {
if (ObjectUtils.isEmpty(date)) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
Date nowDate = cal.getTime();
date = format.format(nowDate);
}
ArrayList<AlertUseUnitStatisticsVo> exportVos = new ArrayList<>();
List<AlertUseUnitStatistics> list = alertUseUnitStatisticsService.getList(date);
int number = 1;
for (AlertUseUnitStatistics item : list) {
AlertUseUnitStatisticsVo vo = new AlertUseUnitStatisticsVo();
BeanUtil.copyProperties(item, vo);
vo.setNumber(number);
number = number + 1;
exportVos.add(vo);
}
ExcelUtil.createTemplate(response, "月度困人故障高发使用单位", "月度困人故障高发使用单位", exportVos, AlertUseUnitStatisticsVo.class, null, false);
}
}
package com.yeejoin.amos.boot.module.elevator.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.elevator.api.dto.AlertUseUnitStatisticsDto;
import com.yeejoin.amos.boot.module.elevator.api.entity.AlertUseUnitStatistics;
import com.yeejoin.amos.boot.module.elevator.api.mapper.AlertUseUnitStatisticsMapper;
import com.yeejoin.amos.boot.module.elevator.api.service.IAlertUseUnitStatisticsService;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 服务实现类
*
* @author system_generator
* @date 2023-11-08
*/
@Service
public class AlertUseUnitStatisticsServiceImpl extends BaseService<AlertUseUnitStatisticsDto, AlertUseUnitStatistics, AlertUseUnitStatisticsMapper> implements IAlertUseUnitStatisticsService {
@Override
public void statisticalGeneration() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
DecimalFormat decimalFormat = new DecimalFormat("0.00");
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
Date firstDayOfMonth = cal.getTime();
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
Date lastDayOfMonth = cal.getTime();
ArrayList<AlertUseUnitStatistics> list = new ArrayList<>();
List<Map<String, String>> statisticsMessage = this.baseMapper.getStatisticsMessage(format.format(firstDayOfMonth) + " 00:00:00", format.format(lastDayOfMonth) + " 23:59:59");
if (!ObjectUtils.isEmpty(statisticsMessage)){
statisticsMessage.forEach(item -> {
if (!ObjectUtils.isEmpty(item.get("equipmentId")) && !ObjectUtils.isEmpty(item.get("unitCode"))){
AlertUseUnitStatistics useUnitMessage = this.baseMapper.getUseUnitMessage(item.get("unitCode"), item.get("equipmentId"), format.format(firstDayOfMonth) + " 00:00:00", format.format(lastDayOfMonth) + " 23:59:59");
BeanUtil.copyProperties(item, useUnitMessage);
useUnitMessage.setStartDate(format.format(firstDayOfMonth));
useUnitMessage.setEndDate(format.format(lastDayOfMonth));
useUnitMessage.setStatisticsDate(format.format(lastDayOfMonth).substring(0, 7));
list.add(useUnitMessage);
}
});
this.saveBatch(list);
}
}
@Override
public List<AlertUseUnitStatistics> getList(String date) {
LambdaQueryWrapper<AlertUseUnitStatistics> lambda = new QueryWrapper<AlertUseUnitStatistics>().lambda();
lambda.eq(AlertUseUnitStatistics :: getStatisticsDate, date);
return this.baseMapper.selectList(lambda);
}
}
\ No newline at end of file
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 to comment