| | |
| | | import java.nio.file.Paths; |
| | | import java.text.DecimalFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | |
| | | boolean showResult = Objects.equals(reportType, INSPECTION_REPORT); |
| | | List<Map<String, Object>> tables = new ArrayList<>(); |
| | | Set<String> standardMethod = new LinkedHashSet<>(); |
| | | Set<String> deviceSet = new HashSet<>(); |
| | | Set<String> models = new HashSet<>(); |
| | | // æ¥è¯¢æ£éªé¡¹æ°é |
| | | AtomicInteger productSize = new AtomicInteger(); |
| | |
| | | standardMethodCode = standardMethodCode + "+" + a.getSpecialStandardMethod(); |
| | | } |
| | | standardMethod.add(standardMethodCode); |
| | | } |
| | | for (InsProduct b : a.getInsProduct()) { |
| | | if (b.getInsProductResult() != null) { |
| | | List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class); |
| | | for (JSONObject jsonObject : jsonObjects) { |
| | | if (!"".equals(jsonObject.get("v") + "")) { |
| | | List<String> v = StrUtil.split(jsonObject.get("v") + "", "ï¼"); |
| | | deviceSet.addAll(v); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // ç´ç»æ¨¡æ¿çæ£æµæ¥åãæ£éªæ¥åé½ä½¿ç¨æ°çåºå®ç»æè¡ï¼ä¸åè¿å
¥æ§çæ£éªé¡¹è¡¨æ ¼é»è¾ã |
| | | // ç´ç»æ¨¡æ¿ä¸çæ¿è½½è®°å½æ²¡ææ§æ£éªé¡¹å段ï¼è¿å
¥æ§é»è¾ä¼å¨æ ¼å¼åæ¶äº§ç空æéã |
| | |
| | | } |
| | | |
| | | max = a.getQuantity(); |
| | | // å£åº¦æ£éªéè¦è¿åæ£éªçè®¾å¤ |
| | | // æ¥è¯¢æ¯å¦æè¿åæ£éª |
| | | InsOrder order = insOrderMapper.selectOne(Wrappers.<InsOrder>lambdaQuery() |
| | | .eq(InsOrder::getIfsInventoryId, insOrder.getIfsInventoryId()) |
| | | .ne(InsOrder::getState, -1) |
| | | .eq(InsOrder::getOrderType, InsOrderTypeConstants.ENTER_THE_FACTORY) |
| | | .ne(InsOrder::getId, insOrder.getId()) |
| | | .last("limit 1")); |
| | | if (order != null) { |
| | | List<SampleProductDto> sampleProductDtos = insSampleMapper.selectSampleProductListByOrderId(order.getId()); |
| | | for (InsProduct b : sampleProductDtos.get(0).getInsProduct()) { |
| | | if (b.getInsProductResult() != null) { |
| | | List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class); |
| | | for (JSONObject jsonObject : jsonObjects) { |
| | | if (!"".equals(jsonObject.get("v") + "")) { |
| | | List<String> v = StrUtil.split(jsonObject.get("v") + "", "ï¼"); |
| | | deviceSet.addAll(v); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (StringUtils.isBlank(insOrder.getSampleView())) { |
| | | insOrder.setSampleView(insOrder.getSample()); |
| | | } |
| | |
| | | tables.forEach(table -> { |
| | | table.put("tableSize", tables.size() + 1); |
| | | }); |
| | | // æ°è®¢åææ¨¡æ¿éæ©è®¾å¤ï¼æ§è®¢åæ²¡ææ¨¡æ¿è®¾å¤å
³ç³»æ¶åéå°è®¢å级设å¤è®°å½ã |
| | | Set<String> reportDeviceNumbers = insOrderTemplateDeviceMapper |
| | | .selectManagementNumbersByOrderId(orderId).stream() |
| | | .filter(StringUtils::isNotBlank) |
| | | // æ¥ååªå±ç¤ºæ£éªå忍¡æ¿éæ©ç设å¤ï¼å¹¶æè®¾å¤IDå»éã |
| | | Set<Integer> reportDeviceIds = insOrderTemplateDeviceMapper |
| | | .selectDeviceIdsByOrderId(orderId).stream() |
| | | .filter(Objects::nonNull) |
| | | .collect(Collectors.toCollection(LinkedHashSet::new)); |
| | | if (reportDeviceNumbers.isEmpty()) { |
| | | reportDeviceNumbers.addAll(insOrderDeviceRecordMapper.selectDeviceNumber(orderId).stream() |
| | | .map(InsOrderDeviceRecordDto::getManagementNumber) |
| | | .filter(StringUtils::isNotBlank) |
| | | .collect(Collectors.toList())); |
| | | } |
| | | reportDeviceNumbers.addAll(deviceSet); |
| | | List<Map<String, String>> deviceList = reportDeviceNumbers.isEmpty() |
| | | ? new ArrayList<>() : insOrderMapper.selectDeviceList(reportDeviceNumbers); |
| | | List<Map<String, String>> deviceList = reportDeviceIds.isEmpty() |
| | | ? new ArrayList<>() : insOrderMapper.selectDeviceListByIds(reportDeviceIds); |
| | | if (CollectionUtils.isNotEmpty(deviceList)) { |
| | | int count = 1; |
| | | for (Map<String, String> stringMap : deviceList) { |
| | |
| | | sendTime = reportInventory.getDeclareDate(); |
| | | } |
| | | |
| | | // æ£æµæ¥æï¼é¦æ¬¡ä¿å模æ¿å¼æ¶é´-馿¬¡æäº¤æ¶é´ |
| | | // æ£æµæ¥æï¼æ±æ»æ£éªå忍¡æ¿å¡«åçæ£æµæ¶é´ï¼æ¥æç¸åæ¾ç¤ºä¸ä¸ªï¼å¦åæ¾ç¤ºææ©è³ææã |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | // æäº¤æ¶é´ |
| | | LocalDateTime submitTime = LocalDateTime.now(); |
| | | // 夿æ¯å¦ææäº¤æ¶é´ |
| | | if (insOrder.getFirstSubmitDate() != null) { |
| | | submitTime = insOrder.getFirstSubmitDate(); |
| | | } |
| | | |
| | | LocalDateTime firstInspectDate = insOrder.getFirstInspectDate(); |
| | | // åæ®µä¸çº¿åçåå²è®¢å沿ç¨åæ¥çä¸åæ¶é´ï¼é¿å
æ¹åæ¢ææ¥åå£å¾ã |
| | | if (firstInspectDate == null) { |
| | | firstInspectDate = insOrder.getSendTime(); |
| | | } |
| | | if (firstInspectDate == null) { |
| | | firstInspectDate = submitTime; |
| | | } |
| | | |
| | | String insTime = formatReportTestDate(firstInspectDate, submitTime); |
| | | |
| | | String insTimeEn = monthNames[firstInspectDate.getMonthValue() - 1] + " " + firstInspectDate.format(DateTimeFormatter.ofPattern("dd, yyyy")) + "-" |
| | | + monthNames[submitTime.getMonthValue() - 1] + " " + submitTime.format(DateTimeFormatter.ofPattern("dd, yyyy")); |
| | | List<InsOrderStandardTemplate> templateSnapshots = insOrderStandardTemplateService.list( |
| | | Wrappers.<InsOrderStandardTemplate>lambdaQuery() |
| | | .eq(InsOrderStandardTemplate::getInsOrderId, orderId) |
| | | .orderByAsc(InsOrderStandardTemplate::getSort, InsOrderStandardTemplate::getId)); |
| | | List<LocalDate> detectionDates = templateSnapshots.stream() |
| | | .map(InsOrderStandardTemplate::getDetectionTime) |
| | | .filter(Objects::nonNull) |
| | | .collect(Collectors.toList()); |
| | | String insTime = formatReportTestDate(detectionDates); |
| | | String insTimeEn = formatReportTestDateEn(detectionDates, monthNames); |
| | | |
| | | // æ£éªç¯å¢ï¼ä¼å
æ±æ»å模æ¿å¡«åçæ¸©æ¹¿åº¦ï¼æ¥åå±ç¤ºå
¨é¨æ¨¡æ¿çæå°å¼å°æå¤§å¼ã |
| | | String environment = buildReportEnvironment(orderId, insOrder); |
| | |
| | | batchNo = defaultReportText(reportInventory.getUpdateBatchNo(), reportInventory.getLotBatchNo()); |
| | | } |
| | | // æ°èç´ç»æ¨¡æ¿è®¢åï¼æ¥åä¿¡æ¯åå§æä¿¡æ¯åè®¢åæ¨¡æ¿å¿«ç
§ï¼ä¸ååè½åèå´æ åæ¹æ³ã |
| | | List<InsOrderStandardTemplate> templateSnapshots = insOrderStandardTemplateService.list( |
| | | Wrappers.<InsOrderStandardTemplate>lambdaQuery() |
| | | .eq(InsOrderStandardTemplate::getInsOrderId, orderId) |
| | | .orderByAsc(InsOrderStandardTemplate::getSort, InsOrderStandardTemplate::getId)); |
| | | boolean newJuTemplateOrder = !templateSnapshots.isEmpty() && directTemplateOrder; |
| | | if (newJuTemplateOrder) { |
| | | productName = defaultReportText(insOrder.getSampleView(), insOrder.getSample()); |
| | |
| | | for (Map<String, String> device : deviceList) { |
| | | String name = getMapText(device, "deviceName", "device_name"); |
| | | String managementNumber = getMapText(device, "managementNumber", "management_number"); |
| | | String item = defaultReportText(name, "/"); |
| | | if (StringUtils.isNotBlank(managementNumber)) { |
| | | item += "ï¼" + managementNumber; |
| | | if (StringUtils.isBlank(name) || "/".equals(name.trim())) { |
| | | continue; |
| | | } |
| | | String number = StringUtils.isBlank(managementNumber) || "/".equals(managementNumber.trim()) |
| | | ? "åºåç¼å·" : managementNumber.trim(); |
| | | String item = name.trim() + "ï¼" + number; |
| | | equipmentItems.add(item); |
| | | } |
| | | if (equipmentItems.isEmpty()) { |
| | | return "/"; |
| | | } |
| | | List<String> items = new ArrayList<>(equipmentItems); |
| | | List<String> lines = new ArrayList<>(); |
| | |
| | | return StringUtils.isNotBlank(fallback) ? fallback : "/"; |
| | | } |
| | | |
| | | private static String formatReportTestDate(LocalDateTime startTime, LocalDateTime endTime) { |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyå¹´MMæddæ¥"); |
| | | if (startTime.toLocalDate().equals(endTime.toLocalDate())) { |
| | | return startTime.format(formatter); |
| | | private static String formatReportTestDate(List<LocalDate> detectionDates) { |
| | | if (CollectionUtils.isEmpty(detectionDates)) { |
| | | return "/"; |
| | | } |
| | | return startTime.format(formatter) + "è³" + endTime.format(formatter); |
| | | LocalDate startDate = Collections.min(detectionDates); |
| | | LocalDate endDate = Collections.max(detectionDates); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyå¹´MMæddæ¥"); |
| | | if (startDate.equals(endDate)) { |
| | | return startDate.format(formatter); |
| | | } |
| | | return startDate.format(formatter) + "è³" + endDate.format(formatter); |
| | | } |
| | | |
| | | private static String formatReportTestDateEn(List<LocalDate> detectionDates, String[] monthNames) { |
| | | if (CollectionUtils.isEmpty(detectionDates)) { |
| | | return "/"; |
| | | } |
| | | LocalDate startDate = Collections.min(detectionDates); |
| | | LocalDate endDate = Collections.max(detectionDates); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd, yyyy"); |
| | | String startText = monthNames[startDate.getMonthValue() - 1] + " " + startDate.format(formatter); |
| | | if (startDate.equals(endDate)) { |
| | | return startText; |
| | | } |
| | | return startText + "-" + monthNames[endDate.getMonthValue() - 1] + " " + endDate.format(formatter); |
| | | } |
| | | |
| | | /** |