hangzhoumesParent.zipBinary files differ
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -34,7 +34,7 @@ public static final Integer GLASS_STATE_IN = 100; public static final Integer GLASS_STATE_OUT = 101; public static final Integer GLASS_STATE_TAKE = 200; public static final Integer A10_OUT_TARGET_DAMAGE = 201; public static final Integer GLASS_STATE_DAMAGE = 201; /** * 卧式理片笼详情表玻璃状态 @@ -56,4 +56,78 @@ public static final Integer EDG_GLASS_START = 1; public static final Integer EDG_GLASS_SUCCESS = 2; /** * 磨边任务玻璃状态 * 1单机自动状态 * 2联机自动状态 * 3手动状态 */ public static final Integer BIG_STORAGE_STAND_ALONE = 1; public static final Integer BIG_STORAGE_ONLINE = 2; public static final Integer BIG_STORAGE_MT = 3; /** * 大理片笼请求 * 0 大理片笼无请求 * 1 大理片笼进片请求 */ public static final Integer BIG_STORAGE_REQUEST = 0; public static final Integer BIG_STORAGE_REQUEST_IN = 1; /** * 卧转立进片请求 * 1 任务生成 * 2 卧转立进片完成 * 3 大车进片完成 * 4 大理片笼进片完成 */ public static final Integer BIG_STORAGE_IN_NEW = 1; public static final Integer BIG_STORAGE_IN_UP = 2; public static final Integer BIG_STORAGE_IN_CAR = 3; public static final Integer BIG_STORAGE_IN_SLOT = 4; /** * 卧转立出片请求 * 1 任务生成 * 2 玻璃进大车完成 * 3 大车出片完成 */ public static final Integer BIG_STORAGE_OUT_NEW = 1; public static final Integer BIG_STORAGE_OUT_CAR = 2; public static final Integer BIG_STORAGE_OUT_SUCCESS = 3; /** * 卧转立出片请求 * 1 上车等待 * 2 上车启动 */ public static final Integer BIG_STORAGE_IN_WAIT = 1; public static final Integer BIG_STORAGE_IN_RUN = 2; /** * 大理片笼宽度 及 玻璃间距 */ public static final Integer BIG_STORAGE_WIDTH = 5000; public static final Integer BIG_STORAGE_GAP = 20; /** * 钢化小片表 * -1 生成任务 * 0 出片完成 * 1 摆片完成 * 2 进炉完成 * 3 钢化完成 * 4 出片完成 * 5 破损 * 6 拿走 */ public static final Integer TEMPERING_NEW =-1; public static final Integer TEMPERING_OUT =0; public static final Integer TEMPERING_DROP =1; public static final Integer TEMPERING_START =2; public static final Integer TEMPERING_SUCCESS =3; public static final Integer TEMPERING_END =4; public static final Integer TEMPERING_DAMAGE =5; public static final Integer TEMPERING_TAKE =6; } hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
New file @@ -0,0 +1,21 @@ package com.mes.damage.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * 前端控制器 * </p> * * @author wu * @since 2024-06-13 */ @RestController @RequestMapping("/glassinfo/damage") public class DamageController { } hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java
New file @@ -0,0 +1,44 @@ package com.mes.damage.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * * </p> * * @author wu * @since 2024-06-13 */ @Data @EqualsAndHashCode(callSuper = false) public class Damage implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Long id; private String glassId; private Integer deviceId; private String engineerId; private Integer temperingLayoutId; private LocalDateTime damageTime; private String remark; private Integer type; private Integer status; } hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java
New file @@ -0,0 +1,16 @@ package com.mes.damage.mapper; import com.mes.damage.entity.Damage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> * Mapper 接口 * </p> * * @author wu * @since 2024-06-13 */ public interface DamageMapper extends BaseMapper<Damage> { } hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
New file @@ -0,0 +1,16 @@ package com.mes.damage.service; import com.mes.damage.entity.Damage; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * 服务类 * </p> * * @author wu * @since 2024-06-13 */ public interface DamageService extends IService<Damage> { } hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.mes.damage.service.impl; import com.mes.damage.entity.Damage; import com.mes.damage.mapper.DamageMapper; import com.mes.damage.service.DamageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author wu * @since 2024-06-13 */ @Service public class DamageServiceImpl extends ServiceImpl<DamageMapper, Damage> implements DamageService { } 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/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java @@ -91,6 +91,10 @@ * 状态 */ private Integer state; /** * 格子号 */ private Integer slot; } hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java @@ -1,7 +1,6 @@ package com.mes.temperingglass.mapper; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.github.yulichang.base.MPJBaseMapper; import com.mes.temperingglass.entity.TemperingGlassInfo; @@ -14,6 +13,6 @@ * @since 2024-04-07 */ @DS("salve_hangzhoumes") public interface TemperingGlassInfoMapper extends BaseMapper<TemperingGlassInfo>, MPJBaseMapper<TemperingGlassInfo> { public interface TemperingGlassInfoMapper extends MPJBaseMapper<TemperingGlassInfo> { } hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingAgoService.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/service/TemperingAgoService.java @@ -15,9 +15,11 @@ List<TemperingGlassInfo> selectWaitingGlass(); List<TemperingGlassInfo> selectIntoGlass(); List<TemperingGlassInfo> selectIntoGlass(int layoutId); List<TemperingGlassInfo> selectOutGlass(); TemperingGlassInfo selectOverGlass(); List<TemperingGlassInfo> selectOverGlass(); List<TemperingGlassInfo> selectLayoutId(); } hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingAgoServiceImpl.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingAgoServiceImpl.java @@ -4,11 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.temperingglass.mapper.TemperingGlassInfoMapper; import com.mes.temperingglass.mapper.TemperingMapper; import com.mes.temperingglass.service.TemperingAgoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.github.yulichang.base.MPJBaseServiceImpl; import java.util.List; /** @@ -23,7 +23,7 @@ @DS("salve_hangzhoumes") public class TemperingAgoServiceImpl extends MPJBaseServiceImpl<TemperingGlassInfoMapper, TemperingGlassInfo> implements TemperingAgoService { @Autowired TemperingMapper temperingMapper; TemperingGlassInfoMapper temperingMapper; @Override public List<TemperingGlassInfo> selectWaitingGlass() { @@ -35,10 +35,11 @@ } @Override public List<TemperingGlassInfo> selectIntoGlass() { public List<TemperingGlassInfo> selectIntoGlass(int layoutId) { //获取进炉中的玻璃信息 QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); wrapper.eq("state",2) .eq("tempering_layout_id", layoutId) .orderByAsc("tempering_layout_id","tempering_feed_sequence"); return temperingMapper.selectList(wrapper); } @@ -53,12 +54,24 @@ } @Override public TemperingGlassInfo selectOverGlass() { //获取过旋转台的玻璃 public List<TemperingGlassInfo> selectOverGlass() { //获取过旋转台最大的钢化版图id QueryWrapper<TemperingGlassInfo> wapper = new QueryWrapper<>(); wapper.select("top 1 *").eq("state", 4) .orderByAsc("tempering_layout_id") .orderByDesc("tempering_feed_sequence"); return temperingMapper.selectOne(wapper); .orderByDesc("tempering_layout_id"); //根据最大的版图id显示钢化后的版图信息 TemperingGlassInfo glassinfo= temperingMapper.selectOne(wapper); QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); wrapper.eq("tempering_layout_id",glassinfo.getTemperingLayoutId()); return temperingMapper.selectList(wrapper); } @Override public List<TemperingGlassInfo> selectLayoutId() { QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>(); wrapper.select("distinct tempering_layout_id") .eq("state",2) .orderByAsc("tempering_layout_id"); return temperingMapper.selectList(wrapper); } } hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
File was deleted hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java
File was deleted hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
File was deleted hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
File was deleted hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -490,7 +490,7 @@ public EdgStorageCageDetails queryChangeGlassInfo(int endcell, String glassId) { //获取笼子内数量前二的玻璃数量 MPJQueryWrapper<EdgStorageCageDetails> wrapper = new MPJQueryWrapper<>(); wrapper.select("count(t.glass_id), t.width, t.height") wrapper.select("count(t.glass_id) as count, t.width, t.height") .eq("t.state", Const.GLASS_STATE_IN) .groupBy("t.width, t.height"); if (endcell == Const.A09_OUT_TARGET_POSITION) { hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-cz.ymlcopy from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml copy to hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-cz.yml
File was copied from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml @@ -5,12 +5,17 @@ strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. datasource: hangzhoumes: url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8 url: jdbc:mysql://192.168.1.199:3306/hangzhoumes?serverTimezone=GMT%2b8 username: root password: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver pp: url: jdbc:mysql://192.168.1.199:3306/pp?serverTimezone=GMT%2b8 username: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver salve_hangzhoumes: url: jdbc:sqlserver://192.168.56.10:1433;databasename=hangzhoumes url: jdbc:sqlserver://192.168.10.2:1433;databasename=hangzhoumes username: sa password: beibo.123/ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver @@ -18,6 +23,8 @@ nacos: discovery: server-addr: 127.0.0.1:8848 application: name: cacheGlass redis: database: 0 host: 127.0.0.1 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-dev.yml
@@ -4,33 +4,18 @@ primary: hangzhoumes #设置默认的数据源或者数据源组,默认值即为master strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. datasource: # hangzhoumes: # url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8 # username: root # password: beibo.123/ # driver-class-name: com.mysql.cj.jdbc.Driver # pp: # url: jdbc:mysql://127.0.0.1:3306/pp?serverTimezone=GMT%2b8 # username: root # password: beibo.123/ # driver-class-name: com.mysql.cj.jdbc.Driver # salve_hangzhoumes: # url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes # username: sa # password: beibo.123/ # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver hangzhoumes: url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8 url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8 username: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver pp: url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8 url: jdbc:mysql://127.0.0.1:3306/pp?serverTimezone=GMT%2b8 username: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver salve_hangzhoumes: url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes username: sa password: beibo.123/ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-loc.yml
File was deleted hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@ spring: profiles: active: dev active: cz application: name: cacheGlass mybatis-plus: @@ -17,3 +17,4 @@ secondLength: 2500 sequence: order: false hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -1,16 +1,15 @@ package com.mes; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.yulichang.query.MPJLambdaQueryWrapper; import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.toolkit.JoinWrappers; import com.mes.common.config.Const; import com.mes.edgstoragecage.entity.EdgStorageCage; import com.mes.edgstoragecage.entity.EdgStorageCageDetails; import com.mes.edgstoragecage.service.EdgStorageCageDetailsService; import com.mes.edgstoragecage.service.EdgStorageCageService; import com.mes.edgstoragecage.service.impl.EdgStorageCageServiceImpl; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.job.CacheGlassTask; import com.mes.pp.entity.OptimizeDetail; import com.mes.pp.entity.OptimizeLayout; import com.mes.pp.mapper.OptimizeDetailMapper; @@ -24,6 +23,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -35,15 +35,14 @@ */ @Slf4j @RunWith(SpringRunner.class) @SpringBootTest(classes = CacheGlassModuleApplication.class) @SpringBootTest(classes = CacheGlassModuleApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class CacheGlassModuleApplicationTest { @Autowired EdgStorageCageService edgStorageCageService; @Autowired EdgStorageCageDetailsService edgStorageCageDetailsService; @Autowired @Resource TaskCacheMapper taskCacheMapper; @Autowired @@ -52,11 +51,51 @@ OptimizeDetailMapper optimizeDetailMapper; @Autowired GlassInfoService glassInfoService; @Autowired CacheGlassTask cacheGlassTask; @Test public void testFindPath() { String url=getClass().getResource("").getPath(); log.info("完整路径:{}", Arrays.asList(url)); } @Test public void queryChangeGlassInfo() { cacheGlassTask.queryChangeGlassInfo(Const.A10_OUT_TARGET_POSITION, ""); } @Test public void testChangeCellSize() { // String url=getClass().getResource("").getPath(); // log.info("完整路径:{}", Arrays.asList(url)); cacheGlassTask.queryChangeGlassInfo(Const.A09_OUT_TARGET_POSITION, ""); } @Test public void testCellSize() { // String url=getClass().getResource("").getPath(); // log.info("完整路径:{}", Arrays.asList(url)); cacheGlassTask.outTo(0, 0, "", "NG24051802A001|1|1|1|1", 0); } @Test public void testinTo() { // String url=getClass().getResource("").getPath(); // log.info("完整路径:{}", Arrays.asList(url)); // NG24051802A001|1|4|1|4 // cacheGlassTask.inTo("NG24051802A001|1|1|1|1", "1", "1"); // cacheGlassTask.inTo("NG24051802A001|1|4|1|4", "1", "1"); cacheGlassTask.inTo("NG24051802A001|1|1|2|1", "1", "1"); } @Test public void testChangeGlassInfo() { // String url=getClass().getResource("").getPath(); // log.info("完整路径:{}", Arrays.asList(url)); // NG24051802A001|1|4|1|4 cacheGlassTask.queryAndChangeGlass("NG24051802A001|1|1|1|1"); // cacheGlassTask.queryAndChangeGlass("NG24051802A001|1|4|1|4"); } @Test @@ -73,22 +112,19 @@ log.info("Sql数据:{}", Arrays.asList(list)); } @Test public void testglassinfo() { List<GlassInfo> glassInfos=glassInfoService.selectId("7"); log.info("玻璃数据数据:{}", Arrays.asList(glassInfos)); } @Test public void testCacheGlass() { List<Map<String, Object>> map= edgStorageCageService.selectEdgStorageCages(); log.info("笼内信息:{}", Arrays.asList(map)); } @Test public void testSelectCacheEmpty() { List<EdgStorageCage> map= edgStorageCageService.selectCacheEmpty(); log.info("笼内空格:{}", Arrays.asList(map)); } @Test public void testScan() { List<Map<String, Object>> map= edgStorageCageDetailsService.selectCutTerritory(); @@ -104,6 +140,7 @@ log.info("切割当前版图信息:{}", Arrays.asList(optimizeDetail)); } @Test public void testOptimizeDetail() { List<Map<String, Object>> map2=optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class) hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java
New file @@ -0,0 +1,14 @@ package com.mes.bigstorage.entity; import lombok.Data; /** * @Author : zhoush * @Date: 2024/6/11 16:45 * @Description: */ @Data public class BigStorageDTO { private Integer slot; private Integer width; } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.entity.BigStorageDTO; import com.mes.glassinfo.entity.GlassInfo; import java.util.List; @@ -30,4 +32,11 @@ void finishBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails); void outBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails); /** * 按照版图信息获取进片笼子信息 * * @param glassInfo */ BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo); } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
@@ -1,9 +1,8 @@ package com.mes.bigstorage.service; import com.baomidou.mybatisplus.extension.service.IService; import com.github.yulichang.base.MPJBaseService; import com.mes.bigstorage.entity.BigStorageCage; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.entity.GlassInfo; import java.util.List; @@ -17,7 +16,7 @@ * @author zhoush * @since 2024-03-27 */ public interface BigStorageCageService extends IService<BigStorageCage> { public interface BigStorageCageService extends MPJBaseService<BigStorageCage> { void updateRemainWidth(int slot); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -1,8 +1,12 @@ package com.mes.bigstorage.service.impl; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.mes.bigstorage.entity.BigStorageCage; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.entity.BigStorageDTO; import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper; import com.mes.bigstorage.service.BigStorageCageDetailsService; import com.mes.bigstorage.service.BigStorageCageService; @@ -10,6 +14,7 @@ import com.mes.bigstoragetask.entity.BigStorageCageOutTask; import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper; import com.mes.bigstoragetask.mapper.BigStorageCageOutTaskMapper; import com.mes.common.config.Const; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.mapper.GlassInfoMapper; import com.mes.temperingglass.entity.TemperingGlassInfo; @@ -206,4 +211,46 @@ temperingGlassInfoMapper.insert(temperingGlassInfo1); } } @Override public BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo) { // MPJLambdaWrapper<BigStorageDTO> wrapper = new MPJLambdaWrapper<>(BigStorageCage.class) // .selectAll(BigStorageDTO.class) // .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot) // .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId()) // .eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1) // .last("limit 1"); BigStorageDTO bigStorageDTO = null; MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>(BigStorageCage.class) .selectAsClass(BigStorageCage.class, BigStorageDTO.class) .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot) .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId()) .eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1) .last("limit 1"); bigStorageDTO = bigStorageCageService.selectJoinOne(BigStorageDTO.class, wrapper); if (null != bigStorageDTO) { return bigStorageDTO; } BigStorageCage bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() .eq(BigStorageCage::getRemainWidth, Const.BIG_STORAGE_WIDTH) .inSql(BigStorageCage::getDeviceId, "select distinct device_id from big_storage_cage_details where tempering_layout_id = " + glassInfo.getTemperingLayoutId()) .last("limit 1")); if (null != bigStorageCage) { bigStorageDTO = new BigStorageDTO(); bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); bigStorageDTO.setSlot(bigStorageCage.getSlot()); return bigStorageDTO; } bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() .eq(BigStorageCage::getRemainWidth, Const.BIG_STORAGE_WIDTH) .last("limit 1")); Assert.isTrue(null != bigStorageCage, "没有空余的笼子存放玻璃"); bigStorageDTO = new BigStorageDTO(); bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); bigStorageDTO.setSlot(bigStorageCage.getSlot()); return bigStorageDTO; } } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageFeedTask.java
@@ -2,12 +2,13 @@ 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; import java.util.Date; /** * <p> @@ -41,7 +42,7 @@ * 目标位置 */ @ApiModelProperty(value = "目标位置", position = 4) private Integer tragetSlot; private Integer targetSlot; /** * 玻璃类型 @@ -60,6 +61,21 @@ */ @ApiModelProperty(value = "线路", position = 7) private Integer line; /** * 宽度 */ @ApiModelProperty(value = "宽度", position = 8) private Integer width; /** * 高度 */ @ApiModelProperty(value = "高度", position = 8) private Integer height; /** * 创建时间 */ @ApiModelProperty(value = "创建时间", position = 8) private Date createTime; } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java
@@ -1,8 +1,10 @@ package com.mes.bigstoragetask.mapper; import com.baomidou.dynamic.datasource.annotation.DS; import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; import java.util.List; /** * <p> @@ -15,4 +17,5 @@ @DS("salve_hangzhoumes") public interface BigStorageCageFeedTaskMapper extends BaseMapper<BigStorageCageFeedTask> { List<String> querySitToUpGlass(); } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java
@@ -1,9 +1,8 @@ package com.mes.bigstoragetask.service; import com.baomidou.mybatisplus.extension.service.IService; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; import com.baomidou.mybatisplus.extension.service.IService; import com.mes.bigstoragetask.entity.BigStorageCageOutTask; import java.util.List; @@ -20,4 +19,9 @@ void addFeedTask(BigStorageCageDetails slotInfo, Integer plcFeedReqLine, int taskType); List<BigStorageCageFeedTask> querybigStorageCageFeedTask(int taskState); /** * 查询卧转立玻璃是否进片完成 */ List<String> querySitToUpGlass(); } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java
@@ -1,16 +1,13 @@ package com.mes.bigstoragetask.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; import com.mes.bigstoragetask.entity.BigStorageCageOutTask; import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper; import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import net.bytebuddy.matcher.FilterableList; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** @@ -30,7 +27,6 @@ bigStorageCageFeedTask.setId(slotInfo.getId()); bigStorageCageFeedTask.setTaskState(0); bigStorageCageFeedTask.setLine(plcFeedReqLine); bigStorageCageFeedTask.setTragetSlot(slotInfo.getSlot()); bigStorageCageFeedTask.setTaskType(taskType); baseMapper.insert(bigStorageCageFeedTask); } @@ -41,4 +37,9 @@ getFeedTaskWrapper.eq(BigStorageCageFeedTask::getTaskState,taskState); return baseMapper.selectList(getFeedTaskWrapper); } @Override public List<String> querySitToUpGlass() { return baseMapper.querySitToUpGlass(); } } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java
@@ -1,13 +1,12 @@ package com.mes.edgglasstask.entity; import cn.hutool.core.date.DateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import net.sf.jsqlparser.expression.DateTimeLiteralExpression; import java.io.Serializable; import java.util.Date; /** * <p> @@ -73,6 +72,6 @@ * 线路 */ @ApiModelProperty(value = "时间", position = 9) private DateTime time; private Date time; } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -1,24 +1,39 @@ package com.mes.job; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.entity.BigStorageDTO; 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; import com.mes.common.config.Const; import com.mes.device.PlcParameterObject; import com.mes.edgglasstask.entity.EdgGlassTaskInfo; import com.mes.edgglasstask.service.EdgGlassTaskInfoService; import com.mes.edgstoragetask.service.TaskCacheService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.temperingglass.service.TemperingGlassInfoService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; 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; import java.util.Date; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** * @author SNG-015 @@ -42,7 +57,8 @@ @Resource private TemperingGlassInfoService temperingGlassInfoService; PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; @Value("${mes.sequence.order}") private boolean sequenceOrder; public static boolean bigStorageCageFullAlarm = false; @@ -53,98 +69,323 @@ * fixedRate : 上一个调用开始后再次调用的延时(不用等待上一次调用完成) * fixedDelay : 上一个调用结束后再次调用的延时 */ // @Scheduled(fixedDelay = 5000) // public void plcStorageCageTask() throws InterruptedException { // // PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; // try { // // String plcFeedGlassid = ""; // String plcFeedReqLine = "0"; // if ("1".equals(plcParameterObject.getPlcParameter("D01Request").getValue())) { // plcFeedReqLine = "1"; // plcFeedGlassid = plcParameterObject.getPlcParameter("D01ID1").getValue(); // } // if ("1".equals(plcParameterObject.getPlcParameter("D04Request").getValue())) { // plcFeedReqLine = "2"; // plcFeedGlassid = plcParameterObject.getPlcParameter("D04ID1").getValue(); // } // line1Time += 1; // line2Time += 1; // // if (!("0".equals(plcFeedReqLine))) { // log.info("1、Plc进片请求时"); // BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); // GlassInfo glassInfo = glassInfoService.getById(plcFeedGlassid); // log.info("2、根据玻璃id获取玻璃信息" + glassInfo); // if (bigStorageCageDetailsService.selectGetBoard(plcFeedReqLine) >= 0) { // BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails); // if (slotInfo != null) { // int taskType = edgGlassTaskInfoService.judgeTasktype(plcFeedReqLine); // log.info("3、查询任务表判断当前任务类型为上车等到还是上车启动" + taskType); // bigStorageCageFeedTaskService.addFeedTask(slotInfo, Integer.parseInt(plcFeedReqLine), taskType); // log.info("4、添加任务到任务表"); // bigStorageCageFullAlarm = false; // } else { // bigStorageCageFullAlarm = true; // } // } else { // log.info("当前玻璃宽度不够上车" + glassInfo); // if (!("1".equals(plcFeedReqLine))) { // S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); // } else { // S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); // } // } // } else { // List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.querybigStorageCageFeedTask(1); // log.info("5、查询任务表是否有已经完成的进片任务" + bigStorageCageFeedTaskList.size()); // for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskList // ) { // BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); // bigStorageCageDetails.setId(bigStorageCageFeedTask.getId()); // bigStorageCageDetails.setState(1); // bigStorageCageDetailsService.updateById(bigStorageCageDetails); // log.info("6、修改理片笼详情玻璃状态"); // bigStorageCageFeedTaskService.removeById(bigStorageCageFeedTask); // log.info("7、删除已经完成的进片任务"); // } // //启动阈值 // if (line1Time >= 300) { // if ("0".equals(plcParameterObject.getPlcParameter("D05Go").getValue())) { // S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); // } // } // if (line2Time >= 300) { // if ("0".equals(plcParameterObject.getPlcParameter("D02Go").getValue())) { // S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); // } // } // } // // //查询出片表是否有任务未完成的任务 // List<BigStorageCageOutTask> bigStorageCageOutTask = bigStorageCageOutTaskService.querybigStorageCageOutTask(0); // if (bigStorageCageOutTask.size() == 0) { // boolean result = bigStorageCageService.outGlass(); // log.info("8、没有未完成任务时调用出片接口"); // if (result == false) { // temperingGlassInfoService.schedulingTask(); // } // } // bigStorageCageOutTaskService.updateOutTask(); // log.info("9、根据任务表状态修改钢化小片表任务状态"); // // //来不及送时直接走 // String line = Integer.toString(edgGlassTaskInfoService.startTask()); // // if (!(line.equals(plcFeedReqLine))) { // S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); // } else { // S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); // } // // // } catch (Exception e) { // e.printStackTrace(); // } // } @Scheduled(fixedDelay = 5000) public void plcStorageCageTask() throws InterruptedException { try { String plcFeedGlassid = ""; String plcFeedReqLine = "0"; if ("1".equals(plcParameterObject.getPlcParameter("D01Request").getValue())) { plcFeedReqLine = "1"; plcFeedGlassid=plcParameterObject.getPlcParameter("D01ID1").getValue(); public void plcToHomeEdgScan() { PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue(); String d01ID1 = plcParameterObject.getPlcParameter("D01ID1").getValue(); String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue(); String d04ID1 = plcParameterObject.getPlcParameter("D04ID1").getValue(); log.info("1、获取到的请求字d01为:{},获取到的扫描ID为:{};获取到的请求字d04为:{},获取到的扫描ID为:{};", d01Request, d01ID1, d04Request, d04ID1); if (!"1".equals(d01Request) && !"1".equals(d04Request)) { log.info("两条线未收到进片任务,结束本次扫描进卧转立任务"); return; } if ("1".equals(plcParameterObject.getPlcParameter("D04Request").getValue())) { plcFeedReqLine = "2"; plcFeedGlassid=plcParameterObject.getPlcParameter("D04ID1").getValue(); // 0:不干预 ; 1:条件满足情况下立即发车 String d02GoAdress = plcParameterObject.getPlcParameter("D02Go").getAddress(); // 0:不干预 ; 1:条件满足情况下立即发车 String d05GoAdress = plcParameterObject.getPlcParameter("D05Go").getAddress(); Boolean flag01 = Boolean.FALSE; Boolean flag04 = Boolean.FALSE; //按照线路及玻璃id获取相邻两块玻璃 卧转立上的玻璃 if ("1".equals(d01Request)) { flag01 = judgeGlassTypeStatus(d01ID1, Const.A09_OUT_TARGET_POSITION); } line1Time+=1; line2Time+=1; if (!("0".equals(plcFeedReqLine))) { log.info("1、Plc进片请求时"); BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); GlassInfo glassInfo = glassInfoService.getById(plcFeedGlassid); log.info("2、根据玻璃id获取玻璃信息" + glassInfo); if(bigStorageCageDetailsService.selectGetBoard(plcFeedReqLine)>=0){ BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails); if (slotInfo != null) { int taskType = edgGlassTaskInfoService.judgeTasktype(plcFeedReqLine); log.info("3、查询任务表判断当前任务类型为上车等到还是上车启动" + taskType); bigStorageCageFeedTaskService.addFeedTask(slotInfo, Integer.parseInt(plcFeedReqLine), taskType); log.info("4、添加任务到任务表"); bigStorageCageFullAlarm = false; if ("1".equals(d04Request)) { flag04 = judgeGlassTypeStatus(d04ID1, Const.A10_OUT_TARGET_POSITION); } if (flag01 && flag04) { //比较最早一片任务的版图id及版序 求出卧转立的线路 Integer startLine = getStartLine(); //计算目标格子,发送启动任务 computeTargetByLine(startLine, d02GoAdress, d05GoAdress); } else if (flag01 || flag04) { Integer startLine = flag01.equals(Boolean.TRUE) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION; //计算目标格子,发送启动任务 computeTargetByLine(startLine, d02GoAdress, d05GoAdress); } else { bigStorageCageFullAlarm = true; log.info("两条线未收到进片任务,结束本次扫描进卧转立任务"); } } @Scheduled(fixedDelay = 5000) public void plcToHomeEdgFreeCarTask() { PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; String freeCar = plcParameterObject.getPlcParameter("freeCar").getValue(); if ("1".equals(freeCar)) { log.info("大车非空闲"); return; } String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue(); String d01ID1 = plcParameterObject.getPlcParameter("D01ID1").getValue(); String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue(); String d04ID1 = plcParameterObject.getPlcParameter("D04ID1").getValue(); log.info("1、获取到的请求字d01为:{},获取到的扫描ID为:{};获取到的请求字d04为:{},获取到的扫描ID为:{};", d01Request, d01ID1, d04Request, d04ID1); //两条线都有进卧转立任务,直接结束 if (Const.BIG_STORAGE_REQUEST_IN.equals(d01Request) && Const.BIG_STORAGE_REQUEST_IN.equals(d04Request) && StringUtils.isNotBlank(d01ID1) && StringUtils.isNotBlank(d04ID1)) { log.info("两条线都存在进片任务,结束任务"); return; } //获取两条线卧转立是否有玻璃,且任务状态都为2 List<String> lineList = bigStorageCageFeedTaskService.querySitToUpGlass(); if (CollectionUtils.isEmpty(lineList)) { log.info("两条线卧转立为空或者有进片任务未完成,结束任务"); return; } // 0:不干预 ; 1:条件满足情况下立即发车 String d02GoAdress = plcParameterObject.getPlcParameter("D02Go").getAddress(); // 0:不干预 ; 1:条件满足情况下立即发车 String d05GoAdress = plcParameterObject.getPlcParameter("D05Go").getAddress(); String line1 = lineList.get(0); String flagLine = line1.equals(Const.A09_OUT_TARGET_POSITION) ? d01ID1 : d04ID1; if (lineList.size() == 1) { //发送 if (StringUtils.isNotBlank(flagLine)) { return; } //计算任务表进片格子 发送进片任务 computeTargetByLine(Integer.parseInt(flagLine), d02GoAdress, d05GoAdress); } if (StringUtils.isBlank(d01ID1) && StringUtils.isBlank(d04ID1)) { //比较最早一片任务的版图id及版序 求出卧转立的线路 Integer line = getStartLine(); //计算任务表进片格子 发送进片任务 computeTargetByLine(line, d02GoAdress, d05GoAdress); return; } int outLine = StringUtils.isBlank(d01ID1) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION; //计算任务表进片格子 发送进片任务 computeTargetByLine(outLine, d02GoAdress, d05GoAdress); } @Scheduled(fixedDelay = 5000) public void plcToHomeEdgOutTask() { } /** * 按照玻璃id判断玻璃状态及卧转立是否可直接启动 */ public Boolean judgeGlassTypeStatus(String glassId, Integer line) { //1、获取任务表中相邻玻璃 List<EdgGlassTaskInfo> edgGlassTaskInfoList = edgGlassTaskInfoService.list(new LambdaQueryWrapper<EdgGlassTaskInfo>() .eq(EdgGlassTaskInfo::getLine, line) .apply("time >= (select time from edg_glass_task_info where glass_id = '" + glassId + "')") .orderByAsc(EdgGlassTaskInfo::getTime)); Assert.isFalse(CollectionUtils.isEmpty(edgGlassTaskInfoList), "识别玻璃信息未出现在尺寸表中,获取相邻两块玻璃失败"); //2、获取卧转立剩余宽度 Map<String, Object> map = bigStorageCageFeedTaskService.getMap(new QueryWrapper<BigStorageCageFeedTask>() .select("cast(5000 - sum(width + 20) as INT)as remainWidth") .eq("line", line).eq("task_state", Const.BIG_STORAGE_IN_UP)); Integer remainWidth = null == map ? 5000 : Integer.parseInt(map.get("remainWidth") + ""); //2、获取卧转立 Integer widthFirst = edgGlassTaskInfoList.get(0).getWidth(); if (edgGlassTaskInfoList.size() == 1) { if (remainWidth >= widthFirst) { addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst); return Boolean.FALSE; }else{ log.info("当前玻璃宽度不够上车" + glassInfo); if(!("1".equals(plcFeedReqLine))){ S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); //记录无法放下玻璃,后续判断启动 return Boolean.TRUE; } } Integer widthSecond = edgGlassTaskInfoList.get(1).getWidth(); if (remainWidth >= widthFirst) { if (remainWidth - widthFirst - Const.BIG_STORAGE_GAP >= widthSecond) { addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthSecond); }else{ S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthSecond); } } return Boolean.FALSE; } else { List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.querybigStorageCageFeedTask(1); log.info("5、查询任务表是否有已经完成的进片任务" + bigStorageCageFeedTaskList.size()); for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskList ) { BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); bigStorageCageDetails.setId(bigStorageCageFeedTask.getId()); bigStorageCageDetails.setState(1); bigStorageCageDetailsService.updateById(bigStorageCageDetails); log.info("6、修改理片笼详情玻璃状态"); bigStorageCageFeedTaskService.removeById(bigStorageCageFeedTask); log.info("7、删除已经完成的进片任务"); } //启动阈值 if(line1Time>=300){ if("0".equals(plcParameterObject.getPlcParameter("D05Go").getValue())){ S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); } } if(line2Time>=300){ if("0".equals(plcParameterObject.getPlcParameter("D02Go").getValue())){ S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); } return Boolean.TRUE; } } //查询出片表是否有任务未完成的任务 List<BigStorageCageOutTask> bigStorageCageOutTask=bigStorageCageOutTaskService.querybigStorageCageOutTask(0); if(bigStorageCageOutTask.size()==0){ boolean result=bigStorageCageService.outGlass(); log.info("8、没有未完成任务时调用出片接口"); if (result==false){ temperingGlassInfoService.schedulingTask(); /** * 添加任务信息 */ private Boolean addFeedTask(String glassId, Integer line, Integer taskType, Integer width) { BigStorageCageFeedTask bigStorageCageFeedTask = new BigStorageCageFeedTask(); bigStorageCageFeedTask.setGlassId(glassId); bigStorageCageFeedTask.setTaskState(Const.BIG_STORAGE_REQUEST_IN); bigStorageCageFeedTask.setLine(line); bigStorageCageFeedTask.setTaskType(taskType); bigStorageCageFeedTask.setWidth(width); bigStorageCageFeedTask.setCreateTime(new Date()); return bigStorageCageFeedTaskService.save(bigStorageCageFeedTask); } /** * 获取需要启动的线路:两条线都可启动 获取第一片玻璃版图id最小 版序最大的线路 * * @return */ public Integer getStartLine() { List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() .inSql(BigStorageCageFeedTask::getId, "select min(id) from big_storage_cage_feed_task where task_state = 2 group by line")); Assert.isFalse(CollectionUtils.isEmpty(taskList), "卧转立两条线都没有玻璃进片任务"); Map<String, Integer> taskMap = taskList.stream().collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, BigStorageCageFeedTask::getLine)); GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() .in(GlassInfo::getGlassId, taskMap.keySet()) .orderByAsc(GlassInfo::getTemperingLayoutId) .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence) .last("limit 1")); return taskMap.get(glassInfo.getGlassId()); } bigStorageCageOutTaskService.updateOutTask(); log.info("9、根据任务表状态修改钢化小片表任务状态"); //来不及送时直接走 String line=Integer.toString(edgGlassTaskInfoService.startTask()); if(!(line.equals(plcFeedReqLine))){ S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); /** * 计算任务表进片线路的目标格子,并启动任务 */ public boolean computeTargetByLine(Integer line, String d02GoAdress, String d05GoAdress) { //1、获取任务表中的所有玻璃(指定线路且已经进卧转立完成) List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() .eq(BigStorageCageFeedTask::getLine, line) .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) .orderByAsc(BigStorageCageFeedTask::getId)); //2、去笼子内查找是否可以继续存放的笼子 List<String> glassIds = taskList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()); List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIds)); AtomicReference<Integer> temperingLayoutIdTemp = new AtomicReference<>(0); AtomicReference<Integer> temperingFeedSequenceTemp = new AtomicReference<>(0); AtomicReference<BigStorageDTO> bigStorageDTO = new AtomicReference<>(new BigStorageDTO()); Map<String, GlassInfo> glassInfoMap = glassInfos.stream().collect(Collectors.toMap(GlassInfo::getGlassId, p -> p)); List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>(); AtomicBoolean taskFlag = new AtomicBoolean(Boolean.TRUE); taskList.stream().forEach(e -> { BigStorageCageDetails cageDetails = new BigStorageCageDetails(); //按照版图信息获取进片笼子格子号 GlassInfo info = glassInfoMap.get(e.getGlassId()); BeanUtils.copyProperties(info, cageDetails); if (temperingLayoutIdTemp.equals(info.getTemperingLayoutId()) && temperingFeedSequenceTemp.equals(info.getTemperingFeedSequence() + 1) && info.getWidth() <= bigStorageDTO.get().getWidth()) { bigStorageDTO.get().setWidth(bigStorageDTO.get().getWidth() - info.getWidth().intValue() - Const.BIG_STORAGE_GAP); }else{ S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); bigStorageDTO.set(bigStorageCageDetailsService.queryTargetSlotByTempering(info)); } } catch (Exception e) { e.printStackTrace(); e.setTargetSlot(bigStorageDTO.get().getSlot()); cageDetails.setSlot(bigStorageDTO.get().getSlot()); cageDetails.setState(Const.GLASS_STATE_IN); temperingLayoutIdTemp.set(info.getTemperingLayoutId()); temperingFeedSequenceTemp.set(info.getTemperingFeedSequence()); bigStorageCageDetailsList.add(cageDetails); taskFlag.set(bigStorageCageFeedTaskService.updateById(e)); if (!taskFlag.get()) { return; } } }); //3、更新进片任务表 遇到问题:无法批量更新,批量更新无法走指定从库 //4、在详情表中加入进片玻璃信息 bigStorageCageDetailsService.saveBatch(bigStorageCageDetailsList); if (taskFlag.get()) { String lineAddress = line.equals(Const.A09_OUT_TARGET_POSITION) ? d02GoAdress : d05GoAdress; // S7object.getinstance().plccontrol.writeWord(lineAddress, (short) 1); } return taskFlag.get(); } } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.ymlcopy from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml copy to hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml
File was copied from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml @@ -5,12 +5,12 @@ strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. datasource: hangzhoumes: url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8 url: jdbc:mysql://192.168.1.199:3306/hangzhoumes?serverTimezone=GMT%2b8 username: root password: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver salve_hangzhoumes: url: jdbc:sqlserver://192.168.56.10:1433;databasename=hangzhoumes url: jdbc:sqlserver://192.168.10.2:1433;databasename=hangzhoumes username: sa password: beibo.123/ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-loc.yml
File was deleted hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -3,10 +3,13 @@ spring: profiles: active: prod active: dev application: name: cacheVerticalGlass mybatis-plus: mapper-locations: classpath*:mapper/*.xml configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mes: sequence: order: false hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml
New file @@ -0,0 +1,18 @@ <?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.bigstoragetask.mapper.BigStorageCageFeedTaskMapper"> <select id="querySitToUpGlass" resultType="java.lang.String"> select t.line from ( select line, COUNT(glass_id) as total_count, SUM(case task_state when 2 then 1 else 0 end) as real_count from big_storage_cage_feed_task where task_state in (1, 2) group by line ) t where t.total_count = t.real_count </select> </mapper> hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -1,14 +1,16 @@ package com.mes; import com.mes.bigstorage.service.BigStorageCageService; import com.mes.common.config.Const; import com.mes.job.PlcStorageCageTask; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.Arrays; import java.util.List; import java.util.Map; /** * @Author : zhoush @@ -17,12 +19,42 @@ */ @Slf4j @RunWith(SpringRunner.class) @SpringBootTest(classes = CacheVerticalClassModuleApplication.class) @SpringBootTest(classes = CacheVerticalClassModuleApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class CacheVerticalGlassModuleApplicationTest { @Autowired BigStorageCageService bigStorageCageService; @Autowired PlcStorageCageTask plcStorageCageTask; @Test public void testFindPath() { log.info("完整路径:{}", Arrays.asList("123")); } @Test public void computeTargetByLine() { // log.info("获取大理片笼信息:{}",bigStorageCageService.querybigStorageCageDetail()); plcStorageCageTask.computeTargetByLine(2001, "", ""); } @Test public void judgeGlassTypeStatus() { // log.info("获取大理片笼信息:{}",bigStorageCageService.querybigStorageCageDetail()); plcStorageCageTask.judgeGlassTypeStatus("P24060403|6|7", Const.A09_OUT_TARGET_POSITION); } @Test public void getStartLine() { // log.info("获取大理片笼信息:{}",bigStorageCageService.querybigStorageCageDetail()); Integer startLine = plcStorageCageTask.getStartLine(); log.info("---------{}", startLine); } @Test public void selectBigStorageCageUsage() { // bigStorageCageService.querybigStorageCageDetail(1); log.info("获取大理片笼信息:{}", bigStorageCageService.selectBigStorageCageUsage()); } } hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java
@@ -5,6 +5,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.scheduling.annotation.EnableScheduling; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** @@ -16,6 +17,7 @@ @SpringBootApplication @EnableSwagger2 @EnableDiscoveryClient @EnableScheduling @MapperScan(basePackages = "com.mes.*.mapper") public class LoadGlassModuleApplication { public static void main(String[] args) { hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
@@ -42,18 +42,24 @@ public Result <List<UpPattenUsage>> pauseTask(@RequestBody Engineering engineering) { boolean work=engineeringService.changeTask(engineering.getEngineerId(),engineering.getState()); List<UpPattenUsage> glass = upPattenUsageService.prioritylist(); log.info("StartorStop:{},{}", work,engineering); return Result.build(200, engineering.getEngineerId(),glass); if(work){ return Result.build(200,"成功",glass); }else { return Result.build(100,"失败",glass); } } @ApiOperation("暂停") @PostMapping("/pause") //暂停上片任务 @ResponseBody public Result <List<UpPattenUsage>> pause(@RequestBody Engineering engineering) { boolean work=engineeringService.changeTask(engineering.getEngineerId(),engineering.getState()); List<UpPattenUsage> glass = upPattenUsageService.prioritylist(); log.info("StartorStop:{},{}", work,engineering); return Result.build(200, engineering.getEngineerId(),glass); boolean work=engineeringService.pauseTask(engineering.getEngineerId(),engineering.getState()); List<UpPattenUsage> glass = upPattenUsageService.prioritylist();String message; if(work){ return Result.build(200,"成功",glass); }else { return Result.build(100,"成功",glass); } } @ApiOperation("开始上片") hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
@@ -40,4 +40,6 @@ * @return Engineering */ List<Engineering> selectTask(); boolean pauseTask(String engineerId, Integer state); } hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
@@ -40,12 +40,13 @@ LambdaUpdateChainWrapper<Engineering> pauseWrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper()); pauseWrapper.set(Engineering::getState,0); pauseWrapper.eq(Engineering::getState,1); pauseWrapper.update(); boolean pause = pauseWrapper.update(); //使用projectId作为条件开始工程 LambdaUpdateChainWrapper<Engineering> wrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper()); wrapper.set(Engineering::getState,state); wrapper.eq(Engineering::getEngineerId,projectId); return wrapper.update(); wrapper.update(); return pause; } @Override @@ -109,4 +110,13 @@ return engineeringMapper.selectList(wrapper); } @Override public boolean pauseTask(String engineerId, Integer state) { //暂停正在进行工程 LambdaUpdateChainWrapper<Engineering> pauseWrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper()); pauseWrapper.set(Engineering::getState,0); pauseWrapper.eq(Engineering::getState,1); return pauseWrapper.update(); } } hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
@@ -36,7 +36,7 @@ private EngineeringService engineeringService; @Autowired private OptimizeProjectService optimizeProjectService; @ApiOperation("显示正在出片的工程信息") @ApiOperation("显示选择的工程信息") @GetMapping("/prioritylist") //查询现在上片机的玻璃信息 @ResponseBody public Result<List<UpPattenUsage>> prioritylist() { @@ -49,10 +49,34 @@ @PostMapping("/selectUpPattenUsage") //查询现在上片机的玻璃信息 @ResponseBody public Result<List<UpPattenUsage>> selectUpPattenUsage(@RequestBody Engineering engineering) { List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineering.getEngineerId()); return Result.build(200, "", upPattenUsages); List<UpPattenUsage> upPattenUsages=null; UpPattenUsage upPattenUsage = upPattenUsageService.selectedEngineering(engineering.getEngineerId()); if(upPattenUsage == null){ upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineering.getEngineerId()); }else { upPattenUsages= upPattenUsageService.selectUpPattenUsage(upPattenUsage); } if (!upPattenUsages.isEmpty()) { return Result.build(200, "成功", upPattenUsages); }else { return Result.build(100, "失败", upPattenUsages); } } @ApiOperation("切换原片上片状态") @PostMapping("/updateGlassState") //查询现在上片机的玻璃信息 @ResponseBody public Result<Boolean> updateGlassState(@RequestBody UpPattenUsage upPattenUsage) { Boolean whether = upPattenUsageService.updateGlassState(upPattenUsage); if (whether){ return Result.build(200, "成功", whether); }else { return Result.build(100, "失败", whether); } } } hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java
@@ -19,6 +19,11 @@ */ List<UpPattenUsage> prioritylist(); /** * 查询上片表的工程信息 * @return List<UpPattenUsage> */ List<UpPattenUsage> selectUpPattenUsage(UpPattenUsage upPattenUsage); /** * 查询上片顺序信息 * @return List<UpPattenUsage> */ @@ -47,5 +52,7 @@ */ UpPattenUsage selectSequence(UpPattenUsage upPattenUsage); Boolean updateGlassState(UpPattenUsage upPattenUsage); } hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
@@ -3,6 +3,7 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.query.MPJQueryWrapper; import com.mes.engineering.entity.Engineering; @@ -18,6 +19,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** @@ -49,6 +51,13 @@ return null; } } @Override public List<UpPattenUsage> selectUpPattenUsage(UpPattenUsage upPattenUsage) { LambdaQueryWrapper<UpPattenUsage> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(UpPattenUsage::getEngineeringId,upPattenUsage.getEngineeringId()); return this.list(wrapper); } @Override @@ -127,5 +136,13 @@ return this.getOne(wrapper); } @Override public Boolean updateGlassState(UpPattenUsage upPattenUsage) { UpdateWrapper<UpPattenUsage> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",upPattenUsage.getId()) .set("state",upPattenUsage.getState()); return this.update(updateWrapper); } } hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/controller/UpWorkstationController.java
@@ -40,9 +40,14 @@ @PostMapping("/updateGlassMessage") @ResponseBody public Result<List<UpWorkstation>> updateGlassMessage(@RequestBody UpWorkstation upwork) { upWorkstationService.updateGlassMessage(upwork); Boolean info= upWorkstationService.updateGlassMessage(upwork); List<UpWorkstation> glass = upWorkstationService.list(); return Result.build(200, "", glass); if(info){ return Result.build(200, "成功", glass); }else{ return Result.build(100, "失败", glass); } } hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java
@@ -34,7 +34,7 @@ * 增加人工输入的工位玻璃信息 * @param upwork */ void updateGlassMessage(UpWorkstation upwork); Boolean updateGlassMessage(UpWorkstation upwork); String updateMesInkageLoad(short inKageWord); hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java
@@ -74,17 +74,19 @@ * 增加人工输入的工位玻璃信息/删除人工搬走的玻璃信息 */ @Override public void updateGlassMessage(UpWorkstation upwork) { public Boolean updateGlassMessage(UpWorkstation upwork) { int update = 0; UpdateWrapper<UpWorkstation> updateWrapper = new UpdateWrapper<>(); if (upwork.getWorkstationId() == 1 || upwork.getWorkstationId() == 3) { updateWrapper.eq("workstation_id", upwork.getWorkstationId()); int update = this.baseMapper.update(upwork, updateWrapper); update = this.baseMapper.update(upwork, updateWrapper); } else { if (upwork.getPatternHeight() > 2700 || upwork.getPatternHeight() == 0) { updateWrapper.eq("workstation_id", upwork.getWorkstationId()); int update = this.baseMapper.update(upwork, updateWrapper); update = this.baseMapper.update(upwork, updateWrapper); } } return update>0; } @Override hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json
hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-cz.yml
File was renamed from hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-loc.yml @@ -5,14 +5,14 @@ strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. datasource: hangzhoumes: url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8 url: jdbc:mysql://192.168.1.199:3306/hangzhoumes?serverTimezone=GMT%2b8 username: root password: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver pp: url: jdbc:mysql://192.168.56.10:3306/pp?serverTimezone=GMT%2b8 url: jdbc:mysql://192.168.1.199:3306/pp?serverTimezone=GMT%2b8 username: root password: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver cloud: nacos: hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
@@ -2,10 +2,10 @@ port: 8083 spring: profiles: active: prod active: cz application: name: loadGlass mybatis-plus: mapper-locations: classpath*:mapper/*.xml # configuration: # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java
@@ -69,6 +69,7 @@ @Test public void textengineering(){ Engineering engineering=new Engineering(); List<Engineering> glass= engineeringService.selectEngineering("P24032204"); engineeringService.saveEngineering(glass); log.info("glassinfo:{}", Arrays.asList(glass)); @@ -99,5 +100,14 @@ List<OptimizeProject> engineerings=optimizeProjectService.listByState(optimizeRequest); log.info("上片表任务中的数据{}",engineerings); } @Test public void textengineering6(){ //上片表最后一片 UpPattenUsage upPattenUsage=new UpPattenUsage(); upPattenUsage.setState(100); upPattenUsage.setId(2248L); boolean isOver= upPattenUsageService.updateGlassState(upPattenUsage); log.info("更改是否成功{}",isOver); } } hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
@@ -1,6 +1,7 @@ package com.mes.job; import cn.hutool.json.JSONObject; import com.mes.temperingglass.service.TemperingAgoService; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.temperingglass.service.TemperingAgoService; import com.mes.tools.WebSocketServer; @@ -32,14 +33,21 @@ //正在等待进片的玻璃 List<TemperingGlassInfo> waitingGlass = temperingAgoService.selectWaitingGlass(); jsonObject.append("waitingGlass", waitingGlass); //获取整在炉中的两个版图id List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId(); //进炉中的玻璃 List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(); List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0).getTemperingLayoutId()); jsonObject.append("intoGlass", intoGlass); //进炉中的第二个版图 if (layoutId.size() > 1) { List<TemperingGlassInfo> intoGlass2 = temperingAgoService.selectIntoGlass(layoutId.get(1).getTemperingLayoutId()); jsonObject.append("intoGlass2", intoGlass2); } //出炉后的玻璃 List<TemperingGlassInfo> outGlass = temperingAgoService.selectOutGlass(); jsonObject.append("outGlass", outGlass); //过旋转台钢化后的玻璃 TemperingGlassInfo overGlass = temperingAgoService.selectOverGlass(); List<TemperingGlassInfo> overGlass = temperingAgoService.selectOverGlass(); jsonObject.append("overGlass", overGlass); ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("temperingGlass"); hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java
@@ -1,14 +1,13 @@ package com.mes.temperingglass.controller; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.temperingglass.service.TemperingAgoService; import com.mes.temperingglass.service.TemperingOverService; import com.mes.temperingglass.service.TemperingService; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.utils.Result; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @@ -23,8 +22,6 @@ public class TemperingGlassInfoController { @Autowired TemperingService temperingService; @Autowired private TemperingAgoService temperingAgoService; @ApiOperation("查询钢化等片中的版图信息,状态为1的为已到,状态为0的为等待中") @@ -34,13 +31,13 @@ log.info("等待中的玻璃信息{}",glass); return Result.build(200, "", glass); } @ApiOperation("查询进炉中的钢化等片中的版图信息,状态全为1的为已到。") @GetMapping("/selectIntoGlass") // 查询进炉中的钢化等片中的版图信息,状态全为1的为已到。 public Result <List<TemperingGlassInfo>> selectIntoGlass() { List<TemperingGlassInfo> glass = temperingAgoService.selectIntoGlass(); log.info("进炉中的玻璃版图信息{}",glass); return Result.build(200, "", glass); } // @ApiOperation("查询进炉中的钢化等片中的版图信息,状态全为1的为已到。") // @GetMapping("/selectIntoGlass") // 查询进炉中的钢化等片中的版图信息,状态全为1的为已到。 // public Result <List<TemperingGlassInfo>> selectIntoGlass() { // List<TemperingGlassInfo> glass = temperingAgoService.selectIntoGlass(); // log.info("进炉中的玻璃版图信息{}",glass); // return Result.build(200, "", glass); // } @ApiOperation("//钢化后显示出炉的版图信息。") @GetMapping("/selectOutGlass") //钢化后显示出炉的版图信息 public Result <List<TemperingGlassInfo>> selectOutGlass() { hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/mapper/TemperingMapper.java
File was deleted hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/service/TemperingOverService.java
File was deleted hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/service/TemperingService.java
File was deleted hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.ymlcopy from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml copy to hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml
File was copied from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml @@ -5,12 +5,13 @@ strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. datasource: hangzhoumes: url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8 url: jdbc:mysql://192.168.1.199:3306/hangzhoumes?serverTimezone=GMT%2b8 username: root password: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver salve_hangzhoumes: url: jdbc:sqlserver://192.168.56.10:1433;databasename=hangzhoumes url: jdbc:sqlserver://192.168.10.2:1433;databasename=hangzhoumes username: sa password: beibo.123/ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver @@ -18,6 +19,8 @@ nacos: discovery: server-addr: 127.0.0.1:8848 application: name: temperingGlass redis: database: 0 host: 127.0.0.1 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-loc.yml
File was deleted hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
@@ -2,7 +2,7 @@ port: 8084 spring: profiles: active: prod active: cz application: name: temperingGlass mybatis-plus: hangzhoumesParent/moduleService/TemperingGlassModule/src/test/java/com/mes/TemperingApplicationTest.java
@@ -1,52 +1,60 @@ package com.mes; import com.mes.glassinfo.service.GlassInfoService; import com.mes.pp.mapper.OptimizeProjectMapper; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.temperingglass.service.TemperingAgoService; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; import java.util.Arrays; import java.util.List; /** * @Author : zhoush * @Date: 2024/3/27 16:37 * @Description: */ @Slf4j @RunWith(SpringRunner.class) @SpringBootTest(classes = TemperingGlassModuleApplication.class) public class TemperingApplicationTest { @Autowired private TemperingAgoService temperingAgoService; @Test public void testFindPa() { List<TemperingGlassInfo> glass = temperingAgoService.selectIntoGlass(); log.info("进炉中的玻璃:{}", Arrays.asList(glass)); } @Test public void testFindPa2() { List<TemperingGlassInfo> glass = temperingAgoService.selectOutGlass(); log.info("已出中的玻璃:{}", Arrays.asList(glass)); } @Test public void testFindPa3() { List<TemperingGlassInfo> glass = temperingAgoService.selectWaitingGlass(); log.info("等待中的玻璃:{}", Arrays.asList(glass)); } @Test public void testFindPa4() { TemperingGlassInfo glass = temperingAgoService.selectOverGlass(); log.info("等待中的玻璃:{}", Arrays.asList(glass)); } } //package com.mes; // //import com.mes.temperingglass.entity.TemperingGlassInfo; //import com.mes.temperingglass.service.TemperingAgoService; //import lombok.extern.slf4j.Slf4j; //import org.junit.Test; //import org.junit.runner.RunWith; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.boot.test.context.SpringBootTest; //import org.springframework.test.context.junit4.SpringRunner; // //import java.util.Arrays; //import java.util.List; // ///** // * @Author : zhoush // * @Date: 2024/3/27 16:37 // * @Description: // */ //@Slf4j //@RunWith(SpringRunner.class) //@SpringBootTest(classes = TemperingGlassModuleApplication.class) //public class TemperingApplicationTest { // // @Autowired // private TemperingAgoService temperingAgoService; // // // @Test // public void testFindPa() { // List<TemperingGlassInfo> glass = temperingAgoService.selectIntoGlass(12); // log.info("进炉中的玻璃:{}", Arrays.asList(glass)); // } // @Test // public void testFindPa2() { // List<TemperingGlassInfo> glass = temperingAgoService.selectOutGlass(); // log.info("已出中的玻璃:{}", Arrays.asList(glass)); // } // // @Test // public void testFindPa3() { // List<TemperingGlassInfo> glass = temperingAgoService.selectWaitingGlass(); // log.info("等待中的玻璃:{}", Arrays.asList(glass)); // } // @Test // public void testFindPa4() { // List<TemperingGlassInfo> glass = temperingAgoService.selectOverGlass(); // log.info("等待中的玻璃:{}", Arrays.asList(glass)); // } // @Test // public void testFindPa5() { // List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId(); // //进炉中的玻璃 // log.info("版图id:{}", Arrays.asList(layoutId.get(0).getTemperingLayoutId())); // List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0).getTemperingLayoutId()); // log.info("玻璃版图id:{}", Arrays.asList(intoGlass)); // List<TemperingGlassInfo> intoGlass2 = temperingAgoService.selectIntoGlass(layoutId.get(1).getTemperingLayoutId()); // log.info("玻璃版图id:{}", Arrays.asList(intoGlass2)); // } //} 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); hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-cz.yml
File was renamed from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml @@ -5,12 +5,12 @@ strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. datasource: hangzhoumes: url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8 url: jdbc:mysql://192.168.1.199:3306/hangzhoumes?serverTimezone=GMT%2b8 username: root password: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver salve_hangzhoumes: url: jdbc:sqlserver://192.168.56.10:1433;databasename=hangzhoumes url: jdbc:sqlserver://192.168.10.2:1433;databasename=hangzhoumes username: sa password: beibo.123/ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@ spring: profiles: active: prod active: cz application: name: unLoadGlass