From b3654b855129db1b8284606e34af8242120e32e1 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期四, 24 七月 2025 14:28:08 +0800 Subject: [PATCH] yys 添加分析数据算法修改,表新增字段 --- inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java | 78 ++++++++++++++++++++++++-------------- 1 files changed, 49 insertions(+), 29 deletions(-) diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java index 71da0be..7b74ae6 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java +++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java @@ -361,15 +361,16 @@ @Override @Transactional(rollbackFor = Exception.class) - public void saveInsContext(Map<String, Object> insContext, Integer currentTable, Integer currentSampleId, Integer orderId, String sonLaboratory) { + public void saveInsContext(SaveInsContextDto saveInsContextDto) { + Map<String, Object> insContext = JSON.parseObject(saveInsContextDto.getParam(), Map.class); Integer userId = SecurityUtils.getUserId().intValue(); - InsSample insSample = insSampleMapper.selectById(currentSampleId); + InsSample insSample = insSampleMapper.selectById(saveInsContextDto.getSampleId()); insContext.forEach((k, v) -> { JSONObject jo = JSON.parseObject(JSON.toJSONString(v)); InsProduct insProduct = new InsProduct(); insProduct.setId(Integer.parseInt(k)); InsProduct product = insProductMapper.selectById(insProduct.getId()); - if (currentTable.equals(product.getTemplateId()) && currentSampleId.equals(product.getInsSampleId())) { + if (saveInsContextDto.getCurrentTable().equals(product.getTemplateId()) && saveInsContextDto.getSampleId().equals(product.getInsSampleId())) { List<InsProductResult> oldResults = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery() .eq(InsProductResult::getInsProductId, insProduct.getId())); InsProductResult newResult = new InsProductResult(); @@ -501,23 +502,30 @@ // 娣诲姞宸ユ椂 // 鍒ゆ柇鏄惁鍙槸鍙備笌璁$畻鍊�, 鍙備笌璁$畻鍊煎疄闄呮病鏈夊~鍐� + InsProduct finalInsProduct = insProductMapper.selectById(product.getId()); + InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId()); if (StringUtils.isNotBlank(newResult.getInsValue()) && !newResult.getInsValue().equals("[]")) { - InsProduct finalInsProduct = insProductMapper.selectById(product.getId()); threadPoolTaskExecutor.execute(() -> { - InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId()); this.addAuxiliary(userId, finalInsProduct, insOrder); }); + } else { + // 鍒ゆ柇鏄惁鏄病鏈夋楠屽�肩殑鍐呭 + if (saveInsContextDto.getIsNoTestValue() != null && saveInsContextDto.getIsNoTestValue() == 1) { + threadPoolTaskExecutor.execute(() -> { + this.addAuxiliary(userId, finalInsProduct, insOrder); + }); + } } } }); String sampleIdStr = insContext.keySet().stream().findFirst().orElse(null); if (sampleIdStr != null) { - int count = insProductMapper.selectInsProductCountByOrderId(orderId); + int count = insProductMapper.selectInsProductCountByOrderId(saveInsContextDto.getOrderId()); if (count == 0) { insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate() - .eq(InsOrderState::getInsOrderId, orderId) - .eq(InsOrderState::getLaboratory, sonLaboratory) + .eq(InsOrderState::getInsOrderId, saveInsContextDto.getOrderId()) + .eq(InsOrderState::getLaboratory, saveInsContextDto.getSonLaboratory()) .set(InsOrderState::getInsState, 2)); } } @@ -605,20 +613,6 @@ */ private void getTemplateThing(InsOrder order, List<InsProduct> insProducts) { Set<Integer> set = new HashSet<>(); - // 妫�楠岄」鍒嗙被+妫�楠岄」+妫�楠屽瓙椤圭殑鎷兼帴 -// List<String> itemNameList = insProducts.stream().map(insProduct -> { -// String itemName = ""; -// if (StringUtils.isNotBlank(insProduct.getInspectionItemClass())) { -// itemName += insProduct.getInspectionItemClass().trim(); -// } -// if (StringUtils.isNotBlank(insProduct.getInspectionItem())) { -// itemName += insProduct.getInspectionItem().trim(); -// } -// if (StringUtils.isNotBlank(insProduct.getInspectionItemSubclass())) { -// itemName += insProduct.getInspectionItemSubclass().trim(); -// } -// return itemName; -// }).collect(Collectors.toList()); // 鏌ヨ璁㈠崟鐘舵�佸垽鏂槸鍚︽槸鏌ュ巻鍙叉ā鏉� if (order.getIsFirstSubmit() != null && order.getIsFirstSubmit().equals(1)) { InsOrderState insOrderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() @@ -822,10 +816,9 @@ // 5.鍙戦�佹秷鎭�氱煡缁欏鏍镐汉 // 鏌ヨ褰撳墠浜轰俊鎭� Integer userId = SecurityUtils.getUserId().intValue(); - Map<String, String> userMap = insProductMapper.selectUserById(verifyUser); - String userName = userMap.get("name"); + String userName = insProductMapper.selectUserById(userId).get("name"); // 鏌ヨ鍙戦�佷汉淇℃伅 - String sendUserAccount = userMap.get("account"); + String sendUserAccount = insProductMapper.selectUserById(verifyUser).get("account"); InformationNotification info = new InformationNotification(); info.setCreateUser(userName); info.setMessageType("2"); @@ -973,7 +966,7 @@ if (insProduct.getInspectionValueType().equals("1") && insProduct.getInsResult().equals(1)) { List<InsProductDeviationWarningDetail> insProductAnalysisDtoList = insProductMapper.selectAnalysis(insProduct, ifsInventoryQuantity.getSupplierName()); - if (insProductAnalysisDtoList.size() < 10) { + if (CollectionUtils.isEmpty(insProductAnalysisDtoList)) { continue; } @@ -982,8 +975,10 @@ .collect(Collectors.toList()); double deviation = isDeviationOverTenPercent(laseValueList, insProduct.getLastValue()); + // 鍒ゆ柇瑕佹眰鍊兼槸鍚﹀亸宸秴杩�10% + double asked = isDeviationOverTenPercentByAsked(insProduct.getAsk(), insProduct.getLastValue()); // 鍒ゆ柇鍋忓樊鏄惁澶т簬10 - if (deviation > 10) { + if (deviation > 10 || asked > 10) { // 鍒ゆ柇涔嬪墠鏄惁娣诲姞杩�, 娣诲姞杩囦笉闇�瑕佹坊鍔� long count = insProductDeviationWarningService.count(Wrappers.<InsProductDeviationWarning>lambdaQuery() .eq(InsProductDeviationWarning::getInsProductId, insProduct.getId())); @@ -1011,7 +1006,8 @@ deviationWarningDetail.setSupplierName(ifsInventoryQuantity.getSupplierName()); deviationWarningDetail.setTestValue(insProduct.getLastValue()); deviationWarningDetail.setDetectionTime(insProduct.getCreateTime()); - deviationWarningDetail.setIsIssue(1); + deviationWarningDetail.setIsIssue(deviation > 10 ? 1 : 0); + deviationWarningDetail.setIsIssueAsked(asked > 10 ? 1 : 0); insProductAnalysisDtoList.add(deviationWarningDetail); @@ -1064,6 +1060,24 @@ double sum = doubleData.stream().mapToDouble(Double::doubleValue).sum(); double average = sum / doubleData.size(); + double target = Double.parseDouble(targetStr); + double deviationPercent = Math.abs(target - average) / average * 100; + + // 淇濈暀涓や綅灏忔暟 + DecimalFormat df = new DecimalFormat("#.00"); + String formatted = df.format(deviationPercent); + return Double.parseDouble(formatted); + } + + /** + * *****璁$畻鍋忓樊锛堣姹傚�硷級**** + * @param asked + * @param targetStr + * @return + */ + public static double isDeviationOverTenPercentByAsked(String asked, String targetStr) { + if(!isNumeric(asked)) return 0; + double average = Double.parseDouble(asked); double target = Double.parseDouble(targetStr); double deviationPercent = Math.abs(target - average) / average * 100; @@ -2015,7 +2029,7 @@ insReportMapper.delete(Wrappers.<InsReport>lambdaQuery() .eq(InsReport::getInsOrderId, insOrder.getId())); insReportMapper.insert(insReport); - + inputStream.close(); } catch (IOException e) { throw new RuntimeException(e); } @@ -2568,6 +2582,7 @@ insReportMapper.delete(Wrappers.<InsReport>lambdaQuery() .eq(InsReport::getInsOrderId, insOrder.getId())); insReportMapper.insert(insReport); + inputStream.close(); } catch (IOException e) { throw new RuntimeException(e); } @@ -4242,6 +4257,11 @@ // 淇濆瓨鍒伴檮浠堕噷闈� uploadFile(insOrderId, multipartFile); + try { + inputStream.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } } -- Gitblit v1.9.3