From c4d5fb7107c97c53494b43c5ad73637f520316fc Mon Sep 17 00:00:00 2001 From: lujiang Date: Sat, 17 Aug 2024 15:02:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=8A=9F=E8=83=BD=E8=A1=A5?= =?UTF-8?q?=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RepairStatsController.java | 38 +++++++ .../ics/admin/mapper/RepairStatsMapper.java | 20 ++++ .../admin/service/IRepairStatsService.java | 27 ++++- .../service/impl/RepairStatsServiceImpl.java | 103 ++++++++++++++++++ .../ics/admin/vo/RepairDivceTypeStatsVo.java | 78 +++++++++++++ .../mapper/admin/RepairStatsMapper.xml | 60 +++++++++- .../src/main/resources/application-dev.yml | 5 +- 7 files changed, 327 insertions(+), 4 deletions(-) create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/RepairDivceTypeStatsVo.java diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairStatsController.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairStatsController.java index d95efa4..5e2d581 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairStatsController.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairStatsController.java @@ -89,4 +89,42 @@ public class RepairStatsController extends BaseController { return R.ok().put("currentMonth", repairWorkerStatsService.repairStats(true)) .put("currentYear", repairWorkerStatsService.repairStats(false)); } + + /** + * 第四行 左侧 楼层负责人情况统计 + */ + @RequiresPermissions(value = {"repair:manage:operator"}) + @RequestMapping("floorStats") + public R floorStats(String date) { + return R.ok().put("data", repairWorkerStatsService.floorStats(date)); + } + + /** + * 第四行 右上 设备故障统计 + */ + @RequiresPermissions(value = {"repair:manage:operator"}) + @RequestMapping("deviceStats") + public R deviceStats(String date) { + return R.ok().put("data", repairWorkerStatsService.deviceStats(date)); + } + + /** + * 第四行 右下 故障类型统计 + */ + @RequiresPermissions(value = {"repair:manage:operator"}) + @RequestMapping("failureStats") + public R failureStats(String date) { + return R.ok().put("data", repairWorkerStatsService.failureStats(date)); + } + + /** + * 第五行 设备、品牌、评价 统计 + */ + @RequiresPermissions(value = {"repair:manage:operator"}) + @RequestMapping("deviceTypeStats") + public R deviceTypeStats(String date) { + startPage(); + return result(repairWorkerStatsService.deviceTypeStats(date)); + } + } diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairStatsMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairStatsMapper.java index 63a70f3..4addadf 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairStatsMapper.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairStatsMapper.java @@ -1,6 +1,7 @@ package com.ics.admin.mapper; import com.ics.admin.vo.RepairAdminStatsVo; +import com.ics.admin.vo.RepairDivceTypeStatsVo; import com.ics.admin.vo.RepairFloorStatsVo; import com.ics.admin.vo.RepairStatsVo; import com.ics.admin.vo.RepairWorkerStatsVo; @@ -46,4 +47,23 @@ public interface RepairStatsMapper { * @return */ List repairStats(@Param("startTime") Date startTime, @Param("endTime") Date endTime); + + /** + * 第四行 左侧 楼层负责人情况统计 + */ + List floorStats(@Param("startTime") Date startTime, @Param("endTime") Date endTime); + + /** + * 第四行 右上 设备故障统计 + */ + List deviceStats(@Param("startTime") Date startTime, @Param("endTime") Date endTime); + + /** + * 第四行 右下 故障类型统计 + */ + List failureStats(@Param("startTime") Date startTime, @Param("endTime") Date endTime); + /** + * 第五行 设备、品牌、评价 统计 + */ + List deviceTypeStats(@Param("startTime") Date startTime, @Param("endTime") Date endTime); } diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairStatsService.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairStatsService.java index 3707462..567a9c4 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairStatsService.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairStatsService.java @@ -2,15 +2,18 @@ package com.ics.admin.service; import com.alibaba.fastjson.JSONObject; import com.ics.admin.vo.RepairAdminStatsVo; +import com.ics.admin.vo.RepairDivceTypeStatsVo; import com.ics.admin.vo.RepairFloorStatsVo; import com.ics.admin.vo.RepairStatsVo; import com.ics.admin.vo.RepairWorkerStatsVo; +import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; import java.util.Map; /** - * 维修人员统计接口 + * 维修人员统计接口 * * @author ics * @date 2024-08-15 @@ -36,10 +39,32 @@ public interface IRepairStatsService { * 第一行 管理员 工单与 通知统计 */ RepairAdminStatsVo repairAdminStats(); + /** * 第二、三行 工单统计、工单完成情况、评价情况 + * * @param isMonth true 本月,false 本年 * @return */ Map repairStats(boolean isMonth); + + /** + * 第四行 左侧 楼层负责人情况统计 + */ + Map floorStats(String date); + + /** + * 第四行 右上 设备故障统计 + */ + Map deviceStats(String date); + + /** + * 第四行 右下 故障类型统计 + */ + List> failureStats(String date); + + /** + * 第五行 设备、品牌、评价 统计 + */ + List deviceTypeStats(String date); } diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairStatsServiceImpl.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairStatsServiceImpl.java index 0acf863..fce70a9 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairStatsServiceImpl.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairStatsServiceImpl.java @@ -3,13 +3,16 @@ package com.ics.admin.service.impl; import com.ics.admin.mapper.RepairStatsMapper; import com.ics.admin.service.IRepairStatsService; import com.ics.admin.vo.RepairAdminStatsVo; +import com.ics.admin.vo.RepairDivceTypeStatsVo; import com.ics.admin.vo.RepairFloorStatsVo; import com.ics.admin.vo.RepairStatsVo; import com.ics.admin.vo.RepairWorkerStatsVo; import com.ics.common.utils.DateUtils; +import com.ics.common.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -86,6 +89,106 @@ public class RepairStatsServiceImpl implements IRepairStatsService { return map; } + @Override + public Map floorStats(String date) { + Date[] dates = getStartEndTime(date); + if (dates == null) return null; + List list = repairStatsMapper.floorStats(dates[0], dates[1]); + List y = new ArrayList<>(); + List zs = new ArrayList<>(); + List wc = new ArrayList<>(); + for (RepairFloorStatsVo repairFloorStatsVo : list) { + y.add(repairFloorStatsVo.getName()); + zs.add(repairFloorStatsVo.getZs()); + wc.add(repairFloorStatsVo.getClosed()); + } + Map map = new HashMap<>(); + map.put("y", y); + map.put("total", zs); + map.put("finish", wc); + return map; + } + + @Override + public Map deviceStats(String date) { + Date[] dates = getStartEndTime(date); + if (dates == null) return null; + List list = repairStatsMapper.deviceStats(dates[0], dates[1]); + List x = new ArrayList<>(); + List zs = new ArrayList<>(); + List wc = new ArrayList<>(); + for (RepairFloorStatsVo repairFloorStatsVo : list) { + x.add(repairFloorStatsVo.getName()); + zs.add(repairFloorStatsVo.getZs()); + wc.add(repairFloorStatsVo.getClosed()); + } + Map map = new HashMap<>(); + map.put("x", x); + map.put("total", zs); + map.put("finish", wc); + return map; + } + + @Override + public List> failureStats(String date) { + Date[] dates = getStartEndTime(date); + if (dates == null) return null; + List list = repairStatsMapper.failureStats(dates[0], dates[1]); + List> data = new ArrayList<>(); + for (RepairFloorStatsVo repairFloorStatsVo : list) { + data.add(getMap(repairFloorStatsVo.getName(), repairFloorStatsVo.getZs())); + } + return data; + } + + @Override + public List deviceTypeStats(String date) { + Date[] dates = getStartEndTime(date); + if (dates == null) return null; + List list = repairStatsMapper.deviceTypeStats(dates[0], dates[1]); + for (RepairDivceTypeStatsVo rdtStatsVo : list) { + rdtStatsVo.setWcl(compute(rdtStatsVo.getClosed(), rdtStatsVo.getZs())); + rdtStatsVo.setHl(compute(rdtStatsVo.getH(), rdtStatsVo.getPj())); + rdtStatsVo.setMl(compute(rdtStatsVo.getM(), rdtStatsVo.getPj())); + rdtStatsVo.setLl(compute(rdtStatsVo.getL(), rdtStatsVo.getPj())); + } + return list; + } + + /** + * 计算百分比 + */ + private String compute(long fz, long fm) { + if (fm > 0) { + DecimalFormat df = new DecimalFormat("#.##"); + return df.format((double) fz / fm * 100) + "%"; + } + return "0%"; + } + + /** + * 解析开始时间和结束时间 + */ + private Date[] getStartEndTime(String date) { + if (StringUtils.isBlank(date)) return null; + Date startTime, endTime; + try { + if (date.indexOf("-") > 1) {//年月 + String[] ym = date.split("-"); + Calendar calendar = getCalendar(Integer.valueOf(ym[0]), Integer.valueOf(ym[1])); + startTime = getDate(calendar, 2, true); + endTime = getDate(calendar, 2, false); + } else {//年 + Calendar calendar = getCalendar(Integer.valueOf(date), 0); + startTime = getDate(calendar, 3, true); + endTime = getDate(calendar, 3, false); + } + return new Date[]{startTime, endTime}; + } catch (NumberFormatException e) { + return null; + } + } + private Map getMap(String name, Object value) { Map map = new HashMap<>(); map.put("name", name); diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/RepairDivceTypeStatsVo.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/RepairDivceTypeStatsVo.java new file mode 100644 index 0000000..3825ff5 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/RepairDivceTypeStatsVo.java @@ -0,0 +1,78 @@ +package com.ics.admin.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; + +/** + * 设备类型、设备、品牌统计 + * created at 2024-8-15 21:18 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Data +public class RepairDivceTypeStatsVo implements Serializable { + private static final long serialVersionUID = -202408171342L; + /** + * 类型id + */ + private Long typeid; + /** + * 类型名 + */ + private String typename; + /** + * 设备名 + */ + private String devicename; + /** + * 品牌 + */ + private String brand; + /** + * 工单总数 + */ + private Long zs; + + /** + * 已完成 + */ + private Long closed; + + /** + * 完成率 + */ + private String wcl; + + @JsonIgnore + /** 评价总数 */ + private Long pj; + @JsonIgnore + /** 好评 */ + private Long h; + @JsonIgnore + /** 中评 */ + private Long m; + @JsonIgnore + /** 差评 */ + private Long l; + + /** + * 好评率 + */ + private String hl; + + /** + * 中评率 + */ + private String ml; + + /** + * 差评率 + */ + private String ll; + +} diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairStatsMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairStatsMapper.xml index 27a9e47..df811cf 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairStatsMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairStatsMapper.xml @@ -62,5 +62,63 @@ ]]> - + + + + + + + + \ No newline at end of file diff --git a/shoot-hand/ics-web/src/main/resources/application-dev.yml b/shoot-hand/ics-web/src/main/resources/application-dev.yml index c491e86..070b2f6 100644 --- a/shoot-hand/ics-web/src/main/resources/application-dev.yml +++ b/shoot-hand/ics-web/src/main/resources/application-dev.yml @@ -72,8 +72,9 @@ dfs: #path: /Users/lihongyuan/IdeaProjects/saas-ics/ics/ # domain: http://222.184.49.22:9227 # path: D:/ruoyi/uploadPath - domain: http://192.168.0.11:9227 - path: F:/ruoyi/uploadPath + domain: http://127.0.0.1:9227 + path: E:/ruoyi/uploadPath + # 公众号配置(必填) wx: