@@ -41,7 +41,7 @@ import com.njcn.device.line.mapper.LineDetailMapper;
import com.njcn.device.line.mapper.LineMapper ;
import com.njcn.device.line.service.LineBakService ;
import com.njcn.device.node.service.INodeService ;
import com.njcn.device.overlimit .mapper.OverlimitMapper ;
import com.njcn.device.biz .mapper.OverlimitMapper ;
import com.njcn.device.pq.constant.Param ;
import com.njcn.device.pq.enums.LineBaseEnum ;
import com.njcn.device.pq.enums.PvDeviceResponseEnum ;
@@ -96,6 +96,7 @@ import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile ;
import javax.servlet.http.HttpServletResponse ;
import java.math.BigDecimal ;
import java.net.HttpURLConnection ;
import java.time.LocalDate ;
import java.time.LocalDateTime ;
@@ -3698,305 +3699,339 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList = new ArrayList < > ( ) ;
List < String > addAndDelteId = new ArrayList < > ( ) ;
//异常标志
Boolean exFlag = false ;
if ( ! CollectionUtils . isEmpty ( list ) ) {
//前置层修改
List < PqsTerminalLogs > list1 = list . stream ( ) . filter ( temp - > temp . getTerminalDescribe ( ) . contains ( " 终端所属前置机由 " ) ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( list1 ) ) {
for ( PqsTerminalLogs temp : list1 ) {
String temLos = " %s终端所属前置机由 %s 改为> %s; " ;
List < String > strings = this . parseTemplateValues ( temLos , temp . getTerminalDescribe ( ) ) ;
String node1 = strings . get ( 1 ) ; // 第一个前置
String node2 = strings . get ( 2 ) ; // 第二个前置
if ( deviceProcesseMap . containsKey ( temp . getObjIndex ( ) ) ) {
Integer processNum = deviceProcesseMap . get ( temp . getObjIndex ( ) ) ;
PqsTerminalPushLogDTO pqsTerminalPushLogDTO = new PqsTerminalPushLogDTO ( ) ;
pqsTerminalPushLogDTO . s etId ( temp . getId ( ) ) ;
String deviceId = temp . getObjIndex ( ) ;
pqsTerminalPushLogDTO . setDevId ( deviceId ) ;
pqsTerminalPushLogDTO . setDevName ( lineMap . containsKey ( deviceId ) ? lineMap . get ( deviceId ) . getName ( ) : " 删除设备 " ) ;
pqsTerminalPushLogDTO . setNodeId ( node1 ) ;
pqsTerminalPushLogDTO . setNodeName ( nodeMap . get ( node1 ) . getName ( ) ) ;
pqsTerminalPushLogDTO . setProcessUpdateFlag ( true ) ;
pqsTerminalPushLogDTO . setProcessNum ( processNum ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO ) ;
PqsTerminalPushLogDTO pqsTerminalPushLogDTO2 = new PqsTerminalPushLogDTO ( ) ;
pqsTerminalPushLogDTO2 . setId ( temp . getId ( ) ) ;
pqsTerminalPushLogDTO2 . setDevId ( deviceId ) ;
pqsTerminalPushLogDTO2 . setDevName ( lineMap . containsKey ( deviceId ) ? lineMap . get ( deviceId ) . getName ( ) : " 删除设备 " ) ;
pqsTerminalPushLogDTO2 . setNodeId ( node2 ) ;
pqsTerminalPushLogDTO2 . setNodeName ( nodeMap . get ( node2 ) . getName ( ) ) ;
pqsTerminalPushLogDTO2 . setProcessUpdateFlag ( true ) ;
pqsTerminalPushLogDTO2 . setProcessNum ( processNum ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO2 ) ;
}
}
}
list . removeAll ( list1 ) ;
if ( ! CollectionUtils . isEmpty ( list ) ) {
//终端层面和检测点层面修改
list . forEach ( temp - > {
PqsTerminalPushLogDTO pqsTerminalPushLogDTO = new PqsTerminalPushLogDTO ( ) ;
if ( Objects . equals ( temp . getTerminalType ( ) , 6 ) ) {
pqsTerminalPushLogDTO . setId ( temp . getId ( ) ) ;
String deviceId ;
//如果不存在该设备id,说明监测点删除
if ( ! lineDeviceMap . containsKey ( temp . getObjIndex ( ) ) ) {
String temLos = " %s监测点名称: %s " ;
List < String > strings = this . parseTemplateValues ( temLos , temp . getTerminalDescribe ( ) ) ;
String [ ] lineName = strings . get ( 1 ) . split ( " -> " ) ;
List < Line > devList = lineById . stream ( ) . filter ( line - > Objects . equals ( line . getName ( ) , lineName [ 1 ] ) ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . isEmpty ( devList ) ) {
//如果不存在该设备说明设备也被删除,直接走下边删除设备逻辑;
return ;
} else {
Line sub = lineById . stream ( ) . filter ( line - > Objects . equals ( line . getName ( ) , lineName [ 0 ] ) ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
Line tempDev = devList . stream ( ) . filter ( dev - > dev . getPid ( ) . equals ( sub . getId ( ) ) ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
deviceId = tempDev . getId ( ) ;
}
} else {
deviceId = lineDeviceMap . get ( temp . getObjIndex ( ) ) ;
}
pqsTerminalPushLogDTO . setDevId ( deviceId ) ;
pqsTerminalPushLogDTO . setDevName ( lineMap . get ( deviceId ) . getName ( ) ) ;
String nodeId = deviceMap . get ( deviceId ) . getNodeId ( ) ;
pqsTerminalPushLogDTO . setNodeId ( nodeId ) ;
//如果前置删了直接返回
if ( ! nodeMap . containsKey ( nodeId ) ) {
return ;
}
pqsTerminalPushLogDTO . setNodeName ( nodeMap . get ( nodeId ) . getName ( ) ) ;
pqsTerminalPushLogDTO . setProcessUpdateFlag ( false ) ;
if ( deviceProcesseMap . containsKey ( deviceId ) ) {
pqsTerminalPushLogDTO . setProcessNum ( deviceProcesseMap . get ( deviceId ) ) ;
} else {
throw new BusinessException ( " 存在终端未设置进程号,请在前置管理页面设置进程号在进行此操作 " ) ;
}
pqsTerminalPushLogDTO . setOperateType ( DeviceRebootType . LEDGER_MODIFY ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO ) ;
} else if ( Objects . equals ( temp . getTerminalType ( ) , 4 ) ) {
//如果是修改进程操作记录2个进程日志;
if ( temp . getLogsType ( ) . equals ( dataDic . getId ( ) ) ) {
String temLos = " %s进行更新终端进程操作;终端名称 : %s,由进程%s修改成进程%s " ;
List < String > strings = this . parseTemplateValues ( temLos , temp . getTerminalDescribe ( ) ) ;
String num1 = strings . get ( 2 ) ; // 第一个进程
String num2 = strings . get ( 3 ) ; // 第二个进程
int processId1 = Integer . parseInt ( num1 ) ;
int processId2 = Integer . parseInt ( num2 ) ;
List < PqsTerminalLogs > list1 = new ArrayList < > ( ) ;
try {
//前置层修改
list1 = list . stream ( ) . filter ( temp - > temp . getTerminalDescribe ( ) . contains ( " 终端所属前置机由 " ) ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( list1 ) ) {
for ( PqsTerminalLogs temp : list1 ) {
String temLos = " %s终端所属前置机由 %s 改为> %s; " ;
List < String > strings = this . parseTemplateValues ( temLos , temp . getTerminalDescribe ( ) ) ;
String node1 = strings . get ( 1 ) ; // 第一个前置
String node2 = strings . get ( 2 ) ; // 第二个前置
if ( deviceProcesseMap . containsKey ( temp . getObjIndex ( ) ) ) {
Integer processNum = deviceProcesseMap . g et( temp . getObjIndex ( ) ) ;
PqsTerminalPushLogDTO pqsTerminalPushLogDTO = new PqsTerminalPushLogDTO ( ) ;
pqsTerminalPushLogDTO . setId ( temp . getId ( ) ) ;
String deviceId = temp . getObjIndex ( ) ;
pqsTerminalPushLogDTO . setDevId ( deviceId ) ;
pqsTerminalPushLogDTO . setDevName ( lineMap . containsKey ( deviceId ) ? lineMap . get ( deviceId ) . getName ( ) : " 删除设备 " ) ;
pqsTerminalPushLogDTO . setNodeId ( node1 ) ;
pqsTerminalPushLogDTO . setNodeName ( nodeMap . get ( node1 ) . getName ( ) ) ;
pqsTerminalPushLogDTO . setProcessUpdateFlag ( true ) ;
pqsTerminalPushLogDTO . setProcessNum ( processNum ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO ) ;
PqsTerminalPushLogDTO pqsTerminalPushLogDTO2 = new PqsTerminalPushLogDTO ( ) ;
pqsTerminalPushLogDTO2 . setId ( temp . getId ( ) ) ;
pqsTerminalPushLogDTO2 . setDevId ( deviceId ) ;
pqsTerminalPushLogDTO2 . setDevName ( lineMap . containsKey ( deviceId ) ? lineMap . get ( deviceId ) . getName ( ) : " 删除设备 " ) ;
pqsTerminalPushLogDTO2 . setNodeId ( node2 ) ;
pqsTerminalPushLogDTO2 . setNodeName ( nodeMap . get ( node2 ) . getName ( ) ) ;
pqsTerminalPushLogDTO2 . setProcessUpdateFlag ( true ) ;
pqsTerminalPushLogDTO2 . setProcessNum ( processNum ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO2 ) ;
}
}
}
list . removeAll ( list1 ) ;
if ( ! CollectionUtils . isEmpty ( list ) ) {
//终端层面和检测点层面修改
list . forEach ( temp - > {
PqsTerminalPushLogDTO pqsTerminalPushLogDTO = new PqsTerminalPushLogDTO ( ) ;
if ( Objects . equals ( temp . getTerminalType ( ) , 6 ) ) {
pqsTerminalPushLogDTO . setId ( temp . getId ( ) ) ;
String deviceId ;
//如果不存在该设备id,说明监测点删除
if ( ! lineDeviceMap . containsKey ( temp . getObjIndex ( ) ) ) {
String temLos = " %s监测点名称: %s " ;
List < String > strings = this . parseTemplateValues ( temLos , temp . getTerminalDescribe ( ) ) ;
String [ ] lineName = strings . get ( 1 ) . split ( " -> " ) ;
List < Line > devList = lineById . stream ( ) . filter ( line - > Objects . equals ( line . getName ( ) , lineName [ 1 ] ) ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . isEmpty ( devList ) ) {
//如果不存在该设备说明设备也被删除,直接走下边删除设备逻辑;
return ;
} else {
Line sub = lineById . stream ( ) . filter ( line - > Objects . equals ( line . getName ( ) , lineName [ 0 ] ) ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
Line tempDev = devList . stream ( ) . filter ( dev - > dev . getPid ( ) . equals ( sub . getId ( ) ) ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
deviceId = tempDev . getId ( ) ;
}
} else {
deviceId = lineDeviceMap . get ( temp . getObjIndex ( ) ) ;
}
pqsTerminalPushLogDTO . setDevId ( deviceId ) ;
pqsTerminalPushLogDTO . setDevName ( lineMap . get ( deviceId ) . getName ( ) ) ;
String nodeId = deviceMap . get ( deviceId ) . getNodeId ( ) ;
pqsTerminalPushLogDTO . setNodeId ( nodeId ) ;
//如果前置删了直接返回
if ( ! nodeMap . containsKey ( nodeId ) ) {
return ;
}
pqsTerminalPushLogDTO . setNodeName ( nodeMap . get ( nodeId ) . getName ( ) ) ;
pqsTerminalPushLogDTO . setProcessUpdateFlag ( true ) ;
pqsTerminalPushLogDTO . setProcessNum ( processId1 ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO ) ;
PqsTerminalPushLogDTO pqsTerminalPushLogDTO1 = new PqsTerminalPushLogDTO ( ) ;
pqsTerminalPushLogDTO1 . setId ( temp . getId ( ) ) ;
pqsTerminalPushLogDTO1 . setDevId ( deviceId ) ;
pqsTerminalPushLogDTO1 . setDevName ( lineMap . get ( deviceId ) . getName ( ) ) ;
pqsTerminalPushLogDTO1 . setNodeId ( nodeId ) ;
pqsTerminalPushLogDTO1 . setNodeName ( nodeMap . get ( nodeId ) . getName ( ) ) ;
pqsTerminalPushLogDTO1 . setProcessUpdateFlag ( true ) ;
pqsTerminalPushLogDTO1 . setProcessNum ( processId2 ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO1 ) ;
} else {
pqsTerminalPushLogDTO . setId ( temp . getId ( ) ) ;
String deviceId = temp . getObjIndex ( ) ;
pqsTerminalPushLogDTO . setDevId ( deviceId ) ;
//区分删除操作,新增和其他操作
String operate = DeviceRebootType . LEDGER_MODIFY ;
if ( Objects . equals ( temp . getOperateType ( ) , Param . DEL ) ) {
operate = DeviceRebootType . DELETE_TERMINAL ;
} else if ( Objects . equals ( temp . getOperateType ( ) , Param . ADD ) ) {
operate = DeviceRebootType . ADD_TERMINAL ;
}
//设备删除找不到设备名称,重日志截取
if ( Objects . equals ( temp . getOperateType ( ) , Param . DEL ) ) {
String temLos = " %s名称:%s;前置信息:%s " ;
List < String > strings = this . parseTemplateValues ( temLos , temp . getTerminalDescribe ( ) ) ;
String devName = strings . get ( 1 ) ; // 设备名称
String nodeName = strings . get ( 2 ) ; // 进程名称
pqsTerminalPushLogDTO . setDevName ( devName ) ;
String nodeId = nodeNameMap . get ( nodeName ) . getId ( ) ;
pqsTerminalPushLogDTO . setNodeId ( nodeId ) ;
pqsTerminalPushLogDTO . setNodeName ( nodeName ) ;
} else {
//如果存在说明设备未被删除, 不存在说明有一条删除日志, 直接return;
if ( lineMap . containsKey ( deviceId ) ) {
pqsTerminalPushLogDTO . setDevName ( lineMap . get ( deviceId ) . getName ( ) ) ;
} else {
pqsTerminalPushLogDTO . setDevName ( " 删除设备 " ) ;
}
//如果新增的没有,说明该新增设备在本次也删除了,
if ( deviceMap . containsKey ( deviceId ) ) {
String nodeId = deviceMap . get ( deviceId ) . getNodeId ( ) ;
pqsTerminalPushLogDTO . setNodeId ( nodeId ) ;
pqsTerminalPushLogDTO . setNodeName ( nodeMap . get ( nodeId ) . getName ( ) ) ;
} else {
addAndDelteId . add ( deviceId ) ;
return ;
}
}
pqsTerminalPushLogDTO . setProcessUpdateFlag ( false ) ;
if ( deviceProcesseMap . containsKey ( deviceId ) ) {
pqsTerminalPushLogDTO . setProcessNum ( deviceProcesseMap . get ( deviceId ) ) ;
} else {
throw new BusinessException ( " 存在终端未设置进程号,请在前置管理页面设置进程号在进行此操作 " ) ;
}
pqsTerminalPushLogDTO . setOperateType ( operate ) ;
pqsTerminalPushLogDTO . setOperateType ( DeviceRebootType . LEDGER_MODIFY ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO ) ;
} else if ( Objects . equals ( temp . getTerminalType ( ) , 4 ) ) {
String deviceId = temp . getObjIndex ( ) ;
if ( ! deviceMap . containsKey ( deviceId ) ) {
//说明设备被删除
String temLos = " %s名称:%s;前置信息:%s " ;
List < String > strings = this . parseTemplateValues ( temLos , temp . getTerminalDescribe ( ) ) ;
String devName = strings . get ( 1 ) ; // 设备名称
String nodeName = strings . get ( 2 ) ; // 进程名称
pqsTerminalPushLogDTO . setDevName ( devName ) ;
//如果前置删了直接返回
if ( ! nodeNameMap . containsKey ( nodeName ) ) {
return ;
}
String nodeId = nodeNameMap . get ( nodeName ) . getId ( ) ;
pqsTerminalPushLogDTO . setNodeId ( nodeId ) ;
pqsTerminalPushLogDTO . setNodeName ( nodeName ) ;
}
//如果是修改进程操作记录2个进程日志;
if ( temp . getLogsType ( ) . equals ( dataDic . getId ( ) ) ) {
String temLos = " %s进行更新终端进程操作;终端名称 : %s,由进程%s修改成进程%s " ;
List < String > strings = this . parseTemplateValues ( temLos , temp . getTerminalDescribe ( ) ) ;
String num1 = strings . get ( 2 ) ; // 第一个进程
String num2 = strings . get ( 3 ) ; // 第二个进程
int processId1 = Integer . parseInt ( num1 ) ;
int processId2 = Integer . parseInt ( num2 ) ;
pqsTerminalPushLogDTO . setId ( temp . getId ( ) ) ;
// String deviceId = temp.getObjIndex();
pqsTerminalPushLogDTO . setDevId ( deviceId ) ;
pqsTerminalPushLogDTO . setDevName ( lineMap . containsKey ( deviceId ) ? lineMap . get ( deviceId ) . getName ( ) : " 删除设备 " ) ;
String nodeId = deviceMap . get ( deviceId ) . getNodeId ( ) ;
pqsTerminalPushLogDTO . setNodeId ( nodeId ) ;
pqsTerminalPushLogDTO . setNodeName ( nodeMap . get ( nodeId ) . getName ( ) ) ;
pqsTerminalPushLogDTO . setProcessUpdateFlag ( true ) ;
pqsTerminalPushLogDTO . setProcessNum ( processId1 ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO ) ;
PqsTerminalPushLogDTO pqsTerminalPushLogDTO1 = new PqsTerminalPushLogDTO ( ) ;
pqsTerminalPushLogDTO1 . setId ( temp . getId ( ) ) ;
pqsTerminalPushLogDTO1 . setDevId ( deviceId ) ;
pqsTerminalPushLogDTO1 . setDevName ( lineMap . get ( deviceId ) . getName ( ) ) ;
pqsTerminalPushLogDTO1 . setNodeId ( nodeId ) ;
pqsTerminalPushLogDTO1 . setNodeName ( nodeMap . get ( nodeId ) . getName ( ) ) ;
pqsTerminalPushLogDTO1 . setProcessUpdateFlag ( true ) ;
pqsTerminalPushLogDTO1 . setProcessNum ( processId2 ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO1 ) ;
} else {
pqsTerminalPushLogDTO . setId ( temp . getId ( ) ) ;
// String deviceId = temp.getObjIndex();
pqsTerminalPushLogDTO . setDevId ( deviceId ) ;
//区分删除操作,新增和其他操作
String operate = DeviceRebootType . LEDGER_MODIFY ;
if ( Objects . equals ( temp . getOperateType ( ) , Param . DEL ) ) {
operate = DeviceRebootType . DELETE_TERMINAL ;
} else if ( Objects . equals ( temp . getOperateType ( ) , Param . ADD ) ) {
operate = DeviceRebootType . ADD_TERMINAL ;
}
//设备删除找不到设备名称,重日志截取
if ( Objects . equals ( temp . getOperateType ( ) , Param . DEL ) ) {
String temLos = " %s名称:%s;前置信息:%s " ;
List < String > strings = this . parseTemplateValues ( temLos , temp . getTerminalDescribe ( ) ) ;
String devName = strings . get ( 1 ) ; // 设备名称
String nodeName = strings . get ( 2 ) ; // 进程名称
pqsTerminalPushLogDTO . setDevName ( devName ) ;
String nodeId = nodeNameMap . get ( nodeName ) . getId ( ) ;
pqsTerminalPushLogDTO . setNodeId ( nodeId ) ;
pqsTerminalPushLogDTO . setNodeName ( nodeName ) ;
} else {
//如果存在说明设备未被删除, 不存在说明有一条删除日志, 直接return;
if ( lineMap . containsKey ( deviceId ) ) {
pqsTerminalPushLogDTO . setDevName ( lineMap . get ( deviceId ) . getName ( ) ) ;
} else {
pqsTerminalPushLogDTO . setDevName ( " 删除设备 " ) ;
}
//如果新增的没有,说明该新增设备在本次也删除了,
if ( deviceMap . containsKey ( deviceId ) ) {
String nodeId = deviceMap . get ( deviceId ) . getNodeId ( ) ;
pqsTerminalPushLogDTO . setNodeId ( nodeId ) ;
pqsTerminalPushLogDTO . setNodeName ( nodeMap . containsKey ( nodeId ) ? nodeMap . get ( nodeId ) . getName ( ) : " 删除前置 " ) ;
} else {
addAndDelteId . add ( deviceId ) ;
return ;
}
}
pqsTerminalPushLogDTO . setProcessUpdateFlag ( false ) ;
if ( deviceProcesseMap . containsKey ( deviceId ) ) {
pqsTerminalPushLogDTO . setProcessNum ( deviceProcesseMap . get ( deviceId ) ) ;
} else {
throw new BusinessException ( " 存在终端未设置进程号,请在前置管理页面设置进程号在进行此操作 " ) ;
}
pqsTerminalPushLogDTO . setOperateType ( operate ) ;
pqsTerminalPushLogDTOList . add ( pqsTerminalPushLogDTO ) ;
}
}
}
} ) ;
}
} ) ;
}
Map < String , Map < Integer , List < PqsTerminalPushLogDTO > > > collect2 = pqsTerminalPushLogDTOList . stream ( ) . filter ( temp - > ! addAndDelteId . contains ( temp . getDevId ( ) ) ) . collect ( Collectors . groupingBy ( PqsTerminalPushLogDTO : : getNodeId , Collectors . groupingBy ( PqsTerminalPushLogDTO : : getProcessNum ) ) ) ;
collect2 . forEach ( ( nodeId , pqsTerminalPushLogDTOMap ) - > {
pqsTerminalPushLogDTOMap . forEach ( ( processId , tempPqsTerminalPushLogDTOList ) - > {
Map < String , Map < Integer , List < PqsTerminalPushLogDTO > > > collect2 = pqsTerminalPushLogDTOList . stream ( ) . filter ( temp - > ! addAndDelteId . contains ( temp . getDevId ( ) ) ) . collect ( Collectors . groupingBy ( PqsTerminalPushLogDTO : : getNodeId , Collectors . groupingBy ( PqsTerminalPushLogDTO : : getProcessNum ) ) ) ;
collect2 . forEach ( ( nodeId , pqsTerminalPushLogDTOMap ) - > {
pqsTerminalPushLogDTOMap . forEach ( ( processId , tempPqsTerminalPushLogDTOList ) - > {
PqsTerminalPushLogDTO pqsTerminalPushLogDTO = tempPqsTerminalPushLogDTOList . get ( 0 ) ;
//如果存在终端变更进程的记录直接重启进程
boolean processUpdateFlag = tempPqsTerminalPushLogDTOList . stream ( ) . map ( PqsTerminalPushLogDTO : : getProcessUpdateFlag ) . anyMatch ( b - > b ! = null & & b ) ;
if ( processUpdateFlag ) {
PreCommandDTO preCommandDTO = new PreCommandDTO ( ) ;
String guid = IdUtil . simpleUUID ( ) ;
String command = " 重启前置机: " + pqsTerminalPushLogDTO . getNodeName ( ) + " 下进程: " + processId ;
preCommandDTO . setGuid ( guid ) ;
preCommandDTO . setCommand ( command ) ;
preCommandDTO . setResult ( " 2 " ) ;
//调用重启进程接口
this . askRestartProcess ( guid , pqsTerminalPushLogDTO . getNodeId ( ) , processId , " delete " , " all " ) ;
preCommandDTOList . add ( preCommandDTO ) ;
} else {
List < String > deviceIds = tempPqsTerminalPushLogDTOList . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
//如果一个进程上涉及10个以上的设备修改, 直接重启进程, 否则重启设备
if ( CollectionUtil . isNotEmpty ( deviceIds ) & & deviceIds . size ( ) > 10 ) {
PqsTerminalPushLogDTO pqsTerminalPushLogDTO = tempPqsTerminalPushLogDTOList . get ( 0 ) ;
//如果存在终端变更进程的记录直接重启进程
boolean processUpdateFlag = tempPqsTerminalPushLogDTOList . stream ( ) . map ( PqsTerminalPushLogDTO : : getProcessUpdateFlag ) . anyMatch ( b - > b ! = null & & b ) ;
if ( processUpdateFlag ) {
PreCommandDTO preCommandDTO = new PreCommandDTO ( ) ;
String guid = IdUtil . simpleUUID ( ) ;
String command = " 重启前置机: " + pqsTerminalPushLogDTO . getNodeName ( ) + " 下进程: " + processId ;
preCommandDTO . setGuid ( guid ) ;
preCommandDTO . setCommand ( command ) ;
preCommandDTO . setResult ( " 2 " ) ;
//调用重启进程接口
this . askRestartProcess ( guid , pqsTerminalPushLogDTO . getNodeId ( ) , processId , " delete " , " all " ) ;
preCommandDTOList . add ( preCommandDTO ) ;
} else {
//调用重启设备接口先删除设备,在新增,在修改在重启设备
List < String > deleteDevIds = new ArrayList < > ( ) ;
List < String > addDev Ids = new ArrayList < > ( ) ;
List < String > modifyDevIds = new ArrayList < > ( ) ;
Map < String , List < PqsTerminalPushLogDTO > > collect = tempPqsTerminalPushLogDTOList . stream ( ) . collect ( Collectors . groupingBy ( PqsTerminalPushLogDTO : : getOperateType ) ) ;
if ( collect . containsKey ( DeviceRebootType . DELETE_TERMINAL ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . g et( DeviceRebootType . DELETE_TERMINAL ) ;
deleteDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
}
if ( collect . containsKey ( DeviceRebootType . ADD_TERMINAL ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . ADD_TERMINAL ) ;
addDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
}
if ( collect . containsKey ( DeviceRebootType . LEDGER_MODIFY ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . LEDGER_MODIFY ) ;
modifyDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
}
if ( collect . containsKey ( DeviceRebootType . DELETE_TERMINAL ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . DELETE_TERMINAL ) ;
List < String > finalAddDevIds = addDevIds ;
//过滤本次新增的设备,因为前置那边还没有新增该装备
pqsTerminalPushLogDTOList1 = pqsTerminalPushLogDTOList1 . stream ( ) . filter ( temp - > ! finalAddDevIds . contains ( temp . getDevId ( ) ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( pqsTerminalPushLogDTOList1 ) ) {
String devNameString = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevName ) . distinct ( ) . collect ( Collectors . joining ( " , " ) ) ;
List < String > resultDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
PreCommandDTO preCommandDTO = new PreCommandDTO ( ) ;
String guid = IdUtil . simpleUUID ( ) ;
List < String > deviceIds = tempPqsTerminalPushLogDTOList . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
//如果一个进程上涉及10个以上的设备修改, 直接重启进程, 否则重启设备
if ( CollectionUtil . isNotEmpty ( device Ids) & & deviceIds . size ( ) > 10 ) {
PreCommandDTO preCommandDTO = new PreCommandDTO ( ) ;
String guid = IdUtil . simpleUUID ( ) ;
String command = " 重启前置机: " + pqsTerminalPushLogDTO . getNodeName ( ) + " 下进程: " + processId ;
preCommandDTO . s etGuid ( guid ) ;
preCommandDTO . setCommand ( command ) ;
preCommandDTO . setResult ( " 2 " ) ;
String command = " 删除前置机: " + pqsTerminalPushLogDTO . getNodeName ( ) + " 下进程: " + processId + " 下终端 " + devNameString ;
preCommand DTO . s etGuid ( guid ) ;
preCommandDTO . setComman d( c ommand) ;
preCommandDTO . setResult ( " 2 " ) ;
//调用重启进程接口
this . askRestartProcess ( guid , pqsTerminalPushLog DTO . g etNodeId ( ) , processId , " delete " , " all " ) ;
preCommandDTOList . ad d( preC ommandDTO ) ;
} else {
//调用重启设备接口先删除设备,在新增,在修改在重启设备
List < String > deleteDevIds = new ArrayList < > ( ) ;
List < String > addDevIds = new ArrayList < > ( ) ;
List < String > modifyDevIds = new ArrayList < > ( ) ;
Map < String , List < PqsTerminalPushLogDTO > > collect = tempPqsTerminalPushLogDTOList . stream ( ) . collect ( Collectors . groupingBy ( PqsTerminalPushLogDTO : : getOperateType ) ) ;
if ( collect . containsKey ( DeviceRebootType . DELETE_TERMINAL ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . DELETE_TERMINAL ) ;
deleteDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
}
if ( collect . containsKey ( DeviceRebootType . ADD_TERMINAL ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . ADD_TERMINAL ) ;
addDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
}
if ( collect . containsKey ( DeviceRebootType . LEDGER_MODIFY ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . LEDGER_MODIFY ) ;
modifyDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
}
if ( collect . containsKey ( DeviceRebootType . DELETE_TERMINAL ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . DELETE_TERMINAL ) ;
List < String > finalAddDevIds = addDevIds ;
//过滤本次新增的设备,因为前置那边还没有新增该装备
pqsTerminalPushLogDTOList1 = pqsTerminalPushLogDTOList1 . stream ( ) . filter ( temp - > ! finalAddDevIds . contains ( temp . getDevId ( ) ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( pqsTerminalPushLogDTOList1 ) ) {
String devNameString = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevName ) . distinct ( ) . collect ( Collectors . joining ( " , " ) ) ;
List < String > resultDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
PreCommandDTO preCommandDTO = new PreCommandDTO ( ) ;
String guid = IdUtil . simpleUUID ( ) ;
String command = " 删除前置机: " + pqsTerminalPushLogDTO . getNodeName ( ) + " 下进程: " + processId + " 下终端 " + devNameString ;
preCommandDTO . setGuid ( guid ) ;
preCommandDTO . setCommand ( command ) ;
preCommandDTO . setResult ( " 2 " ) ;
//调用重启设备接口
this . askRestartDevice ( guid , pqsTerminalPushLogDTO . getNodeId ( ) , resultDevIds , DeviceRebootType . DELETE_TERMINAL , processId ) ;
preCommandDTOList . add ( preCommandDTO ) ;
}
}
if ( collect . containsKey ( DeviceRebootType . ADD_TERMINAL ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . ADD_TERMINAL ) ;
List < String > finalDeleteDevIds = deleteDevIds ;
pqsTerminalPushLogDTOList1 = pqsTerminalPushLogDTOList1 . stream ( ) . filter ( temp - > ! finalDeleteDevIds . contains ( temp . getDevId ( ) ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( pqsTerminalPushLogDTOList1 ) ) {
String devNameString = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevName ) . distinct ( ) . collect ( Collectors . joining ( " , " ) ) ;
List < String > resultDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
PreCommandDTO preCommandDTO = new PreCommandDTO ( ) ;
String guid = IdUtil . simpleUUID ( ) ;
String command = " 新增前置机: " + pqsTerminalPushLogDTO . getNodeName ( ) + " 下进程: " + processId + " 下终端 " + devNameString ;
preCommandDTO . setGuid ( guid ) ;
preCommandDTO . setCommand ( command ) ;
preCommandDTO . setResult ( " 2 " ) ;
//调用重启进程接口
this . askRestartDevice ( guid , pqsTerminalPushLogDTO . getNodeId ( ) , resultDevIds , DeviceRebootType . ADD_TERMINAL , processId ) ;
preCommandDTOList . add ( preCommandDTO ) ;
}
}
if ( collect . containsKey ( DeviceRebootType . LEDGER_MODIFY ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . LEDGER_MODIFY ) ;
List < String > finalDeleteDevIds1 = deleteDevIds ;
List < String > finalAddDevIds1 = addDevIds ;
pqsTerminalPushLogDTOList1 = pqsTerminalPushLogDTOList1 . stream ( ) . filter ( temp - > ! finalDeleteDevIds1 . contains ( temp . getDevId ( ) ) & & ! finalAddDevIds1 . contains ( temp . getDevId ( ) ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( pqsTerminalPushLogDTOList1 ) ) {
String devNameString = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevName ) . distinct ( ) . collect ( Collectors . joining ( " , " ) ) ;
List < String > resultDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
PreCommandDTO preCommandDTO = new PreCommandDTO ( ) ;
String guid = IdUtil . simpleUUID ( ) ;
String command = " 修改前置机: " + pqsTerminalPushLogDTO . getNodeName ( ) + " 下进程: " + processId + " 下终端 " + devNameString ;
preCommandDTO . setGuid ( guid ) ;
preCommandDTO . setCommand ( command ) ;
preCommandDTO . setResult ( " 2 " ) ;
//调用重启进程接口
this . askRestartDevice ( guid , pqsTerminalPushLogDTO . getNodeId ( ) , resultDevIds , DeviceRebootType . LEDGER_MODIFY , processId ) ;
preCommandDTOList . add ( preCommandDTO ) ;
}
//调用重启设备接口
this . askRestartDevice ( guid , pqsTerminalPushLogDTO . getNodeId ( ) , resultDevIds , DeviceRebootType . DELETE_TERMINAL , processId ) ;
preCommandDTOList . add ( preCommandDTO ) ;
}
}
if ( collect . containsKey ( DeviceRebootType . ADD_TERMINAL ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . ADD_TERMINAL ) ;
List < String > finalDeleteDevIds = deleteDevIds ;
pqsTerminalPushLogDTOList1 = pqsTerminalPushLogDTOList1 . stream ( ) . filter ( temp - > ! finalDeleteDevIds . contains ( temp . getDevId ( ) ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( pqsTerminalPushLogDTOList1 ) ) {
String devNameString = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevName ) . distinct ( ) . collect ( Collectors . joining ( " , " ) ) ;
List < String > resultDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
PreCommandDTO preCommandDTO = new PreCommandDTO ( ) ;
String guid = IdUtil . simpleUUID ( ) ;
String command = " 新增前置机: " + pqsTerminalPushLogDTO . getNodeName ( ) + " 下进程: " + processId + " 下终端 " + devNameString ;
preCommandDTO . setGuid ( guid ) ;
preCommandDTO . setCommand ( command ) ;
preCommandDTO . setResult ( " 2 " ) ;
//调用重启进程接口
this . askRestartDevice ( guid , pqsTerminalPushLogDTO . getNodeId ( ) , resultDevIds , DeviceRebootType . ADD_TERMINAL , processId ) ;
preCommandDTOList . add ( preCommandDTO ) ;
}
}
if ( collect . containsKey ( DeviceRebootType . LEDGER_MODIFY ) ) {
List < PqsTerminalPushLogDTO > pqsTerminalPushLogDTOList1 = collect . get ( DeviceRebootType . LEDGER_MODIFY ) ;
List < String > finalDeleteDevIds1 = deleteDevIds ;
List < String > finalAddDevIds1 = addDevIds ;
pqsTerminalPushLogDTOList1 = pqsTerminalPushLogDTOList1 . stream ( ) . filter ( temp - > ! finalDeleteDevIds1 . contains ( temp . getDevId ( ) ) & & ! finalAddDevIds1 . contains ( temp . getDevId ( ) ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( pqsTerminalPushLogDTOList1 ) ) {
String devNameString = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevName ) . distinct ( ) . collect ( Collectors . joining ( " , " ) ) ;
List < String > resultDevIds = pqsTerminalPushLogDTOList1 . stream ( ) . map ( PqsTerminalPushLogDTO : : getDevId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
PreCommandDTO preCommandDTO = new PreCommandDTO ( ) ;
String guid = IdUtil . simpleUUID ( ) ;
String command = " 修改前置机: " + pqsTerminalPushLogDTO . getNodeName ( ) + " 下进程: " + processId + " 下终端 " + devNameString ;
preCommandDTO . setGuid ( guid ) ;
preCommandDTO . setCommand ( command ) ;
preCommandDTO . setResult ( " 2 " ) ;
//调用重启进程接口
this . askRestartDevice ( guid , pqsTerminalPushLogDTO . getNodeId ( ) , resultDevIds , DeviceRebootType . LEDGER_MODIFY , processId ) ;
preCommandDTOList . add ( preCommandDTO ) ;
}
}
}
}
} ) ;
} ) ;
} ) ;
} catch ( Exception e ) {
//出现异常,直接重启整个前置
exFlag = true ;
for ( Node node : nodes ) {
RestartParam restartParam = new RestartParam ( ) ;
restartParam . setDeviceRebootType ( " 1 " ) ;
restartParam . setNodeId ( node . getId ( ) ) ;
askRestartProcess ( restartParam ) ;
}
}
if ( ! CollectionUtils . isEmpty ( list1 ) ) {
list1 . forEach ( temp - > {
temp . setIsPush ( 1 ) ;
@@ -4016,6 +4051,10 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
} else {
throw new BusinessException ( " 暂无变动的装置测点推送 " ) ;
}
if ( exFlag ) {
throw new BusinessException ( " 存在未知错误,重启前置 " ) ;
}
if ( CollectionUtils . isEmpty ( preCommandDTOList ) ) {
throw new BusinessException ( " 暂无变动的装置测点推送 " ) ;
}
@@ -4166,7 +4205,21 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
subName = subMap . get ( line . getPids ( ) . split ( StrUtil . COMMA ) [ SUB_LEVEL . getCode ( ) ] ) . getName ( ) ;
String temLos = " %s进行%s%s操作;详细信息: %s名称: %s " ;
if ( line . getLevel ( ) . equals ( LINE_LEVEL . getCode ( ) ) ) {
String devName = this . getById ( line . getPids ( ) . split ( StrUtil . COMMA ) [ DEVICE_LEVEL . getCode ( ) ] ) . getName ( ) ;
String devId = line . getPids ( ) . split ( StrUtil . COMMA ) [ DEVICE_LEVEL . getCode ( ) ] ;
Line byId = this . getById ( devId ) ;
String devName = " " ;
//设备已删除
if ( Objects . nonNull ( byId ) ) {
devName = byId . getName ( ) ;
} else {
List < Line > device = logsList . stream ( ) . filter ( temp - > Objects . equals ( temp . getId ( ) , devId ) ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( device ) ) {
devName = device . get ( 0 ) . getName ( ) ;
} else {
devName = " 已删除设备 " ;
}
}
tem = String . format ( temLos , name , op , levelOperate , levelOperate , subName + " -> " + devName + " -> " + line . getName ( ) + nodeName ) ;
} else {
tem = String . format ( temLos , name , op , levelOperate , levelOperate , subName + " -> " + line . getName ( ) + nodeName ) ;