diff --git a/src/main/java/com/zhgd/exception/ExceptionHandlerAdvice.java b/src/main/java/com/zhgd/exception/ExceptionHandlerAdvice.java index b065ebcf5..dfd6b5022 100644 --- a/src/main/java/com/zhgd/exception/ExceptionHandlerAdvice.java +++ b/src/main/java/com/zhgd/exception/ExceptionHandlerAdvice.java @@ -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()); diff --git a/src/main/java/com/zhgd/exception/PromptException.java b/src/main/java/com/zhgd/jeecg/common/execption/OpenPromptException.java similarity index 62% rename from src/main/java/com/zhgd/exception/PromptException.java rename to src/main/java/com/zhgd/jeecg/common/execption/OpenPromptException.java index 310e0ea3a..f6ed47c50 100644 --- a/src/main/java/com/zhgd/exception/PromptException.java +++ b/src/main/java/com/zhgd/jeecg/common/execption/OpenPromptException.java @@ -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; } diff --git a/src/main/java/com/zhgd/xmgl/modules/checking/service/impl/CheckingPointServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/checking/service/impl/CheckingPointServiceImpl.java index 1c5c8ec46..ae4dde7d1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/checking/service/impl/CheckingPointServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/checking/service/impl/CheckingPointServiceImpl.java @@ -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 countSafetyHatDev(@ApiIgnore @RequestBody HashMap 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(); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/ISafetyHatDevService.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/ISafetyHatDevService.java index fccbb3cd8..b51d50d6c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/ISafetyHatDevService.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/ISafetyHatDevService.java @@ -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 { void delete(String id); CountVehiclePositionDevVo countSafetyHatDev(HashMap paramMap); + + void importExcelTemplate(MultipartFile excelFile, String projectSn) throws Exception; } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDevServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDevServiceImpl.java index 8f76a125e..c35724e23 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDevServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDevServiceImpl.java @@ -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 queryPageList(HashMap paramMap) { @@ -111,5 +124,50 @@ public class SafetyHatDevServiceImpl extends ServiceImpl> 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 workerInfos = workerInfoMapper.selectList(new LambdaQueryWrapper() + .eq(WorkerInfo::getProjectSn, projectSn) + .eq(WorkerInfo::getInserviceType, 1) + ); + Map 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() + .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)); + } + } + } diff --git a/src/main/resources/excel/人员考勤导入模板.xlsx b/src/main/resources/excel/人员考勤导入模板.xlsx index a4eba39a7..f62f691e9 100644 Binary files a/src/main/resources/excel/人员考勤导入模板.xlsx and b/src/main/resources/excel/人员考勤导入模板.xlsx differ diff --git a/src/main/resources/excel/安全帽设备导入模板.xlsx b/src/main/resources/excel/安全帽设备导入模板.xlsx new file mode 100644 index 000000000..2243dbbc0 Binary files /dev/null and b/src/main/resources/excel/安全帽设备导入模板.xlsx differ