Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineClient.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,69 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill åºéª (smallchill@163.com) */ package com.vci.ubcs.code.feign; import com.vci.ubcs.code.entity.CodeWupin; import com.vci.ubcs.starter.revision.model.BaseModel; import org.springblade.core.launch.constant.AppConstant; import org.springblade.core.mp.support.BladePage; import org.springblade.core.tool.api.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import java.beans.IntrospectionException; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.List; /** * ç¼ç ä¿¡æ¯ Feignæ¥å£ç±» * * @author yuxc * @since 2023-05-05 */ @FeignClient( value = AppConstant.APPLICATION_NAME_CODE, fallback = IMdmEngineFallback.class ) public interface IMdmEngineClient { String API_PREFIX = "/mdmEngineClient"; String SELECT_BY_TYPE_OID = API_PREFIX + "/selectByTypeAndOid"; String INSERT_BATCH_BY_TYPE = API_PREFIX + "/insertBatchByType"; /** * ä¼ å ¥ä¸å¡ç±»å以åç¸oidéåæ¥è¯¢æ°æ®è¿è¡è¿å * * @param btmType ä¸å¡ç±»å * @param oids éè¦æ¥è¯¢çoidéå éå·åå¼ * @return æ¥è¯¢åºçæ°æ® */ @GetMapping(SELECT_BY_TYPE_OID) R<List<BaseModel>> selectByTypeAndOid(@RequestParam("btmType") String btmType, @RequestParam("oids") String oids) throws SQLException, IntrospectionException, NoSuchFieldException, InvocationTargetException, IllegalAccessException, InstantiationException; /** * ä¼ å ¥ä¸å¡ç±»å以åç¸å ³æ°æ®è¿è¡æ¹éæå ¥æä½ * * @param btmType ä¸å¡ç±»å * @param baseModels å¤çæ°æ® * @return å¤çæåæ°æ®æ¡æ° */ @GetMapping(INSERT_BATCH_BY_TYPE) R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception; } Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineFallback.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,45 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill åºéª (smallchill@163.com) */ package com.vci.ubcs.code.feign; import com.vci.ubcs.starter.revision.model.BaseModel; import org.springblade.core.tool.api.R; import org.springframework.stereotype.Component; import java.beans.IntrospectionException; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.List; /** * Feign失败é ç½® * * @author Chill */ @Component public class IMdmEngineFallback implements IMdmEngineClient { @Override public R<List<BaseModel>> selectByTypeAndOid(String btmType, String oids) throws SQLException, IntrospectionException, NoSuchFieldException, InvocationTargetException, IllegalAccessException, InstantiationException { return R.fail("è·åæ°æ®å¤±è´¥"); } @Override public R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception { return R.fail("è·åæ°æ®å¤±è´¥"); } } Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java
@@ -26,6 +26,8 @@ private String id; private String name; //éå¢ç private String groupcode; private String description; @@ -340,6 +342,14 @@ this.lctid = lctid; } public String getGroupcode() { return this.groupcode; } public void setGroupcode(String groupcode) { this.groupcode = groupcode; } public Map<String, String> getData() { return this.data; } Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.web.enumpck.BooleanEnum; @@ -19,7 +20,9 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.ResourceUtils; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.io.File; import java.io.IOException; @@ -32,6 +35,8 @@ import java.math.BigInteger; import java.net.InetAddress; import java.net.NetworkInterface; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -1244,5 +1249,118 @@ } /** * å° JavaBean对象转å为 Map * @author wyply115 * @param bean è¦è½¬åçç±»å * @return Map对象 * @version 2016å¹´3æ20æ¥ 11:03:01 */ public static Map convertBean2Map(Object bean) throws Exception { Class type = bean.getClass(); Map returnMap = new HashMap(); BeanInfo beanInfo = Introspector.getBeanInfo(type); PropertyDescriptor[] propertyDescriptors = beanInfo .getPropertyDescriptors(); Field[] declaredFields = type.getDeclaredFields(); String existField = ""; for (Field declaredField : declaredFields) { declaredField.setAccessible(true); // è·ååæ®µçå¼ boolean isTableField = declaredField.isAnnotationPresent(TableField.class); if (isTableField) { TableField tableField = declaredField.getAnnotation(TableField.class); Boolean fieldValue = tableField.exist(); if(fieldValue == false){ existField += declaredField.getName().toLowerCase()+","; } } } for (int i = 0, n = propertyDescriptors.length; i <n ; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (!propertyName.equals("class") && ((!"".equals(existField) && !existField.contains(propertyName.toLowerCase()+","))||"data".equals(propertyName))) { Method readMethod = descriptor.getReadMethod(); Object result = readMethod.invoke(bean, new Object[0]); if (result != null) { if ("data".equals(propertyName)){ returnMap.putAll((Map) result); }else { returnMap.put(propertyName, result); } } else { returnMap.put(propertyName, ""); } } } return returnMap; } public static <T> List<T> mapToBean(List<Map> maps, Class<T> tClass) { List<T> beanList = new ArrayList<>(); try { for (Map map : maps) { T t = tClass.newInstance(); BeanInfo beanInfo = Introspector.getBeanInfo(tClass); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); if ("class".equals(key)) { continue; } // String sqlField = camelToUnderscore(key); if (map.containsKey(key.toUpperCase())) { try { Object value = map.get(key.toUpperCase()); // å¾å°property对åºçsetteræ¹æ³ Method setter = property.getWriteMethod(); Class<?> type = property.getPropertyType(); // å¼ºè½¬ä¸ºåæ®µçç±»åï¼ä¸éè¦æ¶å¯ä»¥å»é¤ï¼ä¾èµcommons-beanutilss-beanutils //Object convert = ConvertUtils.convert(String.valueOf(value), type); //setter.invoke(t, convert); setter.invoke(t, value); } catch (Exception e) { throw new RuntimeException("ãèµå¼å¼å¸¸ã", e); } } } beanList.add(t); } } catch (Exception e) { throw new RuntimeException("ãMap转æ¢å®ä½å¼å¸¸ã", e); } return beanList; } public static String camelToUnderscore(String name) { if (name == null && name.length() <= 0) { return name; } StringBuilder sb = new StringBuilder(); String lowerName = name.toLowerCase(); for (int i = 0; i < lowerName.length(); i++) { String nameChar = name.substring(i, i + 1); String lowerChar = lowerName.substring(i, i + 1); if (!nameChar.equals(lowerChar)) { sb.append("_").append(lowerChar); } else { sb.append(nameChar); } } return sb.toString(); } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -11,6 +11,7 @@ import com.vci.ubcs.code.service.MdmIOService; import com.vci.ubcs.code.vo.pagemodel.*; import com.vci.ubcs.starter.annotation.VciBusinessLog; import com.vci.ubcs.starter.revision.model.BaseModel; import com.vci.ubcs.starter.util.LocalFileUtil; import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject; import com.vci.ubcs.starter.web.pagemodel.DataGrid; @@ -19,7 +20,6 @@ import com.vci.ubcs.starter.web.util.LangBaseUtil; import com.vci.ubcs.starter.web.util.VciBaseUtil; import io.swagger.annotations.Api; import lombok.AllArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.tool.api.R; @@ -31,6 +31,7 @@ import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.List; import java.util.Map; @@ -148,7 +149,7 @@ */ @PostMapping("/addSaveCode") @VciBusinessLog(operateName = "ç³è¯·å个ç¼ç ") public R addSaveCode(@RequestBody CodeOrderDTO orderDTO){ public R addSaveCode(@RequestBody CodeOrderDTO orderDTO) throws Exception { return R.success(engineService.addSaveCode(orderDTO)); } @@ -469,4 +470,12 @@ public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid,String functionId){ return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId); } @GetMapping("/thisistest") @ResponseBody public List<BaseModel> thisistest(String codeClassifyOid, String functionId) throws Exception { return engineService.selectByTypeAndOid("wupin", "b1511bb3-a773-43e2-ac85-a7fde7314a0f,3e08970024835e69f6c2b2ecd90c48c3,582ff205-0dfb-43e0-8223-e772ff1851ab,db0400fe-cc90-4d9d-8da7-1edf06b1481b"); // return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId); } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmEngineClient.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,84 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill åºéª (smallchill@163.com) */ package com.vci.ubcs.code.feign; import com.vci.ubcs.code.service.MdmEngineService; import com.vci.ubcs.starter.revision.model.BaseModel; import lombok.AllArgsConstructor; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; import java.beans.IntrospectionException; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.List; /** * ç¼ç ä¿¡æ¯ Feignå®ç°ç±» * * @author yuxc * @since 2023-05-05 */ @ApiIgnore() @RestController @AllArgsConstructor public class MdmEngineClient implements IMdmEngineClient { private final MdmEngineService mdmEngineService; /** * ä¼ å ¥ä¸å¡ç±»å以åç¸oidéåæ¥è¯¢æ°æ®è¿è¡è¿å * * @param btmType ä¸å¡ç±»å * @param oids éè¦æ¥è¯¢çoidéå éå·åå¼ * @return æ¥è¯¢åºçæ°æ® */ @Override @GetMapping(SELECT_BY_TYPE_OID) public R<List<BaseModel>> selectByTypeAndOid(String btmType, String oids) throws SQLException, IntrospectionException, NoSuchFieldException, InvocationTargetException, IllegalAccessException, InstantiationException { return R.data(mdmEngineService.selectByTypeAndOid(btmType,oids)); } /** * ä¼ å ¥ä¸å¡ç±»å以åç¸å ³æ°æ®è¿è¡æ¹éæå ¥æä½ * * @param btmType ä¸å¡ç±»å * @param baseModels å¤çæ°æ® * @return å¤çæåæ°æ®æ¡æ° */ @Override @GetMapping(INSERT_BATCH_BY_TYPE) public R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception { return R.data(mdmEngineService.insertBatchByType(btmType,baseModels)); } // private final CodeWupinMapper codeWupinMapper; // @Override // @GetMapping(TOP) // public BladePage<CodeWupin> top(Integer current, Integer size) { // Query query = new Query(); // query.setCurrent(current); // query.setSize(size); // IPage<CodeWupin> page = codeWupinMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());//service.page(Condition.getPage(query)); // return BladePage.of(page); // } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
@@ -21,4 +21,13 @@ List<Map> selectBySql(@Param("inSql") String inSql); /** * ä¼ å ¥è¡¨æï¼mapï¼list<map>宿æ¹éæ´æ°æä½ * @param tableName 表å * @param columnMap åæ¡mapç¨äºè·åkeyä½ä¸ºå段 * @param mapList éè¦æå ¥çææè®°å½ * @return æå ¥æåçæ¡æ° */ Integer insertByBaseModel(String tableName,Map<String,String> columnMap,List<Map<String,String>> mapList); } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -9,12 +9,18 @@ import com.vci.ubcs.code.dto.datapush.BaseModelDTO; import com.vci.ubcs.code.entity.CodeWupin; 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.*; import com.vci.ubcs.starter.revision.model.BaseModel; import com.vci.ubcs.starter.web.pagemodel.*; import org.springblade.core.tool.api.R; import java.util.*; import java.beans.IntrospectionException; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.Collection; import java.util.List; import java.util.Map; /** * ä¸»æ°æ®å¼ææå¡ @@ -55,7 +61,7 @@ * @param orderDTO ç³è¯·çä¿¡æ¯ï¼éè¦å å«å±æ§çå 容åç æ®µç¸å ³çå 容 * @return è¿åç¼ç çå 容 */ String addSaveCode(CodeOrderDTO orderDTO); String addSaveCode(CodeOrderDTO orderDTO) throws Exception; /** * 夿ç¼ç çç æ®µæ¯å¦è¾å ¥æè éæ©äºç å¼ @@ -84,9 +90,9 @@ * åå§åä¸å¡ç±»å * --å建人é»è®¤ä¸ºå½åç¨æ·ï¼å¦æéè¦ä¿®æ¹ï¼å¯ä»¥å¨è·ååèªè¡å¤ç * @param btmName ä¸å¡ç±»åçåç§°ï¼ä¼èªå¨åæå°å * @return CodeWupinEntity * @return BaseModel */ CodeWupin createCBOByBtmName(String btmName); BaseModel createCBOByBtmName(String btmName); /** * ä¿åå¯è¾å¯éçä¿¡æ¯ @@ -363,4 +369,21 @@ * @return UIç¸å ³çå 容 */ MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId); /** * ä¼ å ¥ä¸å¡ç±»å以åç¸å ³æ°æ®è¿è¡æ¹éæå ¥æä½ * * @param btmType ä¸å¡ç±»å * @param baseModels å¤çæ°æ® * @return å¤çæåæ°æ®æ¡æ° */ Integer insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception; /** * ä¼ å ¥ä¸å¡ç±»å以åç¸oidéåæ¥è¯¢æ°æ®è¿è¡è¿å * * @param btmType ä¸å¡ç±»å * @param oids éè¦æ¥è¯¢çoidéå éå·åå¼ * @return æ¥è¯¢åºçæ°æ® */ List<BaseModel> selectByTypeAndOid(String btmType, String oids) throws IllegalAccessException, NoSuchFieldException, InstantiationException, InvocationTargetException, IntrospectionException, SQLException; } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
@@ -2,9 +2,9 @@ import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; import com.vci.ubcs.code.dto.CodeOrderSecDTO; import com.vci.ubcs.code.entity.CodeWupin; import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO; import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; import com.vci.ubcs.starter.revision.model.BaseModel; import java.util.Collection; import java.util.List; @@ -19,7 +19,7 @@ * @param dataCBOList ä¸å¡æ°æ® */ List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<CodeWupin> dataCBOList); CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception; /** * åæ¶ç å¼ Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -25,6 +25,9 @@ import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO; import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO; import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; import com.vci.ubcs.core.log.exception.ServiceException; import com.vci.ubcs.omd.feign.IBtmTypeClient; import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.starter.bo.WriteExcelData; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.poi.bo.ReadExcelOption; @@ -46,7 +49,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.launch.constant.AppConstant; import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -4,10 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import com.fasterxml.jackson.databind.ObjectMapper; 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; @@ -18,13 +18,17 @@ 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.code.vo.pagemodel.*; import com.vci.ubcs.omd.feign.IBtmTypeClient; import com.vci.ubcs.omd.feign.IEnumClient; import com.vci.ubcs.omd.feign.IEnumItemClient; import com.vci.ubcs.omd.feign.IRevisionRuleClient; import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.omd.vo.EnumVO; import com.vci.ubcs.omd.vo.RevisionRuleVO; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.revision.model.BaseModel; import com.vci.ubcs.starter.revision.model.TreeWrapperOptions; import com.vci.ubcs.starter.revision.service.RevisionModelUtil; import com.vci.ubcs.starter.web.constant.QueryOptionConstant; @@ -37,21 +41,32 @@ import com.vci.ubcs.starter.web.util.*; import com.vci.ubcs.system.entity.DictBiz; import com.vci.ubcs.system.feign.IDictBizClient; import net.logstash.logback.encoder.org.apache.commons.lang3.ObjectUtils; import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils; import oracle.sql.TIMESTAMP; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springframework.beans.BeanUtils; import org.springblade.core.tool.utils.StringPool; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cglib.beans.BeanMap; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.math.BigDecimal; import java.sql.SQLException; import java.sql.Timestamp; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -120,6 +135,16 @@ */ @Autowired private ICodePhaseAttrService phaseAttrService; /** * ä¸å¡ç±»åçæå¡ */ @Autowired private IBtmTypeClient btmTypeClient; /** * çæ¬è§åçæå¡ */ @Resource private IRevisionRuleClient revisionRuleClient; // /** * éç¨æ¥è¯¢ @@ -180,6 +205,14 @@ * ç©ºæ ¼ */ public static final String SPACE = " "; /** * ç¼åï½ï½ ï½ */ public static final String BTM_INIT_CACHE = "ubcs-code:btm"; /** * */ public static final String BTM_NAME = "btm:name"; /** * å¯çº§çåæ®µ @@ -316,7 +349,7 @@ * @return è¿åç¼ç çå 容 */ @Override public String addSaveCode(CodeOrderDTO orderDTO) { public String addSaveCode(CodeOrderDTO orderDTO) throws Exception { VciBaseUtil.alertNotNull(orderDTO, "ç¼ç ç³è¯·ç¸å ³ç屿§åç æ®µçå 容é½ä¸ºç©º", orderDTO.getCodeClassifyOid(), "主é¢åºåç±»ç主é®", orderDTO.getTemplateOid(), "模æ¿ç主é®", orderDTO.getCodeRuleOid(), "ç¼ç è§åç主é®"); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); @@ -340,14 +373,14 @@ switchDateAttrOnOrder(templateVO, orderDTO); //9.çæç¼ç çä¿¡æ¯ // ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()); CodeWupin cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()); BaseModel 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<CodeWupin> cboList = new ArrayList<>(); List<BaseModel> cboList = new ArrayList<>(); //夿³¨ cbo.setDescription(orderDTO.getDescription()); @@ -358,8 +391,8 @@ List<String> charList = new ArrayList<>(); for (CodeWupin wupinEntity : cboList) { charList.add(wupinEntity.getId()); for (BaseModel baseModel : cboList) { charList.add(baseModel.getId()); } batchSaveSelectChar(templateVO, charList); return codeList.size() > 0 ? codeList.get(0) : ""; @@ -709,7 +742,7 @@ * @param templateVO 模æ¿çæ¾ç¤ºå¯¹è±¡ * @param edit æ¯å¦ä¸ºä¿®æ¹ */ private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, CodeWupin cbo, private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, BaseModel cbo, CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO, boolean edit) { String fullPath = ""; @@ -738,14 +771,18 @@ try { BeanUtilForVCI.copyPropertiesIgnoreNull(BeanUtilForVCI.convertMap(CodeWupin.class,orderDTO.getData()),cbo); cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid()); cbo.setCodetemplateoid(templateVO.getOid()); cbo.setCodeclsfpath(fullPath); BeanUtilForVCI.copyPropertiesIgnoreNull(BeanUtilForVCI.convertMap(BaseModel.class,orderDTO.getData()),cbo); Map<String,String> data = new HashMap<>(); data.put(CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid()); data.put(CODE_TEMPLATE_OID_FIELD,templateVO.getOid()); data.put(CODE_FULL_PATH_FILED,fullPath); cbo.setData(data); // cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid()); // cbo.setTemplateOid(templateVO.getOid()); // cbo.setCodeclsfpath(fullPath); cbo.setTs(new Date()); if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) { //æ¾çå½å¨æçèµ·å§ç¶æï¼æä¸ªç¹ï¼çå½å¨ææ¯å¦éè¦å建 //å ååºå®ï¼åé¢çå½å¨æå¥½äºå¨ç¼å if (StringUtils.isNotBlank(cbo.getLctid())) { // OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctid()); // if (lifeCycleVO != null) { @@ -782,72 +819,65 @@ * @throws VciBaseException åå§ååºéçæ¯ä¼æåºå¼å¸¸ */ @Override public CodeWupin createCBOByBtmName(String btmName) public BaseModel 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(); CodeWupin wupinEntity = new CodeWupin(); wupinEntity.setOid(VciBaseUtil.getPk()); // 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("numberversionrule"); wupinEntity.setVersionRule("0"); // if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){ // // 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(1001); wupinEntity.setCaigouwl("true"); wupinEntity.setShifoupihaoguanli("true"); wupinEntity.setKucunwl("true"); wupinEntity.setXiaoshouwl("false"); wupinEntity.setPassing("true"); try { String keyPrefix = BTM_NAME.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON); String finalBtmName = btmName; return CacheUtil.get(BTM_INIT_CACHE, keyPrefix, btmName, () -> { BaseModel baseModel = createBaseModel(finalBtmName); return baseModel; }); } catch (Exception e) { logger.error("å建ä¸å¡ç±»å对象",e); throw new VciBaseException("initBtmError",new String[]{btmName}); } // String userName = AuthUtil.getUser().getUserName(); // CodeWupin wupinEntity = new CodeWupin(); // wupinEntity.setOid(VciBaseUtil.getPk()); //// 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("numberversionrule"); // wupinEntity.setVersionRule("0"); //// if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){ // // //// 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(1001); // wupinEntity.setCaigouwl("true"); // wupinEntity.setShifoupihaoguanli("true"); // wupinEntity.setKucunwl("true"); // wupinEntity.setXiaoshouwl("false"); // wupinEntity.setPassing("true"); // this.initTypeAttributeValue(wupinEntity,btmTypeVO); return wupinEntity; // return wupinEntity; // return cbo; @@ -1236,8 +1266,8 @@ //没æéå¶åç±»ï¼ä½æ¯ä¸ä¸ªæ¨¡æ¿åªå¯è½å¨ä¸ä¸ªä¸å¡ç±»åéé¢ï¼æä»¥ç´æ¥æ¥è¯¢è¿ä¸ªä¸å¡ç±»åå³å¯ if (!CollectionUtils.isEmpty(conditionMap)) { Map<String, String> andConditionMap = new HashMap<>(); andConditionMap.put("islastr", "1"); andConditionMap.put("islastv", "1"); andConditionMap.put("lastr", "1"); andConditionMap.put("lastv", "1"); if (StringUtils.isNotBlank(orderDTO.getOid())) { andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid()); } @@ -2883,4 +2913,146 @@ } return buttonVOList; } /** * ä¼ å ¥ä¸å¡ç±»å以åç¸å ³æ°æ®è¿è¡æ¹éæå ¥æä½ * * @param btmType ä¸å¡ç±»å * @param baseModels å¤çæ°æ® * @return å¤çæåæ°æ®æ¡æ° */ @Override public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception { //使ç¨ä¼ å ¥çä¸å¡ç±»åæ¥è¯¢è¡¨ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); if(listR.getData().size() == 0){ throw new VciBaseException("ä¼ å ¥ä¸å¡ç±»åæªæ¥è¯¢å°ç¸åºè¡¨åï¼è¯·æ£æ¥ï¼"); } //å°bean转为map,mybatisç»ä¸å¤ç List<Map<String,String>> maps = new ArrayList<>(); baseModels.stream().forEach(model-> { try { maps.add(VciBaseUtil.convertBean2Map(model)); } catch (Exception e) { throw new VciBaseException("ç±»å转æ¢é误ï¼" + e.toString()); } }); return commonsMapper.insertByBaseModel(listR.getData().get(0).getTableName(), maps.get(0), maps); } /** * ä¼ å ¥ä¸å¡ç±»å以åç¸oidéåæ¥è¯¢æ°æ®è¿è¡è¿å * * @param btmType ä¸å¡ç±»å * @param oids éè¦æ¥è¯¢çoidéå éå·åå¼ * @return æ¥è¯¢åºçæ°æ® */ @Override public List<BaseModel> selectByTypeAndOid(String btmType, String oids) throws IllegalAccessException, NoSuchFieldException, InstantiationException, InvocationTargetException, IntrospectionException, SQLException { //使ç¨ä¼ å ¥çä¸å¡ç±»åæ¥è¯¢è¡¨ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); if(listR.getData().size() == 0){ throw new VciBaseException("ä¼ å ¥ä¸å¡ç±»åæªæ¥è¯¢å°ç¸åºè¡¨åï¼è¯·æ£æ¥ï¼"); } //æ¥è¯¢æ°æ® List<Map> maps = commonsMapper.selectBySql("select * from " + listR.getData().get(0).getTableName() + " where oid in (" + VciBaseUtil.toInSql(oids.toString()) + ")"); List<BaseModel> baseModels = new ArrayList<>(); //å°æ¥è¯¢å°çæ°æ®è½¬æ¢ä¸ºbasemodelï¼ä½¿ç¨çåå°æ¹å¼æ¥è¿è¡å建ç for (Map map : maps) { Object obj = BaseModel.class.newInstance(); BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { Method setter = property.getWriteMethod(); if (setter != null) { //oracleçæ¶é´ä¸ºTIMESTAMPçï¼éè¦è¿è¡è½¬æ¢ædataï¼å¦åå°æ¥é if(map.get(property.getName().toUpperCase()) instanceof TIMESTAMP){ LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime(); ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zdt = localDateTime.atZone(zoneId); Date date = Date.from(zdt.toInstant()); setter.invoke(obj,date); map.remove(property.getName().toUpperCase()); } //oracleçæ°å为BigDecimalçï¼éè¦è¿è¡è½¬æ¢æIntegerï¼å¦åå°æ¥é else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())){ setter.invoke(obj, ((BigDecimal)map.get(property.getName().toUpperCase())).intValue()); map.remove(property.getName().toUpperCase()); }else if(map.get(property.getName().toUpperCase()) != null){ setter.invoke(obj, map.get(property.getName().toUpperCase())); map.remove(property.getName().toUpperCase()); } } } ((BaseModel) obj).setData(map); baseModels.add((BaseModel) obj); } return baseModels; } /** * æ ¹æ®ä¸å¡ç±»ååç§°å建ä¸å¡æ°æ®æºå¯¹è±¡ * @param boName ä¸å¡ç±»ååç§° * @return ä¸å¡æ°æ®å¯¹è±¡ */ public BaseModel createBaseModel(String boName) { R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(boName)); String userName = AuthUtil.getUser().getUserName(); BaseModel bo = new BaseModel(); bo.setOid(VciBaseUtil.getPk()); // bo.setRevisionid(VciBaseUtil.getPk()); // bo.setNameoid(VciBaseUtil.getPk()); bo.setBtmname(boName); bo.setLastR("1"); bo.setFirstR("1"); bo.setFirstV("1"); bo.setLastV("1"); bo.setCreator(userName); bo.setCreateTime(new Date()); bo.setLastModifier(userName); bo.setLastModifyTime(new Date()); bo.setRevisionRule(listR.getData().get(0).getRevisionRuleId()); bo.setVersionRule(String.valueOf(listR.getData().get(0).getVersionRule())); if(StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId())){ R<List<RevisionRuleVO>> revisionRuleVO = revisionRuleClient .selectByIdCollection(Collections.singletonList(listR.getData().get(0).getRevisionRuleId())); bo.setRevisionValue(revisionRuleVO.getData().get(0).getStartCode()); } bo.setRevisionSeq(1); bo.setVersionSeq(1); bo.setVersionValue(getVersionValue(WebUtil.getInt(listR.getData().get(0).getVersionRule()))); bo.setLctid(listR.getData().get(0).getLifeCycleId()); // if(StringUtils.isNotBlank(listR.getData().get(0).getLifeCycleId())){ // OsLifeCycleVO lifeCycleVO = lifeService.getLifeCycleById(listR.getData().get(0).getLifeCycleId()); bo.setLcStatus("Editing"); // } bo.setId(""); bo.setName(""); bo.setDescription(""); bo.setOwner(userName); // bo.setCheckinby(userName); bo.setCopyFromVersion(""); // this.initTypeAttributeValue(bo,btmTypeVO); return bo; } /** * è·åçæ¬¡çå¼ * @param verRuleName çæ¬¡çè§å * @return çæ¬¡çå¼ï¼æ²¡æè§åå为空 */ private String getVersionValue(int verRuleName) { if (verRuleName == 0) { return "1"; } else if (verRuleName == 1) { return "a"; } else if (verRuleName == 2) { return "0"; } return ""; } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -2,11 +2,11 @@ import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.BeanUtils; import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; import com.vci.ubcs.code.dto.CodeOrderSecDTO; import com.vci.ubcs.code.entity.CodeAllCode; import com.vci.ubcs.code.entity.CodeSerialValue; import com.vci.ubcs.code.entity.CodeWupin; import com.vci.ubcs.code.enumpack.CodeCutTypeEnum; import com.vci.ubcs.code.enumpack.CodeGetValueTypeEnum; import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum; @@ -14,18 +14,22 @@ import com.vci.ubcs.code.lifecycle.CodeAllCodeLC; import com.vci.ubcs.code.mapper.CodeSerialValueMapper; import com.vci.ubcs.code.service.ICodeWupinService; import com.vci.ubcs.code.service.MdmEngineService; import com.vci.ubcs.code.service.MdmProductCodeService; import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO; import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO; import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO; import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.revision.model.BaseModel; import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; import com.vci.ubcs.starter.web.constant.QueryOptionConstant; import com.vci.ubcs.starter.web.constant.RegExpConstant; import com.vci.ubcs.starter.web.enumpck.OsCodeFillTypeEnum; import com.vci.ubcs.starter.web.util.VciBaseUtil; import com.vci.ubcs.starter.web.util.VciDateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -55,12 +59,24 @@ */ @Resource private ICodeWupinService iCodeWupinService; /** * ææçç¼ç çå 容 */ @Resource @Lazy private MdmEngineService mdmEngineService; /** * å ¬å¼çæå¡ */ @Autowired private FormulaServiceImpl formulaService; @Override public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<CodeWupin> dataCBOList) { public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception { // BatchCBO batchCBO = new BatchCBO(); // WebUtil.setPersistence(false); // dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList()); dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList()); // batchCBO.getCreateCbos().addAll(dataCBOList); List<String> codeList = new ArrayList<>(); @@ -82,7 +98,7 @@ // VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); String code = cbo.getId(); List<String> serialUnitList = new ArrayList<>(); String[] secLengths = cbo.getCodeSecLengthField().split("#"); String[] secLengths = cbo.getData().get(CODE_SEC_LENGTH_FIELD).split("#"); List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList()); Map<String/**ç æ®µç主é®**/,String/**ç æ®µçå¼**/> serialValueMap = new HashMap<>(); Map<String, CodeBasicSecVO> secVOMap = secVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); @@ -266,7 +282,7 @@ Map<String/**ç æ®µç主é®**/, Map<String, CodeSerialValue>> maxSerialValueMap = new HashMap<>(); for (int i = 0; i < dataCBOList.size(); i++) { CodeWupin cbo = dataCBOList.get(i); BaseModel cbo = dataCBOList.get(i); List<String> thisSecValueList = new LinkedList<>(); for (int j = 0; j < secValueList.size(); j++) { thisSecValueList.add(secValueList.get(j)); @@ -303,13 +319,17 @@ Map<String, String> statusMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus())); allCodeDOList.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> { s.setLcStatus(statusMap.get(s.getOid())); }); allCodeDOList.stream().forEach( allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");} ); codeAllCodeService.saveBatch(allCodeDOList); iCodeWupinService.saveBatch(dataCBOList); // iCodeWupinService.saveBatch(dataCBOList); mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList); // batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> { // s.setLcStatus(statusMap.get(s.getOid())); // try { @@ -332,7 +352,7 @@ * @param serialUnitList æµæ°´ä¾æ®çå 容 * è¿éè¦åç»çä¸ä¸ªç§»æ¤å°ä¼æ¶åå°å ¶ä»çæå¡ */ private void switchAttrSecValue(List<CodeBasicSecVO> attrSecVOList, CodeWupin cbo, private void switchAttrSecValue(List<CodeBasicSecVO> attrSecVOList, BaseModel cbo, List<String> thisSecValueList, boolean attrSevIsSerialDepend, List<String> serialUnitList){ if (!CollectionUtils.isEmpty(attrSecVOList)) { @@ -340,9 +360,9 @@ String value = ""; if (StringUtils.isNotBlank(attrSevVO.getGetValueClass())) { //使ç¨ç»åè§åæ¥å¤çç // value = getValueByFormulaForCBO(cbo, attrSevVO.getGetValueClass()); value = getValueByFormulaForCBO(cbo, attrSevVO.getGetValueClass()); } else { // value = cbo.getAttributeValue(attrSevVO.getReferAttributeId()); value = cbo.getData().get(attrSevVO.getReferAttributeId()); } if (value == null) { value = ""; @@ -591,7 +611,7 @@ * @param allCodeDOList ææçç å¼ç对象å表 */ private void wrapperAllCode(CodeClassifyFullInfoBO classifyFullInfoBO, CodeRuleVO ruleVO, CodeWupin cbo, CodeClassifyTemplateVO templateVO, BaseModel cbo, CodeClassifyTemplateVO templateVO, List<CodeAllCode> allCodeDOList, String serialUnitString, String serialValueString){ CodeAllCode allCodeDO = new CodeAllCode(); allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid()); @@ -746,4 +766,20 @@ // WebUtil.setPersistence(oldPersistence); return updateFlag.get(); } /** * 使ç¨CBOå¤çç»åè§åçå 容 * @param cbo æ°æ®çå 容 * @param rule è§åçå 容 * @return 转æ¢åç */ private String getValueByFormulaForCBO(BaseModel cbo,String rule){ Map<String, Object> dataMap = BeanUtils.beanToMap(cbo); Map<String, String> map = new HashMap<String, String>(); for (String i : dataMap.keySet()) { map.put(i, String.valueOf(dataMap.get(i))); } // WebUtil.copyValueToMapFromCbos(cbo,dataMap); return formulaService.getValueByFormula(map,rule); } } Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
@@ -22,5 +22,19 @@ ${inSql} </select> <insert id="insertByBaseModel" parameterType="java.util.Map"> insert into ${tableName} ( <foreach collection="columnMap" item="value" index="key" separator=","> ${key} </foreach> ) <foreach collection="mapList" item="columnMap" separator=" union all "> select <foreach collection="columnMap" item="value" index="key" separator=","> #{value} </foreach> from dual </foreach> </insert> </mapper>