From b11b45122d2b6903e8970e8d55712f7a6a657e22 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期三, 10 一月 2024 00:01:10 +0800 Subject: [PATCH] defaultReferDataGrid接口修改,实现兼容高级查询sql拼接;修改流水处理接口,增加流水处理跳出判断 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java | 4 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java | 1 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeALlCodeMapper.xml | 5 - Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java | 2 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 30 ++++------ Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue | 7 + Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java | 3 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSCondition.java | 95 +++++++++++++++++++++++++++++++ Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java | 12 +++ 9 files changed, 130 insertions(+), 29 deletions(-) diff --git a/Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue b/Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue index e5ec5a4..8c30e40 100644 --- a/Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue +++ b/Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue @@ -232,7 +232,6 @@ </el-dialog> </el-dialog> - </template> <script> @@ -420,7 +419,11 @@ cell: true, clearable: false, dicData: [ - { + { + value: '_in', label: '瀛樺湪浜�' + },{ + value: '_notin', label: '涓嶅瓨鍦ㄤ簬' + },{ value: '_like', label: '鍖呭惈' },{ value: "_notlike", label: "涓嶅寘鍚�", diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java index 5ffdff1..87a45a3 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java @@ -3,7 +3,7 @@ import net.logstash.logback.encoder.org.apache.commons.lang3.StringEscapeUtils; /** - * + * 鏁版嵁搴撴煡璇㈡椂锛屼竴浜涚壒娈婂瓧绗﹂渶瑕佽浆涔� * @author ludc * @date 2023/12/1 9:16 */ diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSCondition.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSCondition.java index 64b0fc0..c015273 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSCondition.java +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSCondition.java @@ -6,14 +6,18 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.vci.ubcs.starter.web.constant.QueryOptionConstant; import com.vci.ubcs.starter.web.util.VciBaseUtil; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -24,6 +28,11 @@ * @date 2023/6/6 15:26 */ public class UBCSCondition { + + /** + * 绌烘牸 + */ + public static final String SPACE = " "; public UBCSCondition() { } @@ -136,4 +145,90 @@ return qw; } + public static String getWhereSqlByMap(Map<String, String> conditionMap){ + List<String> whereSqlList = new ArrayList<>(); + conditionMap.forEach((key,value)->{ + String sql = ""; + // 涓嶄负绌烘墠鍘绘嫾鎺� + if(!Func.hasEmpty(new Object[]{key, value}) && !key.endsWith("_ignore")){ + if (key.endsWith("_like")) { + String field = UBCSSqlKeyword.getColumn(key, "_like"); + sql = field + SPACE + "LIKE" + SPACE + "'%" + value + "%'" + SPACE; + } else if (key.endsWith("_notequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_notequal"); + sql = field + SPACE + " != " + value + SPACE; + } else if (key.endsWith("_likeleft")) { + String field = UBCSSqlKeyword.getColumn(key, "_likeleft"); + sql = field + SPACE + "LIKE" + SPACE + "%" + value + SPACE; + } else if (key.endsWith("_likeright")) { + String field = UBCSSqlKeyword.getColumn(key, "_likeright"); + sql = field + SPACE + "LIKE" + SPACE + value + "%" + SPACE; + } else if (key.endsWith("_notlike")) { + String field = UBCSSqlKeyword.getColumn(key, "_notlike"); + sql = field + SPACE + "NO LIKE" + SPACE + "%" + value + "%" + SPACE; + } else if (key.endsWith("_ge")) { + String field = UBCSSqlKeyword.getColumn(key, "_ge"); + sql = field + SPACE + " >= " + value + SPACE; + } else if (key.endsWith("_le")) { + //璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓� + String field = UBCSSqlKeyword.getColumn(key, "_le"); + sql = field + SPACE + " <= " + value + "" + SPACE; + } else if (key.endsWith("_gt")) { + String field = UBCSSqlKeyword.getColumn(key, "_gt"); + sql = field + SPACE + "> " + value + SPACE; + } else if (key.endsWith("_lt")) { + String field = UBCSSqlKeyword.getColumn(key, "_lt"); + sql = field + SPACE + "< " + value + SPACE; + } else if (key.endsWith("_datege")) { + String field = UBCSSqlKeyword.getColumn(key, "_datege"); + sql = field + SPACE + ">= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else if (key.endsWith("_dategt")) { + String field = UBCSSqlKeyword.getColumn(key, "_dategt"); + sql = field + SPACE + "> '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else if (key.endsWith("_dateequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); + sql = field + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else if (key.endsWith("_datele")) { + String field = UBCSSqlKeyword.getColumn(key, "_datele"); + sql = field + SPACE + "<= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else if (key.endsWith("_datelt")) { + String field = UBCSSqlKeyword.getColumn(key, "_datelt"); + sql = field + SPACE + "< '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else if (key.endsWith("_null")) { + String field = UBCSSqlKeyword.getColumn(key, "_null"); + sql = field + SPACE + "IS NULL" + SPACE; + } else if (key.endsWith("_notnull")) { + String field = UBCSSqlKeyword.getColumn(key, "_notnull"); + sql = field + SPACE + "IS NOT NULL" + SPACE; + } else if (key.endsWith("_dateequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); + sql = field + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else if (key.endsWith("_equal")) { + String field = UBCSSqlKeyword.getColumn(key, "_equal"); + sql = field + SPACE + "= '" + value + "'" + SPACE; + } else if(key.endsWith("_in")) { + String field = UBCSSqlKeyword.getColumn(key, "_in"); + sql = VciBaseUtil.toInSql(field,value); + } else if(key.endsWith("_notin")) { + String field = UBCSSqlKeyword.getColumn(key, "_notin"); + sql = VciBaseUtil.toInSql(field,value); + } + if(!sql.isEmpty()){ + whereSqlList.add(sql); + } + } + }); + //缁勫悎璧锋潵 + StringBuilder andSb = new StringBuilder(); + whereSqlList.stream().forEach(s -> { + andSb.append(s).append(SPACE).append(QueryOptionConstant.AND).append(SPACE); + }); + String andString = andSb.toString().trim(); + String endWithSql = QueryOptionConstant.AND; + if (andString.endsWith(endWithSql)) { + andString = andString.substring(0, andString.length() - endWithSql.length()); + } + return andString; + } + } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java index 1cfa4d7..57afa21 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java @@ -180,7 +180,6 @@ return R.data(defaultReferTree); } - /** * 榛樿鐨勫弬鐓у垪琛� * @param referConfigVO 鍙傜収鐨勯厤缃俊鎭� @@ -188,7 +187,7 @@ */ @GetMapping("/defaultReferDataGrid") public R<IPage<BaseModelVO>> defaultReferDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject){ - IPage<BaseModelVO> iPage= mdmEngineService.referDataGrid(referConfigVO,baseQueryObject); + IPage<BaseModelVO> iPage = mdmEngineService.referDataGrid(referConfigVO,baseQueryObject); return R.data(iPage); } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java index e9d57f0..83a4683 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java @@ -365,4 +365,5 @@ public R flowingDependencyGen(String classifyOid) { return codeClassifyService.flowingDependencyGen(classifyOid); } + } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java index 077354c..f8e46aa 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java @@ -448,7 +448,7 @@ * @param baseModels 澶勭悊鏁版嵁 * @return 澶勭悊鐘舵�� */ - public R<Integer>updateBatchBtypeDatas(String btmType, List<BaseModel> baseModels); + R<Integer>updateBatchBtypeDatas(String btmType, List<BaseModel> baseModels); /** * 榛樿鍒楄〃 @@ -490,7 +490,7 @@ * 鏍¢獙鍏抽敭灞炴�� * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅 */ - public List<Map> checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) ; + List<Map> checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) ; /** * 鏍规嵁褰撳墠鐢宠缂栫爜鐨勫垎绫伙紝閫愬眰寰�涓婃牎楠屾槸鍚︾鍚堝睘浜庨厤缃殑涓殑鍒嗙被瀛愯妭鐐圭殑鍒� diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java index f2d1d0b..ad4b63b 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java @@ -750,7 +750,6 @@ */ @Override public R flowingDependencyGen(String classifyOid) { - //鏌ヨ姝ゅ垎绫讳笅闈㈢殑鎵�鏈夊垎绫� List<CodeClassify> codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(classifyOid,AuthUtil.getTenantId(),null); //鏌ヨ鐮佸�艰〃锛岃幏鍙栨渶澶ф祦姘� @@ -758,6 +757,17 @@ .map(classfiy -> classfiy.getOid()).collect(Collectors.joining("','")) + "'","'${sav}'"); //寰�娴佹按琛ㄩ噷闈㈠姞鏁版嵁锛屾湁鍒欐洿鏂帮紝鏃犲垯娣诲姞鏁版嵁銆� for (CodeAllCode codeAllCodeVO : codeAllCodeVOS) { + if(Func.isEmpty(codeAllCodeVO.getSerialUnit())){ + throw new ServiceException("缂栫爜涓猴細" + codeAllCodeVO.getId() + "鐨勭爜鍊兼暟鎹祦姘翠緷璧栦笉鑳戒负绌猴紒"); + } + try { + CodeRuleVO codeRuleVO = codeRuleService.getObjectByOid(codeAllCodeVO.getCodeRuleOid()); + if(Func.isEmpty(codeRuleVO)){ + continue; + } + }catch (Exception e){ + continue; + } QueryWrapper<CodeBasicSec> secWrapper = new QueryWrapper<>(); secWrapper.eq("PKCODERULE",codeAllCodeVO.getCodeRuleOid()); secWrapper.eq("SECTYPE","codeserialsec"); diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java index 9ea8b4d..c536b4f 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java @@ -25,7 +25,6 @@ import com.vci.ubcs.code.vo.pagemodel.UITablePageVO; import com.vci.ubcs.code.vo.pagemodel.*; import com.vci.ubcs.code.wrapper.BaseMdodelWrapper; -import com.vci.ubcs.code.wrapper.CodeAllcodeWrapper; import com.vci.ubcs.flow.core.dto.FlowStatusDTO; import com.vci.ubcs.flow.core.feign.IMDMIFlowAttrClient; import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO; @@ -42,10 +41,7 @@ import com.vci.ubcs.starter.revision.model.TreeQueryObject; import com.vci.ubcs.starter.revision.model.TreeWrapperOptions; import com.vci.ubcs.starter.revision.service.RevisionModelUtil; -import com.vci.ubcs.starter.util.MdmBtmTypeConstant; -import com.vci.ubcs.starter.util.SaveLogUtil; -import com.vci.ubcs.starter.util.SpecialCharacterConverter; -import com.vci.ubcs.starter.util.UBCSSqlKeyword; +import com.vci.ubcs.starter.util.*; import com.vci.ubcs.starter.web.constant.QueryOptionConstant; import com.vci.ubcs.starter.web.constant.RegExpConstant; import com.vci.ubcs.starter.web.enumpck.BooleanEnum; @@ -60,13 +56,12 @@ import com.vci.ubcs.system.feign.ISysClient; import com.vci.ubcs.system.user.entity.User; import com.vci.ubcs.system.user.feign.IUserClient; -import io.swagger.models.auth.In; import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils; import oracle.sql.TIMESTAMP; +import org.hibernate.validator.constraints.NotEmpty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.cache.utils.CacheUtil; -import org.springblade.core.log.annotation.OperateLog; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; @@ -88,8 +83,6 @@ import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; @@ -306,6 +299,7 @@ * 绌烘牸 */ public static final String SPACE = " "; + /** * 缂撳瓨锝嬶絽锝� */ @@ -2522,7 +2516,6 @@ } else { return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE; } - }else { // if (referFieldMap.containsKey(key)) { // //璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝 @@ -4404,7 +4397,7 @@ throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } // TODO:鍙傜収閰嶇疆鐨勬ā绯婃煡璇㈣繃婊ゆ潯浠舵殏鏈鐞� - String namesql = ""; +/* String namesql = ""; if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("name"))) { String s = baseQueryObject.getConditionMap().get("name"); s = "%" + s + "%"; @@ -4421,20 +4414,21 @@ String lcstatusSql = ""; if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("lcstatus"))) { lcstatusSql = "and lcstatus =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lcstatus")); - } + }*/ // String where = ""; // if (StringUtils.isNotBlank(codesql) || StringUtils.isNotBlank(lcstatusSql) || StringUtils.isNotBlank(namesql)) { // where = "where "; // } + String whereSqlByMap = UBCSCondition.getWhereSqlByMap(baseQueryObject.getConditionMap()); - String num1 = baseQueryObject.getPage() * baseQueryObject.getLimit() + ""; + String num1 = baseQueryObject.getPage() * baseQueryObject.getLimit() + ""; String num2 = ((baseQueryObject.getPage()) - 1) * baseQueryObject.getLimit() + 1 + ""; - List<Map> maps = commonsMapper.selectBySql("select * from ( select rownum rn, t.* from (select * from " + listR.getData().get(0).getTableName() + SPACE + List<Map> maps = commonsMapper.selectBySql("select * from (select rownum rn, t.* from (select * from " + listR.getData().get(0).getTableName() + SPACE + (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId()) ? (" where lastr = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastr").toString()) - + " and lastv =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 " - + lcstatusSql + namesql + codesql + ") t "+ (baseQueryObject.getLimit()==-1?")": ("where rownum <=" + num1 + ") where rn >=" + num2) + + " and lastv =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 and " + + whereSqlByMap + ") t "+ (baseQueryObject.getLimit()==-1?")": ("where rownum <=" + num1 + ") where rn >=" + num2) )); List<BaseModel> baseModels = new ArrayList<>(); //灏嗘煡璇㈠埌鐨勬暟鎹浆鎹负basemodel锛屼娇鐢ㄧ殑鍙嶅皠鏂瑰紡鏉ヨ繘琛屽垱寤虹殑 @@ -4482,8 +4476,8 @@ } int total = commonsMapper.queryCountBySql("select count(*) from " + listR.getData().get(0).getTableName() + SPACE + (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId()) ? (" where lastr = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastr").toString()) - + "and lastv = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 " - + lcstatusSql + namesql + codesql + + "and lastv = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 and " + + whereSqlByMap ); IPage<BaseModelVO> objectDataGrid = new Page<>(); objectDataGrid.setPages(baseQueryObject.getPage()); diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeALlCodeMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeALlCodeMapper.xml index bed4943..6b61fbb 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeALlCodeMapper.xml +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeALlCodeMapper.xml @@ -10,8 +10,7 @@ select * from PL_CODE_ALLCODE </select> <select id="selectGroupByClassify" resultMap="CodeAllcodeResultMap"> - select codeClassifyOid, - codeRuleOid, + select codeRuleOid, serialUnit, nvl(max(unFillSerial),0) unFillSerial from (select codeClassifyOid, @@ -19,7 +18,7 @@ serialUnit, to_number(replace(unFillSerial, ${replaceString}, '')) unFillSerial from PL_CODE_ALLCODE where codeClassifyOid in (${codeClassifyOid})) - group by codeClassifyOid, codeRuleOid, serialUnit + group by codeRuleOid, serialUnit </select> </mapper> -- Gitblit v1.9.3