| | |
| | | import com.deepoove.poi.data.style.TableStyle; |
| | | import com.yuanchu.mom.common.GetLook; |
| | | import com.yuanchu.mom.common.PrintChina; |
| | | import com.yuanchu.mom.dto.ExcelDto; |
| | | import com.yuanchu.mom.dto.InsOrderPlanDTO; |
| | | import com.yuanchu.mom.dto.SampleProductDto; |
| | | import com.yuanchu.mom.mapper.*; |
| | |
| | | import com.yuanchu.mom.utils.MatrixToImageWriter; |
| | | import com.yuanchu.mom.utils.QueryWrappers; |
| | | import com.yuanchu.mom.vo.InsOrderPlanVO; |
| | | import org.apache.commons.io.IOUtils; |
| | | import org.apache.poi.xwpf.usermodel.TableRowAlign; |
| | | import org.apache.poi.xwpf.usermodel.XWPFTable; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.ResourceUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.IOException; |
| | | import java.io.*; |
| | | import java.nio.file.Files; |
| | | import java.nio.file.Paths; |
| | | import java.time.LocalDateTime; |
| | |
| | | import java.util.stream.Collectors; |
| | | import java.util.concurrent.CompletableFuture; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.stream.Stream; |
| | | |
| | | /** |
| | | * æ£éªä»»å¡-ä¸å¡å®ç°å± |
| | |
| | | insOrder.setId(id); |
| | | InsOrder order = insOrderMapper.selectById(id); |
| | | if (BeanUtil.isEmpty(order.getInsTime())) { |
| | | insOrder.setInsState(1); |
| | | insOrder.setInsTime(LocalDateTime.now()); |
| | | insOrderMapper.updateById(insOrder); |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, id).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, LocalDateTime.now()).set(InsOrderState::getInsState, 1)); |
| | | } |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, id).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, LocalDateTime.now()).set(InsOrderState::getInsState, 1)); |
| | | Map<String, Object> map = insOrderService.getInsOrderAndSample(id, laboratory); |
| | | Set<Integer> set = new HashSet<>(); |
| | | Map<Integer, String> map2 = new HashMap<>(); |
| | |
| | | } |
| | | result.setEquipValue(JSON.toJSONString(ev)); |
| | | } |
| | | if (jo.get("equipName") != null) { |
| | | JSONArray jsonArray2 = JSON.parseArray(JSON.toJSONString(jo.get("equipName"))); |
| | | List<Map<String, Object>> ev = new ArrayList<>(); |
| | | for (Object o : jsonArray2) { |
| | | JSONObject equipValue = JSON.parseObject(JSON.toJSONString(o)); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("v", JSON.parseObject(JSON.toJSONString(equipValue.get("v"))).get("v")); |
| | | ev.add(map); |
| | | } |
| | | result.setEquipName(JSON.toJSONString(ev)); |
| | | } |
| | | try { |
| | | JSONObject insResult = JSON.parseObject(JSON.toJSONString(jo.get("insResult"))); |
| | | String ir = JSON.parseObject(JSON.toJSONString(insResult.get("v"))).get("v") + ""; |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) { |
| | | Integer num = (type == 1 ? 5 : 4); |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, orderId).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, LocalDateTime.now()).set(InsOrderState::getInsState, num).set(InsOrderState::getVerifyTell, tell).set(InsOrderState::getVerifyUser, getLook.selectPowerByMethodAndUserId(null).get("userId"))); |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, orderId).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, now).set(InsOrderState::getInsState, num).set(InsOrderState::getVerifyTell, tell).set(InsOrderState::getVerifyUser, getLook.selectPowerByMethodAndUserId(null).get("userId"))); |
| | | List<InsOrderState> insOrderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery().eq(InsOrderState::getInsOrderId, orderId)); |
| | | long count = insOrderStates.stream().filter(a -> a.getInsState() == 5).count(); |
| | | if (count == insOrderStates.size() && num == 5) { |
| | |
| | | List<Map<String, Object>> tables = new ArrayList<>(); |
| | | Set<String> standardMethod = new HashSet<>(); |
| | | Set<String> deviceSet = new HashSet<>(); |
| | | AtomicReference<String> models = new AtomicReference<>(""); |
| | | AtomicReference<Integer> productSize = new AtomicReference<>(0); |
| | | String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; |
| | | samples.forEach(a -> { |
| | | Set<String> templateSet = new HashSet<>(); |
| | | getTemplateThing(set, map2, a); |
| | | a.getInsProduct().forEach(b -> { |
| | | String[] split = b.getMethod().replaceAll("]", "").replaceAll("\\[", "").replaceAll("\"", "").split(","); |
| | | standardMethod.addAll(Arrays.asList(split)); |
| | | for (InsProduct b : a.getInsProduct()) { |
| | | models.set(models.get()+b.getModel()); |
| | | standardMethod.add(b.getMethodS()); |
| | | productSize.set(productSize.get()+1); |
| | | if (b.getInsProductResult() != null) { |
| | | if (b.getInsProductResult().getEquipValue() != null && !Objects.equals(b.getInsProductResult().getEquipValue(), "")) { |
| | | deviceSet.add(b.getInsProductResult().getEquipValue()); |
| | | List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class); |
| | | for (JSONObject jsonObject : jsonObjects) { |
| | | if (!"".equals(jsonObject.get("v") + "")) { |
| | | deviceSet.add(jsonObject.get("v") + ""); |
| | | } |
| | | } |
| | | } |
| | | if (b.getTemplate().size() == 0) { |
| | | return; |
| | | continue; |
| | | } |
| | | templateSet.add(JSON.toJSONString(b.getTemplate())); |
| | | }); |
| | | } |
| | | AtomicInteger index = new AtomicInteger(); |
| | | templateSet.forEach(tem -> { |
| | | Set<Integer> set2 = new HashSet<>(); |
| | |
| | | List<TextRenderData> text = new ArrayList<>(); |
| | | RowRenderData rowRenderData; |
| | | Set<String> delSet = new HashSet<>(); |
| | | List<JSONObject> temp = JSON.parseArray(tem, JSONObject.class); |
| | | List<ExcelDto> excelDtos = JSON.parseArray(tem, ExcelDto.class); |
| | | List<ExcelDto> mcList = new ArrayList<>(); |
| | | excelDtos.forEach(b -> { |
| | | if (b.getV().getMc() != null && b.getV().getMc().getCs() != null && b.getV().getMc().getRs() != null) { |
| | | mcList.add(b); |
| | | } |
| | | }); |
| | | int count5 = 0; |
| | | for (ExcelDto b : mcList) { |
| | | for (ExcelDto excelDto : excelDtos) { |
| | | for (int i = 0; i < b.getV().getMc().getCs(); i++) { |
| | | for (int i2 = 0; i2 < b.getV().getMc().getRs(); i2++) { |
| | | if (excelDto.getC() == b.getC() + i && excelDto.getR() == b.getR() + i2) { |
| | | ExcelDto bb = JSON.parseObject(JSON.toJSONString(b), ExcelDto.class); |
| | | excelDto.getV().setV(bb.getV().getV()); |
| | | excelDto.getV().setPs(bb.getV().getPs()); |
| | | excelDto.getV().setFc(bb.getV().getFc()); |
| | | excelDto.getV().setFs(bb.getV().getFs()); |
| | | excelDto.getV().setHt(bb.getV().getHt()); |
| | | excelDto.setMc(count5); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | count5++; |
| | | } |
| | | List<JSONObject> temp = JSON.parseArray(JSON.toJSONString(excelDtos), JSONObject.class); |
| | | Map<String, InsProduct> pMap = new HashMap<>(); |
| | | Set<String> delRSet = new HashSet<>(); |
| | | for (JSONObject jo1 : temp) { |
| | | JSONObject v = JSON.parseObject(JSON.toJSONString(jo1.get("v"))); |
| | | if (v.get("ps") != null) { |
| | | if ("æ£éªå¼".equals(JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "") || "设å¤".equals(JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "")) { |
| | | int count3 = 0; |
| | | String str = ""; |
| | | if ("æ£éªå¼".equals(JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "") || "设å¤åç§°".equals(JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "") || "设å¤ç¼ç ".equals(JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "")) { |
| | | delSet.add(jo1.get("c") + ""); |
| | | continue; |
| | | } |
| | | if ("æ£éªå项".equals(JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "")) { |
| | | for (JSONObject jo2 : temp) { |
| | | JSONObject v2 = JSON.parseObject(JSON.toJSONString(jo2.get("v"))); |
| | | if (jo1.get("r").equals(jo2.get("r"))) { |
| | | if (v2.get("ps") != null && JSON.parseObject(JSON.toJSONString(v2.get("ps"))).get("value").equals("æ£éªé¡¹")) { |
| | | if (count3 == 0) { |
| | | str += v2.get("v"); |
| | | count3 += 1; |
| | | } |
| | | } else if (v2.get("ps") != null && JSON.parseObject(JSON.toJSONString(v2.get("ps"))).get("value").equals("æ£éªå项")) { |
| | | if (count3 == 1) { |
| | | str += v2.get("v"); |
| | | count3 += 1; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (!str.equals("")) { |
| | | int count2 = 0; |
| | | for (InsProduct p : a.getInsProduct()) { |
| | | if (v.get("v").equals(p.getInspectionItemSubclass())) { |
| | | pMap.put(jo1.get("r") + "", p); |
| | | for (InsProduct product : a.getInsProduct()) { |
| | | if ((product.getInspectionItem() + product.getInspectionItemSubclass()).equals(str)) { |
| | | pMap.put(jo1.get("r") + "", product); |
| | | break; |
| | | } else { |
| | | count2++; |
| | |
| | | delRSet.add(jo1.get("r") + ""); |
| | | } |
| | | } |
| | | } else { |
| | | if ("åæ°".equals(v.get("v"))) delSet.add(jo1.get("c") + ""); |
| | | } |
| | | } |
| | | for (int i = 0; i < temp.size(); i++) { |
| | | JSONObject jo1 = temp.get(i); |
| | | if (delRSet.stream().anyMatch(e -> e.equals(jo1.get("r") + ""))) { |
| | | continue; |
| | | } |
| | | if (delSet.stream().anyMatch(e -> e.equals(jo1.get("c") + ""))) { |
| | | continue; |
| | | } |
| | | TextRenderData textRenderData = new TextRenderData(); |
| | | if (set2.add(Integer.parseInt(jo1.get("r") + ""))) { |
| | | if (text.size() > 0) { |
| | |
| | | rows.add(rowRenderData); |
| | | text = new ArrayList<>(); |
| | | } |
| | | } |
| | | if (delRSet.stream().anyMatch(e -> e.equals(jo1.get("r") + ""))) { |
| | | continue; |
| | | } |
| | | if (delSet.stream().anyMatch(e -> e.equals(jo1.get("c") + ""))) { |
| | | continue; |
| | | } |
| | | JSONObject v = JSON.parseObject(JSON.toJSONString(jo1.get("v"))); |
| | | InsProduct p = pMap.get(jo1.get("r") + ""); |
| | |
| | | textRenderData.setText(a.getModel()); |
| | | } else if (value.equals("æ ·ååç§°")) { |
| | | textRenderData.setText(a.getSample()); |
| | | } else if (value.equals("è¯éªæ¹æ³")) { |
| | | textRenderData.setText(p.getMethodS()); |
| | | } else { |
| | | textRenderData.setText(v.get("v") == null ? "" : v.get("v") + ""); |
| | | } |
| | |
| | | Style style = new Style(); |
| | | style.setFontFamily(v.get("ff") == null ? "微软é
é»" : v.get("ff") + ""); |
| | | // style.setFontSize(v.get("fs")==null?14:Integer.parseInt(v.get("fs")+"")); |
| | | style.setColor(v.get("fc") == null ? "000000" : (v.get("fc") + "").replace("#", "")); |
| | | if (!((v.get("fc") + "").indexOf("rgb") > -1)) { |
| | | style.setColor(v.get("fc") == null ? "000000" : (v.get("fc") + "").replace("#", "")); |
| | | } else { |
| | | style.setColor("000000"); |
| | | } |
| | | textRenderData.setStyle(style); |
| | | text.add(textRenderData); |
| | | if (i == temp.size() - 1) { |
| | |
| | | }); |
| | | String url; |
| | | try { |
| | | url = ResourceUtils.getURL("classpath:static/report-template.docx").getPath(); |
| | | InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx"); |
| | | File file = File.createTempFile("temp", ".tmp");OutputStream outputStream = new FileOutputStream(file); |
| | | IOUtils.copy(inputStream, outputStream); |
| | | url = file.getAbsolutePath(); |
| | | } catch (FileNotFoundException e) { |
| | | throw new ErrorException("æ¾ä¸å°æ¨¡æ¿æä»¶"); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | StringBuilder standardMethod2 = new StringBuilder(); |
| | | for (String s : standardMethod) { |
| | |
| | | tables.forEach(table -> { |
| | | table.put("tableSize", tables.size() + 1); |
| | | }); |
| | | List<Map<String, String>> deviceList = insOrderMapper.selectDeviceList(deviceSet); |
| | | // List<Map<String, String>> deviceList = insOrderMapper.selectDeviceList(deviceSet); |
| | | List<Map<String, String>> deviceList = new ArrayList<>(); |
| | | Map<String, String> codeStr = new HashMap<>(); |
| | | codeStr.put("æ¥åç¼å·", insReport.getCode()); |
| | | codeStr.put("æ ·ååç§°", insOrder.getSample()); |
| | | codeStr.put("è§æ ¼åå·", samples.get(0).getModel()); |
| | | codeStr.put("åæ¾æ¥æ", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
| | | codeStr.put("åæ¾æ¥æ", now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
| | | String codePath; |
| | | try { |
| | | codePath = new MatrixToImageWriter().code(JackSonUtil.marshal(codeStr).replaceAll("\\{", "") |
| | |
| | | put("standardMethod", standardMethod2); |
| | | put("deviceList", deviceList); |
| | | put("twoCode", Pictures.ofLocal(codePath).create()); |
| | | put("models", models); |
| | | put("productSize", productSize); |
| | | put("createTime", now.format(DateTimeFormatter.ofPattern("yyyyå¹´MMæddæ¥"))); |
| | | put("createTimeEn", monthNames[now.getMonthValue()-1]+" "+now.getDayOfMonth()+", "+now.getYear()); |
| | | put("insTime", insOrder.getInsTime().format(DateTimeFormatter.ofPattern("yyyyå¹´MMæddæ¥"))); |
| | | put("insTimeEn", monthNames[insOrder.getInsTime().getMonthValue()-1]+" "+now.getDayOfMonth()+", "+now.getYear()); |
| | | put("writeUrl", null); |
| | | put("insUrl", null); |
| | | put("examineUrl", null); |
| | | put("ratifyUrl", null); |
| | | }}); |
| | | try { |
| | | String name = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yy_MM_dd&HH_mm_ss")) + ".docx"; |
| | | String name = now.format(DateTimeFormatter.ofPattern("yy_MM_dd&HH_mm_ss")) + ".docx"; |
| | | template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name))); |
| | | insReport.setUrl("/word/" + name); |
| | | insReportMapper.insert(insReport); |
| | | insOrder.setState(4); |
| | | // insOrder.setState(4); |
| | | insOrder.setInsState(5); |
| | | insOrderMapper.updateById(insOrder); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | |
| | | if (insProducts.size() > 0) { |
| | | String str = ""; |
| | | for (InsProduct product : insProducts) { |
| | | str += product.getInspectionItem()+product.getInspectionItemSubclass()+"ï¼"; |
| | | str += product.getInspectionItem() + product.getInspectionItemSubclass() + "ï¼"; |
| | | } |
| | | throw new ErrorException("以䏿¯æªæ£éªç项ç®ï¼"+str); |
| | | throw new ErrorException("以䏿¯æªæ£éªç项ç®ï¼" + str); |
| | | } |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, orderId).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, LocalDateTime.now()).set(InsOrderState::getInsState, 3)); |
| | | return 1; |