大屏接口

master
sunjianxi 12 months ago
parent 15e5c7f621
commit 77c7c8237b
  1. 120
      src/main/java/org/springblade/modules/business/contraller/LargeScreenController.java
  2. 6
      src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.java
  3. 33
      src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.xml
  4. 14
      src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java
  5. 88
      src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.xml
  6. 10
      src/main/java/org/springblade/modules/business/pojo/vo/workorder/WorkOrderVO.java
  7. 5
      src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java
  8. 12
      src/main/java/org/springblade/modules/business/service/IWorkOrderService.java
  9. 10
      src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java
  10. 34
      src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java

@ -0,0 +1,120 @@
package org.springblade.modules.business.contraller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tool.api.R;
import org.springblade.modules.business.pojo.entity.workorder.WorkOrderLog;
import org.springblade.modules.business.service.IMaintenanceTaskService;
import org.springblade.modules.business.service.IWorkOrderLogService;
import org.springblade.modules.business.service.IWorkOrderService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 大屏 控制器
*
* @author BladeX
* @since 2024-10-14
*/
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping(CommonConstant.APPLICATION_PROJECT + "/large-screen")
public class LargeScreenController extends BladeController {
private final IWorkOrderService workOrderService;
private final IMaintenanceTaskService maintenanceTaskService;
/**
* 故障设备TOP5
*/
@GetMapping("/select-fault-equip-top5")
public R<List<Map<String,String>>> selectFaultEquipTop5() {
List<Map<String,String>> list = workOrderService.selectFaultEquipTop5();
return R.data(list);
}
/**
* 设备概况
*/
@GetMapping("/select-equip-overview")
public R<List<Map<String,String>>> selectEquipOverview() {
List<Map<String,String>> list = workOrderService.selectEquipOverview();
return R.data(list);
}
/**
* 设备维修数量统计
*/
@GetMapping("/select-equip-repair-count")
public R<List<Map<String,String>>> selectEquipRepairCount() {
List<Map<String,String>> list = workOrderService.selectEquipRepairCount();
return R.data(list);
}
/**
* 设备维保数量统计
*/
@GetMapping("/select-maintenance-task-count")
public R<List<Map<String,String>>> selectMaintenanceTaskCount() {
List<Map<String,String>> list = maintenanceTaskService.selectMaintenanceTaskCount();
return R.data(list);
}
/**
* 当年每个月设备维修数量
*/
@GetMapping("/select-equip-repair-count-by-month")
public R<List<Map<String,String>>> selectEquipRepairCountByMonth(String deviceId) {
List<Map<String,String>> list = workOrderService.selectEquipRepairCountByMonth(deviceId);
return R.data(list);
}
/**
* 平均故障响应时间
*/
@GetMapping("/select-average-fault-response-time")
public R<Integer> selectAverageFaultResponseTime(String month) {
if(StringUtils.isEmpty(month)){
month = DateFormatUtils.format(new Date(),"yyyy-MM");
}
Integer duration = workOrderService.selectAverageFaultResponseTime(month);
return R.data(duration);
}
/**
* 平均故障修复时间
*/
@GetMapping("/select-average-fault-repair-time")
public R<Integer> selectAverageFaultRepairTime(String month) {
if(StringUtils.isEmpty(month)){
month = DateFormatUtils.format(new Date(),"yyyy-MM");
}
Integer duration = workOrderService.selectAverageFaultRepairTime(month);
return R.data(duration);
}
/**
* 巡检任务状态统计
*/
@GetMapping("/select-maintenance-task-status")
public R<List<Map<String,String>>> selectMaintenanceTaskStatus(String startTimeBegin,String startTimeEnd) {
List<Map<String,String>> list = maintenanceTaskService.selectMaintenanceTaskStatus(startTimeBegin,startTimeEnd);
return R.data(list);
}
}

