package com.zteits.park.dao.impl; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; import com.zteits.clouds.api.dto.park.dto.*; import com.zteits.clouds.api.dto.pda.param.QueryEqpByPlNoAndOrtherRequest; import com.zteits.park.constant.ParkConstant; import com.zteits.park.service.telecomiot.deviceManagement.DeleteDirectlyConnectedDevice; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.xiaoleilu.hutool.util.CollectionUtil; import com.zteits.clouds.api.apibase.constants.DataStatusEnum; import com.zteits.clouds.api.apibase.constants.ErrorType; import com.zteits.clouds.api.apibase.exception.BizException; import com.zteits.clouds.api.dto.park.param.QueryEqpRequest; import com.zteits.park.constant.EqpConstant; import com.zteits.park.dao.EqpDao; import com.zteits.park.domain.TpPEqp; import com.zteits.park.domain.TpPEqpExample; import com.zteits.park.domain.TpPEqpExample.Criteria; import com.zteits.park.mapper.TpPEqpMapper; import com.zteits.park.mapper.smapper.TpPEqpSMapper; import org.springframework.transaction.annotation.Transactional; @Component public class EqpDaoImpl implements EqpDao { @Autowired private TpPEqpMapper tpPEqpMapper; @Autowired private TpPEqpSMapper tpPEqpSMapper; @Override public List selectEqpByEqpNo(String eqpNo) { if(StringUtils.isBlank(eqpNo)){ return null; } TpPEqpExample example = new TpPEqpExample(); example.createCriteria().andEqpNoEqualTo(eqpNo) .andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); return tpPEqpMapper.selectByExample(example ); } @Override public List selectEqpByEqpNo(Long orgId, String eqpNo) { if(StringUtils.isBlank(eqpNo)){ return null; } if(null == orgId){ return null; } TpPEqpExample example = new TpPEqpExample(); example.createCriteria().andEqpNoEqualTo(eqpNo) .andOrgIdEqualTo(orgId) .andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); return tpPEqpMapper.selectByExample(example ); } @Override public TpPEqp selectEqpByBerthNo(String berthNo, String plNo,int eqpType,Integer usedType) { TpPEqpExample example = new TpPEqpExample(); Criteria sql = example.createCriteria(); sql.andBerthNoEqualTo(berthNo) .andPlNoEqualTo(plNo) .andEqpTypeEqualTo(eqpType) .andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); if(usedType!=null){ sql.andUsedTypeEqualTo(usedType); } List tpPEqps = tpPEqpMapper.selectByExample(example ); if(CollectionUtils.isEmpty(tpPEqps)){ return null; } return tpPEqps.get(0); } @Override public TpPEqp selectEqpByEqpNoAndFactory(String eqpNo, String factoryNo) { TpPEqpExample example = new TpPEqpExample(); example.createCriteria().andEqpNoEqualTo(eqpNo) .andFactoryNoEqualTo(factoryNo) .andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); List tpPEqps = tpPEqpMapper.selectByExample(example ); if(CollectionUtils.isEmpty(tpPEqps)){ return null; } if(tpPEqps.size()>1){ throw new BizException(ErrorType.BIZ_ERROR,"根据厂家编号["+factoryNo+"]和设备编号["+eqpNo+"]查询到多条设备信息"); } return tpPEqps.get(0); } @Override public int updateEqpStatusById(String eqpIsOnline, String electricity, String voltag, Date inoutTime, Long id,String gatewayNo,Integer magRssi) { TpPEqp record = new TpPEqp(); record.setElectricity(electricity); record.setEqpIsOnline(eqpIsOnline); record.setVoltag(voltag); record.setHeartbeatTime(inoutTime==null?new Date():inoutTime); record.setInOutTime(inoutTime); record.setId(id); record.setGatewayNo(gatewayNo); record.setRssi(magRssi); record.setModifyTime(new Date()); return tpPEqpMapper.updateByPrimaryKeySelective(record ); } @Override public int updateEqpStatusByEqpNo(String eqpIsOnline, Date heartbeatTime, List eqpNo,Integer eqpType) { TpPEqpExample example = new TpPEqpExample(); Criteria sql = example.createCriteria(); sql.andEqpNoIn(eqpNo); sql.andEqpTypeEqualTo(eqpType); sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); TpPEqp record = new TpPEqp(); record.setEqpIsOnline(eqpIsOnline); record.setHeartbeatTime(heartbeatTime==null?new Date():heartbeatTime); record.setModifyTime(new Date()); return tpPEqpMapper.updateByExampleSelective(record, example); } @Override public Integer batchUpdateEqpStateForFault(String plNo,Integer eqpType) { if(StringUtils.isBlank(plNo)){ return 0; } TpPEqpExample example = new TpPEqpExample(); example.createCriteria().andPlNoEqualTo(plNo) .andEqpTypeEqualTo(eqpType) .andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); TpPEqp record = new TpPEqp(); record.setEqpIsOnline(EqpConstant.IS_ONLINE.OFF_LINE); record.setModifyTime(new Date()); return tpPEqpMapper.updateByExampleSelective(record, example); } @Override public int updateEqpStatusByBerthsNo(String eqpIsOnline, List berthNos, String plNo, Integer eqpType) { TpPEqpExample example = new TpPEqpExample(); Criteria sql = example.createCriteria(); sql.andBerthNoIn(berthNos) .andPlNoEqualTo(plNo) .andEqpTypeEqualTo(eqpType); sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); TpPEqp record = new TpPEqp(); record.setEqpIsOnline(eqpIsOnline); record.setHeartbeatTime(new Date()); record.setModifyTime(new Date()); return tpPEqpMapper.updateByExampleSelective(record, example); } @Override public Map> queryEqpTypeByPlNos(List plNos) { Map> listMap = new HashMap<>(); if (CollectionUtil.isEmpty(plNos)) { return listMap; } List> mapResult = tpPEqpSMapper.queryEqpTypeByPlNos(plNos); for (Map tempMap : mapResult) { String plNo = (String)tempMap.get("key"); List eqpTypesIds = new ArrayList<>(); String[] temps = ((String)tempMap.get("value")).split(","); for (String temp : temps) { eqpTypesIds.add(Integer.valueOf(temp)); } listMap.put(plNo, eqpTypesIds); } return listMap; } @Override public PageInfo queryEqpsForPage(QueryEqpRequest request) { //设置分页信息 PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize()); // TpPEqpExample example = new TpPEqpExample(); // Criteria sql = example.createCriteria(); // Criteria sql2 = example.createCriteria(); // if(CollectionUtil.isNotEmpty(request.getPlNos())){ // sql.andPlNoIn(request.getPlNos()); // sql2.andPlNoIn(request.getPlNos()); // } // // if(!StringUtils.isBlank(request.getBerthNo())){ // sql.andBerthNoLike('%'+request.getBerthNo()+'%'); // sql2.andBerthNoLike('%'+request.getBerthNo()+'%'); // } // if(!StringUtils.isBlank(request.getEqpIsOnline())){ // sql.andEqpIsOnlineEqualTo(request.getEqpIsOnline()); // sql2.andEqpIsOnlineEqualTo(request.getEqpIsOnline()); // } // if(!StringUtils.isBlank(request.getEqpNo())){ // sql.andEqpNoLike('%'+request.getEqpNo()+'%'); // sql2.andEqpNoLike('%'+request.getEqpNo()+'%'); // } // if(CollectionUtils.isNotEmpty(request.getFactoryNos())){ // sql.andFactoryNoIn(request.getFactoryNos()); // sql2.andFactoryNoIn(request.getFactoryNos()); // } // if(null != request.getOrgId()){ // sql.andOrgIdEqualTo(request.getOrgId()); // sql2.andOrgIdEqualTo(request.getOrgId()); // } // if(null != request.getHeartbeatTime()){ // sql.andHeartbeatTimeLessThanOrEqualTo(request.getHeartbeatTime()); // sql2.andHeartbeatTimeLessThanOrEqualTo(request.getHeartbeatTime()); // } // if(null != request.getInOutTime()){ // sql.andInOutTimeLessThanOrEqualTo(request.getInOutTime()); // sql2.andInOutTimeLessThanOrEqualTo(request.getInOutTime()); // } // // sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); // sql2.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); // if(request.getUsedType()!=null){ // if(request.getUsedType() == 20){ // sql.andUsedTypeEqualTo(request.getUsedType()); // } // if(request.getUsedType() == 10){ // sql.andUsedTypeIsNull(); // sql2.andUsedTypeNotEqualTo(20); // example.or(sql2); // } // } // example.setOrderByClause("create_time DESC"); // List tpPEqps = tpPEqpMapper.selectByExample(example ); List tpPEqps = tpPEqpSMapper.queryEqpsForPage(request); return (tpPEqps != null && tpPEqps.size() >0) ? new PageInfo(tpPEqps) : new PageInfo(new ArrayList()); } @Override public void insertEqpInfo(TpPEqp tpPEqp) { tpPEqpMapper.insertSelective(tpPEqp); } @Override public void deleteEqpsByIds(List ids,Long opId) { if(CollectionUtils.isEmpty(ids)){ return; } TpPEqpExample example = new TpPEqpExample(); example.createCriteria().andIdIn(ids); TpPEqp record = new TpPEqp(); record.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value()); record.setModifyOp(opId); record.setModifyTime(new Date()); record.setOptFlg(ParkConstant.OptFlag.DELETE); tpPEqpMapper.updateByExampleSelective(record , example ); } @Override @Transactional public void deleteEqpById(TpPEqpDTO eqpDTO, Long opId,String appId,String secret,String baseUrl) { //判断是否为电信IOT if(eqpDTO.getJoinMethod()==null || eqpDTO.getJoinMethod()== ParkConstant.JoinMethod.DEVICE_JOIN){ }else if(eqpDTO.getJoinMethod()==ParkConstant.JoinMethod.TELECOM_IOT){ //调用电信删除接口 DeleteDirectlyConnectedDevice.execute(eqpDTO.getDeviceId(),appId,secret,baseUrl); } TpPEqpExample example = new TpPEqpExample(); example.createCriteria().andIdEqualTo(eqpDTO.getId()); TpPEqp record = new TpPEqp(); record.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value()); record.setModifyOp(opId); record.setModifyTime(new Date()); tpPEqpMapper.updateByExampleSelective(record , example ); } @Override public void updateEqpInfoById(TpPEqp tpPEqp) { tpPEqpMapper.updateByPrimaryKeySelective(tpPEqp); } @Override public Map statisticEqpCountGroupByEqpType(QueryEqpRequest request) { List byEqpTypeDTOs = tpPEqpSMapper.statisticEqpCountGroupByEqpType(request); if(CollectionUtil.isEmpty(byEqpTypeDTOs)){ return null; } return byEqpTypeDTOs.stream().collect(Collectors.toMap(StatisticEqpCountByEqpTypeDTO::getEqpType, Function.identity())); } @Override public Map> statisticEqpCountGroupByPlNo(QueryEqpRequest request) { List byplNoDTOs = tpPEqpSMapper.statisticEqpCountGroupByPlNo(request); if(CollectionUtil.isEmpty(byplNoDTOs)){ return null; } return byplNoDTOs.stream().collect(Collectors.groupingBy(StatisticEqpCountByPlNoDTO::getPlNo)); } @Override public Map> statisticEqpCountGroupByCountry(QueryEqpRequest request) { List byplNoDTOs = tpPEqpSMapper.statisticEqpCountGroupByCountry(request); if(CollectionUtil.isEmpty(byplNoDTOs)){ return null; } return byplNoDTOs.stream().collect(Collectors.groupingBy(StatisticEqpCountByCountryDTO::getPlCountryId)); } /** * 批量插入地磁信息.
* @param tpPEqp * @return */ @Override public int batchInsertEqp(List tpPEqp) { int bactInsetCount = tpPEqpSMapper.batchInsertEqp(tpPEqp); return bactInsetCount; } @Override public int bindEqpHostByIds(List ids,String hostNo,Long opId) { if(CollectionUtils.isEmpty(ids)){ return 0; } TpPEqpExample example = new TpPEqpExample(); example.createCriteria().andIdIn(ids); TpPEqp record = new TpPEqp(); record.setModifyOp(opId); record.setModifyTime(new Date()); record.setGatewayNo(hostNo); return tpPEqpMapper.updateByExampleSelective(record , example ); } @Override public int updateEqpById(TpPEqp tpPEqp) { return tpPEqpMapper.updateByPrimaryKeySelective(tpPEqp); } @Override public Long queryEqpCountByPlNo(String plNo, Integer eqpType,Integer userType,String isOnline) { TpPEqpExample example = new TpPEqpExample(); example.createCriteria().andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()) .andEqpIsOnlineEqualTo(isOnline).andPlNoEqualTo(plNo) .andEqpTypeEqualTo(eqpType).andUsedTypeEqualTo(userType); return tpPEqpMapper.countByExample(example); } @Override public List queryEqpInfoByPlNoAndOther(QueryEqpByPlNoAndOrtherRequest request) { return tpPEqpSMapper.queryEqpInfoByPlNoAndOther(request); } }