jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java
@@ -120,6 +120,7 @@ .antMatchers("/da/testDeviceInterface/**").permitAll() .antMatchers("/main/paramCollection/**").permitAll() .antMatchers("/bs/formulaChild/**").permitAll() .antMatchers("/da/testDeviceInterface/**").permitAll() // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated() .and() jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java
@@ -120,7 +120,10 @@ { Integer stepNumber = 1; try { List<BsFormulaChildInfo> op260 = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>().eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getProcessesCode())); List<BsFormulaChildInfo> op260 = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>() .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getProcessesCode()) .eq(BsFormulaChildInfo::getProductCode, bsFormulaChildInfo.getProductCode()) ); List<BsFormulaChildInfo> filteredList = op260.stream() .filter(obj -> obj.getResults() != null && !obj.getResults().isEmpty()) .collect(Collectors.toList()); jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/IDaParamCollectionService.java
@@ -92,4 +92,6 @@ void preInstallOut(DaParamCollection daParamCollection); AjaxResult addRepairTighteningData(DaParamCollection daParamCollection); void jrmPushGeelycvMesFeedback(String packID, String stationCode, String productCode); } jcdm-main/src/main/java/com/jcdm/main/da/testDeviceInterface/controller/DaTestDeviceInterfaceController.java
@@ -1,11 +1,24 @@ package com.jcdm.main.da.testDeviceInterface.controller; import java.util.List; 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; @@ -40,6 +53,9 @@ { @Autowired private IDaTestDeviceInterfaceService daTestDeviceInterfaceService; @Autowired private IDaParamCollectionService daParamCollectionService; /** * 查询测试设备接口数据列表 @@ -126,4 +142,175 @@ { return toAjax(daTestDeviceInterfaceService.deleteDaTestDeviceInterfaceByIds(ids)); } /** * 查询设备产品过程参数采集列表 */ @GetMapping("/getPrintOfflineReportInfo") public AjaxResult getPrintOfflineReportInfo(DaTestDeviceInterface daTestDeviceInterface) { Map map = new HashMap<>(); String[] split = daTestDeviceInterface.getProductNum().split(","); try{ CompletableFuture<Void> 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<DaTestDeviceInterface> list360 = daTestDeviceInterfaceService.list(new LambdaQueryWrapper<DaTestDeviceInterface>() .eq(DaTestDeviceInterface::getProductNum, split[0]) .like(DaTestDeviceInterface::getStationCode, "360") ); if(!list360.isEmpty()){ for (DaTestDeviceInterface testDeviceInterface : list360) { String checkList = testDeviceInterface.getCheckList(); List<ChildVO> childVOS = JSON.parseArray(checkList, ChildVO.class); if(checkList.contains("PEOL_NZFNY")){ Optional<String> 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<String> 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<String> 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<String> 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<String> 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<String> optionalParam7 = childVOS.stream().filter(item -> item.getItemCode().equals("PEOL_DIVMAX")).map(ChildVO::getItemValue).findFirst(); printData.setParam7(optionalParam7.orElse("param7")); } } } //370-工位 List<DaTestDeviceInterface> list370 = daTestDeviceInterfaceService.list(new LambdaQueryWrapper<DaTestDeviceInterface>() .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<ChildVO> childVOS = JSON.parseArray(checkList, ChildVO.class); //充电 Optional<String> optionalPEOL_NZFNY = childVOS.stream().filter(item -> item.getItemCode().equals("PDCR_FDDCR")).map(ChildVO::getItemValue).findFirst(); //放电 Optional<String> 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<DaTestDeviceInterface> list410 = daTestDeviceInterfaceService.list(new LambdaQueryWrapper<DaTestDeviceInterface>() .eq(DaTestDeviceInterface::getProductNum, split[i]) .like(DaTestDeviceInterface::getStationCode, "410") ); if(!list410.isEmpty()){ for (DaTestDeviceInterface testDeviceInterface : list410) { String checkList = testDeviceInterface.getCheckList(); List<ChildVO> childVOS = JSON.parseArray(checkList, ChildVO.class); if(checkList.contains("PAT_PATR")){ Optional<String> optionalParam13 = childVOS.stream().filter(item -> item.getItemCode().equals("PAT_PATR")).map(ChildVO::getItemValue).findFirst(); printData.setParam13(optionalParam13.orElse("param13")); } } } List<DaParamCollection> pwdPw = daParamCollectionService.list(new LambdaQueryWrapper<DaParamCollection>() .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; } } jcdm-ui/src/api/main/da/testDeviceInterface/testDeviceInterface.js
@@ -42,3 +42,11 @@ method: 'delete' }) } export function getPrintOfflineReportInfo(query) { return request({ url: '/da/testDeviceInterface/getPrintOfflineReportInfo', method: 'get', params: query }) } jcdm-ui/src/views/main/kb/heatingFilmTerminal/index.vue
@@ -1,19 +1,32 @@ <template> <div class="app-container"> <el-row :gutter="5"> <el-col :span="7"> <el-col :span="5"> <el-card shadow="never"> <span class="head-font">工位编号 : {{headContent.processesCode}}</span> </el-card> </el-col> <el-col :span="7"> <el-col :span="5"> <el-card shadow="never"> <span class="head-font">工位名称 : {{headContent.processesName}}</span> <!-- <el-button type="primary" style="float: right" icon="el-icon-search" size="mini" @click="serialLink">串口连接</el-button>--> <!-- <el-button @click="clearClick" style="float: right" type="danger" size="mini">清除</el-button>--> </el-card> </el-col> <el-col :span="10"> <el-col :span="6"> <el-card style="height: 57px" shadow="never"> <span class="head-font">产品型号 : </span> <el-select style="width: 70%;margin-top: -10px" v-model="selectProductCode" placeholder="请选择"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-card> </el-col> <el-col :span="8"> <el-card shadow="never"> <span class="head-font">模组码 : {{headContent.module}}</span> <!-- <el-input v-model="content" style="float: right;width: 150px;" placeholder="请输入内容"></el-input>--> @@ -277,6 +290,14 @@ name: "stationTerminal", data() { return { selectProductCode: 'PE01B', options: [{ value: 'PE01B', label: 'PE01B' }, { value: 'PE01F', label: 'PE01F' }], carCode: '', showInput: false, onLineBinDing: false, @@ -426,7 +447,7 @@ scanBarcode: value, sfcBarcode: this.headContent.module, // workOrderNo: '-', productCode: 'PE01B', productCode: this.selectProductCode, locationCode: this.headContent.processesCode, collectionTime: new Date() } @@ -474,7 +495,7 @@ getListFormulaChild() { console.log('getListFormulaChild') // this.formulaChildList = [] this.formulaChildParams.productCode = 'PE01B' this.formulaChildParams.productCode = this.selectProductCode this.formulaChildParams.processesCode = this.headContent.processesCode console.log(this.formulaChildParams) noPageListFormulaChild(this.formulaChildParams).then(response => { @@ -521,7 +542,7 @@ }, clearClick(){ const param = { productCode: "PE01B", productCode: this.selectProductCode, locationCode: this.headContent.processesCode, } // jrmSaveCampaignTimeParameters(param).then(response => {}); @@ -630,7 +651,7 @@ } const param = { productCode: "PE01B", productCode: self.selectProductCode, locationCode: self.headContent.processesCode, productBarcode: self.headContent.module, inboundTime: self.workpieceInformation.inboundTime, jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue
@@ -1,18 +1,31 @@ <template> <div class="app-container"> <el-row :gutter="5"> <el-col :span="7"> <el-col :span="5"> <el-card shadow="never"> <span class="head-font">工位编号 : {{headContent.processesCode}}</span> <span hidden>{{headContent.inboundTime}}</span> </el-card> </el-col> <el-col :span="7"> <el-col :span="5"> <el-card shadow="never"> <span class="head-font">工位名称 : {{headContent.processesName}}</span> </el-card> </el-col> <el-col :span="10"> <el-col :span="6"> <el-card style="height: 57px" shadow="never"> <span class="head-font">产品型号 : </span> <el-select style="width: 70%;margin-top: -10px" v-model="selectProductCode" placeholder="请选择"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-card> </el-col> <el-col :span="8"> <el-card shadow="never"> <span class="head-font">产品序列号 : {{headContent.sfcCode}}</span> <!-- <el-input v-model="content" style="float: right;width: 150px;" placeholder="请输入内容"></el-input>--> @@ -214,6 +227,14 @@ name: "stationTerminal", data() { return { selectProductCode: 'PE01B', options: [{ value: 'PE01B', label: 'PE01B' }, { value: 'PE01F', label: 'PE01F' }], showInput: true, serialPortContent: '', // 查询参数 @@ -363,7 +384,7 @@ scanBarcode: value, sfcBarcode: this.headContent.sfcCode, workOrderNo: this.workpieceInformation.workOrderNo, productCode: "PE01B", productCode: this.selectProductCode, locationCode: this.headContent.processesCode, collectionTime: new Date() } @@ -381,7 +402,7 @@ }, /** 查询配方配置子信息列表 */ getListFormulaChild() { this.formulaChildParams.productCode = "PE01B" this.formulaChildParams.productCode = this.selectProductCode this.formulaChildParams.processesCode = this.headContent.processesCode console.log(this.formulaChildParams) noPageListFormulaChild(this.formulaChildParams).then(response => { @@ -415,7 +436,7 @@ }, clearClick(){ const param = { productCode: 'PE01B', productCode: this.selectProductCode, locationCode: this.headContent.processesCode, } clearWorkpieceRelease(param).then(response => {}); @@ -436,6 +457,7 @@ /** 查询工单列表 */ async getList() { const param = { productCode: this.selectProductCode, processesCode: this.headContent.processesCode, } fistSetpNumber(param).then(response => {}); @@ -514,7 +536,7 @@ tightenTheArray: event.data, paramCode: formulaChilds.paramCode, // workOrderNo: self.workpieceInformation.workOrderNo, // productCode: "1P102S", productCode: self.selectProductCode, locationCode: self.headContent.processesCode, productBarcode: self.headContent.sfcCode, spareField2: formulaChilds.spareField2, @@ -541,10 +563,11 @@ self.getListFormulaChild() }else { const param = { id: formulaChilds.id, locationCode: self.headContent.processesCode, productBarcode: self.headContent.sfcCode, inboundTime: self.headContent.inboundTime, productCode: "PE01B", productCode: self.selectProductCode, workOrderNo: "-", } jcdm-ui/src/views/main/om/productionOrde/index.vue
@@ -719,22 +719,22 @@ this.onlineSingle = selection.length!==1 this.offlineSingle = selection.length!==1 if(selection.length === 0){ this.onlineSingle = true this.offlineSingle = true } if(selection.length === 1){ if(selection[0].onlineCompletionMark === '2'){ this.onlineSingle = false }else { this.onlineSingle = true } if(selection[0].sfResult === '2'){ this.offlineSingle = false }else { this.offlineSingle = true } } // if(selection.length === 0){ // this.onlineSingle = true // this.offlineSingle = true // } // if(selection.length === 1){ // if(selection[0].onlineCompletionMark === '2'){ // this.onlineSingle = false // }else { // this.onlineSingle = true // } // if(selection[0].sfResult === '2'){ // this.offlineSingle = false // }else { // this.offlineSingle = true // } // } }, /** 新增按钮操作 */ handleAdd() {