fuliqi
2024-09-19 cf2ca433a7e6ef92b33c1479f60702e97c2cb1bf
OSDbug修复、合同抽检可配置、合同抽检任务空指针修复
4个文件已修改
118 ■■■■ 已修改文件
ycl-server/src/main/java/com/ycl/api/DH/lib/LibraryLoad.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/ContractTask.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/OsdTask.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/api/DH/lib/LibraryLoad.java
@@ -26,7 +26,7 @@
  /** 当前读取的目录 */
  private static String currentFold;
  /** 动态库需要写入的目录 */
  private static String EXTRACT_PATH = System.getProperty("java.io.tmpdir");
  private static String EXTRACT_PATH = "/deviceSDK/linux64";
  private static boolean written = false;
ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -15,7 +15,9 @@
import com.ycl.platform.domain.vo.WorkOrderVO;
import com.ycl.platform.mapper.*;
import com.ycl.platform.service.IContractScoreService;
import com.ycl.system.mapper.SysConfigMapper;
import com.ycl.utils.DateUtils;
import com.ycl.utils.StringUtils;
import constant.ApiConstants;
import enumeration.ContractRule;
import enumeration.ErrorType;
@@ -56,7 +58,8 @@
    private IContractScoreService contractScoreService;
    @Autowired
    private WorkOrderMapper workOrderMapper;
    @Autowired
    private SysConfigMapper sysConfigMapper;
    private static final Integer Online = 1;
    private static final Integer Offline = -1;
    private static final String AuditStatus_Pass = "1";
