zhoushihao
2024-10-23 431e937773ca692190e94b326bd4c4201154f661
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -10,7 +10,6 @@
import com.mes.engineering.mapper.EngineeringMapper;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.rawglassstation.service.RawGlassStorageStationService;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
import com.mes.uppattenusage.entity.vo.UpPattenUsageVO;
@@ -34,8 +33,6 @@
@Component
public class RawGlassTask {
    @Autowired
    private RawGlassStorageStationService rawGlassStorageStationService;
    @Autowired
    private RawGlassStorageDetailsService rawGlassStorageDetailsService;
@@ -63,22 +60,23 @@
    @Scheduled(fixedDelay = 1000)
    public void rawStorageTask() throws Exception {
        ReadWriteEntity requestWord = miloService.readFromOpcUa("storage-device.dev.Task Request");
        ReadWriteEntity confireWord = miloService.readFromOpcUa("storage-device.dev.Task Confirmation Word");
        ReadWriteEntity taskWord = miloService.readFromOpcUa("storage-device.dev.Task sending word");
        ReadWriteEntity requestWord = miloService.readFromOpcUa("A01-CC.dev.request");
        ReadWriteEntity confireWord = miloService.readFromOpcUa("A01-CC.dev.confirmationWord");
        ReadWriteEntity reportWord = miloService.readFromOpcUa("A01-CC.dev.reportWord");
        ReadWriteEntity taskWord = miloService.readFromOpcUa("A01-CC.dev.taskWord");
        String requestValue = requestWord.getValue() + "";
        if ("0".equals(requestValue)) {
            if ("1".equals(confireWord.getValue() + "")) {
            if ("1".equals(confireWord.getValue() + "") && "0".equals(reportWord.getValue() + "")) {
                List<ReadWriteEntity> list = new ArrayList<>();
                list.add(generateReadWriteEntity("storage-device.dev.Task Confirmation Word", 0));
                list.add(generateReadWriteEntity("A01-CC.dev.confirmationWord", 0));
                miloService.writeToOpcWord(list);
            }
            if ("1".equals(taskWord.getValue() + "")) {
                List<ReadWriteEntity> list = new ArrayList<>();
                list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 0));
                list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 0));
                list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", 0));
                list.add(generateReadWriteEntity("storage-device.dev.End shelf number", 0));
                list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 0));
                list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 0));
                list.add(generateReadWriteEntity("A01-CC.dev.startSlot", 0));
                list.add(generateReadWriteEntity("A01-CC.dev.endSlot", 0));
                miloService.writeToOpcWord(list);
            }
            return;
@@ -114,16 +112,17 @@
    @Scheduled(fixedDelay = 1000)
    public void rawStorageInCar() throws Exception {
        ReadWriteEntity entity = miloService.readFromOpcUa("storage-device.dev.Loading rack");
        ReadWriteEntity entity = miloService.readFromOpcUa("A01-CC.dev.inCar");
        String value = entity.getValue() + "";
        if (!"1".equals(value)) {
            log.info("大车忙碌");
            log.info("大车上没有架子");
            return;
        }
        //查询任务
        RawGlassStorageDetails one = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING));
        if (one == null) {
            log.info("没有正在执行的任务");
            return;
        }
        rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getId, one.getId())
