*
lsh
2025-07-30 0c6a4102012ca052915af778b563670252399ce2
src/main/java/com/zy/asrs/controller/MonitorController.java
@@ -1,28 +1,36 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Arith;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.asrs.domain.dto.AxisBean;
import com.zy.asrs.domain.dto.WorkChartAxis;
import com.zy.asrs.domain.vo.LocChartPie;
import com.zy.asrs.entity.RgvOneSign;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.mapper.ReportQueryMapper;
import com.zy.asrs.mapper.RgvOneSignMapper;
import com.zy.asrs.mapper.WaitPakinMapper;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.WrkDetlService;
import com.zy.common.model.MatDto;
import com.zy.common.service.CommonService;
import com.zy.core.CrnThread;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.LedSlave;
import com.zy.core.model.command.LedCommand;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.LedThread;
import com.zy.core.thread.SiemensDevpThread;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -42,6 +50,162 @@
    private SlaveProperties slaveProperties;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private WaitPakinMapper waitPakinMapper;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private RgvOneSignMapper rgvOneSignMapper;
    /**
     * 获取当前时间
     */
    @PostMapping("/barcode/two")
    public R barcodeTwo(@RequestParam Integer palletizingNo) {
        Date now = new Date();
        String barcode = "";
        for (DevpSlave devp : slaveProperties.getDevp()) {
            // 遍历入库口
            for (DevpSlave.Sta inSta : devp.getDriveSta()) {
                if (inSta.getStaNo().equals(palletizingNo)){
                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
                    StaProtocol staProtocolPall = devpThread.getStation().get(palletizingNo);
                    if (staProtocolPall == null) {
                        continue;
                    } else {
                        staProtocolPall = staProtocolPall.clone();
                    }
                    String errorSta = "";
                    boolean signSta = false;
                    if (!staProtocolPall.isAutoing()){
                        errorSta = errorSta+"站点非自动!!!";
                        signSta = true;
                    }
                    if (!staProtocolPall.isLoading()){
                        errorSta = errorSta+"站点无托盘!!!";
                        signSta = true;
                    }
                    if (staProtocolPall.getWorkNo() != 0 ){
                        errorSta = errorSta+"站点存在任务号!!!";
                        signSta = true;
                    }
                    if (!staProtocolPall.isPakMk()){
                        errorSta = errorSta+"站点存在锁定标记!!!";
                        signSta = true;
                    }
                    if (signSta){
                        try{
                            // 保存接口日志
                            apiLogService.save(
                                    "中控申请获取"+palletizingNo+"站点当前条码信息",
                                    "/monitor/barcode/two",
                                    null,
                                    null,
                                    JSON.toJSONString(palletizingNo),
                                    "未就绪!!!请等待...  原因:"+errorSta,
                                    false
                            );
                        }catch (Exception e){
                        }
                        return R.error("未就绪!!!请等待... 原因:"+errorSta);
                    }
                    // 获取条码扫描仪信息
                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                    if (barcodeThread == null) {
                        continue;
                    }
                    barcode = barcodeThread.getBarcode();
                    if (!Cools.isEmpty(barcode)) {
//                    log.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcode(), barcode);
                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode) || "000000".equals(barcode)) {
                            barcode = "";
                        }
                    } else {
                        break;
                    }
                }
            }
        }
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(now);
        if (Cools.isEmpty(barcode) || barcode.equals("")){
            try{
                // 保存接口日志
                apiLogService.save(
                        "中控申请获取"+palletizingNo+"站点当前条码信息",
                        "/monitor/barcode/two",
                        null,
                        null,
                        JSON.toJSONString(palletizingNo),
                        "未就绪!!!托盘条码为空!!!请检查!!!",
                        false
                );
            }catch (Exception e){
            }
            return R.error("未就绪!!!托盘条码为空!!!请检查!!!");
        }
        if (waitPakinMapper.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", barcode))!=0){
            try{
                // 保存接口日志
                apiLogService.save(
                        "中控申请获取"+palletizingNo+"站点当前条码信息",
                        "/monitor/barcode/two",
                        null,
                        null,
                        JSON.toJSONString(palletizingNo),
                        "未就绪!!!托盘条码不为空但是已存在数据,不可重复使用!!!请检查!!!",
                        false
                );
            }catch (Exception e){
            }
            return R.error("未就绪!!!托盘条码不为空但是已存在数据,不可重复使用!!!请检查或重新获取!!!");
        }
        RgvOneSign JarTwo = rgvOneSignMapper.selectOneSign(palletizingNo+"barcode"+barcode);
        if (!Cools.isEmpty(JarTwo)){
            try{
                // 保存接口日志
                apiLogService.save(
                        "中控申请获取"+palletizingNo+"站点当前条码信息",
                        "/monitor/barcode/two",
                        null,
                        null,
                        JSON.toJSONString(palletizingNo),
                        "未就绪!!!条码更新中....",
                        false
                );
            }catch (Exception e){
            }
            return R.error("未就绪!!!条码更新中....");
        }
        try{
            rgvOneSignMapper.deleteBarcode(palletizingNo+"barcode");
        } catch (Exception e){
        }
        Cools.CoolMap coolMap = Cools.add("barcode", barcode).add("Date", now);
        try{
            // 保存接口日志
            apiLogService.save(
                    "中控申请获取"+palletizingNo+"站点当前条码信息",
                    "/monitor/barcode/two",
                    null,
                    null,
                    JSON.toJSONString(palletizingNo),
                    JSON.toJSONString(coolMap),
                    true
            );
        }catch (Exception e){
        }
        return R.ok(coolMap);
    }
    /**
     * 获取当前时间
@@ -306,9 +470,10 @@
    @GetMapping("/led/useInfo")
    public R monitorLedUseInfo(@RequestParam("ledId") Integer ledId) {
        Integer count1 = wrkDetlService.count1();
        Integer count11 = wrkDetlService.count11();
        Integer count3 = wrkDetlService.count3();
        Map<String, Object> map = new HashMap<>();
        map.put("count1", count1);
        map.put("count1", count1+count11);
        map.put("count2", count3);
        return R.ok().add(map);
    }