模板导入接口
This commit is contained in:
parent
e06785032b
commit
b111c5e338
@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.jeecg.common.constant.CommonConstant;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.jeecg.common.execption.OpenPromptException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.validation.BindingResult;
|
||||
@ -45,8 +46,8 @@ public class ExceptionHandlerAdvice {
|
||||
result.setCode(403);
|
||||
result.setMessage(appException.getMessage());
|
||||
result.setSuccess(false);
|
||||
} else if (ex instanceof PromptException) {
|
||||
PromptException appException = (PromptException) ex;
|
||||
} else if (ex instanceof OpenPromptException) {
|
||||
OpenPromptException appException = (OpenPromptException) ex;
|
||||
result.setCode(200);
|
||||
result.setMessage(appException.getMessage());
|
||||
result.setResult(appException.getResult());
|
||||
|
||||
@ -1,24 +1,21 @@
|
||||
package com.zhgd.exception;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.http.HttpStatus;
|
||||
package com.zhgd.jeecg.common.execption;
|
||||
|
||||
|
||||
/**
|
||||
* 提示异常
|
||||
* 提示code=200异常
|
||||
*/
|
||||
public class PromptException extends RuntimeException {
|
||||
public class OpenPromptException extends RuntimeException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final String message;
|
||||
private Object result;
|
||||
|
||||
public PromptException(String message) {
|
||||
public OpenPromptException(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public PromptException(String message, Object result) {
|
||||
public OpenPromptException(String message, Object result) {
|
||||
this.message = message;
|
||||
this.result = result;
|
||||
}
|
||||
@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gexin.fastjson.JSON;
|
||||
import com.gexin.fastjson.JSONObject;
|
||||
import com.zhgd.exception.PromptException;
|
||||
import com.zhgd.jeecg.common.execption.OpenPromptException;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.INoticeService;
|
||||
import com.zhgd.xmgl.modules.checking.entity.CheckingPoint;
|
||||
import com.zhgd.xmgl.modules.checking.entity.CheckingPointInfo;
|
||||
@ -19,7 +19,6 @@ import com.zhgd.xmgl.modules.checking.entity.qo.ProjectSnQO;
|
||||
import com.zhgd.xmgl.modules.checking.mapper.CheckingPointInfoMapper;
|
||||
import com.zhgd.xmgl.modules.checking.mapper.CheckingPointMapper;
|
||||
import com.zhgd.xmgl.modules.checking.service.CheckingPointService;
|
||||
import com.zhgd.xmgl.util.DateUtils;
|
||||
import com.zhgd.xmgl.util.RegionUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -60,12 +59,12 @@ public class CheckingPointServiceImpl extends ServiceImpl<CheckingPointMapper, C
|
||||
// 判断用户是否存在于检查人员id列表
|
||||
boolean userFlag = CharSequenceUtil.split(checkingPoint.getInspectUserIds(), ",").contains(String.valueOf(userId));
|
||||
if (!userFlag) {
|
||||
throw new PromptException("当前用户不具备巡检权限!", false);
|
||||
throw new OpenPromptException("当前用户不具备巡检权限!", false);
|
||||
}
|
||||
// 范围判定
|
||||
boolean inCircle = RegionUtil.isInCircle(checkingPoint.getLongitude(), checkingPoint.getLatitude(), longitude, latitude, checkingPoint.getStandArea());
|
||||
if (!inCircle) {
|
||||
throw new PromptException("当前用户不在自定义范围区域内!", false);
|
||||
throw new OpenPromptException("当前用户不在自定义范围区域内!", false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -11,11 +11,19 @@ import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.simpleframework.xml.core.Validate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@ -130,4 +138,33 @@ public class SafetyHatDevController {
|
||||
public Result<CountVehiclePositionDevVo> countSafetyHatDev(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
|
||||
return Result.success(safetyHatDevService.countSafetyHatDev(paramMap));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "模板导入下载", notes = "模板导入下载")
|
||||
@GetMapping("/downloadExcelTemplate")
|
||||
public void downloadSafetyHatDevExcelTemplate(HttpServletResponse response) {
|
||||
try {
|
||||
OutputStream out = response.getOutputStream();
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/vnd.ms-excel;charset=gb2312");
|
||||
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("安全帽设备导入模板.xlsx", "UTF-8"));
|
||||
InputStream fis = new ClassPathResource("excel/安全帽设备导入模板.xlsx").getInputStream();
|
||||
IOUtils.copy(fis, out);
|
||||
out.flush();
|
||||
out.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "模板增量导入", notes = "模板增量导入")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "query", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "file", value = "导入文件", paramType = "query", required = true, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/importExcelTemplate")
|
||||
public Result importExcelTemplate(MultipartFile file, String projectSn) throws Exception {
|
||||
safetyHatDevService.importExcelTemplate(file, projectSn);
|
||||
return Result.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,7 +4,9 @@ import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.vo.CountVehiclePositionDevVo;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@ -27,4 +29,6 @@ public interface ISafetyHatDevService extends IService<SafetyHatDev> {
|
||||
void delete(String id);
|
||||
|
||||
CountVehiclePositionDevVo countSafetyHatDev(HashMap<String, Object> paramMap);
|
||||
|
||||
void importExcelTemplate(MultipartFile excelFile, String projectSn) throws Exception;
|
||||
}
|
||||
|
||||
@ -1,30 +1,41 @@
|
||||
package com.zhgd.xmgl.modules.safetyhat.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.jeecg.common.execption.OpenPromptException;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatAlarm;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||
import com.zhgd.xmgl.modules.safetyhat.mapper.*;
|
||||
import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatAlarmMapper;
|
||||
import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDataMapper;
|
||||
import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDevMapper;
|
||||
import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatFenceMapper;
|
||||
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDevService;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.vo.CountVehiclePositionDevVo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
|
||||
import com.zhgd.xmgl.util.ExcelUtils;
|
||||
import com.zhgd.xmgl.util.MessageUtil;
|
||||
import com.zhgd.xmgl.util.PageUtil;
|
||||
import com.zhgd.xmgl.util.RefUtil;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
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 java.util.Date;
|
||||
import java.io.InputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 智能安全帽-设备
|
||||
@ -43,6 +54,8 @@ public class SafetyHatDevServiceImpl extends ServiceImpl<SafetyHatDevMapper, Saf
|
||||
private SafetyHatDataMapper safetyHatDataMapper;
|
||||
@Autowired
|
||||
private SafetyHatFenceMapper safetyHatFenceMapper;
|
||||
@Autowired
|
||||
private WorkerInfoMapper workerInfoMapper;
|
||||
|
||||
@Override
|
||||
public IPage<SafetyHatDev> queryPageList(HashMap<String, Object> paramMap) {
|
||||
@ -111,5 +124,50 @@ public class SafetyHatDevServiceImpl extends ServiceImpl<SafetyHatDevMapper, Saf
|
||||
return baseMapper.countSafetyHatDev(paramMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(noRollbackFor = OpenPromptException.class)
|
||||
public void importExcelTemplate(MultipartFile excelFile, String projectSn) throws Exception {
|
||||
if (StrUtil.isBlank(projectSn)) {
|
||||
throw new OpenAlertException("projectSn不能为空");
|
||||
}
|
||||
InputStream is = excelFile.getInputStream();
|
||||
List<Map<String, String>> list = ExcelUtils.jxlExlToList(is, 0);
|
||||
if (list == null || list.size() == 0) {
|
||||
throw new OpenAlertException(MessageUtil.get("excelNotDataErr"));
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
list.forEach(m -> {
|
||||
String name = m.get("人员名称");
|
||||
String devSn = m.get("设备序号");
|
||||
List<WorkerInfo> workerInfos = workerInfoMapper.selectList(new LambdaQueryWrapper<WorkerInfo>()
|
||||
.eq(WorkerInfo::getProjectSn, projectSn)
|
||||
.eq(WorkerInfo::getInserviceType, 1)
|
||||
);
|
||||
Map<String, WorkerInfo> nameMap = workerInfos.stream().collect(Collectors.toMap(WorkerInfo::getWorkerName, Function.identity(), (workerInfo, workerInfo2) -> null));
|
||||
WorkerInfo workerInfo = nameMap.get(name);
|
||||
if (workerInfo == null) {
|
||||
sb.append(devSn + ",");
|
||||
return;
|
||||
}
|
||||
SafetyHatDev oneDev = safetyHatDevMapper.selectOne(new LambdaQueryWrapper<SafetyHatDev>()
|
||||
.eq(SafetyHatDev::getDevSn, devSn));
|
||||
if (oneDev != null) {
|
||||
oneDev.setWorkerInfoId(workerInfo.getId());
|
||||
oneDev.setProjectSn(projectSn);
|
||||
baseMapper.updateById(oneDev);
|
||||
} else {
|
||||
SafetyHatDev dev = new SafetyHatDev();
|
||||
dev.setWorkerInfoId(workerInfo.getId());
|
||||
dev.setDevSn(devSn);
|
||||
dev.setProjectSn(projectSn);
|
||||
baseMapper.insert(dev);
|
||||
}
|
||||
});
|
||||
String str = sb.toString();
|
||||
if (StrUtil.isNotBlank(str)) {
|
||||
throw new OpenPromptException("某些设备导入失败,该人员不存在或在项目中存在多个同名人员,设备序号:" + str.substring(0, str.length() - 1));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Binary file not shown.
BIN
src/main/resources/excel/安全帽设备导入模板.xlsx
Normal file
BIN
src/main/resources/excel/安全帽设备导入模板.xlsx
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user