Commit db3c2085 authored by changxiangyu's avatar changxiangyu

联动单位信息列表导入导出

parent 62c8ba04
......@@ -4,6 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.ys.api.dto.YsEmergencyUnitDto;
import com.yeejoin.amos.boot.module.ys.api.entity.YsEmergencyUnit;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 应急联动单位管理接口类
......@@ -22,4 +27,8 @@ public interface IYsEmergencyUnitService {
YsEmergencyUnitDto querySafeUnitBySeq(Long sequenceNbr);
Page<YsEmergencyUnitDto> querySafeUnitsByPage(Page<YsEmergencyUnit> page,YsEmergencyUnitDto ysEmergencyUnitDto);
void export(HttpServletResponse response, List<String> asList);
ResponseModel<Object> expertDataImport(MultipartFile file, AgencyUserModel userModel);
}
package com.yeejoin.amos.boot.module.ys.api.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 应急联动单位管理
*
* @author system_generator
* @date 2024-09-24
*/
@Data
public class ExportYsEmergencyUnitVo{
/**
* 名称
*/
@ExcelProperty(value = "名称",index = 0)
private String name;
/**
* 关联消防队
*/
@ExcelProperty(value = "关联消防队",index = 1)
private Integer teamId;
/**
* 地址
*/
@ExcelProperty(value = "地址",index = 2)
private String address;
/**
* 经纬度
*/
@ExcelProperty(value = "经纬度",index = 3)
private String longitudeLatitude;
/**
* 应急服务内容
*/
@ExcelProperty(value = "应急服务内容",index = 4)
private String emergencyService;
/**
* 单位传真
*/
@ExcelProperty(value = "单位传真",index = 5)
private String fax;
/**
* 保障能力
*/
@ExcelProperty(value = "保障能力",index = 6)
private String guaranteeCapability;
/**
* 保障类别
*/
@ExcelProperty(value = "保障类别",index = 7)
private String guaranteeType;
/**
* 联系人
*/
@ExcelProperty(value = "联系人",index = 8)
private String linkman;
/**
* 部门代码
*/
@ExcelProperty(value = "部门代码",index = 9)
private String orgCode;
/**
* 单位概述
*/
@ExcelProperty(value = "单位概述",index = 10)
private String overview;
/**
* 负责人
*/
@ExcelProperty(value = "负责人",index = 11)
private String person;
/**
* 联系电话
*/
@ExcelProperty(value = "联系电话",index = 12)
private String phone;
/**
* 单位编号
*/
@ExcelProperty(value = "单位编号",index = 13)
private String unitNum;
/**
* 单位类型
*/
@ExcelProperty(value = "单位类型",index = 14)
private String unitType;
/**
* 行政区划编号
*/
@ExcelProperty(value = "行政区划编号",index = 15)
private String xzqhbh;
}
package com.yeejoin.amos.boot.module.ys.api.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
/**
* @author chang xiangyu 2024/9/29
* }
*/
@Data
public class ImportYsEmergencyUnitVo {
/**
* 名称 .
*/
@ExcelProperty(value = "名称",index = 0)
private String name;
/**
* 关联消防队 .
*/
@ExcelProperty(value = "关联消防队",index = 1)
private Integer teamId;
/**
* 地址 .
*/
@ExcelProperty(value = "地址",index = 2)
private String address;
/**
* 经纬度 .
*/
@ExcelProperty(value = "经纬度",index = 3)
private String longitudeLatitude;
/**
* 应急服务内容 .
*/
@ExcelProperty(value = "应急服务内容",index = 4)
private String emergencyService;
/**
* 单位传真 .
*/
@ExcelProperty(value = "单位传真",index = 5)
private String fax;
/**
* 保障能力 .
*/
@ExcelProperty(value = "保障能力",index = 6)
private String guaranteeCapability;
/**
* 保障类别 .
*/
@ExcelProperty(value = "保障类别",index = 7)
private String guaranteeType;
/**
* 联系人 .
*/
@ExcelProperty(value = "联系人",index = 8)
private String linkman;
/**
* 部门代码 .
*/
@ExcelProperty(value = "部门代码",index = 9)
private String orgCode;
/**
* 单位概述 .
*/
@ExcelProperty(value = "单位概述",index = 10)
private String overview;
/**
* 负责人 .
*/
@ExcelProperty(value = "负责人",index = 11)
private String person;
/**
* 联系电话 .
*/
@ExcelProperty(value = "联系电话",index = 12)
private String phone;
/**
* 单位编号 .
*/
@ExcelProperty(value = "单位编号",index = 13)
private String unitNum;
/**
* 单位类型 .
*/
@ExcelProperty(value = "单位类型",index = 14)
private String unitType;
/**
* 行政区划编号 .
*/
@ExcelProperty(value = "行政区划编号",index = 15)
private String xzqhbh;
/**
* 类型 .
*/
@ExcelProperty(value = "type",index = 16)
private String type;
}
......@@ -10,14 +10,19 @@ import com.yeejoin.amos.boot.module.ys.biz.service.impl.YsEmergencyUnitServiceIm
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;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
/**
......@@ -129,7 +134,7 @@ public class YsEmergencyUnitController extends BaseController {
/**
* 列表分页查询
*
* @author chang xiangyu
* @param current 当前页
* @param current 每页大小
* @return
......@@ -156,4 +161,48 @@ public class YsEmergencyUnitController extends BaseController {
public ResponseModel<List<YsEmergencyUnitDto>> selectForList() {
return ResponseHelper.buildResponse(ysEmergencyUnitServiceImpl.queryForYsEmergencyUnitList());
}
/**
* 单表导出excel
* @param response
* @param ids
*
* @author chang xiangyua
*/
//TODO
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/export")
@ApiOperation(httpMethod = "GET", value = "联动单元列表数据导出", notes = "联动单元列表数据导出")
public void expertDataExport(HttpServletResponse response, String ids) {
Assert.hasText(ids,"未选择导出数据");
iYsEmergencyUnitService.export(response, Arrays.asList(ids.split(",")));
}
/**
* @author chang xiangyu
* @param file
* @return
*/
@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 iYsEmergencyUnitService.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.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.excel.ExcelUtil;
import com.yeejoin.amos.boot.module.ys.api.common.StringUtil;
import com.yeejoin.amos.boot.module.ys.api.dto.YsEmergencyUnitDto;
import com.yeejoin.amos.boot.module.ys.api.entity.YsEmergencyRehearsal;
import com.yeejoin.amos.boot.module.ys.api.entity.YsEmergencyUnit;
import com.yeejoin.amos.boot.module.ys.api.mapper.YsEmergencyUnitMapper;
import com.yeejoin.amos.boot.module.ys.api.service.IYsEmergencyUnitService;
import com.yeejoin.amos.boot.module.ys.api.vo.ExportYsEmergencyUnitVo;
import com.yeejoin.amos.boot.module.ys.api.vo.ImportYsEmergencyUnitVo;
import com.yeejoin.amos.boot.module.ys.api.vo.RehearsalImportVo;
import com.yeejoin.amos.boot.module.ys.api.vo.RehearsalVo;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
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;
import java.util.Map;
......@@ -141,4 +159,69 @@ public class YsEmergencyUnitServiceImpl extends BaseService<YsEmergencyUnitDto,
BeanUtils.copyProperties(page,ysEmergencyUnitDtoPage);
return ysEmergencyUnitDtoPage;
}
/**
* 列表数据导出
*
* @param response 响应
* @param ids 数据id
*/
@Override
public void export(HttpServletResponse response, List<String> ids) {
LambdaQueryWrapper<YsEmergencyUnit> lambda = new QueryWrapper<YsEmergencyUnit>().lambda();
lambda.in(YsEmergencyUnit::getSequenceNbr, ids);
lambda.eq(YsEmergencyUnit::getIsDelete,Boolean.FALSE);
List<YsEmergencyUnit> experts = this.baseMapper.selectList(lambda);
List<ExportYsEmergencyUnitVo> exportData = JSON.parseArray(JSON.toJSONString(experts), ExportYsEmergencyUnitVo.class);
ExcelUtil.createTemplate(response, "联动单位信息列表数据", "联动单位信息列表", exportData, ExportYsEmergencyUnitVo.class, null, false);
}
/**
* 列表数据导入
*
* @param file excel 文件
* @return 导入结果
* @author chang xiangyu
*/
@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<YsEmergencyUnit> dataList = new ArrayList<>();
EasyExcel.read(file.getInputStream(), ImportYsEmergencyUnitVo.class, new AnalysisEventListener<ImportYsEmergencyUnitVo>() {
@Override
public void invoke(ImportYsEmergencyUnitVo data, AnalysisContext context) {
YsEmergencyUnit ysEmergencyUnit = JSON.parseObject(JSON.toJSONString(data), YsEmergencyUnit.class);
ysEmergencyUnit.setIsDelete(Boolean.FALSE);
ysEmergencyUnit.setCreateDate(new Date());
ysEmergencyUnit.setCreateUserName(userModel.getUserName());
ysEmergencyUnit.setCreateUserId(userModel.getUserId());
dataList.add(ysEmergencyUnit);
}
@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