¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.vci.ubcs.code.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; |
| | | import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO; |
| | | import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; |
| | | import com.vci.ubcs.code.constant.MdmBtmTypeConstant; |
| | | import com.vci.ubcs.code.dto.CodeDeleteBatchDTO; |
| | | import com.vci.ubcs.code.dto.CodeOrderDTO; |
| | | import com.vci.ubcs.code.dto.datapush.BaseModelDTO; |
| | | import com.vci.ubcs.code.entity.*; |
| | | import com.vci.ubcs.code.enumpack.*; |
| | | import com.vci.ubcs.code.mapper.CodeAllCodeMapper; |
| | | import com.vci.ubcs.code.mapper.CodeOsbtmtypeMapper; |
| | | import com.vci.ubcs.code.mapper.CodeWupinMapper; |
| | | import com.vci.ubcs.code.mapper.CommonsMapper; |
| | | import com.vci.ubcs.code.service.*; |
| | | import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO; |
| | | import com.vci.ubcs.code.vo.pagemodel.*; |
| | | import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO; |
| | | import com.vci.ubcs.code.vo.pagemodel.UITablePageVO; |
| | | import com.vci.ubcs.starter.exception.VciBaseException; |
| | | import com.vci.ubcs.starter.revision.model.TreeWrapperOptions; |
| | | import com.vci.ubcs.starter.revision.service.RevisionModelUtil; |
| | | import com.vci.ubcs.starter.web.constant.QueryOptionConstant; |
| | | import com.vci.ubcs.starter.web.constant.RegExpConstant; |
| | | import com.vci.ubcs.starter.web.enumpck.BooleanEnum; |
| | | import com.vci.ubcs.starter.web.enumpck.UserSecretEnum; |
| | | import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; |
| | | import com.vci.ubcs.starter.web.pagemodel.*; |
| | | import com.vci.ubcs.starter.web.toolmodel.DateConverter; |
| | | import com.vci.ubcs.starter.web.util.VciBaseUtil; |
| | | import com.vci.ubcs.starter.web.util.VciDateUtil; |
| | | import com.vci.ubcs.starter.web.util.VciQueryWrapperForDO; |
| | | import com.vci.ubcs.starter.web.util.WebUtil; |
| | | import com.vci.ubcs.system.entity.DictBiz; |
| | | import com.vci.ubcs.system.feign.IDictBizClient; |
| | | import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.Serializable; |
| | | import java.util.*; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST; |
| | | import static com.vci.ubcs.code.constant.MdmEngineConstant.*; |
| | | import static com.vci.ubcs.starter.web.constant.EnumIdConstant.LC_STATUS_SUBFIX; |
| | | |
| | | /** |
| | | * ä¸»æ°æ®å¼ææå¡ |
| | | * |
| | | * @author weidy |
| | | * @date 2022-2-22 |
| | | */ |
| | | @Service |
| | | public class MdmEngineServiceImpl extends ServiceImpl<CodeWupinMapper, CodeWupinEntity> implements MdmEngineService { |
| | | |
| | | |
| | | /** |
| | | * 模æ¿çæå¡ |
| | | */ |
| | | @Resource |
| | | private CodeClstemplateServiceImpl templateService; |
| | | /** |
| | | * 模æ¿çæå¡ |
| | | */ |
| | | @Resource |
| | | private CodeOsbtmtypeMapper codeOsbtmtypeMapper; |
| | | @Resource |
| | | private CodeOsattributeServiceImpl attributeService; |
| | | /** |
| | | * çæç¼ç çæå¡ |
| | | */ |
| | | @Resource |
| | | private MdmProductCodeService productCodeService; |
| | | /** |
| | | * åå
¸çæå¡ |
| | | */ |
| | | @Resource |
| | | IDictBizClient iDictBizClient; |
| | | /** |
| | | * å
¬å¼çæå¡ |
| | | */ |
| | | @Autowired |
| | | private FormulaServiceImpl formulaService; |
| | | |
| | | /** |
| | | * ç¸ä¼¼é¡¹æ¥è¯¢è§å |
| | | */ |
| | | @Autowired |
| | | private ICodeResembleRuleService resembleRuleService; |
| | | |
| | | /** |
| | | * 对象çæä½ |
| | | */ |
| | | @Autowired |
| | | private RevisionModelUtil revisionModelUtil; |
| | | |
| | | /** |
| | | * é¶æ®µçæå¡ |
| | | */ |
| | | @Autowired |
| | | private ICodePhaseAttrService phaseAttrService; |
| | | // |
| | | /** |
| | | * éç¨æ¥è¯¢ |
| | | */ |
| | | @Resource |
| | | CommonsMapper commonsMapper; |
| | | |
| | | @Resource |
| | | CodeWupinMapper codeWupinMapper; |
| | | /** |
| | | * ç¼ç è§åçæå¡ |
| | | */ |
| | | @Autowired |
| | | private ICodeRuleService ruleService; |
| | | /** |
| | | * ç¼ç è§åçæå¡ |
| | | */ |
| | | @Autowired |
| | | private ICodeAllCodeService codeAllCodeService; |
| | | |
| | | /** |
| | | * åç±»ç å¼çæå¡ |
| | | */ |
| | | @Autowired |
| | | private ICodeClassifyValueService classifyValueService; |
| | | |
| | | /** |
| | | * åç±»çæå¡ |
| | | */ |
| | | @Resource |
| | | private ICodeClassifyService classifyService; |
| | | |
| | | /** |
| | | * æ¨¡æ¿æé®æå¡ |
| | | */ |
| | | @Autowired |
| | | private ICodeClassifyTemplateButtonService templateButtonService; |
| | | // /** |
| | | // * ç¨æ·æ¥è¯¢çæå¡,éè¦é®ä¸ä¸æ¯å¦éè¦éåï¼ä½¿ç¨æ¥è¯¢æ¤å¹³å°çç¨æ·è¡¨ |
| | | // */ |
| | | // @Autowired |
| | | // private SmUserQueryServiceI userQueryService; |
| | | |
| | | /** |
| | | * å
³é®å±æ§çé
ç½® |
| | | */ |
| | | @Autowired |
| | | private ICodeKeyAttrRepeatService keyRuleService; |
| | | /** |
| | | * æ¥å¿ |
| | | */ |
| | | private Logger logger = LoggerFactory.getLogger(getClass()); |
| | | |
| | | /** |
| | | * ç©ºæ ¼ |
| | | */ |
| | | public static final String SPACE = " "; |
| | | |
| | | /** |
| | | * å¯çº§çåæ®µ |
| | | */ |
| | | public static final String SECRET_FILED = "secretgrade"; |
| | | /** |
| | | * ç¨æ·æ°å¢æ°æ®çæ¶åå¯ä»¥æ¥ççå¯çº§ |
| | | */ |
| | | public static final String MY_DATA_SECRET = "myDataSecret"; |
| | | /** |
| | | * æ·è´ççæ¬ |
| | | */ |
| | | public static final String COPY_FROM_VERSION = "copyfromversion"; |
| | | /** |
| | | * åªæ¯sql |
| | | */ |
| | | public static final String ONLY = "${vcionly}"; |
| | | |
| | | /** |
| | | * é»è®¤çæ¶é´æ ¼å¼ |
| | | */ |
| | | private static final String DATETIME_FORMAT = "yyyy-mm-dd hh24:mi:ss"; |
| | | |
| | | /** |
| | | * æ¥ææ ¼å¼ |
| | | */ |
| | | private static final String DATE_FORMAT = "yyyy-mm-dd"; |
| | | |
| | | /** |
| | | * å¿
è¾ |
| | | */ |
| | | public static final String REQUIRED_CHAR = "*"; |
| | | /** |
| | | * æ¿æ¢å符 |
| | | */ |
| | | public static final String SPECIAL_CHAR = "VCI"; |
| | | // @Autowired |
| | | // private CodeOsbtmtypeMapper codeOsbtmtypeMapper;---- |
| | | |
| | | |
| | | |
| | | /** |
| | | * 使ç¨åç±»ç主é®è·åå¯ä»¥ä½¿ç¨ç模æ¿å¯¹è±¡ |
| | | * |
| | | * @param codeClassifyOid åç±»çä¸»é® |
| | | * @return 模æ¿çæ¾ç¤ºå¯¹è±¡ |
| | | */ |
| | | @Override |
| | | public CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid) { |
| | | return getUsedTemplateByClassifyOid(codeClassifyOid, true); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨åç±»ç主é®è·åå¯ä»¥ä½¿ç¨ç模æ¿å¯¹è±¡ |
| | | * |
| | | * @param codeClassifyOid åç±»çä¸»é® |
| | | * @param hasAttr å
å«å±æ§ |
| | | * @return 模æ¿çæ¾ç¤ºå¯¹è±¡ |
| | | */ |
| | | @Override |
| | | public CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr) { |
| | | List<CodeClassifyTemplateVO> templateVOs = templateService.listReleaseTemplateByClassifyOid(codeClassifyOid, hasAttr); |
| | | return templateVOs.get(templateVOs.size() - 1); |
| | | } |
| | | |
| | | /** |
| | | * è·åæä¸¾ç䏿é项 |
| | | * |
| | | * @param attrVO 模æ¿å±æ§ç对象 |
| | | * @return 䏿é项 |
| | | */ |
| | | @Override |
| | | public List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO) { |
| | | List<KeyValue> comboboxKVs = null; |
| | | if (StringUtils.isNotBlank(attrVO.getEnumString())) { |
| | | comboboxKVs = JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class); |
| | | } else { |
| | | // comboboxKVs = enumService.getEnum(attrVO.getEnumid()); |
| | | // Dict dict = new Dict(); |
| | | // dict.setParentId(Long.valueOf(attrVO.getEnumid())); |
| | | R<List<DictBiz>> list = iDictBizClient.getList(attrVO.getEnumId()); |
| | | if(list.isSuccess()){ |
| | | for (DictBiz datum : list.getData()) { |
| | | KeyValue keyValue = new KeyValue(); |
| | | keyValue.setKey(datum.getDictKey()); |
| | | keyValue.setValue(datum.getDictValue()); |
| | | comboboxKVs.add(keyValue); |
| | | } |
| | | } |
| | | } |
| | | return comboboxKVs; |
| | | } |
| | | /** |
| | | * ä¿®æ¹ç¶æ |
| | | * |
| | | * @param baseModelDTO æ°æ®ä¼ è¾å¯¹è±¡ |
| | | */ |
| | | @Override |
| | | public void changeStatus(BaseModelDTO baseModelDTO) { |
| | | VciBaseUtil.alertNotNull(baseModelDTO, "æ°æ®ä¿¡æ¯", baseModelDTO.getOid(), "主é®", baseModelDTO.getBtmname(), "ä¸å¡ç±»å", baseModelDTO.getLcStatus(), "ç®æ ç¶æ"); |
| | | List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid()); |
| | | // List<ClientBusinessObject> cboList = boService.selectCBOByOidCollection(oids, baseModelDTO.getBtmname()); |
| | | //æä¸ªç¹ ä¸å¡ç±»å宿åéè¦ä¿®æ¹ |
| | | QueryWrapper<CodeOsbtmtypeEntity> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("BTMNAME",baseModelDTO.getBtmname()); |
| | | wrapper.in("OID",oids); |
| | | List<CodeOsbtmtypeEntity> cboList = codeOsbtmtypeMapper.selectList(wrapper); |
| | | //è¿éè¦ä¿®æ¹allCodeççå½å¨æ |
| | | // Map<String, String> conditionMap = new HashMap<>(); |
| | | QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>(); |
| | | allCodeWrapper.eq("createcodebtm",baseModelDTO.getBtmname()); |
| | | allCodeWrapper.in("createcodeoid",oids); |
| | | // conditionMap.put("createcodeoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")"); |
| | | // conditionMap.put("createcodebtm", baseModelDTO.getBtmname()); |
| | | List<CodeAllCode> codeCbos = codeAllCodeService.selectByWrapper(allCodeWrapper); |
| | | // List<ClientBusinessObject> codeCbos = boService.queryCBO(MdmBtmTypeConstant.CODE_ALL_CODE, conditionMap); |
| | | // åæ¶éè¦ä¸å¡æ°æ®å é¤ |
| | | if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) { |
| | | // BatchCBO batchCBO = new BatchCBO(); |
| | | // batchCBO.getDeleteCbos().addAll(cboList); |
| | | codeOsbtmtypeMapper.deleteBatchIds(cboList); |
| | | // boService.persistenceBatch(batchCBO); |
| | | } else { |
| | | // lifeCycleService.transCboStatus(cboList, baseModelDTO.getLcStatus()); |
| | | } |
| | | // lifeCycleService.transCboStatus(codeCbos, baseModelDTO.getLcStatus()); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ç³è¯·åä¸ç¼ç |
| | | * |
| | | * @param orderDTO ç³è¯·çä¿¡æ¯ï¼éè¦å
å«å±æ§çå
容åç æ®µç¸å
³çå
容 |
| | | * @return è¿åç¼ç çå
容 |
| | | */ |
| | | @Override |
| | | public String addSaveCode(CodeOrderDTO orderDTO) { |
| | | VciBaseUtil.alertNotNull(orderDTO, "ç¼ç ç³è¯·ç¸å
³ç屿§åç æ®µçå
容é½ä¸ºç©º", orderDTO.getCodeClassifyOid(), "主é¢åºåç±»ç主é®", |
| | | orderDTO.getTemplateOid(), "模æ¿ç主é®", orderDTO.getCodeRuleOid(), "ç¼ç è§åç主é®"); |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); |
| | | CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid()); |
| | | //1.夿è§åä¸é¤äºæµæ°´ç æ®µï¼æ¯å¦æå
¶ä»ç 段 |
| | | checkSecValueOnOrder(ruleVO, orderDTO); |
| | | //2.夿å¿
è¾é¡¹ |
| | | checkRequiredAttrOnOrder(templateVO, orderDTO); |
| | | //3.å
注å
¥ï¼åç»åï¼æåæ ¡éª |
| | | switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); |
| | | //4.å¤çç»åè§åãç»åè§åä¸è½ä½¿ç¨ç¼ç ç屿§ï¼å 为ç¼ç ççæå¯è½æ¯éè¦å±æ§ç |
| | | switchComponentAttrOnOrder(templateVO, orderDTO); |
| | | //5.æ ¡éªè§å |
| | | checkVerifyOnOrder(templateVO, orderDTO); |
| | | //6.å
³é®å±æ§ |
| | | checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); |
| | | //7.æä¸¾è½¬æ¢ |
| | | checkEnumOnOrder(templateVO, orderDTO); |
| | | //8.å¤çæ¶é´æ ¼å¼ï¼å¨æ°æ®åºéé¢ä¸è®ºæ¯åç¬¦ä¸²è¿æ¯æ¥ææ ¼å¼ï¼é½ä½¿ç¨ç¸åçæ ¼å¼åå¨ |
| | | switchDateAttrOnOrder(templateVO, orderDTO); |
| | | //9.çæç¼ç çä¿¡æ¯ |
| | | // ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()); |
| | | CodeWupinEntity cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()); |
| | | // //é»è®¤ç屿§é½ä¸ç¨ä»å端æ·è´ |
| | | // //设置ç¼ç éè¦çé»è®¤å±æ§çå
容 |
| | | copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, false); |
| | | // //TODO:å 为é»è®¤ç屿§é½ä¸æ·è´ï¼ç®åéå¢ç å«nameï¼å¹¶æ²¡æä»DTOæ·è´å°cboéãå¢å ä¸ä¸ªåç¬å¤çï¼ä»¥ååçè¦ä¸è¦è°æ´ |
| | | cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName()); |
| | | // //end -- modify by lihang @20220407 |
| | | List<CodeWupinEntity> cboList = new ArrayList<>(); |
| | | |
| | | //夿³¨ |
| | | cbo.setDescription(orderDTO.getDescription()); |
| | | cboList.add(cbo); |
| | | // |
| | | // cboList.add(cbo); |
| | | List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(),cboList); |
| | | |
| | | |
| | | List<String> charList = new ArrayList<>(); |
| | | for (CodeWupinEntity wupinEntity : cboList) { |
| | | charList.add(wupinEntity.getId()); |
| | | } |
| | | batchSaveSelectChar(templateVO, charList); |
| | | return codeList.size() > 0 ? codeList.get(0) : ""; |
| | | // return null; |
| | | } |
| | | |
| | | /** |
| | | * å¤çå类注å
¥çä¿¡æ¯ |
| | | * |
| | | * @param templateVO 模æ¿çæ¾ç¤ºå¯¹è±¡ï¼å¿
é¡»è¦å模æ¿ç屿§ |
| | | * @param classifyFullInfoBO åç±»çå
¨è·¯å¾ |
| | | * @param orderDTO ç¼ç ç³è¯·çä¿¡æ¯ |
| | | */ |
| | | private void switchClassifyLevelOnOrder(CodeClassifyTemplateVO templateVO, CodeClassifyFullInfoBO classifyFullInfoBO, CodeOrderDTO orderDTO) { |
| | | Map<String,CodeClassifyTemplateAttrVO> classifyAttrVOMap = templateVO.getAttributes().stream().filter( |
| | | s -> StringUtils.isNotBlank(s.getClassifyInvokeAttr()) && StringUtils.isNotBlank(s.getClassifyInvokeLevel()) |
| | | ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); |
| | | if (classifyFullInfoBO.getTopClassifyVO() == null) { |
| | | //éè¦éæ°æ¥è¯¢ä¸ä¸ï¼å 为è¿ä¸ªæ¯æå®çåç±»è¿æ¥ç |
| | | } |
| | | if (!CollectionUtils.isEmpty(classifyAttrVOMap)) { |
| | | classifyAttrVOMap.forEach((attrId, attrVO) -> { |
| | | //å类注å
¥çç¼å·æè
åç§°ï¼ |
| | | //å±çº§å
嫿å®å±åæå°å± |
| | | CodeClassifyVO classifyVO = null; |
| | | if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyInvokeLevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyInvokeLevel())) { |
| | | //æå®äºå±çº§ç |
| | | //注æï¼å 为æ¥è¯¢ä¸çº§åç±»åºæ¥çå±çº§æ¯ååºçï¼å³é¡¶å±èç¹æ¯æå¤§çå¼ |
| | | List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList()); |
| | | int level = VciBaseUtil.getInt(attrVO.getClassifyInvokeLevel()); |
| | | if (classifyVOS.size() >= level && level > 0) { |
| | | classifyVO = classifyVOS.get(level - 1); |
| | | } |
| | | } else { |
| | | //å½åçåç±» |
| | | classifyVO = classifyFullInfoBO.getCurrentClassifyVO(); |
| | | } |
| | | if (classifyVO == null) { |
| | | //说æå±çº§æè¯¯ |
| | | orderDTO.getData().put(attrId, "åç±»æ 䏿²¡æå±çº§[" + attrVO.getClassifyInvokeLevel() + "]"); |
| | | // classifyVO = classifyFullInfoBO.getCurrentClassifyVO(); |
| | | } else { |
| | | Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO); |
| | | String value = classifyDataMap.getOrDefault(attrVO.getClassifyInvokeAttr(), ""); |
| | | orderDTO.getData().put(attrId, value); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 夿ç¼ç çç æ®µæ¯å¦è¾å
¥æè
éæ©äºç å¼ |
| | | * |
| | | * @param ruleVO è§åçæ¾ç¤ºå¯¹è±¡ |
| | | * @param orderDTO ç¼ç ç³è¯·çå
容 |
| | | */ |
| | | @Override |
| | | public void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO) { |
| | | List<String> unSerialSecOidList = ruleVO.getSecVOList().stream().filter( |
| | | s -> !(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(s.getSecType()) |
| | | || CodeSecTypeEnum.CODE_ATTR_SEC.getValue().equalsIgnoreCase(s.getSecType()) |
| | | || CodeSecTypeEnum.CODE_DATE_SEC.getValue().equalsIgnoreCase(s.getSecType()) |
| | | || CodeSecTypeEnum.CODE_LEVEL_SEC.getValue().equalsIgnoreCase(s.getSecType()) |
| | | || VciBaseUtil.getBoolean(s.getNullableFlag())) |
| | | ).map(CodeBasicSecVO::getOid).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(unSerialSecOidList)) { |
| | | if (CollectionUtils.isEmpty(orderDTO.getSecDTOList())) { |
| | | throw new VciBaseException("éæµæ°´ç æ®µ(æè
å¿
è¾ç 段ï¼å¿
é¡»è¦è¾å
¥(æéæ©)ç å¼"); |
| | | } |
| | | if (orderDTO.getSecDTOList().stream().anyMatch(s -> !unSerialSecOidList.contains(s.getSecOid()) |
| | | && StringUtils.isBlank(s.getSecValue()))) { |
| | | throw new VciBaseException("éæµæ°´ç æ®µ(æè
å¿
è¾ç 段ï¼å¿
é¡»è¦è¾å
¥(æéæ©)ç å¼"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªå±æ§æ¯å¦ä¸ºå¿
è¾ |
| | | * |
| | | * @param templateVO 模æ¿çæ¾ç¤ºå¯¹è±¡ï¼éè¦å
嫿¨¡æ¿å±æ§ |
| | | * @param orderDTO ç¼ç ç³è¯·çä¿¡æ¯ |
| | | */ |
| | | private void checkRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { |
| | | |
| | | Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter( |
| | | s -> VciBaseUtil.getBoolean(s.getRequireFlag()) && StringUtils.isBlank(s.getComponentRule()) |
| | | && StringUtils.isBlank(s.getClassifyInvokeAttr())) |
| | | .collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); |
| | | if (!CollectionUtils.isEmpty(requiredAttrMap)) { |
| | | requiredAttrMap.forEach((attrId, attrVO) -> { |
| | | //åªæä¼ä¸ç¼ç ï¼ç¶æï¼å¤æ³¨ï¼æ¨¡æ¿ä¸»é®ï¼å类主é®è¿å 个æ¯åºå®çï¼å
¶ä½é½æ¯èªè¡é
ç½®ç |
| | | if (StringUtils.isBlank(getValueFromOrderDTO(orderDTO, attrId))) { |
| | | throw new VciBaseException("屿§ã{0}ãå¿
é¡»è¦è¾å
¥(éæ©)å
容", new String[]{attrVO.getName()}); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * ä»ç¼ç ç³è¯·ä¿¡æ¯å¯¹è±¡ä¸è·åæä¸ªå±æ§çå¼ |
| | | * |
| | | * @param orderDTO ç¼ç ç³è¯·å¯¹è±¡ |
| | | * @param attrId 屿§çç¼å· |
| | | * @return å¼ |
| | | */ |
| | | private String getValueFromOrderDTO(CodeOrderDTO orderDTO, String attrId) { |
| | | attrId = attrId.toLowerCase(Locale.ROOT); |
| | | String value = null; |
| | | if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) { |
| | | value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO)); |
| | | } else { |
| | | //è¯´ææ¯èªè¡é
ç½®ç |
| | | //å端å¿
é¡»è¦ä¼ éå°åç屿§ |
| | | value = orderDTO.getData().getOrDefault(attrId, ""); |
| | | } |
| | | return value; |
| | | } |
| | | |
| | | /** |
| | | * 转æ¢ç»åè§åçå¼ |
| | | * |
| | | * @param templateVO 模æ¿çæ¾ç¤ºå¯¹è±¡ï¼éè¦å
嫿¨¡æ¿å±æ§ |
| | | * @param orderDTO ç¼ç ç³è¯·çä¿¡æ¯ |
| | | */ |
| | | private void switchComponentAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { |
| | | Map<String, CodeClassifyTemplateAttrVO> compAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getComponentRule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); |
| | | if (!CollectionUtils.isEmpty(compAttrVOMap)) { |
| | | Map<String, String> dataMap = WebUtil.objectToMapString(orderDTO); |
| | | |
| | | Map<String, String> dataLowMap = new HashMap<>(); |
| | | if (!CollectionUtils.isEmpty(dataMap)) { |
| | | dataMap.forEach((key, value) -> { |
| | | dataLowMap.put(key.toLowerCase(Locale.ROOT), value); |
| | | }); |
| | | } |
| | | dataLowMap.putAll(orderDTO.getData()); |
| | | compAttrVOMap.forEach((attrId, attrVO) -> { |
| | | dataLowMap.put(attrId, formulaService.getValueByFormula(dataLowMap, attrVO.getComponentRule())); |
| | | }); |
| | | dataLowMap.forEach((key, value) -> { |
| | | setValueToOrderDTO(orderDTO, key, value); |
| | | }); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 设置æ°çå¼å°ç³è¯·å¯¹è±¡ä¸ |
| | | * |
| | | * @param orderDTO ç¼ç ç³è¯·å¯¹è±¡ |
| | | * @param attrId 屿§çç¼å· |
| | | * @param value å¼ |
| | | */ |
| | | private void setValueToOrderDTO(CodeOrderDTO orderDTO, String attrId, String value) { |
| | | attrId = attrId.toLowerCase(Locale.ROOT); |
| | | if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) { |
| | | WebUtil.setValueToField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO, value); |
| | | } else { |
| | | orderDTO.getData().put(attrId, value); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªæ£åè¡¨è¾¾å¼æ¯å¦æ£ç¡® |
| | | * |
| | | * @param templateVO 模æ¿çä¿¡æ¯ï¼å¿
é¡»å
å«å±æ§çå
容 |
| | | * @param orderDTO ç¼ç ç³è¯·çç¸å
³çä¿¡æ¯ |
| | | */ |
| | | private void checkVerifyOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { |
| | | Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getVerifyRule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); |
| | | if (!CollectionUtils.isEmpty(verifyAttrVOMap)) { |
| | | verifyAttrVOMap.forEach((attrId, attrVO) -> { |
| | | String value = getValueFromOrderDTO(orderDTO, attrId); |
| | | if (StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyRule())) { |
| | | //æ ¡éªæ£åè¡¨è¾¾å¼ |
| | | throw new VciBaseException("屿§[{0}]çå¼ä¸ç¬¦åæ ¡éªè§åçè¦æ±", new String[]{attrVO.getName()}); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªå
³é®å±æ§ |
| | | * |
| | | * @param classifyFullInfo åç±»çå
¨é¨ä¿¡æ¯ |
| | | * @param templateVO 模æ¿çå
容ï¼å¿
é¡»å
嫿¨¡æ¿å±æ§ |
| | | * @param orderDTO ç¼ç ç³è¯·çç¸å
³çä¿¡æ¯ |
| | | */ |
| | | private void checkKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { |
| | | //å
è·åå
³é®å±æ§çè§åï¼ä¹å©ç¨ç»§æ¿çæ¹å¼ |
| | | CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo); |
| | | //注æçæ¯keyRuleVOå¯è½ä¸ºç©ºï¼è¡¨ç¤ºä¸ä½¿ç¨è§åæ§å¶ |
| | | //è·åææçå
³é®å±æ§ |
| | | Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); |
| | | Map<String, String> conditionMap = new HashMap<>(); |
| | | boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag()); |
| | | //å
¨é¨å»ç©ºçä¼å
级大äºå»ç©º |
| | | boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag()); |
| | | boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag()); |
| | | boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag()); |
| | | ketAttrMap.forEach((attrId, attrVO) -> { |
| | | String value = getValueFromOrderDTO(orderDTO, attrId); |
| | | if (value == null) { |
| | | value = ""; |
| | | } |
| | | wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap); |
| | | }); |
| | | |
| | | //没æéå¶åç±»ï¼ä½æ¯ä¸ä¸ªæ¨¡æ¿åªå¯è½å¨ä¸ä¸ªä¸å¡ç±»åéé¢ï¼æä»¥ç´æ¥æ¥è¯¢è¿ä¸ªä¸å¡ç±»åå³å¯ |
| | | |
| | | if (!CollectionUtils.isEmpty(conditionMap)) { |
| | | final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "}; |
| | | conditionMap.forEach((key, value) -> { |
| | | sql[0] += " and " + key + " = " + value; |
| | | }); |
| | | if (StringUtils.isNotBlank(orderDTO.getOid())) { |
| | | //ä¿®æ¹çæ¶åï¼éè¦æé¤èªå·± |
| | | sql[0] += " and oid != '" + orderDTO.getOid() + "'"; |
| | | } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) { |
| | | sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'"; |
| | | } |
| | | sql[0] += " and islastR = '1' and islastV = '1' "; |
| | | // if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) { |
| | | if (Integer.parseInt(commonsMapper.selectById(sql[0]).get(0)) > 0) { |
| | | String ruleInfoMsg = keyRuleVO == null ? "" : "æ¥è¯¢è§åï¼å»é¤ç©ºæ ¼--{0},忽ç¥å¤§å°å--{1},忽ç¥å
¨åè§--{2},忽ç¥å
¨é¨ç©ºæ ¼--{3}"; |
| | | String[] objs = new String[]{trim ? "æ¯" : "å¦", ignoreCase ? "æ¯" : "å¦", ignoreWidth ? "æ¯" : "å¦", trimAll ? "æ¯" : "å¦"}; |
| | | throw new VciBaseException("æ ¹æ®æ¨å¡«åçå
³é®å±æ§çå
容ï¼ç»åå
³é®å±æ§æ¥è¯¢è§åï¼åç°è¿ä¸ªæ°æ®å·²ç»å¨ç³»ç»ä¸åå¨äºã请修æ£!ã" + ruleInfoMsg, objs); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å°è£
å
³é®å±æ§çæ¥è¯¢è¯å¥ |
| | | * |
| | | * @param value å½åçå¼ |
| | | * @param keyRuleVO å
³é®å±æ§çæ§å¶è§åï¼å¯ä»¥ä¸ºç©º |
| | | * @param attrId 屿§çç¼å· |
| | | * @param trim æ¯å¦å»é¤ç©ºæ ¼ |
| | | * @param ignoreCase æ¯å¦ä¸åºå大å°å |
| | | * @param ignoreWidth æ¯å¦å¿½ç¥å
¨åè§ |
| | | * @param trimAll æ¯å¦å¿½ç¥å
¨é¨ç©ºæ ¼ |
| | | * @param conditionMap æ¥è¯¢æ¡ä»¶ |
| | | */ |
| | | @Override |
| | | public void wrapperKeyAttrConditionMap(String value, CodeKeyAttrRepeatVO keyRuleVO, String attrId, |
| | | boolean trim, boolean ignoreCase, boolean ignoreWidth, |
| | | boolean trimAll, Map<String, String> conditionMap) { |
| | | boolean ignoreSpace = trim || trimAll; |
| | | if (StringUtils.isBlank(value)) { |
| | | //ä¸ºç©ºçæ¶åï¼ä¸è½ç¨QueryOperation.ISNULLï¼å¹³å°ä¸ç¥é奿¶åä¸å¤çè¿ç§äº |
| | | conditionMap.put("t."+attrId, "null"); |
| | | } else { |
| | | if (keyRuleVO != null) { |
| | | String queryKey = ""; |
| | | String queryValue = ""; |
| | | |
| | | String temp = ""; |
| | | if (ignoreCase && ignoreSpace && ignoreWidth) { |
| | | //忽ç¥å¤§å°åï¼ä¸å»ç©ºï¼å¿½ç¥å
¨åè§ |
| | | temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte(%s)) " + (trimAll ? ",' ','')" : ")"); |
| | | } else if (ignoreCase && ignoreSpace && !ignoreWidth) { |
| | | //忽ç¥å¤§å°åãå»ç©ºãä¸å¿½ç¥å
¨åè§ |
| | | temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")"); |
| | | } else if (ignoreCase && !ignoreSpace && ignoreWidth) { |
| | | //忽ç¥å¤§å°åãä¸å»ç©ºã忽ç¥å
¨åè§ |
| | | temp = "UPPER(to_single_byte(%s))"; |
| | | } else if (!ignoreCase && ignoreSpace && ignoreWidth) { |
| | | //ä¸å¿½ç¥å¤§å°åãå»ç©ºã忽ç¥å
¨åè§ |
| | | temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte(%s) " + (trimAll ? ",' ','')" : ")"); |
| | | } else if (ignoreCase && !ignoreSpace && !ignoreWidth) { |
| | | //忽ç¥å¤§å°åãä¸å»ç©ºãä¸å¿½ç¥å
¨åè§ |
| | | temp = "UPPER(%s)"; |
| | | } else if (!ignoreCase && !ignoreCase && ignoreWidth) { |
| | | //ä¸å¿½ç¥å¤§å°åãä¸å»ç©ºã忽ç¥å
¨åè§ |
| | | temp = "to_single_byte(%s)"; |
| | | } else if (!ignoreCase && ignoreSpace && !ignoreWidth) { |
| | | //ä¸å¿½ç¥å¤§å°åãå»ç©ºãä¸å¿½ç¥å
¨åè§ |
| | | temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")"); |
| | | } else if (!ignoreCase && !ignoreSpace && !ignoreWidth) { |
| | | //ä¸å¿½ç¥å¤§å°åãä¸å»ç©ºãä¸å¿½ç¥å
¨åè§ |
| | | temp = "%s"; |
| | | } |
| | | queryKey = String.format(temp, "t."+attrId); |
| | | queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'"); |
| | | conditionMap.put(queryKey, queryValue); |
| | | } else { |
| | | //ä¸ºç©ºçæ¶åä¸ä»£è¡¨ä¸æ ¡éªï¼åªæ¯ä¸å»é¤ç¸å
³çä¿¡æ¯ |
| | | conditionMap.put("t."+attrId, value); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªæä¸¾çå
容 |
| | | * |
| | | * @param templateVO 模æ¿çæ¾ç¤ºå¯¹è±¡ï¼éè¦å
å«å±æ§ |
| | | * @param orderDTO ç¼ç ç³è¯·çä¿¡æ¯ |
| | | */ |
| | | private void checkEnumOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { |
| | | //妿æä¸¾å¯ä»¥ä¿®æ¹ï¼åä¸éè¦æ ¡éªæ¯å¦ç¬¦åæä¸¾çé项 |
| | | |
| | | Map<String, CodeClassifyTemplateAttrVO> enumAttrVOMap = templateVO.getAttributes().stream().filter(s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumId())) && !VciBaseUtil.getBoolean(s.getEnumEditFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); |
| | | if (!CollectionUtils.isEmpty(enumAttrVOMap)) { |
| | | enumAttrVOMap.forEach((attrId, attrVO) -> { |
| | | String value = getValueFromOrderDTO(orderDTO, attrId); |
| | | if (StringUtils.isNotBlank(value)) { |
| | | //æå¼æè½æ ¡éª |
| | | List<KeyValue> comboboxKVs = listComboboxItems(attrVO); |
| | | if (!comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getKey()))) { |
| | | throw new VciBaseException("屿§ã{0}ãçå¼ä¸ç¬¦åæä¸¾çè¦æ±", new String[]{attrVO.getName()}); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è½¬æ¢æ¶é´çæ ¼å¼ |
| | | * |
| | | * @param templateVO 模æ¿çæ¾ç¤ºå¯¹è±¡ï¼éè¦å
å«å±æ§ |
| | | * @param orderDTO ç¼ç ç³è¯·çä¿¡æ¯ |
| | | */ |
| | | private void switchDateAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { |
| | | Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getCodeDateFormat())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); |
| | | if (!CollectionUtils.isEmpty(dateAttrVOMap)) { |
| | | dateAttrVOMap.forEach((attrId, attrVO) -> { |
| | | String value = getValueFromOrderDTO(orderDTO, attrId); |
| | | if (StringUtils.isNotBlank(value)) { |
| | | DateConverter dateConverter = new DateConverter(); |
| | | dateConverter.setAsText(value); |
| | | value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat); |
| | | setValueToOrderDTO(orderDTO, attrId, value); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ·è´æ°æ®å°cboå¯¹è±¡ä¸ |
| | | * |
| | | * @param classifyFullInfo åç±»çå
¨é¨ä¿¡æ¯ |
| | | * @param cbo ä¸å¡æ°æ® |
| | | * @param orderDTO ç¼ç ç³è¯·çä¿¡æ¯ |
| | | * @param templateVO 模æ¿çæ¾ç¤ºå¯¹è±¡ |
| | | * @param edit æ¯å¦ä¸ºä¿®æ¹ |
| | | */ |
| | | private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, CodeWupinEntity cbo, |
| | | CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO, |
| | | boolean edit) { |
| | | String fullPath = ""; |
| | | if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) { |
| | | fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))) |
| | | .map(CodeClassifyVO::getOid).collect(Collectors.joining("##")); |
| | | } else { |
| | | fullPath = classifyFullInfo.getCurrentClassifyVO().getOid(); |
| | | } |
| | | |
| | | // BeanUtils. |
| | | BeanUtils.copyProperties(orderDTO.getData(),cbo); |
| | | cbo.setMaterialtype(Short.valueOf("1001")); |
| | | // orderDTO.getData().forEach((key, value) -> { |
| | | // if (!edit || (!checkUnAttrUnEdit(key) && |
| | | // !VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) { |
| | | // try { |
| | | // cbo.setAttributeValue(key, value); |
| | | // } catch (Exception e) { |
| | | // logger.error("è®¾ç½®å±æ§çå¼é误", e); |
| | | // } |
| | | // } |
| | | // }); |
| | | try { |
| | | |
| | | cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid()); |
| | | cbo.setCodetemplateoid(templateVO.getOid()); |
| | | cbo.setCodeclsfpath(fullPath); |
| | | // cbo.setMaterialclassify("model_type"); |
| | | // cbo.setMaterialname(orderDTO.getData().get("materialname")); |
| | | // cbo.setShifoupihaoguanli("true"); |
| | | // cbo.setKucunwl("true"); |
| | | // cbo.setXiaoshouwl("false"); |
| | | if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) { |
| | | //æ¾çå½å¨æçèµ·å§ç¶æï¼æä¸ªç¹ï¼ççå½å¨ææ¯å¦éè¦å建 |
| | | if (StringUtils.isNotBlank(cbo.getLctid())) { |
| | | // OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctid()); |
| | | // if (lifeCycleVO != null) { |
| | | // cbo.setLcStatus("Editing"); |
| | | //// cbo.setLcStatus(lifeCycleVO.getStartStatus()); |
| | | // } else { |
| | | cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); |
| | | // } |
| | | } else { |
| | | cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); |
| | | } |
| | | |
| | | } |
| | | |
| | | int secret = VciBaseUtil.getInt(cbo.getSecretGrade().toString()); |
| | | //æä¸ªç¹ï¼åç»çå¯çº§æå¡æ¯å¦å¯ç¨ |
| | | // if (secret == 0 || !secretService.checkDataSecret(secret)) { |
| | | if (secret == 0 ) { |
| | | Integer userSecret = VciBaseUtil.getCurrentUserSecret(); |
| | | // cbo.setAttributeValue(SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret)); |
| | | cbo.setSecretGrade(userSecret == null || userSecret == 0 ? UserSecretEnum.NONE.getValue() : userSecret); |
| | | } |
| | | } catch (Throwable e) { |
| | | logger.error("设置é»è®¤ç屿§çå¼é误", e); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * åå§åä¸å¡ç±»å |
| | | * --å建人é»è®¤ä¸ºå½åç¨æ·ï¼å¦æéè¦ä¿®æ¹ï¼å¯ä»¥å¨è·ååèªè¡å¤ç |
| | | * @param btmName ä¸å¡ç±»åçåç§°ï¼ä¼èªå¨åæå°å |
| | | * @return CodeWupinEntity |
| | | * @throws VciBaseException åå§ååºéçæ¯ä¼æåºå¼å¸¸ |
| | | */ |
| | | @Override |
| | | public CodeWupinEntity createCBOByBtmName(String btmName) |
| | | throws VciBaseException { |
| | | if(btmName!=null){ |
| | | btmName = btmName.trim().toLowerCase(); |
| | | } |
| | | String userid = AuthUtil.getUser().getUserName(); |
| | | // if(!hasCreatedCbos.containsKey(btmName)){ |
| | | // if(StringUtils.isEmpty(userid)){ |
| | | // throw new VciBaseException(msgCodePrefix +"noHasUserid"); |
| | | // } |
| | | // try { |
| | | // hasCreatedCbos.put(btmName, createBusinessObject(btmName)); |
| | | // } catch (Exception e) { |
| | | // logger.error("å建ä¸å¡ç±»å对象",e); |
| | | // throw new VciBaseException(msgCodePrefix + "initBoError",new String[]{btmName}); |
| | | // } |
| | | // } |
| | | // ClientBusinessObject cbo = cloneClientBusinessObject(hasCreatedCbos.get(btmName)); |
| | | |
| | | QueryWrapper<CodeOsbtmtypeEntity> btmWrapper = new QueryWrapper<>(); |
| | | btmWrapper.eq("ID",btmName); |
| | | CodeOsbtmtypeEntity btmTypeVO = codeOsbtmtypeMapper.selectOne(btmWrapper); |
| | | // OsBtmTypeVO btmTypeVO = btmService.getBtmById(boName); |
| | | String userName = AuthUtil.getUser().getUserName(); |
| | | CodeWupinEntity wupinEntity = new CodeWupinEntity(); |
| | | wupinEntity.setOid(null); |
| | | // bo.setRevisionid((new ObjectUtility()).getNewObjectID36()); |
| | | // bo.setNameoid((new ObjectUtility()).getNewObjectID36()); |
| | | wupinEntity.setBtmname(btmName); |
| | | wupinEntity.setLastR(String.valueOf(1)); |
| | | wupinEntity.setFirstR(String.valueOf(1)); |
| | | wupinEntity.setFirstV(String.valueOf(1)); |
| | | wupinEntity.setLastV(String.valueOf(1)); |
| | | wupinEntity.setCreator(userName); |
| | | wupinEntity.setCreateTime(new Date()); |
| | | wupinEntity.setLastModifier(userName); |
| | | wupinEntity.setLastModifyTime(new Date()); |
| | | wupinEntity.setRevisionRule(btmTypeVO.getRevisionruleid()); |
| | | wupinEntity.setVersionRule(String.valueOf(btmTypeVO.getVersionRule())); |
| | | if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){ |
| | | //æä¸ªç¹ï¼éè¦é®åå¥çæ¬é®é¢ï¼å±ç¤ºé»è®¤ä¸º1 |
| | | // OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid()); |
| | | wupinEntity.setRevisionValue("1"); |
| | | } |
| | | |
| | | wupinEntity.setRevisionSeq(1); |
| | | wupinEntity.setVersionSeq(1); |
| | | //æä¸ªç¹ï¼éè¦é®åå¥çæ¬é®é¢ï¼å±ç¤ºé»è®¤ä¸º1 |
| | | wupinEntity.setVersionValue("1"); |
| | | wupinEntity.setLctid("wupinLC"); |
| | | wupinEntity.setLcStatus("Editing"); |
| | | wupinEntity.setId(""); |
| | | wupinEntity.setName(""); |
| | | wupinEntity.setDescription(""); |
| | | wupinEntity.setOwner(userName); |
| | | wupinEntity.setCheckinby(userName); |
| | | wupinEntity.setCopyFromVersion(""); |
| | | wupinEntity.setMaterialtype((short) 1001); |
| | | wupinEntity.setCaigouwl("true"); |
| | | wupinEntity.setShifoupihaoguanli("true"); |
| | | wupinEntity.setKucunwl("true"); |
| | | wupinEntity.setXiaoshouwl("false"); |
| | | wupinEntity.setPassing("true"); |
| | | |
| | | // this.initTypeAttributeValue(wupinEntity,btmTypeVO); |
| | | return wupinEntity; |
| | | |
| | | |
| | | // return cbo; |
| | | } |
| | | |
| | | /** |
| | | * æ¯å¦ä¸ºä¿®æ¹å¿½ç¥ç屿§ |
| | | * @param attrName 屿§çåå |
| | | * @return true 表示åºè¯¥å¿½ç¥ |
| | | */ |
| | | boolean checkUnAttrUnEdit(String attrName){ |
| | | return (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName) |
| | | ||"ts".equalsIgnoreCase(attrName) |
| | | || "lastmodifier".equalsIgnoreCase(attrName) |
| | | || "lastmodifytime".equalsIgnoreCase(attrName) |
| | | || "createtime".equalsIgnoreCase(attrName) |
| | | || "checkintime".equalsIgnoreCase(attrName) |
| | | ||"checkouttime".equalsIgnoreCase(attrName)); |
| | | } |
| | | |
| | | /** |
| | | * ä¿åå¯è¾å¯éçä¿¡æ¯ |
| | | * |
| | | * @param templateVO 模æ¿ç对象 |
| | | * @param cboList æ°æ®çå
容 |
| | | */ |
| | | @Override |
| | | public void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, /*List<ClientBusinessObject> cboList*/ |
| | | List<String> cboList) { |
| | | if (templateVO != null && !CollectionUtils.isEmpty(cboList)) { |
| | | //æ¯å¼æ¥çï¼æä»¥ç´æ¥å¾ªç¯ |
| | | List<CodeClassifyTemplateAttrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryIdentification())).collect(Collectors.toList()); |
| | | |
| | | if (!CollectionUtils.isEmpty(selectAttrVOs)) { |
| | | // SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); |
| | | selectAttrVOs.parallelStream().forEach(attrVO -> { |
| | | List<String> valuesList = cboList; |
| | | // cboList.parallelStream().forEach(cbo -> { |
| | | // String value = cbo.get.getAttributeValue(attrVO.getId()); |
| | | // if (StringUtils.isNotBlank(value)) { |
| | | // valuesList.add(value); |
| | | // } |
| | | // }); |
| | | if (!CollectionUtils.isEmpty(valuesList)) { |
| | | for (String s : valuesList) { |
| | | DictBiz dictBiz = new DictBiz(); |
| | | dictBiz.setCode(templateVO.getBtmTypeId()); |
| | | dictBiz.setDictKey(s); |
| | | dictBiz.setDictValue(s); |
| | | //ä»åæ¥çcharServiceï¼å¯è¾å¯éï¼æ´æ¹ä¸ºè°ç¨omdä¸çæ¥å£æ¥å®ç° |
| | | iDictBizClient.getCheck(dictBiz); |
| | | } |
| | | // charService.saveBySameNamespaceAndFlag(templateVO.getBtmTypeId(), attrVO.getLibraryIdentification(), valuesList, sessionInfo); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) { |
| | | CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); |
| | | MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); |
| | | uiInfoVO.setTemplateVO(templateVO); |
| | | uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid)); |
| | | wrapperResemble(templateVO, uiInfoVO); |
| | | return uiInfoVO; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 模æ¿å±æ§è½¬æ¢ä¸ºè¡¨åå®ä¹çä¿¡æ¯ |
| | | * |
| | | * @param templateVO 模æ¿çæ¾ç¤ºå¯¹è±¡ |
| | | * @param codeClassifyOid åç±»ç主é®ï¼ä¸ºç©ºçæ¶åï¼è·åæ¨¡æ¿æå±çå类主é®.ç¨äºäº§çå类注å
¥ |
| | | * @return è¡¨æ ¼çä¿¡æ¯ |
| | | */ |
| | | private UIFormDefineVO wrapperFormDefineByTemplate(CodeClassifyTemplateVO templateVO, String codeClassifyOid) { |
| | | UIFormDefineVO formDefineVO = new UIFormDefineVO(); |
| | | formDefineVO.setOid(templateVO.getOid()); |
| | | formDefineVO.setBtmType(templateVO.getBtmTypeId()); |
| | | if (StringUtils.isBlank(codeClassifyOid)) { |
| | | codeClassifyOid = templateVO.getCodeclassifyoid(); |
| | | } |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); |
| | | |
| | | List<UIFormItemVO> itemVOS = new ArrayList<>(); |
| | | Map<String, List<CodeClassifyTemplateAttrVO>> attrGroupMap = templateVO.getAttributes().stream(). |
| | | filter(s -> StringUtils.isNotBlank(s.getAttributeGroup())).collect(Collectors.groupingBy(s -> s.getAttributeGroup())); |
| | | |
| | | templateVO.getAttributes().forEach(attrVO -> { |
| | | UIFormItemVO formItemVO = templateAttr2FormField(attrVO, templateVO.getBtmTypeId()); |
| | | itemVOS.add(formItemVO); |
| | | }); |
| | | //å¤ç屿§åç» |
| | | if (!CollectionUtils.isEmpty(attrGroupMap)) { |
| | | //æç
§åç»ç屿§æåï¼æ¾å°æ¯ä¸ä¸ªåç»ç第ä¸ä¸ªå±æ§ |
| | | for (String key : attrGroupMap.keySet()) { |
| | | List<CodeClassifyTemplateAttrVO> value = attrGroupMap.get(key); |
| | | //æ¾å°è¿ä¸ªåç»ç屿§ç第ä¸ä¸ª |
| | | CodeClassifyTemplateAttrVO attrVO = value.stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).findFirst().get(); |
| | | //æä»¬æ¾å°è¿ä¸ªå±æ§å¨æç»çitemVOséçä½ç½® |
| | | UIFormItemVO lineVO = new UIFormItemVO(); |
| | | lineVO.setField(attrVO.getId() + "_line"); |
| | | lineVO.setType("line"); |
| | | lineVO.setText(key); |
| | | //æ¾ä½ç½® |
| | | for (int i = 0; i < itemVOS.size(); i++) { |
| | | UIFormItemVO record = itemVOS.get(i); |
| | | if (record.getField().equalsIgnoreCase(attrVO.getId())) { |
| | | itemVOS.add(i, lineVO); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | CodeOrderDTO orderDTO = new CodeOrderDTO(); |
| | | switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); |
| | | if (!CollectionUtils.isEmpty(orderDTO.getData())) { |
| | | orderDTO.getData().forEach((key, value) -> { |
| | | for (int i = 0; i < itemVOS.size(); i++) { |
| | | UIFormItemVO itemVO = itemVOS.get(i); |
| | | if (itemVO.getField().equalsIgnoreCase(key)) { |
| | | itemVO.setDefaultValue(value); |
| | | break; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | formDefineVO.setItems(itemVOS); |
| | | //æ¥è¯¢æ¯å¦æå类注å
¥ç |
| | | return formDefineVO; |
| | | } |
| | | /** |
| | | * 屿§ç±»åä¸jsä¸çåæ®µç±»åçæ å° |
| | | */ |
| | | private static Map<String, String> vciFieldTypeMap = new HashMap<String, String>() {{ |
| | | put(VciFieldTypeEnum.VTString.name(), "text"); |
| | | put(VciFieldTypeEnum.VTInteger.name(), "text"); |
| | | put(VciFieldTypeEnum.VTLong.name(), "text"); |
| | | put(VciFieldTypeEnum.VTDouble.name(), "text"); |
| | | put(VciFieldTypeEnum.VTClob.name(), "text"); |
| | | put(VciFieldTypeEnum.VTBoolean.name(), "truefalse"); |
| | | put(VciFieldTypeEnum.VTDateTime.name(), "datetime"); |
| | | put(VciFieldTypeEnum.VTDate.name(), "datetime"); |
| | | put(VciFieldTypeEnum.VTTime.name(), "datetime"); |
| | | put(VciFieldTypeEnum.VTFilePath.name(), "file"); |
| | | }}; |
| | | |
| | | /** |
| | | * 模æ¿å±æ§è½¬æ¢ä¸ºè¡¨åçåæ®µ |
| | | * |
| | | * @param attrVO 模æ¿å±æ§ |
| | | * @param btmType ä¸å¡ç±»å |
| | | * @return 表åçåæ®µ |
| | | */ |
| | | @Override |
| | | public UIFormItemVO templateAttr2FormField(CodeClassifyTemplateAttrVO attrVO, String btmType) { |
| | | |
| | | UIFormItemVO itemVO = new UIFormItemVO(); |
| | | if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) { |
| | | // attrVO.setEnumid(OsEnumServiceImpl.MY_DATA_SECRET); |
| | | attrVO.setEnumId(MY_DATA_SECRET); |
| | | } |
| | | itemVO.setField(attrVO.getId()); |
| | | itemVO.setText(attrVO.getName()); |
| | | itemVO.setType(vciFieldTypeMap.getOrDefault(attrVO.getAttributeDataType(), "text")); |
| | | if (VciBaseUtil.getBoolean(attrVO.getTextAreaFlag())) { |
| | | itemVO.setType("textarea"); |
| | | } |
| | | if (VciFieldTypeEnum.VTLong.name().equalsIgnoreCase(attrVO.getAttributeDataType()) |
| | | || VciFieldTypeEnum.VTInteger.name().equalsIgnoreCase(attrVO.getAttributeDataType()) |
| | | || VciFieldTypeEnum.VTDouble.name().equalsIgnoreCase(attrVO.getAttributeDataType())) { |
| | | itemVO.setVerify("number"); |
| | | } |
| | | itemVO.setReadOnly(VciBaseUtil.getBoolean(attrVO.getReadOnlyFlag())); |
| | | itemVO.setKeyAttr(VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())); |
| | | itemVO.setRequired(VciBaseUtil.getBoolean(attrVO.getRequireFlag())); |
| | | itemVO.setDefaultValue(attrVO.getDefaultValue()); |
| | | itemVO.setDateFormate(attrVO.getCodeDateFormat()); |
| | | itemVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormDisplayFlag())); |
| | | itemVO.setVerify(attrVO.getVerifyRule()); |
| | | itemVO.setPrefix(attrVO.getPrefixValue()); |
| | | itemVO.setSuffix(attrVO.getSuffixValue()); |
| | | itemVO.setTooltips(attrVO.getExplain()); |
| | | itemVO.setSelectLibFlag(attrVO.getLibraryIdentification()); |
| | | //ççæ¯å¦ææä¸¾ |
| | | if ((StringUtils.isNotBlank(attrVO.getEnumString()) |
| | | && !"[]".equalsIgnoreCase(attrVO.getEnumString())) || |
| | | StringUtils.isNotBlank(attrVO.getEnumId())) { |
| | | itemVO.setType("combox"); |
| | | itemVO.setComboxKey(attrVO.getEnumId()); |
| | | if (StringUtils.isNotBlank(attrVO.getEnumString())) { |
| | | //æå®ç䏿æ¡å
容 |
| | | itemVO.setData(JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class)); |
| | | if (StringUtils.isBlank(attrVO.getEnumId())) { |
| | | itemVO.setComboxKey(itemVO.getField() + "_data"); |
| | | } |
| | | } |
| | | } |
| | | //çæ¯å¦æåç
§ |
| | | if (StringUtils.isNotBlank(attrVO.getReferBtmId()) || StringUtils.isNotBlank(attrVO.getReferConfig())) { |
| | | itemVO.setType("refer"); |
| | | itemVO.setShowField(itemVO.getField() + "name"); |
| | | if (StringUtils.isNotBlank(attrVO.getReferConfig())) { |
| | | //é
ç½®çå
容 |
| | | itemVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class)); |
| | | } else { |
| | | UIFormReferVO formReferVO = new UIFormReferVO(); |
| | | formReferVO.setType("default"); |
| | | formReferVO.setReferType(attrVO.getReferBtmId()); |
| | | itemVO.setReferConfig(formReferVO); |
| | | } |
| | | } |
| | | |
| | | //妿æ¯ç»åè§åï¼å类注å
¥çï¼æ¾ç¤ºä¸ºåªè¯» |
| | | if (StringUtils.isNotBlank(attrVO.getComponentRule())) { |
| | | itemVO.setReadOnly(true); |
| | | itemVO.setTooltips("æ¬å±æ§ä¸ºç»åè§å"); |
| | | itemVO.setRequired(false); |
| | | } |
| | | if (StringUtils.isNotBlank(attrVO.getClassifyInvokeAttr())) { |
| | | itemVO.setReadOnly(!VciBaseUtil.getBoolean(attrVO.getClassifyInvokeEditFlag())); |
| | | itemVO.setTooltips("æ¬å±æ§æ¯å类注å
¥"); |
| | | itemVO.setRequired(false); |
| | | } |
| | | |
| | | if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(itemVO.getField())) { |
| | | //æ¯çå½å¨æç¶æ |
| | | itemVO.setType("combox"); |
| | | itemVO.setComboxKey(btmType + LC_STATUS_SUBFIX); |
| | | } |
| | | return itemVO; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°è£
ç¸ä¼¼é¡¹æ¥è¯¢çå表 |
| | | * |
| | | * @param templateVO 模æ¿çæ¾ç¤ºå¯¹è±¡ |
| | | * @param uiInfoVO 页é¢çä¿¡æ¯ |
| | | */ |
| | | private void wrapperResemble(CodeClassifyTemplateVO templateVO, MdmUIInfoVO uiInfoVO) { |
| | | List<CodeClassifyTemplateAttrVO> resembleAttrList = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSameRepeatAttrFlag()) |
| | | || VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(resembleAttrList) && resembleAttrList.size() > 1) { |
| | | UITableDefineVO resembleTable = new UITableDefineVO(); |
| | | resembleTable.setOid(templateVO.getOid()); |
| | | resembleTable.setBtmType(templateVO.getBtmTypeId()); |
| | | resembleTable.setDisplayQueryArea(false); |
| | | resembleTable.setPageVO(new UITablePageVO()); |
| | | //å¤çææçåï¼è¿ä¸ªæ¨¡æ¿æ²¡æåå¹¶ç表头çæ
åµ |
| | | List<UITableFieldVO> fieldVOList = new ArrayList<>(); |
| | | resembleAttrList.forEach(attrVO -> { |
| | | UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO,false); |
| | | tableFieldVO.setHidden(false); |
| | | fieldVOList.add(tableFieldVO); |
| | | }); |
| | | List<List<UITableFieldVO>> cols = new ArrayList<>(); |
| | | cols.add(fieldVOList); |
| | | resembleTable.setCols(cols); |
| | | uiInfoVO.setResembleTableVO(resembleTable); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 模æ¿å±æ§è½¬æ¢ä¸ºè¡¨æ ¼æ¾ç¤ºçé
ç½® |
| | | * |
| | | * @param attrVO 模æ¿å±æ§ |
| | | * @param forEdit æ¯å¦æ¯ç¼è¾æé |
| | | * @return è¡¨æ ¼çåæ®µ |
| | | */ |
| | | @Override |
| | | public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO,boolean forEdit) { |
| | | UITableFieldVO fieldVO = new UITableFieldVO(); |
| | | if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) { |
| | | attrVO.setEnumId(MY_DATA_SECRET); |
| | | } |
| | | fieldVO.setField(attrVO.getId()); |
| | | fieldVO.setTitle(attrVO.getName()); |
| | | fieldVO.setFieldType(vciFieldTypeMap.getOrDefault(attrVO.getAttributeDataType(), "text")); |
| | | fieldVO.setSort(true); |
| | | fieldVO.setSortField(fieldVO.getField()); |
| | | fieldVO.setQueryField(fieldVO.getField()); |
| | | if (forEdit){ |
| | | fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormDisplayFlag())); |
| | | }else { |
| | | fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getTableDisplayFlag())); |
| | | } |
| | | if (attrVO.getAttrTableWidth() != null && attrVO.getAttrTableWidth() > 0) { |
| | | fieldVO.setMinWidth(Integer.valueOf(attrVO.getAttrTableWidth())); |
| | | fieldVO.setWidth(Integer.valueOf(attrVO.getAttrTableWidth())); |
| | | } |
| | | //ççæ¯å¦ææä¸¾ |
| | | if ((StringUtils.isNotBlank(attrVO.getEnumString()) |
| | | && !"[]".equalsIgnoreCase(attrVO.getEnumString())) || |
| | | StringUtils.isNotBlank(attrVO.getEnumId())) { |
| | | fieldVO.setFieldType("combox"); |
| | | fieldVO.setField(fieldVO.getField() + "Text"); |
| | | fieldVO.setComboxKey(attrVO.getEnumId()); |
| | | if (StringUtils.isNotBlank(attrVO.getEnumString())) { |
| | | //æå®ç䏿æ¡å
容 |
| | | fieldVO.setData(JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class)); |
| | | if (StringUtils.isBlank(attrVO.getEnumId())) { |
| | | fieldVO.setComboxKey(fieldVO.getField() + "_data"); |
| | | } |
| | | }else { |
| | | // List<KeyValue> osEnumItemVOList= enumService.getEnum(attrVO.getEnumId()); |
| | | // fieldVO.setData(osEnumItemVOList); |
| | | } |
| | | } |
| | | //çæ¯å¦æåç
§ |
| | | if (StringUtils.isNotBlank(attrVO.getReferBtmId()) || StringUtils.isNotBlank(attrVO.getReferConfig())) { |
| | | fieldVO.setFieldType("refer"); |
| | | fieldVO.setQueryField(fieldVO.getField()); |
| | | fieldVO.setField(fieldVO.getField() + "name"); |
| | | fieldVO.setShowField(fieldVO.getField()); |
| | | if (StringUtils.isNotBlank(attrVO.getReferConfig())) { |
| | | //é
ç½®çå
容 |
| | | fieldVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class)); |
| | | } else { |
| | | UIFormReferVO formReferVO = new UIFormReferVO(); |
| | | formReferVO.setType("default"); |
| | | formReferVO.setReferType(attrVO.getReferBtmId()); |
| | | fieldVO.setReferConfig(formReferVO); |
| | | } |
| | | } |
| | | if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(fieldVO.getSortField())) { |
| | | fieldVO.setField("lcstatus_text"); |
| | | } |
| | | Map<String, String> eventJsMap = new HashMap<>(); |
| | | //è¶
龿¥ä¸æ¨¡æ¿æ¯äºæ¥ |
| | | if (StringUtils.isNotBlank(attrVO.getTableHref())) { |
| | | String event = fieldVO.getSortField() + "_href"; |
| | | eventJsMap.put(event, attrVO.getTableHref()); |
| | | fieldVO.setTemplet("function(d){ return '<a class=\"layui-btn layui-btn-intable \" lay-event=\"" + event + "\">d." + fieldVO.getField() + "</a>';}"); |
| | | } |
| | | if (StringUtils.isNotBlank(attrVO.getTableDisplayJs())) { |
| | | //ç´æ¥åfunction(d){ return xxxxx;} |
| | | fieldVO.setTemplet(attrVO.getTableDisplayJs()); |
| | | } |
| | | if (StringUtils.isBlank(fieldVO.getTemplet()) && VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributeDataType())) { |
| | | fieldVO.setTemplet("function(d){return $webUtil.formateBoolean(d." + fieldVO.getField() + ");}"); |
| | | } |
| | | fieldVO.setOptionJsMap(eventJsMap); |
| | | fieldVO.setStyle(attrVO.getTableDisplayStyle()); |
| | | //å表éä¸å
è®¸ç´æ¥ç¼è¾ |
| | | fieldVO.setDateFormate(attrVO.getCodeDateFormat()); |
| | | return fieldVO; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ç¸ä¼¼é¡¹æ¥è¯¢ |
| | | * |
| | | * @param orderDTO ç¼ç çç¸å
³ä¿¡æ¯ |
| | | * @return æ°æ®å表 |
| | | */ |
| | | @Override |
| | | public DataGrid<Map<String, String>> resembleQuery(CodeOrderDTO orderDTO) { |
| | | VciBaseUtil.alertNotNull(orderDTO, "ç³è¯·çä¿¡æ¯", orderDTO.getCodeClassifyOid(), "å类主é®", orderDTO.getTemplateOid(), "模æ¿ä¸»é®"); |
| | | CodeClassifyFullInfoBO fullInfoBO = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); |
| | | CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | switchClassifyLevelOnOrder(templateVO, fullInfoBO, orderDTO); |
| | | switchDateAttrOnOrder(templateVO, orderDTO); |
| | | switchComponentAttrOnOrder(templateVO, orderDTO); |
| | | //éè¦è·åæ¯å¦æç¸ä¼¼æ¥è¯¢å±æ§ |
| | | Map<String, CodeClassifyTemplateAttrVO> attrVOs = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSameRepeatAttrFlag())).collect(Collectors.toMap(s -> s.getId(), t -> t)); |
| | | if (CollectionUtils.isEmpty(attrVOs)) { |
| | | //齿²¡æå±æ§ï¼è¯å®ä¸è½æ¥è¯¢äº |
| | | return new DataGrid<>(); |
| | | } |
| | | Map<String, String> conditionMap = new HashMap<>(); |
| | | //æä»¬é¦å
è·åææ²¡ææ¥è¯¢è§å |
| | | CodeResembleRuleVO resembleRuleVO = Optional.ofNullable(getUseResembleRule(fullInfoBO, fullInfoBO.getCurrentClassifyVO())).orElseGet(() -> new CodeResembleRuleVO()); |
| | | attrVOs.forEach((attrId, attrVO) -> { |
| | | String value = getValueFromOrderDTO(orderDTO, attrId); |
| | | if (value == null) { |
| | | value = ""; |
| | | } |
| | | wrapperResembleConditionMap(value, resembleRuleVO, attrId, conditionMap); |
| | | }); |
| | | |
| | | //没æéå¶åç±»ï¼ä½æ¯ä¸ä¸ªæ¨¡æ¿åªå¯è½å¨ä¸ä¸ªä¸å¡ç±»åéé¢ï¼æä»¥ç´æ¥æ¥è¯¢è¿ä¸ªä¸å¡ç±»åå³å¯ |
| | | if (!CollectionUtils.isEmpty(conditionMap)) { |
| | | Map<String, String> andConditionMap = new HashMap<>(); |
| | | andConditionMap.put("islastr", "1"); |
| | | andConditionMap.put("islastv", "1"); |
| | | if (StringUtils.isNotBlank(orderDTO.getOid())) { |
| | | andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid()); |
| | | } |
| | | conditionMap.putAll(andConditionMap); |
| | | PageHelper pageHelper = new PageHelper(-1); |
| | | pageHelper.addDefaultDesc("id"); |
| | | return queryGrid(fullInfoBO.getTopClassifyVO().getBtmtypeid(), templateVO, conditionMap, pageHelper); |
| | | } |
| | | return new DataGrid<>(); |
| | | } |
| | | |
| | | /** |
| | | * è·å使ç¨çç¸ä¼¼æ¥è¯¢è§å |
| | | * |
| | | * @param fullInfoBO ç±»å
¨é¨ä¿¡æ¯ |
| | | * @param currentClassifyVO å½åçåç±» |
| | | * @return è§åï¼å¦æä¸åå¨ä¼è¿åNull |
| | | */ |
| | | @Override |
| | | public CodeResembleRuleVO getUseResembleRule(CodeClassifyFullInfoBO fullInfoBO, CodeClassifyVO currentClassifyVO) { |
| | | if (currentClassifyVO == null) { |
| | | return null; |
| | | } |
| | | if (currentClassifyVO != null && StringUtils.isNotBlank(currentClassifyVO.getCodeResembleRuleOid())) { |
| | | //说æå·²ç»åå¨ |
| | | return resembleRuleService.getObjectByOid(currentClassifyVO.getCodeResembleRuleOid()); |
| | | } |
| | | if (StringUtils.isBlank(currentClassifyVO.getParentcodeclassifyoid())) { |
| | | return null; |
| | | } |
| | | Map<String, CodeClassifyVO> classifyVOMap = fullInfoBO.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); |
| | | return getUseResembleRule(fullInfoBO, classifyVOMap.getOrDefault(currentClassifyVO.getParentcodeclassifyoid(), null)); |
| | | } |
| | | |
| | | /** |
| | | * å°è£
ç¸ä¼¼é¡¹æ¥è¯¢çæ¥è¯¢æ¡ä»¶çæ å° |
| | | * |
| | | * @param value å¼ |
| | | * @param resembleRuleVO ç¸ä¼¼é¡¹è§å |
| | | * @param attrId 屿§çç¼å· |
| | | * @param conditionMap æ¥è¯¢æ¡ä»¶ |
| | | */ |
| | | @Override |
| | | public void wrapperResembleConditionMap(String value, CodeResembleRuleVO resembleRuleVO, String attrId, Map<String, String> conditionMap) { |
| | | boolean ignoreSpace = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorespaceflag()) || VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag()); |
| | | if (StringUtils.isBlank(value)) { |
| | | //ä¸ºç©ºçæ¶å就䏿¥è¯¢å®å°±æ¯ |
| | | } else { |
| | | String queryKey = ""; |
| | | String queryValue = ""; |
| | | boolean ignoreCase = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorecaseflag()); |
| | | boolean ignoreWidth = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorewidthflag()); |
| | | boolean trimAll = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag()); |
| | | boolean trim = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag()); |
| | | String temp = ""; |
| | | if (ignoreCase && ignoreSpace && ignoreWidth) { |
| | | //忽ç¥å¤§å°åï¼ä¸å»ç©ºï¼å¿½ç¥å
¨åè§ |
| | | temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte('%s')) " + (trimAll ? ",' ','')" : ")"); |
| | | } else if (ignoreCase && ignoreSpace && !ignoreWidth) { |
| | | //忽ç¥å¤§å°åãå»ç©ºãä¸å¿½ç¥å
¨åè§ |
| | | temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")"); |
| | | } else if (ignoreCase && !ignoreSpace && ignoreWidth) { |
| | | //忽ç¥å¤§å°åãä¸å»ç©ºã忽ç¥å
¨åè§ |
| | | temp = "UPPER(to_single_byte('%s'))"; |
| | | } else if (!ignoreCase && ignoreSpace && ignoreWidth) { |
| | | //ä¸å¿½ç¥å¤§å°åãå»ç©ºã忽ç¥å
¨åè§ |
| | | temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte('%s') " + (trimAll ? ",' ','')" : ")"); |
| | | } else if (ignoreCase && !ignoreSpace && !ignoreWidth) { |
| | | //忽ç¥å¤§å°åãä¸å»ç©ºãä¸å¿½ç¥å
¨åè§ |
| | | temp = "UPPER(%s)"; |
| | | } else if (!ignoreCase && !ignoreCase && ignoreWidth) { |
| | | //ä¸å¿½ç¥å¤§å°åãä¸å»ç©ºã忽ç¥å
¨åè§ |
| | | temp = "to_single_byte('%s')"; |
| | | } else if (!ignoreCase && ignoreSpace && !ignoreWidth) { |
| | | //ä¸å¿½ç¥å¤§å°åãå»ç©ºãä¸å¿½ç¥å
¨åè§ |
| | | temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")"); |
| | | } else if (!ignoreCase && !ignoreSpace && !ignoreWidth) { |
| | | //ä¸å¿½ç¥å¤§å°åãä¸å»ç©ºãä¸å¿½ç¥å
¨åè§ |
| | | temp = "%s"; |
| | | } |
| | | if (StringUtils.isNotBlank(resembleRuleVO.getLinkCharacter())) { |
| | | List<String> chars = VciBaseUtil.str2List(resembleRuleVO.getLinkCharacter()); |
| | | for (int i = 0; i < chars.size(); i++) { |
| | | String s = chars.get(i); |
| | | temp = "replace(" + temp + ",'" + s + "','')"; |
| | | } |
| | | } |
| | | queryValue = String.format(temp, (trim ? value.trim() : value)); |
| | | temp = temp.replace("to_single_byte('%s')","to_single_byte(%s)"); |
| | | queryKey = String.format(temp, "t."+attrId); |
| | | conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¼ç æ°æ®çå表 |
| | | * |
| | | * @param btmType ä¸å¡ç±»å |
| | | * @param templateVO 模æ¿ç对象ï¼éè¦å
嫿¨¡æ¿ç屿§ |
| | | * @param conditionMap æ¥è¯¢æ¡ä»¶ |
| | | * @param pageHelper å页对象 |
| | | * @return æ°æ®å表 |
| | | */ |
| | | @Override |
| | | public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) { |
| | | CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper); |
| | | // List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage()); |
| | | List<Map> maps = commonsMapper.selectBySql(sqlBO.getSqlHasPage()); |
| | | DataGrid<Map<String, String>> dataGrid = new DataGrid<>(); |
| | | List<Map<String, String>> dataList = new ArrayList<>(); |
| | | if (!CollectionUtils.isEmpty(maps)) { |
| | | maps.stream().forEach(map -> { |
| | | Map<String, String> data = new HashMap<>(); |
| | | map.forEach((key, value) -> { |
| | | data.put(((String) key).toLowerCase(Locale.ROOT), (String) value); |
| | | }); |
| | | dataList.add(data); |
| | | }); |
| | | } |
| | | dataGrid.setData(dataList); |
| | | if (!CollectionUtils.isEmpty(dataList)) { |
| | | wrapperData(dataGrid.getData(), templateVO, sqlBO.getSelectFieldList(), false); |
| | | dataGrid.setTotal(Long.parseLong(commonsMapper.selectBySql(sqlBO.getSqlCount()).get(0).values().toArray()[0].toString())); |
| | | } |
| | | return dataGrid; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°è£
æ¥è¯¢åºæ¥çæ°æ® |
| | | * |
| | | * @param dataMap æ°æ®çæ å° |
| | | * @param templateVO 模æ¿ç屿§ |
| | | * @param onlySelectAttrIdList ä»
ä»
æ¥è¯¢ç屿§å段 |
| | | * @param form 表åéä½¿ç¨ |
| | | */ |
| | | @Override |
| | | public void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO, |
| | | Collection<String> onlySelectAttrIdList, boolean form) { |
| | | if (onlySelectAttrIdList == null) { |
| | | onlySelectAttrIdList = new ArrayList<>(); |
| | | } |
| | | //å
转æ¢ä¸ä¸æ¶é´æ ¼å¼ |
| | | List<String> finalOnlySelectAttrIdList = onlySelectAttrIdList.stream().collect(Collectors.toList()); |
| | | List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = templateVO.getAttributes().stream().filter( |
| | | s -> StringUtils.isNotBlank(s.getCodeDateFormat()) && |
| | | (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT))) |
| | | ).collect(Collectors.toList()); |
| | | //æä¸¾çå
容 |
| | | List<CodeClassifyTemplateAttrVO> enumAttrVOs = templateVO.getAttributes().stream().filter( |
| | | s -> (StringUtils.isNotBlank(s.getEnumId()) || StringUtils.isNotBlank(s.getEnumString())) |
| | | && |
| | | (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT))) |
| | | ).collect(Collectors.toList()); |
| | | |
| | | List<String> userIds = new ArrayList<>(); |
| | | dataMap.stream().forEach(data -> { |
| | | //å¤çæ¶é´ |
| | | if (!form) { |
| | | //表åçæ¶ååªè½ç¨ç»ä¸çæ¶é´æ ¼å¼ |
| | | wrapperDateFormat(dateFormatAttrVOs, data); |
| | | } |
| | | //å¤çæä¸¾ |
| | | wrapperEnum(enumAttrVOs, data); |
| | | String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD); |
| | | String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION,""); |
| | | if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus)) |
| | | && StringUtils.isBlank(copyFromVersion) |
| | | ) { |
| | | data.put(VciQueryWrapperForDO.ID_FIELD, "******"); |
| | | } |
| | | data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), CodeDefaultLC.getTextByValue(lcstatus)); |
| | | if(CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) |
| | | && StringUtils.isNotBlank(copyFromVersion)){ |
| | | data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), "ä¿®æ¹ä¸"); |
| | | } |
| | | if (data.containsKey("creator")) { |
| | | userIds.add(data.get("creator")); |
| | | } |
| | | if (data.containsKey("lastmodifier")) { |
| | | userIds.add(data.get("lastmodifier")); |
| | | } |
| | | }); |
| | | if (!CollectionUtils.isEmpty(userIds)) { |
| | | // Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); |
| | | // dataMap.stream().forEach(data -> { |
| | | // String creator = data.getOrDefault("creator", null); |
| | | // if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) { |
| | | // data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getName() + ")"); |
| | | // } |
| | | // String lastmodifier = data.getOrDefault("lastmodifier", null); |
| | | // if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) { |
| | | // data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getName() + ")"); |
| | | // } |
| | | // }); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å¤çæ¶é´æ ¼å¼ |
| | | * |
| | | * @param dateFormatAttrVOs æ¶é´æ ¼å¼ç屿§ |
| | | * @param data å½åè¡æ°æ® |
| | | */ |
| | | private void wrapperDateFormat(Collection<CodeClassifyTemplateAttrVO> dateFormatAttrVOs, Map<String, String> data) { |
| | | if (!CollectionUtils.isEmpty(dateFormatAttrVOs)) { |
| | | dateFormatAttrVOs.stream().forEach(dateFormatAttrVO -> { |
| | | String attrId = dateFormatAttrVO.getId().toLowerCase(Locale.ROOT); |
| | | String oldValue = data.getOrDefault(attrId, null); |
| | | if (StringUtils.isNotBlank(oldValue)) { |
| | | DateConverter dateConverter = new DateConverter(); |
| | | try { |
| | | dateConverter.setAsText(oldValue); |
| | | Date value = dateConverter.getValue(); |
| | | if (value != null) { |
| | | data.put(attrId, VciDateUtil.date2Str(value, dateFormatAttrVO.getCodeDateFormat())); |
| | | } |
| | | } catch (Throwable e) { |
| | | //转æ¢å¯è½æé®é¢ï¼è¿å°±ä½¿ç¨åæ¬åå¨çå¼ |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å¤çæä¸¾çå
容ï¼å¦æä¸å¨æä¸¾ä¸ï¼ä¼è¿å忬çå¼ |
| | | * |
| | | * @param enumAttrVOs æä¸¾å±æ§ |
| | | * @param data å½åè¡æ°æ® |
| | | */ |
| | | private void wrapperEnum(Collection<CodeClassifyTemplateAttrVO> enumAttrVOs, Map<String, String> data) { |
| | | //å¤çæä¸¾çå
容ï¼ä¸ºäºå
¼å®¹ä»¥åçæ°æ®,å¦ææ°æ®ä¸è½ä½¿ç¨æä¸¾è½¬æ¢çè¯ï¼é£è¿æ¯æ¾ç¤ºä»¥åçå¼ |
| | | if (!CollectionUtils.isEmpty(enumAttrVOs)) { |
| | | enumAttrVOs.stream().forEach(enumAttrVO -> { |
| | | String attrId = enumAttrVO.getId().toLowerCase(Locale.ROOT); |
| | | String oldValue = data.getOrDefault(attrId, null); |
| | | if (StringUtils.isNotBlank(oldValue)) { |
| | | List<KeyValue> comboxKVs = listComboboxItems(enumAttrVO); |
| | | String newValue = oldValue; |
| | | KeyValue keyValue = Optional.ofNullable(comboxKVs).orElseGet(() -> new ArrayList<>()).stream().filter(s -> s.getKey().equalsIgnoreCase(oldValue)).findFirst().orElseGet(() -> null); |
| | | if (keyValue != null) { |
| | | newValue = keyValue.getValue(); |
| | | } |
| | | data.put(attrId + "Text", newValue); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®æ¨¡æ¿å±æ§çæç¸åºçsqlä¿¡æ¯ |
| | | * |
| | | * @param btmType ä¸å¡ç±»å |
| | | * @param templateVO æ¨¡æ¿æ¾ç¤ºå¯¹è±¡ï¼å¿
é¡»å
å«å±æ§ |
| | | * @param conditionMap æ¥è¯¢æ¡ä»¶ |
| | | * @param pageHelper å页åæåºå¯¹è±¡ |
| | | * @return sqlçç¸å
³ä¿¡æ¯ |
| | | */ |
| | | @Override |
| | | public CodeTemplateAttrSqlBO getSqlByTemplateVO(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) { |
| | | //å 为åç
§ä¸ä¸å®æ¯å¨å¹³å°ç屿§æ± éé¢è®¾ç½®ï¼æä»¥æä»¬å¾éè¦èªè¡å¤ç |
| | | //åèVciQueryWrapperæ¥å¤ç |
| | | //1. æ¾å°ææçåæ®µï¼ |
| | | Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); |
| | | List<String> selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList()); |
| | | |
| | | //ææçåç
§çåæ®µ |
| | | Map<String/**屿§å段**/, String> joinTableList = new ConcurrentHashMap<>(); |
| | | List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter( |
| | | s -> StringUtils.isNotBlank(s.getReferBtmId()) || StringUtils.isNotBlank(s.getReferConfig()) |
| | | ).collect(Collectors.toList()); |
| | | Map<String/**åç
§ç屿§**/, String/**å®é
çåæ®µ**/> referFieldMap = new HashMap<>(); |
| | | if (!CollectionUtils.isEmpty(referAttrVOs)) { |
| | | referAttrVOs.parallelStream().forEach(attrVO -> { |
| | | UIFormReferVO referVO = null; |
| | | if (StringUtils.isNotBlank(attrVO.getReferConfig())) { |
| | | referVO = JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class); |
| | | } else { |
| | | referVO = new UIFormReferVO(); |
| | | referVO.setReferType(attrVO.getReferBtmId()); |
| | | referVO.setValueField(VciQueryWrapperForDO.OID_FIELD); |
| | | referVO.setTextField("name"); |
| | | } |
| | | |
| | | String referTable = VciBaseUtil.getTableName(referVO.getReferType()); |
| | | String referTableNick = attrVO.getId() + "0"; |
| | | String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " = t." + attrVO.getId(); |
| | | joinTableList.put(attrVO.getId(), left); |
| | | String referShowField = attrVO.getId() + "Name"; |
| | | List<String> textFields = VciBaseUtil.str2List(referVO.getTextField()); |
| | | String showFieldInSource = ""; |
| | | if (textFields.contains("name")) { |
| | | showFieldInSource = "name"; |
| | | } else { |
| | | showFieldInSource = textFields.get(0); |
| | | } |
| | | referFieldMap.put(attrVO.getId(), referTableNick + "." + showFieldInSource); |
| | | selectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField); |
| | | }); |
| | | } |
| | | Optional.ofNullable(attributeService.getDefaultAttributeVOMap()).orElseGet(() -> new HashMap<>()).keySet().stream().forEach(attrId -> { |
| | | if (!selectFieldList.contains(attrId) && !"secretgrade".equalsIgnoreCase(attrId)) { |
| | | selectFieldList.add(attrId); |
| | | } |
| | | }); |
| | | if (!selectFieldList.contains(CODE_FIELD)) { |
| | | selectFieldList.add(CODE_FIELD); |
| | | } |
| | | if (!selectFieldList.contains(CODE_CLASSIFY_OID_FIELD)) { |
| | | selectFieldList.add(CODE_CLASSIFY_OID_FIELD); |
| | | } |
| | | if (!selectFieldList.contains(CODE_TEMPLATE_OID_FIELD)) { |
| | | selectFieldList.add(CODE_TEMPLATE_OID_FIELD); |
| | | } |
| | | if (!selectFieldList.contains(CODE_FULL_PATH_FILED)) { |
| | | selectFieldList.add(CODE_FULL_PATH_FILED); |
| | | } |
| | | |
| | | //å¤çæ¥è¯¢æ¡ä»¶ |
| | | //TODO éªè¯sql注å
¥ |
| | | List<String> andSql = new ArrayList<>(); |
| | | List<String> orSql = new ArrayList<>(); |
| | | if (!CollectionUtils.isEmpty(conditionMap)) { |
| | | Map<String, String> orConditionMap = new HashMap<>(); |
| | | Map<String, String> andCondtionMap = new HashMap<>(); |
| | | //å
å离orçæ¥è¯¢æ¡ä»¶ï¼å¦å¤å½æ¥è¯¢æ¡ä»¶æ¯ç©ºçæ¶åä¹ä¸æ¥è¯¢ |
| | | conditionMap.forEach((k, v) -> { |
| | | if (StringUtils.isNotBlank(v)) { |
| | | if (v.startsWith(QueryOptionConstant.OR)) { |
| | | orConditionMap.put(k, v.substring(QueryOptionConstant.OR.length())); |
| | | } else { |
| | | andCondtionMap.put(k, v); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | andCondtionMap.forEach((k, v) -> { |
| | | andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap)); |
| | | }); |
| | | orConditionMap.forEach((k, v) -> { |
| | | orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap)); |
| | | }); |
| | | } |
| | | //ç»åèµ·æ¥ |
| | | StringBuilder andSb = new StringBuilder(); |
| | | andSql.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()); |
| | | } |
| | | |
| | | String orString = orSql.stream().collect(Collectors.joining(" or ")); |
| | | String whereSql = ""; |
| | | if (StringUtils.isNotBlank(orString)) { |
| | | if (StringUtils.isBlank(andString)) { |
| | | andString = " 1 = 1 "; |
| | | } |
| | | whereSql = SPACE + "(" + SPACE + andString + SPACE + ") and (" + SPACE + orString + SPACE + ")" + SPACE; |
| | | } else { |
| | | whereSql = andString + SPACE; |
| | | } |
| | | if (attrVOMap.keySet().contains("secretgrade")) { |
| | | Integer userSecret = VciBaseUtil.getCurrentUserSecret(); |
| | | if (userSecret == null || userSecret == 0) { |
| | | // userSecret = secretService.getMinUserSecret(); |
| | | } |
| | | whereSql += " and ( t.secretGrade <= " + userSecret + ") "; |
| | | } |
| | | String tableName = VciBaseUtil.getTableName(btmType); |
| | | String sql = "select " + selectFieldList.stream().map(s -> (s.contains(".") ? s : ("t." + s))).collect(Collectors.joining(",")) |
| | | + " from " + tableName + SPACE + "t" + SPACE |
| | | + joinTableList.values().stream().collect(Collectors.joining(SPACE)) |
| | | + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql; |
| | | if (pageHelper == null) { |
| | | pageHelper = new PageHelper(-1); |
| | | } |
| | | //ççæåº |
| | | String orderSql = pageHelper.getOrderSql("t"); |
| | | sql += (orderSql == null ? "" : orderSql); |
| | | String whereSubfixForPage = " ) A where rownum < " + (pageHelper.getLimit() * pageHelper.getPage() + 1) + ") where RN >= " |
| | | + (pageHelper.getLimit() * (pageHelper.getPage() - 1) + 1); |
| | | String sqlHasPage = pageHelper.getLimit() > 0 ? ("select * from (select A.*,rownum RN from (" + sql + whereSubfixForPage) : sql; |
| | | String sqlCount = "select count(1) from " + tableName + SPACE + "t" + SPACE + joinTableList.values().stream().collect(Collectors.joining(SPACE)) |
| | | + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql; |
| | | CodeTemplateAttrSqlBO sqlBO = new CodeTemplateAttrSqlBO(); |
| | | sqlBO.setTableName(tableName); |
| | | sqlBO.setJoinTable(joinTableList); |
| | | sqlBO.setNickName("t"); |
| | | // sqlBO.setPageHelper(pageHelper); |
| | | sqlBO.setSqlHasPage(sqlHasPage); |
| | | sqlBO.setSqlCount(sqlCount); |
| | | sqlBO.setSqlUnPage(sql); |
| | | return sqlBO; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ç»åæ¥è¯¢æ¡ä»¶çsql |
| | | * |
| | | * @param key åæ®µ |
| | | * @param value åå |
| | | * @param referFieldMap åç
§çåæ®µ |
| | | * @param attrVOMap 屿§çæ å° |
| | | * @return Sqlè¯å¥ |
| | | */ |
| | | private String getConditionSql(String key, String value, Map<String/**åç
§ç屿§**/, String/**å®é
ç屿§**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { |
| | | if (key.endsWith("_begin")) { |
| | | //è¯´ææ¯>=çãæä»¬éè¦å
è·åä¸ä¸ |
| | | String field = (key.substring(0, key.length() - 6).toLowerCase().trim()); |
| | | if (referFieldMap.containsKey(field)) { |
| | | //说æè¿æ¯åç
§éé¢çï¼æä»¬é»è®¤è¿ç§æ
åµä¸é½æ¯å符串å§ï¼å 为åç
§ç屿§ä¸ä¸å®ç¨çå¹³å°ç屿§æ± éçï¼æä»¥å¤§é¨åæ
åµä¸ï¼æ¾ç¤ºç屿§é½æ¯åç¬¦ä¸²å§ |
| | | return referFieldMap.get(field) + SPACE + " >= '" + value + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(value, field, attrVOMap); |
| | | } |
| | | } else if (key.endsWith("_end")) { |
| | | //è¯´ææ¯<=çãæä»¬éè¦å
è·åä¸ä¸ |
| | | String field = (key.substring(0, key.length() - 6).toLowerCase().trim()); |
| | | if (referFieldMap.containsKey(field)) { |
| | | //说æè¿æ¯åç
§éé¢çï¼æä»¬é»è®¤è¿ç§æ
åµä¸é½æ¯å符串å§ï¼å 为åç
§ç屿§ä¸ä¸å®ç¨çå¹³å°ç屿§æ± éçï¼æä»¥å¤§é¨åæ
åµä¸ï¼æ¾ç¤ºç屿§é½æ¯åç¬¦ä¸²å§ |
| | | return referFieldMap.get(field) + SPACE + " <= '" + value + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + " <= " + getStringValueInWhere(field, value, attrVOMap); |
| | | } |
| | | } else { |
| | | if (referFieldMap.containsKey(key)) { |
| | | //è¯´ææ¯åç
§çï¼æä»¬åç
§çæ¥è¯¢é½è®¤ä¸ºæ¯å符串ï¼å¦ææ¯æ¶é´æ ¼å¼çæ¥è¯¢è¯å®æé®é¢ï¼ |
| | | String selectKey = referFieldMap.get(key); |
| | | return getSqlByValue(selectKey, value, null); |
| | | } else { |
| | | return getSqlByValue(key, value, attrVOMap); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * è·åæ¥è¯¢æ¡ä»¶ä¸çå¼çï¼å¤çä¸åçç±»å |
| | | * |
| | | * @param value å¼ |
| | | * @param field åæ®µåç§° |
| | | * @return æ¥ææè
æ¶é´æ ¼å¼ä¼å
æ¬to_dateï¼å符串ä¼å ' |
| | | */ |
| | | private String getStringValueInWhere(String field, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { |
| | | if ((field.contains(".") && !field.toLowerCase(Locale.ROOT).startsWith("t.")) || attrVOMap == null |
| | | || !field.replace("t.", "").matches(RegExpConstant.LETTER) || value.startsWith(ONLY)) { |
| | | //说æå¯è½æ¯æå®çæä¸ªæ¡ä»¶ï¼ç´æ¥è¿å |
| | | if (value.startsWith(ONLY)) { |
| | | value = value.replace(ONLY, ""); |
| | | } |
| | | if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) { |
| | | return value; |
| | | } |
| | | if (field.contains(".") && attrVOMap != null && attrVOMap.containsKey(field.split("\\.")[0].toLowerCase(Locale.ROOT))) { |
| | | //æ¯åç
§ |
| | | return "'" + value + "'"; |
| | | } else { |
| | | return value; |
| | | } |
| | | } else { |
| | | //ççæ¯ä¸æ¯è¿ä¸ªå¯¹è±¡éç屿§ |
| | | if (attrVOMap.containsKey(field)) { |
| | | VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.valueOf(attrVOMap.get(field).getAttributeDataType()); |
| | | if ("ts".equalsIgnoreCase(field)) { |
| | | return "to_timestamp('" + value + "', '" + DATETIME_FORMAT + ".ff')"; |
| | | } |
| | | DateConverter dateConverter = new DateConverter(); |
| | | if (VciFieldTypeEnum.VTDateTime.equals(fieldTypeEnum)) { |
| | | //å®é
ä¸ï¼æ°æ®åºé½æ¯timestampçç±»å. |
| | | dateConverter.setAsText(value); |
| | | return "to_date('" + dateConverter.getAsText(VciDateUtil.DateTimeFormat) + "','" + DATETIME_FORMAT + "')"; |
| | | } else if (VciFieldTypeEnum.VTDate.equals(fieldTypeEnum)) { |
| | | dateConverter.setAsText(value); |
| | | return "to_date('" + dateConverter.getAsText(VciDateUtil.DateFormat) + "','" + DATE_FORMAT + "')"; |
| | | } else if (VciFieldTypeEnum.VTDouble.equals(fieldTypeEnum) |
| | | || VciFieldTypeEnum.VTLong.equals(fieldTypeEnum) |
| | | || VciFieldTypeEnum.VTInteger.equals(fieldTypeEnum)) { |
| | | return value; |
| | | } else { |
| | | return "'" + value + "'"; |
| | | } |
| | | } else { |
| | | if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) { |
| | | return value; |
| | | } |
| | | return "'" + value + "'"; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * å°è£
æç»çsqlè¯å¥ä¸çå¼é¨å |
| | | * |
| | | * @param selectKey æ¥è¯¢çåæ®µ |
| | | * @param value å¼ |
| | | * @param attrVOMap 屿§çæ¾ç¤ºå¯¹è±¡æ å° |
| | | * @return sqléçå¼ |
| | | */ |
| | | private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { |
| | | StringBuilder sql = new StringBuilder(); |
| | | if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) { |
| | | sql.append("t."); |
| | | } |
| | | if (value.startsWith(QueryOptionConstant.IN)) { |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append("in") |
| | | .append(SPACE) |
| | | .append("(") |
| | | .append(value.replace(QueryOptionConstant.IN, "")) |
| | | .append(")"); |
| | | } else if (value.startsWith(QueryOptionConstant.NOTIN)) { |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append("not in") |
| | | .append(SPACE) |
| | | .append("(") |
| | | .append(value.replace(QueryOptionConstant.NOTIN, "")) |
| | | .append(")"); |
| | | } else if (value.startsWith(QueryOptionConstant.NOTEQUAL)) { |
| | | value = value.replace(QueryOptionConstant.NOTEQUAL, ""); |
| | | value = getStringValueInWhere(selectKey, value, attrVOMap); |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append(QueryOptionConstant.NOTEQUAL) |
| | | .append(SPACE) |
| | | .append(value); |
| | | } else if (value.startsWith(QueryOptionConstant.MORETHAN)) { |
| | | value = value.replace(QueryOptionConstant.MORETHAN, ""); |
| | | value = getStringValueInWhere(selectKey, value, attrVOMap); |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append(QueryOptionConstant.MORETHAN) |
| | | .append(SPACE) |
| | | .append(value); |
| | | } else if (value.startsWith(QueryOptionConstant.MORE)) { |
| | | value = value.replace(QueryOptionConstant.MORE, ""); |
| | | value = getStringValueInWhere(selectKey, value, attrVOMap); |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append(QueryOptionConstant.MORE) |
| | | .append(SPACE) |
| | | .append(value); |
| | | } else if (value.startsWith(QueryOptionConstant.LESSTHAN)) { |
| | | value = value.replace(QueryOptionConstant.LESSTHAN, ""); |
| | | value = getStringValueInWhere(selectKey, value, attrVOMap); |
| | | |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append(QueryOptionConstant.LESSTHAN) |
| | | .append(SPACE) |
| | | .append(value); |
| | | } else if (value.startsWith(QueryOptionConstant.LESS)) { |
| | | value = value.replace(QueryOptionConstant.LESS, ""); |
| | | value = getStringValueInWhere(selectKey, value, attrVOMap); |
| | | |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append(QueryOptionConstant.LESS) |
| | | .append(SPACE) |
| | | .append(value); |
| | | } else if (value.startsWith(QueryOptionConstant.ISNOTNULL)) { |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append(" is not null"); |
| | | } else if (value.startsWith(QueryOptionConstant.ISNULL)) { |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append(" is null"); |
| | | } else if (value.contains("*")) { |
| | | //è¯´ææ¯likeï¼æè
lefe like ,right like |
| | | value = getStringValueInWhere(selectKey, value, attrVOMap); |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append("like") |
| | | .append(SPACE) |
| | | // .append("'") |
| | | .append(value.replace("*", "%")) |
| | | // .append("'") |
| | | .append(SPACE); |
| | | } else { |
| | | value= value.replace(SPECIAL_CHAR,REQUIRED_CHAR); |
| | | value = getStringValueInWhere(selectKey, value, attrVOMap); |
| | | |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | | .append(QueryOptionConstant.EQUAL) |
| | | .append(SPACE) |
| | | .append(value); |
| | | } |
| | | sql.append(SPACE); |
| | | return sql.toString(); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹ä¸»é¢åºæ°æ® |
| | | * |
| | | * @param orderDTO æ°æ®çå
容ï¼ä¸ç¨å
å«ç 段çå
å®¹äº |
| | | */ |
| | | @Override |
| | | public void editSaveCode(CodeOrderDTO orderDTO) { |
| | | VciBaseUtil.alertNotNull(orderDTO, "ç¼ç ç³è¯·ç¸å
³ç屿§çå
容é½ä¸ºç©º", orderDTO.getOid(), "æ°æ®ä¸»é®", |
| | | orderDTO.getCodeClassifyOid(), "主é¢åºåç±»ç主é®"); |
| | | // CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); |
| | | //æ¾ä¸å¡ç±»åï¼ç¶å使ç¨ä¸»é®å»è·åæ°æ®åºéçæ°æ® |
| | | // List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getOid())); |
| | | |
| | | QueryWrapper<CodeWupinEntity> btmWrapper = new QueryWrapper<>(); |
| | | btmWrapper.eq("OID",orderDTO.getOid()); |
| | | CodeWupinEntity cbo = codeWupinMapper.selectOne(btmWrapper); |
| | | |
| | | // CodeClstemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | // CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid()); |
| | | |
| | | if (cbo != null) { |
| | | throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | } |
| | | // ClientBusinessObject cbo = cbos.get(0); |
| | | if (!cbo.getTs().toString().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) { |
| | | throw new VciBaseException("æ°æ®ä¸æ¯ææ°çï¼å¯è½ä»äººå·²ç»ä¿®æ¹ï¼è¯·å·æ°ååè¯"); |
| | | } |
| | | if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { |
| | | throw new VciBaseException("æ°æ®ä¸æ¯{0}çç¶æï¼ä¸å
许修æ¹", new String[]{CodeDefaultLC.EDITING.getText()}); |
| | | } |
| | | |
| | | //æ³¨ææ¨¡æ¿ä¸è½ä½¿ç¨æ°æ®åå¨çæ¶åçæ¨¡æ¿ï¼å 为å¯è½ä¼åå |
| | | |
| | | //1. 夿å¿
è¾é¡¹ |
| | | CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | checkRequiredAttrOnOrder(templateVO, orderDTO); |
| | | //2.å
注å
¥ï¼åç»åï¼æåæ ¡éª |
| | | switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); |
| | | //3.å¤çç»åè§åãç»åè§åä¸è½ä½¿ç¨ç¼ç ç屿§ï¼å 为ç¼ç ççæå¯è½æ¯éè¦å±æ§ç |
| | | switchComponentAttrOnOrder(templateVO, orderDTO); |
| | | //4.æ ¡éªè§å |
| | | checkVerifyOnOrder(templateVO, orderDTO); |
| | | //5.夿å
³é®å±æ§ |
| | | checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); |
| | | //6.æ ¡éªæä¸¾çå
容æ¯å¦æ£ç¡® |
| | | checkEnumOnOrder(templateVO, orderDTO); |
| | | //7.å¤çæ¶é´æ ¼å¼ï¼å¨æ°æ®åºéé¢ä¸è®ºæ¯åç¬¦ä¸²è¿æ¯æ¥ææ ¼å¼ï¼é½ä½¿ç¨ç¸åçæ ¼å¼åå¨ |
| | | switchDateAttrOnOrder(templateVO, orderDTO); |
| | | //é»è®¤çå
容ä¸è½åï¼æä»¥åªéè¦æ·è´èªå®ä¹çç¸å
³å±æ§å³å¯ |
| | | copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); |
| | | //ä¼ä¸ç åéå¢ç çä¸ä¿®æ¹ |
| | | cbo.setDescription(orderDTO.getDescription()); |
| | | cbo.setName(orderDTO.getName()); |
| | | try { |
| | | cbo.setDescription(orderDTO.getDescription()); |
| | | cbo.setName(orderDTO.getName()); |
| | | //// cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); |
| | | // cbo.setAttributeValue("name", orderDTO.getName()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | cbo.setLastModifyTime(new Date()); |
| | | cbo.setLastModifier(AuthUtil.getUser().getUserName()); |
| | | codeWupinMapper.updateById(cbo); |
| | | // |
| | | // List<CodeWupinEntity> cboList = new ArrayList<>(); |
| | | // |
| | | // //夿³¨ |
| | | // cbo.setDescription(orderDTO.getDescription()); |
| | | // cboList.add(cbo); |
| | | //// |
| | | //// cboList.add(cbo); |
| | | // List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(),cboList); |
| | | // |
| | | // |
| | | // List<String> charList = new ArrayList<>(); |
| | | // for (CodeWupinEntity wupinEntity : cboList) { |
| | | // charList.add(wupinEntity.getId()); |
| | | // } |
| | | // batchSaveSelectChar(templateVO, charList); |
| | | // return codeList.size() > 0 ? codeList.get(0) : ""; |
| | | |
| | | |
| | | |
| | | |
| | | //ä¿®æ¹çæ¶åï¼ç¼ç æ¯ä¸åç |
| | | // BatchCBO batchCBO = new BatchCBO(); |
| | | // batchCBO.getUpdateCbos().add(cbo); |
| | | // List<ClientBusinessObject> cboList = new ArrayList<>(); |
| | | // cboList.add(cbo); |
| | | // boService.persistenceBatch(batchCBO); |
| | | batchSaveSelectChar(templateVO, Arrays.asList(cbo.getId())); |
| | | } |
| | | |
| | | /** |
| | | * å é¤ä¸»é¢åºæ°æ® |
| | | * |
| | | * @param deleteBatchDTO æ°æ®çå
容ï¼å¿
é¡»è¦æä¸»é®ååç±»ä¸»é® |
| | | */ |
| | | @Override |
| | | public void deleteCode(CodeDeleteBatchDTO deleteBatchDTO) { |
| | | VciBaseUtil.alertNotNull(deleteBatchDTO, "ç¼ç ç³è¯·ç¸å
³ç屿§åç æ®µçå
容é½ä¸ºç©º", deleteBatchDTO.getOidList(), "æ°æ®ä¸»é®", |
| | | deleteBatchDTO.getCodeClassifyOid(), "主é¢åºåç±»ç主é®"); |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(deleteBatchDTO.getCodeClassifyOid()); |
| | | //æ¾ä¸å¡ç±»åï¼ç¶å使ç¨ä¸»é®å»è·åæ°æ®åºéçæ°æ® |
| | | Collection<String> oidCollection = null; |
| | | for (Collection<String> strings : VciBaseUtil.switchCollectionForOracleIn(deleteBatchDTO.getOidList())) { |
| | | oidCollection.addAll(strings); |
| | | } |
| | | |
| | | List<CodeWupinEntity> cboList = codeWupinMapper.selectBatchIds(oidCollection); |
| | | // List<ClientBusinessObject> cboList = new ArrayList<>(); |
| | | // oidCollection.stream().forEach(oids -> { |
| | | // Map<String, String> conditionMap = new HashMap<>(); |
| | | // conditionMap.put("oid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")"); |
| | | // List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), conditionMap); |
| | | // cboList.addAll(cbos); |
| | | // }); |
| | | if (CollectionUtils.isEmpty(cboList)) { |
| | | throw new VciBaseException("æ°æ®å
¨é¨å¨ç³»ç»ä¸ä¸åå¨"); |
| | | } |
| | | List<CodeWupinEntity> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(editCBOs)) { |
| | | CodeWupinEntity cbo = editCBOs.get(0); |
| | | throw new VciBaseException("ç¼ç 为{0}çå
±{1}æ¡æ°æ®çç¶æä¸æ¯[{2}]ï¼ä¸å
许å é¤", new String[]{cbo.getId(), String.valueOf(editCBOs.size()), CodeDefaultLC.EDITING.getText()}); |
| | | } |
| | | |
| | | //åªè½å é¤èªå·±åå»ºçæ°æ® |
| | | String userId = AuthUtil.getUser().getUserName(); |
| | | for (CodeWupinEntity clientBusinessObject:cboList){ |
| | | String creator = clientBusinessObject.getCreator(); |
| | | if(!userId.equalsIgnoreCase(creator)){ |
| | | throw new VciBaseException("ç¼ç 为"+clientBusinessObject.getId()+"çæ°æ®ä¸æ¯å½åç¨æ·å建ï¼ä¸è½å é¤ï¼"); |
| | | } |
| | | |
| | | } |
| | | // BatchCBO batchCBO = new BatchCBO(); |
| | | // batchCBO.getDeleteCbos().addAll(cboList); |
| | | // WebUtil.setPersistence(false); |
| | | // batchCBO.copyFromOther( |
| | | productCodeService.recycleCode(classifyFullInfo.getCurrentClassifyVO().getBtmtypeid(), deleteBatchDTO.getOidList()); |
| | | baseMapper.deleteBatchIds(cboList); |
| | | // ); |
| | | // WebUtil.setPersistence(true); |
| | | // boService.persistenceBatch(batchCBO); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨åç±»åé¶æ®µçç¼å·ï¼è·åå
å«ç屿§ |
| | | * |
| | | * @param codeClassifyOid åç±»çä¸»é® |
| | | * @param phase é¶æ®µçåç§° |
| | | * @return 屿§çè±æåç§° |
| | | */ |
| | | @Override |
| | | public List<String> listPhaseAttrByClassifyOid(String codeClassifyOid, String phase) { |
| | | CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid, false); |
| | | //æ¾é¶æ®µ |
| | | return phaseAttrService.listAttrByTemplateOidAndPhaseId(templateVO.getOid(), phase); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·¯å¾ä¸å
å«å½ååç±»çææåç±»ä¿¡æ¯ |
| | | * |
| | | * @param codeClassifyOid åç±»çä¸»é® |
| | | * @return åç±»æ |
| | | */ |
| | | @Override |
| | | public List<Tree> hasSelfClassifyTree(String codeClassifyOid) { |
| | | if (StringUtils.isBlank(codeClassifyOid)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | CodeClassifyFullInfoBO fullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); |
| | | //æ¥è¯¢å |
| | | List<CodeClassifyVO> childrenClassifys = classifyService.listChildrenClassify(codeClassifyOid, true, "id", true); |
| | | Map<String, CodeClassifyVO> classifyVOMap = new HashMap<>(); |
| | | classifyVOMap.putAll(Optional.ofNullable(fullInfo.getParentClassifyVOs()).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t))); |
| | | classifyVOMap.putAll(Optional.ofNullable(childrenClassifys).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t))); |
| | | TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(CodeClassifyServiceImpl.PARENT_FIELD_NAME.toLowerCase(Locale.ROOT)); |
| | | return revisionModelUtil.doList2Trees(classifyVOMap.values().stream().collect(Collectors.toList()), treeWrapperOptions, (CodeClassifyVO s) -> { |
| | | return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s |
| | | .getLcStatus()) ? (" ãåç¨ã ") : ""); |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨åç±»è·å对åºçæ°æ® |
| | | * |
| | | * @param codeClassifyOid åç±»çä¸»é® |
| | | * @param templateOid 模æ¿çä¸»é® |
| | | * @param conditionMap æ¥è¯¢æ¡ä»¶ |
| | | * @param pageHelper å页ç对象 |
| | | * @return æ°æ®ï¼å
å«ä¸çº§åç±»ï¼ |
| | | */ |
| | | @Override |
| | | public DataGrid<Map<String, String>> gridTableDataByClassifyOid(String codeClassifyOid, String templateOid, Map<String, String> conditionMap, PageHelper pageHelper) { |
| | | //1. 使ç¨åç±»è·åææçä¸çº§åç±»ï¼ç¶åæ ¹æ®åç±»æ¥è¯¢å¯¹åºçæ°æ® |
| | | //2. å
¨é¨ä½¿ç¨å½ååç±»çå½åæ¨¡æ¿æ¥å±ç¤ºå
容 |
| | | //3. å¦ææ¨¡æ¿ä¸ææä¸¾æ³¨å
¥ï¼ç»åè§åï¼ååç
§çï¼éè¦æ§è¡è½¬æ¢ |
| | | //4. æ¥è¯¢çæ¶åï¼ç´æ¥ä½¿ç¨codeclsfpathæ¥æ¥è¯¢ |
| | | CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(codeClassifyOid); |
| | | CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); |
| | | if (topClassifyVO == null || StringUtils.isBlank(topClassifyVO.getBtmtypeid())) { |
| | | throw new VciBaseException("å½å主é¢åºå类没æé¡¶å±åç±»ï¼æè
é¡¶å±å类没æè®¾ç½®ä¸å¡ç±»å"); |
| | | } |
| | | String btmTypeId = topClassifyVO.getBtmtypeid(); |
| | | if (StringUtils.isBlank(btmTypeId)) { |
| | | return new DataGrid<>("è¿ä¸ªåç±»æå±é¡¶å±åç±»æ²¡ææ·»å ä¸å¡ç±»å"); |
| | | } |
| | | if (conditionMap == null) { |
| | | conditionMap = new HashMap<>(); |
| | | } |
| | | //pageHelper.addDefaultDesc("createTime"); |
| | | pageHelper.addDefaultDesc("id"); |
| | | if (!classifyService.checkHasChild(codeClassifyOid)) { |
| | | conditionMap.put(CODE_CLASSIFY_OID_FIELD, codeClassifyOid); |
| | | } else { |
| | | conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) |
| | | + " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED + |
| | | "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )"); |
| | | } |
| | | conditionMap.put("islastr", "1"); |
| | | conditionMap.put("islastv", "1"); |
| | | return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper); |
| | | // List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList()); |
| | | // //åç
§è®©å¹³å°ç´æ¥æ¥è¯¢å°±è¡ |
| | | // List<String> finalSelectFieldList = selectFieldList; |
| | | // List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter( |
| | | // s -> StringUtils.isNotBlank(s.getReferbtmid()) |
| | | // && |
| | | // (finalSelectFieldList.size() ==0 || finalSelectFieldList.contains(s.getId().toLowerCase(Locale.ROOT))) |
| | | // ).collect(Collectors.toList()); |
| | | // if(!CollectionUtils.isEmpty(referAttrVOs)){ |
| | | // for (int i = 0; i < referAttrVOs.size(); i++) { |
| | | // selectFieldList.add(referAttrVOs.get(i).getId() + ".name"); |
| | | // } |
| | | // } |
| | | // //æä»¬ä½¿ç¨åä¸å¡ç±»åçæ¥æ¥è¯¢ |
| | | // DataGrid<Map<String,String>> dataGrid = boService.queryGridByBo(btmTypeId, conditionMap, pageHelper, selectFieldList); |
| | | // //æä»¬éè¦ä½¿ç¨æ¨¡æ¿æ¥è½¬æ¢ |
| | | // if(!CollectionUtils.isEmpty(dataGrid.getData())){ |
| | | // wrapperData(dataGrid.getData(),templateVO,finalSelectFieldList,false); |
| | | // } |
| | | // return dataGrid; |
| | | } |
| | | |
| | | /** |
| | | * æ¹éä¿åæµç¨æ§è¡é¡µé¢ä¿®æ¹çå
容 |
| | | * |
| | | * @param orderDTOList ç¼ç ç¸å
³çä¿¡æ¯ï¼ä¸éè¦ç 段çä¿¡æ¯ |
| | | * @return æ§è¡ç»æ |
| | | */ |
| | | @Override |
| | | public R batchUpdateCode(List<CodeOrderDTO> orderDTOList) { |
| | | // VciBaseUtil.alertNotNull(orderDTOList,"ç¼ç ç³è¯·ç¸å
³ç屿§å
容"); |
| | | // orderDTOList.forEach(orderDTO -> { |
| | | // VciBaseUtil.alertNotNull(orderDTO, "ç¼ç ç³è¯·ç¸å
³ç屿§çå
容é½ä¸ºç©º", orderDTO.getOid(), "æ°æ®ä¸»é®", |
| | | // orderDTO.getCodeClassifyOid(), "主é¢åºåç±»ç主é®"); |
| | | // }); |
| | | // Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); |
| | | // List<ClientBusinessObject> updateList = new ArrayList<>(); |
| | | // // åºè¯¥é½æ¯ä¸ä¸ªåç±»ä¸çä¸å¡æ°æ®ï¼æ¾ç¬¬ä¸æ¡çå°±è¡ |
| | | // CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid()); |
| | | // Map<String,String> cboOidMap = new HashMap<>(); |
| | | // if (CollectionUtils.isEmpty(orderDTOMap.keySet())){ |
| | | // throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | // } |
| | | // cboOidMap.put("oid",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(orderDTOMap.keySet().toArray(new String[0])) + ")"); |
| | | // List<ClientBusinessObject> cboList = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), cboOidMap); |
| | | // if (CollectionUtils.isEmpty(cboList)){ |
| | | // throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | // } |
| | | // BatchCBO batchCBO = new BatchCBO(); |
| | | // CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid()); |
| | | // Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); |
| | | // orderDTOMap.keySet().stream().forEach(oid -> { |
| | | // CodeOrderDTO orderDTO = orderDTOMap.get(oid); |
| | | // ClientBusinessObject cbo = cboMap.get(oid); |
| | | // if (!cbo.getTs().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) { |
| | | // throw new VciBaseException("æ°æ®ä¸æ¯ææ°çï¼å¯è½ä»äººå·²ç»ä¿®æ¹ï¼è¯·å·æ°ååè¯"); |
| | | // } |
| | | // if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { |
| | | // throw new VciBaseException("æ°æ®ä¸æ¯{0}çç¶æï¼ä¸å
许修æ¹", new String[]{CodeDefaultLC.EDITING.getText()}); |
| | | // } |
| | | // //1. 夿å¿
è¾é¡¹ |
| | | // CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | // checkRequiredAttrOnOrder(templateVO, orderDTO); |
| | | // //2.å
注å
¥ï¼åç»åï¼æåæ ¡éª |
| | | // switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); |
| | | // //3.å¤çç»åè§åãç»åè§åä¸è½ä½¿ç¨ç¼ç ç屿§ï¼å 为ç¼ç ççæå¯è½æ¯éè¦å±æ§ç |
| | | // switchComponentAttrOnOrder(templateVO, orderDTO); |
| | | // //4.æ ¡éªè§å |
| | | // checkVerifyOnOrder(templateVO, orderDTO); |
| | | // //5.夿å
³é®å±æ§ |
| | | // checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); |
| | | // //6.æ ¡éªæä¸¾çå
容æ¯å¦æ£ç¡® |
| | | // checkEnumOnOrder(templateVO, orderDTO); |
| | | // //7.å¤çæ¶é´æ ¼å¼ï¼å¨æ°æ®åºéé¢ä¸è®ºæ¯åç¬¦ä¸²è¿æ¯æ¥ææ ¼å¼ï¼é½ä½¿ç¨ç¸åçæ ¼å¼åå¨ |
| | | // switchDateAttrOnOrder(templateVO, orderDTO); |
| | | // //é»è®¤çå
容ä¸è½åï¼æä»¥åªéè¦æ·è´èªå®ä¹çç¸å
³å±æ§å³å¯ |
| | | // copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); |
| | | // //ä¼ä¸ç åéå¢ç çä¸ä¿®æ¹ |
| | | // cbo.setDescription(orderDTO.getDescription()); |
| | | // cbo.setName(orderDTO.getName()); |
| | | // try { |
| | | // cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); |
| | | // cbo.setAttributeValue("name", orderDTO.getName()); |
| | | // } catch (VCIError e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // batchCBO.getUpdateCbos().add(cbo); |
| | | // updateList.add(cbo); |
| | | // }); |
| | | // boService.persistenceBatch(batchCBO); |
| | | // batchSaveSelectChar(firstTemplateVO, cboList); |
| | | return R.success("æä½æåï¼"); |
| | | } |
| | | |
| | | /** |
| | | * æ è®°æµç¨ä¸ä¸å¡æ°æ®æ¯å¦éè¿ |
| | | * |
| | | * @param oid ä¸å¡æ°æ®ä¸»é® |
| | | * @param btmName ä¸å¡ç±»å |
| | | * @param pass æ¯å¦éè¿ |
| | | * @return æ§è¡ç»æ |
| | | */ |
| | | @Override |
| | | public R markDataPassing(String oid, String btmName, Boolean pass) { |
| | | VciBaseUtil.alertNotNull(oid, "ä¸å¡æ°æ®ä¸»é®", btmName, "ä¸å¡ç±»å", pass, "æ è®°ç±»å"); |
| | | boolean flag = false; |
| | | // try { |
| | | // ClientBusinessObjectOperation operation = new ClientBusinessObjectOperation(); |
| | | // ClientBusinessObject data = operation.readBusinessObjectById(oid, btmName); |
| | | // if (data == null || StringUtils.isBlank(data.getOid())) { |
| | | // return BaseResult.fail(DATA_OID_NOT_EXIST); |
| | | // } |
| | | // data.setAttributeValue("passing", String.valueOf(pass)); |
| | | // flag = operation.updateBuinessObject(data); |
| | | // } catch (VCIError e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | if (flag) { |
| | | return R.success("æ è®°æåï¼"); |
| | | } else { |
| | | return R.fail("æ 记失败ï¼"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * é¢è§ç»åè§å |
| | | * |
| | | * @param orderDTO é¢è§çä¿¡æ¯ï¼å
嫿¨¡æ¿çä¸»é® |
| | | * @return keyæ¯ç»åè§åç屿§ãvalueæ¯ç»ååçå¼ï¼ãå¦æç¼ºå°æä¸ªå±æ§çå¼ï¼ä¼ä½ä¸ºvalueè¿å |
| | | */ |
| | | @Override |
| | | public Map<String, String> previewCompRule(CodeOrderDTO orderDTO) { |
| | | VciBaseUtil.alertNotNull(orderDTO, "ç¼ç ç³è¯·ç¸å
³ä¿¡æ¯", orderDTO.getTemplateOid(), "模æ¿ç主é®"); |
| | | //æ¥è¯¢åç±»çä¿¡æ¯ï¼æ¥è¯¢æ¨¡æ¿çä¿¡æ¯ |
| | | CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | switchComponentAttrOnOrder(templateVO, orderDTO); |
| | | return orderDTO.getData(); |
| | | } |
| | | |
| | | /** |
| | | * å类注å
¥çå
容é¢è§ |
| | | * |
| | | * @param codeClassifyOid åç±»çä¸»é® |
| | | * @param codeTemplateOid 模æ¿çä¸»é® |
| | | * @return keyæ¯å类注å
¥ç屿§ï¼valueæ¯æ³¨å
¥åçå¼ |
| | | */ |
| | | @Override |
| | | public Map<String, String> previewClassify(String codeClassifyOid, String codeTemplateOid) { |
| | | if (StringUtils.isBlank(codeClassifyOid) || StringUtils.isBlank(codeTemplateOid)) { |
| | | return new HashMap<>(); |
| | | } |
| | | //æ¥è¯¢åç±»çä¿¡æ¯ï¼æ¥è¯¢æ¨¡æ¿çä¿¡æ¯ |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); |
| | | CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(codeTemplateOid); |
| | | // |
| | | |
| | | CodeOrderDTO orderDTO = new CodeOrderDTO(); |
| | | orderDTO.setData(new HashMap<>()); |
| | | switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); |
| | | return orderDTO.getData(); |
| | | } |
| | | |
| | | /** |
| | | * åçç主é¢åºæ°æ® |
| | | * |
| | | * @param orderDTO æ°æ®çå
容ï¼ä¸éè¦å
å«ç 段çå
容 |
| | | */ |
| | | @Override |
| | | public void upSaveCode(CodeOrderDTO orderDTO) { |
| | | VciBaseUtil.alertNotNull(orderDTO, "ç¼ç ç³è¯·ç¸å
³ç屿§çå
容为空", orderDTO.getCopyFromVersion(), "åå§æ°æ®ç主é®", |
| | | orderDTO.getCodeClassifyOid(), "主é¢åºåç±»ç主é®"); |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); |
| | | //æ¾ä¸å¡ç±»åï¼ç¶å使ç¨ä¸»é®å»è·åæ°æ®åºéçæ°æ® |
| | | // List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getCopyFromVersion())); |
| | | // if (CollectionUtils.isEmpty(cbos)) { |
| | | // throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | // } |
| | | // ClientBusinessObject oldCbo = cbos.get(0); |
| | | // if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) { |
| | | // throw new VciBaseException("æ°æ®ä¸æ¯{0}çç¶æï¼ä¸å
è®¸æ°æ®æ´æ¹", new String[]{CodeDefaultLC.RELEASED.getText()}); |
| | | // } |
| | | // //éè¦åç |
| | | // ClientBusinessObjectOperation cboOperation = new ClientBusinessObjectOperation(); |
| | | // ClientBusinessObject cbo = null; |
| | | // try { |
| | | // //cbo = cboOperation.createBusinessObjectVersion(oldCbo,VciBaseUtil.getCurrentUserId()); |
| | | // cbo = cboOperation.reviseBusinessObject(oldCbo, ""); |
| | | // } catch (VCIError e) { |
| | | // throw new VciBaseException("åå§åç¸å
³çå
容åºç°äºé误", new String[0], e); |
| | | // } |
| | | // //1. 夿å¿
è¾é¡¹ |
| | | // CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | // checkRequiredAttrOnOrder(templateVO, orderDTO); |
| | | // //2.å
注å
¥ï¼åç»åï¼æåæ ¡éª |
| | | // switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); |
| | | // //3.å¤çç»åè§åãç»åè§åä¸è½ä½¿ç¨ç¼ç ç屿§ï¼å 为ç¼ç ççæå¯è½æ¯éè¦å±æ§ç |
| | | // switchComponentAttrOnOrder(templateVO, orderDTO); |
| | | // //4.æ ¡éªè§å |
| | | // checkVerifyOnOrder(templateVO, orderDTO); |
| | | // //5.夿å
³é®å±æ§ |
| | | // checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); |
| | | // //6.æ ¡éªæä¸¾çå
容æ¯å¦æ£ç¡® |
| | | // checkEnumOnOrder(templateVO, orderDTO); |
| | | // //7.å¤çæ¶é´æ ¼å¼ï¼å¨æ°æ®åºéé¢ä¸è®ºæ¯åç¬¦ä¸²è¿æ¯æ¥ææ ¼å¼ï¼é½ä½¿ç¨ç¸åçæ ¼å¼åå¨ |
| | | // switchDateAttrOnOrder(templateVO, orderDTO); |
| | | // //é»è®¤çå
容ä¸è½åï¼æä»¥åªéè¦æ·è´èªå®ä¹çç¸å
³å±æ§å³å¯ |
| | | // copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); |
| | | // //ä¼ä¸ç åéå¢ç çä¸ä¿®æ¹ |
| | | // cbo.setDescription(orderDTO.getDescription()); |
| | | // cbo.setName(orderDTO.getName()); |
| | | // try { |
| | | // cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); |
| | | // cbo.setAttributeValue("name", orderDTO.getName()); |
| | | // } catch (VCIError e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // //æ°æ®çæ¶åï¼ç¼ç æ¯ä¸åç |
| | | // cbo.setCreateTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getCreateTime())), "yyyy-MM-dd HH:mm:ss")); |
| | | // cbo.setLastModifyTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getLastModifyTime())), "yyyy-MM-dd HH:mm:ss")); |
| | | // List<ClientBusinessObject> cboList = new ArrayList<>(); |
| | | // cboList.add(cbo); |
| | | // try { |
| | | // cboOperation.saveRevisionBuinessObject(cbo); |
| | | // } catch (VCIError vciError) { |
| | | // throw new VciBaseException("æ°æ®æ´æ¹ä¿ååºéäº", new String[0], vciError); |
| | | // } |
| | | // batchSaveSelectChar(templateVO, cboList); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨ç 段ç主é®è·ååç±»çç å¼å
容 |
| | | * |
| | | * @param classifySecOid ç æ®µçä¸»é® |
| | | * @param parentClassifyValueOid ä¸çº§åç±»çä¸»é® |
| | | * @return åç±»ç å¼çå
容 |
| | | */ |
| | | @Override |
| | | public List<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid) { |
| | | return classifyValueService.listCodeClassifyValueBySecOid(classifySecOid, parentClassifyValueOid); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨ä¸»é¢åºåç±»è·åç¼ç è§å |
| | | * |
| | | * @param codeClassifyOid åç±»çä¸»é® |
| | | * @return ç¼ç è§åçå
容 |
| | | */ |
| | | @Override |
| | | public CodeRuleVO getCodeRuleByClassifyOid(String codeClassifyOid) { |
| | | VciBaseUtil.alertNotNull(codeClassifyOid, "åç±»ç主é®"); |
| | | CodeClassifyVO classifyVO = classifyService.getObjectByOid(codeClassifyOid); |
| | | String codeRuleOid = classifyVO.getCoderuleoid(); |
| | | if (StringUtils.isBlank(codeRuleOid)) { |
| | | //å¾ä¸æ¾ |
| | | CodeClassifyFullInfoBO fullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); |
| | | return getCodeRuleByClassifyFullInfo(fullInfo); |
| | | } |
| | | //æä»¬æ¥è¯¢ç¼ç è§å |
| | | return ruleService.getObjectHasSecByOid(codeRuleOid); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨åç±»çå
¨é¨ä¿¡æ¯è·åç¼ç è§å |
| | | * |
| | | * @param fullInfoBO åç±»çå
¨é¨ä¿¡æ¯ |
| | | * @return è§åçå
容 |
| | | */ |
| | | @Override |
| | | public CodeRuleVO getCodeRuleByClassifyFullInfo(CodeClassifyFullInfoBO fullInfoBO) { |
| | | //å¾ä¸æ¾ |
| | | String codeRuleOid = ""; |
| | | if (StringUtils.isNotBlank(fullInfoBO.getCurrentClassifyVO().getCoderuleoid())) { |
| | | codeRuleOid = fullInfoBO.getCurrentClassifyVO().getCoderuleoid(); |
| | | } else { |
| | | if (CollectionUtils.isEmpty(fullInfoBO.getParentClassifyVOs())) { |
| | | //说æå·²ç»æ¯æé«å±çº§, |
| | | throw new VciBaseException("å½å主é¢åºåç±»ï¼ä»¥åå®çææçä¸çº§åç±»é½æ²¡æè®¾ç½®ç¼ç è§å"); |
| | | } |
| | | List<CodeClassifyVO> parentClassifyVOList = fullInfoBO.getParentClassifyVOs().stream().sorted((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel())).collect(Collectors.toList()); |
| | | //仿é«çlevelå¼å§è·å |
| | | for (int i = 0; i < parentClassifyVOList.size(); i++) { |
| | | CodeClassifyVO record = parentClassifyVOList.get(i); |
| | | if (StringUtils.isNotBlank(record.getCoderuleoid())) { |
| | | codeRuleOid = record.getCoderuleoid(); |
| | | break; |
| | | } |
| | | } |
| | | if (StringUtils.isBlank(codeRuleOid)) { |
| | | throw new VciBaseException("å½å主é¢åºåç±»ï¼ä»¥åå®çææçä¸çº§åç±»é½æ²¡æè®¾ç½®ç¼ç è§å"); |
| | | } |
| | | } |
| | | return ruleService.getObjectHasSecByOid(codeRuleOid); |
| | | } |
| | | |
| | | /** |
| | | * ä½¿ç¨æ°æ®ä¸»é®è·åæ°æ®çå
¨é¨ä¿¡æ¯ |
| | | * |
| | | * @param oid ä¸»é® |
| | | * @param templateOid 模æ¿çä¸»é® |
| | | * @return æ°æ®çå
容 |
| | | */ |
| | | @Override |
| | | public R<List<Map<String, String>>> getDataByOid(String oid, String templateOid) { |
| | | CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); |
| | | //为äºé²æ¢æ¨¡æ¿ä¸çä¸å¡ç±»åä¸åç±»ä¸ä¸å¯¹åº |
| | | CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(templateVO.getCodeclassifyoid()); |
| | | String btmId = topClassifyVO.getBtmtypeid(); |
| | | //æ¥è¯¢æ°æ® |
| | | Map<String, String> conditionMap = WebUtil.getOidQuery(oid); |
| | | CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1)); |
| | | //æä»¬ä½¿ç¨åä¸å¡ç±»åçæ¥æ¥è¯¢ |
| | | List<Map> cbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); |
| | | // List<ClientBusinessObject> cbos = boService.queryByOnlySql(sqlBO.getSqlUnPage()); |
| | | if (CollectionUtils.isEmpty(cbos)) { |
| | | throw new VciBaseException("æ°æ®å¨ç³»ç»ä¸ä¸åå¨ï¼æ¯å¦å 为修æ¹è¿ä¸å¡ç±»åï¼"); |
| | | } |
| | | // Map<String, String> data = new HashMap<>(); |
| | | Map<String,String> cbo = cbos.get(0); |
| | | // WebUtil.copyValueToMapFromCbos(cbo, data); |
| | | List<Map<String, String>> dataList = new ArrayList<>(); |
| | | dataList.add(cbo); |
| | | wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true); |
| | | R<List<Map<String, String>>> result = R.data(Collections.singletonList(cbo)); |
| | | //æä»¬è¦çæ¯å¦ä¸æ¯åççï¼åççè¯ï¼éè¦å¯¹æ¯ä¸ç¸çç屿§ |
| | | String copy = String.valueOf(cbo.get("COPYFROMVERSION")); |
| | | // if (StringUtils.isBlank(copy)) { |
| | | // copy = cbo.getAttributeValue("copyfromversion"); |
| | | // } |
| | | if (StringUtils.isNotBlank(copy)) { |
| | | //说ææåæ´çå
容 |
| | | |
| | | CodeTemplateAttrSqlBO oldSqlBO = getSqlByTemplateVO(btmId, templateVO, WebUtil.getOidQuery(copy), new PageHelper(-1)); |
| | | //æä»¬ä½¿ç¨åä¸å¡ç±»åçæ¥æ¥è¯¢ |
| | | // List<Map> cbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); |
| | | List<Map> oldCbos = commonsMapper.selectBySql(oldSqlBO.getSqlUnPage()); |
| | | if (!CollectionUtils.isEmpty(oldCbos)) { |
| | | // Map<String, String> newData = new HashMap<>(); |
| | | // WebUtil.copyValueToMapFromCbos(cbo, newData); |
| | | Map<String, String> oldData = new HashMap<>(); |
| | | oldData = oldCbos.get(0); |
| | | Map<String, String> difFieldMap = new HashMap<>(); |
| | | Map<String, String> finalOldData = oldData; |
| | | cbo.forEach((key, value) -> { |
| | | String oldValue = finalOldData.getOrDefault(key, ""); |
| | | if (value == null) { |
| | | value = ""; |
| | | } |
| | | if (oldValue == null) { |
| | | oldValue = ""; |
| | | } |
| | | if (!value.equalsIgnoreCase(oldValue)) { |
| | | difFieldMap.put(key, oldValue); |
| | | } |
| | | }); |
| | | List<Map<String, String>> difFieldList = new ArrayList<>(); |
| | | difFieldList.add(difFieldMap); |
| | | result.setData(difFieldList); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * ä½¿ç¨æ¨¡æ¿ç主é®è·å表åçä¿¡æ¯ |
| | | * |
| | | * @param templateOid 模æ¿çä¸»é® |
| | | * @param executionId æµç¨æ§è¡id |
| | | * @param processUse æµç¨æ¨¡æ¿çç¨é |
| | | * @return uiç¸å
³çå
容 |
| | | */ |
| | | @Override |
| | | public List<String> getFieldByProcessTemplate(String templateOid, String executionId, String processUse) { |
| | | VciBaseUtil.alertNotNull(templateOid, "模æ¿ä¸»é®", executionId, "æµç¨çæ§è¡Id", processUse, "æµç¨æ¨¡æ¿ç¨é"); |
| | | while (StringUtils.countMatches(executionId, ".") > 1) { |
| | | executionId = executionId.substring(0, executionId.lastIndexOf(".")); |
| | | } |
| | | String sql = "select wm_concat(distinct (t.codetempattrOidArr)) codetempattroidarr\n" + |
| | | "from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY_PROCESS_TEMPLATE) + " t\n" + |
| | | "join PLFLOWINSTANCE plfi on t.ID = plfi.PLTEMPLATEPUID\n" + |
| | | "where plfi.PLEXECUTIONID = '" + executionId + "' and t.CLASSIFYTEMPLATEOID = '" + templateOid + "' and t.CODEPROCESSUSE = '" + processUse + "'"; |
| | | // List<ClientBusinessObject> tempAttrOidArr = boService.queryByOnlySql(sql); |
| | | List<Map> tempAttrOidArr = commonsMapper.selectBySql(sql); |
| | | if (CollectionUtils.isEmpty(tempAttrOidArr) || StringUtils.isBlank((CharSequence) tempAttrOidArr.get(0).get("codetempattroidarr"))) { |
| | | return new ArrayList<>(); |
| | | } |
| | | return VciBaseUtil.str2List(tempAttrOidArr.get(0).get("codetempattroidarr").toString()); |
| | | } |
| | | /** |
| | | * 使ç¨åç±»ç主é®è·åä¸å¡æ°æ® |
| | | * |
| | | * @param btmType ä¸å¡ç±»å |
| | | * @param queryObject æ¥è¯¢å¯¹è±¡ |
| | | * @return è¡¨æ ¼çæ¾ç¤ºå¯¹è±¡å¼ |
| | | */ |
| | | @Override |
| | | public DataGrid<Map<String, String>> getTableDataByExecutionId(String btmType, BaseQueryObject queryObject) { |
| | | VciBaseUtil.alertNotNull(btmType, "ä¸å¡ç±»å"); |
| | | if (queryObject == null) { |
| | | queryObject = new BaseQueryObject(); |
| | | } |
| | | if (queryObject.getConditionMap() == null) { |
| | | queryObject.setConditionMap(new HashMap<>()); |
| | | } |
| | | Map<String, String> conditionMap = queryObject.getConditionMap(); |
| | | PageHelper pageHelper = queryObject.getPageHelper(); |
| | | if (!conditionMap.containsKey("oid")) { |
| | | throw new VciBaseException("ä¸å¡æ°æ®ä¸»é®ä¸è½ä¸ºç©º"); |
| | | } |
| | | List<String> oidList = VciBaseUtil.str2List(conditionMap.get("oid")); |
| | | Map<String, String> oidMap = new HashMap<>(); |
| | | if (conditionMap.get("oid").contains(",")) { |
| | | oidMap.put("oid", QueryOptionConstant.IN +"("+ VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")"); |
| | | } else { |
| | | oidMap.put("oid", conditionMap.get("oid")); |
| | | } |
| | | if (CollectionUtils.isEmpty(oidMap)) { |
| | | throw new VciBaseException("ä¸å¡æ°æ®ä¸»é®ä¸è½ä¸ºç©º"); |
| | | } |
| | | // List<ClientBusinessObject> cbos = boService.queryCBO(btmType, oidMap); |
| | | // if (CollectionUtils.isEmpty(cbos)) { |
| | | // throw new VciBaseException("æªæ¾å°ä¸å¡æ°æ®"); |
| | | // } |
| | | // ClientBusinessObject cbo = cbos.get(0); |
| | | // String templateOid = cbo.getAttributeValue("CODETEMPLATEOID"); |
| | | // Map<String, String> templateOidMap = new HashMap<>(); |
| | | // templateOidMap.put("oid", templateOid); |
| | | // List<CodeClassifyTemplate> templateDOList = boService.queryObject(CodeClassifyTemplate.class, templateOidMap); |
| | | // templateOidMap.clear(); |
| | | // templateOidMap.put("CLASSIFYTEMPLATEOID",templateOid); |
| | | // List<CodeClassifyTemplateAttr> attrDOList = boService.queryObject(CodeClassifyTemplateAttr.class, templateOidMap); |
| | | // if (CollectionUtils.isEmpty(templateDOList)) { |
| | | // logger.error("æ¾ä¸å°ä¸å¡æ°æ®å
³èçæ¨¡æ¿ï¼æ¨¡æ¿ä¸»é®ï¼" + templateOid); |
| | | // throw new VciBaseException("æ¾ä¸å°ä¸å¡æ°æ®å
³èçæ¨¡æ¿"); |
| | | // } |
| | | // CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0)); |
| | | // templateVO.setAttributes(templateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList)); |
| | | // try { |
| | | // if (oidList.size() > 1){ |
| | | // DataGrid<Map<String,String>> allDataGrid = new DataGrid<>(); |
| | | // List<Map<String,String>> allData = new ArrayList<>(); |
| | | // oidList.forEach(oid -> { |
| | | // Map<String,String> condition = new HashMap<>(); |
| | | // condition.put("oid",oid); |
| | | // DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper); |
| | | // allData.addAll(dataGrid.getData()); |
| | | // }); |
| | | // allDataGrid.setData(allData); |
| | | // return allDataGrid; |
| | | // }else { |
| | | // return queryGrid(btmType, templateVO, conditionMap, pageHelper); |
| | | // } |
| | | // } catch (Exception e) { |
| | | // System.out.println(e.getMessage()); |
| | | return null; |
| | | // } |
| | | } |
| | | /** |
| | | * 使ç¨åç±»ç主é®è·åè¡¨æ ¼çå®ä¹ |
| | | * |
| | | * @param codeClassifyOid åç±»ä¸»é® |
| | | * @param phase é¶æ®µçåç§° |
| | | * @return UIç¸å
³çä¿¡æ¯ï¼ä»
å
å«è¡¨å) |
| | | */ |
| | | @Override |
| | | public MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid, String phase) { |
| | | MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); |
| | | CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); |
| | | uiInfoVO.setTemplateVO(templateVO); |
| | | UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO,true); |
| | | List<String> phaseAttrIdList = listPhaseAttrByClassifyOid(codeClassifyOid, phase); |
| | | uiTableDefineVO.getCols().stream().forEach(list -> { |
| | | List<UITableFieldVO> visiableTableField=new ArrayList<>(); |
| | | if(StringUtils.isNotBlank(phase)) { |
| | | visiableTableField = list.stream().filter(col -> |
| | | phaseAttrIdList.stream().anyMatch(s -> StringUtils.equalsIgnoreCase(col.getField(), s) || |
| | | (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s)) |
| | | || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s)) |
| | | )).collect(Collectors.toList()); |
| | | }else{ |
| | | visiableTableField= list.stream().filter(col -> |
| | | templateVO.getAttributes().stream().anyMatch(s -> |
| | | (!s.getReadOnlyFlag().equalsIgnoreCase("true")&& StringUtils.equalsIgnoreCase(col.getField(), s.getId())) || |
| | | (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s.getId())) |
| | | || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s.getId())) |
| | | )).collect(Collectors.toList()); |
| | | } |
| | | |
| | | visiableTableField.stream().forEach(vo -> { |
| | | uiTableDefineVO.setHasEditor(true); |
| | | if ("refer".equalsIgnoreCase(vo.getFieldType())) { |
| | | setReferConfig2EditConfig(vo); |
| | | } else if ("combox".equalsIgnoreCase(vo.getFieldType())) { |
| | | setComboxConfig2EditConfig(vo); |
| | | } else if (StringUtils.isNotBlank(vo.getDateFormate())){ |
| | | vo.setEdit("date"); |
| | | }else { |
| | | vo.setEdit(vo.getFieldType()); |
| | | } |
| | | }); |
| | | }); |
| | | uiInfoVO.setTableDefineVO(uiTableDefineVO); |
| | | wrapperResemble(templateVO, uiInfoVO); |
| | | return uiInfoVO; |
| | | } |
| | | |
| | | /** |
| | | * 模æ¿å±æ§è½¬æ¢ä¸ºè¡¨æ ¼å®ä¹çä¿¡æ¯ |
| | | * |
| | | * @param templateVO 模æ¿çæ¾ç¤ºå¯¹è±¡ |
| | | * @param forEdit æ¯å¦æ¯ç¼è¾æé |
| | | * @return è¡¨æ ¼çä¿¡æ¯ |
| | | */ |
| | | private UITableDefineVO wrapperTableDefineByTemplate(CodeClassifyTemplateVO templateVO,boolean forEdit) { |
| | | //å°è£
ä¿¡æ¯ |
| | | UITableDefineVO tableDefineVO = new UITableDefineVO(); |
| | | tableDefineVO.setOid(templateVO.getOid()); |
| | | tableDefineVO.setBtmType(templateVO.getBtmTypeId()); |
| | | tableDefineVO.setDisplayQueryArea(true); |
| | | //å端ä¼é»è®¤å页çä¿¡æ¯ |
| | | |
| | | //å¤çææçåï¼è¿ä¸ªæ¨¡æ¿æ²¡æåå¹¶ç表头çæ
åµ |
| | | List<UITableFieldVO> fieldVOList = new ArrayList<>(); |
| | | Map<String, String> comboxOrReferFieldMap = new HashMap<>(); |
| | | |
| | | templateVO.getAttributes().forEach(attrVO -> { |
| | | UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO,forEdit); |
| | | if ("combox".equalsIgnoreCase(tableFieldVO.getFieldType())) { |
| | | comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField()); |
| | | } |
| | | if ("refer".equalsIgnoreCase(tableFieldVO.getFieldType())) { |
| | | comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField()); |
| | | } |
| | | if(StringUtils.isNotBlank(tableFieldVO.getEdit())){ |
| | | tableDefineVO.setHasEditor(true); |
| | | } |
| | | fieldVOList.add(tableFieldVO); |
| | | }); |
| | | List<List<UITableFieldVO>> cols = new ArrayList<>(); |
| | | cols.add(fieldVOList); |
| | | tableDefineVO.setCols(cols); |
| | | Map<String, UITableFieldVO> fieldVOMap = fieldVOList.stream().collect(Collectors.toMap(s -> s.getField().toLowerCase(Locale.ROOT), t -> t)); |
| | | //æ¥è¯¢å±æ§ |
| | | List<CodeClassifyTemplateAttrVO> queryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getQueryAttrFlag())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(queryAttrVOs)) { |
| | | List<UITableFieldVO> queryFieldVOs = new ArrayList<>(); |
| | | queryAttrVOs.stream().forEach(attrVO -> { |
| | | String attrId = attrVO.getId().toLowerCase(Locale.ROOT); |
| | | attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrVO.getId()).toLowerCase(Locale.ROOT); |
| | | if (fieldVOMap.containsKey(attrId)) { |
| | | queryFieldVOs.add(fieldVOMap.get(attrId)); |
| | | } |
| | | }); |
| | | tableDefineVO.setQueryColumns(queryFieldVOs); |
| | | } |
| | | //é«çº§å±æ§ |
| | | List<CodeClassifyTemplateAttrVO> seniorQueryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getSeniorQueryAttrFlag())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(seniorQueryAttrVOs)) { |
| | | List<UITableFieldVO> queryFieldVOs = new ArrayList<>(); |
| | | seniorQueryAttrVOs.stream().forEach(attrVO -> { |
| | | String attrId = attrVO.getId().toLowerCase(Locale.ROOT); |
| | | attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrId).toLowerCase(Locale.ROOT); |
| | | if (fieldVOMap.containsKey(attrId)) { |
| | | queryFieldVOs.add(fieldVOMap.get(attrId)); |
| | | } |
| | | }); |
| | | tableDefineVO.setSeniorQueryColumns(queryFieldVOs); |
| | | } |
| | | return tableDefineVO; |
| | | } |
| | | |
| | | /** |
| | | * å è½½æåç
§çä¿®æ¹é
ç½® |
| | | * @param vo è¡¨æ ¼åæ®µæ¾ç¤ºå¯¹è±¡ |
| | | */ |
| | | private void setReferConfig2EditConfig(UITableFieldVO vo) { |
| | | if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())){ |
| | | vo.getReferConfig().getWhere().keySet().forEach(key -> { |
| | | vo.getReferConfig().getWhere().put(key, "'" + vo.getReferConfig().getWhere().get(key) + "'"); |
| | | }); |
| | | } |
| | | if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())){ |
| | | String parentValue = vo.getReferConfig().getParentValue(); |
| | | parentValue ="\\" + parentValue.replaceAll("'","{vci-quote}").replaceAll("=","{vci-equals}"); |
| | | vo.getReferConfig().setParentValue(parentValue); |
| | | } |
| | | String referConfig = vo.getReferConfig().toString() |
| | | .replaceAll("=",":") |
| | | .replaceAll("UITableCustomDefineVO","") |
| | | .replaceAll("UIFieldSortVO","") |
| | | .replaceAll("UITablePageVO","") |
| | | .replaceAll("UITableFieldVO","") |
| | | .replaceAll("UIFormReferVO","") |
| | | .replaceAll("\\{vci-equals}","=") |
| | | .replaceAll("\\{vci-quote}","\\\\'") |
| | | .replaceAll("'null'","null"); |
| | | referConfig = referConfig + ",fieldMap:{" + vo.getQueryField() + ":'" + vo.getReferConfig().getValueField() + "'}"; |
| | | vo.setEditConfig("{referConfig:" + referConfig + "}"); |
| | | vo.setEdit(vo.getFieldType()); |
| | | } |
| | | |
| | | /** |
| | | * å è½½æä¸ææ¡çä¿®æ¹é
ç½® |
| | | * @param vo è¡¨æ ¼åæ®µæ¾ç¤ºå¯¹è±¡ |
| | | */ |
| | | private void setComboxConfig2EditConfig(UITableFieldVO vo) { |
| | | vo.setEditConfig("{editable:true,comboxKey:'" + vo.getComboxKey() + "'"); |
| | | if (!CollectionUtils.isEmpty(vo.getData())){ |
| | | vo.setEditConfig(vo.getEditConfig()+", comboxConfig:"); |
| | | for (int i = 0; i < vo.getData().size(); i++) { |
| | | KeyValue data = vo.getData().get(i); |
| | | if (i == vo.getData().size() -1){ |
| | | vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'}]}"); |
| | | }else if (i == 0){ |
| | | vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},"); |
| | | }else{ |
| | | vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},"); |
| | | } |
| | | } |
| | | vo.setEditConfig(vo.getEditConfig() + ",valueField:'" + vo.getQueryField() + "'"); |
| | | } |
| | | vo.setEditConfig(vo.getEditConfig() + "}"); |
| | | vo.setEdit(vo.getFieldType()); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨åç±»çç¼å·è·¯å¾ï¼è·å表åçç¸å
³å®ä¹ |
| | | * |
| | | * @param idPath ç¼å·çè·¯å¾ï¼å¿
é¡»ä»é¡¶å±èç¹å¼å§ï¼xx/yyy/zz |
| | | * @return UIç¸å
³çä¿¡æ¯ï¼ä»
å
å«è¡¨å) |
| | | */ |
| | | @Override |
| | | public MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath) { |
| | | CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(idPath); |
| | | if(classifyVO !=null){ |
| | | return getFormDefineByClassifyOid(classifyVO.getOid()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨ä¸»é¢åºåç±»ç主é®è·å表åçä¿¡æ¯ |
| | | * |
| | | * @param codeClassifyOid åç±»çä¸»é® |
| | | * @return uiç¸å
³çå
容 |
| | | */ |
| | | @Override |
| | | public MdmUIInfoVO getFormDefineByClassifyOid(String codeClassifyOid) { |
| | | MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); |
| | | CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); |
| | | uiInfoVO.setTemplateVO(templateVO); |
| | | uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid)); |
| | | wrapperResemble(templateVO, uiInfoVO); |
| | | return uiInfoVO; |
| | | } |
| | | |
| | | /** |
| | | * ä½¿ç¨æ¨¡æ¿ä¸»é®è·åuiç¸å
³çå
容 |
| | | * |
| | | * @param templateOid 模æ¿çä¸»é® |
| | | * @return uiç¸å
³çå
容 |
| | | */ |
| | | @Override |
| | | public MdmUIInfoVO getTableDefineByTemplateOid(String templateOid) { |
| | | return getTableDefineByTemplateVO(templateService.getObjectHasAttrByOid(templateOid)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä½¿ç¨æ¨¡æ¿æ¾ç¤ºå¯¹è±¡è½¬æ¢ä¸ºè¡¨æ ¼çä¿¡æ¯ï¼å
嫿©å±çæé®ï¼ |
| | | * |
| | | * @param templateVO 模æ¿çä¿¡æ¯ |
| | | * @return UIç¸å
³çå
容ï¼ä»
å
å«è¡¨æ ¼ä¿¡æ¯ï¼ |
| | | */ |
| | | private MdmUIInfoVO getTableDefineByTemplateVO(CodeClassifyTemplateVO templateVO) { |
| | | //å
çè¿ä¸ªåç±»æ¬èº«æ¯å¦ææ¨¡æ¿ |
| | | MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); |
| | | uiInfoVO.setTemplateVO(templateVO); |
| | | //æä»¬éè¦å°æ¨¡æ¿è½¬æ¢ä¸ºè¡¨æ ¼ç¸å
³çæ¾ç¤ºä¿¡æ¯ |
| | | uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(),false)); |
| | | //éè¦å»çæ©å±çæé®,åªæå表é颿¬èº«ææ·»å è¿å»ï¼å·¥å
·æ ä¸çåç¬è·å |
| | | List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateVO.getOid(), true); |
| | | if (!CollectionUtils.isEmpty(buttonVOS)) { |
| | | //æä»¬è¦åå¼ä¸ºæé®ï¼è¿æ¯å¨æä½åéé¢ |
| | | List<CodeClassifyTemplateButtonVO> tableButtonVOs = buttonVOS.stream().filter(s -> CodeUseButtonPositionTypeEnum.TABLE.getValue().equalsIgnoreCase(s.getButtonUse())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(tableButtonVOs)) { |
| | | UITableFieldVO optionFieldVO = new UITableFieldVO(); |
| | | optionFieldVO.setField("options"); |
| | | optionFieldVO.setTitle("æä½"); |
| | | optionFieldVO.setFieldType("text"); |
| | | optionFieldVO.setOptionField(true); |
| | | List<KeyValue> buttons = new ArrayList<>(); |
| | | Map<String, String> optionJsMap = new HashMap<>(); |
| | | tableButtonVOs.stream().forEach(buttonVO -> { |
| | | KeyValue kv = new KeyValue(); |
| | | kv.setKey(buttonVO.getId()); |
| | | kv.setValue(buttonVO.getClassifyButtonOidName()); |
| | | kv.setAttributes(VciBaseUtil.objectToMap(buttonVO)); |
| | | buttons.add(kv); |
| | | optionJsMap.put(buttonVO.getId(), buttonVO.getButtonVO().getExecutejs()); |
| | | }); |
| | | optionFieldVO.setOptionJsMap(optionJsMap); |
| | | uiInfoVO.getTableDefineVO().getCols().get(0).add(optionFieldVO); |
| | | } |
| | | } |
| | | return uiInfoVO; |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨åç±»çç¼å·è·¯å¾ï¼è·åè¡¨æ ¼çç¸å
³å®ä¹ |
| | | * |
| | | * @param codeClassifyIdPath åç±»çç¼å·è·¯å¾ï¼å¿
é¡»æ¯ä»é¡¶å±èç¹å¼å§ï¼xxx/yy/zzè¿æ ·çæ ¼å¼ |
| | | * @param functionId åè½çç¼å· |
| | | * @return UIç¸å
³çä¿¡æ¯ï¼ä»
å
å«è¡¨æ ¼) |
| | | */ |
| | | @Override |
| | | public MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath, String functionId) { |
| | | CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(codeClassifyIdPath); |
| | | if(classifyVO !=null){ |
| | | return getUIInfoByClassifyOid(classifyVO.getOid(),functionId); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨å类主é®è·å页é¢çå
容ï¼å
å«æé® |
| | | * |
| | | * @param codeClassifyOid 主é¢åºåç±»ä¸»é® |
| | | * @param functionId åè½çç¼å· |
| | | * @return UIç¸å
³çå
容 |
| | | */ |
| | | @Override |
| | | public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId) { |
| | | VciBaseUtil.alertNotNull(codeClassifyOid, "主é¢åºå类主é®"); |
| | | MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid)); |
| | | uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0); |
| | | if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) { |
| | | //åè½æé®æå¡è¿æªå®ç°ï¼çå®ç°äºï¼å¨è¿è¡è°ç¨ |
| | | //List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId); |
| | | // if (operationVOS == null) { |
| | | // operationVOS = new ArrayList<>(); |
| | | // } |
| | | //æ¥è¯¢æ©å±æé® |
| | | // List<CodeButtonVO> buttonVOS = listButtonInToolbarByClassifyOid(codeClassifyOid); |
| | | // if (!CollectionUtils.isEmpty(buttonVOS)) { |
| | | // for (int i = 0; i < buttonVOS.size(); i++) { |
| | | // CodeButtonVO buttonVO = buttonVOS.get(i); |
| | | // SmOperationVO operationVO = new SmOperationVO(); |
| | | // operationVO.setModuleNo(functionId); |
| | | // operationVO.setUniqueFlag(buttonVO.getId()); |
| | | // operationVO.setName(buttonVO.getName()); |
| | | // operationVO.setAlias(operationVO.getName()); |
| | | // operationVO.setExecuteJs(buttonVO.getExecutejs()); |
| | | // operationVO.setIconCls(buttonVO.getIconcls()); |
| | | // operationVOS.add(operationVO); |
| | | // } |
| | | // } |
| | | // uiInfoVO.setButtons(operationVOS); |
| | | } |
| | | return uiInfoVO; |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨å类主é®è·åå·¥å
·æ ä¸çæé®ä¿¡æ¯ |
| | | * |
| | | * @param codeClassifyOid åç±»çä¸»é® |
| | | * @return æé®çä¿¡æ¯ï¼ä¼æç
§æåºå·è¿è¡æåº |
| | | */ |
| | | @Override |
| | | public List<CodeButtonVO> listButtonInToolbarByClassifyOid(String codeClassifyOid) { |
| | | CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); |
| | | return listButtonInToolbarByTemplateOid(templateVO.getOid()); |
| | | } |
| | | |
| | | /** |
| | | * ä½¿ç¨æ¨¡æ¿ä¸»é®è·åå·¥å
·æ ä¸çæé®ä¿¡æ¯ |
| | | * |
| | | * @param templateOid 模æ¿çä¸»é® |
| | | * @return æé®çä¿¡æ¯ï¼ä¼æç
§æåºå·è¿è¡æåº |
| | | */ |
| | | @Override |
| | | public List<CodeButtonVO> listButtonInToolbarByTemplateOid(String templateOid) { |
| | | List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateOid, true); |
| | | if (CollectionUtils.isEmpty(buttonVOS)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | List<CodeClassifyTemplateButtonVO> toolbarButtons = buttonVOS.stream().filter(s -> CodeUseButtonPositionTypeEnum.TOOLBAR.getValue().equalsIgnoreCase(s.getButtonUse())).collect(Collectors.toList()); |
| | | if (CollectionUtils.isEmpty(toolbarButtons)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | List<CodeButtonVO> buttonVOList = new ArrayList<>(); |
| | | for (int i = 0; i < toolbarButtons.size(); i++) { |
| | | buttonVOList.add(toolbarButtons.get(i).getButtonVO()); |
| | | } |
| | | return buttonVOList; |
| | | } |
| | | } |