From b081758449c9d491adf1c70a030461b24dc163fe Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期一, 14 八月 2023 17:59:31 +0800
Subject: [PATCH] 满意度调查word解析 人员管理

---
 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..57fb932 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