diff --git a/src/main/java/com/zhgd/netty/tcp/listener/BindListener.java b/src/main/java/com/zhgd/netty/tcp/listener/BindListener.java index 31db621f9..2341c5338 100644 --- a/src/main/java/com/zhgd/netty/tcp/listener/BindListener.java +++ b/src/main/java/com/zhgd/netty/tcp/listener/BindListener.java @@ -2,20 +2,21 @@ package com.zhgd.netty.tcp.listener; import io.netty.util.concurrent.Future; import io.netty.util.concurrent.GenericFutureListener; +import lombok.extern.slf4j.Slf4j; /** * @author chenws * @date 2020/03/17 15:58:10 */ +@Slf4j public class BindListener implements GenericFutureListener> { @Override public void operationComplete(Future future) throws Exception { if (future.isSuccess()) { - System.out.println("绑定成功"); } else { //打印错误信息,也可自定义处理 - future.cause().printStackTrace(); + log.error("", future.cause()); } } } diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index 3de925d6b..5e61db952 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -37,8 +37,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.concurrent.Future; @@ -689,7 +687,6 @@ public class AsyncHikvision { * @param addAuthWorkerIds * @param sendNotice */ - @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) public void handlerBatchWorkersResult(Map workerIdMap, Map devSnMap, JSONArray qaiList, int i, String devSn, String projectSn, List addAuthWorkerIds, boolean sendNotice) { JSONObject jo = qaiList.getJSONObject(i); String personId = jo.getString("personId"); diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index d612eb174..536202edf 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -1166,11 +1166,11 @@ public class HikvisionCall { */ public void updateAllFailStatusIfNullForAuth(String projectSn, List workerList, Integer bigType, Integer operate) { for (WorkerInfo workerInfo : workerList) { - updateAllFailStatusIfNullForAuth(projectSn, workerInfo.getId(), bigType, operate); + hikvisionCall.updateAllFailStatusIfNullForAuth(projectSn, workerInfo.getId(), bigType, operate); } } - @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + @Transactional(rollbackFor = Exception.class) public void updateAllFailStatusIfNullForAuth(String projectSn, Long whoId, Integer bigType, Integer operate) { xzHikvisionSyncMapper.update(null, new LambdaUpdateWrapper() .set(XzHikvisionSync::getIsSuccess, 0) @@ -1180,7 +1180,7 @@ public class HikvisionCall { .eq(XzHikvisionSync::getProjectSn, projectSn) .eq(XzHikvisionSync::getWhoId, whoId) ); - updateTotalStatus(projectSn, whoId, bigType); + this.updateTotalStatus(projectSn, whoId, bigType); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) @@ -1212,7 +1212,7 @@ public class HikvisionCall { updateStatus(projectSn, whoId, type, operate, deviceSn, true); } - @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + @Transactional(rollbackFor = Exception.class) public void updateStatus(String projectSn, Long whoId, Integer type, Integer operate, String deviceSn, Boolean isSuccess) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(XzHikvisionSync::getProjectSn, projectSn) diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/NoticeServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/NoticeServiceImpl.java index a49df70e2..522874f76 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/NoticeServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/NoticeServiceImpl.java @@ -24,8 +24,8 @@ import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.Date; @@ -40,13 +40,15 @@ import java.util.Map; */ @Service public class NoticeServiceImpl extends ServiceImpl implements INoticeService { + @Lazy + @Autowired + NoticeServiceImpl noticeService; @Autowired private NoticeMapper noticeMapper; @Autowired private IMqttSender mqttPushClient; @Autowired private SystemUserMapper systemUserMapper; - @Value("${mqtt-scope}") private String scope; @Lazy @@ -73,7 +75,7 @@ public class NoticeServiceImpl extends ServiceImpl impleme public void addNotice(Notice notice, boolean isSendMqtt) { noticeMapper.insert(notice); if (isSendMqtt) { - sendMqttMessage(notice); + noticeService.sendMqttMessage(notice); } } @@ -95,7 +97,7 @@ public class NoticeServiceImpl extends ServiceImpl impleme notice.setType(type); notice.setPayload(payload); noticeMapper.insert(notice); - sendMqttMessage(notice); + noticeService.sendMqttMessage(notice); } @Override @@ -153,6 +155,7 @@ public class NoticeServiceImpl extends ServiceImpl impleme } @Override + @Async("sendBatchExecutor") public void sendMqttMessage(Notice notice) { sendMqttMessage(notice, ""); } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectUfaceConfigServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectUfaceConfigServiceImpl.java index 24aced6db..95a58378b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectUfaceConfigServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectUfaceConfigServiceImpl.java @@ -33,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -63,6 +64,9 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl() + .eq(XzHikvisionSync::getBigType, 1) + .eq(XzHikvisionSync::getWhoId, workerInfo.getId()) + ); for (String ds : StrUtil.split(devSns, ",")) { xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(1).setWhoId(workerInfo.getId()).setDeviceSn(ds).setBigType(1).setCreateDate(getSyncTimeWithInitAndDeleteSyncIfAbsent(1, workerInfo.getId()))); } @@ -501,6 +511,7 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl allDevList, List workerList, Long userId) { //构建workerAndDevSnList List workerAndDevSnList = new ArrayList<>(); @@ -513,12 +524,7 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl devSnsAndDevIdsPair = this.getBatchDevSnsAndDevIds(workerInfo, allDevList); if (devSnsAndDevIdsPair.getRight() != null) { String devSns = devSnsAndDevIdsPair.getLeft(); - //清除以前的记录 - xzHikvisionSyncMapper.delete(new LambdaQueryWrapper() - .eq(XzHikvisionSync::getBigType, 1) - .eq(XzHikvisionSync::getWhoId, workerInfo.getId()) - ); - this.addHkSyncRecordsAndUpdateWorkerStatus(workerInfo, devSns); + projectUfaceConfigService.addHkSyncRecordsAndUpdateWorkerStatus(workerInfo, devSns); List devSnList = StrUtil.split(devSns, ","); for (String devSn : devSnList) { JSONObject jo = new JSONObject(); diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index 4379a1ac7..7db213976 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -70,6 +70,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -106,6 +107,8 @@ public class WorkerInfoServiceImpl extends ServiceImpl map) { Map data = new HashMap<>(); @@ -1350,7 +1352,6 @@ public class WorkerInfoServiceImpl extends ServiceImpl work, Map info, Integer type) { WorkerInfo workerInfo = new WorkerInfo(); workerInfo.setWorkerName(MapUtils.getString(work, "name")); @@ -1602,7 +1602,6 @@ public class WorkerInfoServiceImpl extends ServiceImpl teamList = teamInfoMapper.selectTeamInfoBySnList(projectSn); @@ -1632,6 +1631,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl result = new Result(); StringBuilder existName = new StringBuilder(""); @@ -1765,17 +1765,15 @@ public class WorkerInfoServiceImpl extends ServiceImpl() - .eq(UfaceDev::getDevSn, deviceId)); - if (dev == null) { - throw new OpenAlertException("设备编号不存在"); - } - String projectSn = dev.getProjectSn(); - List workerInfos = workerInfoMapper.selectList(new LambdaQueryWrapper() - .eq(WorkerInfo::getProjectSn, projectSn) - .eq(WorkerInfo::getInserviceType, 1) - ); - - //添加人员 - ArrayList datas = new ArrayList<>(); - addDatas(workerInfos, "0", datas); - - GetWorkerInfoByDevVo getWorkerInfoByDevVo = new GetWorkerInfoByDevVo(); - getWorkerInfoByDevVo.setSuccess(true); - getWorkerInfoByDevVo.setCode(0); - getWorkerInfoByDevVo.setMessage("success"); - getWorkerInfoByDevVo.setTime(System.currentTimeMillis() / 1000); - getWorkerInfoByDevVo.setData(datas); - getWorkerInfoByDevVo.setEvent("workers"); - return JSON.toJSONString(getWorkerInfoByDevVo); - } - ///* //全量和增量更新 // */ @@ -2137,12 +2103,45 @@ public class WorkerInfoServiceImpl extends ServiceImpl() + .eq(UfaceDev::getDevSn, deviceId)); + if (dev == null) { + throw new OpenAlertException("设备编号不存在"); + } + String projectSn = dev.getProjectSn(); + List workerInfos = workerInfoMapper.selectList(new LambdaQueryWrapper() + .eq(WorkerInfo::getProjectSn, projectSn) + .eq(WorkerInfo::getInserviceType, 1) + ); + + //添加人员 + ArrayList datas = new ArrayList<>(); + addDatas(workerInfos, "0", datas); + + GetWorkerInfoByDevVo getWorkerInfoByDevVo = new GetWorkerInfoByDevVo(); + getWorkerInfoByDevVo.setSuccess(true); + getWorkerInfoByDevVo.setCode(0); + getWorkerInfoByDevVo.setMessage("success"); + getWorkerInfoByDevVo.setTime(System.currentTimeMillis() / 1000); + getWorkerInfoByDevVo.setData(datas); + getWorkerInfoByDevVo.setEvent("workers"); + return JSON.toJSONString(getWorkerInfoByDevVo); + } + @Override public CountEntryAndExitNumVo countEntryAndExitNum(Map map) { return baseMapper.countEntryAndExitNum(map); } @Override + @Transactional(propagation = Propagation.NOT_SUPPORTED) public void uploadWorkerInfoImgs(MultipartFile file, String projectSn) throws IOException { String folder = basePath + "/" + IdUtil.simpleUUID(); File folderFile = new File(folder); @@ -2158,9 +2157,14 @@ public class WorkerInfoServiceImpl extends ServiceImpl allEditWorkerInfos = new ArrayList<>(); for (int i = 0; i < files.length; i++) { File f = files[i]; - traverseFile(f.getAbsolutePath(), formatSb, failSb, sucSb); + List editWorkerInfos = getEditWorkerInfos(f.getAbsolutePath(), formatSb, sucSb, projectSn); + allEditWorkerInfos.addAll(editWorkerInfos); + } + for (WorkerInfo workerInfo : allEditWorkerInfos) { + workerInfoService.editWorkerInfo(workerInfo); } //通知 if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) { @@ -2291,12 +2295,12 @@ public class WorkerInfoServiceImpl extends ServiceImpl getEditWorkerInfos(String path, StringBuilder formatSb, StringBuilder sucSb, String projectSn) { + List rtList = new ArrayList<>(); File file = new File(path); if (file.exists()) { if (file.isDirectory()) { @@ -2304,7 +2308,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl workerInfos = workerInfoMapper.selectList(new LambdaQueryWrapper() - .eq(WorkerInfo::getIdCard, idCard)); - try { - for (WorkerInfo workerInfo : workerInfos) { - workerInfo.setFieldAcquisitionUrl(saveName); - this.editWorkerInfo(workerInfo); - sucSb.append(workerName + ","); - } - } catch (Exception e) { - log.error("error:", e); - failSb.append(workerName + ":错误原因" + e.getMessage() + ","); + } else { + String idCard = name.split("_")[1].split("\\.")[0]; + String workerName = name.split("_")[0]; + String suffix = name.split("\\.")[1]; + String saveName = IdUtil.randomUUID() + "." + suffix; + FileUtil.move(file, new File(basePath + "/" + saveName), true); + WorkerInfo workerInfo = workerInfoMapper.selectOne(new LambdaQueryWrapper() + .eq(WorkerInfo::getIdCard, idCard) + .eq(WorkerInfo::getProjectSn, projectSn) + ); + sucSb.append(workerName + ","); + workerInfo.setFieldAcquisitionUrl(saveName); + rtList.add(workerInfo); } } - } else { - System.out.println("文件不存在!"); } + return rtList; } private void addDatas(List infos, String del, ArrayList datas) {