package com.vci.web.service.impl; import cn.hutool.core.io.FileUtil; import com.vci.constant.FrameWorkLangCodeConstant; import com.vci.corba.common.PLException; import com.vci.corba.common.data.UserEntityInfo; import com.vci.corba.framework.data.PvolumeInfo; import com.vci.corba.portal.data.Constraint; import com.vci.corba.portal.data.PLAction; import com.vci.corba.portal.data.PLActionCls; import com.vci.corba.portal.data.PLActionParam; import com.vci.dto.*; import com.vci.starter.poi.bo.WriteExcelData; import com.vci.starter.poi.bo.WriteExcelOption; import com.vci.starter.poi.util.ExcelUtil; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.BaseResult; import com.vci.starter.web.util.ControllerUtil; import com.vci.starter.web.util.LangBaseUtil; import com.vci.starter.web.util.LocalFileUtil; import com.vci.web.enumpck.ActionEnum; import com.vci.web.enumpck.PlTypetypeEnum; import com.vci.web.other.ExportActionLogBean; import com.vci.web.other.ExportBeans; import com.vci.web.service.OsActionServiceI; import com.vci.web.service.OsPvolumesServiceI; import com.vci.web.util.Func; import com.vci.web.util.PinyinCommon; import com.vci.web.util.PlatformClientUtil; import com.vci.web.util.WebUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.*; import java.util.stream.Collectors; /** * 文件柜管理的服务实现类 * @author yuxc * @date 2024-10-14 */ @Service public class OsPvolumesServiceImpl implements OsPvolumesServiceI { @Autowired private PlatformClientUtil platformClientUtil; /** * 分页查询卷 * @param pageSize 页数 * @param pageIndex 第几页 * @return 分页数据 */ @Override public BaseResult getPvolumesPage(short pageSize, short pageIndex) throws PLException { PvolumeInfo[] pvolumesPage = platformClientUtil.getFrameworkService().getPvolumesPage(pageSize, pageIndex); List pvs = new ArrayList<>(); for (PvolumeInfo pvolumeInfo : pvolumesPage) { OsPvolumeDTO osPvolumeDTO = new OsPvolumeDTO(); osPvolumeDTO = tranferCorbaObjToPvolume(pvolumeInfo); pvs.add(osPvolumeDTO); } return BaseResult.dataList(pvs); } @Override public BaseResult savePvolume(OsPvolumeDTO dto) throws PLException { PvolumeInfo pvoInfo = new PvolumeInfo(); pvoInfo.service = dto.getService(); pvoInfo.id = dto.getId(); pvoInfo.name = dto.getName(); pvoInfo.host = dto.getHost(); pvoInfo.isvalid = dto.isIsvalid(); pvoInfo.path = dto.getPath(); //卷服务类型,机器类型 pvoInfo.type = dto.getType(); UserEntityInfo userInfo = new UserEntityInfo(); userInfo.setUserName(WebUtil.getCurrentUserId()); userInfo.setModules("com.vci.client.framework.systemConfig.volumn.PvolumePanel"); if(pvoInfo.isvalid){ PvolumeInfo[] allPvolumes = platformClientUtil.getFrameworkService().getAllPvolumes(); if(allPvolumes.length > 0){ // 将其他卷设置为非首选卷 0 platformClientUtil.getFrameworkService().updatePvolumeInvalid(userInfo); } } String id= platformClientUtil.getFrameworkService().savePvolume(pvoInfo, userInfo); if(StringUtils.isBlank(id)){ return BaseResult.fail("保存失败!"); } return BaseResult.success("保存成功!"); } @Override public BaseResult updatePvolume(OsPvolumeDTO dto) throws PLException { PvolumeInfo pvoInfo = new PvolumeInfo(); pvoInfo.service = StringUtils.isBlank(dto.getService()) ? "" : dto.getService(); pvoInfo.id = StringUtils.isBlank(dto.getId()) ? "" : dto.getId(); pvoInfo.name = StringUtils.isBlank(dto.getName()) ? "" : dto.getName(); pvoInfo.host = StringUtils.isBlank(dto.getHost()) ? "" : dto.getHost(); pvoInfo.isvalid = dto.isIsvalid(); pvoInfo.path = StringUtils.isBlank(dto.getPath()) ? "" : dto.getPath(); //卷服务类型,机器类型 pvoInfo.type = dto.getType(); if(StringUtils.isBlank(pvoInfo.service) || StringUtils.isBlank(pvoInfo.name) || StringUtils.isBlank(pvoInfo.path)){ throw new PLException("500", new String[]{"字段服务名、卷名称、卷服务路径不能为空!"}); } PvolumeInfo[] allPvo = platformClientUtil.getFrameworkService().getAllPvolumes(); Map pvInfoMap = Arrays.stream(allPvo).collect(Collectors.toMap(e -> e.id, e -> e)); //如果是要进行修改,名称不变的情况下可以成功修改,这种情况下不是名称重复。 if(pvInfoMap.get(pvoInfo.id) == null){ throw new PLException("500", new String[]{"未查询到相关数据请重新操作!"}); } if ( allPvo.length == 1 && !pvoInfo.isvalid){ throw new PLException("500", new String[]{"仅一条数据需设置为首选路径"}); } UserEntityInfo userInfo = new UserEntityInfo(); userInfo.setUserName(WebUtil.getCurrentUserId()); userInfo.setModules("com.vci.client.framework.systemConfig.volumn.PvolumePanel"); if(pvoInfo.isvalid && allPvo.length > 0){ // 将其他卷设置为非首选卷 0 platformClientUtil.getFrameworkService().updatePvolumeInvalid(userInfo); } boolean b = platformClientUtil.getFrameworkService().updatePvolume(pvoInfo, userInfo); if(!b){ return BaseResult.fail("修改失败!"); } return BaseResult.success("修改成功!"); } /** * 卷 从Corba端转到Hibernate对象端 * @param pvoInfo * @return */ private OsPvolumeDTO tranferCorbaObjToPvolume(PvolumeInfo pvoInfo) { OsPvolumeDTO obj = new OsPvolumeDTO(); obj.setId(pvoInfo.id); obj.setName(pvoInfo.name); obj.setHost(pvoInfo.host); obj.setService(pvoInfo.service); obj.setType(pvoInfo.type); obj.setPath(pvoInfo.path); obj.setIsvalid(pvoInfo.isvalid); return obj; } }