更改统计接口

This commit is contained in:
lujiang 2024-08-23 15:53:38 +08:00
parent ad8a38fb97
commit 6ae3116e45
4 changed files with 136 additions and 114 deletions

View File

@ -84,20 +84,6 @@ public class RepairController extends BaseController {
return toAjax(repairService.eval(repairDTO.getRepair(), userId)); return toAjax(repairService.eval(repairDTO.getRepair(), userId));
} }
/**
* 工单列表
* menu:1.报修查询3派单入口5维修入口, 7 管理员,9 楼层管理员
* <p>
* 报修查询全部处理中待评价已评价无效申请 type对应值allprocessevalingevaledinvalid
* 派单入口重新派单待派单已派单已关闭无效申请 type对应值anewwaitalreadyclose
* 维修入口待完成进行中已完成 type对应值waitworkingclose
* 管理员重派单全部无效申请 type对应值anewallinvalid 小程序暂时用不到
* 楼层管理员全部无效申请 type对应值allinvalid
*
* name : 工单描述搜索关键字
* </p>
*/
/** /**
* 工单列表 * 工单列表
* role 1.普通用户3派单员5维修人员, 7管理员, 9 楼层管理员 * role 1.普通用户3派单员5维修人员, 7管理员, 9 楼层管理员

View File

@ -9,11 +9,13 @@ import com.ics.admin.service.IRepairService;
import com.ics.admin.service.IRepairStatsService; import com.ics.admin.service.IRepairStatsService;
import com.ics.common.core.controller.BaseController; import com.ics.common.core.controller.BaseController;
import com.ics.common.core.domain.R; import com.ics.common.core.domain.R;
import com.ics.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.wf.jwtp.annotation.RequiresPermissions; import org.wf.jwtp.annotation.RequiresPermissions;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -99,49 +101,89 @@ public class RepairStatsController extends BaseController {
/** /**
* 第二三行 工单统计工单完成情况评价情况 * 第二三行 工单统计工单完成情况评价情况
* 日期格式示例2024-08-23
* @param type repair 工单统计 end 工单完成情况 eval 评价情况
*/ */
@RequiresPermissions(value = {"repair:manage:operator"}) @RequiresPermissions(value = {"repair:manage:operator"})
@RequestMapping("repairStats") @RequestMapping("repairStats")
public R repairStats() { public R repairStats(String startDate, String endDate, String type) {
return R.ok().put("currentMonth", repairWorkerStatsService.repairStats(true)) Date start, end;
.put("currentYear", repairWorkerStatsService.repairStats(false)); try {
start = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, startDate + " 00:00:00");
end = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, endDate + " 23:59:59");
} catch (Exception e) {
return R.error("参数错误");
}
return R.ok().put("data", repairWorkerStatsService.repairStats(start, end, type));
} }
/** /**
* 第四行 左侧 楼层负责人情况统计 * 第四行 左侧 楼层负责人情况统计
* 日期格式示例2024-08-23
*/ */
@RequiresPermissions(value = {"repair:manage:operator"}) @RequiresPermissions(value = {"repair:manage:operator"})
@RequestMapping("floorStats") @RequestMapping("floorStats")
public R floorStats(String date) { public R floorStats(String startDate, String endDate) {
return R.ok().put("data", repairWorkerStatsService.floorStats(date)); Date start, end;
try {
start = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, startDate + " 00:00:00");
end = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, endDate + " 23:59:59");
} catch (Exception e) {
return R.error("参数错误");
}
return R.ok().put("data", repairWorkerStatsService.floorStats(start, end));
} }
/** /**
* 第四行 右上 设备故障统计 * 第四行 右上 设备故障统计
* 日期格式示例2024-08-23
*/ */
@RequiresPermissions(value = {"repair:manage:operator"}) @RequiresPermissions(value = {"repair:manage:operator"})
@RequestMapping("deviceStats") @RequestMapping("deviceStats")
public R deviceStats(String date) { public R deviceStats(String startDate, String endDate) {
return R.ok().put("data", repairWorkerStatsService.deviceStats(date)); Date start, end;
try {
start = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, startDate + " 00:00:00");
end = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, endDate + " 23:59:59");
} catch (Exception e) {
return R.error("参数错误");
}
return R.ok().put("data", repairWorkerStatsService.deviceStats(start, end));
} }
/** /**
* 第四行 右下 故障类型统计 * 第四行 右下 故障类型统计
* 日期格式示例2024-08-23
*/ */
@RequiresPermissions(value = {"repair:manage:operator"}) @RequiresPermissions(value = {"repair:manage:operator"})
@RequestMapping("failureStats") @RequestMapping("failureStats")
public R failureStats(String date) { public R failureStats(String startDate, String endDate) {
return R.ok().put("data", repairWorkerStatsService.failureStats(date)); Date start, end;
try {
start = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, startDate + " 00:00:00");
end = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, endDate + " 23:59:59");
} catch (Exception e) {
return R.error("参数错误");
}
return R.ok().put("data", repairWorkerStatsService.failureStats(start, end));
} }
/** /**
* 第五行 设备品牌评价 统计 * 第五行 设备品牌评价 统计
* 日期格式示例2024-08-23
*/ */
@RequiresPermissions(value = {"repair:manage:operator"}) @RequiresPermissions(value = {"repair:manage:operator"})
@RequestMapping("deviceTypeStats") @RequestMapping("deviceTypeStats")
public R deviceTypeStats(String date) { public R deviceTypeStats(String startDate, String endDate) {
Date start, end;
try {
start = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, startDate + " 00:00:00");
end = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, endDate + " 23:59:59");
} catch (Exception e) {
return R.error("参数错误");
}
startPage(); startPage();
return result(repairWorkerStatsService.deviceTypeStats(date)); return result(repairWorkerStatsService.deviceTypeStats(start, end));
} }
} }

