zhoushihao
2024-07-29 726f5da27afc22ea1d8bd5fe730a0722ab8a97c9
Merge remote-tracking branch 'origin/master'
17个文件已修改
273 ■■■■ 已修改文件
UI-Project/config.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/zh.js 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/utils/constants.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/PurchaseReturn/purchaseReturn.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/PurchaseReturn/purchaseStorage.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/ReportWork/reportWork.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Returns/returns.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Slicecage/slicecage.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/config.js
@@ -1,7 +1,7 @@
export default {
//  serverUrl: "10.153.19.150:88/api",
 serverUrl: "192.168.1.199:88/api",
  // serverUrl2: "10.153.19.150:88"
  serverUrl2: "192.168.1.199:88"
 serverUrl: "10.153.19.150:88/api",
//  serverUrl: "192.168.1.199:88/api",
  serverUrl2: "10.153.19.150:88"
  // serverUrl2: "192.168.1.199:88"
  //serverUrl:"res.abeim.cn"
}
UI-Project/src/lang/zh.js
@@ -419,5 +419,42 @@
        allstatus: '全部入库状态',
        completedquantity: '完成数量',
        scrapquantity: '报废数量',
    }
    },
    reportmanage:{
        productiontime :'生产时间',
        starttime :'开始时间',
        endtime :'结束时间',
        all :'全部',
        completed :'完工',
        broke :'破损',
        takeout :'拿走',
        dreportwork :'未报工',
        pendingwork :'待报工',
        reportwork :'已报工',
        incise :'切割',
        edging :'磨边',
        steel :'钢化',
        inquire :'查询',
        signingwork :'报工',
        reporteam :'报工班组',
        reportingequipment :'报工设备',
        line :'线路',
        process :'工序',
        glassID :'玻璃ID',
        projectnumber :'工程号',
        layoutID :'钢化版图ID',
        productiontime :'生产时间',
        type :'类型',
        state :'状态',
        processcards :'流程卡',
        number :'序号',
        layer :'层',
        typebreakage :'破损类型',
        causebreakage :'破损原因',
        responsibleprocess :'责任工序',
        responsiblepersonnel :'责任人员',
        responsibleteam :'责任班组',
        responsibleequipment :'责任设备',
        remark :'备注',
    },
}
UI-Project/src/utils/constants.js
@@ -1,3 +1,3 @@
export const WebSocketHost = "192.168.1.199";
// export const WebSocketHost = "10.153.19.150";
// export const WebSocketHost = "192.168.1.199";
export const WebSocketHost = "10.153.19.150";
export const host = "88";
UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -128,13 +128,13 @@
    adjustedHeight = rect.height * 0.16;  
    adjustedWidtha = rect.width;  
    adjustedHeighta = rect.height;  
    newX = 5190 - (rect.yCoordinate + rect.width);
    // newX = 5190 - (rect.yCoordinate + rect.width);
  } else {  
    adjustedWidth = rect.height * 0.24;  
    adjustedHeight = rect.width * 0.16;  
    adjustedWidtha = rect.height;  
    adjustedHeighta = rect.width;  
    newX = 5190 - (rect.yCoordinate + rect.height);
    // newX = 5190 - (rect.yCoordinate + rect.height);
  }  
  return {  
        ...rect, // 复制原始对象的其他属性  
@@ -163,11 +163,11 @@
function getRectColora(state) {  
  switch (state) {  
    case 0:  
      return '#d1edc4';
      return '#7AC5CD';
    case 1:  
      return '#E6E6FA';
      return '#95d475';
    case -1:  
      return '#dedfe0';
      return '#CDAF95';
    case 5:  
      return '#911005';  
  }
@@ -175,9 +175,9 @@
function getRectColorb(state) {  
  switch (state) {  
    case 3:  
      return '#f8e3c5';
      return '#eebe77';
    case 4:  
      return '#F0F8FF';
      return '#CD6090';
    case 5:  
      return '#911005';  
  }  
UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
@@ -43,13 +43,13 @@
    adjustedHeight = rect.height * 0.16;  
    adjustedWidtha = rect.width;  
    adjustedHeighta = rect.height;  
    newX = 5190 - (rect.yCoordinate + rect.width);
    // newX = 5190 - (rect.yCoordinate + rect.width);
  } else {  
    adjustedWidth = rect.height * 0.24;  
    adjustedHeight = rect.width * 0.16;  
    adjustedWidtha = rect.height;  
    adjustedHeighta = rect.width;  
    newX = 5190 - (rect.yCoordinate + rect.height);
    // newX = 5190 - (rect.yCoordinate + rect.height);
  }  
  return {  
    ...rect, 
@@ -73,9 +73,9 @@
function getRectColora(state) {  
  switch (state) {  
    case 3:  
      return '#f8e3c5';
      return '#eebe77';
    case 4:  
      return '#F0F8FF';
      return '#CD6090';
    case 5:  
      return '#911005';  
  }  
UI-Project/src/views/ReportWork/reportWork.vue
@@ -1,29 +1,33 @@
<template>
  <div style="height: 600px;">
    <span class="demonstration">生产时间</span>
    <el-date-picker v-model="timeRange" type="daterange" format="YYYY/MM/DD" value-format="YYYY-MM-DD"
      start-placeholder="开始时间" end-placeholder="结束时间" :default-time="defaultTime" />
    <el-select v-model="report.type" placeholder="清选择类型">
    <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;">
    <span style="margin-left: 10px;" class="demonstration">{{ $t('reportmanage.productiontime') }}</span>
    <el-date-picker style="margin-left: 10px;"  v-model="timeRange" type="daterange" format="YYYY/MM/DD" value-format="YYYY-MM-DD"
      :start-placeholder="$t('reportmanage.starttime')" :end-placeholder="$t('reportmanage.endtime')" :default-time="defaultTime" />
    <el-select v-model="report.type" placeholder="清选择类型" style="margin-left: 10px;" >
      <el-option label="全部" value="0"></el-option>
      <el-option label="完工" value="1"></el-option>
      <el-option label="破损" value="2"></el-option>
      <el-option label="拿走" value="3"></el-option>
    </el-select>
    <el-select v-model="report.status" placeholder="清选择状态">
    <el-select v-model="report.status" placeholder="清选择状态" style="margin-left: 10px;" >
      <el-option label="全部" value="0"></el-option>
      <el-option label="未报工" value="1"></el-option>
      <el-option label="待报工" value="2"></el-option>
      <el-option label="已报工" value="3"></el-option>
    </el-select>
    <el-select v-model="report.workingProcedure" placeholder="清选择工序">
    <el-select v-model="report.workingProcedure" placeholder="清选择工序" style="margin-left: 10px;" >
      <el-option label="全部" value="0"></el-option>
      <el-option label="切割" value="1"></el-option>
      <el-option label="磨边" value="2"></el-option>
      <el-option label="钢化" value="3"></el-option>
    </el-select>
    <el-button type="primary" @click="selectReportData()">查询</el-button>
    <el-button type="success">报工</el-button>
    <el-table height="100%" ref="table" :data="reportData"
    <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">查询</el-button>
    <el-button type="success" style="margin-left: 10px;" >报工</el-button>
  </div>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
    <el-table height="550" ref="table" :data="reportData"
      :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
      <el-table-column prop="teamsGroupsName" align="center" label="报工班组" min-width="120" />
      <el-table-column prop="deviceName" align="center" label="报工设备" min-width="120" />
@@ -47,6 +51,8 @@
      <el-table-column prop="remark" align="center" label="备注" min-width="120" />
    </el-table>
  </div>
    </el-card>
  </div>
</template>
<script setup>
import { Delete, Upload } from '@element-plus/icons-vue'
UI-Project/src/views/Returns/returns.vue
@@ -637,7 +637,6 @@
  }  
};
</script>
<template>
  <div>
    <div id="dotClass">
UI-Project/src/views/Slicecage/slicecage.vue
@@ -176,7 +176,11 @@
      return 9;
    });
 
 function cleanUp() {
    console.log('执行清理操作');
}
// 假设我们每2分钟执行一次清理
setInterval(cleanUp, 2 * 60 * 1000);
 