@@ -133,7 +132,7 @@
    @Scheduled(fixedDelay = 1000)
    public void rawStorageFinish() throws Exception {
        ReadWriteEntity entity = miloService.readFromOpcUa("storage-device.dev.Task report letter");
        ReadWriteEntity entity = miloService.readFromOpcUa("A01-CC.dev.reportWord");
        String value = entity.getValue() + "";
        if ("0".equals(value)) {
            log.info("当前任务未汇报,结束本次任务");
@@ -150,51 +149,52 @@
        RawGlassStorageDetails targetDetails = generateDetails(details, task.getEndSlot());
        Integer taskType = task.getTaskType();
        if ("1".equals(value)) {
            log.info("将详情表的状态改为已出库");
            rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                    .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
                    .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR));
            log.info("任务状态已更改为:已完成");
            rawGlassStorageTaskService.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
                    .eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW)
                    .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_SUCCESS));
            switch (taskType) {
                case 1:
                    log.info("进片任务");
                    rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                            .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
                            .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR));
                    //todo:生成入库详情表:其他信息不变,
                    rawGlassStorageDetailsService.save(targetDetails);
                    log.info("1、入库,3、调度任务。{}", taskType);
                    if (targetDetails.getRemainQuantity() > 0) {
                        rawGlassStorageDetailsService.save(targetDetails);
                    }
                    break;
                case 2:
                    log.info("出片任务");
                    rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                            .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
                            .eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
                            .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR));
                case 4:
                    log.info("2、出片,4、入库请求。{}", taskType);
                    targetDetails = new RawGlassStorageDetails();
                    targetDetails.setSlot(task.getEndSlot());
                    targetDetails.setShelf(task.getStartSlot());
                    targetDetails.setState(Const.RAW_GLASS_STATE_IN);
                    rawGlassStorageDetailsService.save(targetDetails);
                    break;
                case 3:
                    log.info("调度任务");
                    rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                            .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
                            .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR));
                    rawGlassStorageDetailsService.save(targetDetails);
                    break;
                default:
                    break;
            }
            rawGlassStorageTaskService.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
                    .eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW)
                    .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_SUCCESS));
        } else {
            if (taskType.equals(Const.RAW_GLASS_TASK_TYPE_IN_REQUEST)) {
                rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                        .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
                        .eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
                        .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING, Const.RAW_GLASS_STATE_CAR));
            } else {
                rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                        .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
                        .eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
                        .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING, Const.RAW_GLASS_STATE_CAR));
            }
            rawGlassStorageTaskService.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
                    .eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW)
                    .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_FAILURE));
            rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                    .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
                    .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR));
        }
        }
        List<ReadWriteEntity> list = new ArrayList<>();
        list.add(generateReadWriteEntity("storage-device.dev.Task Confirmation Word", 1));
        list.add(generateReadWriteEntity("A01-CC.dev.confirmationWord", 1));
        miloService.writeToOpcWord(list);
    }
@@ -252,12 +252,12 @@
        //生成出库任务
        rawGlassStorageDetailsService.generateTask(startSlot, lefting, startSlot, rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT);
        List<ReadWriteEntity> list = new ArrayList<>();
        list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1));
        list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1));
        list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", startSlot));
        list.add(generateReadWriteEntity("storage-device.dev.End shelf number", lefting));
        miloService.writeToOpcWord(list);
//        List<ReadWriteEntity> list = new ArrayList<>();
//        list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1));
//        list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1));
//        list.add(generateReadWriteEntity("A01-CC.dev.startSlot", startSlot));
//        list.add(generateReadWriteEntity("A01-CC.dev.endSlot", lefting));
//        miloService.writeToOpcWord(list);
        //修改出片任务状态
        rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
@@ -286,12 +286,12 @@
        RawGlassStorageDetails details = rawGlassList.get(0);
        rawGlassStorageDetailsService.generateTask(details.getSlot(), details.getShelf(), details.getShelf(),
                details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_IN);
        List<ReadWriteEntity> list = new ArrayList<>();
        list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1));
        list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1));
        list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", details.getSlot()));
        list.add(generateReadWriteEntity("storage-device.dev.End shelf number", details.getShelf()));
        miloService.writeToOpcWord(list);
//        List<ReadWriteEntity> list = new ArrayList<>();
//        list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1));
//        list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1));
//        list.add(generateReadWriteEntity("A01-CC.dev.startSlot", details.getSlot()));
//        list.add(generateReadWriteEntity("A01-CC.dev.endSlot", details.getShelf()));
//        miloService.writeToOpcWord(list);
        //生成工位任务,将吊装位的玻璃状态改位进笼中
        //修改吊装位的原片状态为103 出片中
        //修改出片任务状态