View File

@ -43,28 +43,28 @@ public interface IRepairStatsService {
/** /**
* 第二三行 工单统计工单完成情况评价情况 * 第二三行 工单统计工单完成情况评价情况
* *
* @param isMonth true 本月false 本年 * @param type repair 工单统计 end 工单完成情况 eval 评价情况
* @return * @return
*/ */
Map<String, Object> repairStats(boolean isMonth); Map<String, Object> repairStats(Date start, Date end, String type);
/** /**
* 第四行 左侧 楼层负责人情况统计 * 第四行 左侧 楼层负责人情况统计
*/ */
Map<String, Object> floorStats(String date); Map<String, Object> floorStats(Date start, Date end);
/** /**
* 第四行 右上 设备故障统计 * 第四行 右上 设备故障统计
*/ */
Map<String, Object> deviceStats(String date); Map<String, Object> deviceStats(Date start, Date end);
/** /**
* 第四行 右下 故障类型统计 * 第四行 右下 故障类型统计
*/ */
List<Map<String, Object>> failureStats(String date); List<Map<String, Object>> failureStats(Date start, Date end);
/** /**
* 第五行 设备品牌评价 统计 * 第五行 设备品牌评价 统计
*/ */
List<RepairDivceTypeStatsVo> deviceTypeStats(String date); List<RepairDivceTypeStatsVo> deviceTypeStats(Date start, Date end);
} }

View File