const getTableRow = (row,type) =>{
  switch (type) {
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
@@ -30,7 +30,7 @@
    public List<TemperingGlassInfo> selectWaitingGlass() {
        //获取等待进炉中的玻璃信息
        QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
        wrapper.select("Top 1 *").eq("state",1);
        wrapper.select("Top 1 *").in("state",1,0);
        TemperingGlassInfo glass=temperingMapper.selectOne(wrapper);
        if(glass!=null) {
            QueryWrapper<TemperingGlassInfo> glassinfo = new QueryWrapper<>();
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
@@ -63,17 +63,20 @@
    @PostMapping("/edgStorageCageGlass")
    @ResponseBody
    public Result edgStorageCageGlass(@RequestBody EdgStorageCageDetails edgStorageCageDetails,int edgStorageCageId) {
        String isSucess=edgStorageCageService.updateEdgStorageCageDetails(edgStorageCageId,edgStorageCageDetails)?"成功":"失败";
        return Result.build(200,"【清除/更换/绑定】"+isSucess,1);
    }
    @ApiOperation("磨边模块汇报玻璃状态   功能:对笼内栅格玻璃进行【破损/拿走】  ")
    @PostMapping("/edgReportStatus")
    @ResponseBody
    public Result edgReportStatus(@RequestBody Map<String, String> arguments) {
        String edgStorageCageDetailsId=arguments.get("glassId");
        int controlsId=Integer.valueOf(arguments.get("controlsId"));
        String isSucess=edgStorageCageDetailsService.identWorn(edgStorageCageDetailsId,controlsId)?"成功":"失败";
        /*arguments.put("line","1002");
        arguments.put("machine","卧式理片");*/
        String isSucess=edgStorageCageDetailsService.identWorn(arguments)?"成功":"失败";
        return Result.build(200,"【破损/拿走】"+isSucess,1);
    }
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
@@ -18,11 +18,10 @@
    /**
     * 识别 破损/拿走
     * @param glassId
     * @param ControlsId
     * @param arguments
     * @return
     */
    boolean identWorn(String glassId,int ControlsId);
    boolean identWorn(Map<String, String> arguments);
    /**
     * 获取 切割当前版图
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
@@ -25,7 +25,7 @@
     */
    EdgStorageCage selectNearestEmpty(int currentSlot, boolean flag);
    List<EdgStorageCage> selectCacheEmpty();
    /**
     * 查询笼内出片顺序详情
     * @return
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -8,11 +8,15 @@
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.service.DamageService;
import com.mes.edgstoragecage.entity.EdgStorageCage;
import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.pp.entity.OptimizeDetail;
import com.mes.pp.entity.OptimizeLayout;
import com.mes.pp.mapper.OptimizeDetailMapper;
@@ -51,27 +55,65 @@
    @Autowired
    EdgStorageCageMapper edgStorageCageMapper;
    @Autowired
    GlassInfoMapper glassInfoMapper;
    @Autowired
    TaskCacheService taskCacheService;
    @Autowired
    DamageService damageService;
    /**
     * 识别   拿走:200/破损:201
     *
     * @param glassId
     * @param ControlsId
     * @param arguments
     * @return
     */
    @Override
    public boolean identWorn(String glassId, int ControlsId) {
        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId, glassId));
    public boolean identWorn(Map<String, String> arguments) {
        String glassId=arguments.get("glassId");
        int controlsId=arguments.get("controlsId").isEmpty()?0:Integer.parseInt(arguments.get("controlsId"));
        int line=arguments.get("line").isEmpty()?0:Integer.parseInt(arguments.get("line"));
        String machine=arguments.get("machine");
        if(controlsId==0||line==0||machine==null||glassId==null||glassId.isEmpty()){
            log.info("前端传递数据不全:{}",arguments);
            return false;
        }
        int state;
        if(controlsId==200||controlsId==201){
            state=controlsId==200?3:2;
        }else if (controlsId==300||controlsId==301){
            state=controlsId==300?3:2;
        }else{
            log.info("前端传递状态不合法:{}",arguments);
            return false;
        }
        List<GlassInfo> GlassInfos = glassInfoMapper.selectList(new MPJLambdaQueryWrapper<GlassInfo>()
                .selectAll(GlassInfo.class)
                .eq(GlassInfo::getGlassId, glassId));
        if (GlassInfos.size() == 1) {
            Damage damage =new Damage();
            damage.setGlassId(glassId);
            damage.setLine(line);
            damage.setWorkingProcedure(machine);
            damage.setRemark("");
            damage.setStatus(state);//201破损,200拿走   =》破损表 2破损  3 拿走
            damageService.insertDamage(damage);
        }else{
            return false;
        }
        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
                .selectAll(EdgStorageCageDetails.class)
                .eq(EdgStorageCageDetails::getGlassId, glassId));
        if (edgStorageCageDetails.size() == 1) {
            EdgStorageCageDetails item = edgStorageCageDetails.get(0);
            item.setState(ControlsId);
            item.setState(controlsId);
            baseMapper.update(item, new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId, glassId));
            return true;
        }
//            Sql版本
//        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
//        if (edgStorageCageDetails.size() == 1) {
@@ -80,7 +122,7 @@
//            baseMapper.update(edgStorageCageDetails.get(0), new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
//            return true;
//        }
        return false;
        return true;
    }
    /**
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
@@ -5,17 +5,21 @@
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.service.DamageService;
import com.mes.edgstoragecage.entity.EdgStorageCage;
import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
import com.mes.edgstoragecage.service.EdgStorageCageService;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -31,10 +35,13 @@
@Service
public class EdgStorageCageServiceImpl extends MPJBaseServiceImpl<EdgStorageCageMapper, EdgStorageCage> implements EdgStorageCageService {
    @Resource
    @Autowired
    EdgStorageCageDetailsMapper edgStorageCageDetailsMapper;
    @Resource
    @Autowired
    UpPattenUsageMapper upPattenUsageMapper;
    @Autowired
    DamageService damageService;
    @Override
    public EdgStorageCage selectNearestEmpty(int currentSlot, boolean flag) {
@@ -44,7 +51,6 @@
                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
                        .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN))
                .isNull(EdgStorageCageDetails::getSlot)
                .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
                .last("order by abs(t.slot - " + currentSlot + ")  asc limit 2")
        );
        if (flag && CollectionUtil.isNotEmpty(emptyList)) {
@@ -54,6 +60,23 @@
            return null;
        }
        return emptyList.get(0);
    }
    /**
     * 查询笼内空格
     *
     * @return
     */
    @Override
    public List<EdgStorageCage> selectCacheEmpty() {
        return baseMapper.selectJoinList(EdgStorageCage.class, new MPJLambdaWrapper<EdgStorageCage>()
                .selectAll(EdgStorageCage.class)
                .leftJoin(EdgStorageCageDetails.class, on -> on
                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
                        .eq(EdgStorageCageDetails::getState, "100"))
                .isNull(EdgStorageCageDetails::getSlot)
                .last("order by abs(t.slot - 4)  asc")
        );
    }
    /**
@@ -134,6 +157,12 @@
            if (result != null) {
                result.setSlot(0);
                result.setState(201);
                Damage damage =new Damage();
                damage.setGlassId(edgStorageCageDetails.getGlassId());
                damage.setLine(1002);
                damage.setWorkingProcedure("卧式理片");
                damage.setStatus(2);
                damageService.insertDamage(damage);
                edgStorageCageDetailsMapper.updateById(result);
            }
            //添加
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
@@ -51,8 +51,12 @@
    @ApiOperation("识别操作:   破损/拿走     参数(ID,功能[200:拿走,201:破损])")
    @PostMapping("/identControls")
    @ResponseBody
    public Result identControls(@RequestParam(name = "identId", required = false) String identId,@RequestParam(name = "controlsId", required = false) int controlsId) {
        boolean issucess = edgStorageCageDetailsService.identWorn(identId,controlsId);
    public Result identControls(@RequestBody Map<String, String> arguments) {
       /* arguments.put("glassId","玻璃ID");
        arguments.put("controlsId","功能号[200拿走/201破损]");*/
        /*arguments.put("line","1001");
        arguments.put("machine","识别");*/
        boolean issucess = edgStorageCageDetailsService.identWorn(arguments);
        return Result.build(200,"成功",issucess);
    }
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
@@ -3,6 +3,10 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.service.DamageService;
import com.mes.edgstoragecage.entity.EdgStorageCage;
import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
import com.mes.glassinfo.entity.GlassInfo;
@@ -10,6 +14,7 @@
import com.mes.taskcache.entity.TaskCache;
import com.mes.taskcache.mapper.TaskCacheMapper;
import com.mes.taskcache.service.TaskCacheService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -26,6 +31,7 @@
 * @author zhoush
 * @since 2024-04-07
 */
