1、大理片笼新增复位按钮:清除笼内状态为0的玻璃数据,并将格子尺寸恢复到初始状态。
2、历史任务按钮:按照查询条件查询理片笼信息历史任务
3、fixbug:卧式理片笼没有玻璃时,仅恢复格子的尺寸
4、fixbug:中空出片顺序错乱,当数量小于总层数时,增加是否同一对玻璃的判断,避免少于总层数出片玻璃不是一对情况的发生
5、向前端推送上片的工位信息
12个文件已修改
2个文件已添加
214 ■■■■ 已修改文件
hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/HollowBigStorageCageBaseInfo.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/controller/BigStorageCageHistoryTaskController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/entity/request/BigStorageCageHistoryRequest.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/BigStorageCageHistoryTaskService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/HollowBigStorageCageDetails.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowqueue/entity/HollowGlassQueueInfo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/HollowBigStorageCageBaseInfo.java
@@ -64,7 +64,11 @@
    /**
     * 格子号
     */
    @ApiModelProperty(value = "玻璃id")
    @ApiModelProperty(value = "是否配对")
    private Integer isPair;
    /**
     * /*中空顺序
     */
    @ApiModelProperty(value = "中空顺序")
    private Integer hollowSequence;
}
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskServiceImpl.java
@@ -1,5 +1,6 @@
package com.mes.opctask.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.mes.common.config.Const;
@@ -125,7 +126,9 @@
        //获取笼内的详情数据
        List<EdgSlotRemainVO> edgSlotRemainVOS = edgStorageCageDetailsService.querySlotRemainWidth(cellLength, glassGap);
        //按照查询结果对笼内现有玻璃的格子尺寸进行更新
        edgStorageCageService.resetSlotRemainWidth(edgSlotRemainVOS);
        if (CollectionUtil.isNotEmpty(edgSlotRemainVOS)) {
            edgStorageCageService.resetSlotRemainWidth(edgSlotRemainVOS);
        }
        return Boolean.TRUE;
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
@@ -1,6 +1,5 @@
package com.mes.bigstorage.controller;
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.dto.BigStorageAndDetailsDTO;
import com.mes.bigstorage.entity.vo.BigStorageDetailsQueryVO;
import com.mes.bigstorage.service.BigStorageCageService;
@@ -40,5 +39,11 @@
    public Result<List<BigStorageAndDetailsDTO>> querybigStorageCageDetail(@RequestBody BigStorageDetailsQueryVO query) {
        return Result.build(200, "查询成功", bigStorageCageService.querybigStorageCageDetail(query));
    }
    @ApiOperation("复位:重置理片笼基础信息1清除笼内状态为0的脏数据、2将空格子的尺寸置为初始尺寸")
    @PostMapping("/resetCage")
    public Result<Boolean> resetCage() {
        return Result.build(200, "查询成功", bigStorageCageService.resetCage());
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
@@ -44,5 +44,7 @@
    List<BigStorageSummaryDTO> selectBigStorageSummary();
    Boolean resetCage();
//    List<Integer> queryFreeDeviceByNotUsed(double thickness);
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -2,6 +2,7 @@
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.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -311,6 +312,14 @@
        return baseMapper.selectBigStorageSummary();
    }
    @Override
    public Boolean resetCage() {
        bigStorageCageDetailsMapper.delete(Wrappers.<BigStorageCageDetails>lambdaQuery().eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW));
        this.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth)
                .notInSql(BigStorageCage::getSlot, "select distinct slot from big_storage_cage_details where state in ( 100, 102, 103, 104)"));
        return Boolean.TRUE;
    }
//    @Override
//    public List<Integer> queryFreeDeviceByNotUsed(double thickness) {
//        return baseMapper.queryFreeDeviceByNotUsed(thickness);
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/controller/BigStorageCageHistoryTaskController.java
New file
@@ -0,0 +1,35 @@
package com.mes.bigstoragecagetask.controller;
import com.mes.bigstoragecagetask.entity.BigStorageCageHistoryTask;
import com.mes.bigstoragecagetask.entity.request.BigStorageCageHistoryRequest;
import com.mes.bigstoragecagetask.service.BigStorageCageHistoryTaskService;
import com.mes.utils.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @Author : zhoush
 * @Date: 2025/3/11 8:43
 * @Description:
 */
