wu
2024-05-28 7f120fc7a05d560db1e47b3ef243fde19a0c56b4
更改开始上片和暂停接口,选择工程增加信息预览
11个文件已修改
210 ■■■■ 已修改文件
hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -37,7 +37,7 @@
            optimizeGlassinfos = optimizeProjectMapper.selectJoinList(OptimizeGlassinfo.class, new MPJQueryWrapper<OptimizeProject>()
                    .select("b.process_id,t.type,b.width,b.height,t.glass_thickness,t.glass_type,b.p_width,b.p_height,b.stock_id,b.heat_layout_id,b.heat_layout_sort,b.x_axis,b.y_axis,b.project_no,b.glass_id")
                    .leftJoin("optimize_detail b on t.project_no=b.project_no")
                    .eq("t.state",100)
                    //.eq("t.state",100)
                    .eq("t.project_no", engineeringId));
        }
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java
@@ -3,6 +3,7 @@
import com.github.yulichang.base.MPJBaseService;
import com.mes.pp.entity.OptimizeProject;
import com.mes.pp.entity.request.OptimizeRequest;
import com.mes.uppattenusage.entity.UpPattenUsage;
import java.util.List;
@@ -26,4 +27,10 @@
     * 将工程信息更新状态为已领取
     */
    void changeTask(String engineeringId, int i);
    /**
     * 完成工程任务改为300
     *
     * @return
     */
    boolean overTask(UpPattenUsage sequence, int state);
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java
@@ -9,6 +9,7 @@
import com.mes.pp.entity.request.OptimizeRequest;
import com.mes.pp.mapper.OptimizeProjectMapper;
import com.mes.pp.service.OptimizeProjectService;
import com.mes.uppattenusage.entity.UpPattenUsage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -29,13 +30,14 @@
    @Override
    public List<OptimizeProject> listByState(OptimizeRequest optimizeRequest) {
        log.info("将参数传入到查询类里,工程号做非空判断模糊查询");
        //将参数传入到查询类里,工程号做非空判断模糊查询
        LambdaQueryWrapper<OptimizeProject> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(OptimizeProject::getState,optimizeRequest.getState())
                .or(qw -> qw.eq(OptimizeProject::getState, 200))
                .like(StringUtils.isNotBlank(optimizeRequest.getProjectNo()),OptimizeProject::getProjectNo,optimizeRequest.getProjectNo())
                //.groupBy(OptimizeProject::getProjectNo)
        ;
        log.info("返回工程信息");
        //返回工程信息
        return this.list(wrapper);
    }
