package com.vci.web.service.impl; import com.vci.corba.common.PLException; import com.vci.corba.omd.stm.StatePool; import com.vci.pagemodel.OsStatusVO; import com.vci.starter.web.annotation.log.VciUnLog; import com.vci.starter.web.util.VciDateUtil; import com.vci.web.service.WebStatusServiceI; import com.vci.web.util.PlatformClientUtil; import com.vci.web.util.WebUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; /** * @Description 状态池服务 * @Author dangsn * @Date 2024/11/28 10:52 */ @Service public class WebStatusServiceImpl implements WebStatusServiceI { /** * 日志 */ private Logger logger = LoggerFactory.getLogger(getClass()); /** * 平台客户端 */ @Resource private PlatformClientUtil platformClientUtil; /** * 查询所有的状态 * * @return 状态的显示对象 */ @Override @VciUnLog public List selectAllStatus() { try { return statusDO2VOs(Arrays.stream(platformClientUtil.getStatePoolService().getStatePools()).collect(Collectors.toList())); } catch (PLException vciError) { throw WebUtil.getVciBaseException(vciError); } } /** * 查询全部的状态映射 * @return key是状态的英文名称 */ @Override @VciUnLog public Map selectAllStatusMap(){ return Optional.ofNullable(selectAllStatus()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getId(), t->t,(o1, o2)->o1)); } /** * 数据对象转换为显示对象 * * @param statePool 状态池的数据对象 * @return 显示对象 */ @Override public OsStatusVO statusDO2VO(StatePool statePool) { OsStatusVO statusVO = new OsStatusVO(); if(statePool!=null){ statusVO.setOid(statePool.oid); statusVO.setCreator(statePool.creator); statusVO.setImagePath(statePool.imagePath); statusVO.setLastModifier(statePool.modifier); try { statusVO.setCreateTime(new Date(statePool.createTime)); statusVO.setLastModifyTime(new Date(statePool.modifyTime)); statusVO.setTs(VciDateUtil.str2Date(statePool.ts,VciDateUtil.DateTimeMillFormat)); } catch (Exception e) { e.printStackTrace(); } statusVO.setDescription(statePool.description); statusVO.setId(statePool.name); statusVO.setName(statePool.tag); } return statusVO; } /** * 数据对象转换为显示对象 * * @param statePools 状态池的数据对象 集合 * @return 显示对象 */ @Override public List statusDO2VOs(Collection statePools) { List statusVOS = new ArrayList<>(); if(!CollectionUtils.isEmpty(statePools)){ statePools.stream().forEach(statePool -> { OsStatusVO statusVO = statusDO2VO(statePool); statusVOS.add(statusVO); }); } return statusVOS; } }