From ce567eb11cd0cdbd826214c355d1a8caff175dca Mon Sep 17 00:00:00 2001 From: ludc Date: 星期三, 15 十一月 2023 14:25:22 +0800 Subject: [PATCH] bug列表:181(修复新增,修改,删除接口,新增时没设置默认值,导致在建分类时无法查询到,关键属性查重规则)183(历史数据导入模板下载,过滤掉模板中配置的默认属性) --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java | 194 +++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 157 insertions(+), 37 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java index 33c8e01..0924dbb 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java @@ -30,14 +30,21 @@ import com.vci.ubcs.starter.web.util.VciBaseUtil; import com.vci.ubcs.starter.web.util.VciDateUtil; import lombok.extern.slf4j.Slf4j; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.utils.Func; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.DefaultTransactionDefinition; +import org.springframework.transaction.support.TransactionTemplate; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -77,30 +84,32 @@ @Autowired private FormulaServiceImpl formulaService; + // 娉ㄥ叆浜嬪姟绠$悊鍣� +// @Autowired +// private TransactionTemplate transactionTemplate; + @Override - @Transactional(rollbackFor = VciBaseException.class) + @Transactional(rollbackFor = Exception.class) public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception { dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList()); List<String> codeList = new ArrayList<>(); - + final CodeRuleVO finalRuleVO = ruleVO; /***** * 淇濊瘉骞跺彂鐨勬椂鍊欙紝鏈�澶ф祦姘村彿閮藉鐨勶紝浣嗘槸杩欑鍔犻攣鏈夊紛绔� - * */ - if(dataCBOList.stream().anyMatch(cbo-> StringUtils.isNotBlank(cbo.getId())) -// && StringUtils.isNotBlank(cbo.getAttributeValue(CODE_SEC_LENGTH_FIELD)) - ){ + // && StringUtils.isNotBlank(cbo.getAttributeValue(CODE_SEC_LENGTH_FIELD)) + ){ //鏄巻鍙叉暟鎹鍏� //鍘嗗彶鏁版嵁鎵ц鐨勬椂鍊欙紝杩欎釜绯荤粺浼氬緢鍗� //涓昏鏄负浜嗗綍鍏ユ渶澶ф祦姘村彿鍜宎llcode -// SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); - List<CodeAllCode> allCodeDOList = new ArrayList<>(); + //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); + List<CodeAllCode> allCodeDOList = new CopyOnWriteArrayList<>(); Map<String/**娴佹按渚濇嵁**/, Map<String/**鐮佹鐨勪富閿�**/,Double/**鏈�澶ф祦姘村彿**/>> maxSerialMap = new HashMap<>(); // TODO 澶氱嚎绋嬫祦寮曞彂鐨勯棶棰樺凡淇敼 dataCBOList.parallelStream().forEach(cbo->{ log.info("code:----->"+cbo.getId()); -// VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); + //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); String code = cbo.getId(); List<String> serialUnitList = new ArrayList<>(); String seclenghStr=cbo.getData().get(CODE_SEC_LENGTH_FIELD); @@ -108,7 +117,7 @@ cbo.getData().remove(CODE_SEC_LENGTH_FIELD);//灏嗘key闄ゅ幓 cbo.getData().remove(IMPORT_ROW_INDEX);//灏嗘key闄ゅ幓 cbo.getData().remove("codeclassifyid");//灏嗘key闄ゅ幓 - List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList()); + List<CodeBasicSecVO> secVOList = finalRuleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList()); Map<String/**鐮佹鐨勪富閿�**/,String/**鐮佹鐨勫��**/> serialValueMap = new HashMap<>(); Map<String, CodeBasicSecVO> secVOMap = secVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); for (int i = 0; i < secLengths.length; i++) { @@ -125,7 +134,7 @@ start += VciBaseUtil.getInt(secLengths[j]); } thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[i])); - // } + // } if(VciBaseUtil.getBoolean(secVO.getSerialDependFlag())){ serialUnitList.add(thisSecValue); } @@ -140,13 +149,15 @@ //瑕佺湅鏄笉鏄ˉ浣嶇殑 CodeBasicSecVO secVO = secVOMap.get(secOid); Double serialDb = null; + // 鎴彇鎺夊墠鍚庣紑涔嬪悗鐨勭爜娈� + String subSecValue = killPriffixSuffix(secValue, secVO.getPrefixCode(), secVO.getSuffixCode()); if(OsCodeFillTypeEnum.NONE.getValue().equalsIgnoreCase(secVO.getCodeFillType())){ //涓嶈ˉ鐮� //鎶婃墍鏈変笉鏄暟瀛楃殑鍘绘帀锛屽洜涓哄彲鑳戒細鏄�佹暟鎹紝鏂拌鍒� - serialDb = VciBaseUtil.getDouble(killUnNumberChar(secValue)); + serialDb = VciBaseUtil.getDouble(killUnNumberChar(subSecValue)); }else { //宸﹀彸濉厖鐨勶紝鎴戜滑闇�瑕� - serialDb = VciBaseUtil.getDouble(killUnNumberChar(killFillChar(secValue,secVO.getCodeFillSeparator(), + serialDb = VciBaseUtil.getDouble(killUnNumberChar(killFillChar(subSecValue,secVO.getCodeFillSeparator(), OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType())))); } Map<String, Double> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>()); @@ -165,7 +176,7 @@ CodeAllCode allCodeDO = new CodeAllCode(); DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCodeDO, MdmBtmTypeConstant.CODE_ALL_CODE); allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid()); - allCodeDO.setCodeRuleOid(ruleVO.getOid()); + allCodeDO.setCodeRuleOid(finalRuleVO.getOid()); allCodeDO.setId(cbo.getId()); allCodeDO.setCodeClassifyTemplateOid(templateVO.getOid()); allCodeDO.setCreateCodeBtm(cbo.getBtmname()); @@ -183,7 +194,7 @@ maxSerialMap.forEach((serialUnit,secOidMaxMap)->{ secOidMaxMap.forEach((secOid,maxSerial)->{ QueryWrapper<CodeSerialValue> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("codeRuleOid", ruleVO.getOid()); + queryWrapper.eq("codeRuleOid", finalRuleVO.getOid()); queryWrapper.eq("serialUnit", serialUnit); //杩欎釜瀛楁鏄负浜嗚В鍐冲涓祦姘寸殑闂 queryWrapper.eq("codeSecOid", secOid); @@ -202,7 +213,7 @@ //娌℃湁 CodeSerialValue serialValueDO = new CodeSerialValue(); DefaultAttrAssimtUtil.addDefaultAttrAssimt(serialValueDO, MdmBtmTypeConstant.CODE_SERIAL_VALUE); - serialValueDO.setCodeRuleOid(ruleVO.getOid()); + serialValueDO.setCodeRuleOid(finalRuleVO.getOid()); serialValueDO.setSerialUnit(serialUnit); serialValueDO.setCodeSecOid(secOid); serialValueDO.setMaxSerial(maxSerial.toString()); @@ -261,6 +272,10 @@ if(!CollectionUtils.isEmpty(editCodeDOs)){ codeAllCodeService.updateBatchById(editCodeDOs); } + // 鑾峰彇浜嬪姟瀹氫箟 + //DefaultTransactionDefinition def = new DefaultTransactionDefinition(); + // 寮�濮嬩簨鍔� + //TransactionStatus status = transactionTemplate.getTransactionManager().getTransaction(def); if(!CollectionUtils.isEmpty(addCodeDOs)){ Map<String, String> statusMap = addCodeDOs.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus())); addCodeDOs.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> { @@ -274,13 +289,48 @@ if( distinctCodeAllCOdes.size() != addCodeDOs.size() ){ throw new VciBaseException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒"); } + QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>(); + wrapper.eq("CREATECODEBTM",addCodeDOs.get(0).getCreateCodeBtm()); + wrapper.in("ID",addCodeDOs.stream().map(CodeAllCode::getId).collect(Collectors.toList())); + List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper); + List<CodeAllCode> takeBack = codeAllCodes.stream().filter(e -> e.getLcStatus().equals("TakeBack")).collect(Collectors.toList()); + if(codeAllCodes.size()>takeBack.size()){ + throw new ServiceException("鐢熸垚缂栫爜鏁版嵁ID宸叉湁鍘嗗彶璁板綍,璇风‘璁ゅ涓嬬敓鎴愮殑ID鏁版嵁锛�"+ addCodeDOs.stream().map(CodeAllCode::getId).collect(Collectors.toList())); + } + for (CodeAllCode codeAllCode : takeBack) { + codeAllCode.setTs(new Date()); + codeAllCode.setLastModifyTime(new Date()); + codeAllCode.setLastModifier(AuthUtil.getUserId().toString()); + Iterator<CodeAllCode> iterator = addCodeDOs.iterator(); + while (iterator.hasNext()){ + CodeAllCode next = iterator.next(); + if(codeAllCode.getId().equals(next.getId())){ + codeAllCode.setCreateCodeOid(next.getCreateCodeOid()); + codeAllCode.setLcStatus(next.getLcStatus()); + iterator.remove(); + } + } + } + if(takeBack.size()>0){ + codeAllCodeService.updateBatchById(takeBack); + } + codeAllCodeService.saveBatch(addCodeDOs); } + +// try { mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList); + // 鎻愪氦浜嬪姟 + //transactionTemplate.getTransactionManager().commit(status); +// }catch (Exception e){ +// // 鍑虹幇寮傚父鏃跺洖婊氫簨鍔� +// transactionTemplate.getTransactionManager().rollback(status); +// } + } return codeList; }else { - List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList()); + List<CodeBasicSecVO> secVOList = finalRuleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList()); List<String> serialUnitList = new LinkedList<>(); List<String> secValueList = new ArrayList<>(); Map<String, String> secValueMap = secDTOList.stream().collect(Collectors.toMap(s -> s.getSecOid(), s -> s.getSecValue()==null?"":s.getSecValue())); @@ -316,7 +366,7 @@ switchAttrSecValue(attrSecVOList, cbo, thisSecValueList, attrSevIsSerialDepend, thisSerialUnitList); String serialUnitString = thisSerialUnitList.size() == 0 ? EMPTY_SERIAL_UNIT : thisSerialUnitList.stream().collect(Collectors.joining(SERIAL_UNIT_SPACE)); - switchSerialSecValue(serialSecVOList, attrSevIsSerialDepend, ruleVO, serialUnitString, maxSerialValueMap, thisSecValueList, lastMaxSerialValueMap, i == 0); + switchSerialSecValue(serialSecVOList, attrSevIsSerialDepend, finalRuleVO, serialUnitString, maxSerialValueMap, thisSecValueList, lastMaxSerialValueMap, i == 0); //缁勮缂栫爜鐨勫�� cbo.setId(thisSecValueList.stream().collect(Collectors.joining())); @@ -331,10 +381,10 @@ } } //瑕佸瓨鍌ㄦ渶鍚庣殑鍏ㄩ儴allcode - wrapperAllCode(classifyFullInfoBO, ruleVO, cbo, templateVO, allCodeDOList, serialUnitString, sb.toString()); + wrapperAllCode(classifyFullInfoBO, finalRuleVO, cbo, templateVO, allCodeDOList, serialUnitString, sb.toString()); } //澶勭悊鏈�澶ф祦姘� - saveSerialValue( ruleVO, lastMaxSerialValueMap, maxSerialValueMap); + saveSerialValue( finalRuleVO, lastMaxSerialValueMap, maxSerialValueMap); allCodeDOList.stream().forEach( allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");} @@ -353,12 +403,37 @@ Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CodeAllCode::getId))), ArrayList::new)); if( distinctCodeAllCOdes.size() != allCodeDOList.size() ){ - throw new VciBaseException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒"); + throw new ServiceException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒"); + } + QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>(); + wrapper.eq("CREATECODEBTM",allCodeDOList.get(0).getCreateCodeBtm()); + wrapper.in("ID",allCodeDOList.stream().map(CodeAllCode::getId).collect(Collectors.toList())); + List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper); + List<CodeAllCode> takeBack = codeAllCodes.stream().filter(e -> e.getLcStatus().equals("TakeBack")).collect(Collectors.toList()); + if(codeAllCodes.size()>takeBack.size()){ + throw new ServiceException("鐢熸垚缂栫爜鏁版嵁ID宸叉湁鍘嗗彶璁板綍,璇风‘璁ゅ涓嬬敓鎴愮殑ID鏁版嵁锛�"+ allCodeDOList.stream().map(CodeAllCode::getId).collect(Collectors.toList())); + } + + for (CodeAllCode codeAllCode : takeBack) { + codeAllCode.setTs(new Date()); + codeAllCode.setLastModifyTime(new Date()); + codeAllCode.setLastModifier(AuthUtil.getUserId().toString()); + Iterator<CodeAllCode> iterator = allCodeDOList.iterator(); + while (iterator.hasNext()){ + CodeAllCode next = iterator.next(); + if(codeAllCode.getId().equals(next.getId())){ + codeAllCode.setCreateCodeOid(next.getCreateCodeOid()); + codeAllCode.setLcStatus(next.getLcStatus()); + iterator.remove(); + } + } + } + if(takeBack.size()>0){ + codeAllCodeService.updateBatchById(takeBack); } codeAllCodeService.saveBatch(allCodeDOList); // iCodeWupinService.saveBatch(dataCBOList); mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList); - // batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> { // s.setLcStatus(statusMap.get(s.getOid())); // try { @@ -368,10 +443,11 @@ // } // }); } -// WebUtil.setPersistence(true); -// boService.persistenceBatch(batchCBO); + // WebUtil.setPersistence(true); + // boService.persistenceBatch(batchCBO); return codeList; } + /** * 杞崲灞炴�х爜娈电殑鍊� * @param attrSecVOList 灞炴�х爜娈电殑鏄剧ず瀵硅薄 @@ -400,7 +476,8 @@ for (int j = 0; j < thisSecValueList.size(); j++) { String secValue = thisSecValueList.get(j); if (secValue.equalsIgnoreCase("${attr_" + attrSevVO.getOid() + "}")) { - thisSecValueList.set(j, value); + // TODO: 灞炴�х爜娈电敓鎴愮爜鍊煎悗锛屾嫾鎺ュ墠鍚庣紑 + thisSecValueList.set(j, joinPreffixAndSuffix(attrSevVO,value)); } } if (attrSevIsSerialDepend) { @@ -408,14 +485,13 @@ for (int j = 0; j < serialUnitList.size(); j++) { String secValue = serialUnitList.get(j); if (secValue.equalsIgnoreCase("${attr_" + attrSevVO.getOid() + "}")) { - serialUnitList.set(j, value); + serialUnitList.set(j, joinPreffixAndSuffix(attrSevVO,value)); } } } }); } } - /** * 杞崲娴佹按鐮佹鐨勫�� @@ -485,7 +561,8 @@ for (int z = 0; z < thisSecValueList.size(); z++) { String secValue = thisSecValueList.get(z); if (secValue.equalsIgnoreCase("${" + secVO.getOid() + "}")) { - thisSecValueList.set(z, serialString); + // TODO: 娴佹按鐢熸垚鐮佸�煎悗鎷兼帴鍓嶅悗缂� + thisSecValueList.set(z, joinPreffixAndSuffix(secVO, serialString)); } } Map<String, Double> unitSerialMap = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>()); @@ -513,18 +590,19 @@ String secValue = secValueMap.getOrDefault(secVO.getOid(), ""); switch (secType) { case CODE_FIXED_SEC: + secValue = joinPreffixAndSuffix(secVO, secValue); //鍥哄畾鐮佹鐨勶紝鐩存帴鐢ㄧ爜鍊�,涓嶈鐮佸�肩殑闀垮害鏄灏戯紝鍥犱负鍙彉闀垮害鍜屽浐瀹氶暱搴︽槸鎺у埗鍦ㄧ爜娈电鐞嗛噷闈㈢殑鐮佸�煎畾涔夌殑 break; case CODE_DATE_SEC: //鏃堕棿鐮佹锛岄渶瑕佸皢褰撳墠鏃堕棿渚濇嵁鏃堕棿鏍煎紡杩涜杞崲. //鏃堕棿鐮佹涓嶆秹鍙婂埌鏄惁琛ヤ綅 - secValue = VciDateUtil.date2Str(new Date(), secVO.getCodeDateFormatStr()); + secValue =joinPreffixAndSuffix(secVO, VciDateUtil.date2Str(new Date(), secVO.getCodeDateFormatStr())); break; case CODE_CLASSIFY_SEC: //鍒嗙被鐮佹鐨勶紝涔熸槸浠庡墠绔�夋嫨浜嗙爜鍊煎嵆鍙紝涓嶈鐮佸�肩殑闀垮害鏄灏� CodeClassifyValue codeClassifyValueDO= codeClassifyValueMapper.selectById(secValue); if(codeClassifyValueDO!=null) { - secValue = codeClassifyValueDO.getId(); + secValue = joinPreffixAndSuffix(secVO, codeClassifyValueDO.getId()); } break; case CODE_LEVEL_SEC: @@ -577,10 +655,12 @@ secValue = secValue.substring(secValue.length() - secVO.getValueCutLength()); } } + secValue = joinPreffixAndSuffix(secVO,secValue); break; case CODE_REFER_SEC: //寮曠敤鐨勫湪椤甸潰涓婂凡缁忛�夋嫨浜嗭紝鎵�浠ョ洿鎺ヤ娇鐢ㄥ墠绔笂浼犻�掔殑鍊� //寮曠敤灏辨槸鍙傜収锛屽彲鑳芥槸鍏朵粬鐨勫垎绫伙紙涓氬姟绫诲瀷锛変笅鐨勬暟鎹紝鎵�浠ュ彧鍦ㄩ〉闈笂閫夋嫨 + secValue = joinPreffixAndSuffix(secVO,secValue); break; case CODE_ATTR_SEC: //灞炴�т笌寮曠敤鐨勫尯鍒槸锛屽睘鎬ф槸褰撳墠鏁版嵁閲岀殑灞炴�э紝鑰屽紩鐢ㄥ彲鑳芥槸寮曠敤鍏朵粬鐨勫垎绫荤殑锛堜笟鍔$被鍨嬶級 @@ -595,6 +675,7 @@ } OsCodeFillTypeEnum fillTypeEnum = OsCodeFillTypeEnum.forValue(secVO.getCodeFillType()); secValue = fillString(VciBaseUtil.getInt(secVO.getCodeSecLength()), fillTypeEnum, secValue, secVO.getCodeFillSeparator()); + secValue = joinPreffixAndSuffix(secVO,secValue); break; case CODE_SERIAL_SEC: //娴佹按鐮佹 @@ -607,6 +688,27 @@ serialUnitList.add(secValue); } secValueList.add(secValue); + } + + /** + * 鎷兼帴鍓嶅悗缂� + * @param secVO + * @param secValue + * @return + */ + private String joinPreffixAndSuffix(CodeBasicSecVO secVO, String secValue){ + StringBuilder joinSecValue = new StringBuilder(); + // 鎷兼帴鍓嶇紑 + if (Func.isNotEmpty(secVO.getPrefixCode())) { + joinSecValue = joinSecValue.append(secVO.getPrefixCode()); + } + // 鍦ㄤ腑闂存嫾鎺ュ�� + joinSecValue.append(secValue); + // 鎷兼帴鍚庣紑 + if(Func.isNotEmpty(secVO.getSuffixCode())){ + joinSecValue = joinSecValue.append(secVO.getSuffixCode()); + } + return joinSecValue.toString(); } /** @@ -659,9 +761,6 @@ allCodeDO.setLcStatus(cbo.getLcStatus()); allCodeDOList.add(allCodeDO); } - - - /** * 淇濆瓨娴佹按鐨勪俊鎭� @@ -730,6 +829,23 @@ } /** + * 鍘绘帀鍓嶅悗缂� + * @param secValue 瀛楃 + * @param priffix 鍓嶇紑 + * @param suffix 鍚庣紑 + * @return 鏇挎崲鍚庣殑鍊� + */ + private String killPriffixSuffix(String secValue, String priffix,String suffix){ + if (priffix != null && secValue.startsWith(priffix)) { + secValue = secValue.substring(priffix.length()); + } + if (suffix != null && secValue.endsWith(suffix)) { + secValue = secValue.substring(0, secValue.length() - suffix.length()); + } + return secValue; + } + + /** * 鍘婚櫎琛ヤ綅瀛楃 * @param s 瀛楃 * @param fillString 琛ヤ綅瀛楃 @@ -739,12 +855,14 @@ private String killFillChar(String s, String fillString,boolean left){ Integer index = 0; String value = s; + if(left){ for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); - if((new String(new char[]{c})).equalsIgnoreCase(fillString)){ - index = i; + if(!(new String(new char[]{c})).equalsIgnoreCase(fillString)){ + break; } + index = i; } if(index >0){ value = value.substring(index); @@ -753,9 +871,10 @@ //浠庡彸寰�宸︽壘 for (int i = s.length()-1; i >=0; i++) { char c = s.charAt(i); - if((new String(new char[]{c})).equalsIgnoreCase(fillString)){ - index = i; + if(!(new String(new char[]{c})).equalsIgnoreCase(fillString)){ + break; } + index = i; } if(index >0){ value = value.substring(0,index); @@ -823,4 +942,5 @@ // WebUtil.copyValueToMapFromCbos(cbo,dataMap); return formulaService.getValueByFormula(map,rule); } + } -- Gitblit v1.9.3