Commit b0822c9c authored by maoying's avatar maoying

解决冲突

parents df82f465 4f60600e
......@@ -9,6 +9,8 @@ import com.yeejoin.amos.fas.business.util.FileHelper;
import com.yeejoin.amos.fas.business.vo.ReginParams;
import com.yeejoin.amos.fas.core.util.CommonResponse;
import com.yeejoin.amos.fas.core.util.CommonResponseUtil;
import com.yeejoin.amos.fas.exception.YeeException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
......@@ -119,6 +121,9 @@ public class ExcelController extends BaseController {
iExcelService.importWaterResource(list);
}
return CommonResponseUtil.success();
} catch (YeeException e) {
logger.info("导入数据异常", e);
return CommonResponseUtil.failure(e.getMessage());
} catch (Exception e) {
logger.info("导入数据异常", e);
return CommonResponseUtil.failure("导入失败");
......
package com.yeejoin.amos.fas.business.controller;
import com.google.common.collect.Maps;
import com.itextpdf.text.pdf.PdfStructTreeController.returnType;
import com.yeejoin.amos.fas.business.dao.mapper.FireEquipPointMapper;
import com.yeejoin.amos.fas.business.entity.mybatis.FireEquipmentPointEntity;
import com.yeejoin.amos.fas.business.service.intfc.IFireEquipPontService;
......@@ -163,6 +164,15 @@ public class FireEquimtPointController extends BaseController {
@ApiOperation(value = "修改监测点", notes = "修改监测点")
@PostMapping(value = "/update")
public CommonResponse update(@ApiParam(value = "监测点对象", required = true) @RequestBody FireEquipmentPointEntity fireEquipmentPointEntity) {
FireEquipmentPoint old = fireEquipPontService.queryOne(fireEquipmentPointEntity.getId());
if(old.getId() != 0 ) {
String[] idArray = new String[] { String.valueOf(old.getId()) };
if(fireEquipPontService.countImpEquipment(idArray) > 0) {
String riskSourceNames = fireEquipPontService.findBindRiskSourceStrByPointIds(idArray);
return CommonResponseUtil.failure("该设备已被风险区域 [" + riskSourceNames + "] 绑定,请先删除绑定关系");
}
}
return fireEquipPontService.update(fireEquipmentPointEntity);
}
......@@ -172,6 +182,11 @@ public class FireEquimtPointController extends BaseController {
if (StringUtils.isEmpty(pointIds)) {
return CommonResponseUtil.failure("监测点编号必填");
}
String[] idArray = pointIds.split(",");
if(fireEquipPontService.countImpEquipment(idArray) > 0) {
String riskSourceNames = fireEquipPontService.findBindRiskSourceStrByPointIds(idArray);
return CommonResponseUtil.failure("该点位已被风险区域 [" + riskSourceNames + "] 绑定,请先删除绑定关系");
}
List<Long> ids = Arrays.stream(pointIds.split(",")).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
return fireEquipPontService.batchDelete(ids);
}
......
package com.yeejoin.amos.fas.business.controller;
import com.yeejoin.amos.fas.business.param.CommonPageInfoParam;
import com.yeejoin.amos.fas.business.service.intfc.IEquipmentService;
import com.yeejoin.amos.fas.business.service.intfc.IFireCarService;
import com.yeejoin.amos.fas.business.service.intfc.IFireEquipService;
import com.yeejoin.amos.fas.business.service.intfc.IWaterResourceService;
......@@ -16,6 +17,7 @@ import com.yeejoin.amos.fas.dao.entity.FireEquipment;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
......@@ -35,6 +37,8 @@ public class FireSourceController extends BaseController {
private IFireEquipService iFireEquipService;
@Autowired
private IWaterResourceService iWaterResourceService;
@Autowired
private IEquipmentService iEquipService;
@ApiOperation(httpMethod = "POST", value = "添加消防装备", notes = "添加消防装备")
@RequestMapping(value = "", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
......@@ -82,6 +86,9 @@ public class FireSourceController extends BaseController {
if (iFireEquipService.countAssociatedEquipStationByIds(idArray) > 0) {
return CommonResponseUtil.failure("该设备已被消防泡沫间或消防小室绑定,请先删除绑定关系");
}
if (iEquipService.countImpEquipByIds(idArray) > 0) {
return CommonResponseUtil.failure("该设备已被重点设备绑定,请先删除绑定关系");
}
return CommonResponseUtil.success(iFireEquipService.delete(idArray));
}
......@@ -177,11 +184,12 @@ public class FireSourceController extends BaseController {
@ApiParam(value = "设备名称", required = false) @RequestParam(required = false) String name,
@ApiParam(value = "设备编号", required = false) @RequestParam(required = false) String code,
@ApiParam(value = "设备类型", required = false) @RequestParam(required = false) String equipClassify,
@ApiParam(value = "是否绑定配套设备", required = false) @RequestParam(required = false) String bindStation,
int pageNumber, int pageSize) {
CommonPageable commonPageable = new CommonPageable(pageNumber, pageSize);
return CommonResponseUtil.success(iFireEquipService.queryForEquipmentList(StringUtils.trimToNull(name),
StringUtils.trimToNull(code), StringUtils.trimToNull(equipClassify), commonPageable));
StringUtils.trimToNull(code), StringUtils.trimToNull(equipClassify), commonPageable,StringUtils.trimToNull(bindStation)));
}
@ApiOperation(httpMethod = "GET", value = "消防状态明细信息", notes = "消防状态明细信息")
......
......@@ -41,14 +41,16 @@ public interface FireEquipMapper extends BaseMapper {
long queryForEquipmentPageCount(@Param("name") String name,
@Param("code") String code,
@Param("equipClassify") String equipClassify);
@Param("equipClassify") String equipClassify,
@Param("bindStation") String bindStation);
List<Map> queryForEquipmentPage(
@Param("name") String name,
@Param("code") String code,
@Param("equipClassify") String equipClassify,
@Param("start") long start,
@Param("length") int length);
@Param("length") int length,
@Param("bindStation") String bindStation);
List<Map> queryForGroupCount(@Param("fireStationId") Long fireStationId);
......
......@@ -22,4 +22,7 @@ public interface IEquipmentFireEquipmentDao extends BaseDao<EquipmentFireEquipme
List<EquipmentFireEquipment> findAllByEquipmentId(Long equipmentId);
@Query(value = "SELECT count(1) FROM `f_equipment_fire_equipment` WHERE fire_equipment_id in ?1", nativeQuery = true)
int countImpEquipByIds(String[] ids);
}
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.fas.business.dao.repository;
import java.util.Optional;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import com.yeejoin.amos.fas.dao.entity.FireEquipmentPoint;
......@@ -15,4 +16,13 @@ public interface IFireEquipmentPointDao extends BaseDao<FireEquipmentPoint, Long
int countByCode(String code);
@Query(value = "SELECT count(1) FROM `f_fmea_equipment_point` WHERE equipment_point_id in ?1", nativeQuery = true)
int countImpEquipment(String[] idArray);
@Query(value = "select group_CONCAT(r.name) from f_fmea_equipment_point ep " +
"left join f_fmea f on f.id = ep.fmea_id " +
"left join f_risk_source r on r.id = f.risk_source_id " +
" WHERE ep.equipment_point_id in ?1 ", nativeQuery = true)
String findBindRiskSourceStrByPointIds(String[] idArray);
}
......@@ -39,4 +39,6 @@ public interface IRiskSourceDao extends BaseDao<RiskSource, Long> {
Optional<RiskSource> findByOrgCodeAndParentId(String orgCode, Long parentId);
List<RiskSource> findByParentIdAndIsRegion(long id, String string);
Optional<RiskSource> findByCode(String riskSourceCode);
}
......@@ -16,7 +16,9 @@ public class FeignBasicAuthRequestInterceptor implements RequestInterceptor{
@Override
public void apply(RequestTemplate template) {
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
if(attributes != null) {
HttpServletRequest request = attributes.getRequest();
/* Get token from header */
String authToken = request.getHeader("X-Access-Token");
/* If token not found get it from request parameter */
......@@ -27,4 +29,5 @@ public class FeignBasicAuthRequestInterceptor implements RequestInterceptor{
template.header("X-Access-Token", authToken);
template.header("token", authToken);
}
}
}
......@@ -48,9 +48,12 @@ public class FireEquipmentParam {
@Excel(name = "重量", orderNum = "13")
private Double weight = 0.00;
@Excel(name = "风险区域编号", orderNum = "14")
// @Excel(name = "风险区域id", orderNum = "14")
private Long riskSourceId;
@Excel(name = "风险区域编号(必填)", orderNum = "14")
private String riskSourceCode;
@Excel(name = "厂商", orderNum = "15", width = 20)
private String manufacturer;
......@@ -189,4 +192,18 @@ public class FireEquipmentParam {
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
/**
* @return the riskSourceCode
*/
public String getRiskSourceCode() {
return riskSourceCode;
}
/**
* @param riskSourceCode the riskSourceCode to set
*/
public void setRiskSourceCode(String riskSourceCode) {
this.riskSourceCode = riskSourceCode;
}
}
......@@ -6,13 +6,13 @@ public class WaterResourceParam {
private Long id;
@Excel(name = "编号", width = 20)
@Excel(name = "编号(必填)", width = 20)
private String code;
@Excel(name = "名称", orderNum = "1", width = 20)
private String name;
@Excel(name = "类型", replace = {"消火栓_1", "消防水池_2", "喷淋_3"}, orderNum = "3")
@Excel(name = "类型(消火栓_1,消防水池_2,喷淋_3)", replace = {"消火栓_1", "消防水池_2", "喷淋_3"}, orderNum = "3")
private String type;
@Excel(name = "三维坐标", orderNum = "4", width = 15)
......@@ -21,12 +21,15 @@ public class WaterResourceParam {
@Excel(name = "三维楼层", orderNum = "5")
private String floor3d;
@Excel(name = "是否室内", replace = {"是_1", "否_0"}, orderNum = "6")
@Excel(name = "是否室内(是_1,否_0)", replace = {"是_1", "否_0"}, orderNum = "6")
private Boolean isIndoor=true;
@Excel(name = "所属风险区域", orderNum = "7")
// @Excel(name = "所属风险区域", orderNum = "7")
private Long riskSourceId;
@Excel(name = "所属风险区域编号(必填)", orderNum = "7")
private String riskSourceCode;
@Excel(name = "房间", orderNum = "8")
private String room;
......@@ -123,4 +126,18 @@ public class WaterResourceParam {
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
/**
* @return the riskSourceCode
*/
public String getRiskSourceCode() {
return riskSourceCode;
}
/**
* @param riskSourceCode the riskSourceCode to set
*/
public void setRiskSourceCode(String riskSourceCode) {
this.riskSourceCode = riskSourceCode;
}
}
......@@ -51,7 +51,7 @@ public class AccidentTypeServiceImpl implements IAccidentTypeService {
private void checkBeforeDet(Long id) {
List<RiskFactor> list = iRiskFactorDao.findByAccidentTypeId(id);
if(null != list && list.size()>0){
throw new YeeException("危险因素"+list.get(0).getName()+"在使用中,不能删除");
throw new YeeException(list.get(0).getName()+"在使用中,不能删除");
}
}
......
......@@ -486,4 +486,10 @@ public class EquipmentServiceImpl implements IEquipmentService {
return data.get(0);
}
@Override
public int countImpEquipByIds(String[] idArray) {
return equipmentFireEquipmentDao.countImpEquipByIds(idArray);
}
}
......@@ -6,6 +6,7 @@ import com.google.common.collect.Sets;
import com.yeejoin.amos.fas.business.dao.mapper.FireEquipMapper;
import com.yeejoin.amos.fas.business.dao.mapper.FireEquipPointMapper;
import com.yeejoin.amos.fas.business.dao.mapper.WaterResourceMapper;
import com.yeejoin.amos.fas.business.dao.repository.IRiskSourceDao;
import com.yeejoin.amos.fas.business.entity.mybatis.FireEquipmentEntity;
import com.yeejoin.amos.fas.business.entity.mybatis.FireEquipmentPointEntity;
import com.yeejoin.amos.fas.business.param.FireEquipmentParam;
......@@ -14,7 +15,10 @@ import com.yeejoin.amos.fas.business.param.WaterResourceParam;
import com.yeejoin.amos.fas.business.service.intfc.IExcelService;
import com.yeejoin.amos.fas.business.service.intfc.IFireEquipPontService;
import com.yeejoin.amos.fas.core.util.CommonResponse;
import com.yeejoin.amos.fas.dao.entity.RiskSource;
import com.yeejoin.amos.fas.dao.entity.WaterResource;
import com.yeejoin.amos.fas.exception.YeeException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageImpl;
......@@ -25,6 +29,7 @@ import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
@Service("excelService")
......@@ -42,6 +47,9 @@ public class ExcelServiceImpl implements IExcelService {
@Autowired
private WaterResourceMapper waterResourceMapper;
@Autowired
private IRiskSourceDao riskSourceDao;
@Transactional
@Override
public void importFireEquipment(List<FireEquipmentParam> list) {
......@@ -53,6 +61,13 @@ public class ExcelServiceImpl implements IExcelService {
List<FireEquipmentParam> updateList = Lists.newArrayList();
list.forEach(fireEquipment -> {
String code = fireEquipment.getCode();
String riskSourceCode = fireEquipment.getRiskSourceCode();
Optional<RiskSource> riskSourceOptional = riskSourceDao.findByCode(riskSourceCode);
if(riskSourceOptional.isPresent()) {
fireEquipment.setRiskSourceId(riskSourceOptional.get().getId());
}else {
throw new YeeException("编号: [" + riskSourceCode + "] 风险区域不存在!");
}
FireEquipmentEntity fireEquipmentEntity = equipmentMap.get(code);
if (fireEquipmentEntity == null) {
saveList.add(fireEquipment);
......@@ -132,6 +147,13 @@ public class ExcelServiceImpl implements IExcelService {
List<WaterResourceParam> saveList = Lists.newArrayList();
List<WaterResourceParam> updateList = Lists.newArrayList();
list.forEach(warerRes -> {
String riskSourceCode = warerRes.getRiskSourceCode();
Optional<RiskSource> riskSourceOptional = riskSourceDao.findByCode(riskSourceCode);
if(riskSourceOptional.isPresent()) {
warerRes.setRiskSourceId(riskSourceOptional.get().getId());
}else {
throw new YeeException("编号: [" + riskSourceCode + "] 风险区域不存在!");
}
String code = warerRes.getCode();
WaterResource waterResource = waterResourceMap.get(code);
if (waterResource == null) {
......
......@@ -154,4 +154,16 @@ public class FireEquipPointServiceImpl implements IFireEquipPontService {
List<FireEquipmentEntity> equipments = fireEquipMapper.listByType(type);
return CommonResponseUtil.success(equipments);
}
@Override
public int countImpEquipment(String[] idArray) {
return fireEquipmentPointDao.countImpEquipment(idArray);
}
@Override
public String findBindRiskSourceStrByPointIds(String[] idArray) {
return fireEquipmentPointDao.findBindRiskSourceStrByPointIds(idArray);
}
}
......@@ -119,9 +119,9 @@ public class FireEquipServiceImpl implements IFireEquipService {
}
public Page queryForEquipmentList(String name, String code,String equipClassify,CommonPageable commonPageable) {
long total = fireEquipMapper.queryForEquipmentPageCount( name, code,equipClassify);
List<Map> content = this.fireEquipMapper.queryForEquipmentPage(name, code,equipClassify,commonPageable.getOffset(),commonPageable.getPageSize());
public Page queryForEquipmentList(String name, String code,String equipClassify,CommonPageable commonPageable,String bindStation) {
long total = fireEquipMapper.queryForEquipmentPageCount( name, code,equipClassify,bindStation);
List<Map> content = this.fireEquipMapper.queryForEquipmentPage(name, code,equipClassify,commonPageable.getOffset(),commonPageable.getPageSize(),bindStation);
Page result = new CommonPage(content, commonPageable, total);
return result;
}
......
......@@ -3,7 +3,6 @@ package com.yeejoin.amos.fas.business.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
......@@ -26,10 +25,9 @@ import com.yeejoin.amos.fas.business.service.intfc.IDataRefreshService;
import com.yeejoin.amos.fas.business.service.intfc.IEquipmentService;
import com.yeejoin.amos.fas.business.service.intfc.IRiskSourceService;
import com.yeejoin.amos.fas.business.service.model.*;
import com.yeejoin.amos.fas.business.util.DateUtils;
import com.yeejoin.amos.fas.business.util.JexlUtil;
import com.yeejoin.amos.fas.business.util.RpnUtils;
import com.yeejoin.amos.fas.business.util.*;
import com.yeejoin.amos.fas.business.vo.EquipCommunicationData;
import com.yeejoin.amos.fas.business.vo.Toke;
import com.yeejoin.amos.fas.client.invoke.RsDataQueue;
import com.yeejoin.amos.fas.common.enums.CheckStatusEnum;
import com.yeejoin.amos.fas.common.enums.DataRefreshTypeEum;
......@@ -41,8 +39,6 @@ import com.yeejoin.amos.fas.core.util.StringUtil;
import com.yeejoin.amos.fas.dao.entity.*;
import com.yeejoin.amos.fas.exception.YeeException;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -84,6 +80,10 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
private static final String DATETYPE_YYYY = "yyyy";//年
private static final String TOKE = "TOKE";
private static CacheMap cacheMap = CacheFactory.newChacheMap();
@Autowired
private IRiskSourceDao iRiskSourceDao;
......@@ -212,7 +212,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
int count = iRiskSourceDao.countByParentId(rId);
Optional<RiskSource> rs = iRiskSourceDao.findById(rId);
rs.ifPresent(riskSource -> parentIds.add(riskSource.getParentId()));
if(parentIds.contains(0l)){
if (parentIds.contains(0l)) {
throw new YeeException("公司节点不能删除");
}
if (count > 0) {
......@@ -364,9 +364,9 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
if (!CollectionUtils.isEmpty(returnList) && equipment != null) {
fmeaEquipmentPointMapper.saveBatch(returnList);
}
if(equipment != null){
if (equipment != null) {
RsDataQueue rsDataQueue = RsDataQueue.getInstance();
rsDataQueue.addEquipmentMessage(fmeaId,equipment.getName());
rsDataQueue.addEquipmentMessage(fmeaId, equipment.getName());
}
return returnList;
}
......@@ -496,7 +496,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
//Object result = remoteRuleServer.fireRuleFlow(contingencyRo, equipment.getReservePlan(), equipment.getName());
ruleTrigger.publish(contingencyRo, equipment.getReservePlan(),ArrayUtils.toArray( equipment.getName()));
ruleTrigger.publish(contingencyRo, equipment.getReservePlan(), ArrayUtils.toArray(equipment.getName()));
ContingencyOriginalData contingencyOriginalData = new ContingencyOriginalData();
BeanUtils.copyProperties(contingencyRo, contingencyOriginalData);
iContingencyOriginalDataDao.save(contingencyOriginalData);
......@@ -536,7 +536,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
@Override
public Page<Map<String, Object>> listFmeaPointInputitem(String toke,String product,String appKey,Long fmeaId, Integer pageNumber, Integer pageSize) {
public Page<Map<String, Object>> listFmeaPointInputitem(String toke, String product, String appKey, Long fmeaId, Integer pageNumber, Integer pageSize) {
List<Map<String, Object>> content = Lists.newArrayList();
CommonPageable pageable = new CommonPageable(pageNumber, pageSize);
long total = fmeaPointInputitemMapper.countByFmeaId(fmeaId);
......@@ -544,26 +544,26 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
return new PageImpl<>(content, pageable, total);
}
content = fmeaPointInputitemMapper.listByFmeaId(fmeaId, pageNumber, pageSize);
if(!CollectionUtils.isEmpty(content)){
if (!CollectionUtils.isEmpty(content)) {
Set<Object> userIds = content.stream().filter(x -> !StringUtils.isEmpty(x.get("userId"))).map(arg0 -> arg0.get("userId")).collect(Collectors.toSet());
Set<Object> deptIds = content.stream().filter(x -> !StringUtils.isEmpty(x.get("deptId"))).map(arg0 -> arg0.get("deptId")).collect(Collectors.toSet());
Map<String,AgencyUserModel> userMap = new HashMap<>();
if(!CollectionUtils.isEmpty(userIds)){
Map<String, AgencyUserModel> userMap = new HashMap<>();
if (!CollectionUtils.isEmpty(userIds)) {
userMap = remoteSecurityService.getUsersMap(toke, product, appKey, userIds);
}
Map<Long, String> deptMap = new HashMap<>();
if(!CollectionUtils.isEmpty(deptIds)){
if (!CollectionUtils.isEmpty(deptIds)) {
deptMap = remoteSecurityService.getDepName(toke, product, appKey, deptIds);
}
for(int i=0;i<content.size();i++){
if(StringUtil.isNotEmpty(content.get(i).get("userId")) && userMap.containsKey(content.get(i).get("userId"))){
for (int i = 0; i < content.size(); i++) {
if (StringUtil.isNotEmpty(content.get(i).get("userId")) && userMap.containsKey(content.get(i).get("userId"))) {
AgencyUserModel user = userMap.get(content.get(i).get("userId"));
content.get(i).put("userName", user.getRealName());
content.get(i).put("tel", user.getMobile());
}
if(StringUtil.isNotEmpty(content.get(i).get("deptId")) && deptMap.containsKey(Long.valueOf(content.get(i).get("deptId").toString()))){
if (StringUtil.isNotEmpty(content.get(i).get("deptId")) && deptMap.containsKey(Long.valueOf(content.get(i).get("deptId").toString()))) {
content.get(i).put("deptName", deptMap.get(Long.valueOf(content.get(i).get("deptId").toString())));
}
}
......@@ -622,17 +622,18 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
RsDataQueue rsDataQueue = RsDataQueue.getInstance();
fmeaIds.forEach(fmeaId ->
rsDataQueue.addPatrolMessage(fmeaId,protalData.getCheckUser(),protalData.getName(),protalData.getNodeState()));
rsDataQueue.addPatrolMessage(fmeaId, protalData.getCheckUser(), protalData.getName(), protalData.getNodeState()));
}
iDataRefreshService.refreshViewData(DataRefreshTypeEum.check.getCode());
}
/**
* 巡检消息规则推送
*
* @param protalData
*/
@Async
void protalRuleMessagePush(ProtalDataRo protalData, String token, String product, String appKey){
void protalRuleMessagePush(ProtalDataRo protalData, String token, String product, String appKey) {
String bacthNo = UUID.randomUUID().toString();
protalData.setBatchNo(bacthNo);
protalData.setOriginalNodeState(protalData.getNodeState());
......@@ -707,8 +708,14 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
if (alarmParam == null) {
log.warn("alarmParam is empty!");
} else {
Toke toke = cacheMap.getValue(TOKE);
if (toke == null) {
toke = remoteSecurityService.come();
Long times = (long) (20 * 24 * 60 * 60);
cacheMap.setex(TOKE, toke, times);
}
try {
processFireData(alarmParam);
processFireData(alarmParam,toke);
} catch (Exception e) {
log.error("parse alarmParam happened error", e);
// 失败处理
......@@ -720,7 +727,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
private void processFireData(AlarmParam deviceData) throws Exception {
private void processFireData(AlarmParam deviceData,Toke toke) throws Exception {
//处理设备和巡检数据
deviceData.setNodeState(deviceData.getState());
FireEquipmentPoint fireEquipmentPoint = iFireEquipmentPointDao.findOneByCode(deviceData.getPointCode());
......@@ -744,20 +751,21 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
equipment = impAndFireEquipMapper.queryImpEqumtByFireEquipmt(fireEquipmentPoint.getFireEquipmentId());
if (equipment != null && "alarm_type_fire".equals(fireEquipmentPointType)) {
//动态预案执行
dynamicPlan(deviceData, equipment, fireEquipment, fireEquipmentPointType);
dynamicPlan(deviceData, equipment, fireEquipment, fireEquipmentPointType,toke);
}
}
}
/**
* 预案执行
*
* @param deviceData
* @param equipment
* @param fireEquipment
* @param fireEquipmentPointType
*/
@Async
void dynamicPlan(AlarmParam deviceData, Equipment equipment, FireEquipment fireEquipment, String fireEquipmentPointType){
void dynamicPlan(AlarmParam deviceData, Equipment equipment, FireEquipment fireEquipment, String fireEquipmentPointType,Toke toke) {
String batchNo = null;
Object batch = null;
Dict dict = null;
......@@ -789,6 +797,8 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
Object canBeRunning = redisTemplate.opsForValue().get(cacheKeyForCanBeRunning());
if (canBeRunning == null) {
try {
RequestContext.setToken(toke.getToke());
RequestContext.setProduct(toke.getProduct());
alermContingency(batchNo, fireEquipment, equipment);
} catch (Exception e) {
log.error("调用规则失败", e);
......@@ -818,20 +828,20 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
private void saveFireEquipmentData(FireEquipmentPoint fireEquipmentPoint, FireEquipment fireEquipment, AlarmParam deviceData, String fireEquipmentPointType) {
if("alarm_type_fire".equals(fireEquipmentPointType) || "alarm_type_trouble".equals(fireEquipmentPointType)){
if ("alarm_type_fire".equals(fireEquipmentPointType) || "alarm_type_trouble".equals(fireEquipmentPointType)) {
Alarm alarm = iAlarmDao.findByStatusTrueAndFireEquipmentPointCode(deviceData.getPointCode());
if(alarm != null){
if (alarm != null) {
alarm.setFireEquipmentPointValue(deviceData.getState());
if("false".equals(deviceData.getState())){
if ("false".equals(deviceData.getState())) {
alarm.setRecoveryDate(new Date());
alarm.setStatus(false);
}else{
alarm.setFrequency((alarm.getFrequency()+1));
} else {
alarm.setFrequency((alarm.getFrequency() + 1));
alarm.setUpdateDate(new Date());
}
iAlarmDao.save(alarm);
}else{
if("true".equals(deviceData.getState())){
} else {
if ("true".equals(deviceData.getState())) {
alarm = new Alarm();
alarm.setFireEquipmentCode(fireEquipment.getCode());
alarm.setFireEquipmentId(fireEquipment.getId());
......@@ -845,17 +855,17 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
iAlarmDao.save(alarm);
}
}
if(alarm != null){
if (alarm != null) {
if ("alarm_type_trouble".equals(fireEquipmentPointType)) {
//通知刷新3d页面相关故障数据
notifyAlarm(fireEquipmentPoint, deviceData);
}else{
} else {
//通知刷新3d页面告警数据
iDataRefreshService.refreshViewData(DataRefreshTypeEum.alarm.getCode());
}
}
}else{
if("SWITCH".equals(fireEquipmentPoint.getType())){ //保存遥信信号数据到mysql中
} else {
if ("SWITCH".equals(fireEquipmentPoint.getType())) { //保存遥信信号数据到mysql中
FireEquipmentData fireEquipmentData = new FireEquipmentData();
fireEquipmentData.setEqPointCode(deviceData.getPointCode());
fireEquipmentData.seteValue(deviceData.getState());
......@@ -885,7 +895,6 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
@Override
public void saveData(List<AlarmParam> deviceDatas, String type) {
List<EquipCommunicationData> list = deviceDatas.stream().map(param -> {
......@@ -962,10 +971,10 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
if (ids.size() > 0) {
fmeaEquipmentPointMapper.updateStateByIds(state, ids);
}
final Integer st=state;
String monitor=fireEquipMapper.findById(fireEquipPointMapper.getByCode(param.getPointCode()).getFireEquipmentId()).getName();
final Integer st = state;
String monitor = fireEquipMapper.findById(fireEquipPointMapper.getByCode(param.getPointCode()).getFireEquipmentId()).getName();
RsDataQueue rsDataQueue = RsDataQueue.getInstance();
fmeaIds.forEach(fmeaId -> rsDataQueue.addEquipmentMessage(fmeaId,monitor,st));
fmeaIds.forEach(fmeaId -> rsDataQueue.addEquipmentMessage(fmeaId, monitor, st));
}
}
......@@ -1065,8 +1074,8 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
if (!ObjectUtils.isEmpty(map.get("area"))) {
area = Double.valueOf(map.get("area").toString());
}
String maxlevel = map.get("max_level") !=null?map.get("max_level").toString():"0.0";
String level = map.get("value") !=null&& StringUtil.isNumeric(map.get("value").toString())?String.format("%.2f", (Double.valueOf(map.get("value").toString()))):maxlevel;
String maxlevel = map.get("max_level") != null ? map.get("max_level").toString() : "0.0";
String level = map.get("value") != null && StringUtil.isNumeric(map.get("value").toString()) ? String.format("%.2f", (Double.valueOf(map.get("value").toString()))) : maxlevel;
String volume = String.format("%.2f", Double.valueOf(level) * area);
if (hashOperations.size("Analogue") > 0) {
......@@ -1076,8 +1085,8 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
continue;
}
EquipCommunicationData data = (EquipCommunicationData) hashOperations.get("Analogue", map.get("CODE"));
map.put("level", StringUtil.isNumeric(data.getState())?data.getState():level);
map.put("volume", String.format("%.2f", (Double.valueOf(map.get("level").toString())* area)));
map.put("level", StringUtil.isNumeric(data.getState()) ? data.getState() : level);
map.put("volume", String.format("%.2f", (Double.valueOf(map.get("level").toString()) * area)));
} else {
map.put("level", level);
map.put("volume", volume);
......@@ -1110,7 +1119,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
* 修改、添加导致rpn、rpni改变
*/
@Override
public void notifyFmeaFromUpdate(String toke, String product, String appKey, Long fmeaId, String nofityType,String userName) {
public void notifyFmeaFromUpdate(String toke, String product, String appKey, Long fmeaId, String nofityType, String userName) {
Fmea fmea = fmeaMapper.getById(fmeaId);
if (fmea == null) {
return;
......@@ -1126,11 +1135,11 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
//1.2未评价过,计算绑定的巡检点项 设备点位故障率
if (fmea.getNewEvaluationOid() == null) {
EvaluationModel evaluationModel = this.getEvaluationModel(fmeaId);
if(evaluationModel != null){//已经绑定点位或者巡检点项且匹配到风险模型,则更新为计算后的结果
if (evaluationModel != null) {//已经绑定点位或者巡检点项且匹配到风险模型,则更新为计算后的结果
BigDecimal newOidValue = new BigDecimal(evaluationModel.getCoefficient());
rpn = newOidValue.multiply(sidValue).multiply(didValue).setScale(2, BigDecimal.ROUND_HALF_UP);
fmea.setNewEvaluationOid(evaluationModel.getId());
}else {//未绑定点位或者巡检点项或者匹配不到风险模型,则更新为rpn与rpni一致
} else {//未绑定点位或者巡检点项或者匹配不到风险模型,则更新为rpn与rpni一致
fmea.setNewEvaluationOid(fmea.getEvaluationOid());
rpn = rpni;
}
......@@ -1162,11 +1171,11 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
}
private JpushMsgBo getJushMessageInfo(MsgParamBo msgParam){
private JpushMsgBo getJushMessageInfo(MsgParamBo msgParam) {
JpushMsgBo msgBo = new JpushMsgBo();
Optional<RiskFactor> optional = iRiskFactorDao.findById(msgParam.getFmea().getRiskFactorsId());
if(optional.isPresent()){
JpushMsgContentBo jpushMsgContentBo = new JpushMsgContentBo(optional.get().getName(),msgParam.getNotifyType());
if (optional.isPresent()) {
JpushMsgContentBo jpushMsgContentBo = new JpushMsgContentBo(optional.get().getName(), msgParam.getNotifyType());
jpushMsgContentBo.setExecute(msgParam.getUserName());
jpushMsgContentBo.setLevelIsChange(msgParam.getLevelIsChange());
jpushMsgContentBo.setLevel(msgParam.getLevel());
......@@ -1219,7 +1228,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
@Override
public void notifyFmeaFromAbnormal(
String toke, String product, String appKey,
Long fmeaId, String notifyType,String userName, String relationName, String checkStatus) {
Long fmeaId, String notifyType, String userName, String relationName, String checkStatus) {
Fmea fmea = fmeaMapper.getById(fmeaId);
if (fmea == null) {
return;
......@@ -1269,7 +1278,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
}
private void saveRpnLog(Long riskSourceId, Long fmeaId, BigDecimal rpn, BigDecimal rpni,String notifyType) {
private void saveRpnLog(Long riskSourceId, Long fmeaId, BigDecimal rpn, BigDecimal rpni, String notifyType) {
RpnChangeLog rpnChangeLog = new RpnChangeLog();
rpnChangeLog.setRiskSourceId(riskSourceId);
rpnChangeLog.setRpn(rpn);
......@@ -1325,14 +1334,14 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
if (rpnValueBo.isEmpty()) {
return;
}
Fmea caluFmea=fmeaMapper.getById(fmeaId);
Fmea caluFmea = fmeaMapper.getById(fmeaId);
Integer rpnDiffer = 0;
if(caluFmea != null) {
rpnDiffer = caluFmea.getRpn().intValue()-caluFmea.getRpni().intValue();
if (caluFmea != null) {
rpnDiffer = caluFmea.getRpn().intValue() - caluFmea.getRpni().intValue();
}
String checkStatus = "";
if(jpushMsgBo != null) {
checkStatus=jpushMsgBo.getMsg().getCheckStatus();
if (jpushMsgBo != null) {
checkStatus = jpushMsgBo.getMsg().getCheckStatus();
}
BigDecimal rpn = rpnValueBo.getRpn();
BigDecimal rpni = rpnValueBo.getRpni();
......@@ -1343,8 +1352,8 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
riskSource.setRpn(rpn);
riskSource.setRpni(rpni);
riskSource.setRiskLevelId(newRiskLevel.getId());
String changeType = RpnUtils.calChangeTypeByLevel(oldRiskLevel.getLevel(),newRiskLevel.getLevel());
riskSource.setFlickerFrequency(RpnUtils.calRiskPointFrequency(rpn,rpni,changeType));
String changeType = RpnUtils.calChangeTypeByLevel(oldRiskLevel.getLevel(), newRiskLevel.getLevel());
riskSource.setFlickerFrequency(RpnUtils.calRiskPointFrequency(rpn, rpni, changeType));
//1.更新fmea对应风险点rpn、rpni、level
riskSourceMapper.updateRpn(riskSource);
//2.记录风险点rpn变化流水
......@@ -1353,12 +1362,12 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
//3.更新父节点rpn、rpni、风险等级
this.updateParentRpn(riskSource.getParentId());
//4.极光推送给手机客户端
if("recovery".equals(notifyType) || "fmeaUpdate".equals(notifyType) || ("alarm".equals(notifyType)&&rpnDiffer>0)||("patrol".equals(notifyType) && rpnDiffer>0 && CheckStatusEnum.UNQUALIFIED.getName().equals(checkStatus))){
if ("recovery".equals(notifyType) || "fmeaUpdate".equals(notifyType) || ("alarm".equals(notifyType) && rpnDiffer > 0) || ("patrol".equals(notifyType) && rpnDiffer > 0 && CheckStatusEnum.UNQUALIFIED.getName().equals(checkStatus))) {
jpushRiskSourceMessage(jpushMsgBo);
}
//5.规则告警(消息)
if("recovery".equals(notifyType) || "fmeaUpdate".equals(notifyType) || ("alarm".equals(notifyType)&&rpnDiffer>0) ||(notifyType=="patrol" && rpnDiffer>0 && CheckStatusEnum.UNQUALIFIED.getName().equals(checkStatus))){
notifyRule(riskSourceId, rpn, rpni, notifyType,changeType, jpushMsgBo.getMsg());
if ("recovery".equals(notifyType) || "fmeaUpdate".equals(notifyType) || ("alarm".equals(notifyType) && rpnDiffer > 0) || (notifyType == "patrol" && rpnDiffer > 0 && CheckStatusEnum.UNQUALIFIED.getName().equals(checkStatus))) {
notifyRule(riskSourceId, rpn, rpni, notifyType, changeType, jpushMsgBo.getMsg());
}
//6.通知全景监控屏幕数据刷新
iDataRefreshService.refreshViewData(DataRefreshTypeEum.rpn.getCode());
......@@ -1446,6 +1455,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
JpushMsgContentBo jpushMsgContentBo = jpushMsgBo.getMsg();
Set<String> target = jpushMsgBo.getTarget();
target.remove(null);
if(jpushMsgContentBo.getSend()){
PushMsgParam pushMsgParam = new PushMsgParam();
pushMsgParam.setRecivers(Lists.newArrayList(target));
......@@ -1528,11 +1538,11 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
riskSourceMapper.batchSaveRegionUe4(regionBoList);
}
private EvaluationModel getEvaluationModel(Long fmeaId){
private EvaluationModel getEvaluationModel(Long fmeaId) {
List<FmeaEquipmentPoint> equipmentPoints = fmeaEquipmentPointMapper.listFmeaByFmeaId(fmeaId);
List<FmeaPointInputitem> pointInputitems = fmeaPointInputitemMapper.listFmeaByFmeaId(fmeaId);
Double maxRate = RpnUtils.getMaxRate(equipmentPoints, pointInputitems);
if(maxRate != null){
if (maxRate != null) {
List<EvaluationModel> oModels = iEvaluationModelDao.findAllByType("O");
EvaluationModel oEvaluationModel = getBetweenModel(maxRate, oModels);
return oEvaluationModel;
......
......@@ -103,4 +103,6 @@ public interface IEquipmentService {
EquipCommunicationData findFireEquipDataByPointCode(String code);
int countImpEquipByIds(String[] idArray);
}
......@@ -59,4 +59,10 @@ public interface IFireEquipPontService {
CommonResponse batchDelete(List<Long> ids);
CommonResponse listByType(Integer type);
int countImpEquipment(String[] idArray);
String findBindRiskSourceStrByPointIds(String[] idArray);
}
......@@ -35,7 +35,7 @@ public interface IFireEquipService {
String endTime,
CommonPageable commonPageable);
Page queryForEquipmentList(String name, String code,String equipClassify,CommonPageable commonPageable);
Page queryForEquipmentList(String name, String code,String equipClassify,CommonPageable commonPageable,String bindStation);
//查询设备明细
Object queryForDetail(String type, Long id) throws Exception;
......
......@@ -15,7 +15,7 @@ eureka.client.healthcheck.enabled = true
eureka.client.fetchRegistry = true
eureka.instance.prefer-ip-address=true
#DB properties:
spring.datasource.url=jdbc:mysql://172.16.11.33:3306/safety-business-2.0?allowMultiQueries=true&serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.url=jdbc:mysql://172.16.11.33:3306/safety-business-2.0-36?allowMultiQueries=true&serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=admin_1234
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
......@@ -33,7 +33,7 @@ spring.data.mongodb.uri = mongodb://172.16.11.33:27017/iecmonitor
params.remoteRuleUrl=http://magintursh.xicp.net:18080/
params.remoteWebsocketUrl=http://172.16.10.91:10600/
spring.redis.database=1
spring.redis.database=5
spring.redis.host=172.16.11.33
spring.redis.port=6379
spring.redis.password=1234560
......@@ -44,7 +44,7 @@ spring.redis.jedis.pool.min-idle=0
spring.redis.timeout=1000
#picture upload
file.uploadUrl=E:\\upload\\files\\
file.uploadUrl=F:\\upload\\files\\
#picture read
file.readUrl=http://172.16.3.89:8083/file/getFile?in=
params.isPush=true
......@@ -57,6 +57,7 @@ emqx.user-name=super
emqx.password=a123456
Push.fegin.name=APPMESSAGEPUSHSERVICE-36
dutyMode.fegin.name=AMOSDUTYMODE
DutyMode.dutyUrl=http://172.16.11.36:10005/
......
spring.application.name = AMOS-AUTOSYS-my
spring.application.name = Amos-autosys
server.port = 8083
......@@ -33,24 +34,22 @@ mybatis.type-aliases-package = com.yeejoin.amos.fas.business.entity.mybatis
mybatis.configuration.mapUnderscoreToCamelCase=true
logging.level.com.yeejoin.amos.fas.business.dao.mapper=debug
spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=20MB
#liquibase
spring.liquibase.change-log = classpath:/db/changelog/changelog-master.xml
spring.liquibase.enabled= true
param.system.online.date = 2020-02-12
param.system.online.date = 2019-02-12
spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=20MB
#feginName
visual.fegin.name=maas-visual
dutyMode.fegin.name=AMOSDUTYMODE
spring.http.multipart.maxFileSize = 10480000
spring.http.multipart.MaxRequestSize = 50480000
windows.img.path = E:\\
windows.img.path = F:\\
linux.img.path = /
param.safetyIndexChange.cron = 0 0 2 * * ?
#获取天气地址
param.weather.url = http://t.weather.sojson.com/api/weather/city/
......@@ -241,9 +241,18 @@
<if test="name!=null">
and (fe.`name` like '%${name}%' or fe.`code` like '%${name}%')
</if>
<!-- 筛选未绑定的配套设施
-->
<if test="bindStation != null and bindStation == 'false'">
AND (select true from
f_fire_station_equipment fse
left join f_fire_equipment e on fse.fire_equipment_id = e.id
where fse.fire_equipment_id = fe.id AND e.equip_classify != 1 limit 0,1) is not true
</if>
</select>
<select id="queryForEquipmentPage" resultType="map">
select * from (
select
fe.*, (
SELECT
......@@ -253,19 +262,29 @@
WHERE
efe.fire_equipment_id = fe.id limit 0,1
) isBind,
frs.name riskSourceName
frs.name riskSourceName,
(select true from
f_fire_station_equipment fse
left join f_fire_equipment e on fse.fire_equipment_id = e.id
where fse.fire_equipment_id = fe.id AND e.equip_classify != 1 limit 0,1) as bindStation
from f_fire_equipment fe
left join f_risk_source frs on frs.id = fe.risk_source_id
where 1=1) tmp
<where>
<if test="equipClassify!=null">
and fe.equip_classify in ( ${equipClassify} )
and tmp.equip_classify in ( ${equipClassify} )
</if>
<if test="code!=null">
and fe.`code` like '%${code}%'
and tmp.`code` like '%${code}%'
</if>
<if test="name!=null">
and (fe.`name` like '%${name}%' or fe.`code` like '%${name}%')
and (tmp.`name` like '%${name}%' or tmp.`code` like '%${name}%')
</if>
<!-- 筛选未绑定的配套设施
-->
<if test="bindStation != null and bindStation == 'false'">
AND tmp.bindStation is not true
</if>
</where>
LIMIT ${start},${length}
......@@ -385,6 +404,7 @@
is_indoor,
name,
maintenance_cycle,
manufacturer,
number,
unit,
room,
......@@ -404,6 +424,7 @@
#{item.isIndoor},
#{item.name},
#{item.maintenanceCycle},
#{item.manufacturer},
#{item.number},
#{item.unit},
#{item.room},
......@@ -445,6 +466,9 @@
<if test="item.maintenanceCycle != null">
maintenance_cycle = #{item.maintenanceCycle},
</if>
<if test="item.manufacturer != null">
manufacturer = #{item.manufacturer},
</if>
<if test="item.number != null">
number = #{item.number},
</if>
......
......@@ -1338,7 +1338,7 @@ from (select concat('riskSource',r.id) as id,r.name,r.code,r.ue4_location as ue4
)
END positionDTO,
m.name as label,
f.name as protectObjName,
group_concat(f.name) as protectObjName,
'' as routeName,
'' as person,
m.name as title,
......@@ -1347,6 +1347,7 @@ from (select concat('riskSource',r.id) as id,r.name,r.code,r.ue4_location as ue4
left join f_equipment_fire_equipment fe on fe.fire_equipment_id = m.id
left join f_equipment f on f.id = fe.equipment_id
where equip_classify = 0
group By m.code
<if test="protectObjName != null and protectObjName != ''">
AND f.name = #{protectObjName}
</if>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment