fuliqi
2024-07-09 ce7964aba19721cebdd9eb7d475ac651a6dca6bf
Merge remote-tracking branch 'origin/master'
9个文件已修改
1个文件已添加
133 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderBatchAuditingForm.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/ITMonitorService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderBatchAuditingForm.java
New file
@@ -0,0 +1,36 @@
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;
}
ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java
@@ -104,7 +104,9 @@
    @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));
    }
    /**
ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
@@ -56,6 +56,13 @@
        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) {
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -68,7 +68,7 @@
     * @param cameraFunType 类型
     * @return 统计数
     */
    Map<String, String> getVideoCount(String cameraFunType);
    Map<String, String> getVideoCount(TMonitor tMonitor);
    Map<String, String> recoveryException();
}
ycl-server/src/main/java/com/ycl/platform/service/ITMonitorService.java
@@ -68,7 +68,7 @@
     * @param cameraFunType 摄像头功能类型,用于筛选视频。
     * @return 返回一个包含视频数量的Map对象,其中key为统计指标,value为对应功能类型下的统计数量。
     */
    Map<String, String> getVideoCount(String cameraFunType);
    Map<String, String> getVideoCount(TMonitor tMonitor);
    Map<String, String> recoveryException();
}
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -73,6 +73,13 @@
    Result auditing(WorkOrderAuditingForm form);
    /**
     * 批量审核
     * @param form 工单
     * @return 结果
     */
    Result batchAuditing(WorkOrderBatchAuditingForm form);
    /**
     * 运维情况
     * @param form
     * @return
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -1,5 +1,6 @@
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;
@@ -42,6 +43,7 @@
     * @return 设备资产
     */
    @Override
    @DataScope(deptAlias = "d",userAlias = "u")
    public List<TMonitorVO> selectTMonitorList(TMonitor tMonitor)
    {
        return tMonitorMapper.selectTMonitorList(tMonitor);
@@ -96,8 +98,9 @@
    }
    @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
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -1,5 +1,6 @@
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;
@@ -13,6 +14,7 @@
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;
@@ -28,10 +30,12 @@
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;
@@ -51,6 +55,7 @@
    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;
@@ -123,6 +128,49 @@
    @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)) {
@@ -148,8 +196,7 @@
                new LambdaQueryChainWrapper<>(workOrderYwConditionRecordMapper)
                        .eq(WorkOrderYwConditionRecord::getWorkOrderId, id)
                        .orderByAsc(WorkOrderYwConditionRecord::getCreateTime)
                        .last("limit 1")
                        .one());
                        .list());
    }
    @Override
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -49,8 +49,8 @@
    <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>
@@ -86,8 +86,9 @@
            <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">
@@ -236,8 +237,12 @@
               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">
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -32,7 +32,7 @@
            <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">