@ -7,6 +7,7 @@ import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask;
import org.springblade.modules.business.pojo.vo.MaintenanceTaskVO;
import java.util.List;
import java.util.Map;
/**
* 维保任务 Mapper 接口
@ -17,4 +18,9 @@ import java.util.List;
public interface MaintenanceTaskMapper extends BaseMapper<MaintenanceTask> {
List<MaintenanceTaskVO> limsTaskList(@Param("deptId") String deptId);
List<Map<String,String>> selectMaintenanceTaskCount();
List<Map<String,String>> selectMaintenanceTaskStatus(@Param("startTimeBegin")String startTimeBegin,@Param("startTimeEnd")String startTimeEnd);
}

@ -28,4 +28,37 @@
AND b.dept_id = #{deptId}
</if>
</select>
<select id="selectMaintenanceTaskCount" resultType="map">
select count(1) as "count","总数量" as "name" from lab_maintenance_task where is_deleted = 0
UNION
select count(1) as "count","维保中" as "name" from lab_maintenance_task where task_status != 4 and is_deleted = 0
UNION
select count(1) as "count","已维保" as "name" from lab_maintenance_task where task_status = 4 and is_deleted = 0
</select>
<select id="selectMaintenanceTaskStatus" resultType="map">
SELECT
count( 1 ) AS "count",
CASE
WHEN ( task_status = 0 OR task_status = 1 ) THEN
'待巡检'
WHEN task_status = 2 THEN
'巡检中'
WHEN task_status = 3 THEN
'待确认' ELSE '已完成'
END AS "taskStatus"
FROM
lab_maintenance_task
where is_deleted = 0
<if test="startTimeBegin != null and startTimeBegin != ''">
AND start_time <![CDATA[>=]]> #{startTimeBegin}
</if>
<if test="startTimeEnd != null and startTimeEnd != ''">
AND start_time <![CDATA[<=]]> #{startTimeEnd}
</if>
GROUP BY
taskStatus
</select>
</mapper>

@ -11,6 +11,7 @@ import org.springblade.modules.business.pojo.vo.PieStatVO;
import org.springblade.modules.business.pojo.vo.workorder.WorkOrderVO;
import java.util.List;
import java.util.Map;
/**
* 工单表 Mapper 接口
@ -40,5 +41,18 @@ public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
List<PieStatVO> selectDeptCount(String startTime, String endTime);
List<Map<String,String>> selectFaultEquipTop5();
List<Map<String,String>> selectEquipOverview();
List<Map<String,String>> selectEquipRepairCount();
List<Map<String,String>> selectEquipRepairCountByMonth(@Param("deviceId")String deviceId);
Integer selectAverageFaultResponseTime(@Param("month")String month);
Integer selectAverageFaultRepairTime(@Param("month")String month);
}

@ -28,4 +28,92 @@
b.dept_name
</select>
<select id="selectFaultEquipTop5" resultType="map">
SELECT
count( 1 ) as "count",
device_id as "deviceId",
device_name as "deviceName"
FROM
lab_work_order
WHERE
device_id IS NOT NULL
AND device_name IS NOT NULL
AND device_name != ''
AND is_deleted = 0
GROUP BY
device_id
ORDER BY
count( 1 ) DESC
LIMIT 5
</select>
<select id="selectEquipOverview" resultType="map">
select count(1) as "count","设备总数" as "name" from lab_device AND is_deleted = 0
UNION
select count(1) as "count","维修设备" as "name" from lab_device where run_status = 2 AND is_deleted = 0
UNION
select count(1) as "count","在保设备" as "name" from lab_device where is_warran = 0 AND is_deleted = 0
UNION
select count(1) as "count","未保设备" as "name" from lab_device where is_deleted = 0 AND (is_warran != 0 or is_warran is null)
</select>
<select id="selectEquipRepairCount" resultType="map">
select count(1) as "count","总数量" as "name" from lab_work_order
UNION
select count(1) as "count","维修中" as "name" from lab_work_order where status not in (202,203,204) AND is_deleted = 0
UNION
select count(1) as "count","已维修" as "name" from lab_work_order where status in (202,203,204) AND is_deleted = 0
</select>
<select id="selectEquipRepairCountByMonth" resultType="map">
SELECT
a.MONTH,
IFNULL( b.count, 0 ) AS "count"
FROM
(
SELECT
SUBSTRING_INDEX( SUBSTRING_INDEX( '01,02,03,04,05,06,07,08,09,10,11,12', ',', help_topic_id + 1 ), ',',- 1 ) AS "month"
FROM
mysql.help_topic
WHERE
help_topic_id <![CDATA[<]]> (
LENGTH( '1,2,3,4,5,6,7,8,9,10,11,12' )) - LENGTH(
REPLACE ( '1,2,3,4,5,6,7,8,9,10,11,12', ',', '' )) + 1
) a
LEFT JOIN (
SELECT
count( 1 ) AS "count",
DATE_FORMAT( create_time, '%m' ) AS "month"
FROM
lab_work_order
WHERE is_deleted = 0
AND DATE_FORMAT( create_time, '%Y-%m' ) = DATE_FORMAT( NOW(), '%Y-%m' )
<if test="deviceId != null and deviceId != ''">
AND device_id = #{deviceId}
</if>
GROUP BY
DATE_FORMAT( create_time, '%Y-%m' )
) b ON a.MONTH = b.MONTH
</select>
<select id="selectAverageFaultResponseTime" resultType="java.lang.Integer">
SELECT
IFNULL( ROUND( sum( TIMESTAMPDIFF( MINUTE, filling_time, dispatch_time ))/ count( 1 )), 0 ) AS "duration"
FROM
lab_work_order
WHERE
is_deleted = 0 AND DATE_FORMAT( create_time, '%Y-%m' ) = #{month}
</select>
<select id="selectAverageFaultRepairTime" resultType="java.lang.Integer">
SELECT
IFNULL( ROUND( sum( TIMESTAMPDIFF( MINUTE, dispatch_time, finish_time ))/ count( 1 )), 0 ) AS "duration"
FROM
lab_work_order
WHERE
is_deleted = 0
AND dispatch_time IS NOT NULL
AND finish_time IS NOT NULL
AND DATE_FORMAT( create_time, '%Y-%m' ) = #{month}
</select>
</mapper>

@ -43,8 +43,18 @@ public class WorkOrderVO extends WorkOrder {
*/
private String repairPersonName;
/**
* 维修人员电话
*/
private String repairPersonPhone;
/**
* 审批人
*/
private String approvePersonName;
/**
* 提交用户地址
*/
private String address;
}

