From dd60bcc7b38c2a19c02a20550a393987fc5a5a27 Mon Sep 17 00:00:00 2001 From: wu <731351411@qq.com> Date: 星期三, 07 八月 2024 16:26:04 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 104 insertions(+), 12 deletions(-) diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java index 3cd3349..c1af805 100644 --- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java +++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java @@ -1,32 +1,55 @@ package com.mes.downglassinfo.service.impl; +import cn.smallbun.screw.core.util.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mes.common.config.Const; +import com.mes.common.utils.RedisUtil; import com.mes.downglassinfo.entity.DownGlassInfo; -import com.mes.downglassinfo.entity.DownGlassTask; +import com.mes.downglassinfo.entity.request.DownGlassInfoRequest; import com.mes.downglassinfo.mapper.DownGlassInfoMapper; import com.mes.downglassinfo.service.DownGlassInfoService; -import com.mes.downglassinfo.service.DownGlassTaskService; +import com.mes.downstorage.entity.DownStorageCageDetails; +import com.mes.downstorage.service.DownStorageCageDetailsService; import com.mes.downworkstation.entity.DownWorkstation; -import com.mes.downworkstation.mapper.DownWorkstationMapper; +import com.mes.downworkstation.entity.dto.DownGlassInfoDTO; import com.mes.downworkstation.service.DownWorkstationService; -import com.mes.downworkstation.service.DownWorkstationTaskService; -import com.mes.tools.WebSocketServer; +import com.mes.glassinfo.entity.GlassInfo; +import com.mes.job.DownLoadCacheGlassTask; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; @Service public class DownGlassInfoServiceImpl extends ServiceImpl<DownGlassInfoMapper, DownGlassInfo> implements DownGlassInfoService { - // 鏍规嵁娴佺▼鍗″彿鏌ヨ鏈�澶у簭鍙� + @Autowired + DownLoadCacheGlassTask downLoadCacheGlassTask; + + @Autowired + DownStorageCageDetailsService downStorageCageDetailsService; + + + @Autowired + DownWorkstationService downWorkstationService; + + @Autowired + RedisUtil redisUtil; + + /** + * 鏍规嵁娴佺▼鍗″彿鏌ヨ鏈�澶у簭鍙� + */ @Override - public Integer getMaxSequenceByFlowCardId(String flowCardId) { + public Integer getMaxSequenceByFlowCardId(String flowCardId, int layer) { LambdaQueryWrapper<DownGlassInfo> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(DownGlassInfo::getFlowCardId, flowCardId) + .eq(DownGlassInfo::getLayer, layer) .select(DownGlassInfo::getSequence) .orderByDesc(DownGlassInfo::getSequence) .last("LIMIT 1"); @@ -35,14 +58,83 @@ return downGlassInfo != null ? downGlassInfo.getSequence() : 0; } - @Override public void insertDownGlassInfo(DownGlassInfo downGlassInfo) { - - - baseMapper.insert(downGlassInfo); } + @Override + public DownGlassInfoDTO queryDownGlassMaxLayer(String flowCardId) { + return baseMapper.queryDownGlassMaxLayer(flowCardId); + } + @Override + public Integer queryMaxSequence(String flowCardId, int layer) { + return baseMapper.queryMaxSequence(flowCardId, layer); + } + + @Override + public List<DownGlassInfoDTO> queryWorkStationIsIn(List<Integer> workList, Boolean isDownload) { + //鎸夌収瑕佹眰鑾峰彇宸茶惤鏋�/鏈惤鏋剁殑鐜荤拑淇℃伅 + return baseMapper.queryWorkStationIsIn(workList, isDownload); + } + + @Override + public List<DownGlassInfoDTO> queryWorkStationFlowCard(List<Integer> workList) { + //鑾峰彇宸茬粦瀹氭祦绋嬪崱鐨勬灦瀛愭湭钀界幓鐠冪殑鏁版嵁淇℃伅 + return baseMapper.queryWorkStationFlowCard(workList); + } + + @Override + public boolean generateOutGlassTask(String glassId) { + //鏇存柊鍗у紡鐞嗙墖绗煎唴鐜荤拑鐘舵�� + downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>() + .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId)); + DownStorageCageDetails details = downStorageCageDetailsService.getOne(new LambdaQueryWrapper<DownStorageCageDetails>() + .eq(DownStorageCageDetails::getGlassId, glassId)); + //鐢熸垚涓嬬墖淇℃伅 + DownGlassInfo downGlassInfo = new DownGlassInfo(); + BeanUtils.copyProperties(details, downGlassInfo); + //鑾峰彇褰撳墠娴佺▼鍗℃渶澶х墖搴� + downGlassInfo.setSequence(this.getMaxSequenceByFlowCardId(details.getFlowCardId(), details.getLayer()) + 1); + this.save(downGlassInfo); + //鐢熸垚浠诲姟淇℃伅 骞跺悜plc鍙戦�佸嚭鐗囦换鍔� + GlassInfo glassInfo = new GlassInfo(); + BeanUtils.copyProperties(details, glassInfo); + return downLoadCacheGlassTask.initDownGlassTask(glassInfo, details.getSlot(), Const.G13_WORK_STATION, 2); + } + + @Override + public String setDownGlassInfoRequest(DownGlassInfoRequest request) { + if (request == null) { + redisUtil.deleteObject("downGlassRequest"); + } else { + redisUtil.setCacheObject("downGlassRequest", request); + } + return "success"; + } + + @Override + public List<DownWorkstation> queryWorkStationIsFull() { + //鏌ヨ鍙互钀芥灦鐨勭幓鐠冧俊鎭笖宸茬粦瀹氭祦绋嬪崱鐨勫伐浣嶄俊鎭� + List<DownWorkstation> list = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getEnableState, Const.SLOT_ON) + .isNotNull(DownWorkstation::getFlowCardId).ne(DownWorkstation::getFlowCardId, "")); + List<DownWorkstation> workstationFull = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(list)) { + //閮芥湁鐜荤拑鐨勫伐浣嶄俊鎭紙鍖呮嫭缁戝畾娴佺▼鍗★級 + List<Integer> workstationList = list.stream().map(DownWorkstation::getWorkstationId).collect(Collectors.toList()); + //鎸夌収绗﹀悎鏉′欢鐨勫伐浣嶈幏鍙栨湭钀芥灦鐨勬祦绋嬪崱鐜荤拑锛屽鏋滆繑鍥炰负绌猴紝鍒欒〃鏄庢墍鏈夐兘宸茶惤鏋跺畬鎴� + List<DownGlassInfoDTO> downGlassInfoDTOList = queryWorkStationIsIn(workstationList, Boolean.FALSE); + //鑾峰彇宸ヤ綅涓婄殑鏈弧鐨勬祦绋嬪崱鍙婂眰鏁� + List<String> flowCardIdList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList()); + //鍙互钀芥灦鐨勭幓鐠冧俊鎭笖宸茬粦瀹氭祦绋嬪崱鐨勬墍鏈夌殑宸ヤ綅 - 鐜荤拑鏈弧娴佺▼鍗″強灞傛暟鐨勫伐浣� = 宸叉弧宸ヤ綅 + workstationFull = list.stream().filter(item -> !flowCardIdList.contains(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); + //鏄惁闇�瑕佸皢宸叉弧鐨勫伐浣嶇疆涓轰笉鍙惤鏋� + List<Integer> workstationIds = workstationFull.stream().map(DownWorkstation::getWorkstationId).collect(Collectors.toList()); + downWorkstationService.update(new LambdaUpdateWrapper<DownWorkstation>().set(DownWorkstation::getEnableState, Const.SLOT_OFF) + .in(DownWorkstation::getWorkstationId, workstationIds)); + + } + return workstationFull; + } } -- Gitblit v1.8.0