@Slf4j
@Service
public class TaskCacheServiceImpl extends ServiceImpl<TaskCacheMapper, TaskCache> implements TaskCacheService {
@@ -34,6 +40,8 @@
    @Autowired
    GlassInfoMapper glassInfoMapper;
    /**
     * 添加理片笼任务
     * @param taskCache
@@ -61,10 +69,19 @@
        int serialNumber=1;
        for(TaskCache taskCache1:taskCache){
            Map<String,Object> map=new HashMap<>();
            GlassInfo glassInfo=glassInfoMapper.selectOne(new MPJLambdaWrapper<GlassInfo>()
//            GlassInfo glassInfo=glassInfoMapper.selectOne(new MPJLambdaWrapper<GlassInfo>()
//                    .selectAll(GlassInfo.class)
//                    .eq(GlassInfo::getGlassId,taskCache1.getGlassId()));
            List<GlassInfo> glassInfos=glassInfoMapper.selectJoinList(GlassInfo.class, new MPJLambdaWrapper<GlassInfo>()
                    .selectAll(GlassInfo.class)
                    .eq(GlassInfo::getGlassId,taskCache1.getGlassId()));
            if(glassInfo!=null){
                    .innerJoin(EdgStorageCageDetails.class, on -> on
                            .eq(EdgStorageCageDetails::getGlassId, GlassInfo::getGlassId)
                            .eq(EdgStorageCageDetails::getEngineerId, GlassInfo::getEngineerId))
                    .eq(GlassInfo::getGlassId,taskCache1.getGlassId())
                    .eq(EdgStorageCageDetails::getState,Const.GLASS_STATE_IN)
            );
            if(glassInfos.size()==1){
                GlassInfo glassInfo=glassInfos.get(0);
                map.put("Line",line);//线路   2001  1线, 2002 2线
                map.put("Width",glassInfo.getWidth());//宽
                map.put("Height",glassInfo.getHeight());//高
@@ -76,6 +93,9 @@
                map.put("FilmsId",glassInfo.getFilmsid());//膜系
                map.put("SerialNumber",serialNumber);//出片顺序
                result.add(map);
            }else if(glassInfos.size()>1){
                log.info("数据不符合逻辑--磨边队列glassId重复:",glassInfos);
                return new ArrayList<>();
            }
            serialNumber++;
        }
@@ -151,4 +171,5 @@
    }
}
hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -15,6 +15,7 @@
import com.mes.pp.mapper.OptimizeDetailMapper;
import com.mes.taskcache.entity.TaskCache;
import com.mes.taskcache.mapper.TaskCacheMapper;
import com.mes.taskcache.service.TaskCacheService;
import com.mes.taskcache.service.impl.TaskCacheServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
@@ -25,6 +26,7 @@
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -53,6 +55,9 @@
    GlassInfoService glassInfoService;
    @Autowired
    CacheGlassTask cacheGlassTask;
    @Autowired
    TaskCacheService taskCacheService;
    @Test
    public void testFindPath() {
@@ -132,6 +137,17 @@
    }
    @Test
    public void testidentWorn() {
        Map<String, String> arguments=new HashMap<>();
        arguments.put("glassId","P24060403|3|6");//玻璃ID
        arguments.put("controlsId","300");        //拿走:200/破损:201
        arguments.put("line","2001");             //线路:
        arguments.put("machine","冷加工");           //设备名称:
        edgStorageCageDetailsService.identWorn(arguments);
        log.info("识别台【破损/拿走】:{}", 1);
    }
    @Test
    public void testPpOptimizeDetail() {
        List<OptimizeDetail> optimizeDetail = optimizeDetailMapper.selectList(new QueryWrapper<OptimizeDetail>()
                .eq("project_no", "P24032204")
@@ -163,4 +179,11 @@
        log.info("出片任务:{}", Arrays.asList(edgStorageCageDetails));
    }
    @Test
    public void testedgTask() {
        List<Map<String,Object>> EdgTasks = taskCacheService.selectEdgInfo("2001");
        log.info("磨边任务:{}", Arrays.asList(EdgTasks));
    }
}