Commit 44b5c24f authored by 刘林's avatar 刘林

fix(jg):气瓶批量导入功能修改

parent f4f2edb3
package com.yeejoin.amos.boot.module.jg.biz.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jg.api.dto.EquipInfoCylinderExcelDto;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgRegisterInfoService;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
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.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 设备注册
......@@ -151,10 +156,39 @@ public class IdxBizJqEquipmentRegisterController extends BaseController {
@PostMapping("/importPressureVesselData")
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "压力容器设备批量导入")
public ResponseModel<String> importPressureVesselData(@RequestBody Map<String, Object> paramMap) {
return ResponseHelper.buildResponse(idxBizJgRegisterInfoService.importPressureVesselData(paramMap));
public ResponseModel<?> importPressureVesselData(@RequestBody Map<String, Object> paramMap,@RequestPart MultipartFile multipartFile) {
return ResponseHelper.buildResponse(idxBizJgRegisterInfoService.importPressureVesselData(paramMap, multipartFile));
}
/**
*
* 气瓶批量导入
* **/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/importData")
@ApiOperation(httpMethod = "POST", value = "气瓶批量导入", notes = "气瓶批量导入")
public List<EquipInfoCylinderExcelDto> ImportData (@RequestPart MultipartFile multipartFile) throws Exception {
List<EquipInfoCylinderExcelDto> aircraftList = new ArrayList<>();
try {
EasyExcel.read(multipartFile.getInputStream(), EquipInfoCylinderExcelDto.class, new AnalysisEventListener<EquipInfoCylinderExcelDto>() {
// 每读取一行就调用该方法
@Override
public void invoke(EquipInfoCylinderExcelDto data, AnalysisContext context) {
EquipInfoCylinderExcelDto fireExperts = new EquipInfoCylinderExcelDto();
BeanUtils.copyProperties(data,fireExperts);
aircraftList.add(fireExperts);
}
// 全部读取完成就调用该方法
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println("读取完成");
}
}).headRowNumber(4).sheet().doRead();
return aircraftList;
} catch (Exception e) {
throw new Exception("系统异常");
}
}
/**
* 压力容器设备模版下载
......
......@@ -36,5 +36,5 @@ public interface IIdxBizJgRegisterInfoService {
Page<JSONObject> queryEquipCanUsedByVesselPage(JSONObject jsonObject);
String importPressureVesselData(Map<String, Object> paramMap);
Object importPressureVesselData(Map<String, Object> paramMap, MultipartFile multipartFile);
}
......@@ -38,8 +38,6 @@ import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import io.minio.GetObjectArgs;
import io.minio.MinioClient;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.lucene.queryparser.classic.QueryParser;
......@@ -57,6 +55,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
......@@ -64,14 +63,11 @@ 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 java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.sql.Timestamp;
import java.util.*;
import java.util.stream.Collectors;
import static com.alibaba.fastjson.JSON.toJSONString;
......@@ -196,15 +192,6 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
@Value("${add.equip.dict.code.suffix:CATEGORY_LIST_ADD}")
private String equipAddDictCodeSuffix;
@Value("${minio.endpoint}")
private String minioEndpoint;
@Value("${minio.accessKey}")
private String accessKey;
@Value("${minio.secretKey}")
private String secretKey;
@Autowired
private IdxBizJgDesignInfoServiceImpl idxBizJgDesignInfoService;
@Autowired
......@@ -2006,37 +1993,15 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
}
@Override
public String importPressureVesselData(Map<String, Object> paramMap) {
public String importPressureVesselData(Map<String, Object> paramMap, MultipartFile multipartFile) {
try {
PressureVesselListener pressureVesselListener = new PressureVesselListener();
LinkedHashMap equipmentInfoForm = (LinkedHashMap) checkAndCast(paramMap.get(EQUIP_INFO_FORM_ID));
injectDependencies(pressureVesselListener, equipmentInfoForm);
// 初始化MinioClient对象
MinioClient minioClient = MinioClient.builder()
.endpoint(minioEndpoint)
.credentials(accessKey, secretKey)
.build();
ArrayList<?> file = (ArrayList<?>) equipmentInfoForm.get("file");
HashMap<?, ?> fileMap = (HashMap<?, ?>) file.get(0);
String url = String.valueOf(fileMap.get("url")).replaceFirst("/", "");
// /upload/tzs/amos_studio/9137475/xxx.xlsx
// 中的upload为bucket,tzs/amos_studio/9137475/xxx.xlsx为objectName
int index = url.indexOf("/");
String bucket = url.substring(0, index);
String objectName = url.substring(index + 1);
// 入参
GetObjectArgs args = GetObjectArgs.builder().bucket(bucket).object(objectName).build();
// 获取文件对象的InputStream
InputStream inputStream = minioClient.getObject(args);
EasyExcel.read(inputStream, EquipInfoCylinderExcelDto.class, pressureVesselListener)
EasyExcel.read(multipartFile.getInputStream(), EquipInfoCylinderExcelDto.class, pressureVesselListener)
.headRowNumber(4)
.sheet()
.doRead();
inputStream.close();
return pressureVesselListener.getResult();
} catch (Exception e) {
String err = (e.getCause() instanceof BadRequest) ? "模版数据填写有误:" + e.getCause().getMessage() : "导入时出现异常:请联系管理员!" ;
......
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