hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/UnLoadGlassApplication.java
@@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.scheduling.annotation.EnableScheduling; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** @@ -19,6 +20,7 @@ @EnableSwagger2 @EnableDiscoveryClient @MapperScan(basePackages = "com.mes.*.mapper") @EnableScheduling public class UnLoadGlassApplication { hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java
@@ -2,24 +2,21 @@ import cn.hutool.json.JSONObject; import com.mes.device.PlcParameterObject; import com.mes.downglassinfo.entity.DownGlassTask; import com.mes.downglassinfo.service.DownGlassTaskService; import com.mes.downstorage.entity.DownStorageCageDetails; import com.mes.downstorage.mapper.DownStorageCageDetailsMapper; import com.mes.downstorage.service.DownStorageCageService; import com.mes.downworkstation.service.DownWorkstationService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.tools.WebSocketServer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.List; import java.util.function.Supplier; @Component @Slf4j public class Plcdownglass extends Thread { public class Plcdownglass { public static final String RESULT_IN = "1"; public static final String RESULT_OUT = "2"; @@ -30,22 +27,19 @@ @Autowired private DownWorkstationService downWorkstationService; // private final Supplier<DownWorkstationService> plcServiceSupplier; // // public Plcdownglass() { // this.plcServiceSupplier = () -> WebSocketServer.applicationContext.getBean(DownWorkstationService.class); // } @Override public void run() { while (this != null) { // @Scheduled(fixedDelay = 300) public void PlcdownglassTask() throws InterruptedException { JSONObject jsonObject = new JSONObject(); try { Thread.sleep(100); downWorkstationService = WebSocketServer.applicationContext.getBean(DownWorkstationService.class); downStorageCageService = WebSocketServer.applicationContext.getBean(DownStorageCageService.class); Thread.sleep(300); // String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + ""; // String number = S7control.getinstance().ReadWord("DB14.2", 1).get(0) + ""; String result ="1"; @@ -66,16 +60,11 @@ } } //下片更新 downWorkstationService.insertdownglassinfo(); } catch (Exception e) { e.printStackTrace(); } } } } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
@@ -6,8 +6,16 @@ public interface DownGlassInfoService extends IService<DownGlassInfo> { /** * @param flowCardId * @return // 根据流程卡号查询最大序号 */ Integer getMaxSequenceByFlowCardId(String flowCardId); /** * @param downGlassInfo * 插入下片信息 */ void insertDownGlassInfo(DownGlassInfo downGlassInfo); hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
@@ -14,21 +14,40 @@ * @since 2024-04-07 */ public interface DownGlassTaskService extends IService<DownGlassTask> { /** * 查询任务状态为1的信息 * @return */ List<DownGlassTask> getUnloadingTaskState(); /** * 更新任务状态 * @return */ void updateTaskStateToZero(long id); /** * 删除任务 * @return */ void deleteTask(String id); /** * 查询出片任务 * @return */ DownGlassTask selectLastOutCacheInfo(String endCell); /** * 插入任务 * @return */ Integer insertCacheTask(DownGlassTask downGlassTask); /** * 查询进片任务 * @return */ List<DownGlassTask> selectInputTaskCache(); /** * 查询出片任务 * 查询出片任务 备用 * @return */ List<DownGlassTask> selectOutTaskCache(); hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -1,6 +1,8 @@ package com.mes.downglassinfo.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.downglassinfo.entity.DownGlassInfo; import com.mes.downglassinfo.entity.DownGlassTask; @@ -22,16 +24,16 @@ // 根据流程卡号查询最大序号 @Override public Integer getMaxSequenceByFlowCardId(String flowCardId) { QueryWrapper<DownGlassInfo> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("flow_card_id", flowCardId); queryWrapper.orderByDesc("sequence"); // 按照序号倒序排序 queryWrapper.select("sequence").last("LIMIT 1"); // 选择最大序号并限制结果为1条记录 DownGlassInfo downGlassInfo = baseMapper.selectOne(queryWrapper); if (downGlassInfo != null) { return downGlassInfo.getSequence(); LambdaQueryWrapper<DownGlassInfo> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(DownGlassInfo::getFlowCardId, flowCardId) .select(DownGlassInfo::getSequence) .orderByDesc(DownGlassInfo::getSequence) .last("LIMIT 1"); DownGlassInfo downGlassInfo = baseMapper.selectOne(lambdaQueryWrapper); return downGlassInfo != null ? downGlassInfo.getSequence() : 0; } return 0; } @Override public void insertDownGlassInfo(DownGlassInfo downGlassInfo) { hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
@@ -8,6 +8,7 @@ import com.mes.downglassinfo.entity.DownGlassTask; import com.mes.downglassinfo.mapper.DownGlassTaskMapper; import com.mes.downglassinfo.service.DownGlassTaskService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.List; @@ -35,7 +36,7 @@ public void updateTaskStateToZero(long id) { UpdateWrapper<DownGlassTask> updateWrapper = new UpdateWrapper<>(); updateWrapper.set("task_stauts", 0).eq("id", id); baseMapper.update(null, updateWrapper); baseMapper.update(new DownGlassTask(), updateWrapper); } @Override @@ -60,15 +61,16 @@ @Override public Integer insertCacheTask(DownGlassTask downGlassTask) { DownGlassTask glassInfo = new DownGlassTask(); glassInfo.setId(downGlassTask.getId()); glassInfo.setStartCell(downGlassTask.getStartCell()); glassInfo.setEndCell(downGlassTask.getEndCell()); glassInfo.setTaskType(downGlassTask.getTaskType()); glassInfo.setWidth(downGlassTask.getWidth()); glassInfo.setHeight(downGlassTask.getHeight()); glassInfo.setFilmsid(downGlassTask.getFilmsid()); glassInfo.setThickness(downGlassTask.getThickness()); glassInfo.setFlowCardId(downGlassTask.getFlowCardId()); // glassInfo.setId(downGlassTask.getId()); // glassInfo.setStartCell(downGlassTask.getStartCell()); // glassInfo.setEndCell(downGlassTask.getEndCell()); // glassInfo.setTaskType(downGlassTask.getTaskType()); // glassInfo.setWidth(downGlassTask.getWidth()); // glassInfo.setHeight(downGlassTask.getHeight()); // glassInfo.setFilmsid(downGlassTask.getFilmsid()); // glassInfo.setThickness(downGlassTask.getThickness()); // glassInfo.setFlowCardId(downGlassTask.getFlowCardId()); BeanUtils.copyProperties(downGlassTask,glassInfo); glassInfo.setTaskStauts(0); // 默认任务状态为0 int rows = baseMapper.insert(glassInfo); hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -7,17 +7,48 @@ import java.util.Map; public interface DownStorageCageDetailsService { /** * @return //添加理片笼内信息 */ void addDownStorageCageDetails(DownStorageCageDetails details); //修改理片笼内信息 /** * @return //修改理片笼内信息 */ boolean updatedownStorageCageDetails(DownStorageCageDetails details); List<DownStorageCageDetails> getCacheLeisure(); /** * @param start * @param end * @return 根据传入的工位查询符合按照顺序和大小出片的小片 */ List<DownStorageCageDetails> getCacheOut(int start, int end); /** * @return 查询笼子内信息 */ List<Map> getCacheInfo(); /** * @param flowcardid * @param width * @return 查询可进此片玻璃的栅格号 找到空格 */ List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width); /** * @param start * @param end * @return log.info("单片情况根据传入的工位查询符合按照大小出片,并且优先出满架的小片"); */ List<DownStorageCageDetails> CacheOut(int start, int end); /** * @return 查询空格子 */ List<DownStorageCageDetails> selectCacheEmpty2(); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
@@ -17,12 +17,23 @@ * @since 2024-03-27 */ public interface DownStorageCageService extends MPJBaseService<DownStorageCage> { public List<Map> gettask(); // List<Map<String, Object>> selectCacheLeisure(); List<Map> selectCacheEmpty(); /** * @param Number * @return 进片 */ boolean processInto(String Number); /** * * @return 出片 */ boolean processOut(); hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -49,8 +49,8 @@ DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>() .select("t.*") .leftJoin("(SELECT t1.* FROM down_storage_cage_details t1 " + "JOIN (SELECT flow_card_id, MAX(width) AS max_width FROM glass_info GROUP BY flow_card_id) t " + "ON t1.flow_card_id = t.flow_card_id WHERE t1.width = t.max_width) t3" + "JOIN (SELECT flow_card_id, MAX(width*height) AS max_width FROM glass_info GROUP BY flow_card_id) t " + "ON t1.flow_card_id = t.flow_card_id WHERE t1.width*t1.height = t.max_width) t3" + " ON t.glass_id = t3.glass_id") .leftJoin("down_workstation t4 ON t3.flow_card_id = t4.flow_card_id") .isNull(Boolean.parseBoolean("t.glass_id"), "SELECT glass_id FROM down_glass_info") @@ -90,7 +90,15 @@ } @Override public List<DownStorageCageDetails> selectCacheEmpty2(){ return downStorageCageMapper.selectJoinList( DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>() .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height") .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot") .isNull("escd.slot") ); } @Override hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -1,6 +1,5 @@ package com.mes.downstorage.service.impl; import com.github.yulichang.query.MPJQueryWrapper; import com.mes.common.PLCAutoMes; import com.mes.common.S7control; import com.mes.device.PlcParameterObject; @@ -9,19 +8,17 @@ import com.mes.downstorage.entity.DownStorageCage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.downstorage.entity.DownStorageCageDetails; import com.mes.downstorage.mapper.DownStorageCageDetailsMapper; import com.mes.downstorage.mapper.DownStorageCageMapper; import com.mes.downstorage.service.DownStorageCageDetailsService; import com.mes.downstorage.service.DownStorageCageService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.tools.WebSocketServer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * <p> @@ -44,23 +41,10 @@ private DownGlassTaskService downGlassTaskService; @Autowired private DownStorageCageDetailsService downStorageCageDetailsService; @Override public List<Map> gettask(){ downStorageCageMapper.selectList(null); // downStorageCageMapper.selectJoin(); return null; }; @Override public List<Map> selectCacheEmpty(){ return baseMapper.selectJoinList( Map.class,new MPJQueryWrapper<DownStorageCage>().selectAll(DownStorageCage.class) .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height") .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot") .isNull("escd.slot") ); } @@ -84,32 +68,22 @@ public DownGlassTask createDownGlassTask(GlassInfo glassInfo, String startCell, String endCell,String taskType ) { DownGlassTask downGlassTask = new DownGlassTask(); downGlassTask.setId(glassInfo.getId()); BeanUtils.copyProperties(downGlassTask,glassInfo); downGlassTask.setStartCell(startCell); downGlassTask.setTaskType(taskType); downGlassTask.setEndCell(endCell); downGlassTask.setWidth(glassInfo.getWidth()); downGlassTask.setHeight(glassInfo.getHeight()); downGlassTask.setFilmsid(String.valueOf(glassInfo.getFilmsid())); downGlassTask.setThickness(glassInfo.getThickness()); downGlassTask.setFlowCardId(glassInfo.getFlowcardId()); return downGlassTask; } public DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, String startCell, String endCell,String taskType ) { DownGlassTask downGlassTask = new DownGlassTask(); downGlassTask.setId(glassInfo.getId()); BeanUtils.copyProperties(downGlassTask,glassInfo); downGlassTask.setStartCell(startCell); downGlassTask.setTaskType(taskType); downGlassTask.setEndCell(endCell); downGlassTask.setWidth(glassInfo.getWidth()); downGlassTask.setHeight(glassInfo.getHeight()); downGlassTask.setFilmsid(String.valueOf(glassInfo.getFilmsid())); downGlassTask.setThickness(glassInfo.getThickness()); downGlassTask.setFlowCardId(glassInfo.getFlowCardId()); return downGlassTask; } @@ -125,7 +99,7 @@ //同找到同流程卡附近空格 List<DownStorageCageDetails> list = downStorageCageDetailsService.getIsExistIntoCacheByflowcardid(GlassInfo.getFlowcardId(), GlassInfo.getWidth()); List<Map> selectCacheEmpty=selectCacheEmpty(); List<DownStorageCageDetails> selectCacheEmpty=downStorageCageDetailsService.selectCacheEmpty2(); // list<Map> list=selectCacheEmpty(); // list<Map> = downStorageCageService.selectCacheEmpty(); hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
@@ -16,18 +16,53 @@ */ public interface DownWorkstationService extends IService<DownWorkstation> { /** * @param startId * @param endId * @return * 获取工位信息 */ List<DownWorkstation> getoneDownWorkstations(int startId, int endId); /** * @param workstationId * @return * 获取总数量 */ int getTotalQuantity(int workstationId); /** * @param workstationId * @return * 获取落架数量 */ int getRacksNumber(int workstationId); /** * @param workstationId 清空架子信息 */ void clearFlowCardId(int workstationId); /** * @param flowCardId * @param racksnumber * 更新落架数量 */ void updateracksnumber(String flowCardId, int racksnumber); /** * @param flowCardId * @param glassInfoCount * @param workstationId * @return 更新架子和数量 */ int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId); void insertdownglassinfo(); /** * @return // * 工位显示 */ List<Map<String, Object>> getTotalGlassDimensionsByWorkstation(); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java
@@ -15,9 +15,21 @@ * @since 2024-04-07 */ public interface DownWorkstationTaskService extends IService<DownWorkstationTask> { /** * @param downGlassInfo * 插入任务 */ void insertdownWorkstationtask(DownGlassInfo downGlassInfo); /** * @param Id * 更新任务状态 */ void updateTaskStateToZero(long Id); /** * @return * 获取任务状态为1的信息 */ List<DownWorkstationTask> getTaskState(); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -91,17 +91,6 @@ } // @Override // public int getTotalQuantity(int workstationId) { // Integer totalQuantity = downWorkstationMapper.getTotalQuantity(workstationId); // return totalQuantity != null ? totalQuantity : 0; // } // @Override // public int getRacksNumber(int workstationId) { // Integer racksNumber = downWorkstationMapper.getRacksNumber(workstationId); // return racksNumber != null ? racksNumber : 0; // } //根据条件获取落架数量 @Override public int getRacksNumber(int workstationId) { @@ -130,7 +119,7 @@ public void updateracksnumber(String flowCardId, int racksNumber) { UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>(); updateWrapper.set("racks_number", racksNumber).eq("flow_card_id", flowCardId); baseMapper.update(null, updateWrapper); baseMapper.update(new DownWorkstation(), updateWrapper); } @@ -141,7 +130,7 @@ .set("flow_card_id", flowCardId) .eq("workstation_id", workstationId); return baseMapper.update(null, updateWrapper); return baseMapper.update(new DownWorkstation(), updateWrapper); } @Override @@ -152,10 +141,13 @@ .set("racks_number", 0) .eq("workstation_id", workstationId); baseMapper.update(null, updateWrapper); baseMapper.update(new DownWorkstation(), updateWrapper); } public DownWorkstation selectByFlowCardId(String flowcardid) { QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("flow_card_id", flowcardid); hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java
@@ -8,6 +8,7 @@ import com.mes.downworkstation.entity.DownWorkstationTask; import com.mes.downworkstation.mapper.DownWorkstationTaskMapper; import com.mes.downworkstation.service.DownWorkstationTaskService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.List; @@ -31,14 +32,10 @@ // 如果没有记录,则将 id 设置为 1;否则,将 id 设置为当前最大 id 值加 1 Long newId = (maxId == null) ? 1 : maxId + 1; entity.setId(newId); // 设置手动递增的 id entity.setFlowCardId(downGlassInfo.getFlowCardId()); entity.setWidth(downGlassInfo.getWidth()); entity.setHeight(downGlassInfo.getHeight()); entity.setThickness(downGlassInfo.getThickness()); entity.setFilmsid(downGlassInfo.getFilmsid()); entity.setState(1); BeanUtils.copyProperties(entity,downGlassInfo); entity.setId(newId); // 设置手动递增的 id entity.setState(1); baseMapper.insert(entity); } @@ -70,6 +67,7 @@ UpdateWrapper<DownWorkstationTask> updateWrapper = new UpdateWrapper<>(); updateWrapper.set("state", 0).eq("id", id); baseMapper.update(null, updateWrapper); baseMapper.update(new DownWorkstationTask(), updateWrapper); } } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -1,4 +1,4 @@ package com.mes.uppattenusage.service.impl; package com.mes.glassinfo.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -53,12 +53,5 @@ } // public void updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId) { // int rowsAffected = glassInfoMapper.updateFlowCardIdAndCount(flowCardId, glassInfoCount, workstationId); // if (rowsAffected > 0) { // System.out.println("更新架子上流程卡 ID 和数量成功"); // } else { // System.out.println("更新架子上流程卡 ID 和数量失败"); // } // } } hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
@@ -1,6 +1,8 @@ package mes; import com.mes.UnLoadGlassApplication; import com.mes.downglassinfo.service.impl.DownGlassInfoServiceImpl; import com.mes.downglassinfo.service.impl.DownGlassTaskServiceImpl; import com.mes.downstorage.entity.DownStorageCageDetails; import com.mes.downstorage.service.DownStorageCageDetailsService; import com.mes.downstorage.service.impl.DownStorageCageDetailsServiceImpl; @@ -31,6 +33,10 @@ @Autowired DownStorageCageServiceImpl downStorageCageServiceImpl; @Autowired DownGlassTaskServiceImpl downGlassTaskServiceImpl; @Autowired DownGlassInfoServiceImpl downGlassInfoServiceImpl; @Autowired DownStorageCageDetailsServiceImpl downStorageCageDetailsServiceImpl; @Autowired @@ -110,5 +116,27 @@ } @Test public void getMaxSequenceByFlowCardId() { log.info("最大序号"); downGlassInfoServiceImpl.getMaxSequenceByFlowCardId("NG2023005"); } @Test public void updateTaskStateToZero() { log.info("更新状态0"); downGlassTaskServiceImpl.updateTaskStateToZero(3); } @Test public void selectCacheEmpty2() { downStorageCageDetailsService.selectCacheEmpty2(); } }