Commit 8f6e6682 authored by hekaiwen's avatar hekaiwen

增加导入接口

parent 57d36fb5
......@@ -6,6 +6,8 @@ import com.yeejoin.amos.boot.module.ys.api.dto.YsEmergencyExpertsDto;
import com.yeejoin.amos.boot.module.ys.api.dto.YsEmergencyRehearsalDto;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
......@@ -28,4 +30,7 @@ public interface IYsEmergencyCaseService {
YsEmergencyCaseDto queryBySequenceNbr (String sequenceNbr);
void export(HttpServletResponse response, List<String> ids);
@Transactional(rollbackFor = Exception.class)
ResponseModel<Object> expertDataImport(MultipartFile file, AgencyUserModel userModel);
}
package com.yeejoin.amos.boot.module.ys.api.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import lombok.Data;
import java.util.Date;
/**
*案例列表
*/
@Data
public class CaseImportVo {
@ExcelProperty(value = "案例名称")
String caseName;
@ExcelProperty(value = "处置对象")
String handleObject;
@ExcelProperty(value = "灾情省")
String provinceDisaster;
@ExcelProperty(value = "灾情市")
String cityDisaster;
@ExcelProperty(value = "灾情发生地点")
String locationDisaster;
@ExcelProperty(value = "群众伤亡")
String personCasualties;
@ExcelProperty(value = "灾情等级")
String disasterLevelId;
@ExcelProperty(value = "灾情大类型")
String disasterTypeId;
@ExcelProperty(value = "灾情类型")
String disasterType;
@ExcelProperty(value = "灾情细分类型id")
Integer disasterSubdivideId;
@DateTimeFormat("yyyy-MM-dd")
@ExcelProperty(value = "结束时间")
Date disasterEndTime;
@DateTimeFormat("yyyy-MM-dd")
@ExcelProperty(value = "开始时间")
Date disasterStartTime;
@DateTimeFormat("yyyy-MM-dd")
@ExcelProperty(value = "立案时间")
Date filingTime;
}
......@@ -13,9 +13,11 @@ import com.yeejoin.amos.boot.module.ys.biz.service.impl.YsEmergencyCaseServiceIm
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
......@@ -153,4 +155,28 @@ public class YsEmergencyCaseController extends BaseController {
Assert.hasText(ids,"未选择导出数据");
ysEmergencyCaseServiceImpl.export(response,Arrays.asList(ids.split(",")));
}
/**
*数据导入
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/import")
@ApiOperation(httpMethod = "POST", value = "救援案例列表数据导入", notes = "救援案例列表数据导入")
@CrossOrigin("*")
public ResponseModel<Object> expertDataImport(@RequestBody MultipartFile file) {
// 校验文件是否为空
if (file.isEmpty()) {
return ResponseHelper.buildResponse("文件不能为空");
}
// 校验文件类型为 Excel
String contentType = file.getContentType();
String fileExtension = FilenameUtils.getExtension(file.getOriginalFilename());
// 校验 Excel 文件的 MIME type 和扩展名
if (!("application/vnd.ms-excel".equals(contentType) ||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".equals(contentType)) ||
!("xls".equalsIgnoreCase(fileExtension) || "xlsx".equalsIgnoreCase(fileExtension))) {
return ResponseHelper.buildResponse("文件类型必须是 Excel 文件");
}
AgencyUserModel userModel = getSelectedOrgInfo().getUserModel();
return ysEmergencyCaseServiceImpl.expertDataImport(file,userModel);
}
}
package com.yeejoin.amos.boot.module.ys.biz.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -11,17 +16,23 @@ import com.yeejoin.amos.boot.module.ys.api.dto.YsEmergencyCaseDto;
import com.yeejoin.amos.boot.module.ys.api.entity.YsEmergencyCase;
import com.yeejoin.amos.boot.module.ys.api.mapper.YsEmergencyCaseMapper;
import com.yeejoin.amos.boot.module.ys.api.service.IYsEmergencyCaseService;
import com.yeejoin.amos.boot.module.ys.api.vo.CaseImportVo;
import com.yeejoin.amos.boot.module.ys.api.vo.CaseVo;
import com.yeejoin.amos.boot.module.ys.api.vo.RehearsalVo;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -122,4 +133,51 @@ public class YsEmergencyCaseServiceImpl extends BaseService<YsEmergencyCaseDto,Y
ExcelUtil.createTemplate(response, "案例列表数据", "案例列表列表", exportData, CaseVo.class, null, false);
}
/**
* 列表数据导入
*
* @param file excel 文件
* @return 导入结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public ResponseModel<Object> expertDataImport(MultipartFile file, AgencyUserModel userModel) {
try {
InputStream inputStream = file.getInputStream();
ExcelReader excelReader = EasyExcel.read(inputStream).build();
List<ReadSheet> sheetList = excelReader.excelExecutor().sheetList();
ReadSheet sheet = sheetList.get(0);
if (ValidationUtil.isEmpty(sheet)) {
throw new BadRequest("Excel导入模板有误,请重写下载导入!");
}
ArrayList<YsEmergencyCase> dataList = new ArrayList<>();
EasyExcel.read(file.getInputStream(), CaseImportVo.class, new AnalysisEventListener<CaseImportVo>() {
@Override
public void invoke(CaseImportVo data, AnalysisContext context) {
YsEmergencyCase emergencyCase = JSON.parseObject(JSON.toJSONString(data), YsEmergencyCase.class);
emergencyCase.setIsDelete(Boolean.FALSE);
emergencyCase.setCreateDate(new Date());
emergencyCase.setCreateUserName(userModel.getUserName());
emergencyCase.setCreateUserId(userModel.getUserId());
dataList.add(emergencyCase);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
}).headRowNumber(1).sheet().doRead();
excelReader.finish();
// 保存数据
this.saveOrUpdateBatch(dataList);
return ResponseHelper.buildResponse("success");
} catch (Exception e) {
throw new BadRequest(e.getMessage());
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment