update:
上报apms炉号
このコミットが含まれているのは:
		@@ -88,20 +88,21 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
    public void test() throws IOException {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //@Scheduled(fixedDelay = 1000*60)
 | 
			
		||||
    public void testWebsocket() throws IOException {
 | 
			
		||||
        //查询出正在进炉加工的curr_task,查询对应炉号是否Working,查询计划时间,剩余时间,查询标识卡详情
 | 
			
		||||
        List<CurrTask> currTaskList = currTaskServiceBiz.list(new QueryWrapper<CurrTask>().eq(CurrTask.IS_IN, 1));
 | 
			
		||||
        if (currTaskList.size()==0){
 | 
			
		||||
        if (currTaskList.size() == 0) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        List<NowCurrTaskDetVo> nowCurrTaskDetVoList = BeanUtils.copyList(currTaskList, NowCurrTaskDetVo.class);
 | 
			
		||||
        for (NowCurrTaskDetVo nowCurrTask:nowCurrTaskDetVoList
 | 
			
		||||
        for (NowCurrTaskDetVo nowCurrTask : nowCurrTaskDetVoList
 | 
			
		||||
        ) {
 | 
			
		||||
            Long kilnId = nowCurrTask.getKilnId();
 | 
			
		||||
            Boolean kilnWorking = true;
 | 
			
		||||
            //查询对应炉号是否Working
 | 
			
		||||
            if (kilnWorking){
 | 
			
		||||
            if (kilnWorking) {
 | 
			
		||||
                String nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                        .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                        .eq(PlcNameSpace.TYPE, 0)
 | 
			
		||||
@@ -113,13 +114,13 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                Integer remainingTime = 122;
 | 
			
		||||
                nowCurrTask.setSetupTime(setupTime);
 | 
			
		||||
                nowCurrTask.setRemainingTime(remainingTime);
 | 
			
		||||
                int completeness =(int) (((float)remainingTime/(float)setupTime )*100);
 | 
			
		||||
                int completeness = (int) (((float) remainingTime / (float) setupTime) * 100);
 | 
			
		||||
                nowCurrTask.setCompleteness(completeness);
 | 
			
		||||
                nowCurrTask.setKilnCode("BMA1");
 | 
			
		||||
                //标识卡详情
 | 
			
		||||
                List<CurrTaskDet> currTaskDetList = currTaskDetServiceBiz.list(new QueryWrapper<CurrTaskDet>().eq(CurrTaskDet.CURR_TASK_ID, nowCurrTask.getId()));
 | 
			
		||||
                List<CurrTaskDetVo> currTaskDetVoList = BeanUtils.copyList(currTaskDetList, CurrTaskDetVo.class);
 | 
			
		||||
                for (CurrTaskDetVo currTaskDetVo:currTaskDetVoList
 | 
			
		||||
                for (CurrTaskDetVo currTaskDetVo : currTaskDetVoList
 | 
			
		||||
                ) {
 | 
			
		||||
                    String customerName = orderInfoServiceBiz.getOne(new QueryWrapper<OrderInfo>().eq(OrderInfo.IDEN_CARD_NUM, currTaskDetVo.getIdenCardNum())).getCustomerName();
 | 
			
		||||
                    currTaskDetVo.setCustomer(customerName);
 | 
			
		||||
@@ -128,28 +129,28 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        System.out.println(JSON.toJSONString(nowCurrTaskDetVoList));
 | 
			
		||||
        webSocketServer.sendtoUser(JSON.toJSONString(nowCurrTaskDetVoList),"2");
 | 
			
		||||
        webSocketServer.sendtoUser(JSON.toJSONString(nowCurrTaskDetVoList), "2");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 正在加工的加工任务详情
 | 
			
		||||
     */
 | 
			
		||||
    @Scheduled(fixedDelay = 1000*60)
 | 
			
		||||
    //@Scheduled(fixedDelay = 1000*60)
 | 
			
		||||
    public void screen() throws IOException {
 | 
			
		||||
        //查询出正在进炉加工的curr_task,查询对应炉号是否Working,查询计划时间,剩余时间,查询标识卡详情
 | 
			
		||||
        List<CurrTask> currTaskList = currTaskServiceBiz.list(new QueryWrapper<CurrTask>()
 | 
			
		||||
                .eq(CurrTask.IS_IN, 1)
 | 
			
		||||
                .eq(CurrTask.STATUS,1));
 | 
			
		||||
        if (currTaskList.size()==0){
 | 
			
		||||
                .eq(CurrTask.STATUS, 1));
 | 
			
		||||
        if (currTaskList.size() == 0) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        List<NowCurrTaskDetVo> nowCurrTaskDetVoList = BeanUtils.copyList(currTaskList, NowCurrTaskDetVo.class);
 | 
			
		||||
        for (NowCurrTaskDetVo nowCurrTask:nowCurrTaskDetVoList
 | 
			
		||||
             ) {
 | 
			
		||||
        for (NowCurrTaskDetVo nowCurrTask : nowCurrTaskDetVoList
 | 
			
		||||
        ) {
 | 
			
		||||
            Long kilnId = nowCurrTask.getKilnId();
 | 
			
		||||
            Boolean kilnWorking = kilnWorking(kilnId);
 | 
			
		||||
            //查询对应炉号是否Working
 | 
			
		||||
            if (kilnWorking){
 | 
			
		||||
            if (kilnWorking) {
 | 
			
		||||
                String nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                        .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                        .eq(PlcNameSpace.TYPE, 0)
 | 
			
		||||
@@ -158,79 +159,80 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                nowCurrTask.setTaskCode(nowCurrTask.getSheetNo());
 | 
			
		||||
                nowCurrTask.setKilnCode(kilnInfo.getCode());
 | 
			
		||||
                //设定时间
 | 
			
		||||
                Integer setupTime =1;
 | 
			
		||||
                Integer setupTime = 1;
 | 
			
		||||
                //剩余时间
 | 
			
		||||
                Integer remainingTime=0;
 | 
			
		||||
                if (kilnInfo.getType()!=4){
 | 
			
		||||
                    if (kilnInfo.getType()==3){
 | 
			
		||||
                Integer remainingTime = 0;
 | 
			
		||||
                if (kilnInfo.getType() != 4) {
 | 
			
		||||
                    if (kilnInfo.getType() == 3) {
 | 
			
		||||
                        remainingTime = readPlc(nameSpace, "ProgramTimeRemaining").intValue();
 | 
			
		||||
                    }else {
 | 
			
		||||
                    } else {
 | 
			
		||||
                        remainingTime = readPlc(nameSpace, "ProgramTimeRemain").intValue();
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                if(kilnInfo.getType()==1||kilnInfo.getType()==3){
 | 
			
		||||
                if (kilnInfo.getType() == 1 || kilnInfo.getType() == 3) {
 | 
			
		||||
                    //运行时间
 | 
			
		||||
                    Integer runTime = readPlc(nameSpace, "ProgramRunTime").intValue();
 | 
			
		||||
                    setupTime=runTime+remainingTime;
 | 
			
		||||
                    setupTime = runTime + remainingTime;
 | 
			
		||||
                }
 | 
			
		||||
                if (kilnInfo.getType()==2){
 | 
			
		||||
                    setupTime=readPlc(nameSpace, "SetTime").intValue();
 | 
			
		||||
                if (kilnInfo.getType() == 2) {
 | 
			
		||||
                    setupTime = readPlc(nameSpace, "SetTime").intValue();
 | 
			
		||||
                }
 | 
			
		||||
                nowCurrTask.setSetupTime(setupTime);
 | 
			
		||||
                nowCurrTask.setRemainingTime(remainingTime);
 | 
			
		||||
                int completeness =(int) (((float)remainingTime/(float)setupTime )*100);
 | 
			
		||||
                int completeness = (int) (((float) remainingTime / (float) setupTime) * 100);
 | 
			
		||||
                nowCurrTask.setCompleteness(completeness);
 | 
			
		||||
                nowCurrTask.setKilnCode(kilnInfo.getCode());
 | 
			
		||||
                //标识卡详情
 | 
			
		||||
                List<CurrTaskDet> currTaskDetList = currTaskDetServiceBiz.list(new QueryWrapper<CurrTaskDet>()
 | 
			
		||||
                        .eq(CurrTaskDet.CURR_TASK_ID, nowCurrTask.getId()));
 | 
			
		||||
                List<CurrTaskDetVo> currTaskDetVoList = BeanUtils.copyList(currTaskDetList, CurrTaskDetVo.class);
 | 
			
		||||
                for (CurrTaskDetVo currTaskDetVo:currTaskDetVoList
 | 
			
		||||
                     ) {
 | 
			
		||||
                for (CurrTaskDetVo currTaskDetVo : currTaskDetVoList
 | 
			
		||||
                ) {
 | 
			
		||||
                    String customerName = orderInfoServiceBiz.getOne(new QueryWrapper<OrderInfo>().eq(OrderInfo.IDEN_CARD_NUM, currTaskDetVo.getIdenCardNum())).getCustomerName();
 | 
			
		||||
                    currTaskDetVo.setCustomer(customerName);
 | 
			
		||||
                }
 | 
			
		||||
                nowCurrTask.setCurrTaskDetVoList(currTaskDetVoList);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        webSocketServer.sendtoUser(JSON.toJSONString(nowCurrTaskDetVoList),"2");
 | 
			
		||||
        webSocketServer.sendtoUser(JSON.toJSONString(nowCurrTaskDetVoList), "2");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询加工完成的工业炉
 | 
			
		||||
     */
 | 
			
		||||
    @Scheduled(fixedDelay = 1000*30)
 | 
			
		||||
    @Scheduled(fixedDelay = 1000 * 30)
 | 
			
		||||
    public void taskForStockToKiln() throws IOException {
 | 
			
		||||
        //两辆车是否都空闲,只有两辆车都空闲才被允许做任务
 | 
			
		||||
        List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 0));
 | 
			
		||||
        if (vehicleInfoList.size()==2){
 | 
			
		||||
        if (vehicleInfoList.size() == 2) {
 | 
			
		||||
            //遍历currTask为进行中且is_in为正在加工的工业炉状态,若加工完毕,调用runTaskForOutKiln
 | 
			
		||||
            //  2022/3/6 有两托的判定哪一托好了(通过开始加工时间顺序排列)
 | 
			
		||||
            List<CurrTask> currTaskList = currTaskServiceBiz.list(new QueryWrapper<CurrTask>()
 | 
			
		||||
                    .eq(CurrTask.STATUS, 1)
 | 
			
		||||
                    .eq(CurrTask.IS_IN, 1)
 | 
			
		||||
                    .orderByAsc(CurrTask.BEGIN_TIME));
 | 
			
		||||
            for (CurrTask currTask :currTaskList
 | 
			
		||||
                    ) {
 | 
			
		||||
            for (CurrTask currTask : currTaskList
 | 
			
		||||
            ) {
 | 
			
		||||
                Long kilnId = currTask.getKilnId();
 | 
			
		||||
                KilnInfo kilnInfo = kilnInfoServiceBiz.getById(kilnId);
 | 
			
		||||
                PlcNameSpace plcNameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                        .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                        .eq(PlcNameSpace.TYPE, 0)
 | 
			
		||||
                        .eq(PlcNameSpace.EQ_ID,kilnId));
 | 
			
		||||
                        .eq(PlcNameSpace.EQ_ID, kilnId));
 | 
			
		||||
                //通过允许出炉信号来判定是否加工完成
 | 
			
		||||
                String result = readPlcToString(plcNameSpace.getName(), "AllowOut");
 | 
			
		||||
                Boolean resultBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
                if (resultBoolean){
 | 
			
		||||
                if (resultBoolean) {
 | 
			
		||||
                    //调用RunTaskUtils.runTaskForOutKiln
 | 
			
		||||
                    logger.info(kilnInfo.getCode()+kilnInfo.getKilnAlias()+"识别到允许出炉信号,进入出库程序!");
 | 
			
		||||
                    logger.info(kilnInfo.getCode() + kilnInfo.getKilnAlias() + "识别到允许出炉信号,进入出库程序!");
 | 
			
		||||
                    //更新加工单工艺结束时间,只更新一次,因为可能因为不满住出炉条件而进入到下一次定时任务,
 | 
			
		||||
                    if ("null".equals(String.valueOf(currTask.getEndTime()))){
 | 
			
		||||
                    if ("null".equals(String.valueOf(currTask.getEndTime()))) {
 | 
			
		||||
                        currTask.setEndTime(LocalDateTime.now());
 | 
			
		||||
                        currTaskServiceBiz.updateById(currTask);
 | 
			
		||||
                        //存入历史任务表以便查询能源消耗
 | 
			
		||||
                        TaskHis taskHis=new TaskHis();
 | 
			
		||||
                        org.springframework.beans.BeanUtils.copyProperties(currTask,taskHis);
 | 
			
		||||
                        TaskHis taskHis = new TaskHis();
 | 
			
		||||
                        org.springframework.beans.BeanUtils.copyProperties(currTask, taskHis);
 | 
			
		||||
                        taskHis.setStatus(2);
 | 
			
		||||
                        taskHis.setIsIn(2);
 | 
			
		||||
                        taskHis.setTaskId(currTask.getId());
 | 
			
		||||
@@ -239,8 +241,8 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                        List<TaskDetHis> taskDetHisList = BeanUtils.copyList(currTaskDets, TaskDetHis.class);
 | 
			
		||||
                        taskDetHisServiceBiz.saveBatch(taskDetHisList);
 | 
			
		||||
                        //加工结束而没有立马出炉,加工结束记录能源消耗值只记录一次
 | 
			
		||||
                        asynRunTaskService.asynEndRecordConsume(currTask.getId(),kilnId);
 | 
			
		||||
                        logger.info(kilnInfo.getCode()+"炉子中的任务:"+currTask.getId()+"已加工结束,记录加工结束能源消耗值");
 | 
			
		||||
                        asynRunTaskService.asynEndRecordConsume(currTask.getId(), kilnId);
 | 
			
		||||
                        logger.info(kilnInfo.getCode() + "炉子中的任务:" + currTask.getId() + "已加工结束,记录加工结束能源消耗值");
 | 
			
		||||
                    }
 | 
			
		||||
                    runTaskUtils.runTaskForOutKiln(kilnId);
 | 
			
		||||
                    break;
 | 
			
		||||
@@ -250,58 +252,58 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //查询出正在加工的工业炉,遍历,根据采集频率的不同,采集高频数据能源消耗。暂定30秒
 | 
			
		||||
    @Scheduled(fixedDelay = 1000*30)
 | 
			
		||||
    public void getFastValue(){
 | 
			
		||||
    @Scheduled(fixedDelay = 1000 * 30)
 | 
			
		||||
    public void getFastValue() {
 | 
			
		||||
        //加工炉列表
 | 
			
		||||
        List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list(new QueryWrapper<KilnInfo>().in(KilnInfo.TYPE,1,3));
 | 
			
		||||
        for (KilnInfo kilnInfo:kilnInfoList
 | 
			
		||||
             ) {
 | 
			
		||||
        List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list(new QueryWrapper<KilnInfo>().in(KilnInfo.TYPE, 1, 3));
 | 
			
		||||
        for (KilnInfo kilnInfo : kilnInfoList
 | 
			
		||||
        ) {
 | 
			
		||||
            PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_ID, kilnInfo.getId())
 | 
			
		||||
                    .eq(PlcNameSpace.TYPE,0));
 | 
			
		||||
                    .eq(PlcNameSpace.TYPE, 0));
 | 
			
		||||
            String nameSpaceNote = nameSpace.getName();
 | 
			
		||||
            String result = readPlcToString(nameSpaceNote, "Working");
 | 
			
		||||
            Boolean resultBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
            //该炉子在工作中
 | 
			
		||||
            if (resultBoolean){
 | 
			
		||||
            if (resultBoolean) {
 | 
			
		||||
                Long kilnId = kilnInfo.getId();
 | 
			
		||||
                Long currTaskId =0L;
 | 
			
		||||
                Long currTaskId = 0L;
 | 
			
		||||
                //多用炉因为存在多个识别号且炉子给的DischargeIdentNumber为下油槽后的识别号,所以使用表里记录的任务id根据状态和进炉时间查出正在炉里且先进去的那个
 | 
			
		||||
                if (kilnInfo.getType()==1){
 | 
			
		||||
                if (kilnInfo.getType() == 1) {
 | 
			
		||||
                    List<CurrTask> currTaskList = currTaskServiceBiz.list(new QueryWrapper<CurrTask>().eq(CurrTask.STATUS, 1)
 | 
			
		||||
                            .eq(CurrTask.KILN_ID, kilnId).eq(CurrTask.IS_IN, 1));
 | 
			
		||||
                    if (currTaskList.size()!=0){
 | 
			
		||||
                        currTaskId=currTaskList.get(0).getId();
 | 
			
		||||
                    if (currTaskList.size() != 0) {
 | 
			
		||||
                        currTaskId = currTaskList.get(0).getId();
 | 
			
		||||
                    }
 | 
			
		||||
                }else {
 | 
			
		||||
                } else {
 | 
			
		||||
                    String identificationNumber = readPlcToString(nameSpaceNote, "DischargeIdentNumber");
 | 
			
		||||
                    currTaskId=Long.valueOf(JSONObject.parseObject(identificationNumber).get("result").toString());
 | 
			
		||||
                    currTaskId = Long.valueOf(JSONObject.parseObject(identificationNumber).get("result").toString());
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (currTaskId==0){
 | 
			
		||||
                if (currTaskId == 0) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                CurrTask currTask = currTaskServiceBiz.getById(currTaskId);
 | 
			
		||||
                //任务为null说明是已删除的任务,不记录
 | 
			
		||||
                if (currTask==null){
 | 
			
		||||
                if (currTask == null) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                //任务结束时间不为null,说明是已结束的任务,不记录
 | 
			
		||||
                if (currTask.getEndTime()!=null){
 | 
			
		||||
                if (currTask.getEndTime() != null) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                //任务不在加工状态,不记录
 | 
			
		||||
                if (currTask.getIsIn()!=1){
 | 
			
		||||
                if (currTask.getIsIn() != 1) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                //加工炉
 | 
			
		||||
                if (kilnInfo.getType()==1){
 | 
			
		||||
                if (kilnInfo.getType() == 1) {
 | 
			
		||||
                    //一号油搅拌转速
 | 
			
		||||
                    Double oilStirringSpeed1 = readPlc(nameSpaceNote, "OilStirringSpeed1");
 | 
			
		||||
                    //二号油搅拌转速
 | 
			
		||||
                    Double oilStirringSpeed2 = readPlc(nameSpaceNote, "OilStirringSpeed2");
 | 
			
		||||
                    ParRotSpeedValue parRotSpeedValue=new ParRotSpeedValue();
 | 
			
		||||
                    ParRotSpeedValue parRotSpeedValue = new ParRotSpeedValue();
 | 
			
		||||
                    parRotSpeedValue.setOilStiSpeedAValue(oilStirringSpeed1.floatValue());
 | 
			
		||||
                    parRotSpeedValue.setOilStiSpeedAValue(oilStirringSpeed2.floatValue());
 | 
			
		||||
                    parRotSpeedValue.setKilnId(kilnId);
 | 
			
		||||
@@ -320,7 +322,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    Double actualCarbon = readPlc(nameSpaceNote, "ActualCarbon");
 | 
			
		||||
                    //设定碳势
 | 
			
		||||
                    Double setupCarbon = readPlc(nameSpaceNote, "SetupCarbon");
 | 
			
		||||
                    ParGasValue parGasValue=new ParGasValue();
 | 
			
		||||
                    ParGasValue parGasValue = new ParGasValue();
 | 
			
		||||
                    parGasValue.setNitFlowValue(nitrogenFlow.floatValue());
 | 
			
		||||
                    parGasValue.setAmmoniaFlowValue(ammoniaFlow.floatValue());
 | 
			
		||||
                    parGasValue.setMethanolFlow(methanolFlow.floatValue());
 | 
			
		||||
@@ -333,7 +335,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parGasValueServiceBiz.save(parGasValue);
 | 
			
		||||
                }
 | 
			
		||||
                //氮化炉
 | 
			
		||||
                if (kilnInfo.getType()==3){
 | 
			
		||||
                if (kilnInfo.getType() == 3) {
 | 
			
		||||
                    //实际氮势
 | 
			
		||||
                    Double actualCarbon = readPlc(nameSpaceNote, "ActualCarbon");
 | 
			
		||||
                    //设定氮势
 | 
			
		||||
@@ -343,12 +345,12 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    //分解率
 | 
			
		||||
                    Double decompositionRate = readPlc(nameSpaceNote, "DecompositionRate");
 | 
			
		||||
                    //氨气量
 | 
			
		||||
                    Double ammoniaFlow=readPlc(nameSpaceNote,"AmmoniaFlow");
 | 
			
		||||
                    Double ammoniaFlow = readPlc(nameSpaceNote, "AmmoniaFlow");
 | 
			
		||||
                    //氮气量
 | 
			
		||||
                    Double nitrogenFlow=readPlc(nameSpaceNote,"NitrogenFlow");
 | 
			
		||||
                    Double nitrogenFlow = readPlc(nameSpaceNote, "NitrogenFlow");
 | 
			
		||||
                    //二氧化碳量
 | 
			
		||||
                    Double carbonDioxideFlow = readPlc(nameSpaceNote, "CO2Flow");
 | 
			
		||||
                    ParGasValue parGasValue3=new ParGasValue();
 | 
			
		||||
                    ParGasValue parGasValue3 = new ParGasValue();
 | 
			
		||||
                    parGasValue3.setNitFlowValue(nitrogenFlow.floatValue());
 | 
			
		||||
                    parGasValue3.setAmmoniaFlowValue(ammoniaFlow.floatValue());
 | 
			
		||||
                    parGasValue3.setActualNitPotValue(actualCarbon.floatValue());
 | 
			
		||||
@@ -366,63 +368,63 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //查询出正在加工的工业炉,遍历,根据采集频率的不同,采集低频数据能源消耗。暂定3分钟一次
 | 
			
		||||
    @Scheduled(fixedDelay = 1000*60*3)
 | 
			
		||||
    public void getSlowValue(){
 | 
			
		||||
    @Scheduled(fixedDelay = 1000 * 60 * 3)
 | 
			
		||||
    public void getSlowValue() {
 | 
			
		||||
        List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list();
 | 
			
		||||
        for (KilnInfo kilnInfo:kilnInfoList
 | 
			
		||||
             ) {
 | 
			
		||||
        for (KilnInfo kilnInfo : kilnInfoList
 | 
			
		||||
        ) {
 | 
			
		||||
            PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_ID, kilnInfo.getId())
 | 
			
		||||
                    .eq(PlcNameSpace.TYPE,0));
 | 
			
		||||
                    .eq(PlcNameSpace.TYPE, 0));
 | 
			
		||||
            String nameSpaceNote = nameSpace.getName();
 | 
			
		||||
            String result = readPlcToString(nameSpaceNote, "Working");
 | 
			
		||||
            Boolean resultBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
            if (resultBoolean){
 | 
			
		||||
            if (resultBoolean) {
 | 
			
		||||
                Long kilnId = kilnInfo.getId();
 | 
			
		||||
                Long currTaskId =0L;
 | 
			
		||||
                Long currTaskId = 0L;
 | 
			
		||||
                //多用炉因为存在多个识别号且炉子给的DischargeIdentNumber为下油槽后的识别号,所以使用表里记录的任务id根据状态和进炉时间查出正在炉里且先进去的那个
 | 
			
		||||
                if (kilnInfo.getType()==1){
 | 
			
		||||
                if (kilnInfo.getType() == 1) {
 | 
			
		||||
                    List<CurrTask> currTaskList = currTaskServiceBiz.list(new QueryWrapper<CurrTask>().eq(CurrTask.STATUS, 1)
 | 
			
		||||
                            .eq(CurrTask.KILN_ID, kilnId).eq(CurrTask.IS_IN, 1));
 | 
			
		||||
                    if (currTaskList.size()!=0){
 | 
			
		||||
                        currTaskId=currTaskList.get(0).getId();
 | 
			
		||||
                    if (currTaskList.size() != 0) {
 | 
			
		||||
                        currTaskId = currTaskList.get(0).getId();
 | 
			
		||||
                    }
 | 
			
		||||
                }else {
 | 
			
		||||
                } else {
 | 
			
		||||
                    String identificationNumber = readPlcToString(nameSpaceNote, "DischargeIdentNumber");
 | 
			
		||||
                    currTaskId=Long.valueOf(JSONObject.parseObject(identificationNumber).get("result").toString());
 | 
			
		||||
                    currTaskId = Long.valueOf(JSONObject.parseObject(identificationNumber).get("result").toString());
 | 
			
		||||
                }
 | 
			
		||||
/*                Long kilnId = kilnInfo.getId();
 | 
			
		||||
                String identificationNumber = readPlcToString(nameSpaceNote, "DischargeIdentNumber");
 | 
			
		||||
                Long currTaskId = Long.valueOf(JSONObject.parseObject(identificationNumber).get("result").toString());*/
 | 
			
		||||
                //任务id为0说明不是自动任务,不记录
 | 
			
		||||
                if (currTaskId==0){
 | 
			
		||||
                if (currTaskId == 0) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                CurrTask currTask = currTaskServiceBiz.getById(currTaskId);
 | 
			
		||||
                //任务为null说明是已删除的任务,不记录
 | 
			
		||||
                if (currTask==null){
 | 
			
		||||
                if (currTask == null) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                //任务结束时间不为null,说明是已结束的任务,不记录
 | 
			
		||||
                if (currTask.getEndTime()!=null){
 | 
			
		||||
                if (currTask.getEndTime() != null) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                //任务不在加工状态,不记录
 | 
			
		||||
                if (currTask.getIsIn()!=1){
 | 
			
		||||
                if (currTask.getIsIn() != 1) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                //加工炉
 | 
			
		||||
                if (kilnInfo.getType()==1){
 | 
			
		||||
                if (kilnInfo.getType() == 1) {
 | 
			
		||||
                    //实际温度
 | 
			
		||||
                    Double actualTemp =readPlc(nameSpaceNote,"ActualTemp");
 | 
			
		||||
                    Double actualTemp = readPlc(nameSpaceNote, "ActualTemp");
 | 
			
		||||
                    //设定温度
 | 
			
		||||
                    Double setUpTemp = readPlc(nameSpaceNote,"SetUpTemp");
 | 
			
		||||
                    Double setUpTemp = readPlc(nameSpaceNote, "SetUpTemp");
 | 
			
		||||
                    //油槽实际温度
 | 
			
		||||
                    Double actualOilTemp = readPlc(nameSpaceNote, "ActualOilTemp");
 | 
			
		||||
                    //油槽设定温度
 | 
			
		||||
                    Double setUpOilTemp = readPlc(nameSpaceNote,"SetUpOilTemp");
 | 
			
		||||
                    ParTemValue parTemValue=new ParTemValue();
 | 
			
		||||
                    Double setUpOilTemp = readPlc(nameSpaceNote, "SetUpOilTemp");
 | 
			
		||||
                    ParTemValue parTemValue = new ParTemValue();
 | 
			
		||||
                    parTemValue.setSetTemValue(setUpTemp.floatValue());
 | 
			
		||||
                    parTemValue.setActTemValue(actualTemp.floatValue());
 | 
			
		||||
                    parTemValue.setOilTankSetTemValue(setUpOilTemp.floatValue());
 | 
			
		||||
@@ -432,15 +434,24 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parTemValue.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parTemValueServiceBiz.save(parTemValue);
 | 
			
		||||
                    //电度值
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote,"ElectricalValue");
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote, "ElectricalValue");
 | 
			
		||||
                    //A向电压
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote,"PhaseAVoltage");
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote, "PhaseAVoltage");
 | 
			
		||||
                    Double phaseBVoltage = readPlc(nameSpaceNote, "PhaseBVoltage");
 | 
			
		||||
                    Double phaseCVoltage = readPlc(nameSpaceNote, "PhaseCVoltage");
 | 
			
		||||
                    ParEleValue parEleValue=new ParEleValue();
 | 
			
		||||
                    //ABC向电流
 | 
			
		||||
                    Double phaseACurrent = readPlc(nameSpaceNote, "PhaseACurrent");
 | 
			
		||||
                    Double phaseBCurrent = readPlc(nameSpaceNote, "PhaseBCurrent");
 | 
			
		||||
                    Double phaseDCurrent = readPlc(nameSpaceNote, "PhaseDCurrent");
 | 
			
		||||
                    ParEleValue parEleValue = new ParEleValue();
 | 
			
		||||
                    parEleValue.setAVoltagevValue(phaseAVoltage.floatValue());
 | 
			
		||||
                    parEleValue.setAVoltagevValue(phaseBVoltage.floatValue());
 | 
			
		||||
                    parEleValue.setAVoltagevValue(phaseCVoltage.floatValue());
 | 
			
		||||
                    parEleValue.setBVoltagevValue(phaseBVoltage.floatValue());
 | 
			
		||||
                    parEleValue.setCVoltagevValue(phaseCVoltage.floatValue());
 | 
			
		||||
 | 
			
		||||
                    parEleValue.setACurrentValue(phaseACurrent.floatValue());
 | 
			
		||||
                    parEleValue.setBCurrentValue(phaseBCurrent.floatValue());
 | 
			
		||||
                    parEleValue.setCCurrentValue(phaseDCurrent.floatValue());
 | 
			
		||||
 | 
			
		||||
                    parEleValue.setTotalBat(electricalValue.floatValue());
 | 
			
		||||
                    parEleValue.setKilnId(kilnId);
 | 
			
		||||
                    parEleValue.setTaskId(currTaskId);
 | 
			
		||||
@@ -448,12 +459,12 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parEleValueServiceBiz.save(parEleValue);
 | 
			
		||||
                }
 | 
			
		||||
                //回火炉
 | 
			
		||||
                if (kilnInfo.getType()==2){
 | 
			
		||||
                if (kilnInfo.getType() == 2) {
 | 
			
		||||
                    //实际温度
 | 
			
		||||
                    Double actualTemp =readPlc(nameSpaceNote,"ActualTemp");
 | 
			
		||||
                    Double actualTemp = readPlc(nameSpaceNote, "ActualTemp");
 | 
			
		||||
                    //设定温度
 | 
			
		||||
                    Double setUpTemp = readPlc(nameSpaceNote,"SetUpTemp");
 | 
			
		||||
                    ParTemValue parTemValue2=new ParTemValue();
 | 
			
		||||
                    Double setUpTemp = readPlc(nameSpaceNote, "SetUpTemp");
 | 
			
		||||
                    ParTemValue parTemValue2 = new ParTemValue();
 | 
			
		||||
                    parTemValue2.setSetTemValue(setUpTemp.floatValue());
 | 
			
		||||
                    parTemValue2.setActTemValue(actualTemp.floatValue());
 | 
			
		||||
                    parTemValue2.setKilnId(kilnId);
 | 
			
		||||
@@ -461,15 +472,22 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parTemValue2.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parTemValueServiceBiz.save(parTemValue2);
 | 
			
		||||
                    //电度值
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote,"TotalElectricity");
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote, "TotalElectricity");
 | 
			
		||||
                    //A向电压
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote,"AVoltage");
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote, "AVoltage");
 | 
			
		||||
                    Double phaseBVoltage = readPlc(nameSpaceNote, "BVoltage");
 | 
			
		||||
                    Double phaseCVoltage = readPlc(nameSpaceNote, "CVoltage");
 | 
			
		||||
                    ParEleValue parEleValue2=new ParEleValue();
 | 
			
		||||
                    //ABC三相电流
 | 
			
		||||
                    Double aCurrent = readPlc(nameSpaceNote, "ACurrent");
 | 
			
		||||
                    Double bCurrent = readPlc(nameSpaceNote, "BCurrent");
 | 
			
		||||
                    Double cCurrent = readPlc(nameSpaceNote, "CCurrent");
 | 
			
		||||
                    ParEleValue parEleValue2 = new ParEleValue();
 | 
			
		||||
                    parEleValue2.setAVoltagevValue(phaseAVoltage.floatValue());
 | 
			
		||||
                    parEleValue2.setAVoltagevValue(phaseBVoltage.floatValue());
 | 
			
		||||
                    parEleValue2.setAVoltagevValue(phaseCVoltage.floatValue());
 | 
			
		||||
                    parEleValue2.setBVoltagevValue(phaseBVoltage.floatValue());
 | 
			
		||||
                    parEleValue2.setCVoltagevValue(phaseCVoltage.floatValue());
 | 
			
		||||
                    parEleValue2.setACurrentValue(aCurrent.floatValue());
 | 
			
		||||
                    parEleValue2.setBCurrentValue(bCurrent.floatValue());
 | 
			
		||||
                    parEleValue2.setCCurrentValue(cCurrent.floatValue());
 | 
			
		||||
                    parEleValue2.setTotalBat(electricalValue.floatValue());
 | 
			
		||||
                    parEleValue2.setKilnId(kilnId);
 | 
			
		||||
                    parEleValue2.setTaskId(currTaskId);
 | 
			
		||||
@@ -477,18 +495,18 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parEleValueServiceBiz.save(parEleValue2);
 | 
			
		||||
                }
 | 
			
		||||
                //氮化炉
 | 
			
		||||
                if (kilnInfo.getType()==3){
 | 
			
		||||
                if (kilnInfo.getType() == 3) {
 | 
			
		||||
                    //实际温度
 | 
			
		||||
                    Double actualTemp =readPlc(nameSpaceNote,"ActualTemp");
 | 
			
		||||
                    Double actualTemp = readPlc(nameSpaceNote, "ActualTemp");
 | 
			
		||||
                    //设定温度
 | 
			
		||||
                    Double setUpTemp = readPlc(nameSpaceNote,"SetUpTemp");
 | 
			
		||||
                    Double setUpTemp = readPlc(nameSpaceNote, "SetUpTemp");
 | 
			
		||||
                    //炉压
 | 
			
		||||
                    Double furnacePressure = readPlc(nameSpaceNote, "FurnacePressure");
 | 
			
		||||
                    //外一区温度
 | 
			
		||||
                    Double outerZoneITemperature = readPlc(nameSpaceNote, "OuterZoneITemperature");
 | 
			
		||||
                    //外二区温度
 | 
			
		||||
                    Double outerZone2Temperature = readPlc(nameSpaceNote, "OuterZone2Temperature");
 | 
			
		||||
                    ParTemValue parTemValue3=new ParTemValue();
 | 
			
		||||
                    ParTemValue parTemValue3 = new ParTemValue();
 | 
			
		||||
                    parTemValue3.setSetTemValue(setUpTemp.floatValue());
 | 
			
		||||
                    parTemValue3.setActTemValue(actualTemp.floatValue());
 | 
			
		||||
                    parTemValue3.setOuterZone1Temp(outerZoneITemperature.floatValue());
 | 
			
		||||
@@ -499,15 +517,22 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parTemValue3.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parTemValueServiceBiz.save(parTemValue3);
 | 
			
		||||
                    //电度值
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote,"ElectricalValue");
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote, "ElectricalValue");
 | 
			
		||||
                    //A向电压
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote,"PhaseAVoltage");
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote, "PhaseAVoltage");
 | 
			
		||||
                    Double phaseBVoltage = readPlc(nameSpaceNote, "PhaseBVoltage");
 | 
			
		||||
                    Double phaseCVoltage = readPlc(nameSpaceNote, "PhaseCVoltage");
 | 
			
		||||
                    ParEleValue parEleValue3=new ParEleValue();
 | 
			
		||||
                    //ABC三向电流
 | 
			
		||||
                    Double phaseACurrent = readPlc(nameSpaceNote, "PhaseACurrent");
 | 
			
		||||
                    Double phaseBCurrent = readPlc(nameSpaceNote, "PhaseBCurrent");
 | 
			
		||||
                    Double phaseCCurrent = readPlc(nameSpaceNote, "PhaseCCurrent");
 | 
			
		||||
                    ParEleValue parEleValue3 = new ParEleValue();
 | 
			
		||||
                    parEleValue3.setAVoltagevValue(phaseAVoltage.floatValue());
 | 
			
		||||
                    parEleValue3.setAVoltagevValue(phaseBVoltage.floatValue());
 | 
			
		||||
                    parEleValue3.setAVoltagevValue(phaseCVoltage.floatValue());
 | 
			
		||||
                    parEleValue3.setBVoltagevValue(phaseBVoltage.floatValue());
 | 
			
		||||
                    parEleValue3.setCVoltagevValue(phaseCVoltage.floatValue());
 | 
			
		||||
                    parEleValue3.setACurrentValue(phaseACurrent.floatValue());
 | 
			
		||||
                    parEleValue3.setBCurrentValue(phaseBCurrent.floatValue());
 | 
			
		||||
                    parEleValue3.setCCurrentValue(phaseCVoltage.floatValue());
 | 
			
		||||
                    parEleValue3.setTotalBat(electricalValue.floatValue());
 | 
			
		||||
                    parEleValue3.setKilnId(kilnId);
 | 
			
		||||
                    parEleValue3.setTaskId(currTaskId);
 | 
			
		||||
@@ -515,17 +540,24 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parEleValueServiceBiz.save(parEleValue3);
 | 
			
		||||
                }
 | 
			
		||||
                //清洗炉
 | 
			
		||||
                if (kilnInfo.getType()==4){
 | 
			
		||||
                if (kilnInfo.getType() == 4) {
 | 
			
		||||
                    //电度值
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote,"TotalElectricity");
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote, "TotalElectricity");
 | 
			
		||||
                    //A向电压
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote,"AVoltage");
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote, "AVoltage");
 | 
			
		||||
                    Double phaseBVoltage = readPlc(nameSpaceNote, "BVoltage");
 | 
			
		||||
                    Double phaseCVoltage = readPlc(nameSpaceNote, "CVoltage");
 | 
			
		||||
                    ParEleValue parEleValue4=new ParEleValue();
 | 
			
		||||
                    //ABC三向电流
 | 
			
		||||
                    Double aCurrent = readPlc(nameSpaceNote, "ACurrent");
 | 
			
		||||
                    Double bCurrent = readPlc(nameSpaceNote, "BCurrent");
 | 
			
		||||
                    Double cCurrent = readPlc(nameSpaceNote, "CCurrent");
 | 
			
		||||
                    ParEleValue parEleValue4 = new ParEleValue();
 | 
			
		||||
                    parEleValue4.setAVoltagevValue(phaseAVoltage.floatValue());
 | 
			
		||||
                    parEleValue4.setAVoltagevValue(phaseBVoltage.floatValue());
 | 
			
		||||
                    parEleValue4.setAVoltagevValue(phaseCVoltage.floatValue());
 | 
			
		||||
                    parEleValue4.setBVoltagevValue(phaseBVoltage.floatValue());
 | 
			
		||||
                    parEleValue4.setCVoltagevValue(phaseCVoltage.floatValue());
 | 
			
		||||
                    parEleValue4.setACurrentValue(aCurrent.floatValue());
 | 
			
		||||
                    parEleValue4.setBCurrentValue(bCurrent.floatValue());
 | 
			
		||||
                    parEleValue4.setCCurrentValue(cCurrent.floatValue());
 | 
			
		||||
                    parEleValue4.setTotalBat(electricalValue.floatValue());
 | 
			
		||||
                    parEleValue4.setKilnId(kilnId);
 | 
			
		||||
                    parEleValue4.setTaskId(currTaskId);
 | 
			
		||||
@@ -538,36 +570,36 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
 | 
			
		||||
    //遍历工业炉,空工业炉查询缓存区是否有等待加工的任务,
 | 
			
		||||
    //待加工任务存在且没有状态为正在进炉的情况下,按照先进先出的规则选择待加工任务呼叫车辆进炉
 | 
			
		||||
    @Scheduled(fixedDelay = 1000*60)
 | 
			
		||||
    //@Scheduled(fixedDelay = 1000*60)
 | 
			
		||||
    public void runTaskForEmptyKiln() throws IOException {
 | 
			
		||||
        List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list(new QueryWrapper<KilnInfo>()
 | 
			
		||||
                .eq(KilnInfo.VALID, 1).eq(KilnInfo.STATUS, 0).orderByAsc(KilnInfo.TYPE));
 | 
			
		||||
        // 呼叫车辆运送货物给炉子
 | 
			
		||||
        //存在空闲工业炉
 | 
			
		||||
        if (kilnInfoList.size()!=0) {
 | 
			
		||||
            for (KilnInfo kilnInfo:kilnInfoList
 | 
			
		||||
                 ) {
 | 
			
		||||
        if (kilnInfoList.size() != 0) {
 | 
			
		||||
            for (KilnInfo kilnInfo : kilnInfoList
 | 
			
		||||
            ) {
 | 
			
		||||
                //查询是否有车辆正在执行任务,如果有,等。(根据车辆是否正在运行可以避免出现前一个任务获取还没进去炉子,炉子状态依然为allowIn,从而继续发送任务的情况)
 | 
			
		||||
                List<VehicleInfo> vehicleInfos = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 1));
 | 
			
		||||
                if (vehicleInfos.size()>0){
 | 
			
		||||
                if (vehicleInfos.size() > 0) {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                Boolean kilnReadyIn=false;
 | 
			
		||||
                if (kilnInfo.getType()==1){
 | 
			
		||||
                    kilnReadyIn=kilnReadyIn(kilnInfo.getId());
 | 
			
		||||
                Boolean kilnReadyIn = false;
 | 
			
		||||
                if (kilnInfo.getType() == 1) {
 | 
			
		||||
                    kilnReadyIn = kilnReadyIn(kilnInfo.getId());
 | 
			
		||||
                }
 | 
			
		||||
                //查询炉子是否allowIn
 | 
			
		||||
                Boolean kilnAllowIn = kilnAllowIn(kilnInfo.getId());
 | 
			
		||||
                if (kilnReadyIn||kilnAllowIn){
 | 
			
		||||
                if (kilnReadyIn || kilnAllowIn) {
 | 
			
		||||
                    //因为readyIn在多用炉第一托盘下油后一直存在,到出炉为止.所以查询当前炉子在加工的任务,大于一条,则不再根据readyIn发起任务
 | 
			
		||||
                    List<CurrTask> currTaskList = currTaskServiceBiz.list(new QueryWrapper<CurrTask>()
 | 
			
		||||
                            .eq(CurrTask.KILN_ID, kilnInfo.getId()).eq(CurrTask.IS_IN, 1).eq(CurrTask.STATUS,1));
 | 
			
		||||
                    if (kilnInfo.getType()==1){
 | 
			
		||||
                        if (currTaskList.size()>1){
 | 
			
		||||
                            .eq(CurrTask.KILN_ID, kilnInfo.getId()).eq(CurrTask.IS_IN, 1).eq(CurrTask.STATUS, 1));
 | 
			
		||||
                    if (kilnInfo.getType() == 1) {
 | 
			
		||||
                        if (currTaskList.size() > 1) {
 | 
			
		||||
                            continue;
 | 
			
		||||
                        }
 | 
			
		||||
                    }else {
 | 
			
		||||
                        if (currTaskList.size()>0){
 | 
			
		||||
                    } else {
 | 
			
		||||
                        if (currTaskList.size() > 0) {
 | 
			
		||||
                            continue;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
@@ -579,12 +611,12 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                            .orderByAsc(InStockInfo.IN_TIME));
 | 
			
		||||
                    if (inStockInfoList.size() > 0) {
 | 
			
		||||
                        InStockInfo inStockInfo = inStockInfoList.get(0);
 | 
			
		||||
                        logger.info("加工炉"+kilnInfo.getCode()+"readyIn为"+kilnReadyIn.toString()+" allowIn为"+kilnAllowIn.toString());
 | 
			
		||||
                        logger.info("缓存区等待队列第一位:"+inStockInfo.toString());
 | 
			
		||||
                        logger.info("加工炉" + kilnInfo.getCode() + "readyIn为" + kilnReadyIn.toString() + " allowIn为" + kilnAllowIn.toString());
 | 
			
		||||
                        logger.info("缓存区等待队列第一位:" + inStockInfo.toString());
 | 
			
		||||
                        CurrTask currTask = currTaskServiceBiz.getById(inStockInfo.getTaskId());
 | 
			
		||||
                        if (currTask.getStatus()!=0){
 | 
			
		||||
                            logger.info(inStockInfo.toString()+"该缓存对应的任务状态为:"+currTask.getStatus()+"不能发起任务。");
 | 
			
		||||
                            webSocketServer.sendtoUser(inStockInfo.getLocationName()+"对应的缓存加工任务状态不为未加工,不能发起任务,请先确认任务状态!","1");
 | 
			
		||||
                        if (currTask.getStatus() != 0) {
 | 
			
		||||
                            logger.info(inStockInfo.toString() + "该缓存对应的任务状态为:" + currTask.getStatus() + "不能发起任务。");
 | 
			
		||||
                            webSocketServer.sendtoUser(inStockInfo.getLocationName() + "对应的缓存加工任务状态不为未加工,不能发起任务,请先确认任务状态!", "1");
 | 
			
		||||
                        }
 | 
			
		||||
                        Location location = locationServiceBiz.getById(inStockInfo.getLocationId());
 | 
			
		||||
                        //是否有小车在运行
 | 
			
		||||
@@ -594,13 +626,13 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                            //计算出路径最短的车辆id
 | 
			
		||||
                            Long vehicleId = taskDistanceUtils.chooseVehicle(location.getCode(), kilnInfo.getCode());
 | 
			
		||||
                            //占用车辆
 | 
			
		||||
                            if (vehicleId!=0){
 | 
			
		||||
                            if (vehicleId != 0) {
 | 
			
		||||
                                VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
 | 
			
		||||
                                vehicleInfo.setStatus(1);
 | 
			
		||||
                                vehicleInfo.setUpdateTime(LocalDateTime.now());
 | 
			
		||||
                                vehicleInfoServiceBiz.updateById(vehicleInfo);
 | 
			
		||||
                                asynRunTaskService.asynRunTaskForStockToKiln(inStockInfo.getId(), vehicleId);
 | 
			
		||||
                            }else {
 | 
			
		||||
                            } else {
 | 
			
		||||
                                logger.info("当前两辆车都不在线.无法发起任务!");
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
@@ -612,11 +644,11 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //遍历正在工作炉子的报警变量,记录报警
 | 
			
		||||
    @Scheduled(fixedDelay = 1000*60)
 | 
			
		||||
    public void listenKilnAlarm(){
 | 
			
		||||
    //@Scheduled(fixedDelay = 1000*60)
 | 
			
		||||
    public void listenKilnAlarm() {
 | 
			
		||||
        List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list();
 | 
			
		||||
        for (KilnInfo kilnInfo:kilnInfoList
 | 
			
		||||
             ) {
 | 
			
		||||
        for (KilnInfo kilnInfo : kilnInfoList
 | 
			
		||||
        ) {
 | 
			
		||||
            PlcNameSpace kilnNameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_ID, kilnInfo.getId()));
 | 
			
		||||
@@ -624,53 +656,53 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
            String working = readPlcToString(kilnNameSpace.getName(), "Working");
 | 
			
		||||
            JSONObject jsonObject = JSON.parseObject(working);
 | 
			
		||||
            Boolean aBoolean = Boolean.valueOf(String.valueOf(jsonObject.get("result")));
 | 
			
		||||
            if (aBoolean){
 | 
			
		||||
            if (aBoolean) {
 | 
			
		||||
                //命名空间前缀
 | 
			
		||||
                String nameSpace = kilnNameSpace.getName();
 | 
			
		||||
                //炉子的报警变量
 | 
			
		||||
                List<PlcNameSpace> alarmNameList = plcNameSpaceServiceBiz.list(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                        .eq(PlcNameSpace.EQ_TYPE, 1)
 | 
			
		||||
                        .eq(PlcNameSpace.TYPE, 1)
 | 
			
		||||
                        .eq(PlcNameSpace.EQ_ID,kilnInfo.getId()));;
 | 
			
		||||
                for (PlcNameSpace plcNameSpace:alarmNameList
 | 
			
		||||
                        .eq(PlcNameSpace.EQ_ID, kilnInfo.getId()));
 | 
			
		||||
                ;
 | 
			
		||||
                for (PlcNameSpace plcNameSpace : alarmNameList
 | 
			
		||||
                ) {
 | 
			
		||||
                    String name = plcNameSpace.getName();
 | 
			
		||||
                    Map<String, Object> json = new HashMap();
 | 
			
		||||
                    json.put("nameSpace", 6);
 | 
			
		||||
                    json.put("plcName", "plc1");
 | 
			
		||||
                    json.put("identifier",nameSpace+name);
 | 
			
		||||
                    json.put("identifier", nameSpace + name);
 | 
			
		||||
                    String jsonString = JSON.toJSONString(json);
 | 
			
		||||
                    try {
 | 
			
		||||
                        String result = HttpClient.httpPost("http://localhost:8009/opcua/read", jsonString);
 | 
			
		||||
                        Boolean resultBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
                        //报警状态为true
 | 
			
		||||
                        if (resultBoolean){
 | 
			
		||||
                        if (resultBoolean) {
 | 
			
		||||
                            //任务状态为执行中且正在炉子中加工的任务
 | 
			
		||||
                            List<CurrTask> currTaskList = currTaskServiceBiz.list(new QueryWrapper<CurrTask>()
 | 
			
		||||
                                    .eq(CurrTask.KILN_ID, kilnInfo.getId())
 | 
			
		||||
                                    .eq(CurrTask.IS_IN, 1)
 | 
			
		||||
                                    .eq(CurrTask.STATUS, 1));
 | 
			
		||||
                            if (currTaskList.size()!=0){
 | 
			
		||||
                                for (CurrTask currTask:currTaskList
 | 
			
		||||
                                     ) {
 | 
			
		||||
                                    AlarmInfo alarmInfo=new AlarmInfo();
 | 
			
		||||
                            if (currTaskList.size() != 0) {
 | 
			
		||||
                                for (CurrTask currTask : currTaskList
 | 
			
		||||
                                ) {
 | 
			
		||||
                                    AlarmInfo alarmInfo = new AlarmInfo();
 | 
			
		||||
                                    alarmInfo.setEquipmentId(currTask.getKilnId());
 | 
			
		||||
                                    alarmInfo.setEquipmentName(currTask.getKilnName());
 | 
			
		||||
                                    alarmInfo.setType(0);
 | 
			
		||||
                                    alarmInfo.setAlarmCode(CodeGeneratorHelper.getAlarmCode());
 | 
			
		||||
                                    alarmInfo.setAlarmInfo(plcNameSpace.getEqName()+":"+plcNameSpace.getNote());
 | 
			
		||||
                                    alarmInfo.setAlarmInfo(plcNameSpace.getEqName() + ":" + plcNameSpace.getNote());
 | 
			
		||||
                                    alarmInfo.setTaskCode(currTask.getTaskCode());
 | 
			
		||||
                                    alarmInfo.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                                    alarmInfoServiceBiz.save(alarmInfo);
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                            else {
 | 
			
		||||
                                AlarmInfo alarmInfo=new AlarmInfo();
 | 
			
		||||
                            } else {
 | 
			
		||||
                                AlarmInfo alarmInfo = new AlarmInfo();
 | 
			
		||||
                                alarmInfo.setEquipmentId(kilnInfo.getId());
 | 
			
		||||
                                alarmInfo.setEquipmentName(kilnInfo.getKilnName());
 | 
			
		||||
                                alarmInfo.setType(0);
 | 
			
		||||
                                alarmInfo.setAlarmCode(CodeGeneratorHelper.getAlarmCode());
 | 
			
		||||
                                alarmInfo.setAlarmInfo(plcNameSpace.getEqName()+":"+plcNameSpace.getNote());
 | 
			
		||||
                                alarmInfo.setAlarmInfo(plcNameSpace.getEqName() + ":" + plcNameSpace.getNote());
 | 
			
		||||
                                alarmInfo.setTaskCode("0");
 | 
			
		||||
                                alarmInfo.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                                alarmInfoServiceBiz.save(alarmInfo);
 | 
			
		||||
@@ -686,88 +718,94 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
 | 
			
		||||
    //监听车辆是否在线,定时恢复车辆状态会导致避让时等待时间过久,再次发起任务,造成重复发起,废弃
 | 
			
		||||
    public void listenVehicleOnline() throws IOException {
 | 
			
		||||
        List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS,1));
 | 
			
		||||
        for (VehicleInfo vehicleInfo:vehicleInfoList
 | 
			
		||||
             ) {
 | 
			
		||||
        List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 1));
 | 
			
		||||
        for (VehicleInfo vehicleInfo : vehicleInfoList
 | 
			
		||||
        ) {
 | 
			
		||||
            Boolean rgvOnline = rgvOnline(vehicleInfo.getId());
 | 
			
		||||
            Boolean rgvFree = rgvFree(vehicleInfo.getId());
 | 
			
		||||
            if (!rgvOnline){
 | 
			
		||||
                webSocketServer.sendtoUser("当前存在车辆不在线,请移动停用的车辆到轨道尽头处或者改车辆为线上模式,如果已经车辆停用,请忽略本提示消息。","1");
 | 
			
		||||
            if (!rgvOnline) {
 | 
			
		||||
                webSocketServer.sendtoUser("当前存在车辆不在线,请移动停用的车辆到轨道尽头处或者改车辆为线上模式,如果已经车辆停用,请忽略本提示消息。", "1");
 | 
			
		||||
            }
 | 
			
		||||
            if (rgvOnline&&rgvFree){
 | 
			
		||||
            if (rgvOnline && rgvFree) {
 | 
			
		||||
                vehicleInfo.setStatus(0);
 | 
			
		||||
                vehicleInfoServiceBiz.updateById(vehicleInfo);
 | 
			
		||||
                logger.info("检测到车辆:"+vehicleInfo.getId()+" 显示状态为占用,实际状态为空闲。自动置车辆状态为空闲。");
 | 
			
		||||
                logger.info("检测到车辆:" + vehicleInfo.getId() + " 显示状态为占用,实际状态为空闲。自动置车辆状态为空闲。");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取变量值
 | 
			
		||||
     * @param nameSpace nameSpace前缀
 | 
			
		||||
     *
 | 
			
		||||
     * @param nameSpace    nameSpace前缀
 | 
			
		||||
     * @param variableName 变量名称
 | 
			
		||||
     * @return result字符串
 | 
			
		||||
     */
 | 
			
		||||
    private String readPlcToString(String nameSpace, String variableName){
 | 
			
		||||
        String identifier=nameSpace.concat(variableName);
 | 
			
		||||
    private String readPlcToString(String nameSpace, String variableName) {
 | 
			
		||||
        String identifier = nameSpace.concat(variableName);
 | 
			
		||||
        Map<String, Object> json = new HashMap();
 | 
			
		||||
        json.put("nameSpace", 6);
 | 
			
		||||
        json.put("plcName", "plc1");
 | 
			
		||||
        json.put("identifier",identifier);
 | 
			
		||||
        json.put("identifier", identifier);
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("readPLC: "+identifier+" 的值失败");
 | 
			
		||||
            logger.info("readPLC: " + identifier + " 的值失败");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取变量值
 | 
			
		||||
     * @param nameSpace nameSpace前缀
 | 
			
		||||
     *
 | 
			
		||||
     * @param nameSpace    nameSpace前缀
 | 
			
		||||
     * @param variableName 变量名称
 | 
			
		||||
     * @return 变量值
 | 
			
		||||
     */
 | 
			
		||||
    private Double readPlc(String nameSpace, String variableName){
 | 
			
		||||
        String identifier=nameSpace.concat(variableName);
 | 
			
		||||
    private Double readPlc(String nameSpace, String variableName) {
 | 
			
		||||
        String identifier = nameSpace.concat(variableName);
 | 
			
		||||
        Map<String, Object> json = new HashMap();
 | 
			
		||||
        json.put("nameSpace", 6);
 | 
			
		||||
        json.put("plcName", "plc1");
 | 
			
		||||
        json.put("identifier",identifier);
 | 
			
		||||
        json.put("identifier", identifier);
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("能源消耗统计:获取 "+identifier+" 的值失败");
 | 
			
		||||
            logger.info("能源消耗统计:获取 " + identifier + " 的值失败");
 | 
			
		||||
        }
 | 
			
		||||
        return Double.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Boolean kilnAllowIn(Long kilnId){
 | 
			
		||||
    private Boolean kilnAllowIn(Long kilnId) {
 | 
			
		||||
        PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                .eq(PlcNameSpace.EQ_ID, kilnId)
 | 
			
		||||
                .eq(PlcNameSpace.TYPE,0));
 | 
			
		||||
                .eq(PlcNameSpace.TYPE, 0));
 | 
			
		||||
        String nameSpaceNote = nameSpace.getName();
 | 
			
		||||
        String result = readPlcToString(nameSpaceNote, "AllowIn");
 | 
			
		||||
        return Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
    }
 | 
			
		||||
    private Boolean kilnReadyIn(Long kilnId){
 | 
			
		||||
 | 
			
		||||
    private Boolean kilnReadyIn(Long kilnId) {
 | 
			
		||||
        PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                .eq(PlcNameSpace.EQ_ID, kilnId)
 | 
			
		||||
                .eq(PlcNameSpace.TYPE,0));
 | 
			
		||||
                .eq(PlcNameSpace.TYPE, 0));
 | 
			
		||||
        String nameSpaceNote = nameSpace.getName();
 | 
			
		||||
        String result = readPlcToString(nameSpaceNote, "ReadyIn");
 | 
			
		||||
        return Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
    }
 | 
			
		||||
    private Boolean kilnWorking(Long kilnId){
 | 
			
		||||
 | 
			
		||||
    private Boolean kilnWorking(Long kilnId) {
 | 
			
		||||
        PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                .eq(PlcNameSpace.EQ_ID, kilnId)
 | 
			
		||||
                .eq(PlcNameSpace.TYPE,0));
 | 
			
		||||
                .eq(PlcNameSpace.TYPE, 0));
 | 
			
		||||
        String nameSpaceNote = nameSpace.getName();
 | 
			
		||||
        String result = readPlcToString(nameSpaceNote, "Working");
 | 
			
		||||
        return Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
@@ -775,28 +813,29 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 车辆是否在线
 | 
			
		||||
     *
 | 
			
		||||
     * @param vehicleId 车辆id
 | 
			
		||||
     * @return true/false
 | 
			
		||||
     * @throws IOException  plc访问失败
 | 
			
		||||
     * @throws IOException plc访问失败
 | 
			
		||||
     */
 | 
			
		||||
    private Boolean rgvOnline(Long vehicleId) throws IOException {
 | 
			
		||||
        String identifier=null;
 | 
			
		||||
        if (vehicleId==1){
 | 
			
		||||
            identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV1ToWCS.Online";
 | 
			
		||||
        String identifier = null;
 | 
			
		||||
        if (vehicleId == 1) {
 | 
			
		||||
            identifier = "S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV1ToWCS.Online";
 | 
			
		||||
        }
 | 
			
		||||
        if (vehicleId==2){
 | 
			
		||||
            identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV2ToWCS.Online";
 | 
			
		||||
        if (vehicleId == 2) {
 | 
			
		||||
            identifier = "S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV2ToWCS.Online";
 | 
			
		||||
        }
 | 
			
		||||
        Map<String, Object> json = new HashMap();
 | 
			
		||||
        json.put("nameSpace", 6);
 | 
			
		||||
        json.put("plcName", "plc1");
 | 
			
		||||
        json.put("identifier",identifier);
 | 
			
		||||
        json.put("identifier", identifier);
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("获取车辆"+vehicleId+"当前是否在线失败");
 | 
			
		||||
            logger.info("获取车辆" + vehicleId + "当前是否在线失败");
 | 
			
		||||
        }
 | 
			
		||||
        Boolean online = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
        return online;
 | 
			
		||||
@@ -804,28 +843,29 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 车辆是否空闲
 | 
			
		||||
     *
 | 
			
		||||
     * @param vehicleId 车辆id
 | 
			
		||||
     * @return true/false
 | 
			
		||||
     * @throws IOException  plc访问失败
 | 
			
		||||
     * @throws IOException plc访问失败
 | 
			
		||||
     */
 | 
			
		||||
    private Boolean rgvFree(Long vehicleId) throws IOException {
 | 
			
		||||
        String identifier=null;
 | 
			
		||||
        if (vehicleId==1){
 | 
			
		||||
            identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV1ToWCS.Free";
 | 
			
		||||
        String identifier = null;
 | 
			
		||||
        if (vehicleId == 1) {
 | 
			
		||||
            identifier = "S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV1ToWCS.Free";
 | 
			
		||||
        }
 | 
			
		||||
        if (vehicleId==2){
 | 
			
		||||
            identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV2ToWCS.Free";
 | 
			
		||||
        if (vehicleId == 2) {
 | 
			
		||||
            identifier = "S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV2ToWCS.Free";
 | 
			
		||||
        }
 | 
			
		||||
        Map<String, Object> json = new HashMap();
 | 
			
		||||
        json.put("nameSpace", 6);
 | 
			
		||||
        json.put("plcName", "plc1");
 | 
			
		||||
        json.put("identifier",identifier);
 | 
			
		||||
        json.put("identifier", identifier);
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("获取车辆"+vehicleId+"当前是否空闲失败");
 | 
			
		||||
            logger.info("获取车辆" + vehicleId + "当前是否空闲失败");
 | 
			
		||||
        }
 | 
			
		||||
        Boolean free = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
        return free;
 | 
			
		||||
 
 | 
			
		||||
		新しいイシューから参照
	
	ユーザーをブロックする