Merge remote-tracking branch 'origin/master'
New file |
| | |
| | | package com.ycl.platform.domain.form; |
| | | |
| | | import enumeration.general.WorkOrderStatusEnum; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotEmpty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 工单审核表单 |
| | | * |
| | | * @author:xp |
| | | * @date:2024/3/6 8:59 |
| | | */ |
| | | @Data |
| | | public class WorkOrderBatchAuditingForm { |
| | | |
| | | /** |
| | | * 审核结果 |
| | | */ |
| | | @NotBlank(message = "审核结果不能为空") |
| | | private WorkOrderStatusEnum auditingResult; |
| | | |
| | | /** |
| | | * 审核说明 |
| | | */ |
| | | private String auditingRemark; |
| | | |
| | | /** |
| | | * 故障类型 |
| | | */ |
| | | @NotBlank(message = "故障类型不能为空") |
| | | private String errorType; |
| | | |
| | | } |
| | |
| | | @GetMapping("/getVideoCount/{cameraFunType}") |
| | | public AjaxResult getVideoCount(@PathVariable String cameraFunType) |
| | | { |
| | | return success(tMonitorService.getVideoCount(cameraFunType)); |
| | | TMonitor tMonitor = new TMonitor(); |
| | | tMonitor.setCameraFunType(cameraFunType); |
| | | return success(tMonitorService.getVideoCount(tMonitor)); |
| | | } |
| | | |
| | | /** |
| | |
| | | return workOrderService.auditing(form); |
| | | } |
| | | |
| | | @PutMapping("/batchAuditing") |
| | | @ApiOperation(value = "审核", notes = "工单批量审核") |
| | | @PreAuthorize("@ss.hasPermi('work:order:audit')") |
| | | public Result batchAuditing(@RequestBody @Validated(Update.class) WorkOrderBatchAuditingForm form) { |
| | | return workOrderService.batchAuditing(form); |
| | | } |
| | | |
| | | @PutMapping("/yw-condition") |
| | | @ApiOperation(value = "运维情况", notes = "运维情况") |
| | | public Result ywCondition(@RequestBody @Validated(Update.class) WorkOrderYWConditionForm form) { |
| | |
| | | * @param cameraFunType 类型 |
| | | * @return 统计数 |
| | | */ |
| | | Map<String, String> getVideoCount(String cameraFunType); |
| | | Map<String, String> getVideoCount(TMonitor tMonitor); |
| | | |
| | | Map<String, String> recoveryException(); |
| | | } |
| | |
| | | * @param cameraFunType 摄像头功能类型,用于筛选视频。 |
| | | * @return 返回一个包含视频数量的Map对象,其中key为统计指标,value为对应功能类型下的统计数量。 |
| | | */ |
| | | Map<String, String> getVideoCount(String cameraFunType); |
| | | Map<String, String> getVideoCount(TMonitor tMonitor); |
| | | |
| | | Map<String, String> recoveryException(); |
| | | } |
| | |
| | | Result auditing(WorkOrderAuditingForm form); |
| | | |
| | | /** |
| | | * 批量审核 |
| | | * @param form 工单 |
| | | * @return 结果 |
| | | */ |
| | | Result batchAuditing(WorkOrderBatchAuditingForm form); |
| | | |
| | | /** |
| | | * 运维情况 |
| | | * @param form |
| | | * @return |
| | |
| | | package com.ycl.platform.service.impl; |
| | | |
| | | import annotation.DataScope; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ycl.platform.domain.entity.TMonitor; |
| | | import com.ycl.platform.domain.vo.TMonitorVO; |
| | |
| | | * @return 设备资产 |
| | | */ |
| | | @Override |
| | | @DataScope(deptAlias = "d",userAlias = "u") |
| | | public List<TMonitorVO> selectTMonitorList(TMonitor tMonitor) |
| | | { |
| | | return tMonitorMapper.selectTMonitorList(tMonitor); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, String> getVideoCount(String cameraFunType) { |
| | | return tMonitorMapper.getVideoCount(cameraFunType); |
| | | @DataScope(deptAlias = "d",userAlias = "u") |
| | | public Map<String, String> getVideoCount(TMonitor tMonitor) { |
| | | return tMonitorMapper.getVideoCount(tMonitor); |
| | | } |
| | | |
| | | @Override |
| | |
| | | package com.ycl.platform.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; |
| | |
| | | import com.ycl.platform.domain.vo.WorkOrderVO; |
| | | import com.ycl.platform.mapper.*; |
| | | import com.ycl.platform.service.NotifyService; |
| | | import com.ycl.platform.service.WorkOrderAuditingRecordService; |
| | | import com.ycl.platform.service.WorkOrderService; |
| | | import com.ycl.system.Result; |
| | | import com.ycl.system.model.LoginUser; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.Assert; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneId; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.concurrent.TimeUnit; |
| | |
| | | private final YwUnitMapper ywUnitMapper; |
| | | private final YwPeopleMapper ywPeopleMapper; |
| | | private final WorkOrderAuditingRecordMapper workOrderAuditingRecordMapper; |
| | | private final WorkOrderAuditingRecordService workOrderAuditingRecordService; |
| | | private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper; |
| | | private final NotifyService notifyService; |
| | | private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper; |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Result batchAuditing(WorkOrderBatchAuditingForm form) { |
| | | // 根据故障类型获取列表 |
| | | List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper) |
| | | .in(WorkOrder::getStatus, WorkOrderStatusEnum.YW_HANDLE.getValue()) |
| | | .eq(WorkOrder::getErrorType, form.getErrorType()) |
| | | .select(WorkOrder::getId, WorkOrder::getUnitId, WorkOrder::getWorkOrderNo) |
| | | .list(); |
| | | if (list.isEmpty()) { |
| | | return Result.error("没有工单可以审核"); |
| | | } |
| | | List<Integer> ids = list.stream().map(WorkOrder::getId).collect(Collectors.toList()); |
| | | // 工单状态 |
| | | LambdaUpdateWrapper<WorkOrder> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); |
| | | lambdaUpdateWrapper.in(WorkOrder::getId, ids); |
| | | lambdaUpdateWrapper.set(WorkOrder::getStatus, form.getAuditingResult()); |
| | | baseMapper.update(lambdaUpdateWrapper); |
| | | // 添加多条审核记录 |
| | | List<WorkOrderAuditingRecord> workOrderAuditingRecords = new ArrayList<>(); |
| | | for (Integer id : ids) { |
| | | WorkOrderAuditingRecord workOrderAuditingRecord = new WorkOrderAuditingRecord(); |
| | | workOrderAuditingRecord.setWorkOrderId(id); |
| | | workOrderAuditingRecord.setAuditingUser(SecurityUtils.getLoginUser().getUserId().intValue()); |
| | | workOrderAuditingRecord.setResult(form.getAuditingResult().getDesc()); |
| | | workOrderAuditingRecord.setRemark(form.getAuditingRemark()); |
| | | workOrderAuditingRecords.add(workOrderAuditingRecord); |
| | | } |
| | | workOrderAuditingRecordService.saveBatch(workOrderAuditingRecords); |
| | | // 添加新通知 |
| | | List<Notify> notifies = new ArrayList<>(); |
| | | for (WorkOrder workOrder : list) { |
| | | Notify notify = Notify.genEntityByUnit(NotifyTypeEnum.WORK_ORDER, |
| | | form.getAuditingResult().getDesc(), |
| | | workOrder.getUnitId(), |
| | | UrgentLevelEnum.WARNING, |
| | | workOrder.getWorkOrderNo()); |
| | | notifies.add(notify); |
| | | } |
| | | notifyService.saveBatch(notifies); |
| | | return Result.ok("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Result ywCondition(WorkOrderYWConditionForm form) { |
| | | WorkOrder workOrder = baseMapper.selectById(form.getId()); |
| | | if (Objects.isNull(workOrder)) { |
| | |
| | | new LambdaQueryChainWrapper<>(workOrderYwConditionRecordMapper) |
| | | .eq(WorkOrderYwConditionRecord::getWorkOrderId, id) |
| | | .orderByAsc(WorkOrderYwConditionRecord::getCreateTime) |
| | | .last("limit 1") |
| | | .one()); |
| | | .list()); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | <select id="selectTMonitorList" resultType="com.ycl.platform.domain.vo.TMonitorVO"> |
| | | select id, serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude, camera_capture_area, on_state, civil_code, integrated_device, camera_brand, address, net_working, public_security, installed_time, management_unit, mu_contact_info, storage_days |
| | | , monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format, camera_dept, hybm, lxbm, reason, default_order,recovery,recovery_time,sd.dept_name from t_monitor m |
| | | left join sys_dept sd on m.dept_id = sd.dept_id |
| | | , monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format, camera_dept, hybm, lxbm, reason, default_order,recovery,recovery_time,d.dept_name from t_monitor m |
| | | left join sys_dept d on m.dept_id = d.dept_id |
| | | <where> |
| | | <if test="serialNumber != null and serialNumber != ''"> and serial_number = #{serialNumber}</if> |
| | | <if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if> |
| | |
| | | <if test="defaultOrder != null "> and default_order = #{defaultOrder}</if> |
| | | <if test="recovery != null "> and recovery = #{recovery}</if> |
| | | <if test="recoveryTime != null "> and recovery_time = #{recoveryTime}</if> |
| | | <if test="deptId != null "> and dept_id = #{deptId}</if> |
| | | <if test="deptId != null "> and m.dept_id = #{deptId}</if> |
| | | </where> |
| | | ${params.dataScope} |
| | | </select> |
| | | |
| | | <select id="selectTMonitorById" parameterType="Long" resultMap="TMonitorResult"> |
| | |
| | | IFNULL(ROUND(SUM(IF(on_state = 1, 1, 0)) / count(*) * 100, 2), 0) as viewsPercentage, |
| | | -1 as totalFace, |
| | | -1 as totalCar |
| | | FROM t_monitor |
| | | WHERE camera_fun_type like concat('%', #{cameraFunType}, '%') |
| | | FROM t_monitor m |
| | | left join sys_dept d on m.dept_id = d.dept_id |
| | | <where> |
| | | camera_fun_type like concat('%', #{cameraFunType}, '%') |
| | | </where> |
| | | ${params.dataScope} |
| | | </select> |
| | | |
| | | <select id="recoveryException" resultType="java.util.Map"> |
| | |
| | | <if test="query.status != null"> |
| | | AND wo.status = #{query.status} |
| | | </if> |
| | | <if test="query.errorType != null and query.errType != ''"> |
| | | <if test="query.errorType != null and query.errorType != ''"> |
| | | AND wo.error_type = #{query.errorType} |
| | | </if> |
| | | <if test="query.start != null"> |