hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
@@ -3,6 +3,7 @@ import com.mes.glassinfo.entity.GlassInfo; import com.github.yulichang.base.MPJBaseService; import java.util.List; import java.util.Map; /** * <p> @@ -22,5 +23,17 @@ * 保存小片表 */ void saveGlassInfo(List<GlassInfo> glassinfo); /** * @param flowCardId * @return 根据流程卡号查询玻璃信息 */ int getGlassInfoCountByFlowCardId(String flowCardId); /** * @return * 查询所有工程状态不为300不同流程卡号 */ List<Map<String, Object>> getFlowCardId(); } hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -1,20 +1,24 @@ package com.mes.glassinfo.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.toolkit.JoinWrappers; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.entity.OptimizeGlassinfo; import com.mes.glassinfo.mapper.GlassInfoMapper; import com.mes.glassinfo.service.GlassInfoService; import com.mes.pp.entity.OptimizeProject; import com.mes.pp.mapper.OptimizeProjectMapper; import com.mes.uppattenusage.entity.UpPattenUsage; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * <p> @@ -80,4 +84,37 @@ public void saveGlassInfo(List<GlassInfo> glassinfo) { this.saveBatch(glassinfo); } @Override public int getGlassInfoCountByFlowCardId(String flowCardId) { return baseMapper.selectCount(new QueryWrapper<GlassInfo>().lambda() .eq(GlassInfo::getFlowCardId, flowCardId)); } @Override public List<Map<String, Object>> getFlowCardId() { return baseMapper.selectJoinMaps(JoinWrappers.lambda(GlassInfo.class) .select(GlassInfo::getFlowCardId) .leftJoin(UpPattenUsage.class, on -> on .eq(OptimizeProject::getProjectNo, GlassInfo::getEngineerId) .ne(OptimizeProject::getState, 300) ) .groupBy(GlassInfo::getFlowCardId) ); } } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
@@ -50,6 +50,12 @@ */ List<Map<String, Object>> selectDownStorageCages(); /** * @return 查询缓存中最多的流程卡 */ List<DownStorageCageDetails> selectCacheMax(); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -6,6 +6,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; //import com.mes.device.PlcParameterObject; import com.google.common.base.Functions; import com.mes.downglassinfo.entity.DownGlassTask; import com.mes.downglassinfo.service.DownGlassTaskService; import com.mes.downstorage.entity.DownStorageCage; @@ -19,6 +20,7 @@ import com.mes.glassinfo.service.GlassInfoService; import com.mes.pp.entity.OptimizeDetail; import lombok.extern.slf4j.Slf4j; import net.sf.jsqlparser.statement.select.SelectItem; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -90,6 +92,26 @@ ); } @Override public List<DownStorageCageDetails> selectCacheMax() { return baseMapper.selectJoinList(DownStorageCageDetails.class, JoinWrappers.lambda(DownStorageCage.class) // 添加 DownStorageCage 的 enableState 为 1 的条件 .select(DownStorageCageDetails::getFlowCardId) .leftJoin(DownStorageCageDetails.class, on -> on .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId) .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)) .isNull(DownStorageCageDetails::getSlot) .eq(DownStorageCage::getEnableState, 1) .groupBy(DownStorageCageDetails::getFlowCardId) // 根据 flowCardId 分组 // 使用子查询和排序来获取相同 FlowCardId 中的最多记录 .having("count(*) = (select max(cnt) from (select count(*) as cnt from down_storage_cage_details group by flow_card_id) as temp)") ); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
@@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.List; @@ -44,13 +45,33 @@ DownGlassInfoService downGlassInfoService; @Autowired private DownWorkstationTaskService downWorkstationTaskService; // @Value("${mes.threshold}") private int threshold; @Scheduled(fixedDelay = 1000) public void autoBindRack() { log.info("根据缓存中已经进片的玻璃种数量最多的流程卡号自动绑定一个启用状态的空架子"); List<DownStorageCageDetails> Details = downStorageCageService.selectCacheMax(); if (Details.size() > 0) { DownStorageCageDetails downStorageCageDetails = Details.get(0); String flowCardId = downStorageCageDetails.getFlowCardId(); int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId); DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, null)); List<DownWorkstation> downWorkstations = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>() .eq(DownWorkstation::getEnableState, 1)); if (!downWorkstations.stream().anyMatch(workstation -> workstation.getFlowCardId().equals(flowCardId))) { downWorkstationService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, downWorkstation.getWorkstationId()); } } } // @Scheduled(fixedDelay = 1000) public void plcdownGlassTask() { @@ -115,13 +136,11 @@ //自动绑定架子,如果工位表没有绑定架子,默认将笼子中数量最多的流程卡号绑定机器手2的空架子 } /** * 进片任务 * * @param glassId * @param confirmationWrodAddress * @param @@ -152,7 +171,6 @@ DownStorageCageDetails item = list.get(0); log.info("5、查询卧式理片笼里面的空格:{}", list); log.info("6、将玻璃信息插入卧式理片笼,当前玻璃信息:{}", glassInfo); DownStorageCageDetails details = new DownStorageCageDetails(); @@ -171,7 +189,6 @@ } } log.info("9、发送确认字完成"); //S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 1); @@ -181,7 +198,6 @@ * 出片任务 * * @param confirmationWrodAddress * */ private Boolean outTo( String confirmationWrodAddress) { log.info("单片情况根据传入的料架号 查询符合按照版图id和片序出片,并且优先出满架的小片"); @@ -204,8 +220,7 @@ // S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2); return true; } else if (!list2.isEmpty() && !list3.isEmpty()) { } else if (!list2.isEmpty() && !list3.isEmpty()) { log.info("前后端都空闲 优先后端出片并且优先满架"); DownStorageCageDetails item4 = list2.get(0);