zhoushihao
2024-06-14 3f94fedcc24f3dd289061e3d32959c5cab00f5ec
大理片笼出逻辑功能实现,已完成版图到齐逻辑
6个文件已修改
91 ■■■■ 已修改文件
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java
@@ -12,6 +12,11 @@
    /**
     * 钢化版图id
     */
    private String engineerId;
    /**
     * 钢化版图id
     */
    private Integer temperingLayoutId;
    /**
     * 当前版图数量
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
@@ -4,8 +4,6 @@
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
import java.util.List;
/**
 * <p>
@@ -17,6 +15,11 @@
 */
public interface BigStorageCageDetailsMapper extends MPJBaseMapper<BigStorageCageDetails> {
    List<TemperingLayoutDTO> listAllTemperingCount();
    /**
     * 获取钢化版图已经到齐的工程号及版图id
     *
     * @return
     */
    TemperingLayoutDTO temperingIsAll();
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -41,5 +41,5 @@
     */
    BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo);
    List<TemperingLayoutDTO> listAllTemperingCount();
    TemperingLayoutDTO temperingIsAll();
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -256,7 +256,7 @@
    }
    @Override
    public List<TemperingLayoutDTO> listAllTemperingCount() {
        return baseMapper.listAllTemperingCount();
    public TemperingLayoutDTO temperingIsAll() {
        return baseMapper.temperingIsAll();
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -288,11 +288,39 @@
        //todo:获取状态字  钢化优先 or 人工下片优先
        if (true) {
            //todo:钢化优先:获取理片笼  玻璃小片  破损表 数量   判断笼内版图是否到齐
            //todo: 到齐,将玻璃小片数据存入钢化小片表,逻辑生成出片任务  结束
            TemperingLayoutDTO temperingLayoutDTO = bigStorageCageDetailsService.temperingIsAll();
            if (null != temperingLayoutDTO) {
                //玻璃到齐
                //todo: 到齐,将玻璃小片数据存入钢化小片表,逻辑生成出片任务  结束
                List<BigStorageCageDetails> bigStorageCageDetails = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
                        .eq(BigStorageCageDetails::getTemperingLayoutId, temperingLayoutDTO.getTemperingLayoutId())
                        .eq(BigStorageCageDetails::getEngineerId, temperingLayoutDTO.getEngineerId()));
                List<TemperingGlassInfo> temperingGlassInfos = bigStorageCageDetails.stream().map(e -> {
                    TemperingGlassInfo info = new TemperingGlassInfo();
                    BeanUtils.copyProperties(e, info);
                    return info;
                }).collect(Collectors.toList());
                temperingGlassInfoService.saveBatch(temperingGlassInfos);
                //打车剩余尺寸
                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: 未到齐 执行内部调度任务 结束
        }
        //todo:笼内是否有人工下片玻璃 有直接出  无 结束
        List<TemperingLayoutDTO> list = bigStorageCageDetailsService.listAllTemperingCount();
    }
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -3,15 +3,42 @@
<mapper namespace="com.mes.bigstorage.mapper.BigStorageCageDetailsMapper">
    <resultMap id="temperingLayoutDTO" type="com.mes.bigstorage.entity.dto.TemperingLayoutDTO">
        <result column="engineer_id" property="engineerId"/>
        <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 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>-->
    <select id="temperingIsAll" resultMap="temperingLayoutDTO">
        SELECT T.ENGINEER_ID,
               T.TEMPERING_LAYOUT_ID,
               COUNT(T.TEMPERING_FEED_SEQUENCE) AS COUNT
        FROM
            GLASS_INFO T
            LEFT JOIN DAMAGE T1
        ON T.ENGINEER_ID = T1.ENGINEER_ID
            AND T.GLASS_ID = T1.GLASS_ID
            LEFT JOIN BIG_STORAGE_CAGE_DETAILS T2 ON T.ENGINEER_ID = T2.ENGINEER_ID
            AND T.GLASS_ID = T2.GLASS_ID
        WHERE
            T1.GLASS_ID IS NULL
          AND T2.GLASS_ID IS NULL
          AND ( T.ENGINEER_ID
            , T.TEMPERING_LAYOUT_ID ) IN ( SELECT DISTINCT ENGINEER_ID
            , TEMPERING_LAYOUT_ID FROM BIG_STORAGE_CAGE_DETAILS WHERE STATE = 100 )
        GROUP BY
            T.ENGINEER_ID,
            T.TEMPERING_LAYOUT_ID
        HAVING
            COUNT = 0
        ORDER BY
            T.TEMPERING_LAYOUT_ID
            LIMIT 1
    </select>
</mapper>