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; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; 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 * @Date: 2024/3/27 16:37 * @Description: */ @Slf4j @RunWith(SpringRunner.class) @SpringBootTest(classes = CacheVerticalClassModuleApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class CacheVerticalGlassModuleApplicationTest { @Autowired BigStorageCageService bigStorageCageService; @Autowired PlcStorageCageTask plcStorageCageTask; @Autowired BigStorageCageDetailsService bigStorageCageDetailsService; @Autowired DamageService damageService; @Autowired EdgGlassTaskInfoService edgGlassTaskInfoService; @Autowired BigStorageCageFeedTaskService bigStorageCageFeedTaskService; @Autowired GlassInfoService glassInfoService; // @Autowired // BigStorageCageFeedTaskMapper bigStorageCageFeedTaskMapper; @Test public void testInsertSlot() { List 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() { log.info("完整路径:{}", Arrays.asList("123")); } @Test public void outGlass() { log.info("完整路径:{}", bigStorageCageService.outGlass()); } @Test public void plcToHomeEdgOutTask() { plcStorageCageTask.plcToHomeEdgOutTask(); } @Test public void plcToHomeEdgFreeCarTask() { plcStorageCageTask.plcToHomeEdgFreeCarTask(); } @Test public void plcStorageCageTask() { plcStorageCageTask.plcToHomeEdgScan(); } @Test public void computeTargetByLine() { plcStorageCageTask.computeTargetByLine(2001); } @Test public void judgeGlassTypeStatus() { plcStorageCageTask.judgeGlassTypeStatus("P24060403|6|7", Const.A09_OUT_TARGET_POSITION, "mesD03Address"); } @Test public void getStartLine() { Integer startLine = plcStorageCageTask.getStartLine(); log.info("---------{}", startLine); } @Test public void selectBigStorageCageUsage() { log.info("获取大理片笼信息:{}", bigStorageCageService.selectBigStorageCageUsage()); } @Test public void selectBigStorageCageDetails() { log.info("获取大理片笼信息:{}", bigStorageCageDetailsService.selectBigStorageCageDetails("P24060403|3|6")); } @Test public void insertDamage() { Damage damage = new Damage(); damage.setGlassId("P24060403|3|6"); damage.setLine(2001); damage.setWorkingProcedure("冷加工"); damage.setRemark(""); damage.setStatus(2); damageService.insertDamage(damage); } @Test public void updateOutGlassStateTask() { plcStorageCageTask.updateOutGlassStateTask(); } @Test public void chaxun() { List edgGlassTaskInfoList = edgGlassTaskInfoService.list(new QueryWrapper() .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 deviceUsedList = bigStorageCageService.queryFreeDeviceByUsed(6, 1); List deviceUseds = deviceUsedList; List engineerCount1 = bigStorageCageDetailsService.list( new LambdaQueryWrapper() .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 engineerCount2 = bigStorageCageDetailsService.list( new LambdaQueryWrapper() .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 bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list( new LambdaQueryWrapper() .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() { plcStorageCageTask.queryAndChangeGlass("P24110503|17|4"); } @Resource TemperingGlassInfoService temperingGlassInfoService; @Test public void computeOutMoreGlassInfo() { List temperingGlassInfoList = temperingGlassInfoService.selectJoinList(TemperingGlassInfo.class, new MPJLambdaWrapper() .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); } @Test public void ca111() { // GlassInfo glassInfo=glassInfoService.getOne( // new LambdaQueryWrapper() // .eq(GlassInfo::getGlassId,"P24121602|1|10") // ); // bigStorageCageDetailsService.queryTargetSlotByTempering(glassInfo); List bigStorageCageDetailsList = bigStorageCageDetailsService.list( new LambdaQueryWrapper() .eq(BigStorageCageDetails::getState, 100) .in(BigStorageCageDetails::getGlassId, "P24122201|1|1", "P24122201|2|3") ); List overSizeGlass = bigStorageCageDetailsList.stream().filter( t -> Math.min(t.getWidth(), t.getHeight()) > 2500 ).collect(Collectors.toList()); log.info("sadfd" + overSizeGlass); // bigStorageCageDetailsService.queryTargetSlotByTempering(glassInfo); // List glassIdsCar=new ArrayList<>(); // glassIdsCar.add("P24120801|4|3"); // List bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list( // new LambdaQueryWrapper() // .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("P24121401|1|6"); // plcStorageCageTask.computeSlot("P24121401|1|4"); // List 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 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(); } } }