From fca5900388c17f234ff1cb8c2248854139169bdf Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期三, 23 八月 2023 16:20:55 +0800
Subject: [PATCH] LIMS管理系统框架-开发8-23
---
cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java | 183 ++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 179 insertions(+), 4 deletions(-)
diff --git a/cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java
index 846cd7c..55da2b0 100644
--- a/cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java
@@ -1,15 +1,28 @@
package com.yuanchu.limslaboratory.service.impl;
+import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.mapper.CnasSatisfactionSurveyMapper;
import com.yuanchu.limslaboratory.pojo.CnasSatisfactionSurvey;
-import com.yuanchu.limslaboratory.pojo.Dto.CnasSatisfactionSurveyDto;
+import com.yuanchu.limslaboratory.pojo.Dto.CnasSatisfactionSurveyPageDto;
import com.yuanchu.limslaboratory.pojo.vo.CnasSatisfactionSurveyVo;
import com.yuanchu.limslaboratory.service.CnasSatisfactionSurveyService;
+import com.yuanchu.limslaboratory.service.UserService;
+import com.yuanchu.limslaboratory.utils.MultipartFileToFileUtil;
+import org.apache.poi.hwpf.HWPFDocument;
+import org.apache.poi.hwpf.extractor.WordExtractor;
+import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* @Author 寮犲
@@ -18,14 +31,176 @@
@Service
public class CnasSatisfactionSurveyServiceImpl implements CnasSatisfactionSurveyService {
+ private static final List<String> SELECT_LIST = Arrays.asList( "鈽戞弧鎰�=0", "鈽戜竴鑸�=1", "鈽戜笉婊℃剰=2");
+
@Resource
private CnasSatisfactionSurveyMapper mapper;
+ @Resource
+ private UserService userService;
+
@Override
- public CnasSatisfactionSurveyVo getCnasSatisfactionSurvey(CnasSatisfactionSurveyDto cnasSatisfactionSurveyDto) {
- Page<CnasSatisfactionSurvey>page=new Page<>(cnasSatisfactionSurveyDto.getCurrentPage(), cnasSatisfactionSurveyDto.getPageNum(),true);
- IPage<CnasSatisfactionSurvey> cnasSatisfactionSurveyIPage = mapper.selectCnasSatisfactionSurvey(page, cnasSatisfactionSurveyDto);
+ public CnasSatisfactionSurveyVo getCnasSatisfactionSurvey(CnasSatisfactionSurveyPageDto cnasSatisfactionSurveyPageDto) {
+ Page<CnasSatisfactionSurvey>page=new Page<>(cnasSatisfactionSurveyPageDto.getCurrentPage(), cnasSatisfactionSurveyPageDto.getPageNum(),true);
+ String surveyDate=DateUtil.format(cnasSatisfactionSurveyPageDto.getSurveyDate(), "yyyyMMdd");
+ String entryDate=DateUtil.format(cnasSatisfactionSurveyPageDto.getEntryDate(), "yyyyMMdd");;
+ IPage<CnasSatisfactionSurvey> cnasSatisfactionSurveyIPage = mapper.selectCnasSatisfactionSurvey(page,surveyDate,entryDate);
return new CnasSatisfactionSurveyVo(cnasSatisfactionSurveyIPage.getRecords(),cnasSatisfactionSurveyIPage.getTotal());
}
+
+ /**
+ * 鑾峰彇鐢ㄦ埛淇℃伅
+ * @param token
+ * @return
+ */
+ @Override
+ public Map<String, Object> getFillNameAndTd(String token) {
+ Map<String, Object> userInfo = userService.getUserInfo(token);
+ return userInfo;
+ }
+
+ @Override
+ public Map<String, String> wordParse(MultipartFile file) {
+ Map<String, String>result=null;
+ File multipartFileToFile = null;
+ try {
+ multipartFileToFile=MultipartFileToFileUtil.multipartFileToFile(file);
+ result=parseWord(multipartFileToFile);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }finally {
+ MultipartFileToFileUtil.delteTempFile(multipartFileToFile);
+ }
+ return result;
+ }
+
+ @Override
+ public Boolean addSurvey(CnasSatisfactionSurvey cnasSatisfactionSurvey) {
+ cnasSatisfactionSurvey.setCreatedTime(DateUtil.toLocalDateTime(DateUtil.date()));
+ return mapper.insert(cnasSatisfactionSurvey)>1;
+ }
+
+ /**
+ * 瑙f瀽word
+ * @param file
+ * @return
+ */
+ public static Map<String,String> parseWord(File file){
+ String info = "";
+ try {
+ FileInputStream fis = new FileInputStream(file);
+ String[] split = file.getName().split("\\.");
+ if ("doc".equals(split[split.length-1])) {
+ // 璇诲彇doc鏂囦欢
+ HWPFDocument doc = new HWPFDocument(fis);
+ WordExtractor docExtractor = new WordExtractor(doc);
+ String text = docExtractor.getText();
+ info = text.trim();
+ docExtractor.close();
+ } else if ("docx".equals(split[split.length-1])) {
+ // 璇诲彇docx鏂囦欢
+ XWPFDocument docx = new XWPFDocument(fis);
+ XWPFWordExtractor docxExtractor = new XWPFWordExtractor(docx);
+ String text = docxExtractor.getText();
+ System.out.println("docx:");
+ info = text.trim();
+ docxExtractor.close();
+ } else {
+ System.out.println("涓嶆槸word鏂囦欢");
+ }
+ fis.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ List<String> infoList = new ArrayList<String>();
+ String[] split = info.split("\n");
+ for (int i = 0; i < split.length; i++) {
+ if (i > 2) {
+ infoList.add(split[i]
+ .replaceAll("\r","")
+ .replaceAll(" ","")
+ .replaceAll("\t","")
+ .replaceAll("\\s","").replaceAll(" +",""));
+ }
+ }
+ Map<String, String> result = new HashMap<>();
+ //绗竴琛�
+ String unitName="鍗曚綅鍚嶇ОUnitname";
+ String projectName="椤圭洰鍚嶇ОProjectname";
+ String[] one = infoList.get(0).replace(unitName, "").split(projectName);
+ result.put("unitName",one[0]);
+ result.put("projectName",one[1]);
+ String fillName="濉〃浜哄鍚嶏紡鏃ユ湡Name/dateofthepersonfillingintheform";
+ String post="鑱屼綅Posts";
+ String telephone="鑱旂郴鐢佃瘽Contactnumber";
+ String email="閭紪Zip";
+ String[] split1 = infoList.get(1).replace(fillName, "").split(post);
+ result.put("fillName",split1[0]);
+ String[] split2 = split1[1].split(telephone);
+ result.put("post",split2[0]);
+ String[] split3 = split2[1].split(email);
+ result.put("telephone",split3[0]);
+ result.put("email",split3[1]);
+ //绗簩琛�
+ String serviceAttitude="鏈嶅姟鎬佸害Serviceattitude";
+ //鏈嶅姟鎬佸害鍜屽缓璁�
+ String two = getSelectAndAdvise(infoList.get(2), serviceAttitude);
+ result.put("serviceAttitude",two);
+ //绗笁琛�
+ String technicalPower="鎶�鏈兘鍔汿echnicalcompetence";
+ String three = getSelectAndAdvise(infoList.get(3), technicalPower);
+ result.put("technicalPower",three);
+ //绗洓琛�
+ String testJob="妫�娴嬪伐浣淚nspectionwork";
+ String four = getSelectAndAdvise(infoList.get(4), testJob);
+ result.put("testJob",four);
+ //绗簲琛�
+ String reasonableCharge="鏀惰垂鍚堢悊鎬easonablefees";
+ String five = getSelectAndAdvise(infoList.get(5), reasonableCharge);
+ result.put("reasonableCharge",five);
+ //绗叚琛�
+ String improvementRequirements="鏀硅繘鐨勮姹傦細";
+ String requirementsForImprovement="Requirementsforimprovement:";
+ String six = infoList.get(6).replace(improvementRequirements, "").replace(requirementsForImprovement, "");
+ result.put("improvementRequirements",six);
+ //绗竷琛�
+ String otherSupplements="鎮ㄥ鎴戜滑鐨勫笇鏈涳細";
+ String otherEnglish="Whatyouwantfromus:";
+ String seven = infoList.get(7).replace(otherSupplements, "").replace(otherEnglish, "");
+ result.put("otherSupplements",seven);
+ return result;
+ }
+
+
+ /**
+ * 鑾峰彇閫夋嫨浠ュ強寤鸿
+ * @param str
+ * @param type
+ * @return
+ */
+ public static String getSelectAndAdvise(String str,String type){
+ String adviseInfo="寤鸿锛�";
+ String suggestion="Suggestion:";
+ String satisfied="Satisfied";
+ String general="General";
+ String dissatisfied="Dissatisfied";
+ String[] split4 = str.replace(type, "").replace(suggestion, "").split(adviseInfo);
+ List<String>select=new ArrayList<>();
+ String advise=split4[1];
+ String[] split5 = split4[0].split(satisfied);
+ select.add(split5[0]);
+ String[] split6 = split5[1].split(general);
+ select.add(split6[0]);
+ select.add(split6[1].replace(dissatisfied,""));
+ String selected = getSelected(select);
+ return selected+"/$"+advise;
+ }
+
+ public static String getSelected(List<String> select){
+ String collect = SELECT_LIST.stream().filter(item -> select.stream()
+ .map(e -> e).collect(Collectors.toList())
+ .contains(item.split("=")[0])).collect(Collectors.joining());
+ return collect.split("=")[1];
+ }
}
--
Gitblit v1.9.3