@@ -220,7 +223,7 @@
        for (WorkOrderVO workOrder : workOrders) {
            //检测是否报备过
            if (!CollectionUtils.isEmpty(reportNumbers)) {
                if(reportNumbers.contains(workOrder.getSerialNumber())) continue;
                if (reportNumbers.contains(workOrder.getSerialNumber())) continue;
            }
            String errorType = workOrder.getErrorType();
            //存储故障 录像或图片访问异常
@@ -323,8 +326,16 @@
     */
    public void randomDeductPic() {
        Random random = new Random();
        Integer num = randomSize;
        //给定随机范围
        int number = random.nextInt(randomSize);
        String count = sysConfigMapper.checkConfigKeyUnique("check.contract.sample").getConfigValue();
        if (!StringUtils.isEmpty(count)) {
            Integer temp = Integer.valueOf(count);
            if (temp > 0) {
                num = temp;
            }
        }
        int number = random.nextInt(num);
        if (number == 0) {
            log.info("开始抽查图片完整状态");
            //准备批量打分的集合
@@ -346,7 +357,7 @@
            queryWrapper.in("serial_number", serialNumbers);
            //获取公司所运维的设备集合,key为unitId value为设备国标码集合
            Map<Long, List<String>> unitMonitorMap = ywPointMapper.selectList(queryWrapper).stream()
                    .collect(Collectors.groupingBy(YwPoint::getUnitId,
                    .filter(ywPoint -> ywPoint.getUnitId()!=null).collect(Collectors.groupingBy(YwPoint::getUnitId,
                            Collectors.mapping(
                                    YwPoint::getSerialNumber,
                                    Collectors.toList())));
@@ -361,7 +372,7 @@
                    for (PicAccessResult picAccessResult : picAccessResults) {
                        //判断是否报备过
                        if (!CollectionUtils.isEmpty(reportNumbers)) {
                            if(reportNumbers.contains(picAccessResult.getExternalIndexCode())) continue;
                            if (reportNumbers.contains(picAccessResult.getExternalIndexCode())) continue;
                        }
                        //判断是否是该公司运维
                        if (monitorList.contains(picAccessResult.getExternalIndexCode())) {
@@ -395,7 +406,16 @@
    public void randomDeductVideo() {
        Random random = new Random();
        //给定随机范围
        int number = random.nextInt(randomSize);
        Integer num = randomSize;
        //给定随机范围
        String count = sysConfigMapper.checkConfigKeyUnique("check.contract.sample").getConfigValue();
        if (!StringUtils.isEmpty(count)) {
            Integer temp = Integer.valueOf(count);
            if (temp > 0) {
                num = temp;
            }
        }
        int number = random.nextInt(num);
        if (number == 0) {
            log.info("开始抽查录像完整状态");
            //准备批量打分的集合
@@ -417,7 +437,7 @@
            queryWrapper.in("serial_number", serialNumbers);
            //获取公司所运维的设备集合,key为unitId value为设备国标码集合
            Map<Long, List<String>> unitMonitorMap = ywPointMapper.selectList(queryWrapper).stream()
                    .collect(Collectors.groupingBy(YwPoint::getUnitId,
                    .filter(ywPoint -> ywPoint.getUnitId()!=null).collect(Collectors.groupingBy(YwPoint::getUnitId,
                            Collectors.mapping(
                                    YwPoint::getSerialNumber,
                                    Collectors.toList())));
@@ -430,7 +450,7 @@
                    for (RecordMetaDSumResult result : recordMetaDSumResults) {
                        //判断是否报备过
                        if (!CollectionUtils.isEmpty(reportNumbers)) {
                            if(reportNumbers.contains(result.getDeviceId())) continue;
                            if (reportNumbers.contains(result.getDeviceId())) continue;
                        }
                        //判断是否是该公司运维
                        if (monitorList.contains(result.getDeviceId())) {
@@ -440,7 +460,7 @@
                                    Double max = calculateRuleVO.getMax();
                                    Double min = calculateRuleVO.getMin();
                                    //判断范围在哪个区间 单位是小时转换为分钟
                                    if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration()*60))) {
                                    if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration() * 60))) {
                                        if (calculateRuleVO.getNum() == null) {
                                            calculateRuleVO.setNum(1);
                                        } else {
@@ -452,7 +472,7 @@
                        }
                    }
                    for (CalculateRuleVO calculateRuleVO : ruleList) {
                        if (calculateRuleVO.getNum()!=null && calculateRuleVO.getNum() > 0) {
                        if (calculateRuleVO.getNum() != null && calculateRuleVO.getNum() > 0) {
                            //需要扣除的分数,此规则只有一条不需要判断范围
                            double deductScore = calculateRuleVO.getCalcFraction() * calculateRuleVO.getNum();
                            ContractScore contractScore = getContractScore(calculateRuleVO, deductScore, calculateRuleVO.getNum() + "", Remark + calculateRuleVO.getNum() + "路设备违反规则");
ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -47,6 +47,18 @@
    private UYErrorTypeCheckService uyErrorTypeCheckService;
    @Autowired
    private YwPointService pointService;
    @Value("${HK.userName}")
    public String HKUserName;
    @Value("${HK.password}")
    public String HKPassword;
    @Value("${DH.userName}")
    public String DHUserName;
    @Value("${DH.password}")
    public String DHPassword;
    @Value("${YS.userName}")
    public String YSUserName;
    @Value("${YS.password}")
    public String YSPassword;
    /**
     * 通过查mongoDB每日一机一档数据获取设备ip
     * 通过设备ip、品牌调用不同api获取osd信息
@@ -75,7 +87,7 @@
            List<Future<OSDResult>> futureList = new ArrayList<>(48);
            List<OSDResult> osdResultList = new ArrayList<>();
            for (TMonitor monitor : monitors) {
                OSDCheckThread thread = new OSDCheckThread(monitor);
                OSDCheckThread thread = new OSDCheckThread(monitor,HKUserName,HKPassword,DHUserName,DHPassword,YSUserName,YSPassword);
                Future<OSDResult> future = executorService.submit(thread);
                futureList.add(future);
            }
ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java
@@ -13,21 +13,21 @@
@Slf4j
public class OSDCheckThread implements Callable<OSDResult> {
    private TMonitor monitor;
    @Value("${HK.userName}")
    public String HKUserName;
    @Value("${HK.password}")
    public String HKPassword;
    @Value("${DH.userName}")
    public String DHUserName;
    @Value("${DH.password}")
    public String DHPassword;
    @Value("${YS.userName}")
    public String YSUserName;
    @Value("${YS.password}")
    public String YSPassword;
    public OSDCheckThread(TMonitor monitor) {
    public OSDCheckThread(TMonitor monitor, String HKUserName, String HKPassword, String DHUserName, String DHPassword, String YSUserName, String YSPassword) {
        this.monitor = monitor;
        this.HKUserName = HKUserName;
        this.HKPassword = HKPassword;
        this.DHUserName = DHUserName;
        this.DHPassword = DHPassword;
        this.YSUserName = YSUserName;
        this.YSPassword = YSPassword;
    }
    public TMonitor getMonitor() {
@@ -38,6 +38,54 @@
        this.monitor = monitor;
    }
    public String getHKUserName() {
        return HKUserName;
    }
    public void setHKUserName(String HKUserName) {
        this.HKUserName = HKUserName;
    }
    public String getHKPassword() {
        return HKPassword;
    }
    public void setHKPassword(String HKPassword) {
        this.HKPassword = HKPassword;
    }
    public String getDHUserName() {
        return DHUserName;
    }
    public void setDHUserName(String DHUserName) {
        this.DHUserName = DHUserName;
    }
    public String getDHPassword() {
        return DHPassword;
    }
    public void setDHPassword(String DHPassword) {
        this.DHPassword = DHPassword;
    }
    public String getYSUserName() {
        return YSUserName;
    }
    public void setYSUserName(String YSUserName) {
        this.YSUserName = YSUserName;
    }
    public String getYSPassword() {
        return YSPassword;
    }
    public void setYSPassword(String YSPassword) {
        this.YSPassword = YSPassword;
    }
    @Override
    public OSDResult call() throws Exception {
        if (DeviceType.HK.getType().equals(monitor.getDeviceType())) {