UI-Project/src/lang/zh.js
@@ -208,7 +208,8 @@ now:'当前页显示', tit:'条数据', temperingqueries:'钢化查询', specifytempering:'指定钢化', specifytempering:'指定一炉', specifyengineerid:'指定工程', projectnumber:'工程号', layoutnumber:'钢化版图号', numberglasses:'玻璃数量', UI-Project/src/views/Slicecage/slicecage.vue
@@ -1472,11 +1472,15 @@ :data="tableDatagh" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="engineer_id" fixed align="center" :label="$t('searchOrder.projectnumber')" min-width="150"/> <el-table-column prop="tempering_layout_id" fixed align="center" :label="$t('searchOrder.layoutnumber')" min-width="120" /> <el-table-column prop="count" align="center" :label="$t('searchOrder.numberglasses')" min-width="150" /> <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="150"> <el-table-column prop="count2" align="center" :label="$t('总数量')" min-width="150" /> <el-table-column prop="count1" align="center" :label="$t('笼子内数量')" min-width="150" /> <el-table-column prop="count3" align="center" :label="$t('缺少数量')" min-width="150" /> <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="250"> <template #default="scope"> <el-button size="mini" type="text" plain @click="brokee(scope.row)">{{ $t('searchOrder.specifytempering') }}</el-button> <el-button size="mini" type="text" plain @click="brokee(scope.row)">{{ $t('searchOrder.specifyengineerid') }}</el-button> </template> </el-table-column> </el-table> </el-dialog> hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -30,7 +30,7 @@ * A09出片目标位置 d02卧转立 钢化出片 3001 * A10出片目标位置 d05卧转立 人工出片 3002 */ public static final Integer TEMPERING_OUT_TARGET_POSITION = 3002; public static final Integer TEMPERING_OUT_TARGET_POSITION = 3001; public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 3002; /** hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
File was deleted hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
File was deleted hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
File was deleted hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
File was deleted hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -8,8 +8,6 @@ import com.github.yulichang.query.MPJLambdaQueryWrapper; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.service.BigStorageCageDetailsService; import com.mes.common.config.Const; import com.mes.damage.entity.Damage; import com.mes.damage.mapper.DamageMapper; @@ -23,6 +21,7 @@ import com.mes.edgstoragecage.mapper.EdgStorageCageMapper; import com.mes.edgstoragecage.service.EdgStorageCageDetailsService; import com.mes.engineering.entity.Engineering; import com.mes.engineering.mapper.EngineeringMapper; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.mapper.GlassInfoMapper; import com.mes.pp.entity.OptimizeDetail; @@ -59,6 +58,9 @@ UpPattenUsageMapper upPattenUsageMapper; @Autowired EngineeringMapper engineeringMapper; @Autowired OptimizeDetailMapper optimizeDetailMapper; @Autowired @@ -77,9 +79,6 @@ @Autowired EdgGlassTaskInfoService edgGlassTaskInfoService; @Autowired BigStorageCageDetailsService bigStorageCageDetailsService; // // @Override // public boolean identWorn(Map<String, Object> arguments) { @@ -122,16 +121,66 @@ */ @Override public List<Map<String, Object>> selectCutTerritory() { //查询EdgStorageCageDetails最后一张玻璃所属版图 List<UpPattenUsage> upPattenUsage=upPattenUsageMapper.selectJoinList(UpPattenUsage.class, new MPJLambdaWrapper<UpPattenUsage>() .selectAll(UpPattenUsage.class) .distinct() .innerJoin(Engineering.class, on -> on .eq(Engineering::getEngineerId, UpPattenUsage::getEngineeringId)) .innerJoin(GlassInfo.class, on -> on .eq(GlassInfo::getEngineerId, UpPattenUsage::getEngineeringId) .eq(GlassInfo::getPatternSequence,UpPattenUsage::getLayoutSequence)) .leftJoin(EdgStorageCageDetails.class, on -> on .eq(EdgStorageCageDetails::getEngineerId, UpPattenUsage::getEngineeringId) .eq(EdgStorageCageDetails::getGlassId,GlassInfo::getGlassId)) .leftJoin(Damage.class, on -> on .eq(Damage::getEngineerId, UpPattenUsage::getEngineeringId) .eq(Damage::getGlassId,GlassInfo::getGlassId)) .eq(Engineering::getState,1) .orderByDesc(UpPattenUsage::getState) .orderByDesc(UpPattenUsage::getId) .and(wrapper->wrapper.isNotNull(EdgStorageCageDetails::getId).or().isNotNull(Damage::getId)) .orderByDesc(UpPattenUsage::getLayoutSequence) .orderByDesc(GlassInfo::getId) ); if (!upPattenUsage.isEmpty()) { //当前版 UpPattenUsage upPattenUsage1 = upPattenUsage.get(0); //查看当前版是否存在未进笼子或破损的玻璃 List<UpPattenUsage> upPattenUsage2=upPattenUsageMapper.selectJoinList(UpPattenUsage.class, new MPJLambdaWrapper<UpPattenUsage>() .selectAll(UpPattenUsage.class) .distinct() .innerJoin(GlassInfo.class, on -> on .eq(GlassInfo::getEngineerId, UpPattenUsage::getEngineeringId) .eq(GlassInfo::getPatternSequence,UpPattenUsage::getLayoutSequence)) .leftJoin(EdgStorageCageDetails.class, on -> on .eq(EdgStorageCageDetails::getEngineerId, UpPattenUsage::getEngineeringId) .eq(EdgStorageCageDetails::getGlassId,GlassInfo::getGlassId)) .leftJoin(Damage.class, on -> on .eq(Damage::getEngineerId, UpPattenUsage::getEngineeringId) .eq(Damage::getGlassId,GlassInfo::getGlassId)) .eq(UpPattenUsage::getEngineeringId,upPattenUsage.get(0).getEngineeringId()) .eq(UpPattenUsage::getLayoutSequence,upPattenUsage.get(0).getLayoutSequence()) .and(wrapper->wrapper.isNull(EdgStorageCageDetails::getId).or().isNull(Damage::getId)) .orderByDesc(UpPattenUsage::getLayoutSequence) .orderByDesc(GlassInfo::getId) ); //显示下一版 否则显示当前版图 if(upPattenUsage2.isEmpty()){ //剩余版图 List<UpPattenUsage> upPattenUsage3=upPattenUsageMapper.selectJoinList(UpPattenUsage.class, new MPJLambdaWrapper<UpPattenUsage>() .selectAll(UpPattenUsage.class) .distinct() .innerJoin(Engineering.class, on -> on .eq(Engineering::getEngineerId, UpPattenUsage::getEngineeringId)) .eq(Engineering::getState,1) .gt(UpPattenUsage::getLayoutSequence,upPattenUsage1.getLayoutSequence()) .orderByAsc(UpPattenUsage::getLayoutSequence) ); if(!upPattenUsage3.isEmpty()){ //切换成下一版图 upPattenUsage1=upPattenUsage3.get(0); } } List<Map<String, Object>> cutTerritorys=optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class) .selectAll(OptimizeDetail.class) .selectAs(OptimizeLayout::getWidth, "olWidth") @@ -145,7 +194,6 @@ Map<String, EdgStorageCageDetails> edgMaps=baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>() .selectAll(EdgStorageCageDetails.class) .eq(EdgStorageCageDetails::getEngineerId,upPattenUsage1.getEngineeringId()) .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN) ).stream().collect(Collectors.toMap(EdgStorageCageDetails::getGlassId,EdgStorageCageDetails->EdgStorageCageDetails)); Map<String, Damage> damageMaps=damageMapper.selectList(new MPJLambdaQueryWrapper<Damage>() @@ -159,11 +207,11 @@ if(cutTerritory.get("glass_id")==null||"".equals(cutTerritory.get("glass_id"))){ log.info("优化数据中glassId存在空值-----内容:{}",cutTerritorys); return new ArrayList<>(); }else if(edgMaps.get(cutTerritory.get("glass_id"))!=null){ cutTerritory.put("glass_state",edgMaps.get(cutTerritory.get("glass_id")).getState()); }else if(damageMaps.get(cutTerritory.get("glass_id"))!=null){ //log.info("玻璃已破损/拿走-----内容:{}",damageMaps.get(item.get("glass_id"))); cutTerritory.put("glass_state",damageMaps.get(cutTerritory.get("glass_id")).getStatus()); cutTerritory.put("glass_state",damageMaps.get(cutTerritory.get("glass_id")).getType()); }else if(edgMaps.get(cutTerritory.get("glass_id"))!=null){ cutTerritory.put("glass_state",edgMaps.get(cutTerritory.get("glass_id")).getState()); }else{ cutTerritory.put("glass_state",0); } @@ -182,13 +230,16 @@ */ @Override public List<List<Map<String, Object>>> selectCurrentCutTerritory(String current) { //大理片笼进过的玻璃 Map<String, BigStorageCageDetails> mapBigCage=bigStorageCageDetailsService.list( new LambdaQueryWrapper<BigStorageCageDetails>() .eq(BigStorageCageDetails::getEngineerId,current) .gt(BigStorageCageDetails::getState,Const.GLASS_STATE_NEW) ).stream().collect(Collectors.toMap(BigStorageCageDetails::getGlassId,BigStorageCageDetails->BigStorageCageDetails,(V1,V2)->V2));; List<Engineering> engineering=engineeringMapper.selectJoinList(Engineering.class, new MPJLambdaWrapper<Engineering>() .selectAll(Engineering.class) .eq(Engineering::getEngineerId,current) .gt(Engineering::getState,0) ); if(engineering.size()==0){ log.info("当前工程号未领取过:{}",current); return new ArrayList<>(); } //结果 List<Map<String, Object>> resultCutTerritory=new ArrayList<>(); //此工程的所有优化数据 @@ -205,7 +256,6 @@ Map<String, EdgStorageCageDetails> edgMaps=baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>() .selectAll(EdgStorageCageDetails.class) .eq(EdgStorageCageDetails::getEngineerId,current) .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN) ).stream().collect(Collectors.toMap(EdgStorageCageDetails::getGlassId,EdgStorageCageDetails->EdgStorageCageDetails,(V1,V2)->V2)); Map<String, Damage> damageMaps=damageMapper.selectList(new MPJLambdaQueryWrapper<Damage>() @@ -221,10 +271,7 @@ } if(damageMaps.get(item.get("glass_id"))!=null){ //log.info("玻璃已破损/拿走-----内容:{}",damageMaps.get(item.get("glass_id"))); item.put("glass_state",damageMaps.get(item.get("glass_id")).getStatus()); }else if(mapBigCage.get(item.get("glass_id"))!=null){ //进过大理片笼 item.put("glass_state",98); item.put("glass_state",damageMaps.get(item.get("glass_id")).getType()); }else if(edgMaps.get(item.get("glass_id"))!=null){ item.put("glass_state",edgMaps.get(item.get("glass_id")).getState()); }else{ @@ -234,7 +281,16 @@ } Map<String, List<Map<String, Object>>> groupBy=resultCutTerritory.stream().collect(Collectors.groupingBy(item->item.get("stock_id").toString())); // List<List<Map<String, Object>>> Result=groupBy.values().stream().collect(Collectors.toList()); return new ArrayList<>(groupBy.values()); int count=1; List<List<Map<String, Object>>> result=new ArrayList<>(); for (String item : groupBy.keySet()) { String key=count+""; if(key!=null){ result.add(groupBy.get(key)); } count++; } return result; } /** hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -10,8 +10,8 @@ enabled: false 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 mes: threshold: 3 ratio: 10 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; /** @@ -44,4 +45,6 @@ * @param state */ void updateBySlot(@Param(value = "list") List<UpdateBigStorageCageDTO> glassList, @Param(value = "state") int state); List<Map<String, Object>> selectTemperingGlassCount(); } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -390,14 +390,8 @@ @Override public List<Map<String, Object>> selectTemperingGlass() { QueryWrapper<BigStorageCageDetails> wrapper = new QueryWrapper<>(); wrapper.select("engineer_id,tempering_layout_id,count(*) as count") .in("state", Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL) .groupBy("engineer_id,tempering_layout_id") .orderByAsc("engineer_id") .orderByAsc("tempering_layout_id"); List<Map<String, Object>> TemperingGlass = baseMapper.selectMaps(wrapper); return TemperingGlass; List<Map<String, Object>> temperingGlass = baseMapper.selectTemperingGlassCount(); return temperingGlass; } @Override hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -131,7 +131,7 @@ judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address); edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>() .set(EdgGlassTaskInfo::getStatus, Const.EDG_GLASS_SUCCESS).eq(EdgGlassTaskInfo::getGlassId, d01Id)); d01GlassId = d01Id; // d01GlassId = d01Id; } } // 状态为0不操作(D01送片,0不操作,1允许送片),请求字为1, 卧转立未启动 @@ -140,7 +140,7 @@ judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address); edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>() .set(EdgGlassTaskInfo::getStatus, Const.EDG_GLASS_SUCCESS).eq(EdgGlassTaskInfo::getGlassId, d04Id)); d04GlassId = d04Id; // d04GlassId = d04Id; } } Date endDate = new Date(); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -18,7 +18,7 @@ minCount: 20 carWidth: 5000 #大车宽度 slotWidth: 5000 #大车宽度 inCarMaxSize: 1 #进片大车最大存放玻璃数量 inCarMaxSize: 0 #进片大车最大存放玻璃数量 outCarMaxSize: 2 #出片大车最大存放玻璃数量 glassGap: 350 #玻璃间距 xMaxSize: 2800 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -89,4 +89,13 @@ ) </where> </update> <select id="selectTemperingGlassCount" resultType="java.util.Map"> select a.engineer_id,a.tempering_layout_id,count2,count1,count2-count1 as count3 from (select engineer_id,tempering_layout_id,count(*) as count1 from big_storage_cage_details where state=100 group by engineer_id,tempering_layout_id) as a left join (select engineer_id,tempering_layout_id,count(*) as count2 from glass_info group by engineer_id,tempering_layout_id) as b on a.engineer_id=b.engineer_id and a.tempering_layout_id=b.tempering_layout_id order by a.engineer_id,a.tempering_layout_id </select> </mapper> hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java
@@ -46,10 +46,12 @@ @PostMapping("/updateTemperingState") //钢化后显示出炉的版图信息 public Result <Integer> updateTemperingState(@RequestBody Damage damage) { if(damage.getStatus()>5) { damage.setType(damage.getStatus()); damage.setStatus(1); damageService.insertDamage(damage); } TemperingGlassInfo temperingGlassInfo=new TemperingGlassInfo(); temperingGlassInfo.setState(damage.getStatus()); temperingGlassInfo.setState(damage.getType()); temperingGlassInfo.setGlassId(damage.getGlassId()); int result=temperingGlassInfoService.updateTemperingState(temperingGlassInfo); return Result.build(200, "破损成功", result); hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -297,6 +297,10 @@ //将任务插入理片笼详情表 DownStorageCageDetails downStorageCageDetails = new DownStorageCageDetails(); BeanUtils.copyProperties(glassInfo, downStorageCageDetails); //当需要合并落架时不绑定层号 if(glassInfo.getCombine()==0){ downStorageCageDetails.setLayer(null); } downStorageCageDetails.setState(Const.GLASS_STATE_IN); downStorageCageDetails.setSlot(nearestEmpty.getSlot()); downStorageCageDetails.setDeviceId(nearestEmpty.getDeviceId()); @@ -321,6 +325,10 @@ if (StringUtils.isNotBlank(glassId)) { GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)); BeanUtils.copyProperties(glassInfo, cageDetails); //当需要合并落架时不绑定层号 if(glassInfo.getCombine()==0){ cageDetails.setLayer(null); } //获取当前笼子空格信息 DownStorageCage empty = downStorageCageService.selectCacheEmpty(Integer.parseInt(currentSlot), Boolean.TRUE); cageDetails.setSlot(empty.getSlot()); @@ -623,9 +631,13 @@ return Boolean.FALSE; } } else { DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>() .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer())); endCell = workstation.getWorkstationId(); if (downStorageCageDetails.getWidth() > maxWidth || downStorageCageDetails.getHeight() > maxHeight) { endCell = Const.G13_WORK_STATION; } else { DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>() .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer())); endCell = workstation.getWorkstationId(); } } //更新落架玻璃数量 if (endCell == Const.G13_WORK_STATION) {