@@ -50,6 +52,17 @@
    }
    @Override
    public boolean overTask(UpPattenUsage sequence, int state) {
        if(sequence.getState()==100){
            UpdateWrapper<OptimizeProject> wrapper=new  UpdateWrapper<>();
            wrapper.eq("project_no",sequence.getEngineeringId())
                    .set("state",state);
            boolean updateSuccess = this.update(wrapper);
            log.info("工程完成更新状态{}",updateSuccess);
        }
        return false;
    }
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java
@@ -24,7 +24,9 @@
    private S7object() {
        if (plccontrol == null) {
            plccontrol = new S7control(plcType, ip, port, 0, 0);
            String PlcLoadGlass = System.getProperty("user.dir") + "/JsonFile/PlcLoadGlass.json";
            String PlcLoadGlass = S7object.class.getResource("/JsonFile/PlcLoadGlass.json").getPath();
            //log.info(PLCAutoMes.class.getResource("").getPath());
            PlcMesObject = InitUtil.initword(PlcLoadGlass);
        }
    }
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
@@ -3,6 +3,9 @@
import com.mes.engineering.entity.Engineering;
import com.mes.engineering.service.EngineeringService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.pp.service.OptimizeProjectService;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.service.UpPattenUsageService;
import com.mes.utils.Result;
@@ -29,17 +32,51 @@
    private EngineeringService engineeringService;
    @Autowired
    private UpPattenUsageService upPattenUsageService;
    @Autowired
    private GlassInfoService glassInfoService;
    @Autowired
    private OptimizeProjectService optimizeProjectService;
    @ApiOperation("开始/暂停任务/传递工程号和状态,开始是1 暂停是0")
    @PostMapping("/changeTask") //调用上片任务
    @PostMapping("/pauseTask") //调用上片任务
    @ResponseBody
    public  Result <List<UpPattenUsage>> changeTask(@RequestBody Engineering engineering) {
    public  Result <List<UpPattenUsage>> pauseTask(@RequestBody Engineering engineering) {
        boolean work=engineeringService.changeTask(engineering.getEngineerId(),engineering.getState());
        List<UpPattenUsage> glass = upPattenUsageService.prioritylist();
        log.info("StartorStop:{},{}", work,engineering);
        return Result.build(200, engineering.getEngineerId(),glass);
    }
    @ApiOperation("开始上片")
    @PostMapping("/changeTask") //调用上片任务
    @ResponseBody
    public  Result <Boolean> changeTask(@RequestBody Engineering engineering) {
        log.info("engineeringId:{}", engineering);
        UpPattenUsage upPattenUsage = upPattenUsageService.selectedEngineering(engineering.getEngineerId());
        if (upPattenUsage != null) {
            boolean work=engineeringService.changeTask(engineering.getEngineerId(),engineering.getState());
            List<UpPattenUsage> glass = upPattenUsageService.prioritylist();
            optimizeProjectService.changeTask(engineering.getEngineerId(), 200);
            return Result.build(200, "已保存过", work);
        } else {
            List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineering.getEngineerId());
            log.info("将查询出的UpPattenUsage数据保存到数据库表里");
            upPattenUsageService.saveUpPattenUsage(upPattenUsages);
            log.info("从PP表查询glassinfo的数据并保存到表里");
            List<GlassInfo> glassinfo = glassInfoService.selectGlassInfo(engineering.getEngineerId());
            glassInfoService.saveGlassInfo(glassinfo);
            log.info("从PP表查询engineering的数据并保存到表里");
            List<Engineering> listEngineering = engineeringService.selectEngineering(engineering.getEngineerId());
            engineeringService.saveEngineering(listEngineering);
            log.info("更改pp表状态为已领取");
            //将engineering表状态为正在上片
            boolean work=engineeringService.changeTask(engineering.getEngineerId(),engineering.getState());
            List<UpPattenUsage> glass = upPattenUsageService.prioritylist();
            optimizeProjectService.changeTask(engineering.getEngineerId(), 200);
            return Result.build(200, "保存成功", work);
        }
    }
    @ApiOperation("查询可以上片的工程号")
    @GetMapping("/selectTask") //调用上片任务
    @ResponseBody
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
@@ -20,7 +20,7 @@
     * 开始/暂停任务
     * @return boolean
     */
    boolean  changeTask(String projectId, Integer state);
    boolean changeTask(String projectId, Integer state);
    /**
     * 查询钢化信息
     * @return List<Engineering>
@@ -35,6 +35,9 @@
     * @return Engineering
     */
    Engineering selectInitiate(Integer state);
    /**
     * 查询上片任务
     * @return Engineering
     */
    List<Engineering> selectTask();
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -1,9 +1,13 @@
package com.mes.job;
import cn.hutool.json.JSONObject;
import com.mes.common.S7object;
import com.mes.common.WebSocketServer;
import com.mes.device.PlcParameterObject;
import com.mes.engineering.entity.Engineering;
import com.mes.engineering.service.EngineeringService;
import com.mes.pp.entity.OptimizeProject;
import com.mes.pp.service.OptimizeProjectService;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.service.UpPattenUsageService;
import com.mes.workstation.entity.UpWorkstation;
@@ -12,6 +16,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
 * @author SNG-010
@@ -26,6 +33,9 @@
    private EngineeringService engineeringService;
    @Autowired
    private UpPattenUsageService upPattenUsageService;
    @Autowired
    private OptimizeProjectService optimizeProjectService;
    PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
