JsonFile/PlcdownGlass.json
@@ -1,6 +1,6 @@ { "plcAddressBegin": "DB11.0", "plcAddressLenght": "92", "plcAddressLenght": "94", "dataType": "word", "parameteInfor": [ @@ -138,6 +138,11 @@ "codeId": "task_type", "addressIndex": "90", "addressLenght": "2" }, { "codeId": "alarm_signal", "addressIndex": "92", "addressLenght": "2" } ] hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
@@ -4,6 +4,7 @@ import com.mes.downglassinfo.service.DownGlassInfoService; import com.mes.utils.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -15,7 +16,7 @@ @Autowired DownGlassInfoService downGlassInfoService; @RequestMapping("/selectDownGlassInfo") @PostMapping("/selectDownGlassInfo") public Result<String> setDownGlassInfoRequest(@RequestBody DownGlassInfoRequest request) { return Result.success(downGlassInfoService.setDownGlassInfoRequest(request)); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.mes.downglassinfo.entity.DownGlassInfo; import com.mes.downglassinfo.entity.request.DownGlassInfoRequest; import com.mes.downworkstation.entity.DownWorkstation; import com.mes.downworkstation.entity.dto.DownGlassInfoDTO; import java.util.List; @@ -50,5 +51,16 @@ */ boolean generateOutGlassTask(String glassId); /** * 设置架子定时任务查询条件 * * @param request * @return */ String setDownGlassInfoRequest(DownGlassInfoRequest request); /** * 查询架子上绑定流程卡的玻璃是否到齐 */ List<DownWorkstation> queryWorkStationIsFull(); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -1,5 +1,6 @@ package com.mes.downglassinfo.service.impl; import cn.smallbun.screw.core.util.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -12,14 +13,18 @@ import com.mes.downglassinfo.service.DownGlassInfoService; import com.mes.downstorage.entity.DownStorageCageDetails; import com.mes.downstorage.service.DownStorageCageDetailsService; import com.mes.downworkstation.entity.DownWorkstation; import com.mes.downworkstation.entity.dto.DownGlassInfoDTO; import com.mes.downworkstation.service.DownWorkstationService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.job.DownLoadCacheGlassTask; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Service public class DownGlassInfoServiceImpl extends ServiceImpl<DownGlassInfoMapper, DownGlassInfo> implements DownGlassInfoService { @@ -29,6 +34,10 @@ @Autowired DownStorageCageDetailsService downStorageCageDetailsService; @Autowired DownWorkstationService downWorkstationService; @Autowired RedisUtil redisUtil; @@ -104,4 +113,28 @@ } return "success"; } @Override public List<DownWorkstation> queryWorkStationIsFull() { //查询可以落架的玻璃信息且已绑定流程卡的工位信息 List<DownWorkstation> list = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getEnableState, Const.SLOT_ON) .isNotNull(DownWorkstation::getFlowCardId).ne(DownWorkstation::getFlowCardId, "")); List<DownWorkstation> workstationFull = new ArrayList<>(); if (CollectionUtils.isNotEmpty(list)) { //都有玻璃的工位信息(包括绑定流程卡) List<Integer> workstationList = list.stream().map(DownWorkstation::getWorkstationId).collect(Collectors.toList()); //按照符合条件的工位获取未落架的流程卡玻璃,如果返回为空,则表明所有都已落架完成 List<DownGlassInfoDTO> downGlassInfoDTOList = queryWorkStationIsIn(workstationList, Boolean.FALSE); //获取工位上的未满的流程卡及层数 List<String> flowCardIdList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList()); //可以落架的玻璃信息且已绑定流程卡的所有的工位 - 玻璃未满流程卡及层数的工位 = 已满工位 workstationFull = list.stream().filter(item -> !flowCardIdList.contains(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); //是否需要将已满的工位置为不可落架 List<Integer> workstationIds = workstationFull.stream().map(DownWorkstation::getWorkstationId).collect(Collectors.toList()); downWorkstationService.update(new LambdaUpdateWrapper<DownWorkstation>().set(DownWorkstation::getEnableState, Const.SLOT_OFF) .in(DownWorkstation::getWorkstationId, workstationIds)); } return workstationFull; } } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -120,6 +120,13 @@ return Result.build(200, "更换成功", isSucess); } @ApiOperation("关闭工位已满警报") @PostMapping("/closeAlarmSignal") @ResponseBody public Result<String> closeAlarmSignal() { return Result.build(200, "更换成功", downWorkstationService.closeAlarmSignal()); } } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
@@ -77,4 +77,6 @@ * @returnq 启用禁用 */ boolean updateDownWorkstationstate(DownWorkstation downWorkstation); String closeAlarmSignal(); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.query.MPJQueryWrapper; import com.mes.common.S7object; import com.mes.damage.entity.Damage; import com.mes.damage.service.DamageService; import com.mes.device.PlcParameterObject; import com.mes.downglassinfo.entity.DownGlassInfo; import com.mes.downglassinfo.mapper.DownGlassInfoMapper; import com.mes.downglassinfo.service.DownGlassInfoService; @@ -209,5 +211,12 @@ } } @Override public String closeAlarmSignal() { PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("alarm_signal").getAddress(), 0); return "success"; } } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -126,6 +126,16 @@ } } @Scheduled(fixedDelay = 300) public void plcShelfFull() { List<DownWorkstation> list = downGlassInfoService.queryWorkStationIsFull(); if (CollectionUtils.isNotEmpty(list)) { S7control s7control = S7object.getinstance().plccontrol; PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject; s7control.writeWord(plcMesObject.getPlcParameter("alarm_signal").getAddress(), 1); } } public void inTo(String glassId, String requestWord, String currentSlot) { log.info("1、按照玻璃id:{}获取玻璃小片信息,当前格子为:{}", glassId, currentSlot); //添加进片任务 查找空格