@ -11,6 +11,7 @@ import org.springframework.http.ResponseEntity;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* 维保任务 服务类
@ -39,4 +40,8 @@ public interface IMaintenanceTaskService extends BaseService<MaintenanceTask> {
MaintenanceTask repairDetail(Long taskId);
void taskDetailConfiguration(Long taskId, HttpServletResponse httpServletResponse) throws IOException;
public List<Map<String,String>> selectMaintenanceTaskCount();
public List<Map<String,String>> selectMaintenanceTaskStatus(String startTimeBegin,String startTimeEnd);
}

@ -7,6 +7,7 @@ import org.springblade.modules.business.pojo.vo.PieStatVO;
import org.springblade.modules.business.pojo.vo.workorder.WorkOrderVO;
import java.util.List;
import java.util.Map;
/**
* 工单表 服务类
@ -82,4 +83,15 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
public void repairPlanRefuse(WorkOrder workOrder);
public void repairPlanSubmit(WorkOrder workOrder);
public List<Map<String,String>> selectFaultEquipTop5();
public List<Map<String,String>> selectEquipOverview();
public List<Map<String,String>> selectEquipRepairCount();
public List<Map<String,String>> selectEquipRepairCountByMonth(String deviceId);
public Integer selectAverageFaultResponseTime(String month);
public Integer selectAverageFaultRepairTime(String month);
}

@ -141,5 +141,15 @@ public class MaintenanceTaskServiceImpl extends BaseServiceImpl<MaintenanceTaskM
}
@Override
public List<Map<String, String>> selectMaintenanceTaskCount() {
return baseMapper.selectMaintenanceTaskCount();
}
@Override
public List<Map<String, String>> selectMaintenanceTaskStatus(String startTimeBegin, String startTimeEnd) {
return baseMapper.selectMaintenanceTaskStatus(startTimeBegin,startTimeEnd);
}
}

@ -91,9 +91,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 维修人员
User repairPerson = UserCache.getUser(workOrderVO.getRepairPerson());
workOrderVO.setRepairPersonName(repairPerson != null ? repairPerson.getRealName() : "");
workOrderVO.setRepairPersonPhone(repairPerson != null ? repairPerson.getPhone() : "");
// 审批人员
User approvePerson = UserCache.getUser(workOrderVO.getApprovePerson());
workOrderVO.setApprovePersonName(approvePerson != null ? approvePerson.getRealName() : "");
//提交用户地址
User createUser = UserCache.getUser(detail.getCreateUser());
workOrderVO.setAddress(createUser != null ? user.getAddress() : "");
return workOrderVO;
}
@ -292,6 +296,36 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
this.updateById(workOrderOld);
}
@Override
public List<Map<String, String>> selectFaultEquipTop5() {
return baseMapper.selectFaultEquipTop5();
}
@Override
public List<Map<String, String>> selectEquipOverview() {
return baseMapper.selectEquipOverview();
}
@Override
public List<Map<String, String>> selectEquipRepairCount() {
return baseMapper.selectEquipRepairCount();
}
@Override
public List<Map<String, String>> selectEquipRepairCountByMonth(String deviceId) {
return baseMapper.selectEquipRepairCountByMonth(deviceId);
}
@Override
public Integer selectAverageFaultResponseTime(String month) {
return baseMapper.selectAverageFaultResponseTime(month);
}
@Override
public Integer selectAverageFaultRepairTime(String month) {
return baseMapper.selectAverageFaultRepairTime(month);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void repairPlanRefuse(WorkOrder workOrder) {

Loading…
Cancel
Save