@ -62,38 +62,38 @@ public class RepairStatsServiceImpl implements IRepairStatsService {
} }
@Override @Override
public Map<String, Object> repairStats(boolean isMonth) { public Map<String, Object> repairStats(Date start, Date end, String type) {
List<RepairStatsVo> list = isMonth ? List<RepairStatsVo> list = repairStatsMapper.repairStats(start, end);
repairStatsMapper.repairStats(getDate(null, 2, true), getDate(null, 2, false)) :
repairStatsMapper.repairStats(getDate(null, 3, true), getDate(null, 3, false));
if (list == null || list.size() == 0) return null;
RepairStatsVo repairStatsVo = list.get(0);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("stats", repairStatsVo); if (list == null || list.size() == 0) return map;
List<Map<String, Object>> wc = new ArrayList<>(); RepairStatsVo repairStatsVo = list.get(0);
wc.add(getMap("已完成", repairStatsVo.getWc())); if ("repair".equals(type)) {
wc.add(getMap("未完成", repairStatsVo.getZs() - repairStatsVo.getWc())); map.put("stats", repairStatsVo);
map.put("wc", wc); } else if ("end".equals(type)) {
List<Map<String, Object>> timeout = new ArrayList<>(); List<Map<String, Object>> wc = new ArrayList<>();
timeout.add(getMap("严重超时", repairStatsVo.getHtimeout())); wc.add(getMap("已完成", repairStatsVo.getWc()));
timeout.add(getMap("超时", repairStatsVo.getMtimeout())); wc.add(getMap("未完成", repairStatsVo.getZs() - repairStatsVo.getWc()));
timeout.add(getMap("轻微超时", repairStatsVo.getLtimeout())); map.put("wc", wc);
timeout.add(getMap("未超时", repairStatsVo.getNtimeout())); List<Map<String, Object>> timeout = new ArrayList<>();
map.put("timeout", timeout); timeout.add(getMap("严重超时", repairStatsVo.getHtimeout()));
List<Map<String, Object>> pj = new ArrayList<>(); timeout.add(getMap("超时", repairStatsVo.getMtimeout()));
pj.add(getMap("好评", repairStatsVo.getH())); timeout.add(getMap("轻微超时", repairStatsVo.getLtimeout()));
pj.add(getMap("中评", repairStatsVo.getM())); timeout.add(getMap("未超时", repairStatsVo.getNtimeout()));
pj.add(getMap("差评", repairStatsVo.getL())); map.put("timeout", timeout);
map.put("pj", pj); } else if ("eval".equals(type)) {
List<Map<String, Object>> pj = new ArrayList<>();
pj.add(getMap("好评", repairStatsVo.getH()));
pj.add(getMap("中评", repairStatsVo.getM()));
pj.add(getMap("差评", repairStatsVo.getL()));
map.put("pj", pj);
}
return map; return map;
} }
@Override @Override
public Map<String, Object> floorStats(String date) { public Map<String, Object> floorStats(Date start, Date end) {
Date[] dates = getStartEndTime(date); List<RepairFloorStatsVo> list = repairStatsMapper.floorStats(start, end);
if (dates == null) return null;
List<RepairFloorStatsVo> list = repairStatsMapper.floorStats(dates[0], dates[1]);
List<String> y = new ArrayList<>(); List<String> y = new ArrayList<>();
List<Long> zs = new ArrayList<>(); List<Long> zs = new ArrayList<>();
List<Long> wc = new ArrayList<>(); List<Long> wc = new ArrayList<>();
@ -110,10 +110,8 @@ public class RepairStatsServiceImpl implements IRepairStatsService {
} }
@Override @Override
public Map<String, Object> deviceStats(String date) { public Map<String, Object> deviceStats(Date start, Date end) {
Date[] dates = getStartEndTime(date); List<RepairFloorStatsVo> list = repairStatsMapper.deviceStats(start, end);
if (dates == null) return null;
List<RepairFloorStatsVo> list = repairStatsMapper.deviceStats(dates[0], dates[1]);
List<String> x = new ArrayList<>(); List<String> x = new ArrayList<>();
List<Long> zs = new ArrayList<>(); List<Long> zs = new ArrayList<>();
List<Long> wc = new ArrayList<>(); List<Long> wc = new ArrayList<>();
@ -130,10 +128,8 @@ public class RepairStatsServiceImpl implements IRepairStatsService {
} }
@Override @Override
public List<Map<String, Object>> failureStats(String date) { public List<Map<String, Object>> failureStats(Date start, Date end) {
Date[] dates = getStartEndTime(date); List<RepairFloorStatsVo> list = repairStatsMapper.failureStats(start, end);
if (dates == null) return null;
List<RepairFloorStatsVo> list = repairStatsMapper.failureStats(dates[0], dates[1]);
List<Map<String, Object>> data = new ArrayList<>(); List<Map<String, Object>> data = new ArrayList<>();
for (RepairFloorStatsVo repairFloorStatsVo : list) { for (RepairFloorStatsVo repairFloorStatsVo : list) {
data.add(getMap(repairFloorStatsVo.getName(), repairFloorStatsVo.getZs())); data.add(getMap(repairFloorStatsVo.getName(), repairFloorStatsVo.getZs()));
@ -142,10 +138,8 @@ public class RepairStatsServiceImpl implements IRepairStatsService {
} }
@Override @Override
public List<RepairDivceTypeStatsVo> deviceTypeStats(String date) { public List<RepairDivceTypeStatsVo> deviceTypeStats(Date start, Date end) {
Date[] dates = getStartEndTime(date); List<RepairDivceTypeStatsVo> list = repairStatsMapper.deviceTypeStats(start, end);
if (dates == null) return null;
List<RepairDivceTypeStatsVo> list = repairStatsMapper.deviceTypeStats(dates[0], dates[1]);
for (RepairDivceTypeStatsVo rdtStatsVo : list) { for (RepairDivceTypeStatsVo rdtStatsVo : list) {
rdtStatsVo.setWcl(compute(rdtStatsVo.getClosed(), rdtStatsVo.getZs())); rdtStatsVo.setWcl(compute(rdtStatsVo.getClosed(), rdtStatsVo.getZs()));
rdtStatsVo.setHl(compute(rdtStatsVo.getH(), rdtStatsVo.getPj())); rdtStatsVo.setHl(compute(rdtStatsVo.getH(), rdtStatsVo.getPj()));
@ -169,25 +163,25 @@ public class RepairStatsServiceImpl implements IRepairStatsService {
/** /**
* 解析开始时间和结束时间 * 解析开始时间和结束时间
*/ */
private Date[] getStartEndTime(String date) { // private Date[] getStartEndTime(String date) {
if (StringUtils.isBlank(date)) return null; // if (StringUtils.isBlank(date)) return null;
Date startTime, endTime; // Date startTime, endTime;
try { // try {
if (date.indexOf("-") > 1) {//年月 // if (date.indexOf("-") > 1) {//年月
String[] ym = date.split("-"); // String[] ym = date.split("-");
Calendar calendar = getCalendar(Integer.valueOf(ym[0]), Integer.valueOf(ym[1])); // Calendar calendar = getCalendar(Integer.valueOf(ym[0]), Integer.valueOf(ym[1]));
startTime = getDate(calendar, 2, true); // startTime = getDate(calendar, 2, true);
endTime = getDate(calendar, 2, false); // endTime = getDate(calendar, 2, false);
} else {// // } else {//
Calendar calendar = getCalendar(Integer.valueOf(date), 0); // Calendar calendar = getCalendar(Integer.valueOf(date), 0);
startTime = getDate(calendar, 3, true); // startTime = getDate(calendar, 3, true);
endTime = getDate(calendar, 3, false); // endTime = getDate(calendar, 3, false);
} // }
return new Date[]{startTime, endTime}; // return new Date[]{startTime, endTime};
} catch (NumberFormatException e) { // } catch (NumberFormatException e) {
return null; // return null;
} // }
} // }
private Map<String, Object> getMap(String name, Object value) { private Map<String, Object> getMap(String name, Object value) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
@ -199,12 +193,12 @@ public class RepairStatsServiceImpl implements IRepairStatsService {
/** /**
* 获取指定年月的日历 Calendar c = getCalendar(2024, 9); * 获取指定年月的日历 Calendar c = getCalendar(2024, 9);
*/ */
private Calendar getCalendar(int year, int month) { // private Calendar getCalendar(int year, int month) {
Calendar calendar = Calendar.getInstance(); // Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year); // calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month > 0 ? month - 1 : month); // calendar.set(Calendar.MONTH, month > 0 ? month - 1 : month);
return calendar; // return calendar;
} // }
/** /**
* 获取边界日期 * 获取边界日期
@ -214,23 +208,23 @@ public class RepairStatsServiceImpl implements IRepairStatsService {
* @param start ture 开始时间 false 结束时间 * @param start ture 开始时间 false 结束时间
* @return * @return
*/ */
private Date getDate(Calendar calendar, int type, boolean start) { // private Date getDate(Calendar calendar, int type, boolean start) {
if (calendar == null) calendar = Calendar.getInstance(); // if (calendar == null) calendar = Calendar.getInstance();
String time = start ? " 00:00:00" : " 23:59:59"; // String time = start ? " 00:00:00" : " 23:59:59";
if (type == 1) { // if (type == 1) {
calendar.setFirstDayOfWeek(Calendar.MONDAY); // calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); // calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
if (!start) calendar.add(Calendar.DAY_OF_MONTH, 6); // if (!start) calendar.add(Calendar.DAY_OF_MONTH, 6);
return DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.dateTime(calendar.getTime()) + time); // return DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.dateTime(calendar.getTime()) + time);
} // }
if (type == 2) { // if (type == 2) {
calendar.set(Calendar.DAY_OF_MONTH, start ? calendar.getActualMinimum(Calendar.DAY_OF_MONTH) : calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // calendar.set(Calendar.DAY_OF_MONTH, start ? calendar.getActualMinimum(Calendar.DAY_OF_MONTH) : calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.dateTime(calendar.getTime()) + time); // return DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.dateTime(calendar.getTime()) + time);
} // }
if (type == 3) { // if (type == 3) {
calendar.set(Calendar.DAY_OF_YEAR, start ? calendar.getActualMinimum(Calendar.DAY_OF_YEAR) : calendar.getActualMaximum(Calendar.DAY_OF_YEAR)); // calendar.set(Calendar.DAY_OF_YEAR, start ? calendar.getActualMinimum(Calendar.DAY_OF_YEAR) : calendar.getActualMaximum(Calendar.DAY_OF_YEAR));
return DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.dateTime(calendar.getTime()) + time); // return DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.dateTime(calendar.getTime()) + time);
} // }
return null; // return null;
} // }
} }