CacheGlassModule/effective-pom.xml
New file Diff too large CacheGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
@@ -16,7 +16,7 @@ public void run(ApplicationArguments args) throws Exception { // TODO Auto-generated method stub // System.out.println("启动完成"); System.out.println("启动完成1"); } CacheVerticalGlassModule/src/main/java/com/mes/MesApplication.java
@@ -21,4 +21,4 @@ throw new RuntimeException(e); } } } } CacheVerticalGlassModule/src/main/java/com/mes/common/PlcStorageCage.java
New file @@ -0,0 +1,50 @@ package com.mes.common; import com.mes.common.PlcTools.S7control; import com.mes.entity.BigStorageCage; import com.mes.entity.BigStorageCageDetails; import com.mes.service.BigStorageCageService; public class PlcStorageCage extends Thread { private BigStorageCageService bigStorageCageService; private S7control s7control; public void run() { try { Thread.sleep(1000); String glassid="11111"; String tempering_layout_id="123"; String tempering_feed_sequence="123"; //识别台 //获取识别台请求 //根据请求的玻璃id从消息空间站获取玻璃信息 //检测识别台是否有玻璃 //有:允许清洗机出片信号关闭 //无:允许清洗机出片信息开启 //获取进片请求 //有请求时 //获取请求的玻璃id //根据玻璃id获取玻璃信息判断是否与消息队列一致 //不一致:标记玻璃为破损 //一致: //获取笼内进片侧相同同钢化版图的玻璃片序+1等于当前玻璃id钢化片序的格子 //将消息队列的信息放入实例中 BigStorageCageDetails bigStorageCageDetails=new BigStorageCageDetails(); bigStorageCageDetails.setGlassId("1111"); bigStorageCageDetails.setTemperingLayoutId(123); bigStorageCageDetails.setTemperingFeedSequence(3); BigStorageCageDetails SlotInfo=bigStorageCageService.FeedGlass(bigStorageCageDetails); //发送给plc //出片请求 //获取当前 } catch (Exception e) { e.printStackTrace(); } } } CacheVerticalGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
@@ -16,7 +16,7 @@ public void run(ApplicationArguments args) throws Exception { // TODO Auto-generated method stub // System.out.println("启动完成"); System.out.println("启动完成2"); } CacheVerticalGlassModule/src/main/java/com/mes/entity/BigStorageCage.java
New file @@ -0,0 +1,45 @@ package com.mes.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; /** * big_storage_cage大理片笼表实体类 */ @Data //lombok 简写java代码 实体类的get与set @TableName("big_storage_cage") public class BigStorageCage { /** * 主键,自动递增 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 设备id */ private Integer deviceId; /** * 栅格号 */ private String slot; /** * 启用状态 */ private String enableState; /** * 剩余宽度 */ private Integer remainWidth; /** * 理片笼详情 */ private BigStorageCageDetails bigStorageCageDetail; } CacheVerticalGlassModule/src/main/java/com/mes/entity/BigStorageCageDetails.java
New file @@ -0,0 +1,87 @@ package com.mes.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; /** * big_storage_cage_details大理片笼详情表实体类 */ @Data //lombok 简写java代码 实体类的get与set @TableName("big_storage_cage_details") public class BigStorageCageDetails { /** * 表主键,自动递增 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 设备id */ private Integer deviceId; /** * 栅格号 */ private Integer slot; /** * 玻璃id */ private String glassId; /** * 小片在格内的顺序 */ private Integer sequence; /** * 流程卡号 */ private String flowCardId; /** * 玻璃类型 */ private Integer glassType; /** * 宽 */ private Double width; /** * 高 */ private Double height; /** * 厚度 */ private Double thickness; /** * 钢化版图id */ private Integer temperingLayoutId; /** * 钢化版图片序 */ private Integer temperingFeedSequence; /** * 状态 */ private Integer state; /** * 玻璃间隙 */ private Integer gap; } CacheVerticalGlassModule/src/main/java/com/mes/mapper/BigStorageCageMapper.java
New file @@ -0,0 +1,19 @@ package com.mes.mapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.data.repository.CrudRepository; import com.mes.entity.BigStorageCage; import com.mes.entity.BigStorageCageDetails; @Mapper public interface BigStorageCageMapper extends CrudRepository<BigStorageCage,Long>{ // public class BigStorageCageMapper { BigStorageCageDetails SelectTemperingFeedSlot(@Param("bigStorageCageDetails") BigStorageCageDetails bigStorageCageDetails); BigStorageCageDetails SelectEmptyFeedSlot(); } CacheVerticalGlassModule/src/main/java/com/mes/service/BigStorageCageService.java
New file @@ -0,0 +1,48 @@ package com.mes.service; import java.util.List; import org.springframework.stereotype.Service; import com.mes.entity.*; import com.mes.mapper.BigStorageCageMapper; @Service public class BigStorageCageService { // private BigStorageCageMapper bigStorageCageMapper; // // 获取玻璃存放格子 // public BigStorageCageDetails FeedGlass(BigStorageCageDetails bigStorageCageDetails) { // //获取同钢化版图id可进片的格子 // BigStorageCageDetails LayoutSlotInfo=bigStorageCageMapper.SelectTemperingFeedSlot(bigStorageCageDetails); // //有符合条件的格子时 // if (LayoutSlotInfo!=null) { // //将玻璃信息填入理片笼详情表 // bigStorageCageDetails.setSlot(LayoutSlotInfo.getSlot()); // }else{ // //获取不到时: // //获取可进片格子信息 // BigStorageCageDetails EmptySlotInfo=bigStorageCageMapper.SelectEmptyFeedSlot(); // bigStorageCageDetails.setSlot(EmptySlotInfo.getSlot()); // //获取其他笼格子 // //将玻璃信息放入该格子 // } // UpdateRemainWidth(bigStorageCageDetails.getSlot()); // return bigStorageCageDetails; // } // //修改格子剩余宽度 // private void UpdateRemainWidth(int Slot){ // //获取该格子内玻璃信息 // //修改格子剩余宽度 // BigStorageCageMapper.UpdateRemainWidth(Slot); // } } CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCage.xml
New file @@ -0,0 +1,65 @@ <?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.example.mess.mapper.BigStorageCageMapper"> <!-- <resultMap id="BigStorageCage" type="com.example.mes.entity.BigStorageCage" > <id column="id" property="id"/> <result column="device_id" property="deviceId"/> <result column="slot" property="slot"/> <result column="enable_state" property="enableState"/> <result column="remain_width" property="remainWidth"/> <result column="glass_id" property="bigStorageCageDetail.glassId"/> <result column="sequence" property="bigStorageCageDetail.sequence"/> <result column="flow_card_id" property="bigStorageCageDetail.flowCardId"/> <result column="glass_type" property="bigStorageCageDetail.glassType"/> <result column="width" property="bigStorageCageDetail.width"/> <result column="height" property="bigStorageCageDetail.height"/> <result column="thickness" property="bigStorageCageDetail.thickness"/> <result column="tempering_layout_id" property="bigStorageCageDetail.temperingLayoutId"/> <result column="tempering_feed_sequence" property="bigStorageCageDetail.temperingFeedSequence"/> <result column="state" property="bigStorageCageDetail.state"/> <result column="gap" property="bigStorageCageDetail.gap"/> </resultMap> <resultMap id="BigStorageCageDetails" type="com.example.mes.entity.BigStorageCageDetails" > <id column="id" property="id"/> <result column="device_id" property="deviceId"/> <result column="slot" property="slot"/> <result column="glass_id" property="glassId"/> <result column="sequence" property="sequence"/> <result column="flow_card_id" property="flowCardId"/> <result column="glass_type" property="glassType"/> <result column="width" property="width"/> <result column="height" property="height"/> <result column="thickness" property="thickness"/> <result column="tempering_layout_id" property="temperingLayoutId"/> <result column="tempering_feed_sequence" property="temperingFeedSequence"/> <result column="state" property="state"/> <result column="gap" property="gap"/> </resultMap> <select id="SelectTemperingFeedSlot" resultMap="BigStorageCageDetails"> select * from big_storage_cage bsc inner join big_storage_cage_details as bscd on bsc.slot=bscd.slot <where> and bscd.id=(select id from big_storage_cage_details where slot=bscd.slot and tempering_feed_sequence=#{bigStorageCageDetails.temperingFeedSequence}-1 and bsc.remain_width>#{bigStorageCageDetails.width} ORDER BY sequence desc LIMIT 1) </where> </select> <select id="SelectStorageCageSummary" resultMap="BigStorageCageDetails"> select min(case when bsc.remain_width=5000 then bsc.id else null end ) as id,bsc.device_id, min(case when bsc.remain_width=5000 then bsc.slot else null end ) as slot, count(distinct bscd.tempering_layout_id) as tempering_layout_ids from big_storage_cage bsc left join big_storage_cage_details bscd on bsc.slot=bscd.slot <where> and bsc.enable_state=0 </where> group by bsc.device_id order by tempering_layout_ids,bsc.device_id limit 1 </select> --> </mapper> CacheVerticalGlassModule/target/classes/mapper/BigStorageCage.xml
New file @@ -0,0 +1,65 @@ <?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.example.mess.mapper.BigStorageCageMapper"> <!-- <resultMap id="BigStorageCage" type="com.example.mes.entity.BigStorageCage" > <id column="id" property="id"/> <result column="device_id" property="deviceId"/> <result column="slot" property="slot"/> <result column="enable_state" property="enableState"/> <result column="remain_width" property="remainWidth"/> <result column="glass_id" property="bigStorageCageDetail.glassId"/> <result column="sequence" property="bigStorageCageDetail.sequence"/> <result column="flow_card_id" property="bigStorageCageDetail.flowCardId"/> <result column="glass_type" property="bigStorageCageDetail.glassType"/> <result column="width" property="bigStorageCageDetail.width"/> <result column="height" property="bigStorageCageDetail.height"/> <result column="thickness" property="bigStorageCageDetail.thickness"/> <result column="tempering_layout_id" property="bigStorageCageDetail.temperingLayoutId"/> <result column="tempering_feed_sequence" property="bigStorageCageDetail.temperingFeedSequence"/> <result column="state" property="bigStorageCageDetail.state"/> <result column="gap" property="bigStorageCageDetail.gap"/> </resultMap> <resultMap id="BigStorageCageDetails" type="com.example.mes.entity.BigStorageCageDetails" > <id column="id" property="id"/> <result column="device_id" property="deviceId"/> <result column="slot" property="slot"/> <result column="glass_id" property="glassId"/> <result column="sequence" property="sequence"/> <result column="flow_card_id" property="flowCardId"/> <result column="glass_type" property="glassType"/> <result column="width" property="width"/> <result column="height" property="height"/> <result column="thickness" property="thickness"/> <result column="tempering_layout_id" property="temperingLayoutId"/> <result column="tempering_feed_sequence" property="temperingFeedSequence"/> <result column="state" property="state"/> <result column="gap" property="gap"/> </resultMap> <select id="SelectTemperingFeedSlot" resultMap="BigStorageCageDetails"> select * from big_storage_cage bsc inner join big_storage_cage_details as bscd on bsc.slot=bscd.slot <where> and bscd.id=(select id from big_storage_cage_details where slot=bscd.slot and tempering_feed_sequence=#{bigStorageCageDetails.temperingFeedSequence}-1 and bsc.remain_width>#{bigStorageCageDetails.width} ORDER BY sequence desc LIMIT 1) </where> </select> <select id="SelectStorageCageSummary" resultMap="BigStorageCageDetails"> select min(case when bsc.remain_width=5000 then bsc.id else null end ) as id,bsc.device_id, min(case when bsc.remain_width=5000 then bsc.slot else null end ) as slot, count(distinct bscd.tempering_layout_id) as tempering_layout_ids from big_storage_cage bsc left join big_storage_cage_details bscd on bsc.slot=bscd.slot <where> and bsc.enable_state=0 </where> group by bsc.device_id order by tempering_layout_ids,bsc.device_id limit 1 </select> --> </mapper> UnLoadGlassModule/effective-pom.xml
New file Diff too large