模板导入接口
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.api.vo.Result;
|
||||||
import com.zhgd.jeecg.common.constant.CommonConstant;
|
import com.zhgd.jeecg.common.constant.CommonConstant;
|
||||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||||
|
import com.zhgd.jeecg.common.execption.OpenPromptException;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.BindingResult;
|
||||||
@ -45,8 +46,8 @@ public class ExceptionHandlerAdvice {
|
|||||||
result.setCode(403);
|
result.setCode(403);
|
||||||
result.setMessage(appException.getMessage());
|
result.setMessage(appException.getMessage());
|
||||||
result.setSuccess(false);
|
result.setSuccess(false);
|
||||||
} else if (ex instanceof PromptException) {
|
} else if (ex instanceof OpenPromptException) {
|
||||||
PromptException appException = (PromptException) ex;
|
OpenPromptException appException = (OpenPromptException) ex;
|
||||||
result.setCode(200);
|
result.setCode(200);
|
||||||
result.setMessage(appException.getMessage());
|
result.setMessage(appException.getMessage());
|
||||||
result.setResult(appException.getResult());
|
result.setResult(appException.getResult());
|
||||||
|
|||||||
@ -1,24 +1,21 @@
|
|||||||
package com.zhgd.exception;
|
package com.zhgd.jeecg.common.execption;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提示异常
|
* 提示code=200异常
|
||||||
*/
|
*/
|
||||||
public class PromptException extends RuntimeException {
|
public class OpenPromptException extends RuntimeException {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
private final String message;
|
private final String message;
|
||||||
private Object result;
|
private Object result;
|
||||||
|
|
||||||
public PromptException(String message) {
|
public OpenPromptException(String message) {
|
||||||
this.message = message;
|
this.message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PromptException(String message, Object result) {
|
public OpenPromptException(String message, Object result) {
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.result = result;
|
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.gexin.fastjson.JSON;
|
import com.gexin.fastjson.JSON;
|
||||||
import com.gexin.fastjson.JSONObject;
|
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.basicdata.service.INoticeService;
|
||||||
import com.zhgd.xmgl.modules.checking.entity.CheckingPoint;
|
import com.zhgd.xmgl.modules.checking.entity.CheckingPoint;
|
||||||
import com.zhgd.xmgl.modules.checking.entity.CheckingPointInfo;
|
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.CheckingPointInfoMapper;
|
||||||
import com.zhgd.xmgl.modules.checking.mapper.CheckingPointMapper;
|
import com.zhgd.xmgl.modules.checking.mapper.CheckingPointMapper;
|
||||||
import com.zhgd.xmgl.modules.checking.service.CheckingPointService;
|
import com.zhgd.xmgl.modules.checking.service.CheckingPointService;
|
||||||
import com.zhgd.xmgl.util.DateUtils;
|
|
||||||
import com.zhgd.xmgl.util.RegionUtil;
|
import com.zhgd.xmgl.util.RegionUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -60,12 +59,12 @@ public class CheckingPointServiceImpl extends ServiceImpl<CheckingPointMapper, C
|
|||||||
// 判断用户是否存在于检查人员id列表
|
// 判断用户是否存在于检查人员id列表
|
||||||
boolean userFlag = CharSequenceUtil.split(checkingPoint.getInspectUserIds(), ",").contains(String.valueOf(userId));
|
boolean userFlag = CharSequenceUtil.split(checkingPoint.getInspectUserIds(), ",").contains(String.valueOf(userId));
|
||||||
if (!userFlag) {
|
if (!userFlag) {
|
||||||
throw new PromptException("当前用户不具备巡检权限!", false);
|
throw new OpenPromptException("当前用户不具备巡检权限!", false);
|
||||||
}
|
}
|
||||||
// 范围判定
|
// 范围判定
|
||||||
boolean inCircle = RegionUtil.isInCircle(checkingPoint.getLongitude(), checkingPoint.getLatitude(), longitude, latitude, checkingPoint.getStandArea());
|
boolean inCircle = RegionUtil.isInCircle(checkingPoint.getLongitude(), checkingPoint.getLatitude(), longitude, latitude, checkingPoint.getStandArea());
|
||||||
if (!inCircle) {
|
if (!inCircle) {
|
||||||
throw new PromptException("当前用户不在自定义范围区域内!", false);
|
throw new OpenPromptException("当前用户不在自定义范围区域内!", false);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,11 +11,19 @@ import io.swagger.annotations.ApiImplicitParams;
|
|||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections.MapUtils;
|
import org.apache.commons.collections.MapUtils;
|
||||||
|
import org.apache.poi.util.IOUtils;
|
||||||
import org.simpleframework.xml.core.Validate;
|
import org.simpleframework.xml.core.Validate;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import springfox.documentation.annotations.ApiIgnore;
|
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.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -130,4 +138,33 @@ public class SafetyHatDevController {
|
|||||||
public Result<CountVehiclePositionDevVo> countSafetyHatDev(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
|
public Result<CountVehiclePositionDevVo> countSafetyHatDev(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
|
||||||
return Result.success(safetyHatDevService.countSafetyHatDev(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.extension.service.IService;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.zhgd.xmgl.modules.vehicleposition.entity.vo.CountVehiclePositionDevVo;
|
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.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -27,4 +29,6 @@ public interface ISafetyHatDevService extends IService<SafetyHatDev> {
|
|||||||
void delete(String id);
|
void delete(String id);
|
||||||
|
|
||||||
CountVehiclePositionDevVo countSafetyHatDev(HashMap<String, Object> paramMap);
|
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;
|
package com.zhgd.xmgl.modules.safetyhat.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
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.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
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.jeecg.common.system.query.QueryGenerator;
|
||||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatAlarm;
|
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatAlarm;
|
||||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
||||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
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.safetyhat.service.ISafetyHatDevService;
|
||||||
import com.zhgd.xmgl.modules.vehicleposition.entity.vo.CountVehiclePositionDevVo;
|
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.PageUtil;
|
||||||
import com.zhgd.xmgl.util.RefUtil;
|
import com.zhgd.xmgl.util.RefUtil;
|
||||||
import org.apache.commons.collections.MapUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
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.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 智能安全帽-设备
|
* @Description: 智能安全帽-设备
|
||||||
@ -43,6 +54,8 @@ public class SafetyHatDevServiceImpl extends ServiceImpl<SafetyHatDevMapper, Saf
|
|||||||
private SafetyHatDataMapper safetyHatDataMapper;
|
private SafetyHatDataMapper safetyHatDataMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private SafetyHatFenceMapper safetyHatFenceMapper;
|
private SafetyHatFenceMapper safetyHatFenceMapper;
|
||||||
|
@Autowired
|
||||||
|
private WorkerInfoMapper workerInfoMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<SafetyHatDev> queryPageList(HashMap<String, Object> paramMap) {
|
public IPage<SafetyHatDev> queryPageList(HashMap<String, Object> paramMap) {
|
||||||
@ -111,5 +124,50 @@ public class SafetyHatDevServiceImpl extends ServiceImpl<SafetyHatDevMapper, Saf
|
|||||||
return baseMapper.countSafetyHatDev(paramMap);
|
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