hangzhoumesParent.zipBinary files differ
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -56,4 +56,49 @@ 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; /** * 大理片笼宽度 及 玻璃间距 */ public static final Integer BIG_STORAGE_WIDTH = 5000; public static final Integer BIG_STORAGE_GAP = 20; } hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-cz.ymlcopy from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-loc.yml copy to hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-cz.yml
File was copied from hangzhoumesParent/moduleService/CacheVerticalGlassModule/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://127.0.0.1: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/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; @@ -49,14 +54,14 @@ */ @Override public List<BigStorageCageDetails> selectTask(int taskType) { if(taskType==1){ if (taskType == 1) { //进片任务数据 LambdaQueryWrapper<BigStorageCageDetails> feedWrapper = new LambdaQueryWrapper<>(); feedWrapper.eq(BigStorageCageDetails::getState, 1) .or() .eq(BigStorageCageDetails::getState, 2); List<BigStorageCageDetails> bigStorageCageDetailsList=baseMapper.selectList(feedWrapper); List<BigStorageCageFeedTask> bigStorageCageFeedTaskList=bigStorageCageFeedTaskMapper.selectList(null); List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(feedWrapper); List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskMapper.selectList(null); Map<String, BigStorageCageFeedTask> listMap = bigStorageCageFeedTaskList.stream() .collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, task -> task)); @@ -66,14 +71,14 @@ bigStorageCageDetails.setBigStorageCageFeedTask(bigStorageCageFeedTask); } return bigStorageCageDetailsList; }else{ } else { //出片任务数据 LambdaQueryWrapper<BigStorageCageDetails> outWrapper = new LambdaQueryWrapper<>(); outWrapper.eq(BigStorageCageDetails::getState, 3) .or() .eq(BigStorageCageDetails::getState, 4); List<BigStorageCageDetails> bigStorageCageDetailsList=baseMapper.selectList(outWrapper); List<BigStorageCageOutTask> bigStorageCageOutTaskList=bigStorageCageOutTaskMapper.selectList(null); List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(outWrapper); List<BigStorageCageOutTask> bigStorageCageOutTaskList = bigStorageCageOutTaskMapper.selectList(null); Map<String, BigStorageCageOutTask> listMap = bigStorageCageOutTaskList.stream() .collect(Collectors.toMap(BigStorageCageOutTask::getGlassId, task -> task)); @@ -90,27 +95,27 @@ * 判断当前玻璃是否能上车 */ @Override public double selectGetBoard(String plcFeedReqLine){ double carWidth=5000; public double selectGetBoard(String plcFeedReqLine) { double carWidth = 5000; LambdaQueryWrapper<BigStorageCageDetails> feedWrapper = new LambdaQueryWrapper<>(); feedWrapper.eq(BigStorageCageDetails::getState, plcFeedReqLine); List<BigStorageCageDetails> bigStorageCageDetailsList=baseMapper.selectList(feedWrapper); List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(feedWrapper); LambdaQueryWrapper<BigStorageCageFeedTask> bigStorageCageFeedTaskWrapper = new LambdaQueryWrapper<>(); bigStorageCageFeedTaskWrapper .eq(BigStorageCageFeedTask::getTaskState,plcFeedReqLine) .eq(BigStorageCageFeedTask::getLine,plcFeedReqLine); .eq(BigStorageCageFeedTask::getTaskState, plcFeedReqLine) .eq(BigStorageCageFeedTask::getLine, plcFeedReqLine); List<BigStorageCageFeedTask> bigStorageCageFeedTaskList=bigStorageCageFeedTaskMapper.selectList(bigStorageCageFeedTaskWrapper); List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskMapper.selectList(bigStorageCageFeedTaskWrapper); Map<String, BigStorageCageFeedTask> listMap = bigStorageCageFeedTaskList.stream() .collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, task -> task)); for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList) { BigStorageCageFeedTask bigStorageCageFeedTask = listMap.get(bigStorageCageDetails.getGlassId()); bigStorageCageDetails.setBigStorageCageFeedTask(bigStorageCageFeedTask); } for (BigStorageCageDetails bigStorageCageDetails:bigStorageCageDetailsList ) { if(bigStorageCageDetails.getBigStorageCageFeedTask().getTaskState()==0){ for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList ) { if (bigStorageCageDetails.getBigStorageCageFeedTask().getTaskState() == 0) { carWidth -= Integer.parseInt(bigStorageCageDetails.getWidth().toString()) + bigStorageCageDetails.getGap(); } } @@ -121,25 +126,25 @@ //栓除出片任务.更新格子宽度 @Override public void deleteBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails){ public void deleteBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) { baseMapper.deleteById(bigStorageCageDetails.getId()); bigStorageCageService.updateRemainWidth(bigStorageCageDetails.getSlot()); } //理片笼详情破损 @Override public void damageBigStorageCageDetails(String glassId){ LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoWrapper=new LambdaQueryWrapper<>(); temperingGlassInfoWrapper.eq(TemperingGlassInfo::getGlassId,glassId); TemperingGlassInfo temperingGlassInfo=temperingGlassInfoMapper.selectOne(temperingGlassInfoWrapper); public void damageBigStorageCageDetails(String glassId) { LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoWrapper = new LambdaQueryWrapper<>(); temperingGlassInfoWrapper.eq(TemperingGlassInfo::getGlassId, glassId); TemperingGlassInfo temperingGlassInfo = temperingGlassInfoMapper.selectOne(temperingGlassInfoWrapper); LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper=new LambdaQueryWrapper<>(); bigStorageCageDetailsWrapper.eq(BigStorageCageDetails::getGlassId,glassId); BigStorageCageDetails bigStorageCageDetails=baseMapper.selectOne(bigStorageCageDetailsWrapper); LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper = new LambdaQueryWrapper<>(); bigStorageCageDetailsWrapper.eq(BigStorageCageDetails::getGlassId, glassId); BigStorageCageDetails bigStorageCageDetails = baseMapper.selectOne(bigStorageCageDetailsWrapper); if(temperingGlassInfo.getState()==-2){ if (temperingGlassInfo.getState() == -2) { temperingGlassInfoMapper.deleteById(temperingGlassInfo); }else{ } else { temperingGlassInfo.setState(5); temperingGlassInfoMapper.updateById(temperingGlassInfo); } @@ -151,11 +156,11 @@ //查询玻璃信息 @Override public BigStorageCageDetails selectBigStorageCageDetails(String glassId){ LambdaQueryWrapper<GlassInfo> glassInfoWrapper=new LambdaQueryWrapper<>(); glassInfoWrapper.eq(GlassInfo::getGlassId,glassId); GlassInfo glassInfo=glassInfoMapper.selectOne(glassInfoWrapper); BigStorageCageDetails bigStorageCageDetails=new BigStorageCageDetails(); public BigStorageCageDetails selectBigStorageCageDetails(String glassId) { LambdaQueryWrapper<GlassInfo> glassInfoWrapper = new LambdaQueryWrapper<>(); glassInfoWrapper.eq(GlassInfo::getGlassId, glassId); GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoWrapper); BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); BeanUtils.copyProperties(glassInfo, bigStorageCageDetails); bigStorageCageDetails.setState(0); bigStorageCageDetails.setGap(20); @@ -164,19 +169,19 @@ //理片笼详情添加 @Override public void insertBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails){ public void insertBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) { baseMapper.insert(bigStorageCageDetails); bigStorageCageService.updateRemainWidth(bigStorageCageDetails.getSlot()); } //理片笼详情完成 @Override public void finishBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails){ if(bigStorageCageDetails.getState()==1||bigStorageCageDetails.getState()==2){ public void finishBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) { if (bigStorageCageDetails.getState() == 1 || bigStorageCageDetails.getState() == 2) { bigStorageCageDetails.setState(0); baseMapper.updateById(bigStorageCageDetails); bigStorageCageFeedTaskMapper.deleteById(bigStorageCageDetails.getBigStorageCageFeedTask().getId()); }else{ } else { baseMapper.deleteById(bigStorageCageDetails.getId()); bigStorageCageOutTaskMapper.deleteById(bigStorageCageDetails.getBigStorageCageOutTask().getId()); } @@ -185,25 +190,67 @@ //手动出片 @Override public void outBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails){ LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoWrapper =new LambdaQueryWrapper<>(); public void outBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) { LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoWrapper = new LambdaQueryWrapper<>(); temperingGlassInfoWrapper .eq(TemperingGlassInfo::getGlassId,bigStorageCageDetails.getGlassId()); TemperingGlassInfo temperingGlassInfo=temperingGlassInfoMapper.selectOne(temperingGlassInfoWrapper); if(temperingGlassInfo.getGlassId()==null){ LambdaQueryWrapper<GlassInfo> glassInfoWrapper=new LambdaQueryWrapper<>(); .eq(TemperingGlassInfo::getGlassId, bigStorageCageDetails.getGlassId()); TemperingGlassInfo temperingGlassInfo = temperingGlassInfoMapper.selectOne(temperingGlassInfoWrapper); if (temperingGlassInfo.getGlassId() == null) { LambdaQueryWrapper<GlassInfo> glassInfoWrapper = new LambdaQueryWrapper<>(); glassInfoWrapper .eq(GlassInfo::getGlassId,bigStorageCageDetails.getGlassId()); GlassInfo glassInfo=glassInfoMapper.selectOne(glassInfoWrapper); TemperingGlassInfo temperingGlassInfo1=new TemperingGlassInfo(); .eq(GlassInfo::getGlassId, bigStorageCageDetails.getGlassId()); GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoWrapper); TemperingGlassInfo temperingGlassInfo1 = new TemperingGlassInfo(); BeanUtils.copyProperties(glassInfo, temperingGlassInfo1); if(temperingGlassInfo.getTemperingLayoutId()!=null){ if (temperingGlassInfo.getTemperingLayoutId() != null) { temperingGlassInfo1.setState(-1); }else{ } else { temperingGlassInfo1.setState(-2); } 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) .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 = 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/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; /** @@ -36,9 +33,14 @@ } @Override public List<BigStorageCageFeedTask> querybigStorageCageFeedTask(int taskState){ LambdaQueryWrapper<BigStorageCageFeedTask> getFeedTaskWrapper=new LambdaQueryWrapper<>(); getFeedTaskWrapper.eq(BigStorageCageFeedTask::getTaskState,taskState); public List<BigStorageCageFeedTask> querybigStorageCageFeedTask(int taskState) { LambdaQueryWrapper<BigStorageCageFeedTask> getFeedTaskWrapper = new LambdaQueryWrapper<>(); 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/job/PlcStorageCageTask.java
@@ -1,5 +1,9 @@ package com.mes.job; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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; @@ -7,18 +11,24 @@ 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.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.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.List; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** * @author SNG-015 @@ -42,12 +52,13 @@ @Resource private TemperingGlassInfoService temperingGlassInfoService; PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; @Value("${mes.sequence.order}") private boolean sequenceOrder; public static boolean bigStorageCageFullAlarm = false; private int line1Time=0; private int line2Time=0; private int line1Time = 0; private int line2Time = 0; /** * fixedRate : 上一个调用开始后再次调用的延时(不用等待上一次调用完成) @@ -55,27 +66,29 @@ */ @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(); plcFeedGlassid = plcParameterObject.getPlcParameter("D01ID1").getValue(); } if ("1".equals(plcParameterObject.getPlcParameter("D04Request").getValue())) { plcFeedReqLine = "2"; plcFeedGlassid=plcParameterObject.getPlcParameter("D04ID1").getValue(); plcFeedGlassid = plcParameterObject.getPlcParameter("D04ID1").getValue(); } line1Time+=1; line2Time+=1; 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){ if (bigStorageCageDetailsService.selectGetBoard(plcFeedReqLine) >= 0) { BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails); if (slotInfo != null) { int taskType = edgGlassTaskInfoService.judgeTasktype(plcFeedReqLine); @@ -86,11 +99,11 @@ } else { bigStorageCageFullAlarm = true; } }else{ } else { log.info("当前玻璃宽度不够上车" + glassInfo); if(!("1".equals(plcFeedReqLine))){ if (!("1".equals(plcFeedReqLine))) { S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); }else{ } else { S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); } } @@ -108,24 +121,24 @@ log.info("7、删除已经完成的进片任务"); } //启动阈值 if(line1Time>=300){ if("0".equals(plcParameterObject.getPlcParameter("D05Go").getValue())){ 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())){ 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(); List<BigStorageCageOutTask> bigStorageCageOutTask = bigStorageCageOutTaskService.querybigStorageCageOutTask(0); if (bigStorageCageOutTask.size() == 0) { boolean result = bigStorageCageService.outGlass(); log.info("8、没有未完成任务时调用出片接口"); if (result==false){ if (result == false) { temperingGlassInfoService.schedulingTask(); } } @@ -133,11 +146,11 @@ log.info("9、根据任务表状态修改钢化小片表任务状态"); //来不及送时直接走 String line=Integer.toString(edgGlassTaskInfoService.startTask()); String line = Integer.toString(edgGlassTaskInfoService.startTask()); if(!(line.equals(plcFeedReqLine))){ if (!(line.equals(plcFeedReqLine))) { S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); }else{ } else { S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); } @@ -147,4 +160,116 @@ } } @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(); // 0:不干预 ; 1:条件满足情况下立即发车 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); } /** * 获取需要启动的线路:两条线都可启动 获取第一片玻璃版图id最小 版序最大的线路 * * @return */ private 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.isTrue(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()); } /** * 计算任务表进片线路的目标格子,并启动任务 */ private 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)); taskList.stream().forEach(e -> { //按照版图信息获取进片笼子格子号 GlassInfo info = glassInfoMap.get(e.getGlassId()); 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 { bigStorageDTO.set(bigStorageCageDetailsService.queryTargetSlotByTempering(info)); } e.setTragetSlot(bigStorageDTO.get().getSlot()); temperingLayoutIdTemp.set(info.getTemperingLayoutId()); temperingFeedSequenceTemp.set(info.getTemperingFeedSequence()); }); //3、更新进片任务表 boolean taskFlag = bigStorageCageFeedTaskService.updateBatchById(taskList); if (taskFlag) { String lineAddress = line.equals(Const.A09_OUT_TARGET_POSITION) ? d02GoAdress : d05GoAdress; S7object.getinstance().plccontrol.writeWord(lineAddress, (short) 1); } return taskFlag; } } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.ymlcopy from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-loc.yml copy to hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml
File was copied from hangzhoumesParent/moduleService/CacheVerticalGlassModule/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://127.0.0.1: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.yml
@@ -3,7 +3,7 @@ spring: profiles: active: prod active: cz application: name: cacheVerticalGlass mybatis-plus: 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/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json
@@ -25,11 +25,11 @@ "unit":"" }, { "codeId": "InkageStatus", "addressIndex":"22", "addressLenght":"2", "ratio":"1", "unit":"" "codeId": "InkageStatus", "addressIndex":"22", "addressLenght":"2", "ratio":"1", "unit":"" }, { "codeId": "WorkId", 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/TemperingGlassModule/src/main/resources/application-cz.yml
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-loc.yml @@ -5,13 +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://127.0.0.1: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/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/UnLoadGlassModule/src/main/resources/application-cz.yml
File was renamed from hangzhoumesParent/moduleService/CacheVerticalGlassModule/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://127.0.0.1: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 @@ -22,4 +22,4 @@ database: 0 host: 127.0.0.1 port: 6379 password: 123456 password: 123456 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml
File was deleted hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@ spring: profiles: active: prod active: cz application: name: unLoadGlass