hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
@@ -12,7 +12,6 @@ import lombok.EqualsAndHashCode; import java.io.Serializable; import java.util.List; /** * <p> @@ -116,6 +115,12 @@ private Integer gap; /** * 工程号 */ @ApiModelProperty(value = "工程号") private String engineerId; /** * 进片任务 */ @ApiModelProperty(value = "进片任务", position = 16) hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java
New file @@ -0,0 +1,20 @@ package com.mes.bigstorage.entity.dto; import lombok.Data; /** * @Author : zhoush * @Date: 2024/6/13 15:51 * @Description: */ @Data public class TemperingLayoutDTO { /** * 钢化版图id */ private Integer temperingLayoutId; /** * 当前版图数量 */ private Integer count; } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
@@ -1,9 +1,10 @@ package com.mes.bigstorage.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.github.yulichang.base.MPJBaseMapper; import com.mes.bigstorage.entity.BigStorageCageDetails; import feign.Param; import com.mes.bigstorage.entity.dto.TemperingLayoutDTO; import java.util.List; /** @@ -16,4 +17,6 @@ */ public interface BigStorageCageDetailsMapper extends MPJBaseMapper<BigStorageCageDetails> { List<TemperingLayoutDTO> listAllTemperingCount(); } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.entity.BigStorageDTO; import com.mes.bigstorage.entity.dto.TemperingLayoutDTO; import com.mes.glassinfo.entity.GlassInfo; import java.util.List; @@ -39,4 +40,6 @@ * @param glassInfo */ BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo); List<TemperingLayoutDTO> listAllTemperingCount(); } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -7,6 +7,7 @@ import com.mes.bigstorage.entity.BigStorageCage; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.entity.BigStorageDTO; import com.mes.bigstorage.entity.dto.TemperingLayoutDTO; import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper; import com.mes.bigstorage.service.BigStorageCageDetailsService; import com.mes.bigstorage.service.BigStorageCageService; @@ -253,4 +254,9 @@ } @Override public List<TemperingLayoutDTO> listAllTemperingCount() { return baseMapper.listAllTemperingCount(); } } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
@@ -2,16 +2,16 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.io.Serializable; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; /** * <p> * * * </p> * * @author zhoush @@ -24,11 +24,23 @@ private static final long serialVersionUID = 1L; public BigStorageCageOutTask() { } public BigStorageCageOutTask(String glassId, Integer startSlot, Integer endSlot, Integer trainNumber, Integer serialNumber, Integer taskState) { this.glassId = glassId; this.startSlot = startSlot; this.endSlot = endSlot; this.trainNumber = trainNumber; this.serialNumber = serialNumber; this.taskState = taskState; } /** * 主键id */ @ApiModelProperty(value = "主键id", position = 2) @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "主键id", position = 2) @TableId(value = "id", type = IdType.AUTO) private Long id; /** @@ -66,6 +78,5 @@ */ @ApiModelProperty(value = "任务状态", position = 8) private Integer taskState; } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -3,11 +3,14 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.entity.BigStorageDTO; import com.mes.bigstorage.entity.dto.TemperingLayoutDTO; import com.mes.bigstorage.service.BigStorageCageDetailsService; import com.mes.bigstorage.service.BigStorageCageService; import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; import com.mes.bigstoragetask.entity.BigStorageCageOutTask; import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService; import com.mes.bigstoragetask.service.BigStorageCageOutTaskService; import com.mes.common.S7object; @@ -17,6 +20,7 @@ import com.mes.edgglasstask.service.EdgGlassTaskInfoService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.temperingglass.service.TemperingGlassInfoService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -24,7 +28,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.ArrayList; @@ -260,7 +263,36 @@ @Scheduled(fixedDelay = 5000) public void plcToHomeEdgOutTask() { //todo:是否有正在出片的钢化任务 List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>() .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW) .orderBy(Boolean.TRUE, sequenceOrder, TemperingGlassInfo::getTemperingFeedSequence)); //任务数据 获取车子存放玻璃最大数量 玻璃间隔 List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(temperingGlassInfoList)) { log.info("有正在出片的钢化任务"); //打车剩余尺寸 AtomicReference<Integer> remainWidth = new AtomicReference<>(Const.BIG_STORAGE_WIDTH); temperingGlassInfoList.stream().forEach(e -> { if (bigStorageCageOutTaskList.size() > 5 || e.getWidth() > remainWidth.get()) { return; } remainWidth.set(remainWidth.get() - e.getWidth().intValue() - Const.BIG_STORAGE_GAP); bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getState(), Const.A09_OUT_TARGET_POSITION, 0, 0, 1)); }); bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList); return; } //todo:获取状态字 钢化优先 or 人工下片优先 if (true) { //todo:钢化优先:获取理片笼 玻璃小片 破损表 数量 判断笼内版图是否到齐 //todo: 到齐,将玻璃小片数据存入钢化小片表,逻辑生成出片任务 结束 //todo: 未到齐 执行内部调度任务 结束 } //todo:笼内是否有人工下片玻璃 有直接出 无 结束 List<TemperingLayoutDTO> list = bigStorageCageDetailsService.listAllTemperingCount(); } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
New file @@ -0,0 +1,17 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.mes.bigstorage.mapper.BigStorageCageDetailsMapper"> <resultMap id="temperingLayoutDTO" type="com.mes.bigstorage.entity.dto.TemperingLayoutDTO"> <result column="tempering_layout_id" property="temperingLayoutId"/> <result column="count" property="count"/> </resultMap> <select id="listAllTemperingCount" resultMap="temperingLayoutDTO"> select tempering_layout_id, count(tempering_layout_id) as count from big_storage_cage_details where state = 100 group by tempering_layout_id </select> </mapper> hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -33,6 +33,11 @@ } @Test public void outGlass() { log.info("完整路径:{}", bigStorageCageService.outGlass()); } @Test public void computeTargetByLine() { // log.info("获取大理片笼信息:{}",bigStorageCageService.querybigStorageCageDetail()); plcStorageCageTask.computeTargetByLine(2001, "", "");