diff --git a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/BigDeviceDriverRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/BigDeviceDriverRecordServiceImpl.java index 27dd45375..906965b48 100644 --- a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/BigDeviceDriverRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/BigDeviceDriverRecordServiceImpl.java @@ -1,13 +1,24 @@ package com.zhgd.xmgl.modules.bigdevice.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.xmgl.modules.bigdevice.entity.BigDeviceDriverRecord; import com.zhgd.xmgl.modules.bigdevice.mapper.BigDeviceDriverRecordMapper; import com.zhgd.xmgl.modules.bigdevice.service.IBigDeviceDriverRecordService; +import com.zhgd.xmgl.modules.worker.entity.WorkerCertificate; +import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; +import com.zhgd.xmgl.modules.worker.service.IWorkerCertificateService; +import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @Description: 塔吊升降机驾驶员记录 @@ -17,6 +28,13 @@ import java.util.List; */ @Service public class BigDeviceDriverRecordServiceImpl extends ServiceImpl implements IBigDeviceDriverRecordService { + @Lazy + @Autowired + private IWorkerInfoService workerInfoService; + @Lazy + @Autowired + private IWorkerCertificateService workerCertificateService; + @Override public void saveBigDeviceDriverRecord(List driverList, String bigDevId, String projectSn, int type) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -25,7 +43,23 @@ public class BigDeviceDriverRecordServiceImpl extends ServiceImpl 0) { + List workerIds = driverList.stream().map(BigDeviceDriverRecord::getWorkerId).collect(Collectors.toList()); + Map workerMap = workerInfoService.list(new LambdaQueryWrapper() + .in(WorkerInfo::getId, workerIds)).stream().collect(Collectors.toMap(WorkerInfo::getId, Function.identity(), (o1, o2) -> o1)); + Map certificateMap = workerCertificateService.list(new LambdaQueryWrapper() + .in(WorkerCertificate::getWorkerId, workerIds)).stream().filter(t -> getCerType(type, t.getId())).collect(Collectors.toMap(WorkerCertificate::getWorkerId, Function.identity(), (o1, o2) -> o1)); for (BigDeviceDriverRecord deviceDriverRecord : driverList) { + WorkerInfo workerInfo = workerMap.get(deviceDriverRecord.getWorkerId()); + if (workerInfo != null) { + deviceDriverRecord.setDriverName(workerInfo.getWorkerName()); + deviceDriverRecord.setDriverIdCard(workerInfo.getIdCard()); + deviceDriverRecord.setDriverPhone(workerInfo.getPhoneNumber()); + deviceDriverRecord.setImageUrl(workerInfo.getFieldAcquisitionUrl()); + WorkerCertificate certificate = certificateMap.get(deviceDriverRecord.getWorkerId()); + if (certificate != null) { + deviceDriverRecord.setCertificateNumber(certificate.getCertificateNumber()); + } + } deviceDriverRecord.setProjectSn(projectSn); deviceDriverRecord.setType(type); deviceDriverRecord.setDevSn(bigDevId); @@ -33,4 +67,19 @@ public class BigDeviceDriverRecordServiceImpl extends ServiceImpl { Integer countAlarmNumToday(HashMap paramMap); + Integer countAlarmNumYesterday(HashMap paramMap); + /** * 统计昨日报警次数 * diff --git a/src/main/java/com/zhgd/xmgl/modules/bridgeCrane/mapper/xml/BridgeCraneAlarmMapper.xml b/src/main/java/com/zhgd/xmgl/modules/bridgeCrane/mapper/xml/BridgeCraneAlarmMapper.xml index 8106ed474..150692a3d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/bridgeCrane/mapper/xml/BridgeCraneAlarmMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/bridgeCrane/mapper/xml/BridgeCraneAlarmMapper.xml @@ -15,14 +15,14 @@ + diff --git a/src/main/java/com/zhgd/xmgl/modules/video/controller/VideoItemController.java b/src/main/java/com/zhgd/xmgl/modules/video/controller/VideoItemController.java index 241f8c0f3..fcfb074fe 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/controller/VideoItemController.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/controller/VideoItemController.java @@ -575,6 +575,7 @@ public class VideoItemController { if (list == null || list.size() == 0) { throw new OpenAlertException(MessageUtil.get("excelNotDataErr")); } + checkExcel(list, videoType); Map groupMap = videoGroupService.list(new LambdaQueryWrapper() .eq(VideoGroup::getProjectSn, projectSn)).stream().collect(Collectors.toMap(VideoGroup::getGroupName, Function.identity(), (o1, o2) -> o1)); ProjectVideoConfig videoConfig = projectVideoConfigService.getOne(new LambdaQueryWrapper() @@ -586,7 +587,6 @@ public class VideoItemController { } List videoItems = new ArrayList<>(); List sucList = new ArrayList<>(); - List failVideoList = new ArrayList<>(); List failGroupList = new ArrayList<>(); for (Map importInfo : list) { VideoGroup group = groupMap.get(importInfo.get("*视频分组")); @@ -619,11 +619,45 @@ public class VideoItemController { videoItem.setAiVideoUrl(aiVideoUrl); videoItem.setDefaultStreamType(defaultStreamType); videoItems.add(videoItem); + sucList.add(videoName); } videoItemService.saveBatch(videoItems); - return Result.ok(StrUtil.format("导入完成。导入成功:你好,阿爸{};导入失败:嘉兴、囧扥就(),军方,周邓个(){}")); + StringJoiner joiner = new StringJoiner(";"); + if (sucList.size() > 0) { + joiner.add("导入成功:" + StrUtil.join(",", sucList)); + } + if (failGroupList.size() > 0) { + joiner.add("导入失败(分组不存在):" + StrUtil.join(",", failGroupList)); + } + String result = "导入完成。" + (joiner.length() > 0 ? joiner.toString() : ""); + return Result.ok(result); + } catch (OpenAlertException e) { + throw e; } catch (Exception e) { throw new OpenAlertException("导入excel失败", e); } } + + private void checkExcel(List> list, Integer videoType) { + for (Map map : list) { + String videoName = map.get("*设备名称"); + String serialNumber = map.get("*监控点"); + String group = map.get("*视频分组"); + String verificationCode = map.get("*通道号"); + if (StrUtil.isBlank(videoName)) { + throw new OpenAlertException("设备名称不能为空"); + } + if (StrUtil.isBlank(serialNumber)) { + throw new OpenAlertException("监控点不能为空"); + } + if (StrUtil.isBlank(group)) { + throw new OpenAlertException("视频分组不能为空"); + } + if (Objects.equals(videoType, 1)) { + if (StrUtil.isBlank(verificationCode)) { + throw new OpenAlertException("通道号不能为空"); + } + } + } + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/entity/WorkerExitConfig.java b/src/main/java/com/zhgd/xmgl/modules/worker/entity/WorkerExitConfig.java index c8f7b55f6..84e91dd9d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/entity/WorkerExitConfig.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/entity/WorkerExitConfig.java @@ -1,17 +1,15 @@ package com.zhgd.xmgl.modules.worker.entity; -import java.io.Serializable; -import java.util.Date; - import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; -import org.springframework.format.annotation.DateTimeFormat; -import org.jeecgframework.poi.excel.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; /** * @Description: 人员退场配置 @@ -62,10 +60,16 @@ public class WorkerExitConfig implements Serializable { @ApiModelProperty(value = "人员未打卡超过n天系统自动将人员退场") private java.lang.Integer exitIfAbsenceDay; /** - * 是否将此处退场人员拉入黑名库1是0否 + * 拉黑时是否退场1是0否 */ - @ApiModelProperty(value = "是否将此处退场人员拉入黑名库1是0否") - private java.lang.Integer enableBlack; + @ApiModelProperty(value = "拉黑时是否退场1是0否") + private java.lang.Integer enableExitWhenBlack; + /** + * 1将此处人员清除全部通行闸机授权2将此处人员退场3将此处人员拉入黑名单库 + */ + @ApiModelProperty(value = "1将此处人员清除全部通行闸机授权2将此处人员退场3将此处人员拉入黑名单库") + private java.lang.Integer exitType; + /** * 创建时间 */ diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityQualityInspectionRecordController.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityQualityInspectionRecordController.java index 6be5d9957..fa3f8ece7 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityQualityInspectionRecordController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityQualityInspectionRecordController.java @@ -803,6 +803,23 @@ public class XzSecurityQualityInspectionRecordController { } } + @ApiOperation(value = "批量删除安全检查记录", notes = "批量删除安全检查记录", httpMethod = "POST") + @ApiImplicitParam(name = "ids", value = "安全检查记录ids(多个,分隔)", paramType = "body", required = true, dataType = "String") + @PostMapping(value = "/deleteBatch") + public Result deleteBatch(@ApiIgnore @RequestBody Map map) { + Result result = new Result<>(); + String ids = MapUtils.getString(map, "ids"); + if (ids == null || "".equals(ids.trim())) { + result.error500("参数不识别!"); + } else { + for (String id : Arrays.asList(ids.split(","))) { + qualityInspectionRecordService.deleteQualityInspectionRecord(id); + } + Result.success("删除成功!"); + } + return result; + } + public String getStatusText(Integer status) { if (status == null) { return ""; diff --git a/src/main/java/com/zhgd/xmgl/task/WorkerTask.java b/src/main/java/com/zhgd/xmgl/task/WorkerTask.java index ebba7066b..300c2c25a 100644 --- a/src/main/java/com/zhgd/xmgl/task/WorkerTask.java +++ b/src/main/java/com/zhgd/xmgl/task/WorkerTask.java @@ -41,7 +41,10 @@ import com.zhgd.xmgl.modules.worker.mapper.WorkerCertificateMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; import com.zhgd.xmgl.modules.worker.service.*; import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl; -import com.zhgd.xmgl.modules.xz.entity.*; +import com.zhgd.xmgl.modules.xz.entity.XzCertificateExpireAlarmRecord; +import com.zhgd.xmgl.modules.xz.entity.XzWorkerSafeWatchAlarm; +import com.zhgd.xmgl.modules.xz.entity.XzWorkerSafeWatchConfig; +import com.zhgd.xmgl.modules.xz.entity.XzWorkerSafeWatchManager; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityInspectTaskItemRecord; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityInspectTaskRecord; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityQualityInspectionRecord; @@ -56,7 +59,10 @@ import com.zhgd.xmgl.modules.xz.service.IXzWorkerSafeWatchAlarmService; import com.zhgd.xmgl.modules.xz.service.IXzWorkerSafeWatchConfigService; import com.zhgd.xmgl.modules.xz.service.IXzWorkerSafeWatchManagerService; import com.zhgd.xmgl.modules.xz.service.impl.XzCertificateExpireAlarmRecordServiceImpl; -import com.zhgd.xmgl.util.*; +import com.zhgd.xmgl.util.Base64Util; +import com.zhgd.xmgl.util.ElecardUtil; +import com.zhgd.xmgl.util.MapBuilder; +import com.zhgd.xmgl.util.NumberUtils; import lombok.extern.slf4j.Slf4j; import net.javacrumbs.shedlock.core.SchedulerLock; import org.apache.commons.lang3.StringUtils; @@ -75,8 +81,6 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Function; import java.util.stream.Collectors; -import static com.zhgd.xmgl.modules.project.enums.ProjectUfaceConfigSupplierTypeEnum.ZYMQTT; - /** * @program: wisdomSite * @description: 劳务人员定时任务 @@ -585,7 +589,7 @@ public class WorkerTask { } List alarmUserIds = getAlarmWorkerIds(record); Integer safeWatchAlarmExceedMinute = record.getSafeWatchAlarmExceedMinute(); - if (safeWatchAlarmExceedMinute >= minute) { + if (safeWatchAlarmExceedMinute != null && safeWatchAlarmExceedMinute >= minute) { Integer mod = NumberUtils.mod(safeWatchAlarmExceedMinute, minute); if (mod == 0) { HashSet noticeUserIds = configIdToNoticeUserIdsMap.get(config.getId()); @@ -1020,54 +1024,64 @@ public class WorkerTask { @SchedulerLock(name = "updateWorkerExit", lockAtMostFor = 1000 * 55, lockAtLeastFor = 1000 * 55) @RequestMapping("updateWorkerExit") public void updateWorkerExit() { - Map project2ConfigMap = workerExitConfigService.list(new LambdaQueryWrapper() - .eq(WorkerExitConfig::getEnable, 1)).stream().collect(Collectors.toMap(WorkerExitConfig::getProjectSn, Function.identity(), (o1, o2) -> o1)); - List projects = projectMapper.selectList(new LambdaQueryWrapper()); - for (Project project : projects) { - String projectSn = project.getProjectSn(); - WorkerExitConfig config = project2ConfigMap.get(projectSn); - if (config != null) { - //退场人员列表 - HashMap param = new MapBuilder() - .put("projectSn", projectSn) - .put("exitIfAbsenceDay", config.getExitIfAbsenceDay()) - .build(); - param.put("workerIdList", StrUtil.split(config.getWorkerIds(), ",")); - param.put("departmentIdList", StrUtil.split(config.getDepartmentIds(), ",")); - param.put("teamIdList", StrUtil.split(config.getTeamIds(), ",")); - param.put("enterpriseIdList", StrUtil.split(config.getEnterpriseIds(), ",")); -// if (StrUtil.isNotBlank(config.getWorkerIds())) { -// } else if (StrUtil.isNotBlank(config.getDepartmentIds()) || StrUtil.isNotBlank(config.getTeamIds())) { -// } else if (StrUtil.isNotBlank(config.getEnterpriseIds())) { -// } - List exitWorkers = workerAttendanceService.getAutoExitWorkers(param); - if (CollUtil.isEmpty(exitWorkers)) { - continue; - } - try { - if (Objects.equals(config.getEnableBlack(), 1)) { - for (WorkerInfo worker : exitWorkers) { - WorkerBlacklist workerBlacklist = new WorkerBlacklist(); - workerBlacklist.setProjectSn(projectSn); - workerBlacklist.setWorkerId(worker.getId()); - workerBlacklist.setWorkerName(worker.getWorkerName()); - workerBlacklist.setIdCard(worker.getIdCard()); - workerBlacklist.setAddReason("超过" + config.getExitIfAbsenceDay() + "天自动退场"); - workerBlacklist.setReason(workerBlacklist.getAddReason()); - workerBlacklist.setAddTime(DateUtil.now()); - workerBlacklist.setCreateTime(new Date()); - workerBlacklist.setIsExit(1); - workerBlacklistService.addWorkerBlacklist(workerBlacklist); - } - } else { - workerInfoService.updateWorkerExit(new MapBuilder() - .put("workerIdStr", exitWorkers.stream().map(w -> w.getId() + "").collect(Collectors.joining(","))) - .build()); + try { + Map project2ConfigMap = workerExitConfigService.list(new LambdaQueryWrapper() + .eq(WorkerExitConfig::getEnable, 1)).stream().collect(Collectors.toMap(WorkerExitConfig::getProjectSn, Function.identity(), (o1, o2) -> o1)); + List projects = projectMapper.selectList(new LambdaQueryWrapper()); + for (Project project : projects) { + String projectSn = project.getProjectSn(); + WorkerExitConfig config = project2ConfigMap.get(projectSn); + if (config != null) { + //退场人员列表 + HashMap param = new MapBuilder() + .put("projectSn", projectSn) + .put("exitIfAbsenceDay", config.getExitIfAbsenceDay()) + .build(); + param.put("workerIdList", StrUtil.split(config.getWorkerIds(), ",")); + param.put("departmentIdList", StrUtil.split(config.getDepartmentIds(), ",")); + param.put("teamIdList", StrUtil.split(config.getTeamIds(), ",")); + param.put("enterpriseIdList", StrUtil.split(config.getEnterpriseIds(), ",")); + // if (StrUtil.isNotBlank(config.getWorkerIds())) { + // } else if (StrUtil.isNotBlank(config.getDepartmentIds()) || StrUtil.isNotBlank(config.getTeamIds())) { + // } else if (StrUtil.isNotBlank(config.getEnterpriseIds())) { + // } + List exitWorkers = workerAttendanceService.getAutoExitWorkers(param); + if (CollUtil.isEmpty(exitWorkers)) { + continue; + } + try { + if (Objects.equals(config.getExitType(), 3)) { + for (WorkerInfo worker : exitWorkers) { + WorkerBlacklist workerBlacklist = new WorkerBlacklist(); + workerBlacklist.setProjectSn(projectSn); + workerBlacklist.setWorkerId(worker.getId()); + workerBlacklist.setWorkerName(worker.getWorkerName()); + workerBlacklist.setIdCard(worker.getIdCard()); + workerBlacklist.setAddReason("超过" + config.getExitIfAbsenceDay() + "天自动退场"); + workerBlacklist.setReason(workerBlacklist.getAddReason()); + workerBlacklist.setAddTime(DateUtil.now()); + workerBlacklist.setCreateTime(new Date()); + workerBlacklist.setIsExit(config.getEnableExitWhenBlack()); + workerBlacklistService.addWorkerBlacklist(workerBlacklist); + } + } else if (Objects.equals(config.getExitType(), 2)) { + workerInfoService.updateWorkerExit(new MapBuilder() + .put("workerIdStr", exitWorkers.stream().map(w -> w.getId() + "").collect(Collectors.joining(","))) + .build()); + } else if (Objects.equals(config.getExitType(), 1)) { + for (WorkerInfo worker : exitWorkers) { + worker.setUfaceDevId(""); + worker.setUfaceDevGroupId(""); + workerInfoService.editWorkerInfo(worker); + } + } + } catch (Exception e) { + log.error("更新人员自动退场错误", e); } - } catch (Exception e) { - log.error("更新人员自动退场错误", e); } } + } catch (Exception e) { + log.error("更新人员自动退场错误", e); } } } diff --git a/src/main/resources/excel/videoitem/监控点导入模版(萤石云).xlsx b/src/main/resources/excel/videoitem/监控点导入模版(萤石云).xlsx index 765c9f9b0..6fa16a183 100644 Binary files a/src/main/resources/excel/videoitem/监控点导入模版(萤石云).xlsx and b/src/main/resources/excel/videoitem/监控点导入模版(萤石云).xlsx differ diff --git a/src/main/resources/excel/风险点清单导出模板.xlsx b/src/main/resources/excel/风险点清单导出模板.xlsx index 5b6faae18..1b990ff16 100644 Binary files a/src/main/resources/excel/风险点清单导出模板.xlsx and b/src/main/resources/excel/风险点清单导出模板.xlsx differ