diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/SuperDataParam.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/SuperDataParam.java new file mode 100644 index 000000000..edb08501e --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/SuperDataParam.java @@ -0,0 +1,43 @@ +package com.njcn.device.pq.pojo.param; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import javax.validation.Valid; + + +/** + * + * @author zbj + * @date 2023/4/13 + */ +@Data +@ApiModel +@Valid +public class SuperDataParam { + + /** + * 监测点名称 + */ + private String mName; + + /** + * 母线名称 + */ + private String pName; + + /** + * 设备名称 + */ + private String devName; + + /** + * 变电站名称 + */ + private String subName; + + /** + * 市区名称 + */ + private String urbanName; + +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsTerminalLogs.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsTerminalLogs.java index b5f584b1d..60f334604 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsTerminalLogs.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsTerminalLogs.java @@ -42,26 +42,6 @@ public class PqsTerminalLogs extends BaseEntity { */ private String terminalDescribe; - /** - * 更新时间 - */ - private LocalDateTime updateTime; - - /** - * 更新用户 - */ - private String updateBy; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - /** - * 创建用户 - */ - private String createBy; - /** * 状态 0-删除;1-正常;默认正常 */ diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/UserMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/UserMapper.java index 04e69cdc4..06ff43a6f 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/UserMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/UserMapper.java @@ -1,6 +1,7 @@ package com.njcn.device.pq.mapper; +import com.njcn.device.pq.pojo.param.SuperDataParam; import org.apache.ibatis.annotations.Param; import java.util.Map; @@ -14,6 +15,8 @@ import java.util.Map; * @since 2023-04-12 */ public interface UserMapper { - Map getUser(@Param("userId") String userId); - Map getPointSuper(@Param("id") String id); + + SuperDataParam getPointSuper(@Param("id") String id); + + SuperDataParam getDeviceSuper(@Param("id") String id); } \ No newline at end of file diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsTerminalLogsMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsTerminalLogsMapper.xml index d42f42fe9..632f607fe 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsTerminalLogsMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsTerminalLogsMapper.xml @@ -2,21 +2,4 @@ - - INSERT INTO pqs_terminal_logs(`Obj_Index`, - `Terminal_Type`, - `Terminal_Describe`, - `Create_Time`, - `Create_By`, - `State`) - VALUES (#{objIndex}, - (SELECT Id - FROM `sys_dict_data` - WHERE `Code` = 'Line_Parameter'), - #{terminalDescribe}, - now(), - #{createBy}, - 1 - ) - diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/UserMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/UserMapper.xml index 7eb3aaa44..9a38f683c 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/UserMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/UserMapper.xml @@ -2,12 +2,8 @@ - - SELECT pl.`Name` AS "mName", pl1.`Name` AS "pName", pl2.`Name` AS "devName", @@ -20,4 +16,18 @@ LEFT JOIN pq_line pl4 ON pl3.Pid = pl4.Id WHERE pl.Id = #{id} + + + diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java index 5cc4662fe..e8a26d3ee 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java @@ -41,6 +41,7 @@ import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.pojo.po.Area; import com.njcn.system.pojo.po.DictData; +import com.njcn.user.pojo.vo.UserVO; import com.njcn.web.utils.RequestUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -100,7 +101,6 @@ public class TerminalBaseServiceImpl extends ServiceImpl imple private final DeviceBakService deviceBakService; - /** * 终端新增操作 * @@ -698,12 +698,11 @@ public class TerminalBaseServiceImpl extends ServiceImpl imple Overlimit overlimit = new Overlimit(line.getId(), scaleResult.getData().getValue(), lineDetail.getShortCapacity(), lineDetail.getStandardCapacity(), lineDetail.getDealCapacity(), lineDetail.getDevCapacity()); overlimitMapper.insert(overlimit); } - //todo 插入日志 - String userId = RequestUtil.getUserIndex(); - //String userId = "5dd232f9a70c49c58d2f9e7f69776394"; - Map map = userMapper.getUser(userId); - String userName = map.get("name").toString(); - String loginName = map.get("loginName").toString(); + //获取用户信息 + String userName = RequestUtil.getUsername(); + String loginName = RequestUtil.getLoginName(); + //String userName = "zbj"; + //String loginName = "njcnser"; LineDetail lineDetailResOld = lineDetailMapper.selectById(lineId); queryUpdateAndInsertLog(userName, loginName, lineDetailRes, lineDetailResOld); } @@ -725,11 +724,11 @@ public class TerminalBaseServiceImpl extends ServiceImpl imple */ @Async public void queryUpdateAndInsertLog(String userName, String loginName, LineDetail newLine, LineDetail oldLine) { - Map map = userMapper.getPointSuper(newLine.getId()); + SuperDataParam superDataParam = userMapper.getPointSuper(newLine.getId()); StringBuilder sb = new StringBuilder(); - sb.append(userName).append("修改了").append(map.get("urbanName")).append(" - ") - .append(map.get("subName")).append(" - ").append(map.get("devName")).append(" - ").append(map.get("pName")) - .append(" - ").append(map.get("mName")).append(" - 监测点的参数;"); + sb.append(userName).append("修改了").append(superDataParam.getUrbanName()).append(" - ") + .append(superDataParam.getSubName()).append(" - ").append(superDataParam.getDevName()).append(" - ").append(superDataParam.getPName()) + .append(" - ").append(superDataParam.getMName()).append(" - 监测点的参数;"); StringBuilder sbNew = new StringBuilder(); StringBuilder sbOld = new StringBuilder(); sbNew.append("操作历史,"); diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalMaintainServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalMaintainServiceImpl.java index 9f1374d4a..c6cb075d9 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalMaintainServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalMaintainServiceImpl.java @@ -3,33 +3,29 @@ package com.njcn.device.pq.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.njcn.common.pojo.dto.SimpleDTO; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; -import com.njcn.device.pq.enums.DeviceResponseEnum; +import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.pq.mapper.TerminalMaintainMapper; +import com.njcn.device.pq.mapper.UserMapper; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; -import com.njcn.device.pq.pojo.param.DeviceInfoParam; -import com.njcn.device.pq.pojo.param.PqsParam; -import com.njcn.device.pq.pojo.param.TerminalMainQueryParam; -import com.njcn.device.pq.pojo.param.TerminalParam; -import com.njcn.device.pq.pojo.po.Communicate; -import com.njcn.device.pq.pojo.po.DevMeal; -import com.njcn.device.pq.pojo.po.DevStrategy; -import com.njcn.device.pq.pojo.po.Device; +import com.njcn.device.pq.pojo.param.*; +import com.njcn.device.pq.pojo.po.*; import com.njcn.device.pq.pojo.po.influxdb.DeviceDayFlow; import com.njcn.device.pq.pojo.vo.LineFlowMealDetailVO; import com.njcn.device.pq.pojo.vo.TerminalDaliyFlowVO; import com.njcn.device.pq.pojo.vo.TerminalMaintainVO; -import com.njcn.device.pq.service.IDevMealService; -import com.njcn.device.pq.service.IDevStrategyService; -import com.njcn.device.pq.service.IDeviceService; -import com.njcn.device.pq.service.TerminalMaintainService; +import com.njcn.device.pq.service.*; import com.njcn.influxdb.param.InfluxDBPublicParam; import com.njcn.influxdb.utils.InfluxDbUtils; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; import com.njcn.system.pojo.enums.StatisticsEnum; +import com.njcn.system.pojo.po.DictData; import com.njcn.user.api.DeptFeignClient; +import com.njcn.web.utils.RequestUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.influxdb.dto.QueryResult; @@ -39,7 +35,7 @@ import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.time.Instant; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -47,6 +43,7 @@ import java.util.stream.Stream; /** * pqs * 终端运维 + * * @author cdf * @date 2022/5/11 */ @@ -69,6 +66,12 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService { private final InfluxDbUtils influxDbUtils; + private final UserMapper userMapper; + + private final DicDataFeignClient dicDataFeignClient; + + private final IPqsTerminalLogsService iPqsTerminalLogsService; + @Override public List getTerminalMainList(TerminalMainQueryParam terminalMainQueryParam) { List resList = new ArrayList<>(); @@ -79,10 +82,10 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService { SimpleDTO simpleDTO = new SimpleDTO(); simpleDTO.setCode(StatisticsEnum.POWER_NETWORK.getCode()); deviceInfoParam.setStatisticalType(simpleDTO); - List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, Objects.isNull(terminalMainQueryParam.getRunFlag())?null: CollUtil.newArrayList(terminalMainQueryParam.getRunFlag()), CollUtil.newArrayList(1)); - if(CollectionUtil.isNotEmpty(generalDeviceDTOList)){ + List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, Objects.isNull(terminalMainQueryParam.getRunFlag()) ? null : CollUtil.newArrayList(terminalMainQueryParam.getRunFlag()), CollUtil.newArrayList(1)); + if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) { - for(GeneralDeviceDTO generalDeviceDTO:generalDeviceDTOList){ + for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { List devIds = generalDeviceDTO.getDeviceIndexes(); if (CollectionUtils.isEmpty(devIds)) { continue; @@ -97,29 +100,30 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService { List subList = terminalMaintainMapper.getPqLineGdAndSubList(generalDeviceDTO.getSubIndexes()); List gdList = terminalMaintainMapper.getPqLineGdAndSubList(generalDeviceDTO.getGdIndexes()); - dealTerminalData(subList,devList); - dealTerminalData(gdList,subList); + dealTerminalData(subList, devList); + dealTerminalData(gdList, subList); terminalMaintainVO.setChildren(gdList); resList.add(terminalMaintainVO); } } return resList; } - List dealTerminalData(List parent,List children){ - return parent.stream().peek(item->item.setChildren(getChildren(item.getId(),children))).collect(Collectors.toList()); + + List dealTerminalData(List parent, List children) { + return parent.stream().peek(item -> item.setChildren(getChildren(item.getId(), children))).collect(Collectors.toList()); } @Override public List getManageList(List ids, Integer type) { - if(type == 0){ + if (type == 0) { //终端状态管理 List devList = terminalMaintainMapper.getRunFlagList(ids); return assemble(devList); - }else if(type == 1){ + } else if (type == 1) { //流量套餐 List devList = terminalMaintainMapper.getFlowMealList(ids); return assemble(devList); - }else if(type == 2){ + } else if (type == 2) { //流量策略 List devList = terminalMaintainMapper.getFlowStrategyList(ids); return assemble(devList); @@ -129,36 +133,98 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService { @Override public boolean updateRunFlagManage(TerminalParam terminalParam) { - //终端状态管理 - List tem = new ArrayList<>(); - terminalParam.getIds().forEach(item-> { - Device device = new Device(); - device.setId(item); - device.setRunFlag(terminalParam.getRunFlag()); - tem.add(device); - }); - return iDeviceService.updateBatchById(tem); + //终端状态管理 + List tem = new ArrayList<>(); + terminalParam.getIds().forEach(item -> { + Device device = new Device(); + device.setId(item); + device.setRunFlag(terminalParam.getRunFlag()); + tem.add(device); + }); + + QueryWrapper wrapper = new QueryWrapper<>(); + List idList = tem.stream().map(Device::getId).collect(Collectors.toList()); + wrapper.in("id", idList); + List newList = iDeviceService.list(wrapper); + boolean b = iDeviceService.updateBatchById(tem); + //添加日志信息 + if (b) { + List oldList = iDeviceService.list(wrapper); + for (Device device : newList) { + for (Device device1 : oldList) { + //如果设备id相同,终端运行状态不同 + if (Objects.equals(device1.getId(), device.getId()) && !Objects.equals(device1.getRunFlag(), device.getRunFlag())) { + //获取用户信息 + String userName = RequestUtil.getUsername(); + String loginName = RequestUtil.getLoginName(); + //String userName = "zbj"; + //String loginName = "njcnser"; + //获取上级信息 + SuperDataParam superDataParam = userMapper.getDeviceSuper(device.getId()); + StringBuilder sb = new StringBuilder(); + sb.append(userName).append("修改了").append(superDataParam.getUrbanName()).append(" - ") + .append(superDataParam.getSubName()).append(" - ").append(superDataParam.getDevName()).append(" - 设备的参数;"); + + StringBuilder sbNew = new StringBuilder(); + StringBuilder sbOld = new StringBuilder(); + sbNew.append("操作历史,"); + sbOld.append("修改后参数,"); + String newFlag = ""; + String oldFlag = ""; + if (device.getRunFlag() == 0) { + newFlag = "投运"; + }else if (device.getRunFlag() == 1){ + newFlag = "热备用"; + }else if (device.getRunFlag() == 2){ + newFlag = "停运"; + } + if (device1.getRunFlag() == 0) { + oldFlag = "投运"; + }else if (device1.getRunFlag() == 1){ + oldFlag = "热备用"; + }else if (device1.getRunFlag() == 2){ + oldFlag = "停运"; + } + sbNew.append("终端运行状态: ").append(newFlag).append(";"); + sbOld.append("终端运行状态: ").append(oldFlag).append(";"); + sb.append(sbNew).append(sbOld); + HttpResult dicDataByCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.LINE_PARAMETER.getCode()); + DictData data = dicDataByCode.getData(); + //创建对象 + PqsTerminalLogs terminalLogsNew = new PqsTerminalLogs(); + terminalLogsNew.setObjIndex(device.getId()); + terminalLogsNew.setTerminalDescribe(sb.toString()); + terminalLogsNew.setCreateBy(loginName); + terminalLogsNew.setCreateTime(LocalDateTime.now()); + terminalLogsNew.setTerminalType(data.getId()); + terminalLogsNew.setState(1); + iPqsTerminalLogsService.save(terminalLogsNew); + } + } + } + } + return b; } @Override public boolean updateFlowMeal(TerminalParam terminalParam) { List tem = new ArrayList<>(); iDevMealService.removeByIds(terminalParam.getIds()); - terminalParam.getIds().forEach(item-> { + terminalParam.getIds().forEach(item -> { DevMeal devMeal = new DevMeal(); devMeal.setLineId(item); devMeal.setBaseMealId(terminalParam.getBaseMealId()); devMeal.setReamMealId(terminalParam.getExtendMealId()); tem.add(devMeal); }); - return iDevMealService.saveBatch(tem); + return iDevMealService.saveBatch(tem); } @Override public boolean updateFlowStrategy(TerminalParam terminalParam) { List tem = new ArrayList<>(); iDevStrategyService.removeByIds(terminalParam.getIds()); - terminalParam.getIds().forEach(item-> { + terminalParam.getIds().forEach(item -> { DevStrategy devStrategy = new DevStrategy(); devStrategy.setLineId(item); devStrategy.setStrategyId(terminalParam.getFlowStrategyId()); @@ -189,11 +255,11 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService { List deviceIndexes = new ArrayList<>(); List deviceInfoList = generalDeviceService.getDeviceInfo(deviceInfoParam, null, Stream.of(1).collect(Collectors.toList())); deviceInfoList.stream().map(GeneralDeviceDTO::getDeviceIndexes).forEach(deviceIndexes::addAll); - List list = terminalMaintainMapper.getMonthFlow(deviceIndexes,DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime())),DateUtil.endOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))); + List list = terminalMaintainMapper.getMonthFlow(deviceIndexes, DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime())), DateUtil.endOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))); return list; } - private List getFlowManageDetailFromInfluxDB (TerminalMainQueryParam param) { + private List getFlowManageDetailFromInfluxDB(TerminalMainQueryParam param) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))).append("' and "); stringBuilder.append("dev_id ='").append(param.getDevId()).append("'"); @@ -202,13 +268,13 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService { InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); List deviceDayFlow = influxDBResultMapper.toPOJO(result, DeviceDayFlow.class); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); - deviceDayFlow.forEach(t-> t.setDate(formatter.format(Date.from(t.getTime())))); + deviceDayFlow.forEach(t -> t.setDate(formatter.format(Date.from(t.getTime())))); Map> dayFlowMap = deviceDayFlow.stream().collect(Collectors.groupingBy(DeviceDayFlow::getDate)); List list = new ArrayList<>(); for (Map.Entry> entry : dayFlowMap.entrySet()) { DeviceDayFlow dayFlow = new DeviceDayFlow(); dayFlow.setDevId(entry.getValue().get(0).getDevId()); - BigDecimal bigDecimal = new BigDecimal((float) entry.getValue().stream().mapToInt(DeviceDayFlow::getActualValue).sum() / (float)1024 /(float) 1024); + BigDecimal bigDecimal = new BigDecimal((float) entry.getValue().stream().mapToInt(DeviceDayFlow::getActualValue).sum() / (float) 1024 / (float) 1024); dayFlow.setDailyActualValue(bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); dayFlow.setDate(entry.getKey()); list.add(dayFlow); @@ -218,25 +284,22 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService { return list; } - private List getChildren(String id,List all){ - return all.stream().filter(item->item.getPid().equals(id)).collect(Collectors.toList()); + private List getChildren(String id, List all) { + return all.stream().filter(item -> item.getPid().equals(id)).collect(Collectors.toList()); } - private List assemble(List devList){ - List subIds = devList.stream().map(TerminalMaintainVO::getPid).collect(Collectors.toList()); + private List assemble(List devList) { + List subIds = devList.stream().map(TerminalMaintainVO::getPid).collect(Collectors.toList()); List subList = terminalMaintainMapper.getPqLineGdAndSubList(subIds); - List gdIds = subList.stream().map(TerminalMaintainVO::getPid).collect(Collectors.toList()); + List gdIds = subList.stream().map(TerminalMaintainVO::getPid).collect(Collectors.toList()); List gdList = terminalMaintainMapper.getPqLineGdAndSubList(gdIds); - List proIds = gdList.stream().map(TerminalMaintainVO::getPid).collect(Collectors.toList()); + List proIds = gdList.stream().map(TerminalMaintainVO::getPid).collect(Collectors.toList()); List provList = terminalMaintainMapper.getPqLineProvList(proIds); - List subTem = subList.stream().peek(item->item.setChildren(getChildren(item.getId(),devList))).collect(Collectors.toList()); - List gdTem = gdList.stream().peek(item->item.setChildren(getChildren(item.getId(),subTem))).collect(Collectors.toList()); - return provList.stream().peek(item->item.setChildren(getChildren(item.getId(),gdTem))).collect(Collectors.toList()); + List subTem = subList.stream().peek(item -> item.setChildren(getChildren(item.getId(), devList))).collect(Collectors.toList()); + List gdTem = gdList.stream().peek(item -> item.setChildren(getChildren(item.getId(), subTem))).collect(Collectors.toList()); + return provList.stream().peek(item -> item.setChildren(getChildren(item.getId(), gdTem))).collect(Collectors.toList()); } - - - }