package com.jcdm.main.da.testDeviceInterface.controller; import java.text.DecimalFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.CompletableFuture; import javax.servlet.http.HttpServletResponse; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.JsonObject; import com.jcdm.main.da.paramCollection.domain.DaParamCollection; import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService; import com.jcdm.main.da.testDeviceInterface.domain.PrintData; import com.jcdm.main.restful.qingYan.doman.ChildVO; import com.jcdm.main.restful.qingYan.doman.ParentVO; import com.jcdm.main.webservice.ItemList; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.jcdm.common.annotation.Log; import com.jcdm.common.core.controller.BaseController; import com.jcdm.common.core.domain.AjaxResult; import com.jcdm.common.enums.BusinessType; import com.jcdm.main.da.testDeviceInterface.domain.DaTestDeviceInterface; import com.jcdm.main.da.testDeviceInterface.service.IDaTestDeviceInterfaceService; import com.jcdm.common.utils.poi.ExcelUtil; import com.jcdm.common.core.page.TableDataInfo; /** * 测试设备接口数据Controller * * @author hdy * @date 2024-05-13 */ @RestController @RequestMapping("/da/testDeviceInterface") public class DaTestDeviceInterfaceController extends BaseController { @Autowired private IDaTestDeviceInterfaceService daTestDeviceInterfaceService; @Autowired private IDaParamCollectionService daParamCollectionService; /** * 查询测试设备接口数据列表 */ @PostMapping("/testPut") public AjaxResult list(@RequestBody ParentVO parentVO) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); List li = parentVO.getCheckList(); String s = mapper.writeValueAsString(li); DaTestDeviceInterface daTestDeviceInterface = new DaTestDeviceInterface(); daTestDeviceInterface.setRecordId(parentVO.getRecordId()); daTestDeviceInterface.setStationCode(parentVO.getStationCode()); daTestDeviceInterface.setProductNum(parentVO.getProductNum()); daTestDeviceInterface.setTotalResult(parentVO.getTotalResult()); daTestDeviceInterface.setCheckList(s); daTestDeviceInterfaceService.save(daTestDeviceInterface); return AjaxResult.success("i"); } /** * 查询测试设备接口数据列表 */ @PreAuthorize("@ss.hasPermi('da:testDeviceInterface:list')") @GetMapping("/list") public TableDataInfo list(DaTestDeviceInterface daTestDeviceInterface) { startPage(); List list = daTestDeviceInterfaceService.selectDaTestDeviceInterfaceList(daTestDeviceInterface); return getDataTable(list); } /** * 导出测试设备接口数据列表 */ @PreAuthorize("@ss.hasPermi('da:testDeviceInterface:export')") @Log(title = "测试设备接口数据", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, DaTestDeviceInterface daTestDeviceInterface) { List list = daTestDeviceInterfaceService.selectDaTestDeviceInterfaceList(daTestDeviceInterface); ExcelUtil util = new ExcelUtil(DaTestDeviceInterface.class); util.exportExcel(response, list, "测试设备接口数据数据"); } /** * 获取测试设备接口数据详细信息 */ @PreAuthorize("@ss.hasPermi('da:testDeviceInterface:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(daTestDeviceInterfaceService.selectDaTestDeviceInterfaceById(id)); } /** * 新增测试设备接口数据 */ @PreAuthorize("@ss.hasPermi('da:testDeviceInterface:add')") @Log(title = "测试设备接口数据", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody DaTestDeviceInterface daTestDeviceInterface) { return toAjax(daTestDeviceInterfaceService.insertDaTestDeviceInterface(daTestDeviceInterface)); } /** * 修改测试设备接口数据 */ @PreAuthorize("@ss.hasPermi('da:testDeviceInterface:edit')") @Log(title = "测试设备接口数据", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody DaTestDeviceInterface daTestDeviceInterface) { return toAjax(daTestDeviceInterfaceService.updateDaTestDeviceInterface(daTestDeviceInterface)); } /** * 删除测试设备接口数据 */ @PreAuthorize("@ss.hasPermi('da:testDeviceInterface:remove')") @Log(title = "测试设备接口数据", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(daTestDeviceInterfaceService.deleteDaTestDeviceInterfaceByIds(ids)); } /** * 查询设备产品过程参数采集列表 */ @GetMapping("/getPrintOfflineReportInfo") public AjaxResult getPrintOfflineReportInfo(DaTestDeviceInterface daTestDeviceInterface) { Map map = new HashMap<>(); String[] split = daTestDeviceInterface.getProductNum().split(","); try{ CompletableFuture cp1 = CompletableFuture.runAsync(() -> { for (int i = 0; i < split.length; i++) { PrintData printData = new PrintData(); printData.setParam1("1.1"); printData.setParam9("≥125Ah"); printData.setParam10("≤200mV"); printData.setParam11("≤250mV"); printData.setParam12("50"); printData.setParam13("15.73"); printData.setPackIdTop(getPackIdPrint(split[i])); List list360 = daTestDeviceInterfaceService.list(new LambdaQueryWrapper() .eq(DaTestDeviceInterface::getProductNum, split[0]) .like(DaTestDeviceInterface::getStationCode, "360") ); if(!list360.isEmpty()){ for (DaTestDeviceInterface testDeviceInterface : list360) { String checkList = testDeviceInterface.getCheckList(); List childVOS = JSON.parseArray(checkList, ChildVO.class); if(checkList.contains("PEOL_NZFNY")){ Optional optionalParam2 = childVOS.stream().filter(item -> item.getItemCode().equals("PEOL_NZFNY")).map(ChildVO::getItemValue).findFirst(); printData.setParam2(optionalParam2.orElse("param2")); } if(checkList.contains("PEOL_NZFJY")){ Optional optionalParam3 = childVOS.stream().filter(item -> item.getItemCode().equals("PEOL_NZFJY")).map(ChildVO::getItemValue).findFirst(); printData.setParam3(optionalParam3.orElse("param3")); } if(checkList.contains("PEOL_DDWZZ1")){ Optional optionalParam4 = childVOS.stream().filter(item -> item.getItemCode().equals("PEOL_DDWZZ1")).map(ChildVO::getItemValue).findFirst(); printData.setParam4(optionalParam4.orElse("param4")); } if(checkList.contains("PEOL_JRDZ")){ Optional optionalParam5 = childVOS.stream().filter(item -> item.getItemCode().equals("PEOL_JRDZ")).map(ChildVO::getItemValue).findFirst(); printData.setParam5(optionalParam5.orElse("param5")); } if(checkList.contains("PEOL_DITMAX")){ Optional optionalParam6 = childVOS.stream().filter(item -> item.getItemCode().equals("PEOL_DITMAX")).map(ChildVO::getItemValue).findFirst(); printData.setParam6(optionalParam6.orElse("param6")); } if(checkList.contains("PEOL_DIVMAX")){ Optional optionalParam7 = childVOS.stream().filter(item -> item.getItemCode().equals("PEOL_DIVMAX")).map(ChildVO::getItemValue).findFirst(); printData.setParam7(optionalParam7.orElse("param7")); } } } //370-工位 List list370 = daTestDeviceInterfaceService.list(new LambdaQueryWrapper() .eq(DaTestDeviceInterface::getProductNum, split[i]) .like(DaTestDeviceInterface::getStationCode, "370") ); if(!list370.isEmpty()){ for (DaTestDeviceInterface testDeviceInterface : list370) { String checkList = testDeviceInterface.getCheckList(); if(checkList.contains("PDCR_FDDCR") && checkList.contains("PDCR_CDDCR")){ List childVOS = JSON.parseArray(checkList, ChildVO.class); //充电 Optional optionalPEOL_NZFNY = childVOS.stream().filter(item -> item.getItemCode().equals("PDCR_FDDCR")).map(ChildVO::getItemValue).findFirst(); //放电 Optional optionalPDCR_CDDCR = childVOS.stream().filter(item -> item.getItemCode().equals("PDCR_CDDCR")).map(ChildVO::getItemValue).findFirst(); String StringNZFNY = optionalPEOL_NZFNY.orElse("StringNZFNY"); String StringCDDCR = optionalPDCR_CDDCR.orElse("StringCDDCR"); printData.setParam8("放电:"+StringNZFNY+"充电:"+StringCDDCR); } } } //410-工位 List list410 = daTestDeviceInterfaceService.list(new LambdaQueryWrapper() .eq(DaTestDeviceInterface::getProductNum, split[i]) .like(DaTestDeviceInterface::getStationCode, "410") ); if(!list410.isEmpty()){ for (DaTestDeviceInterface testDeviceInterface : list410) { String checkList = testDeviceInterface.getCheckList(); List childVOS = JSON.parseArray(checkList, ChildVO.class); if(checkList.contains("PAT_PATR")){ Optional optionalParam13 = childVOS.stream().filter(item -> item.getItemCode().equals("PAT_PATR")).map(ChildVO::getItemValue).findFirst(); printData.setParam13(optionalParam13.orElse("param13")); } } } List pwdPw = daParamCollectionService.list(new LambdaQueryWrapper() .eq(DaParamCollection::getSfcCode, split[i]) .eq(DaParamCollection::getParamCode, "PWD_PW") ); if(!pwdPw.isEmpty()){ printData.setParam14(pwdPw.get(0).getParamValue()); }else { printData.setParam14(getRandomValue()); } map.put("data"+(i+1), printData); } }); cp1.join(); }catch (Exception e){ System.out.println(e.getMessage()); } map.put("reviewerDate", getReviewerDate()); return AjaxResult.success(map); } public static void main(String[] args) { System.out.println(getPackIdPrint("0RSPB0011A2E3BEAC0000022")); } public static String getReviewerDate(){ // 获取当前日期 LocalDate today = LocalDate.now(); // 定义日期格式(年.月.日) DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd"); // 格式化当前日期 return today.format(formatter); } /** * 随机生成一个在313正负9之间的值,并保留一位小数。 * * @return 生成的随机值 */ public static String getRandomValue() { // 创建随机数生成器 Random random = new Random(); // 计算随机值范围 double min = 313 - 9; double max = 313 + 9; // 生成随机值 double randomValue = min + (max - min) * random.nextDouble(); // 使用DecimalFormat保留一位小数 DecimalFormat decimalFormat = new DecimalFormat("#.0"); String formattedValue = decimalFormat.format(randomValue); // 将格式化后的字符串转换为double return formattedValue; } public static String getPackIdPrint(String productNum) { String part1 = productNum.substring(14, 17); // 截取21-24位 String part2 = productNum.substring(21, 24); // 拼接成新的字符串 return part1 + part2; } }