fuliqi
2024-11-05 3dc714284a95fe9677a964ec039b2b547547e30d
工单异步获取图片、工单导出时间参数bug
6个文件已修改
62 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdCheckResult.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/PlatformApplication.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdCheckResult.java
@@ -26,7 +26,7 @@
    private String deviceNo;
    /**
     *  摄像机品牌
     *  摄像机品牌0/1/2 海康/大华/宇视
     */
    private Integer deviceBrand;
ycl-server/src/main/java/com/ycl/PlatformApplication.java
@@ -8,6 +8,7 @@
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
import org.springframework.data.mongodb.config.EnableMongoAuditing;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -18,6 +19,7 @@
@ImportAutoConfiguration({FeignAutoConfiguration.class})
@SpringBootApplication
@EnableMongoAuditing
@EnableAsync
//@EnableScheduling
public class PlatformApplication {
    public static void main(String[] args) {
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -270,4 +270,5 @@
     * @author
     */
    void batchImportWhite(List<PointExport> dataList);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -54,7 +54,9 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
@@ -100,6 +102,8 @@
    private final ReportMapper reportMapper;
    private final WorkOrderCheckImgMapper workOrderCheckImgMapper;
    private final WorkOrderWhiteMapper workOrderWhiteMapper;
    private final DeviceInfoMapper deviceInfoMapper;
    private final ApplicationContext applicationContext;
    @Value("${rtsp.server:http://127.0.0.1:7788}")
    private String rtspServer;
@@ -459,6 +463,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result ywCondition(WorkOrderYWConditionForm form) {
        WorkOrder workOrder = baseMapper.selectById(form.getId());
        if (Objects.isNull(workOrder)) {
            throw new ServiceException("工单不存在");
@@ -475,9 +480,37 @@
        workOrderYwConditionRecord.setYwProofMaterials(form.getYwProofMaterials());
        workOrderYwConditionRecord.setSysMsg(Boolean.FALSE);
        workOrderYwConditionRecordMapper.insert(workOrderYwConditionRecord);
        //异步获取图片
        WorkOrderServiceImpl self = applicationContext.getBean(WorkOrderServiceImpl.class);
        self.getImage(workOrder);
        return Result.ok("操作成功");
    }
    @Async("threadPoolTaskExecutor")
    public void getImage(WorkOrder workOrder) {
        List<DeviceInfo> gbDevices = new LambdaQueryChainWrapper<>(deviceInfoMapper)
                .orderByDesc(DeviceInfo::getUpdateTime)
                .last("limit 1")
                .list();
        if (CollectionUtils.isEmpty(gbDevices)) {
            return;
        }
        // 国标设备的编码就是取视频流的设备编码,国标设备就一个。国标设备的每一个通道代表一个摄像头,也就是设备id是取流的通道id
        String frameImg = null;
        try {
            log.info("国标平台:{},设备编码:{},工单号:{}",gbDevices.get(0).getDeviceId(), workOrder.getSerialNumber(), workOrder.getWorkOrderNo());
            frameImg = this.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), workOrder.getSerialNumber(), workOrder.getWorkOrderNo());
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (StringUtils.hasText(frameImg)) {
            WorkOrderCheckImg img = new WorkOrderCheckImg();
            img.setWorkOrderNo(workOrder.getWorkOrderNo());
            img.setImgUrl(frameImg);
            img.setCreateTime(new Date());
            workOrderCheckImgMapper.insert(img);
        }
    }
    @Override
    public List<WorkOrderYwConditionRecordVO> selectYwConditionByYwId(String workOrderNo) {
        List<WorkOrderYwConditionRecordVO> ywConditionList = workOrderYwConditionRecordMapper.selectYwConditionByYwId(workOrderNo);
@@ -791,6 +824,7 @@
    @Override
    public synchronized String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception {
        String url = String.format(this.rtspServer + "/api/play/start/img/%s/%s", deviceId, channelId);
        log.info("访问路径{}",url);
        String result = HttpUtils.sendGet(url);
        log.info("拿到取流图片响应结果:" + result);
        WVPResult wvpResult = JSON.parseObject(result, WVPResult.class);
@@ -998,7 +1032,7 @@
            query.setStart(query.getStart() + " 00:00:00");
        }
        if (query.getEnd() == null) {
            query.setStart(format.format(DateUtils.getDayEnd(new Date())));
            query.setEnd(format.format(DateUtils.getDayEnd(new Date())));
        } else {
            query.setEnd(query.getEnd() + " 23:59:59");
        }
@@ -1083,4 +1117,6 @@
        updateWhiteList.stream().forEach(white -> workOrderWhiteMapper.updateBySerialNumber(white));
        insertWhiteList.stream().forEach(white -> workOrderWhiteMapper.insert(white));
    }
}
ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java
@@ -91,6 +91,7 @@
                img.setCreateTime(new Date());
                workOrderCheckImgMapper.insert(img);
            }
        }    }
        }
    }
}
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -105,6 +105,8 @@
        wo.overtime,
        wo.deduct,
        u.unit_name,
        u.unit_contact,
        u.unit_contact_phone,
        p.yw_person_name,
        tm.name as source,
        GROUP_CONCAT(DISTINCT da.dict_label ORDER BY da.dict_label SEPARATOR ',') AS errorType,
@@ -114,12 +116,11 @@
        INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
        INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
        INNER JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0
        INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type' <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">AND da.dict_value in <foreach
            collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach> </if>
        INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
        LEFT JOIN t_work_order_check_img ci ON ci.work_order_no = wo.work_order_no
        LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id AND p.deleted = 0
        WHERE
        wo.deleted = 0
        wo.deleted = 0 and wo.status != 'WAIT_DISTRIBUTE'
        <if test="query.unitId != null">
            AND wo.unit_id = #{query.unitId}
        </if>
@@ -132,6 +133,15 @@
        <if test="query.start != null and query.end != null">
            AND wo.create_time BETWEEN #{query.start} AND #{query.end}
        </if>
        <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">
            AND (EXISTS (
            SELECT 1
            FROM t_work_order_error_type twoet
            WHERE twoet.work_order_no = wo.work_order_no
            AND twoet.error_name in
            <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach>
            ))
        </if>
        GROUP BY
        wo.id, wo.status, wo.work_order_no, wo.serial_number,wo.create_time, wo.unit_id, wo.yw_people_id,tm.name, wo.yw_handle_time, wo.yw_result, wo.yw_check_result, wo.overtime, wo.deduct,
        u.unit_name,