zhoushihao
2024-06-13 2ea30c17460f2f3cdff49e6dc78c7c20ab114c09
大理片笼:进片逻辑问题修复
3个文件已修改
69 ■■■■ 已修改文件
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java
@@ -27,7 +27,6 @@
        bigStorageCageFeedTask.setId(slotInfo.getId());
        bigStorageCageFeedTask.setTaskState(0);
        bigStorageCageFeedTask.setLine(plcFeedReqLine);
        bigStorageCageFeedTask.setTragetSlot(slotInfo.getSlot());
        bigStorageCageFeedTask.setTaskType(taskType);
        baseMapper.insert(bigStorageCageFeedTask);
    }
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -31,6 +31,7 @@
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@@ -257,6 +258,12 @@
        computeTargetByLine(outLine, d02GoAdress, d05GoAdress);
    }
    @Scheduled(fixedDelay = 5000)
    public void plcToHomeEdgOutTask() {
    }
    /**
     * 按照玻璃id判断玻璃状态及卧转立是否可直接启动
     */
@@ -316,10 +323,10 @@
     *
     * @return
     */
    private Integer getStartLine() {
    public Integer getStartLine() {
        List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
                .inSql(BigStorageCageFeedTask::getId, "select min(id) from big_storage_cage_feed_task where task_state = 2 group by line"));
        Assert.isTrue(CollectionUtils.isEmpty(taskList), "卧转立两条线都没有玻璃进片任务");
        Assert.isFalse(CollectionUtils.isEmpty(taskList), "卧转立两条线都没有玻璃进片任务");
        Map<String, Integer> taskMap = taskList.stream().collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId,
                BigStorageCageFeedTask::getLine));
        GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
@@ -333,7 +340,7 @@
    /**
     * 计算任务表进片线路的目标格子,并启动任务
     */
    private boolean computeTargetByLine(Integer line, String d02GoAdress, String d05GoAdress) {
    public boolean computeTargetByLine(Integer line, String d02GoAdress, String d05GoAdress) {
        //1、获取任务表中的所有玻璃(指定线路且已经进卧转立完成)
        List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
                .eq(BigStorageCageFeedTask::getLine, line)
@@ -347,6 +354,7 @@
        AtomicReference<BigStorageDTO> bigStorageDTO = new AtomicReference<>(new BigStorageDTO());
        Map<String, GlassInfo> glassInfoMap = glassInfos.stream().collect(Collectors.toMap(GlassInfo::getGlassId, p -> p));
        List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
        AtomicBoolean taskFlag = new AtomicBoolean(Boolean.TRUE);
        taskList.stream().forEach(e -> {
            BigStorageCageDetails cageDetails = new BigStorageCageDetails();
            //按照版图信息获取进片笼子格子号
@@ -359,21 +367,25 @@
            } else {
                bigStorageDTO.set(bigStorageCageDetailsService.queryTargetSlotByTempering(info));
            }
            e.setTragetSlot(bigStorageDTO.get().getSlot());
            e.setTargetSlot(bigStorageDTO.get().getSlot());
            cageDetails.setSlot(bigStorageDTO.get().getSlot());
            cageDetails.setState(Const.GLASS_STATE_IN);
            temperingLayoutIdTemp.set(info.getTemperingLayoutId());
            temperingFeedSequenceTemp.set(info.getTemperingFeedSequence());
            bigStorageCageDetailsList.add(cageDetails);
            taskFlag.set(bigStorageCageFeedTaskService.updateById(e));
            if (!taskFlag.get()) {
                return;
            }
        });
        //3、更新进片任务表
        boolean taskFlag = bigStorageCageFeedTaskService.updateBatchById(taskList);
        //3、更新进片任务表  遇到问题:无法批量更新,批量更新无法走指定从库
        //4、在详情表中加入进片玻璃信息
        bigStorageCageDetailsService.saveBatch(bigStorageCageDetailsList);
        if (taskFlag) {
        if (taskFlag.get()) {
            String lineAddress = line.equals(Const.A09_OUT_TARGET_POSITION) ? d02GoAdress : d05GoAdress;
            S7object.getinstance().plccontrol.writeWord(lineAddress, (short) 1);
//            S7object.getinstance().plccontrol.writeWord(lineAddress, (short) 1);
        }
        return taskFlag;
        return taskFlag.get();
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -1,14 +1,16 @@
package com.mes;
import com.mes.bigstorage.service.BigStorageCageService;
import com.mes.common.config.Const;
import com.mes.job.PlcStorageCageTask;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * @Author : zhoush
@@ -17,12 +19,42 @@
 */
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = CacheVerticalClassModuleApplication.class)
@SpringBootTest(classes = CacheVerticalClassModuleApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class CacheVerticalGlassModuleApplicationTest {
    @Autowired
    BigStorageCageService bigStorageCageService;
    @Autowired
    PlcStorageCageTask plcStorageCageTask;
    @Test
    public void testFindPath() {
        log.info("完整路径:{}", Arrays.asList("123"));
    }
    @Test
    public void computeTargetByLine() {
//        log.info("获取大理片笼信息:{}",bigStorageCageService.querybigStorageCageDetail());
        plcStorageCageTask.computeTargetByLine(2001, "", "");
    }
    @Test
    public void judgeGlassTypeStatus() {
//        log.info("获取大理片笼信息:{}",bigStorageCageService.querybigStorageCageDetail());
        plcStorageCageTask.judgeGlassTypeStatus("P24060403|6|7", Const.A09_OUT_TARGET_POSITION);
    }
    @Test
    public void getStartLine() {
//        log.info("获取大理片笼信息:{}",bigStorageCageService.querybigStorageCageDetail());
        Integer startLine = plcStorageCageTask.getStartLine();
        log.info("---------{}", startLine);
    }
    @Test
    public void selectBigStorageCageUsage() {
//        bigStorageCageService.querybigStorageCageDetail(1);
        log.info("获取大理片笼信息:{}", bigStorageCageService.selectBigStorageCageUsage());
    }
}