From 6c391d600182930913b43e2f63b7d3cfa131cfc2 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期三, 14 八月 2024 16:27:58 +0800 Subject: [PATCH] 业务类型创建索引、导出、导入等接口,属性池导入接口调整上传。 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java | 317 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 275 insertions(+), 42 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java index b2d484d..302d878 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java @@ -7,18 +7,26 @@ import com.vci.client.mw.ClientSessionUtility; import com.vci.corba.common.PLException; import com.vci.corba.omd.atm.AttributeDef; +import com.vci.corba.omd.vrm.VersionRule; import com.vci.dto.OsAttributeDTO; +import com.vci.dto.OsEnumDTO; +import com.vci.dto.OsEnumItemDTO; import com.vci.omd.dataType.VTDataType; import com.vci.pagemodel.OsEnumItemVO; import com.vci.pagemodel.OsEnumVO; import com.vci.pagemodel.OsUsedAttributeVO; +import com.vci.po.OsAttributePO; +import com.vci.po.OsEnumPO; +import com.vci.starter.poi.bo.ReadExcelOption; import com.vci.starter.poi.bo.WriteExcelData; import com.vci.starter.poi.bo.WriteExcelOption; +import com.vci.starter.poi.constant.ExcelLangCodeConstant; import com.vci.starter.poi.util.ExcelUtil; import com.vci.starter.web.annotation.log.VciUnLog; import com.vci.starter.web.enumpck.VciFieldTypeEnum; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.BaseQueryObject; +import com.vci.starter.web.pagemodel.BaseResult; import com.vci.starter.web.pagemodel.DataGrid; import com.vci.starter.web.util.*; import com.vci.model.OsAttributeDO; @@ -26,17 +34,20 @@ import com.vci.web.properties.UsedNames; import com.vci.web.service.OsAttributeServiceI; import com.vci.web.service.OsBaseServiceI; +import com.vci.web.service.OsEnumServiceI; import com.vci.web.service.OsLinkTypeServiceI; import com.vci.web.util.Func; import com.vci.web.util.PlatformClientUtil; import com.vci.web.util.WebUtil; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.util.HSSFColor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; import javax.swing.*; import java.awt.*; @@ -102,6 +113,18 @@ @Autowired(required = false) @Lazy private OsBtmServiceImpl osBtmService; + + /** + * 鏋氫妇鐨勬湇鍔� + */ + @Autowired + @Lazy + private OsEnumServiceI enumService; + + /** + * 蹇呭~鍒� + */ + private List<Integer> ColumnNameisRed = new ArrayList<Integer>(); /** * 榛樿鐨勫睘鎬� @@ -184,14 +207,10 @@ public List<OsAttributeVO> getByAttributeNames(String[] attrNames) throws PLException { VciBaseUtil.alertNotNull(attrNames,"灞炴�у悕"); List<OsAttributeVO> osAttributeVOS = new ArrayList<>(); - for (int i = 0; i < attrNames.length; i++) { - AttributeDef[] attributeDefs = platformClientUtil.getAttributeService().getAttributeDefs(attrNames[i],1,1); - if(Func.isNotEmpty(attributeDefs)){ - Arrays.stream(attributeDefs).forEach(attributeDef -> { - osAttributeVOS.add(attributeDO2VO(attributeDef)); - }); - } - } + AttributeDef[] attributeDefs = platformClientUtil.getAttributeService().getAttributeDefsByNames(attrNames); + Arrays.stream(attributeDefs).forEach(attr->{ + osAttributeVOS.add(attributeDO2VO(attr)); + }); return osAttributeVOS; } @@ -224,8 +243,8 @@ attributeVO.setId(attribItem.name); attributeVO.setCreator(attribItem.creator); try { - attributeVO.setCreateTime(VciDateUtil.str2Date(String.valueOf(attribItem.createTime),VciDateUtil.DateTimeFormat)); - attributeVO.setLastModifyTime(VciDateUtil.str2Date(String.valueOf(attribItem.modifyTime),VciDateUtil.DateTimeFormat)); + attributeVO.setCreateTime(new Date(attribItem.createTime)); + attributeVO.setLastModifyTime(new Date(attribItem.modifyTime)); attributeVO.setTs(VciDateUtil.str2Date(attribItem.ts,VciDateUtil.DateTimeMillFormat)); }catch (Throwable e){ @@ -236,7 +255,11 @@ attributeVO.setAttributeDataType(attribItem.vtDataType); attributeVO.setAttributeDataTypeText(VciFieldTypeEnum.getTextByValue(attribItem.vtDataType)); attributeVO.setDefaultValue(attribItem.defValue); - attributeVO.setRange(attribItem.rage); + if(Func.isNotBlank(attribItem.rage)){ + attributeVO.setRange(attribItem.rage.replace("<","<")); + }else{ + attributeVO.setRange(attribItem.rage); + } attributeVO.setOther(attribItem.other); //澶勭悊鍙傜収鐩稿叧灞炴�� if(StringUtils.isNotBlank(attribItem.other)) { @@ -248,6 +271,12 @@ attributeVO.setBtmTypeId(s.split("=")[1].trim()); } //閾炬帴绫诲瀷涓嶆敮鎸� + if (s.toLowerCase().contains("link") && s.split("=").length > 1) {//蹇呴』瑕佸垽鏂暱搴︼紝鍥犱负鏋氫妇鐨勬椂鍊欎篃鏄寘鍚繖涓猙tm鐨� + attributeVO.setLinkTypeName(s.split("=")[1].trim()); + } + if (s.toLowerCase().contains("version") && s.split("=").length > 1) {//蹇呴』瑕佸垽鏂暱搴︼紝鍥犱负鏋氫妇鐨勬椂鍊欎篃鏄寘鍚繖涓猙tm鐨� + attributeVO.setVersion(WebUtil.getInt(s.split("=")[1].trim())); + } } } //蹇呰緭鍜岄暱搴� @@ -450,9 +479,13 @@ ); //灞炴�ц嫳鏂囧悕绉版牎楠岋紙鍒ょ┖銆佺郴缁熶腑鍒ら噸銆佹槸鍚﹀叧閿瓧銆佹槸鍚﹀悎瑙勭瓑锛� checkName(osAttributeDTO.getId()); + //妫�鏌ュ睘鎬у悕鏄惁宸插瓨鍦ㄤ笌绯荤粺涓� + if(platformClientUtil.getAttributeService().checkRowIsExists(osAttributeDTO.getId())){ + throw new PLException("500",new String[]{"灞炴�у悕绉般��" + osAttributeDTO.getId() + "銆戝湪绯荤粺涓凡瀛樺湪!"}); + } //妫�鏌ラ粯璁ゅ�间笌灞炴�х被鍨嬫槸鍚﹀尮閰� checkDefValue(osAttributeDTO); - //dto瀵硅薄杞崲涓哄瓨鍌ㄦ墍闇�瀵硅薄 + //osAttributeDTO.setOid(VciBaseUtil.getPk().toUpperCase(Locale.ROOT)); AttributeDef attributeDef = this.osAttributeDTO2AttributeDef(osAttributeDTO); return platformClientUtil.getAttributeService().addAttributeDef(attributeDef); } @@ -519,14 +552,20 @@ */ private AttributeDef osAttributeDTO2AttributeDef(OsAttributeDTO osAttributeDTO) { AttributeDef attributeDef = new AttributeDef(); + attributeDef.oid = osAttributeDTO.getOid(); attributeDef.name = osAttributeDTO.getId().toLowerCase().replaceAll(" ", ""); attributeDef.label = osAttributeDTO.getName(); attributeDef.description = osAttributeDTO.getDescription(); attributeDef.vtDataType = (String)osAttributeDTO.getAttributeDataType(); attributeDef.defValue = Func.isBlank(osAttributeDTO.getDefaultValue()) ? "" : osAttributeDTO.getDefaultValue(); - attributeDef.rage = Func.isBlank(osAttributeDTO.getRange()) ? "" : osAttributeDTO.getRange(); - attributeDef.creator = Func.isBlank(osAttributeDTO.getCreator()) ? WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId():osAttributeDTO.getCreator(); + if(Func.isBlank(osAttributeDTO.getRange())){ + attributeDef.rage = ""; + }else{ + //鐗规畩瀛楃澶勭悊锛岀洿鎺ュ瓨鍌�<浼氭姤閿� + attributeDef.rage = osAttributeDTO.getRange().replace("<","<"); + } attributeDef.ts = Func.format((Func.isNotEmpty(osAttributeDTO.getTs()) ? osAttributeDTO.getTs():new Date()),VciDateUtil.DateTimeMillFormat); + attributeDef.creator = Func.isBlank(osAttributeDTO.getCreator()) ? WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId():osAttributeDTO.getCreator(); attributeDef.createTime = Func.isEmpty(osAttributeDTO.getCreateTime()) ? System.currentTimeMillis():osAttributeDTO.getCreateTime().getTime(); attributeDef.modifier = Func.isBlank(osAttributeDTO.getLastModifier()) ? WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId():osAttributeDTO.getLastModifier(); attributeDef.modifyTime = System.currentTimeMillis(); @@ -563,9 +602,13 @@ break; case VTString: if (StringUtils.isNotBlank(osAttributeDTO.getBtmTypeId())) { - //鍙傜収 + //鍙傜収涓氬姟绫诲瀷 sb.append(BTM).append(" = ").append(osAttributeDTO.getBtmTypeId()).append(";"); - //閾炬帴绫诲瀷鏆傛椂涓嶆敮鎸� + } + if(StringUtils.isNotBlank(osAttributeDTO.getLinkTypeName())){ + //鍙傜収閾炬帴绫诲瀷 + sb.append(LINKTYPENAME).append(" = ").append(osAttributeDTO.getLinkTypeName()).append(";"); + sb.append(VERSION).append(" = ").append(osAttributeDTO.getVersion()).append(";"); } sb.append(LENGTH).append(" = ").append(length > osAttributeDTO.getAttrLength()?length:osAttributeDTO.getAttrLength()).append(";"); if (StringUtils.isNotBlank(osAttributeDTO.getEnumId())) { @@ -636,12 +679,12 @@ } if(!attributeName.matches("[a-z A-Z]*")){ - throw new PLException("500",new String[]{"娉ㄦ剰锛氬睘鎬у悕鍙兘涓鸿嫳鏂囧瓧姣�!"+ NAME_MAX_LENGTH}); + throw new PLException("500",new String[]{"娉ㄦ剰锛氬睘鎬у悕鍙兘涓鸿嫳鏂囧瓧姣�!"}); } int length = attributeName.length(); if(length > NAME_MAX_LENGTH){ - throw new PLException("500",new String[]{"灞炴�у悕杩囬暱,灞炴�у悕闀垮害涓嶈兘瓒呰繃!"+ NAME_MAX_LENGTH}); + throw new PLException("500",new String[]{"灞炴�у悕杩囬暱,灞炴�у悕闀垮害涓嶈兘瓒呰繃"+ NAME_MAX_LENGTH}); } String abName = attributeName.toLowerCase(); @@ -654,9 +697,9 @@ throw new PLException("500",new String[]{"灞炴�у悕鏃犳晥,鍘熷洜锛氬睘鎬у悕鏄暟鎹簱鍏抽敭瀛�!"}); } //妫�鏌ュ睘鎬у悕鏄惁宸插瓨鍦ㄤ笌绯荤粺涓� - if(platformClientUtil.getAttributeService().checkRowIsExists(abName)){ - throw new PLException("500",new String[]{"灞炴�у悕绉板湪绯荤粺涓凡瀛樺湪!"}); - } + /*if(platformClientUtil.getAttributeService().checkRowIsExists(abName)){ + throw new PLException("500",new String[]{"灞炴�у悕绉般��" + abName + "銆戝湪绯荤粺涓凡瀛樺湪!"}); + }*/ } /** @@ -692,7 +735,6 @@ if(rages == null || rages.equals("")){ return; } - VTInteger obj = new VTInteger(Integer.valueOf(defValue)); boolean flag = obj.checkRageValueByRage(rages); if(!flag){ @@ -707,7 +749,6 @@ if(rages == null || rages.equals("")){ return; } - VTLong obj = new VTLong(Long.valueOf(defValue)); boolean flag = obj.checkRageValueByRage(rages); if(!flag){ @@ -727,7 +768,6 @@ if(!flag){ throw new PLException("500",new String[]{"榛樿鍊间笌鍊煎煙鍐茬獊锛�"}); } - } } } @@ -781,7 +821,7 @@ if(Func.isBlank(oid) || Func.isBlank(name) || Func.isEmpty(ts)){ throw new PLException("500",new String[]{"寰呭垹闄ょ殑灞炴�у垪琛ㄤ腑涓婚敭銆恛id銆戙�佽皟鏁存椂闂淬�恡s銆戙�佸睘鎬у悕銆恘ame銆戜笉鑳戒负绌猴紒"}); } - //鍒ゆ柇鏋氫妇鏄惁鏈夎寮曠敤 + //鍒ゆ柇灞炴�ф槸鍚︽湁琚紩鐢� List<Map<String, String>> usedAttrList = this.getUsedAttributeList(name); if(Func.isNotEmpty(usedAttrList)){ throw new PLException("500",new String[]{"鍒犻櫎鐨勫睘鎬т腑锛屽睘鎬у悕绉颁负锛氥��" + name + "銆�,宸茶寮曠敤锛�"}); @@ -826,22 +866,18 @@ * 瀵煎嚭閫変腑鐨勫睘鎬� * @param exportFileName 瀵煎嚭鐨勬枃浠跺悕 * @param attrNames 闇�瑕佸鍑虹殑灞炴�у悕绉� + * @param flag 鎺у埗瀵煎嚭鐨勫垪鍚嶆槸鍚﹀拰瀵煎叆妯℃澘涓�鑷� * @return */ @Override - public String exportAttributes(String exportFileName, String attrNames) throws PLException { + public String exportAttributes(String exportFileName, String attrNames,boolean flag/*鎺у埗瀵煎嚭鐨勫垪鍚嶆槸鍚﹀拰瀵煎叆妯℃澘涓�鑷�*/) throws PLException { if(Func.isBlank(attrNames)){ throw new PLException("500",new String[]{"璇峰嬀閫夎瀵煎嚭鐨勫睘鎬�!"}); } //鐣岄潰娌′紶鍚嶇О锛屼娇鐢ㄩ粯璁ゅ鍑哄悕绉� exportFileName = Func.isBlank(exportFileName) ? "灞炴�ф睜涓睘鎬у鍑篲" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss"):exportFileName; //璁剧疆鍒楀悕 - List<String> columns = new ArrayList<>( - Arrays.asList("灞炴�у悕", "鏍囩", "鎻忚堪", - "灞炴�х被鍨�", "鍏佽涓虹┖", "榛樿鍊�", "浣跨敤鐨勬灇涓捐嫳鏂囧悕绉�(鏋氫妇鍚�)", - "浣跨敤鐨勬灇涓句腑鏂囧悕绉�(鏍囩)", "鍙傜収鐨勪笟鍔$被鍨嬬紪鍙�", "鍙傜収鐨勪笟鍔$被鍨嬪悕绉�", - "灞炴�ч暱搴�", "灏忔暟绮惧害浣嶆暟","灏忔暟鍒诲害浣嶆暟","鍙栧�艰寖鍥�","鍒涘缓鏃堕棿") - ); + List<String> columns = this.getCloumns(flag); //鍐檈xcel String excelPath = LocalFileUtil.getDefaultTempFolder() + File.separator + exportFileName + ".xls"; @@ -857,8 +893,8 @@ excelDataList.add(new WriteExcelData(0,index, columns.get(index))); } //鎸夌収灞炴�у悕鏌ヨ灞炴�э紝鐒跺悗澶勭悊灞炴�у鍑� - List<String> enumNameList = Func.toStrList(attrNames); - List<OsAttributeVO> osAttributeVOS = this.listAttrByIds(enumNameList); + List<String> attrameList = Func.toStrList(attrNames); + List<OsAttributeVO> osAttributeVOS = this.listAttrByIds(attrameList); if(Func.isEmpty(osAttributeVOS)){ excelDataList.add(new WriteExcelData(1,1, "鏍规嵁灞炴�у悕绉版湭鏌ヨ鍒板睘鎬т俊鎭紝璇峰埛鏂板悗灏濊瘯閲嶆柊瀵煎嚭锛�")); }else{ @@ -869,23 +905,220 @@ excelDataList.add(new WriteExcelData(i+1,0, osAttributeVO.getId())); excelDataList.add(new WriteExcelData(i+1,1, osAttributeVO.getName())); excelDataList.add(new WriteExcelData(i+1,2, osAttributeVO.getDescription())); - excelDataList.add(new WriteExcelData(i+1,3, osAttributeVO.getAttributeDataTypeText()+(osAttributeVO.getAttributeDataType()))); + if(flag){ + excelDataList.add(new WriteExcelData(i+1,3, osAttributeVO.getAttributeDataType())); + }else{ + excelDataList.add(new WriteExcelData(i+1,3, osAttributeVO.getAttributeDataType()+"("+osAttributeVO.getAttributeDataTypeText()+")")); + } excelDataList.add(new WriteExcelData(i+1,4, osAttributeVO.isNullableFlag())); excelDataList.add(new WriteExcelData(i+1,5, osAttributeVO.getDefaultValue())); excelDataList.add(new WriteExcelData(i+1,6, osAttributeVO.getEnumId())); - excelDataList.add(new WriteExcelData(i+1,7, osAttributeVO.getEnumName())); - excelDataList.add(new WriteExcelData(i+1,8, osAttributeVO.getBtmTypeId())); - excelDataList.add(new WriteExcelData(i+1,9, osAttributeVO.getBtmTypeName())); - excelDataList.add(new WriteExcelData(i+1,10, osAttributeVO.getAttrLength())); + //excelDataList.add(new WriteExcelData(i+1,7, osAttributeVO.getEnumName())); + excelDataList.add(new WriteExcelData(i+1,7, osAttributeVO.getBtmTypeId())); + //excelDataList.add(new WriteExcelData(i+1,9, osAttributeVO.getBtmTypeName())); + excelDataList.add(new WriteExcelData(i+1,8, osAttributeVO.getAttrLength())); + excelDataList.add(new WriteExcelData(i+1,9, osAttributeVO.getLinkTypeName())); + excelDataList.add(new WriteExcelData(i+1,10, osAttributeVO.getVersion())); excelDataList.add(new WriteExcelData(i+1,11, osAttributeVO.getPrecisionLength())); excelDataList.add(new WriteExcelData(i+1,12, osAttributeVO.getScaleLength())); excelDataList.add(new WriteExcelData(i+1,13, osAttributeVO.getRange())); - excelDataList.add(new WriteExcelData(i+1,14, osAttributeVO.getCreateTime())); + if(!flag){ + excelDataList.add(new WriteExcelData(i+1,14, Func.format(osAttributeVO.getCreateTime(),"yyyy骞碝M鏈坉d鏃� hh:mm:ss"))); + } } } WriteExcelOption excelOption = new WriteExcelOption(excelDataList); ExcelUtil.writeDataToFile(excelPath, excelOption); return excelPath; + } + + /** + * 鑾峰彇瀵煎嚭鎴栧鍏ユā鏉跨殑鍒楀悕 + * @param flag 鏄惁鑾峰彇瀵煎叆妯℃澘鍒楀悕 + * @return + */ + private List<String> getCloumns(boolean flag){ + if(flag){ + return new ArrayList<>( + Arrays.asList("灞炴�у悕", "鏍囩", "鎻忚堪", + "灞炴�х被鍨�(鍙傜収鏂板鐣岄潰鐨勫睘鎬х被鍨嬪VTString)", "鍏佽涓虹┖(鏄�/鍚�)", "榛樿鍊�", "浣跨敤鐨勬灇涓捐嫳鏂囧悕绉�" + , "鍙傜収鐨勪笟鍔$被鍨嬬紪鍙�","鍙傜収鐨勯摼鎺ョ被鍨嬬紪鍙�","鐗堟湰鐗堟","灞炴�ч暱搴�", "灏忔暟绮惧害浣嶆暟","灏忔暟鍒诲害浣嶆暟" + ,"鍙栧�艰寖鍥�" + ) + ); + } + return new ArrayList<>( + Arrays.asList("灞炴�у悕", "鏍囩", "鎻忚堪", + "灞炴�х被鍨�", "鍏佽涓虹┖", "榛樿鍊�", "浣跨敤鐨勬灇涓捐嫳鏂囧悕绉�(鏋氫妇鍚�)", + "鍙傜収鐨勪笟鍔$被鍨嬬紪鍙�", "鍙傜収鐨勯摼鎺ョ被鍨嬬紪鍙�","鐗堟湰鐗堟","灞炴�ч暱搴�", + "灏忔暟绮惧害浣嶆暟","灏忔暟鍒诲害浣嶆暟","鍙栧�艰寖鍥�","鍒涘缓鏃堕棿") + ); + } + + /** + * 涓嬭浇灞炴�у鍏ユā鏉� + * @param exportFileName + * @return + * @throws PLException + */ + @Override + public String downloadAttributeTemplate(String exportFileName) throws Exception { + //鐣岄潰娌′紶鍚嶇О锛屼娇鐢ㄩ粯璁ゅ鍑哄悕绉� + exportFileName = Func.isBlank(exportFileName) ? "灞炴�ф睜瀵煎叆妯℃澘_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss"):exportFileName; + //璁剧疆鍒楀悕 + List<String> columns = this.getCloumns(true); + //璁剧疆蹇呭~鍒� + ColumnNameisRed.clear(); + ColumnNameisRed.add(0); + ColumnNameisRed.add(3); + ColumnNameisRed.add(10); + + //鍐檈xcel + String excelPath = LocalFileUtil.getDefaultTempFolder() + File.separator + exportFileName + ".xls"; + try { + new File(excelPath).createNewFile(); + } catch (Throwable e) { + throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelPath}, e); + } + //璁剧疆鍒� + List<WriteExcelData> excelDataList = new ArrayList<>(); + //璁剧疆鍒楀ご + for (int index = 0; index < columns.size(); index++) { + //鍒ゆ柇鏄惁涓哄繀濉垪锛岀粰蹇呭~鍒楄缃鑹� + if(ColumnNameisRed.contains(index)){ + WriteExcelData excelData = new WriteExcelData(0, index, columns.get(index)); + excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex())); + excelDataList.add(excelData); + }else{ + excelDataList.add(new WriteExcelData(0,index, columns.get(index))); + } + } + WriteExcelOption excelOption = new WriteExcelOption(excelDataList); + ExcelUtil.writeDataToFile(excelPath, excelOption); + return excelPath; + } + + /** + * 瀵煎叆灞炴�� + * @param file + * @param isContinue 绯荤粺涓嚭鐜伴噸澶嶆槸鍚﹁烦杩囨姤閿欑户缁墽琛� + * @return + * @throws Exception + */ + @Override + public BaseResult importAttributes(File file, boolean isContinue) throws Exception{ + VciBaseUtil.alertNotNull(file,"excel鏂囦欢"); + if(!file.exists()){ + throw new VciBaseException("瀵煎叆鐨別xcel鏂囦欢涓嶅瓨鍦�,{0}",new String[]{file.getPath()}); + } + try{ + //1銆佽鍙杄xcel涓殑鏁版嵁锛岀粍鎴愬璞� + ReadExcelOption excelOption = new ReadExcelOption(); + List<OsAttributePO> poList = ExcelUtil.readDataObjectFromExcel(file, OsAttributePO.class,excelOption,(value, po, fieldName)->{}); + //鍘婚櫎閮芥槸绌虹殑鎯呭喌 + if(CollectionUtils.isEmpty(poList)){ + return BaseResult.fail(ExcelLangCodeConstant.IMPORT_CONTENT_NULL,new String[]{}); + } + //excel鍒ら噸锛屾暟鎹牎楠岋紝dto瀵硅薄杞崲锛屽瓨鍌ㄥ璞¤浆鎹紝鎵ц淇濆瓨 + List<OsAttributeDTO> dtoList = new ArrayList<>(); + //褰撳墠excel涓槸鍚﹂噸澶嶇敤鐨勫垽閲峂ap:锛坘ey锛氬垽閲嶅睘鎬э紝value锛氳鍙凤級 + Map<String, String> excelReapeat = new HashMap<>(); + for (int i = 0; i < poList.size(); i++) { + OsAttributePO osAttributePO = poList.get(i); + if(Func.isBlank(osAttributePO.getId())){//灞炴�у悕鍒ょ┖ + throw new VciBaseException("绗��"+osAttributePO.getRowIndex()+"銆戣锛宎ttrnameerror"); + }else if(Func.isBlank(osAttributePO.getAttributeDataType())){ + throw new VciBaseException("绗��"+osAttributePO.getRowIndex()+"銆戣锛宼ypeerror"); + }else if(excelReapeat.containsKey(osAttributePO.getId())){//灞炴�у悕琛ㄦ牸涓垽閲� + throw new VciBaseException("绗��"+excelReapeat.get(osAttributePO.getId())+"銆戣鍜岀銆�"+osAttributePO.getRowIndex()+"銆戣鏁版嵁锛屽睘鎬у悕閲嶅"); + }else { + try { + if(platformClientUtil.getAttributeService().checkRowIsExists(osAttributePO.getId())){ + throw new PLException("500",new String[]{"灞炴�у悕绉般��" + osAttributePO.getId() + "銆戝湪绯荤粺涓凡瀛樺湪!"}); + } + } catch (PLException e) { + e.printStackTrace(); + String errorMsg = "涓庣郴缁熶腑灞炴�у悕鏌ラ噸鏃跺嚭鐜伴敊璇�,鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e); + logger.error(errorMsg); + //鏄惁璺宠繃褰撴湡閲嶅鏁版嵁 + if(isContinue){ + continue; + } + throw new VciBaseException(errorMsg); + } + } + //灞炴�у悕鏍¢獙 + try { + checkName(osAttributePO.getId()); + } catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException(VciBaseUtil.getExceptionMessage(e)); + } + //灞炴�у悕excel涓垽閲嶅鐞� + excelReapeat.put(osAttributePO.getId(),osAttributePO.getRowIndex()); + OsAttributeDTO osAttributeDTO = new OsAttributeDTO(); + //鏌ヨ灞炴�ф槸鍚﹀瓨鍦紝濉啓浜嗘灇涓句絾娌″~鍐欏彇鍊艰寖鍥达紝杩欐椂鍊欑洿鎺ヤ娇鐢ㄦ灇涓鹃」鍊间綔涓洪粯璁ょ殑range + if(Func.isNotBlank(osAttributePO.getEnumId()) && Func.isBlank(osAttributePO.getRange())){ + try { + OsEnumVO enumVO = enumService.getEnumTypeById(osAttributePO.getEnumId()); + if(Func.isEmpty(enumVO)){ + throw new VciBaseException("绗��" + osAttributePO.getRowIndex() + "銆戣鏁版嵁,閫氳繃鏋氫妇鍚嶇О銆�" + osAttributePO.getEnumId() + + "銆戞湭鑾峰彇鍒版灇涓句俊鎭�!"); + } + String itemValues = enumVO.getItemMaps().values().stream().collect(Collectors.joining(";")); + osAttributeDTO.setRange(itemValues); + } catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException("鏋氫妇鏌ヨ澶辫触锛屽師鍥狅細"+e.getMessage()); + } + osAttributeDTO.setBtmTypeId(osAttributePO.getEnumId()); + } + osAttributeDTO.setOid(VciBaseUtil.getPk().toUpperCase(Locale.ROOT)); + osAttributeDTO.setId(osAttributePO.getId()); + osAttributeDTO.setName(osAttributePO.getName()); + osAttributeDTO.setDescription(osAttributePO.getDescription()); + osAttributeDTO.setDefaultValue(osAttributePO.getDefaultValue()); + osAttributeDTO.setAttrLength(osAttributePO.getAttrLength()); + osAttributeDTO.setAttributeDataType(osAttributePO.getAttributeDataType()); + osAttributeDTO.setBtmTypeId(osAttributePO.getBtmTypeId()); + //osAttributeDTO.setBtmTypeName(osAttributePO.getBtmname()); + osAttributeDTO.setLinkTypeName(osAttributePO.getLinkTypeName()); + osAttributeDTO.setVersion(osAttributePO.getVersion()); + osAttributeDTO.setEnumId(osAttributePO.getEnumId()); + //osAttributeDTO.setEnumName(osAttributePO.getEnumId()); + osAttributeDTO.setPrecisionLength(osAttributePO.getPrecisionLength()); + osAttributeDTO.setScaleLength(osAttributePO.getScaleLength()); + osAttributeDTO.setRange(osAttributePO.getRange()); + osAttributeDTO.setNullableFlag("鏄�".equals(osAttributePO.getNullableFlag()) ? true:false); + try { + //妫�鏌ラ粯璁ゅ�间笌灞炴�х被鍨嬫槸鍚﹀尮閰� + checkDefValue(osAttributeDTO); + } catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException(VciBaseUtil.getExceptionMessage(e)); + } + dtoList.add(osAttributeDTO); + } + //鎵ц淇濆瓨鎿嶄綔 + dtoList.stream().forEach(dto->{ + try { + boolean b = platformClientUtil.getAttributeService().addAttributeDef(osAttributeDTO2AttributeDef(dto)); + if(!b){ + throw new VciBaseException("save and return false"); + } + } catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException("鎵ц淇濆瓨鏃跺嚭鐜伴敊璇紝閿欒灞炴�у璞″悕涓猴細銆�" + dto.getId() + "銆戯紝鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e)); + } + }); + }catch (Exception e){ + if(logger.isErrorEnabled()){ + logger.error("璇诲彇excel鍐呭鏃舵垨淇濆瓨灞炴�ф椂鍑虹幇浜嗛敊璇紝鍏蜂綋鍘熷洜锛�",VciBaseUtil.getExceptionMessage(e)); + } + e.printStackTrace(); + return BaseResult.fail(VciBaseUtil.getExceptionMessage(e),new String[]{},e); + } + return BaseResult.success("灞炴�у鍏ユ垚鍔燂紒"); } /** @@ -909,11 +1142,11 @@ */ private boolean isReferAttr(String other){ if(StringUtils.isNotBlank(other) - && (other.toLowerCase().contains("btm") || other.toLowerCase().contains("ltm"))){ + && (other.toLowerCase().contains("btm") || other.toLowerCase().contains("link"))){ //杩樹笉鑳界‘瀹氾紝鍥犱负鏋氫妇鐨勬椂鍊欎篃浼氳缃産tm String[] temp = other.split(";"); for(String s : temp){ - if((s.contains("btm") || s.contains("ltm")) && s.split("=").length>1){ + if((s.contains("btm") || s.contains("link")) && s.split("=").length>1){ return true; } } -- Gitblit v1.9.3