|
@@ -1,10 +1,29 @@
|
|
|
package com.management.platform.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.management.platform.entity.ReportExtraDegree;
|
|
|
import com.management.platform.mapper.ReportExtraDegreeMapper;
|
|
|
+import com.management.platform.mapper.UserMapper;
|
|
|
import com.management.platform.service.ReportExtraDegreeService;
|
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.management.platform.util.ExcelUtil;
|
|
|
+import com.management.platform.util.HttpRespMsg;
|
|
|
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
|
+import org.apache.poi.ss.usermodel.Row;
|
|
|
+import org.apache.poi.ss.usermodel.Sheet;
|
|
|
+import org.apache.poi.ss.usermodel.Workbook;
|
|
|
+import org.apache.poi.ss.usermodel.WorkbookFactory;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.io.*;
|
|
|
+import java.text.DateFormat;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -16,5 +35,82 @@ import org.springframework.stereotype.Service;
|
|
|
*/
|
|
|
@Service
|
|
|
public class ReportExtraDegreeServiceImpl extends ServiceImpl<ReportExtraDegreeMapper, ReportExtraDegree> implements ReportExtraDegreeService {
|
|
|
+ @Resource
|
|
|
+ ReportExtraDegreeMapper reportExtraDegreeMapper;
|
|
|
+ @Resource
|
|
|
+ UserMapper userMapper;
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg importData(HttpServletRequest request, MultipartFile multipartFile) {
|
|
|
+ HttpRespMsg msg=new HttpRespMsg();
|
|
|
+ String fileName=multipartFile.getOriginalFilename();
|
|
|
+ File file=new File(fileName == null?"file":fileName);
|
|
|
+ InputStream inputStream=null;
|
|
|
+ OutputStream outputStream=null;
|
|
|
+ Integer companyId=userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
|
+ try {
|
|
|
+ inputStream= multipartFile.getInputStream();
|
|
|
+ outputStream=new FileOutputStream(file);
|
|
|
+ byte[] buffer = new byte[4096];
|
|
|
+ int temp = 0;
|
|
|
+ while ((temp = inputStream.read(buffer, 0, 4096)) != -1) {
|
|
|
+ outputStream.write(buffer, 0, temp);
|
|
|
+ }
|
|
|
+ inputStream.close();
|
|
|
+ outputStream.close();
|
|
|
|
|
|
+ //然后解析表格
|
|
|
+ Workbook workbook = WorkbookFactory.create(new FileInputStream(file));
|
|
|
+ DateFormat df = new SimpleDateFormat("yyyy-MM");
|
|
|
+ //获取公司所有客户
|
|
|
+ List<ReportExtraDegree> allReportExtraDegree = reportExtraDegreeMapper.selectList(new QueryWrapper<ReportExtraDegree>().eq("company_id", companyId));
|
|
|
+ Sheet sheet = workbook.getSheetAt(0);
|
|
|
+ //由于第一行需要指明列对应的标题
|
|
|
+ int rowNum = sheet.getLastRowNum();
|
|
|
+ if (rowNum == 0) {
|
|
|
+ msg.setError("请填写研究中心数据");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ List<String> nameList=new ArrayList<>();
|
|
|
+ int dataCount = 0;
|
|
|
+ for (int rowIndex = 1; rowIndex <= rowNum; rowIndex++) {
|
|
|
+ Row row = sheet.getRow(rowIndex);
|
|
|
+ dataCount++;
|
|
|
+ if (row == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (ExcelUtil.isRowEmpty(row)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (row.getCell(0) == null) {
|
|
|
+ msg.setError("第"+dataCount+"行缺少中心名称");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ if(nameList.contains(row.getCell(0).toString())){
|
|
|
+ msg.setError("当前导入数据存在重复中心名称["+row.getCell(1).toString()+"]");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ nameList.add(row.getCell(0).toString());
|
|
|
+ ReportExtraDegree reportExtraDegree=new ReportExtraDegree();
|
|
|
+ List<ReportExtraDegree> collect = allReportExtraDegree.stream().filter(ap -> ap.getName().equals(row.getCell(0).toString())).collect(Collectors.toList());
|
|
|
+ reportExtraDegree.setName(row.getCell(0).toString());
|
|
|
+ reportExtraDegree.setCompanyId(companyId);
|
|
|
+ if(collect.size()>0){
|
|
|
+ Integer id=collect.get(0).getId();
|
|
|
+ reportExtraDegree.setId(id);
|
|
|
+ reportExtraDegreeMapper.updateById(reportExtraDegree);
|
|
|
+ }else{
|
|
|
+ reportExtraDegreeMapper.insert(reportExtraDegree);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ msg.data=dataCount;
|
|
|
+ return msg;
|
|
|
+ } catch (IOException e){
|
|
|
+ e.printStackTrace();
|
|
|
+ msg.setError("文件处理出错");
|
|
|
+ return msg;
|
|
|
+ } catch (InvalidFormatException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|