@@ -34,7 +44,7 @@
     * fixedDelay : 上一个调用结束后再次调用的延时
     */
    @Scheduled(fixedDelay = 300)
    @Scheduled(fixedDelay = 30000000)
    public void plcLoadGlassTask() throws InterruptedException {
        try {
            //获取是否有上片请求
@@ -72,7 +82,7 @@
        }
    }
    @Scheduled(fixedDelay = 300)
    @Scheduled(fixedDelay = 30000000)
    public void plcLoadGlassReport(){
        //获取是否有汇报
        String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
@@ -81,7 +91,8 @@
            switch (loadStatus) {
                case "1":
                    log.info("收到汇报任务完成");
                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
                    //减少工位数量,完成任务状态
                    overTask(loadStatus, 100);
                    break;
                case "2":
                    log.info("收到汇报未完成任务");
@@ -93,15 +104,40 @@
                    overTask(loadStatus, 0);
                    break;
                case "0":
                    log.info("收到汇报清0状态");
                    //减少工位数量,完成任务状态
                    overTask(loadStatus, 100);
                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 0);
                    break;
            }
        }
    }
//    @Scheduled(fixedDelay = 300)
//    public void loadGlassHome(){
//        JSONObject jsonObject = new JSONObject();
//        //正在进行的任务
//        List<UpPattenUsage> upPattenUsages = upPattenUsageService.prioritylist();
//        jsonObject.append("prioritylist", upPattenUsages);
//        //工位信息
//        List<UpWorkstation> upWorkstations = upWorkstationService.list();
//        jsonObject.append("list", upWorkstations);
//        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("returns");
//        if (sendwServer != null) {
//            for (WebSocketServer webserver : sendwServer) {
//                if (webserver != null) {
//                    webserver.sendMessage(jsonObject.toString());
//                    List<String> messages = webserver.getMessages();
//                    if (!messages.isEmpty()) {
//                        // // 将最后一个消息转换为整数类型的列表
//                        webserver.clearMessages();
//                    }
//                } else {
//                    log.info("Home is closed");
//                }
//            }
//        }
//    }
    public void overTask(String loadStatus, int state)  {
        UpPattenUsage upPattenUsage = upPattenUsageService.selectOverTask();
        if (upPattenUsage != null) {
            log.info("收到汇报清{}状态", loadStatus);
@@ -109,8 +145,12 @@
            upWorkstationService.reduceWorkstationNumber(upPattenUsage.getState());
            //完成上片表状态
            upPattenUsageService.updateUpPattenUsageState(upPattenUsage, state);
            S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 0);
            //判断是否是最后一块玻璃
            UpPattenUsage sequence=upPattenUsageService.selectSequence(upPattenUsage);
            //如果是最后一块时完成工程任务
            optimizeProjectService.overTask(sequence,300);
        }
        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
    }
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
@@ -45,32 +45,14 @@
        return Result.build(200, "", glass);
    }
    @ApiOperation("点击选择工程保存后进行调用,传入工程号")
    @PostMapping("/saveUpPattenUsage") //查询现在上片机的玻璃信息
    @ApiOperation("选择工程号后显示上片顺序预览")
    @PostMapping("/selectUpPattenUsage") //查询现在上片机的玻璃信息
    @ResponseBody
    public Result<Engineering> saveUpPattenUsage(@RequestBody Engineering engineering) {
        log.info("engineeringId:{}", engineering);
        UpPattenUsage upPattenUsage= upPattenUsageService.selectedEngineering(engineering.getEngineerId());
        if (upPattenUsage!=null){
            log.info("已保存过");
            return Result.build(200, "已保存的工程", null);
        }else {
            List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineering.getEngineerId());
            log.info("将查询出的UpPattenUsage数据保存到数据库表里");
            upPattenUsageService.saveUpPattenUsage(upPattenUsages);
            log.info("从PP表查询glassinfo的数据并保存到表里");
            List<GlassInfo> glassinfo=glassInfoService.selectGlassInfo(engineering.getEngineerId());
            glassInfoService.saveGlassInfo(glassinfo);
            log.info("从PP表查询engineering的数据并保存到表里");
            List<Engineering> listEngineering= engineeringService.selectEngineering(engineering.getEngineerId());
            engineeringService.saveEngineering(listEngineering);
            log.info("更改pp表状态为已领取");
            optimizeProjectService.changeTask(engineering.getEngineerId(), 200);
//            List<UpPattenUsage> data=upPattenUsageService.prioritylist();
//            log.info("显示保存后的上片顺序表");
            return Result.build(200, "", engineering);
    public Result<List<UpPattenUsage>> selectUpPattenUsage(@RequestBody Engineering engineering) {
        List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineering.getEngineerId());
        return Result.build(200, "", upPattenUsages);
        }
    }
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java
@@ -41,5 +41,11 @@
      * @return UpPattenUsage
      */
     UpPattenUsage selectOverTask();
     /**
      * 查询上片最后一块的玻璃
      * @return UpPattenUsage
      */
     UpPattenUsage selectSequence(UpPattenUsage upPattenUsage);
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
@@ -39,7 +39,7 @@
    public List<UpPattenUsage> prioritylist() {
        //获取正在上片的任务id
        Engineering engineering= engineeringService.selectInitiate(1);
        log.info("将参数传入到查询类里{}",engineering);
        //log.info("将参数传入到查询类里{}",engineering);
        if(engineering!=null){
            LambdaQueryWrapper<UpPattenUsage> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(UpPattenUsage::getEngineeringId,engineering.getEngineerId());
@@ -116,5 +116,15 @@
        return this.getOne(wrapper);
    }
    @Override
    //获取最后一块玻璃
    public UpPattenUsage selectSequence(UpPattenUsage upPattenUsage) {
        QueryWrapper<UpPattenUsage>wrapper = new QueryWrapper<>();
        wrapper.eq("engineering_id",upPattenUsage.getEngineeringId())
                .orderByDesc("layout_sequence")
                .last("limit 1");
        return this.getOne(wrapper);
    }
}
hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java
@@ -4,6 +4,8 @@
import com.mes.engineering.service.EngineeringService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.pp.entity.OptimizeProject;
import com.mes.pp.entity.request.OptimizeRequest;
import com.mes.pp.service.OptimizeProjectService;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.service.impl.UpPattenUsageServiceImpl;
@@ -72,23 +74,31 @@
        engineeringService.saveEngineering(glass);
        log.info("glassinfo:{}", Arrays.asList(glass));
    }
    @Test
    public  void  textengineering2(){
        //更新工程表状态为已领取
        //optimizeProjectService.changeTask("P24050801",200);
        engineeringService.changeTask("P24051102",1);
    }
    @Test
    public  void  textengineering3(){
        //判断是否已保存过工程号到上片表
        UpPattenUsage upPattenUsage=upPattenUsageService.selectOverTask();
        log.info("上片表任务中的数据{}",upPattenUsage);
        //上片表最后一片
        UpPattenUsage upPattenUsage=new UpPattenUsage();
        upPattenUsage.setEngineeringId("P24051103");
        UpPattenUsage upPattenUsage1=upPattenUsageService.selectSequence(upPattenUsage);
        log.info("上片表任务中的数据{}",upPattenUsage1);
        boolean isOver= optimizeProjectService.overTask(upPattenUsage1,300);
        log.info("更改是否成功{}",isOver);
    }
    @Test
    public  void  textengineering4(){
        //判断是否已保存过工程号到上片表
        List<Engineering> engineerings=engineeringService.selectTask();
        log.info("上片表任务中的数据{}",engineerings);
    }
    @Test
    public  void  textengineering5(){
        //显示选择工程
        OptimizeRequest optimizeRequest=new OptimizeRequest();
        optimizeRequest.setState(100);
        List<OptimizeProject> engineerings=optimizeProjectService.listByState(optimizeRequest);
        log.info("上片表任务中的数据{}",engineerings);
    }
}