ZengTao
2025-03-28 f68d3c71819feb59e7a227a5d992b059b900916c
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -1,11 +1,36 @@
package com.mes;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
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.CollectionUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
import com.mes.bigstorage.service.BigStorageCageDetailsService;
import com.mes.bigstorage.service.BigStorageCageService;
import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper;
import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.service.DamageService;
import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.job.PlcSlicecage;
import com.mes.job.PlcStorageCageTask;
import com.mes.pp.entity.ReportingWork;
import com.mes.pp.entity.ReportingWorkDetail;
import com.mes.temperingglass.entity.TemperingGlassInfo;
import com.mes.temperingglass.service.TemperingGlassInfoService;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -13,7 +38,16 @@
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Arrays;
import javax.annotation.Resource;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @Author : zhoush
@@ -33,6 +67,74 @@
    BigStorageCageDetailsService bigStorageCageDetailsService;
    @Autowired
    DamageService damageService;
    @Autowired
    EdgGlassTaskInfoService edgGlassTaskInfoService;
    @Autowired
    BigStorageCageFeedTaskService bigStorageCageFeedTaskService;
    @Autowired
    GlassInfoService glassInfoService;
//    @Autowired
//    BigStorageCageFeedTaskMapper bigStorageCageFeedTaskMapper;
    @Test
    public void testInsertSlot() {
        List<BigStorageCage> list = new ArrayList();
        for (int j = 1; j <= 5; j++) {
            for (int i = 1 + (55 * (j - 1)); i <= 55 * j; i++) {
                BigStorageCage cage = new BigStorageCage();
                cage.setDeviceId(j);
                cage.setSlot(i);
                cage.setMinThickness(4);
                cage.setMaxThickness(6);
                cage.setEnableState(1);
                cage.setRemainWidth(5000);
                list.add(cage);
            }
        }
        for (int i = 276; i <= 300; i++) {
            BigStorageCage cage = new BigStorageCage();
            cage.setDeviceId(6);
            cage.setSlot(i);
            cage.setMinThickness(8);
            cage.setMaxThickness(12);
            cage.setEnableState(1);
            cage.setRemainWidth(5000);
            list.add(cage);
        }
        for (int i = 301; i <= 330; i++) {
            BigStorageCage cage = new BigStorageCage();
            cage.setDeviceId(7);
            cage.setSlot(i);
            cage.setMinThickness(8);
            cage.setMaxThickness(12);
            cage.setEnableState(1);
            cage.setRemainWidth(5000);
            list.add(cage);
        }
        for (int i = 331; i <= 355; i++) {
            BigStorageCage cage = new BigStorageCage();
            cage.setDeviceId(8);
            cage.setSlot(i);
            cage.setMinThickness(8);
            cage.setMaxThickness(12);
            cage.setEnableState(1);
            cage.setRemainWidth(5000);
            list.add(cage);
        }
        for (int i = 356; i <= 380; i++) {
            BigStorageCage cage = new BigStorageCage();
            cage.setDeviceId(9);
            cage.setSlot(i);
            cage.setMinThickness(15);
            cage.setMaxThickness(19);
            cage.setEnableState(1);
            cage.setRemainWidth(5000);
            list.add(cage);
        }
        bigStorageCageService.saveBatch(list);
    }
    @Test
    public void testFindPath() {
@@ -88,7 +190,7 @@
    @Test
    public void insertDamage() {
        Damage damage=new Damage();
        Damage damage = new Damage();
        damage.setGlassId("P24060403|3|6");
        damage.setLine(2001);
        damage.setWorkingProcedure("冷加工");
@@ -96,4 +198,218 @@
        damage.setStatus(2);
        damageService.insertDamage(damage);
    }
    @Test
    public void updateOutGlassStateTask() {
        plcStorageCageTask.updateOutGlassStateTask();
    }
    @Test
    public void chaxun() {
        List<EdgGlassTaskInfo> edgGlassTaskInfoList = edgGlassTaskInfoService.list(new QueryWrapper<EdgGlassTaskInfo>()
                .select("Top 1 *")
                .eq("glass_id", "P24072402|1|13")
        );
        log.info("在尺寸表中获取玻璃信息{}", edgGlassTaskInfoList);
    }
    @Test
    public void deleteByGlassId() {
        damageService.deleteByGlassId("P24081203|2|5");
    }
    @Test
    public void testttt() {
        List<Integer> deviceUsedList = bigStorageCageService.queryFreeDeviceByUsed(6, 1);
        List<Integer> deviceUseds = deviceUsedList;
        List<BigStorageCageDetails> engineerCount1 = bigStorageCageDetailsService.list(
                new LambdaQueryWrapper<BigStorageCageDetails>()
                        .notIn(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE)
                        .select(BigStorageCageDetails::getEngineerId)
                        .groupBy(BigStorageCageDetails::getEngineerId)
                        .between(BigStorageCageDetails::getDeviceId, 1, 5)
        );
        List<BigStorageCageDetails> engineerCount2 = bigStorageCageDetailsService.list(
                new LambdaQueryWrapper<BigStorageCageDetails>()
                        .notIn(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE)
                        .select(BigStorageCageDetails::getEngineerId)
                        .groupBy(BigStorageCageDetails::getEngineerId)
                        .between(BigStorageCageDetails::getDeviceId, 6, 8)
        );
        if (engineerCount1.size() > engineerCount2.size()) {
            deviceUsedList.removeIf(device -> device < 6);
        } else {
            deviceUsedList.removeIf(device -> device > 5);
        }
        if (CollectionUtils.isEmpty(deviceUsedList)) {
            deviceUsedList = deviceUseds;
        }
        log.info("zhi:{}", deviceUsedList);
    }
    @Test
    public void ca1() {
        List<BigStorageCageFeedTask> bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list(
                new LambdaQueryWrapper<BigStorageCageFeedTask>()
                        .gt(BigStorageCageFeedTask::getTargetSlot, 0)
                        .eq(BigStorageCageFeedTask::getLine, Const.A09_OUT_TARGET_POSITION)
                        .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP)
        );
        if (CollectionUtils.isEmpty(bigStorageCageFeedTasks)) {
            log.info("zhi:" + bigStorageCageFeedTasks);
        }
    }
    @Test
    public void ca11() {
        bigStorageCageDetailsService.selectFeedTask();
//        plcStorageCageTask.queryAndChangeGlass("P24110503|17|4");
    }
    @Resource
    TemperingGlassInfoService temperingGlassInfoService;
    @Test
    public void computeOutMoreGlassInfo() {
//        List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.selectJoinList(TemperingGlassInfo.class, new MPJLambdaWrapper<TemperingGlassInfo>()
//                .selectAll(TemperingGlassInfo.class)
//                .leftJoin(BigStorageCageOutTask.class, BigStorageCageOutTask::getGlassId, TemperingGlassInfo::getGlassId)
//                .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW)
//                .isNull(BigStorageCageOutTask::getGlassId)
//                .orderByAsc(TemperingGlassInfo::getTemperingFeedSequence));
//        plcStorageCageTask.computeOutMoreGlassInfo(temperingGlassInfoList, true, 1);
        List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL)
                .orderByAsc(BigStorageCageDetails::getSlot)
                .orderByDesc(BigStorageCageDetails::getId));
        plcStorageCageTask.computeOutMoreGlassInfo(artificialList, Boolean.FALSE, 1);
    }
    @Test
    public void ca111() {
//        GlassInfo glassInfo=glassInfoService.getOne(
//                new LambdaQueryWrapper<GlassInfo>()
//                .eq(GlassInfo::getGlassId,"P24122901|38|9")
//        );
//        bigStorageCageDetailsService.queryTargetSlotByTempering(glassInfo);
//        List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsService.list(
//                new LambdaQueryWrapper<BigStorageCageDetails>()
//                        .eq(BigStorageCageDetails::getState, 100)
//                        .in(BigStorageCageDetails::getGlassId, "P24122201|1|1", "P24122201|2|3")
//        );
//        List<BigStorageCageDetails> overSizeGlass = bigStorageCageDetailsList.stream().filter(
//                t -> Math.min(t.getWidth(), t.getHeight()) > 2500
//        ).collect(Collectors.toList());
//        log.info("sadfd" + overSizeGlass);
//        List<String> glasss=new ArrayList<>();
//        glasss.add("P24122901|38|5");
//        glasss.add("P24122901|38|7");
//        glasss.add("P24122901|26|5");
//        plcStorageCageTask.computeTargetByLineCar(2001,glasss);
//        bigStorageCageDetailsService.cancelOutTask();
//        bigStorageCageDetailsService.queryTargetSlotByTempering(glassInfo);
//        List<String> glassIdsCar=new ArrayList<>();
//        glassIdsCar.add("P24120801|4|3");
//        List<BigStorageCageFeedTask> bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list(
//                new LambdaQueryWrapper<BigStorageCageFeedTask>()
//                        .in(BigStorageCageFeedTask::getGlassId, glassIdsCar)
//                        .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP)
//                        .eq(BigStorageCageFeedTask::getTargetSlot, 0)
//        );
//        if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)){
//            log.info("获取到的进片任务信息{}", bigStorageCageFeedTasks);
//            plcStorageCageTask.computeTargetByLineCar(bigStorageCageFeedTasks.get(0).getLine(), glassIdsCar);
//        }
//        plcStorageCageTask.queryAndChangeGlass("P24111102|1|6");
//        bigStorageCageDetailsService.selectFeedTask();
        plcStorageCageTask.computeSlot("P24122901|21|2");
//        plcStorageCageTask.computeSlot("P24121401|1|4");
//        List<TemperingLayoutDTO> temperingOccupySlotList = bigStorageCageDetailsService.queryTemperingOccupySlot();
//        log.info("sd"+temperingOccupySlotList);
    }
    @Test
    public void ca() {
        try {
            // 目标系统的API URL
            String url = "http://192.168.3.119:8086/reportingWork/mesSaveReportingWorkWorn";
            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            // 设置请求方法和请求头
            con.setRequestMethod("POST");
            con.setRequestProperty("Content-Type", "application/json; utf-8");
            con.setRequestProperty("Accept", "application/json");
            con.setDoOutput(true);
            // 创建 JSON 对象
            JSONObject result = new JSONObject();
            ReportingWork reportingWork = new ReportingWork();
            reportingWork.setOrderId("NG24042301");
            reportingWork.setProductionId("NG24042301A");
            reportingWork.setProcessId("NG24042301A001");
            reportingWork.setDeviceName("磨边机");
            reportingWork.setThisProcess("切割");
            reportingWork.setNextProcess("磨边");
            reportingWork.setThisCompletedQuantity(1);
            reportingWork.setThisWornQuantity(0);
            reportingWork.setClasses("早班");
            reportingWork.setReportingWorkTime(LocalDateTime.now());
            reportingWork.setTeamsGroupsName("小廖一号");
            reportingWork.setCreator("小廖");
            List<ReportingWorkDetail> reportingWorkDetails = new ArrayList<>();
            ReportingWorkDetail reportingWorkDetail = new ReportingWorkDetail();
            reportingWorkDetail.setTechnologyNumber(1);
            reportingWorkDetail.setOrderNumber(1);
            reportingWorkDetail.setCompletedQuantity(1);
            reportingWorkDetail.setBreakageQuantity(0);
            reportingWorkDetails.add(reportingWorkDetail);
            ObjectMapper objectMapper = new ObjectMapper();
            // 将 ReportingWork 转换为 JSONObject
            JSONObject reportingWorkJson = new JSONObject(objectMapper.writeValueAsString(reportingWork));
            reportingWorkJson.put("reportingWorkTime", reportingWork.getReportingWorkTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
            // 将 ReportingWorkDetail 列表转换为 JSONArray
            JSONArray detailsJsonArray = new JSONArray(objectMapper.writeValueAsString(reportingWorkDetails));
            // 将 JSON 对象和数组添加到结果对象中
            result.put("title", reportingWorkJson);
            result.put("detail", detailsJsonArray);
            result.put("type", 0);
            result.put("userId", "admin");
            result.put("userName", "admin");
            result.put("qualityInsStatus", 0);
            // 将 result 对象转换为字符串
            String jsonInputString = result.toString();
            System.out.println("jsonInputString : " + result);
            // 发送请求
            try (OutputStream os = con.getOutputStream()) {
                byte[] input = jsonInputString.getBytes("utf-8");
                os.write(input, 0, input.length);
            }
            // 获取响应码
            int responseCode = con.getResponseCode();
            System.out.println("Response Code : " + responseCode);
            // 获取响应内容
            try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) {
                StringBuilder response = new StringBuilder();
                String inputLine;
                while ((inputLine = in.readLine()) != null) {
                    response.append(inputLine);
                }
                System.out.println("Response Body: " + response.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}