@@ -341,12 +341,6 @@
            );
            rawGlassStorageDetailsService.generateTask(details.getSlot(), endSlot, details.getSlot(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
            List<ReadWriteEntity> list = new ArrayList<>();
            list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1));
            list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1));
            list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", details.getSlot()));
            list.add(generateReadWriteEntity("storage-device.dev.End shelf number", endSlot));
            miloService.writeToOpcWord(list);
            //结束调度任务 修改工位状态(起始位)状态为103 RAW_GLASS_STATE_RUNNING 任务完成后将状态改为101  目标位新增一条数据,架子号为(起始位)
            rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                    .eq(RawGlassStorageDetails::getSlot, details.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
@@ -362,12 +356,12 @@
                    && glassStorageDetails.getRemainQuantity() == 0)) {
                //将架子放回原工位上
                rawGlassStorageDetailsService.generateTask(endSlot, glassStorageDetails.getShelf(), glassStorageDetails.getShelf(), 0, Const.RAW_GLASS_TASK_TYPE_DISPATCH);
                List<ReadWriteEntity> list = new ArrayList<>();
                list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1));
                list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1));
                list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", endSlot));
                list.add(generateReadWriteEntity("storage-device.dev.End shelf number", glassStorageDetails.getShelf()));
                miloService.writeToOpcWord(list);
//                List<ReadWriteEntity> list = new ArrayList<>();
//                list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1));
//                list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1));
//                list.add(generateReadWriteEntity("A01-CC.dev.startSlot", endSlot));
//                list.add(generateReadWriteEntity("A01-CC.dev.endSlot", glassStorageDetails.getShelf()));
//                miloService.writeToOpcWord(list);
                rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                        .eq(RawGlassStorageDetails::getSlot, glassStorageDetails.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
                        .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING));
@@ -385,12 +379,12 @@
                    && glassStorageDetails.getRemainQuantity() == 0)) {
                //将架子放回原工位上
                rawGlassStorageDetailsService.generateTask(endSlot02, glassStorageDetails.getShelf(), glassStorageDetails.getShelf(), 0, Const.RAW_GLASS_TASK_TYPE_DISPATCH);
                List<ReadWriteEntity> list = new ArrayList<>();
                list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1));
                list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1));
                list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", endSlot02));
                list.add(generateReadWriteEntity("storage-device.dev.End shelf number", glassStorageDetails.getShelf()));
                miloService.writeToOpcWord(list);
//                List<ReadWriteEntity> list = new ArrayList<>();
//                list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1));
//                list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1));
//                list.add(generateReadWriteEntity("A01-CC.dev.startSlot", endSlot02));
//                list.add(generateReadWriteEntity("A01-CC.dev.endSlot", glassStorageDetails.getShelf()));
//                miloService.writeToOpcWord(list);
                rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                        .eq(RawGlassStorageDetails::getSlot, glassStorageDetails.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
                        .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING));
@@ -434,12 +428,12 @@
                        .eq(RawGlassStorageDetails::getSlot, details.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
                        .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING));
                List<ReadWriteEntity> list = new ArrayList<>();
                list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1));
                list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1));
                list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", glassStorageDetails.getShelf()));
                list.add(generateReadWriteEntity("storage-device.dev.End shelf number", endSlot02));
                miloService.writeToOpcWord(list);
//                List<ReadWriteEntity> list = new ArrayList<>();
//                list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1));
//                list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1));
//                list.add(generateReadWriteEntity("A01-CC.dev.startSlot", glassStorageDetails.getShelf()));
//                list.add(generateReadWriteEntity("A01-CC.dev.endSlot", endSlot02));
//                miloService.writeToOpcWord(list);
                return Boolean.TRUE;
            } else {
@@ -449,12 +443,12 @@
                        .eq(RawGlassStorageDetails::getSlot, endSlot).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
                        .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING));
                List<ReadWriteEntity> list = new ArrayList<>();
                list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1));
                list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1));
                list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", endSlot));
                list.add(generateReadWriteEntity("storage-device.dev.End shelf number", glassStorageDetails.getShelf()));
                miloService.writeToOpcWord(list);
//                List<ReadWriteEntity> list = new ArrayList<>();
//                list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1));
//                list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1));
//                list.add(generateReadWriteEntity("A01-CC.dev.startSlot", endSlot));
//                list.add(generateReadWriteEntity("A01-CC.dev.endSlot", glassStorageDetails.getShelf()));
//                miloService.writeToOpcWord(list);
                return Boolean.TRUE;
            }
        }
@@ -476,11 +470,13 @@
        return targetDetails;
    }
    private ReadWriteEntity generateReadWriteEntity(String identifier, int value) {
        ReadWriteEntity readWriteEntity = new ReadWriteEntity();
        readWriteEntity.setIdentifier(identifier);
        readWriteEntity.setValue(value);
        return readWriteEntity;
    }
}