From 367c66e0ab339e15d6ad881ace683cec7e11f2f7 Mon Sep 17 00:00:00 2001 From: yuxc <653031404@qq.com> Date: 星期二, 30 五月 2023 17:34:36 +0800 Subject: [PATCH] 1、主要完成传入业务类型与basemodel进行插入。 2、完成传入业务类型、oid进行查询返回list<basemodel> --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 394 +++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 291 insertions(+), 103 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java index 08960e7..61d5c0e 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java @@ -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,10 +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.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; @@ -31,23 +38,35 @@ 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.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.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.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; @@ -84,10 +103,15 @@ @Resource private MdmProductCodeService productCodeService; /** - * 瀛楀吀鐨勬湇鍔� + * 鍙緭鍙�夌殑鏈嶅姟 */ @Resource IDictBizClient iDictBizClient; + /** + * 瀛楀吀鐨勬湇鍔� + */ + @Resource + IEnumClient enumClient; /** * 鍏紡鐨勬湇鍔� */ @@ -111,6 +135,16 @@ */ @Autowired private ICodePhaseAttrService phaseAttrService; + /** + * 涓氬姟绫诲瀷鐨勬湇鍔� + */ + @Autowired + private IBtmTypeClient btmTypeClient; + /** + * 鐗堟湰瑙勫垯鐨勬湇鍔� + */ + @Resource + private IRevisionRuleClient revisionRuleClient; // /** * 閫氱敤鏌ヨ @@ -171,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"; /** * 瀵嗙骇鐨勫瓧娈� @@ -244,19 +286,19 @@ */ @Override public List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO) { - List<KeyValue> comboboxKVs = null; + List<KeyValue> comboboxKVs = new ArrayList<>(); 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()); + R<List<EnumVO>> list = enumClient.getList(attrVO.getEnumId()); if(list.isSuccess()){ - for (DictBiz datum : list.getData()) { + for (EnumVO datum : list.getData()) { KeyValue keyValue = new KeyValue(); - keyValue.setKey(datum.getDictKey()); - keyValue.setValue(datum.getDictValue()); + keyValue.setKey(datum.getItemValue()); + keyValue.setValue(datum.getItemName()); comboboxKVs.add(keyValue); } } @@ -307,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()); @@ -331,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锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁� 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()); @@ -349,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) : ""; @@ -563,7 +605,9 @@ //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� if (!CollectionUtils.isEmpty(conditionMap)) { - final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "}; + //琛ㄩ渶瑕佹敼 +// final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "}; + final String[] sql = {"select count(*) from pl_code_wupin t where 1 = 1 "}; conditionMap.forEach((key, value) -> { sql[0] += " and " + key + " = " + value; }); @@ -698,9 +742,9 @@ * @param templateVO 妯℃澘鐨勬樉绀哄璞� * @param edit 鏄惁涓轰慨鏀� */ - private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, CodeWupin cbo, + private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, BaseModel cbo, CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO, - boolean edit) { + boolean edit) { String fullPath = ""; if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) { fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))) @@ -710,8 +754,8 @@ } // BeanUtils. - BeanUtils.copyProperties(orderDTO.getData(),cbo); - cbo.setMaterialtype(Short.valueOf("1001")); +// 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))) { @@ -722,18 +766,23 @@ // } // } // }); +// BeanMap beanMap = BeanMap.create(cbo); +// beanMap.putAll(orderDTO.getData()); + 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"); + 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) { @@ -748,7 +797,7 @@ } - int secret = VciBaseUtil.getInt(cbo.getSecretGrade().toString()); + int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade())); //鎻掍釜鐐癸紝鍚庣画鐪嬪瘑绾ф湇鍔℃槸鍚﹀彲鐢� // if (secret == 0 || !secretService.checkDataSecret(secret)) { if (secret == 0 ) { @@ -770,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(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"); + 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}); } - - 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"); +// 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; @@ -1224,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()); } @@ -1341,7 +1383,7 @@ maps.stream().forEach(map -> { Map<String, String> data = new HashMap<>(); map.forEach((key, value) -> { - data.put(((String) key).toLowerCase(Locale.ROOT), (String) value); + data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); }); dataList.add(data); }); @@ -1514,8 +1556,9 @@ referVO.setValueField(VciQueryWrapperForDO.OID_FIELD); referVO.setTextField("name"); } - - String referTable = VciBaseUtil.getTableName(referVO.getReferType()); + //琛ㄩ渶瑕佹敼 +// String referTable = VciBaseUtil.getTableName(referVO.getReferType()); + String referTable = "pl_code_wupin"; String referTableNick = attrVO.getId() + "0"; String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " = t." + attrVO.getId(); joinTableList.put(attrVO.getId(), left); @@ -1603,7 +1646,9 @@ } whereSql += " and ( t.secretGrade <= " + userSecret + ") "; } - String tableName = VciBaseUtil.getTableName(btmType); + //瑕佹敼锛岃〃鏄庤幏鍙栨湁闂 +// String tableName = VciBaseUtil.getTableName(btmType); + String tableName = "pl_code_wupin"; 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)) @@ -2049,12 +2094,13 @@ 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 + + //琛ㄩ渶瑕佹敼 +// conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from pl_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"); + conditionMap.put("lastr", "1"); + conditionMap.put("lastv", "1"); return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper); // List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList()); // //鍙傜収璁╁钩鍙扮洿鎺ユ煡璇㈠氨琛� @@ -2437,7 +2483,7 @@ 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" + + "from pl_code_wupin 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); @@ -2867,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("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + //灏哹ean杞负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); + } + + /** + * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖 + * + * @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 ""; + } } -- Gitblit v1.9.3