@Api(tags = "理片笼信息历史任务")
@RestController
@RequestMapping("/bigStorageCageHistoryTask")
public class BigStorageCageHistoryTaskController {
    @Resource
    BigStorageCageHistoryTaskService bigStorageCageHistoryTaskService;
    @ApiOperation("按照查询条件查询理片笼信息历史任务")
    @PostMapping("/queryBigStorageCageHistoryTask")
    public Result<List<BigStorageCageHistoryTask>> queryBigStorageCageHistoryTask(@RequestBody BigStorageCageHistoryRequest request) {
        return Result.build(200, "查询成功", bigStorageCageHistoryTaskService.queryBigStorageCageHistoryTask(request));
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/entity/request/BigStorageCageHistoryRequest.java
New file
@@ -0,0 +1,61 @@
package com.mes.bigstoragecagetask.entity.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
 * @Author : zhoush
 * @Date: 2025/3/11 8:46
 * @Description:
 */
@Data
public class BigStorageCageHistoryRequest {
    /**
     * 玻璃id
     */
    @ApiModelProperty(value = "玻璃id", position = 1)
    private String glassId;
    /**
     * 起始格子
     */
    @ApiModelProperty(value = "起始格子", position = 2)
    private Integer startSlot;
    /**
     * 目标格子
     */
    @ApiModelProperty(value = "目标格子", position = 3)
    private Integer targetSlot;
    /**
     * 任务状态
     */
    @ApiModelProperty(value = "任务状态 0 开始 2完成 3破损 4未上车", position = 4)
    private List<Integer> taskStateList;
    /**
     * 任务类型
     */
    @ApiModelProperty(value = "任务类型 1进片 2出片 3调度", position = 5)
    private List<Integer>  taskTypeList;
    /**
     * 开始时间
     */
    @ApiModelProperty(value = "开始时间", position = 6)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date beginDate;
    /**
     * 结束时间
     */
    @ApiModelProperty(value = "结束时间", position = 7)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endDate;
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/BigStorageCageHistoryTaskService.java
@@ -3,6 +3,9 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.bigstoragecagetask.entity.BigStorageCageHistoryTask;
import com.mes.bigstoragecagetask.entity.request.BigStorageCageHistoryRequest;
import java.util.List;
/**
 * (BigStorageCageHistoryTask)表服务接口
@@ -12,5 +15,6 @@
 */
public interface BigStorageCageHistoryTaskService extends IService<BigStorageCageHistoryTask> {
    List<BigStorageCageHistoryTask> queryBigStorageCageHistoryTask(BigStorageCageHistoryRequest request);
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java
@@ -1,11 +1,18 @@
package com.mes.bigstoragecagetask.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.smallbun.screw.core.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.bigstoragecagetask.entity.BigStorageCageHistoryTask;
import com.mes.bigstoragecagetask.entity.request.BigStorageCageHistoryRequest;
import com.mes.bigstoragecagetask.mapper.BigStorageCageHistoryTaskMapper;
import com.mes.bigstoragecagetask.service.BigStorageCageHistoryTaskService;
import com.mes.tools.DateUtil;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * (BigStorageCageHistoryTask)表服务实现类
@@ -16,5 +23,24 @@
@Service
public class BigStorageCageHistoryTaskServiceImpl extends ServiceImpl<BigStorageCageHistoryTaskMapper, BigStorageCageHistoryTask> implements BigStorageCageHistoryTaskService {
    @Override
    public List<BigStorageCageHistoryTask> queryBigStorageCageHistoryTask(BigStorageCageHistoryRequest request) {
        if (null == request) {
            request = new BigStorageCageHistoryRequest();
        }
        if (null == request.getBeginDate()) {
            request.setBeginDate(DateUtil.getBeginDate());
            request.setEndDate(DateUtil.getEndDate());
        }
        LambdaQueryWrapper<BigStorageCageHistoryTask> wrapper = new LambdaQueryWrapper<BigStorageCageHistoryTask>()
                .like(StringUtils.isBlank(request.getGlassId()), BigStorageCageHistoryTask::getGlassId, request.getGlassId())
                .eq(request.getStartSlot() !=0, BigStorageCageHistoryTask::getStartSlot, request.getStartSlot())
                .eq(request.getTargetSlot() !=0, BigStorageCageHistoryTask::getTargetSlot, request.getTargetSlot())
                .in(CollectionUtil.isNotEmpty(request.getTaskStateList()) , BigStorageCageHistoryTask::getTaskState, request.getTaskStateList())
                .in(CollectionUtil.isNotEmpty(request.getTaskTypeList()) , BigStorageCageHistoryTask::getTaskType, request.getTaskTypeList())
                .between(BigStorageCageHistoryTask::getCreateTime, request.getBeginDate(), request.getEndDate())
                .orderByDesc(BigStorageCageHistoryTask::getCreateTime);
        return this.list(wrapper);
    }
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
@@ -209,7 +209,7 @@
                    .in(UpPattenUsage::getId, ids)
                    .set(UpPattenUsage::getState, Const.LOAD_RAW_GLASS_SUCCESS));
        }
        //todo:任务表数据情况
        //任务表数据情况
        task.setTaskRunning(0);
        task.setTotalCount(0);
        task.setRawGlassWidth(0);
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -1,13 +1,18 @@
package com.mes.job;
import cn.hutool.json.JSONObject;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.common.S7object;
import com.mes.common.config.Const;
import com.mes.device.PlcParameterObject;
import com.mes.engineering.entity.Engineering;
import com.mes.engineering.service.EngineeringService;
import com.mes.opctask.entity.LoadGlassDeviceTask;
import com.mes.opctask.service.LoadGlassDeviceTaskService;
import com.mes.pp.service.OptimizeProjectService;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.rawglassstation.entity.RawGlassStorageStation;
import com.mes.tools.DateUtil;
import com.mes.tools.WebSocketServer;
import com.mes.uppattenusage.entity.UpPattenUsage;
@@ -24,6 +29,7 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author SNG-010
@@ -44,6 +50,8 @@
    RedisUtil redisUtil;
    @Resource
    private LoadGlassDeviceTaskService loadGlassDeviceTaskService;
    @Resource
    private RawGlassStorageDetailsService rawGlassStorageDetailsService;
    PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
@@ -100,7 +108,7 @@
        }
    }
//    @Scheduled(fixedDelay = 300)
    //    @Scheduled(fixedDelay = 300)
    public void plcLoadGlassReport() {
        //获取是否有汇报
        String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
@@ -134,7 +142,7 @@
            JSONObject jsonObject = new JSONObject();
            //正在进行的任务
            List<UpPattenUsage> upPattenUsages = upPattenUsageService.prioritylist();
            if(upPattenUsages!=null){
            if (upPattenUsages != null) {
                jsonObject.append("prioritylist", upPattenUsages);
            }
            //查询1号线的任务
@@ -161,9 +169,18 @@
            jsonObject.append("LoadTwoervice", LoadTwoState.getInkageState());
            //工位信息
            List<UpWorkstation> upWorkstations = upWorkstationService.list();
            jsonObject.append("list", upWorkstations);
            MPJLambdaWrapper<RawGlassStorageDetails> wrapper = new MPJLambdaWrapper<>();
            wrapper.select(RawGlassStorageStation::getSlot)
                    .select("ifnull(remain_quantity, 0) as remain_quantity")
                    .rightJoin(RawGlassStorageStation.class, on -> on.eq(RawGlassStorageStation::getSlot, RawGlassStorageDetails::getSlot)
                            .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN))
                    .in(RawGlassStorageStation::getDeviceId, 5, 6)
                    .orderByAsc(RawGlassStorageStation::getSlot);
            List<RawGlassStorageDetails> rawGlassStorageDetailList = rawGlassStorageDetailsService.list(wrapper);
            List<RawGlassStorageDetails> stationOneList = rawGlassStorageDetailList.stream().filter(item -> item.getDeviceId() == 5).collect(Collectors.toList());
            List<RawGlassStorageDetails> stationTwoList = rawGlassStorageDetailList.stream().filter(item -> item.getDeviceId() == 6).collect(Collectors.toList());
            jsonObject.append("stationOne", stationOneList);
            jsonObject.append("stationTwo", stationTwoList);
            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass");
            if (sendwServer != null) {
@@ -200,11 +217,11 @@
        }
    }
//    @Scheduled(fixedDelay = 5000)
    //    @Scheduled(fixedDelay = 5000)
    public void loadGlassStatus() {
        JSONObject jsonObject = new JSONObject();
        //正在进行的任务
        String inkageStatus =plcParameterObject.getPlcParameter("InkageStatus").getValue();
        String inkageStatus = plcParameterObject.getPlcParameter("InkageStatus").getValue();
//        String inkageStatus ="1";
        jsonObject.append("InkageStatus", inkageStatus);
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass");
@@ -218,12 +235,13 @@
            }
        }
    }
    @Scheduled(fixedDelay = 1000)
    public void loadGlassIsRun() {
        JSONObject jsonObject = new JSONObject();
        //是否开始工程
        Engineering engineering = engineeringService.selectInitiate(1);
            jsonObject.append("engineering", engineering);
        jsonObject.append("engineering", engineering);
        //工位信息
        List<UpWorkstation> upWorkstations = upWorkstationService.list();
        jsonObject.append("list", upWorkstations);
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/HollowBigStorageCageDetails.java
@@ -60,11 +60,6 @@
    private Integer totalLayer;
    /**
     * /*层号
     */
    private Integer hollowSequence;
    /**
     * 创建时间
     */
    private Date createTime;
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowqueue/entity/HollowGlassQueueInfo.java
@@ -75,10 +75,6 @@
     * /*更新时间
     */
    private Date updateTime;
    /**
     * /*中空顺序
     */
    private Integer hollowSequence;
    /**
     * 路线
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
@@ -805,14 +805,22 @@
        if (1 != isForce) {
            if (taskType == Const.BIG_STORAGE_AFTER_OUT) {
                if (tempList.size() <= totalLayer) {
                    bigStorageCageTaskList = tempList;
                    int tempSequence = list.get(0).getHollowSequence();
                    List<BigStorageCageTask> resultList = new ArrayList<>();
                    for (int i = 0; i < tempList.size(); i++) {
                        if (tempSequence == list.get(i).getHollowSequence()) {
                            resultList.add(tempList.get(i));
                        } else {
                            break;
                        }
                    }
                    bigStorageCageTaskList = resultList;
                } else {
                    int remainCount = tempList.size() % totalLayer;
                    bigStorageCageTaskList = tempList.subList(0, tempList.size() - remainCount);
                }
            }
        }
        List<String> glassIds = bigStorageCageTaskList.stream().map(BigStorageCageTask::getGlassId).collect(Collectors.toList());
        int glassCount = bigStorageCageTaskList.size();
        //生成出片任务条数不足6补全