xiangpei
2024-09-18 5b76d629eef02be2f8c7c8ccde13d02aee25e63b
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -26,6 +26,7 @@
import com.ycl.platform.wvp.WVPResult;
import com.ycl.system.Result;
import com.ycl.system.domain.SysConfig;
import com.ycl.system.entity.SysDictData;
import com.ycl.system.mapper.SysConfigMapper;
import com.ycl.system.mapper.SysDictDataMapper;
import com.ycl.system.model.LoginUser;
@@ -55,11 +56,6 @@
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
@@ -77,7 +73,6 @@
@RequiredArgsConstructor
public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService {
    private final WorkOrderMapper workOrderMapper;
    private final YwPointService ywPointService;
    private final WorkOrderAuditingRecordMapper workOrderAuditingRecordMapper;
    private final WorkOrderAuditingRecordService workOrderAuditingRecordService;
@@ -86,9 +81,8 @@
    private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper;
    private final WorkOrderErrorTypeServiceImpl workOrderErrorTypeService;
    private final SysConfigMapper configMapper;
    private final ServerConfig serverConfig;
    private final ReportMapper reportMapper;
    private final SysDictDataMapper dictDataMapper;
    private final WorkOrderCheckImgMapper workOrderCheckImgMapper;
    @Value("${rtsp.server:http://127.0.0.1:7788}")
    private String rtspServer;
@@ -101,7 +95,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean innerAddWorkOrder(List<WorkOrder> workOrderList) {
    public synchronized Boolean innerAddWorkOrder(List<WorkOrder> workOrderList) {
        int total = workOrderList.size();
        workOrderList.stream().filter(item -> {
            return StringUtils.hasText(item.getSerialNumber()) && Objects.nonNull(item.getStatus()) && !CollectionUtils.isEmpty(item.getErrorTypeList());
@@ -406,7 +400,7 @@
        List<WorkOrderYwConditionRecordVO> ywConditionList = workOrderYwConditionRecordMapper.selectYwConditionByYwId(workOrderNo);
        ywConditionList.stream().forEach(item -> {
            if (Objects.nonNull(item.getSysMsg()) && item.getSysMsg()) {
                item.setCommitUserName("系统消息");
                item.setUnitName("系统消息");
            }
        });
        return ywConditionList;
@@ -689,6 +683,8 @@
                FFmpegFrameGrabber grabber = null;
                try {
                    grabber = FFmpegFrameGrabber.createDefault(rtspUrl);
                    //设置10s超时
                    grabber.setTimeout(10000);
                    grabber.start();
                    Frame frame = grabber.grabImage(); // 直接捕获一帧
                    if (frame != null) {
@@ -763,19 +759,45 @@
        Date now = new Date();
        if (Objects.nonNull(beforeRecord)) {
            if (beforeRecord.getStartCreateTime().after(now)) {
            if (now.before(beforeRecord.getBeginCreateTime())) {
                process.setBeforeReportMsg("事前报备已失效");
            } else if (beforeRecord.getEndCreateTime().before(now)){
            } else if (now.after(beforeRecord.getEndCreateTime())){
                process.setBeforeReportMsg("事前报备未生效");
            } else {
                process.setBeforeReportMsg("已事前报备");
            }
        }
        if (Objects.nonNull(afterRecord)) {
            if (afterRecord.getStartCreateTime().after(now)) {
            if (now.before(afterRecord.getBeginCreateTime())) {
                process.setAfterReportMsg("事后报备已失效");
            } else if (afterRecord.getEndCreateTime().before(now)){
            } else if (now.after(afterRecord.getEndCreateTime())){
                process.setAfterReportMsg("事后报备未生效");
            } else {
                process.setAfterReportMsg("已事后报备");
            }
        }
        return Result.ok().data(process);
    }
    @Override
    public Result detailByNo(String workOrderNo) {
        WorkOrderDetailVO workOrder = baseMapper.detailByNo(workOrderNo);
        // 是否报备
        boolean hasReport = new LambdaQueryChainWrapper<>(reportMapper)
                .eq(Report::getSerialNumber, workOrder.getSerialNumber())
                .exists();
        workOrder.setHasReport(hasReport);
        // 故障类型
        List<SysDictData> errorList = workOrderErrorTypeService.getBaseMapper().getErrorList(workOrder.getWorkOrderNo());
        List<String> errList = errorList.stream().map(SysDictData::getDictLabel).collect(Collectors.toList());
        workOrder.setErrorTypeList(errList);
        // 检测图片
        List<WorkOrderCheckImg> imgList = new LambdaQueryChainWrapper<>(workOrderCheckImgMapper)
                .eq(WorkOrderCheckImg::getWorkOrderNo, workOrderNo)
                .orderByDesc(WorkOrderCheckImg::getCreateTime)
                .last("limit 20")
                .list();
        workOrder.setImgList(imgList);
        return Result.ok().data(workOrder);
    }
}