Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/BaseLinkModelDTO.java
@@ -2,7 +2,7 @@ import com.alibaba.fastjson.annotation.JSONField; import com.vci.model.BaseLinkModel; import com.vci.starter.web.model.BaseLinkModel; import com.vci.starter.web.annotation.Column; import java.util.ArrayList; Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/BaseLinkModel.java
ÎļþÒÑɾ³ý Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java
@@ -334,7 +334,7 @@ linkModel.setCreateTime(currentDate); linkModel.setTs(currentDate); linkModel.setLastModifier(linkModel.getCreator()); linkModel.setLastModifytime(currentDate); linkModel.setLastModifyTime(currentDate); } /** @@ -365,7 +365,7 @@ Date currentDate = new Date(); linkModel.setTs(currentDate); linkModel.setLastModifier(VciBaseUtil.getCurrentUserId()); linkModel.setLastModifytime(currentDate); linkModel.setLastModifyTime(currentDate); } /** Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseLinkModel.java
@@ -65,7 +65,7 @@ /** * from端ä¸å¡ç±»å */ @Column(name="f_btmname",length = 30) @Column(name="f_btwname",length = 30) private String fbtmname; /** @@ -89,7 +89,7 @@ /** * to端ä¸å¡ç±»å */ @Column(name="t_btmname",length = 30) @Column(name="t_btwname",length = 30) private String tbtmname; /** @@ -135,12 +135,12 @@ this.lastModifier = lastModifier; } public Date getLastModifytime() { public Date getLastModifyTime() { return lastModifyTime; } public void setLastModifytime(Date lastModifytime) { this.lastModifyTime = lastModifytime; public void setLastModifyTime(Date lastModifyTime) { this.lastModifyTime = lastModifyTime; } public String getFoid() { @@ -167,6 +167,13 @@ this.fnameoid = fnameoid; } public String getFbtmname() { return fbtmname; } public void setFbtmname(String fbtmname) { this.fbtmname = fbtmname; } public String getToid() { return toid; @@ -192,14 +199,6 @@ this.tnameoid = tnameoid; } public String getFbtmname() { return fbtmname; } public void setFbtmname(String fbtmname) { this.fbtmname = fbtmname; } public String getTbtmname() { return tbtmname; } @@ -216,40 +215,11 @@ this.ts = ts; } public Date getLastModifyTime() { return lastModifyTime; } public void setLastModifyTime(Date lastModifyTime) { this.lastModifyTime = lastModifyTime; } public Map<String, String> getData() { return data; } public void setData(Map<String, String> data) { this.data = data; } @Override public String toString() { return "BaseLinkModel{" + "oid='" + oid + '\'' + ", creator='" + creator + '\'' + ", createTime=" + createTime + ", lastModifier='" + lastModifier + '\'' + ", lastModifyTime=" + lastModifyTime + ", foid='" + foid + '\'' + ", frevisionoid='" + frevisionoid + '\'' + ", fnameoid='" + fnameoid + '\'' + ", fbtmname='" + fbtmname + '\'' + ", toid='" + toid + '\'' + ", trevisionoid='" + trevisionoid + '\'' + ", tnameoid='" + tnameoid + '\'' + ", tbtmname='" + tbtmname + '\'' + ", ts=" + ts + ", data=" + data + '}'; } } Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseModel.java
@@ -133,7 +133,7 @@ /** * çå½å¨æçç¼å· */ @Transient() @Column() private String lctId; /** @@ -146,6 +146,7 @@ * æ¶é´æ³ï¼æ ¼å¼æ¯yyyy-MM-dd HH:mm:ss.SSS */ @JsonFormat(pattern = VciDateUtil.DateTimeMillFormat) @VciFieldType(VciFieldTypeEnum.VTDateTime) private Date ts; /** Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ApplicationContextProvider.java
@@ -1,36 +1,17 @@ package com.vci.starter.web.util; import com.vci.starter.web.annotation.controller.VciUnCheckRight; import com.vci.starter.web.annotation.log.VciUnLog; import com.vci.starter.web.autoconfigure.AppAutoConfigure; import com.vci.starter.web.pagemodel.BaseResult; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * springçä¸ä¸æå·¥å ·ï¼ * 注æspringmvcä¸çcontrollerä¸åºè¯¥å¨è¿éè·åï¼å 为springmvcåªåºè¯¥è¢«å端è°ç¨ * 没æä½¿ç¨springbootçmain彿°é设置并è·åæ¯å 为å¯è½ä¼è®©å¤ä¸ªæå¡åå¹¶å°ä¸èµ·å¯å¨ * @author weidy * @date 2019/10/31 9:02 AM * @author dangsn * @date 2024/12/3 */ @RestController @RequestMapping("/application") @Component public class ApplicationContextProvider implements ApplicationContextAware { /** * æå¡çé ç½® */ @Autowired private AppAutoConfigure appAutoConfigure; /** * åºç¨çä¸ä¸æ @@ -39,12 +20,12 @@ /** * 设置åºç¨çä¸ä¸æ * @param applicationContext ä¸ä¸æ * @param context ä¸ä¸æ * @throws BeansException åºç°é误æ¶éè¦æåºå¼å¸¸ç»springå®¹å¨ */ @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { ApplicationContextProvider.applicationContext = applicationContext; public void setApplicationContext(ApplicationContext context) throws BeansException { applicationContext = context; } /** @@ -75,33 +56,4 @@ public static <T> T getBean(Class<T> c) throws BeansException{ return applicationContext.getBean(c); } /** * å ³æº * @return æ§è¡å®æ */ @PostMapping("/shutDownContext") @VciUnLog @VciUnCheckRight public BaseResult shutDownContext(String privateKey){ if( appAutoConfigure.getPrivateTokenKey().equalsIgnoreCase(privateKey)) { ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) applicationContext; ctx.close(); return BaseResult.success("å ³éæå¡æå"); }else{ return BaseResult.fail("æ¨æ²¡ææéå ³éæå¡"); } } /** * æ£æ¥æ¯å¦å®æ * @return è°ç¨å°±è¯´ææåäº */ @PostMapping("/checkOnline") @VciUnLog @VciUnCheckRight public BaseResult checkOnline(){ return BaseResult.success("å¯å¨å®æ"); } } Source/plt-web/plt-web-parent/plt-web-permission/README.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ DO对象ä¸ï¼æä¸¾åå¼ç¨ä½¿ç¨èä¾ï¼ #### ä¸ãæä¸¾ç使ç¨èä¾ï¼ ##### ```java @VciUseEnum(value = FrameWorkEnumConstant.SUPPLIER_TYPE,showTextField = "supplierTypeText") @Column(columnDefinition = "ä¾åºåç±»å") private String supplierType; @Column(columnDefinition = "ä¾åºåç±»åæ¾ç¤ºææ¬") @Transient private String supplierTypeText; ``` äºãå¼ç¨ä½¿ç¨èä¾ï¼ ##### ```java @VciUseRefer(FrameWorkBtmTypeConstant.BD_SUPPLIER_CLASSIFY_BTM_TYPE) @Column(columnDefinition = "ä¾åºååºæ¬åç±»",nullable = false) private String pkSupplierClassify; @Column(columnDefinition = "ä¾åºååºæ¬åç±»æ¾ç¤ºåç§°") @Transient(referColumn = "pkSupplierClassify.name") private String pkSupplierClassifyText; ``` Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBoServiceI.java
@@ -67,7 +67,7 @@ * @param btmType ä¸å¡ç±»å * @param conditionMap æ¥è¯¢æ¡ä»¶ * @param ph å页åæåº * @param clauseList æ¥è¯¢å段ï¼åç §åæ®µä½¿ç¨xxxx.yy;æä¸¾å段使ç¨xxx_enumCode;çå½å¨æä¼èªå¨å¤ç为lcStatus_text * @param clauseList æ¥è¯¢å段ï¼åç §åæ®µä½¿ç¨field.yy;æä¸¾å段使ç¨enumCode_field;çå½å¨æä¼èªå¨å¤ç为lcStatus_textãæ ¹æ®å段æ å°Mapçkeyèæ¥ã * @return * @throws VciBaseException */ @@ -137,8 +137,9 @@ * @return * @throws VciBaseException */ List<BusinessObject> queryCBOByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph, List<String> clauseList) throws VciBaseException; List<BusinessObject> queryCBOByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph, List<String> clauseList) throws VciBaseException; /** * æ¥è¯¢æ°é * @param btmType ä¸å¡ç±»ååç§° @@ -196,7 +197,7 @@ /** * åªç¨sqlè¯å¥æ¥è¯¢ï¼è¿ä¸ªåqueryBySqlForMapåºå«æ¯ï¼ç¹æ®çsql(å¦å 嫿彿°ç)å¯ä»¥ç¨è¿ä¸ªæ¹æ³ï¼ä½æ¯æsqlæ³¨å ¥é£é© * @param sql sqlè¯å¥ï¼æ¥è¯¢æ¡ä»¶å¿ é¡»èªè¡å¨å ¶ä¸å¤ç宿 * @return æ°æ®æ å° * @return æ°æ®æ å°ãMapä¸ï¼keyå¼ä¸ºå¤§åã * @throws VciBaseException æ¥è¯¢åºéæ´»æåºå¼å¸¸ */ List<Map> queryByOnlySqlForMap(String sql) throws VciBaseException; @@ -212,7 +213,7 @@ <T> List<T> queryByOnlySqlForObj(String sql, Class<T> tClass) throws VciBaseException; /** * æ ¹æ®sqlè¯å¥æ¥æ¥è¯¢å 容ï¼è¿åMap * æ ¹æ®sqlè¯å¥æ¥æ¥è¯¢å 容ï¼è¿åMapãsqlä¸è½æ¯select * æè select t.* * @param sql 为äºé²æ¢SQLæ³¨å ¥ï¼å¼å¿ é¡»å¨sqlè¯å¥é以:xxxæ ¼å¼ï¼å¦ id =:idvalueï¼ç¶åå¨conditionMap䏿·»å 建为idvalueçæ ¼å¼ * @param conditionMap æ¥è¯¢æ¡ä»¶ï¼å¿ é¡»ä¸sqléå¯¹åº * @return mapæ°æ® @@ -220,7 +221,7 @@ */ List<Map> queryBySqlForMap(String sql, Map<String, String> conditionMap) throws VciBaseException; /** * æ ¹æ®sqlè¯å¥æ¥æ¥è¯¢å 容ï¼è¿åMap * æ ¹æ®sqlè¯å¥æ¥æ¥è¯¢å 容ï¼è¿åMapãsqlä¸è½æ¯select * æè select t.* * @param sql 为äºé²æ¢SQLæ³¨å ¥ï¼å¼å¿ é¡»å¨sqlè¯å¥é以:xxxæ ¼å¼ï¼å¦ id =:idvalueï¼ç¶åå¨conditionMap䏿·»å 建为idvalueçæ ¼å¼ * @param conditionMap æ¥è¯¢æ¡ä»¶ï¼å¿ é¡»ä¸sqléå¯¹åº * @param selectKeys æ¥è¯¢çåæ®µ @@ -288,7 +289,6 @@ */ <T> BatchCBO batchAddSave(List<T> list) throws VciBaseException; /** * ä¿®æ¹æ°æ®ï¼å¯ä»¥å¨requestéè®¾ç½®ä¸æä¹ å * @param obj ä¿®æ¹æ°æ®å¯¹è±¡ @@ -305,6 +305,14 @@ */ <T> BatchCBO batchEditSave(List<T> list) throws VciBaseException; /** * å 餿°æ®ï¼å¯ä»¥å¨requestéè®¾ç½®ä¸æä¹ å * @param obj å 餿°æ®å¯¹è±¡ * @param checkRefered æ¯å¦å é¤å¼ç¨çæ°æ® * @return éè¦å建çCBO,CLO;éè¦ä¿®æ¹çCBO,CLO;éè¦å é¤çCBO,CLO * @throws VciBaseException */ <T> BatchCBO delete(T obj,boolean checkRefered) throws VciBaseException; /** * å 餿°æ®ï¼å¯ä»¥å¨requestéè®¾ç½®ä¸æä¹ å @@ -312,8 +320,16 @@ * @return éè¦å建çCBO,CLO;éè¦ä¿®æ¹çCBO,CLO;éè¦å é¤çCBO,CLO * @throws VciBaseException */ <T> BatchCBO delete(T obj,boolean checkRefered) throws VciBaseException; <T> BatchCBO delete(T obj) throws VciBaseException; /** * æ¹éå 餿°æ®ï¼å¯ä»¥å¨requestéè®¾ç½®ä¸æä¹ å * @param list éè¦å 餿°æ®å¯¹è±¡å表 * @param checkRefered æ¯å¦å é¤å¼ç¨çæ°æ® * @return éè¦å建çCBO,CLO;éè¦ä¿®æ¹çCBO,CLO;éè¦å é¤çCBO,CLO,checkRefered:[false/true]æ¯å¦æ£æ¥è¢«å¼ç¨ï¼é»è®¤ä¸æ£æ¥ * @throws VciBaseException */ <T> BatchCBO batchDelete(List<T> list,boolean checkRefered) throws VciBaseException; /** * æ¹éå 餿°æ®ï¼å¯ä»¥å¨requestéè®¾ç½®ä¸æä¹ å @@ -321,12 +337,8 @@ * @return éè¦å建çCBO,CLO;éè¦ä¿®æ¹çCBO,CLO;éè¦å é¤çCBO,CLO,checkRefered:[false/true]æ¯å¦æ£æ¥è¢«å¼ç¨ï¼é»è®¤ä¸æ£æ¥ * @throws VciBaseException */ <T> BatchCBO batchDelete(List<T> list,boolean checkRefered) throws VciBaseException; <T> BatchCBO batchDelete(List<T> list) throws VciBaseException; /** * æ ¹æ®æ¥è¯¢æ¡ä»¶æ¥å 餿°æ® * @param c å 餿°æ®å¯¹è±¡æå±ç±» @@ -420,7 +432,8 @@ * @return åè¡¨æ°æ®ï¼æ°æ®æ¯Mapå½¢å¼çï¼å å«åé¡µä¿¡æ¯ * @throws VciBaseException */ DataGrid queryGridByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph) throws VciBaseException; DataGrid queryGridByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph) throws VciBaseException; /** * æ ¹æ®æ¥è¯¢æ¹æ¡æ¥æ¥è¯¢åè¡¨æ°æ®ï¼å¯ä»¥èªå®ä¹æ¥è¯¢çåï¼å æ¬åç §åæä¸¾ @@ -432,8 +445,9 @@ * @return åè¡¨æ°æ®ï¼æ°æ®æ¯Mapå½¢å¼çï¼å å«åé¡µä¿¡æ¯ * @throws VciBaseException */ DataGrid queryGridByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph, List<String> clauseList) throws VciBaseException; DataGrid queryGridByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph, List<String> clauseList) throws VciBaseException; /** * æ¥è¯¢å¯¹è±¡çåè¡¨æ°æ® * @param c æ¥è¯¢å¯¹è±¡æå±ç±» Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
@@ -959,7 +959,7 @@ tree.setOid(cbo.oid); tree.setText(cbo.id + " " + cbo.name); Map<String,String> attributeMap = new HashMap<>(); WebUtil.copyValueToCboFromMap(cbo,attributeMap); WebUtil.copyValueToMapFromBos(cbo,attributeMap); tree.setAttributes(attributeMap); tree.setLeaf(true); treeList.add(tree); Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
@@ -15,21 +15,23 @@ import com.vci.omd.utils.ObjectTool; import com.vci.pagemodel.*; import com.vci.starter.web.annotation.Column; import com.vci.starter.web.annotation.VciFieldType; import com.vci.starter.web.constant.QueryOptionConstant; import com.vci.starter.web.enumpck.BooleanEnum; import com.vci.starter.web.enumpck.VciFieldTypeEnum; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.DataGrid; import com.vci.starter.web.pagemodel.PageHelper; import com.vci.starter.web.util.BeanUtilForVCI; import com.vci.starter.web.util.Lcm.Func; import com.vci.starter.web.util.VciBaseUtil; import com.vci.starter.web.util.VciDateUtil; import com.vci.starter.web.wrapper.VciQueryWrapperForDO; import com.vci.web.properties.WebProperties; import com.vci.web.service.*; import com.vci.web.util.PlatformClientUtil; import com.vci.web.util.WebUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.math3.distribution.TDistribution; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.slf4j.Logger; @@ -553,7 +555,7 @@ // ä¸å±åç § a.b // 第äºä¸ªåæ°ç»ç©ºï¼æ¯æ¤ä¸å¤ä»å±æ§ä¸æ¥å ¶åæ°çä¸å¡ç±»åï¼ç±ä¸ä¸ä¸ç¨æä¸è¿è¡å¤ç BtmRefQueryOption refOpt = new BtmRefQueryOption( kvs[0], "", new String[]{kvs[1]} kvs[0], "", new String[]{kvs[1]} ); refOpts.add(refOpt); } else if(len == 3){ @@ -563,7 +565,7 @@ // ä¸å±ä»¥çåç § a.b.c.d a.b.c.d.e // TODO éè¦æ¯æä¸å±ä»¥å以ä¸çåç § } }else if(attrName.indexOf("_")>-1 }else if(attrName.indexOf("_")>-1 && !"lcStatus_text".toLowerCase().equalsIgnoreCase(attrName.toLowerCase())){ enumAttrName.add(attrName); }else{ @@ -596,8 +598,6 @@ ObjectQueryService.FindBTMObjectsV3Result bos = qtService.findBTMObjectsV3(qt.getId(), OQTool.qtTOXMl(qt).asXML(), refOpts.toArray(new BtmRefQueryOption[refOpts.size()])); if (bos != null && bos.count > 0) { for (BusinessObject bo : bos.returnValue) { // BusinessObject cbo = new BusinessObject(); // cbo = bo; queryEnumText(bo,enumAttrName); allCbos.add(bo); } @@ -700,7 +700,7 @@ Map<String, OsStatusVO> statusVOMap = statusService.selectAllStatusMap(); cbos.stream().forEach(cbo->{ try{ ObjectTool.setBOAttributeValue(cbo,"lcStatus_text", statusVOMap.getOrDefault(cbo.lcStatus,new OsStatusVO()).getName()); ObjectTool.setBOAttributeValue(cbo,"lcStatus_text".toLowerCase(), statusVOMap.getOrDefault(cbo.lcStatus,new OsStatusVO()).getName()); }catch(Exception e){ logger.error("è·åçå½å¨æä¸ç¶æçæ¾ç¤ºææ¬åºé",e); } @@ -728,7 +728,7 @@ @Override public void queryEnumText(BusinessObject cbo, LinkObject clo, List<String> enumAttrName) throws VciBaseException{ if(enumAttrName.size()>0){//æ¥è¯¢æä¸¾ for(String enumAttr:enumAttrName){//æ ¼å¼ä¸º code_field codeæ¯æä¸¾çç¼ç ï¼fieldæ¯å½åä¸å¡ç±»åå卿䏾å¼çåæ®µ for(String enumAttr : enumAttrName){//æ ¼å¼ä¸º code_field codeæ¯æä¸¾çç¼ç ï¼fieldæ¯å½åä¸å¡ç±»åå卿䏾å¼çåæ®µ if(enumAttr.toLowerCase().equals("creator_name")){ //å建人çåç§° String creator = ""; @@ -770,18 +770,20 @@ String enumCode = tempArray[0];//æä¸¾ç¼ç if (tempArray.length > 1) { //仿䏾ä¸è·åå¼ String valueFieldName = tempArray[1]; String valueFieldName = tempArray[1];//æä¸¾å¨ä¸å¡ç±»åä¸åæ¾ç屿§ String comboxField = ""; if(valueFieldName.contains("#")){ valueFieldName = tempArray[1].split("#")[0]; comboxField = tempArray[1].split("#")[1]; } //è·åæä¸¾é¡¹ String enumKey = ""; if (cbo != null) { enumKey = ObjectTool.getBOAttributeValue(cbo,valueFieldName); } else if (clo != null) { enumKey = ObjectTool.getLOAttributeValue(clo,valueFieldName); } //è·åæä¸¾é¡¹ç䏿æ¾ç¤º String enumText = ""; if (WebUtil.isNotNull(enumKey)) { enumText = enumService.getValue(enumCode, enumKey); @@ -994,9 +996,8 @@ * @throws VciBaseException æ¥è¯¢åºé伿åºå¼å¸¸ */ @Override public List<BusinessObject> queryCBOByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph, List<String> clauseList) throws VciBaseException { public List<BusinessObject> queryCBOByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph, List<String> clauseList) throws VciBaseException { QueryTemplate qt = getQtByName(queryScheme,replaceMap); return baseQueryCBO(qt,conditionMap,ph,clauseList); } @@ -1155,7 +1156,7 @@ /** * åªç¨sqlè¯å¥æ¥è¯¢ï¼è¿ä¸ªåqueryBySqlForMapåºå«æ¯ï¼ç¹æ®çsql(å¦å 嫿彿°ç)å¯ä»¥ç¨è¿ä¸ªæ¹æ³ï¼ä½æ¯æsqlæ³¨å ¥é£é© * @param sql sqlè¯å¥ï¼æ¥è¯¢æ¡ä»¶å¿ é¡»èªè¡å¨å ¶ä¸å¤ç宿 * @return æ°æ®æ å° * @return æ°æ®æ å°ãMapä¸ï¼keyå¼ä¸ºå¤§åã * @throws VciBaseException æ¥è¯¢åºéæ´»æåºå¼å¸¸ */ @Override @@ -1198,13 +1199,32 @@ List<Map> allData = queryByOnlySqlForMap(sql); //éè¦è½¬æ¢ä¸ä¸cboçé£ä¸ªå±æ§ Map<String/**ä¸å¡ç±»åä¸çåæ®µ*/, String/**屿§éçåæ®µ**/> fieldNameMap = WebUtil.getFieldNameMap(tClass); Map<String, Field> fieldMap = WebUtil.getFieldMapForObject(tClass); List<T> dataList = new ArrayList<>(); if(!CollectionUtils.isEmpty(allData)){ allData.stream().forEach(data->{ Map thisData = new HashMap(); if(!CollectionUtils.isEmpty(data)){ data.forEach((key,value)->{ thisData.put(fieldNameMap.getOrDefault(((String)key).toLowerCase(Locale.ROOT), (String) key),value); String fieldName = fieldNameMap.getOrDefault(((String)key).toLowerCase(Locale.ROOT), (String) key); String fieldValue = String.valueOf(value); if(fieldMap.containsKey(fieldName)){ Field field = fieldMap.get(fieldName); if(field.isAnnotationPresent(VciFieldType.class)){ VciFieldType vciFieldType = field.getAnnotation(VciFieldType.class); VciFieldTypeEnum vciFieldTypeEnum = vciFieldType.value(); if(VciFieldTypeEnum.VTDateTime.equals(vciFieldTypeEnum) && StringUtils.isNotBlank(fieldValue)){ fieldValue = VciDateUtil.date2Str(VciDateUtil.long2Date(Long.parseLong(fieldValue)), VciDateUtil.DateTimeFormat); } if(VciFieldTypeEnum.VTDate.equals(vciFieldTypeEnum) && StringUtils.isNotBlank(fieldValue)){ fieldValue = VciDateUtil.date2Str(VciDateUtil.long2Date(Long.parseLong(fieldValue)), VciDateUtil.DateFormat); } if(VciFieldTypeEnum.VTTime.equals(vciFieldTypeEnum) && StringUtils.isNotBlank(fieldValue)){ fieldValue = VciDateUtil.date2Str(VciDateUtil.long2Date(Long.parseLong(fieldValue)), VciDateUtil.TimeFormat); } } } thisData.put(fieldName,fieldValue); }); } try { @@ -1224,7 +1244,7 @@ * æ ¹æ®sqlè¯å¥æ¥æ¥è¯¢å 容ï¼è¿åMap----sqlä¸è½æ¯select * æè select t.* * @param sql 为äºé²æ¢SQLæ³¨å ¥ï¼å¼å¿ é¡»å¨sqlè¯å¥é以:xxxæ ¼å¼ï¼å¦ id =:idvalueï¼ç¶åå¨conditionMap䏿·»å 建为idvalueçæ ¼å¼ * @param conditionMap æ¥è¯¢æ¡ä»¶ï¼å¿ é¡»ä¸sqléå¯¹åº * @return ä¸å¡æ°æ®çæ å° * @return ä¸å¡æ°æ®çæ å°ã * @throws VciBaseException æ¥è¯¢åºé伿åºå¼å¸¸ */ @Override @@ -1234,7 +1254,7 @@ } /** * åä¸ä¸ªæ¹æ³ä¸æ ·ï¼å¤ä¼ äºæ¥è¯¢å段 selectKeys * åä¸ä¸ªæ¹æ³ä¸æ ·ï¼å¤ä¼ äºæ¥è¯¢å段 selectKeysãsqlä¸è½æ¯select * æè select t.* * @param sql sqlè¯å¥ * @param conditionMap æ¥è¯¢æ¡ä»¶ * @param selectKeys æ¥è¯¢çåæ®µ @@ -1272,7 +1292,7 @@ ava = new AttributeValue[0]; } try { String[][] results =platformClientUtil.getSqlQueryService(sql, ava); String[][] results = platformClientUtil.getSqlQueryService(sql, ava); if(results.length>0){ if(selectKeys==null) { String selectSql = sql.substring(sql.toLowerCase(Locale.ROOT).indexOf("select") + 6, sql.toLowerCase(Locale.ROOT).indexOf(" from")).trim(); @@ -1345,35 +1365,32 @@ swapConditionMap(c,conditionMap); //è·åè¦æ¥è¯¢çææçå Map<String,String> allFieldAttrMap = WebUtil.getFieldNameMap(c); if(!allFieldAttrMap.containsKey("lctid")){ allFieldAttrMap.put("lctid","lctid"); //ä¿®æ¹allFieldAttrMapéåä¸çkeyç大å°å List<String> queryAttr = new ArrayList<String>(); Iterator<String> it = allFieldAttrMap.keySet().iterator(); while(it.hasNext()){ queryAttr.add(it.next()); } List<String> queryAttr = new ArrayList<String>(); Iterator<String> it = allFieldAttrMap.keySet().iterator(); while(it.hasNext()){ queryAttr.add(it.next()); } for(String columnName:queryAttr){ String fieldName = allFieldAttrMap.get(columnName); allFieldAttrMap.remove(columnName); for(String columnName : queryAttr){ String fieldName = allFieldAttrMap.get(columnName); allFieldAttrMap.remove(columnName); allFieldAttrMap.put(columnName.toLowerCase(),fieldName); } List<T> allObject = new ArrayList<T>(); List<BusinessObject> allCbos = queryCBO(WebUtil.getBtmTypeByObject(c), conditionMap, ph, allFieldAttrMap.keySet().stream().collect(Collectors.toList()));//æ§è¡æ¥è¯¢ List<String> oids = new ArrayList<String>(); if(allCbos!=null&&allCbos.size()>0){ List<String> clauseList = new ArrayList<>(allFieldAttrMap.keySet()); List<BusinessObject> allCbos = queryCBO(WebUtil.getBtmTypeByObject(c).toLowerCase(), conditionMap, ph, clauseList); if(!CollectionUtils.isEmpty(allCbos)){ for(BusinessObject cbo : allCbos){ T obj = null; try { obj = c.newInstance(); WebUtil.copyValueToObjectFromCbos(cbo, obj,allFieldAttrMap);//为äºå°å»æ¥è¯¢ä¸æ¬¡å段 } catch (InstantiationException e) { WebUtil.copyValueToObjectFromCbos(cbo, obj, allFieldAttrMap);//为äºå°å»æ¥è¯¢ä¸æ¬¡å段 } catch (Exception e) { } catch (IllegalAccessException e) { } if(obj !=null){ oids.add(cbo.oid); allObject.add(obj); } } @@ -1453,6 +1470,7 @@ swapConditionMap(c,conditionMap); //è·åè¦æ¥è¯¢çææçå Map<String,String> allFieldAttrMap = WebUtil.getFieldNameMap(c); //ä¿®æ¹allFieldAttrMapéåä¸çkeyç大å°å List<String> queryAttr = new ArrayList<String>(); Iterator<String> it = allFieldAttrMap.keySet().iterator(); while(it.hasNext()){ @@ -1463,18 +1481,18 @@ allFieldAttrMap.remove(columnName); allFieldAttrMap.put(columnName.toLowerCase(),fieldName); } List<String> clauseList = new ArrayList<>(allFieldAttrMap.keySet()); List<T> allObject = new ArrayList<T>(); List<BusinessObject> allCbos = queryCBOByScheme(queryScheme, conditionMap, replaceMap,ph, allFieldAttrMap.keySet().stream().collect(Collectors.toList())); List<BusinessObject> allCbos = queryCBOByScheme(queryScheme, conditionMap, replaceMap,ph, clauseList); List<String> oids = new ArrayList<String>(); if(allCbos!=null&&allCbos.size()>0){ if(allCbos != null && allCbos.size() > 0){ for(BusinessObject cbo : allCbos){ T obj = null; try { obj = c.newInstance(); WebUtil.copyValueToObjectFromCbos(cbo, obj,allFieldAttrMap);//为äºå°å»æ¥è¯¢ä¸æ¬¡å段 } catch (InstantiationException e) { } catch (Exception e) { } catch (IllegalAccessException e) { } if(obj !=null){ oids.add(cbo.oid); @@ -1598,12 +1616,10 @@ //ç¼è¾çæ¶åï¼TSåOIDä¸è½è®¾ç½®.å 为平å°é£æ¥å£è®¾ç½®äºå°±ä¼æ¥é }else { //éè¦å¤ææ¯å¦é»è®¤ç屿§ï¼å¦ææ¯é»è®¤å±æ§ï¼å使ç¨å¯¹è±¡çèµå¼çæ¹å¼ if (WebUtil.isDefaultField(fieldName) && WebUtil.inArray(new String[]{"id", "name", "description","lcstatus","revisionvalue","versionvalue"}, fieldName.toLowerCase())) { WebUtil.setValueToField(fieldName, cbo, value); ObjectTool.setBOAttributeValue(cbo, attrName.toLowerCase(), value); } else { ObjectTool.setBOAttributeValue(cbo, attrName.toLowerCase(), value); if (WebUtil.isDefaultField(fieldName.toLowerCase()) && WebUtil.inArray(new String[]{"id", "name", "description","lcstatus","revisionvalue","versionvalue"}, fieldName.toLowerCase())) { WebUtil.setValueToCboField(fieldName, cbo, value); } ObjectTool.setBOAttributeValue(cbo, attrName.toLowerCase(), value); } } } @@ -1752,13 +1768,20 @@ public <T> BatchCBO delete(T obj) throws VciBaseException { return delete(obj,true); } /** * å 餿°æ®ï¼å¯ä»¥å¨requestéè®¾ç½®ä¸æä¹ å * @param obj å 餿°æ®å¯¹è±¡ * @param checkRefered æ¯å¦å é¤å¼ç¨çæ°æ® * @return éè¦å建çCBO,CLO;éè¦ä¿®æ¹çCBO,CLO;éè¦å é¤çCBO,CLO * @throws VciBaseException */ @Override public <T> BatchCBO delete(T obj,boolean checkRefered) throws VciBaseException{ List<T> list = new ArrayList<T>(); list.add(obj); return batchDelete(list,checkRefered); } /** * æ¹éå 餿°æ®ï¼å¯ä»¥å¨requestéè®¾ç½®ä¸æä¹ å @@ -1796,9 +1819,8 @@ String btmType = WebUtil.getBtmTypeByObject(obj.getClass()); String pkValue = WebUtil.getValueFromFieldForCbo(pkField, obj); //æä»¥è¿é乿¯ç´æ¥æ¥è¯¢çå个' List<BusinessObject> deleteCbos = queryCBO(btmType, getOneQuery( WebUtil.getCboAttrNameFromField(pkField, obj.getClass()), pkValue)); if(deleteCbos!=null){ List<BusinessObject> deleteCbos = queryCBO(btmType, getOneQuery(WebUtil.getCboAttrNameFromField(pkField, obj.getClass()), pkValue)); if(!CollectionUtils.isEmpty(deleteCbos)){ allDeleteCbos.addAll(deleteCbos); if(!btmBos.containsKey(btmType)){ btmBos.put(btmType, deleteCbos); @@ -1894,15 +1916,14 @@ conditionMap.put(QUERY_FILTER_SECRET,BooleanEnum.FASLE.getValue());//æ¥è¯¢çæ¶åä¸è½æ¥è¯¢å¯çº§ List<BusinessObject> allCbos = queryCBO(btmType, conditionMap); BatchCBO batchCbo = new BatchCBO(); if(allCbos.size()>0){ if(!CollectionUtils.isEmpty(allCbos)){ Map<String,List<BusinessObject>> btmBos = new HashMap<String, List<BusinessObject>>(); btmBos.put(btmType, allCbos); checkCanDelete(btmBos); Set<BusinessObject> allDeleteCbos = new HashSet<BusinessObject>(); allDeleteCbos.addAll(allCbos); Set<BusinessObject> allDeleteCbos = new HashSet<BusinessObject>(allCbos); batchCbo.setDeleteCbos(allDeleteCbos); } if(allCbos.size()>0 && WebUtil.isPersistence()){ if(!CollectionUtils.isEmpty(allCbos) && WebUtil.isPersistence()){ persistenceBatch(batchCbo); } return batchCbo; @@ -1931,7 +1952,7 @@ selectSql += ",btmname "; } sql = selectSql + fromSql; List<BusinessObject> allDelete =queryBySql(sql, conditionMap); List<BusinessObject> allDelete = queryBySql(sql, conditionMap); if(allDelete.size() == 0){ return batchCbo;//没æå é¤ä»»ä½æ°æ® } @@ -2002,7 +2023,6 @@ return queryGridByBo(btmType,conditionMap,new PageHelper(-1,true)); } /** * æ ¹æ®ä¸å¡ç±»åæ¥æ¥è¯¢åè¡¨æ°æ®ï¼å¯ä»¥å¨pageHelperä¸è®¾ç½®æ¯å¦æ¥è¯¢æ»æ° * @param btmType ä¸å¡ç±»ååç§° @@ -2015,7 +2035,7 @@ public DataGrid queryGridByBo(String btmType, Map<String, String> conditionMap, PageHelper ph) throws VciBaseException { return queryGridByBo(btmType,conditionMap,ph,null); return queryGridByBo(btmType,conditionMap,ph,new ArrayList<String>()); } /** @@ -2037,7 +2057,7 @@ } List<BusinessObject> allCbos = queryCBO(btmType, conditionMap, ph, clauseList); DataGrid dg = new DataGrid(); if(allCbos.size()>0){ if(!CollectionUtils.isEmpty(allCbos)){ List<Map> mapList = cbos2Map(allCbos); dg.setData(mapList); //è¯å®æ¯å½åå页æå¼ï¼æä¼ææ»æ° Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java
@@ -303,7 +303,7 @@ String jsonString = JSONObject.toJSONStringWithDateFormat(o, VciDateUtil.DateTimeMillFormat, SerializerFeature.WriteDateUseDateFormat); if(StringUtils.isNotBlank(jsonString)) { JSONObject jsonObject = JSONObject.parseObject(jsonString); if(jsonObject!=null){ if(jsonObject != null){ for(String key : jsonObject.keySet()){ map.put(key,jsonObject.get(key)); } @@ -324,7 +324,7 @@ String jsonString = JSONObject.toJSONStringWithDateFormat(o, VciDateUtil.DateTimeMillFormat, SerializerFeature.WriteDateUseDateFormat); if(StringUtils.isNotBlank(jsonString)) { JSONObject jsonObject = JSONObject.parseObject(jsonString); if(jsonObject!=null){ if(jsonObject != null){ for(String key : jsonObject.keySet()){ map.put(key,jsonObject.getString(key)); } @@ -457,7 +457,7 @@ Object key = it.next(); String newKey = key.toString().toLowerCase(); Object value = map.get(key); if(value !=null){ if(value != null){ if(value instanceof String && WebUtil.isNotNull(value.toString())){ unNullMap.put(newKey, value); }else if(!(value instanceof String)){ @@ -476,7 +476,7 @@ public static Map<String,String> getReferAttrName(Class c){ Map<String,String> fieldMap = new HashMap<String, String>(); List<Field> allField = getAllFieldForObj(c); if(allField!=null&&allField.size()>0){ if(!CollectionUtils.isEmpty(allField)){ for(Field field : allField){ if (field.isAnnotationPresent(Transient.class)){ //æåç §æè æä¸¾ @@ -508,7 +508,7 @@ public static List<String> getReferBoAttrName(Class c,boolean isNotHasEnum){ List<String> fieldMap = new ArrayList<String>(); List<Field> allField = getAllFieldForObj(c); if(allField!=null&&allField.size()>0){ if(!CollectionUtils.isEmpty(allField)){ for(Field field : allField){ if (field.isAnnotationPresent(Transient.class)){ //æåç §æè æä¸¾ @@ -524,18 +524,18 @@ } /** * è·å对象ä¸ä¸å¡ç±»åéç屿§æ å° * @param c 对象æå±ç±» * @return Map<String,String> ä¸å¡ç±»åçåæ®µï¼å¯¹è±¡ä¸ç屿§ * è·åDO对象ä¸ä¸å¡ç±»åéç屿§æ å° * @param c DO对象æå±ç±» * @return Map<String,String> ä¸å¡ç±»åçåæ®µ(key)ï¼DO对象ä¸ç屿§(value) */ public static Map<String/*ä¸å¡ç±»åä¸çåæ®µ*/,String/*对象ä¸ç屿§*/> getFieldNameMap(Class c){ public static Map<String/*ä¸å¡ç±»åä¸çåæ®µ*/,String/*DO对象ä¸ç屿§*/> getFieldNameMap(Class c){ Map<String,String> fieldMap = new HashMap<String, String>(); List<Field> allField = getAllFieldForObj(c); if(allField!=null&&allField.size()>0){ if(!CollectionUtils.isEmpty(allField)){ for(Field field : allField){ if(!field.getName().equals("serialVersionUID")){ if(!field.isAnnotationPresent(Transient.class) ){ String clientBoAttrName = getCboAttrNameFromField(field,c); String clientBoAttrName = getCboAttrNameFromField(field, c); fieldMap.put(clientBoAttrName, field.getName()); if(field.isAnnotationPresent(VciUseEnum.class)){ //è¿ä¸ªæ¯æä¸¾ï¼éè¦ @@ -555,10 +555,10 @@ } } if(!CollectionUtils.isEmpty(fieldMap)){ //ççææ²¡ænull //ççææ²¡ænullï¼è¿æ»¤ævalue为nullç Map<String,String> fieldMapNotNull = new HashMap<>(); fieldMap.forEach((key,value)->{ if(value!=null){ if(value != null){ fieldMapNotNull.put(key,value); } }); @@ -608,14 +608,14 @@ if(!isFindColumn){ //æ¾ä¸ä¸Getæ¹æ³ä¸..setæ¹æ³ä¸è¯å®æ¯ä¸æ¯æçï¼ Method getMethod = getGetmethod(c, field); if(getMethod!=null && !getMethod.isAnnotationPresent(Transient.class)){ if(getMethod != null && !getMethod.isAnnotationPresent(Transient.class)){ if(getMethod.isAnnotationPresent(Column.class)){ String name = ((Column)getMethod.getAnnotation(Column.class)).name(); if(isNotNull(name)){ clientBoAttrName = name.toLowerCase(); } } }else if(getMethod!=null && getMethod.isAnnotationPresent(Transient.class)){ }else if(getMethod != null && getMethod.isAnnotationPresent(Transient.class)){ //说æä¸æ¯æä¹ åç屿§ï¼ä½æ¯ä»å¹³å°ä¸æ¥è¯¢åºæ¥åå¯è½å¾éè¦æ¾ç¤º String referColumn = ((Transient)field.getAnnotation(Transient.class)).referColumn(); if(isNotNull(referColumn)){ @@ -623,7 +623,9 @@ } } } return VciQueryWrapperForDO.BASE_MODEL_COMPATIBILITY_MAP.getOrDefault(clientBoAttrName.toLowerCase(Locale.ROOT),clientBoAttrName); //å¦æçæ¬æ¬æ¬¡åºå·ç屿§ï¼éè¦ä»å±æ§çæ å°ä¸ï¼è·åä¸å¡ç±»åä¸çåæ®µåç§° clientBoAttrName = VciQueryWrapperForDO.BASE_MODEL_COMPATIBILITY_MAP.getOrDefault(clientBoAttrName.toLowerCase(Locale.ROOT),clientBoAttrName); return clientBoAttrName; } /** @@ -653,7 +655,7 @@ */ public static Field getPkFieldForObj(Class c){ List<Field> allField = getAllFieldForObj(c); if(allField!=null&&allField.size()>0){ if(!CollectionUtils.isEmpty(allField)){ for(Field field : allField){ if(field.isAnnotationPresent(Id.class)){ return field; @@ -676,7 +678,7 @@ */ public static Field getTsField(Class c){ List<Field> allField = getAllFieldForObj(c); if(allField!=null&&allField.size()>0){ if(!CollectionUtils.isEmpty(allField)){ for(Field field : allField){ if(field.getName().equals("ts")){ return field; @@ -707,10 +709,10 @@ */ public static Field getFieldForObject(String fieldName,Class c){ List<Field> allField = getAllFieldForObj(c); if(allField!=null&&allField.size()>0){ if(!CollectionUtils.isEmpty(allField)){ for(Field field : allField){ if(field.getName().toLowerCase().equalsIgnoreCase(fieldName.toLowerCase())){ return field; return field; } } } @@ -770,8 +772,8 @@ try { PropertyDescriptor pd = new PropertyDescriptor(fieldName, c); return pd.getReadMethod(); } catch (SecurityException e) { } catch (IntrospectionException e) { } catch (Exception e) { //TODO ä¸åä»»ä½å¤ç } } return null; @@ -815,87 +817,80 @@ public static void setValueForFieldFromCbo(String fieldName,Object obj,String value){ try{ Field field = getFieldForObject(fieldName,obj); if(field!=null){ field.setAccessible(true); Method setMethod = getSetmethod(field.getDeclaringClass(), fieldName); if(setMethod ==null) { logger.error(obj.getClass().getName() + "ä¸å±æ§" + fieldName + "没æsetteræ¹æ³"); } Class type = field.getType(); //ä»å¹³å°è¯»åå°çå¼ä¸ä¼ä¸ºnullï¼ä¸ºç©ºæ¶ä¸º""ï¼æä»¥ä¸å¤çç©ºå¼ if(type.equals(int.class) || type.equals(Integer.class)){ int valueObj = getInt(value); if(setMethod !=null) { setMethod.invoke(obj,valueObj); }else{ field.set(obj,valueObj); } }else if(type.equals(float.class) || type.equals(Float.class)){ float valueObj = getFloat(value); if(setMethod !=null) { setMethod.invoke(obj, valueObj); }else{ field.set(obj,valueObj); } }else if(type.equals(long.class) || type.equals(Long.class)){ long valueObj = getLong(value); if(setMethod !=null) { setMethod.invoke(obj, valueObj); }else{ field.set(obj,valueObj); } }else if(type.equals(Double.class) || type.equals(double.class)){ double valueObj = getDouble(value); if(setMethod !=null) { setMethod.invoke(obj, valueObj); }else{ field.set(obj,valueObj); } //ä»å¹³å°ä¸æ¥è¯¢åºæ¥å°±ä¸ç¨å¤ç精度äºï¼å 为平å°ä¼èªè¡å¤ç }else if(type.equals(Short.class) || type.equals(short.class)){ short valueObject = getShort(value); if(setMethod !=null) { setMethod.invoke(obj, valueObject); }else{ field.set(obj,valueObject); } }else if(type.equals(Date.class)){ //å¹³å°å®é åå¨ç齿¯Timestamp,ä¸è®ºæ¯æ¥æï¼æ¥ææ¶é´ï¼é½æ¯ãå¦æä» æ¯æ¶é´ï¼éè¦ç¨å符串æ¥åå¨ã Date d = null; if(StringUtils.isNotBlank(value)){ try { if (value.indexOf("-") > -1 && value.indexOf(".") > -1 && value.indexOf(" ") > -1 && value.substring(value.lastIndexOf(".") + 1).length() == 9) { //2013-4-19.14.5. 45. 734000000 è¿ç§æ ¼å¼ï¼è¿ä¸ªå¨ä½¿ç¨SQLè¯å¥ç´æ¥æ¥è¯¢åºæ¶é´åæ®µçæ¶å就伿¾ç¤ºæè¿æ · String ymd = value.substring(0, value.indexOf(".")); value = value.substring(value.indexOf(".") + 1); if (value.indexOf(".") > -1) { String hms = value.substring(0, value.lastIndexOf(".")); String nano = value.substring(value.lastIndexOf(".") + 1).trim(); hms = hms.replace(".", ":").replace(" ", ""); Date tempDate = VciDateUtil.str2Date(ymd + " " + hms, "yyyy-M-d h:m:s"); if (tempDate != null) { Timestamp ts = Timestamp.valueOf(VciDateUtil.date2Str(tempDate, VciDateUtil.DateTimeFormat) + "." + nano); d = ts; } if(field != null){ field.setAccessible(true); Method setMethod = getSetmethod(field.getDeclaringClass(), fieldName); if(setMethod == null) { logger.error(obj.getClass().getName() + "ä¸å±æ§" + fieldName + "没æsetteræ¹æ³"); } Class type = field.getType(); //ä»å¹³å°è¯»åå°çå¼ä¸ä¼ä¸ºnullï¼ä¸ºç©ºæ¶ä¸º""ï¼æä»¥ä¸å¤çç©ºå¼ if(type.equals(int.class) || type.equals(Integer.class)){ int valueObj = getInt(value); if(setMethod != null) { setMethod.invoke(obj,valueObj); }else{ field.set(obj,valueObj); } }else if(type.equals(float.class) || type.equals(Float.class)){ float valueObj = getFloat(value); if(setMethod != null) { setMethod.invoke(obj, valueObj); }else{ field.set(obj,valueObj); } }else if(type.equals(long.class) || type.equals(Long.class)){ long valueObj = getLong(value); if(setMethod != null) { setMethod.invoke(obj, valueObj); }else{ field.set(obj,valueObj); } }else if(type.equals(Double.class) || type.equals(double.class)){ double valueObj = getDouble(value); if(setMethod != null) { setMethod.invoke(obj, valueObj); }else{ field.set(obj,valueObj); } //ä»å¹³å°ä¸æ¥è¯¢åºæ¥å°±ä¸ç¨å¤ç精度äºï¼å 为平å°ä¼èªè¡å¤ç }else if(type.equals(Short.class) || type.equals(short.class)){ short valueObject = getShort(value); if(setMethod != null) { setMethod.invoke(obj, valueObject); }else{ field.set(obj,valueObject); } }else if(type.equals(Date.class)){ //å¹³å°å®é åå¨ç齿¯Timestamp,ä¸è®ºæ¯æ¥æï¼æ¥ææ¶é´ï¼é½æ¯ãå¦æä» æ¯æ¶é´ï¼éè¦ç¨å符串æ¥åå¨ã Date d = null; if(StringUtils.isNotBlank(value)){ try { if (value.indexOf("-") > -1 && value.indexOf(".") > -1 && value.indexOf(" ") > -1 && value.substring(value.lastIndexOf(".") + 1).length() == 9) { //2013-4-19.14.5. 45. 734000000 è¿ç§æ ¼å¼ï¼è¿ä¸ªå¨ä½¿ç¨SQLè¯å¥ç´æ¥æ¥è¯¢åºæ¶é´åæ®µçæ¶å就伿¾ç¤ºæè¿æ · String ymd = value.substring(0, value.indexOf(".")); value = value.substring(value.indexOf(".") + 1); if (value.indexOf(".") > -1) { String hms = value.substring(0, value.lastIndexOf(".")); String nano = value.substring(value.lastIndexOf(".") + 1).trim(); hms = hms.replace(".", ":").replace(" ", ""); Date tempDate = VciDateUtil.str2Date(ymd + " " + hms, "yyyy-M-d h:m:s"); if (tempDate != null) { Timestamp ts = Timestamp.valueOf(VciDateUtil.date2Str(tempDate, VciDateUtil.DateTimeFormat) + "." + nano); d = ts; } } else if (value.matches("\\d+\\.?\\d*")) { //è¿æåç¹çæ¯ç»çlongåçå符串 d = new Date(); d.setTime(getLong(value)); } else { if(field.isAnnotationPresent(VciFieldType.class)) { VciFieldType vciFieldType = field.getAnnotation(VciFieldType.class); if(VciFieldTypeEnum.VTDate.equals(vciFieldType.value())) { d = VciDateUtil.str2Date(value, VciDateUtil.DateFormat); }else if(VciFieldTypeEnum.VTDateTime.equals(vciFieldType.value())){ d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeFormat); }else { if(value.indexOf("-") > -1 &&value.length() == 10 ) { d = VciDateUtil.str2Date(value, VciDateUtil.DateFormat); }else { d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeMillFormat); } } } } else if (value.matches("\\d+\\.?\\d*")) { //è¿æåç¹çæ¯ç»çlongåçå符串 d = new Date(); d.setTime(getLong(value)); } else { if(field.isAnnotationPresent(VciFieldType.class)) { VciFieldType vciFieldType = field.getAnnotation(VciFieldType.class); if(VciFieldTypeEnum.VTDate.equals(vciFieldType.value())) { d = VciDateUtil.str2Date(value, VciDateUtil.DateFormat); }else if(VciFieldTypeEnum.VTDateTime.equals(vciFieldType.value())){ d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeFormat); }else { if(value.indexOf("-") > -1 &&value.length() == 10 ) { d = VciDateUtil.str2Date(value, VciDateUtil.DateFormat); @@ -903,34 +898,41 @@ d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeMillFormat); } } } } catch (Exception e) { try { d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeMillFormat); } catch (Exception e1) { }else { if(value.indexOf("-") > -1 &&value.length() == 10 ) { d = VciDateUtil.str2Date(value, VciDateUtil.DateFormat); }else { d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeMillFormat); } } } } try { if(d != null ){ if(setMethod !=null) { setMethod.invoke(obj, d); }else{ field.set(obj,d); } } } catch (Exception e) { } }else if(type.equals(String.class)){ if(setMethod != null) { setMethod.invoke(obj, value); }else{ field.set(obj,value); } }else{ logger.info("WebUtil.setValueForFieldForCbo:䏿¯æçç±»å" + type.toString()); } } catch (Exception e) { try { d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeMillFormat); } catch (Exception e1) { } } } try { if(d != null ){ if(setMethod !=null) { setMethod.invoke(obj, d); }else{ field.set(obj,d); } } } catch (Exception e) { } }else if(type.equals(String.class)){ if(setMethod != null) { setMethod.invoke(obj, value); }else{ field.set(obj,value); } }else{ logger.info("WebUtil.setValueForFieldForCbo:䏿¯æçç±»å" + type.toString()); } } }catch (Exception e) { if(logger.isErrorEnabled()){ @@ -1009,7 +1011,7 @@ setMethod.invoke(targetObject, value); }else{ Field field = getFieldForObject(fieldName, targetObject); if(field !=null){ if(field != null){ field.setAccessible(true); field.set(targetObject, value); } @@ -1040,12 +1042,12 @@ if(isNotNull(fieldName)){ try { Method getMethod = getGetmethod(sourceObject.getClass(), fieldName); if(getMethod !=null){ if(getMethod != null){ return getMethod.invoke(sourceObject); }else{ //è¯´ææ²¡æè®¾ç½®getterï¼æ¯å¦BOåLO对象è¿ç§ Field field = getFieldForObject(fieldName, sourceObject); if(field !=null){ if(field != null){ field.setAccessible(true); return field.get(sourceObject); } @@ -1089,7 +1091,7 @@ * @param fieldAttrMap 屿§æ å° */ public static void copyValueToObjectFromCbos(BusinessObject cbo,Object obj,Map<String,String> fieldAttrMap){ if(cbo!=null){ if(cbo != null){ copyValueToObjectFromBos(cbo,obj,fieldAttrMap); } } @@ -1140,7 +1142,7 @@ * @param bo ä¸å¡æ°æ® * @param obj 对象 */ public static void copyValueToObjectFromBos(com.vci.corba.omd.data.BusinessObject bo ,Object obj){ public static void copyValueToObjectFromBos(BusinessObject bo ,Object obj){ copyValueToObjectFromBos(bo,obj,null); } @@ -1150,59 +1152,83 @@ * @param obj 对象 * @param fieldAttrMap 屿§æ å° */ public static void copyValueToObjectFromBos(com.vci.corba.omd.data.BusinessObject bo , Object obj, Map<String,String> fieldAttrMap){ if(bo!=null && obj != null){ public static void copyValueToObjectFromBos(BusinessObject bo , Object obj, Map<String,String> fieldAttrMap){ if(bo != null && obj != null){ //å æææçåæ®µæ å°æ¾å° if(fieldAttrMap == null){ fieldAttrMap = getFieldNameMap(obj.getClass()); } com.vci.corba.omd.data.AttributeValue[] newAList = bo.newAttrValList; com.vci.corba.omd.data.AttributeValue[] hisAList = bo.hisAttrValList; AttributeValue[] newAList = bo.newAttrValList; AttributeValue[] hisAList = bo.hisAttrValList; //è¦å æBO对象ä¸ç弿·è´è¿å» List<Field> boFields = getAllFieldForObj(bo.getClass()); if(boFields!=null){ for(Field field :boFields){ if(fieldAttrMap.containsKey(field.getName().toLowerCase())){ //说æè¿ä¸ªå°±æ¯å¨BO对象ä¸ç Object value = getValueFromField(field.getName(), bo); if(value !=null){ setValueForFieldFromCbo(fieldAttrMap.get(field.getName().toLowerCase()), obj, getStringValueFromObject(value)); if(!CollectionUtils.isEmpty(boFields)){ for(Field field : boFields){ //说æè¿ä¸ªå°±æ¯å¨BO对象ä¸ç Object value = getValueFromField(field.getName(), bo); if(value != null){ //BusinessObjectåBaseModelä¸ï¼ä»¥ä¸ç屿§ï¼ä¸ç¸åï¼éè¦åç¬å¤ç switch (field.getName().toLowerCase()){ case "revoid": setValueForFieldFromCbo("revisionOid", obj, getStringValueFromObject(value)); break; case "btname": setValueForFieldFromCbo("btmName", obj, getStringValueFromObject(value)); break; case "islastr": setValueForFieldFromCbo("lastr", obj, getStringValueFromObject(value).equalsIgnoreCase("true")?"1":"0"); break; case "isfirstr": setValueForFieldFromCbo("firstr", obj, getStringValueFromObject(value).equalsIgnoreCase("true")?"1":"0"); break; case "islastv": setValueForFieldFromCbo("lastv", obj, getStringValueFromObject(value).equalsIgnoreCase("true")?"1":"0"); break; case "isfirstv": setValueForFieldFromCbo("firstv", obj, getStringValueFromObject(value).equalsIgnoreCase("true")?"1":"0"); break; case "modifytime": setValueForFieldFromCbo("lastmodifytime", obj, getStringValueFromObject(value)); break; case "fromversion": setValueForFieldFromCbo("copyFromVersion", obj, getStringValueFromObject(value)); break; default: setValueForFieldFromCbo(fieldAttrMap.get(field.getName().toLowerCase()), obj, getStringValueFromObject(value)); break; } } } } if(newAList!=null&&newAList.length>0){ if(newAList != null && newAList.length > 0){ for(int i = 0 ; i < newAList.length;i++){ com.vci.corba.omd.data.AttributeValue av = newAList[i]; AttributeValue av = newAList[i]; String attrName = av.name.toLowerCase(); if(fieldAttrMap.containsKey(attrName)) { String fieldName = fieldAttrMap.get(attrName); setValueForFieldFromCbo(fieldName, obj, av.value); }else{ fieldAttrMap.forEach((cboField,fieldName)->{ if(fieldName!=null && fieldName.equalsIgnoreCase(attrName) && cboField.contains(".")){ if(fieldName != null && fieldName.equalsIgnoreCase(attrName) && cboField.contains(".")){ //åç §çæ¶å setValueForFieldFromCbo(fieldName, obj, av.value); return; } }); } } } if(hisAList!=null&&hisAList.length>0){ if(hisAList != null && hisAList.length > 0){ for(int i = 0 ; i < hisAList.length;i++){ com.vci.corba.omd.data.AttributeValue av = hisAList[i]; AttributeValue av = hisAList[i]; String attrName = av.name.toLowerCase(); String fieldName = fieldAttrMap.get(attrName); if(fieldName!=null){ if(fieldName != null){ setValueForFieldFromCbo(fieldName, obj, av.value); }else{ fieldAttrMap.forEach((cboField,field)->{ if(field!=null && field.equalsIgnoreCase(attrName) && cboField.contains(".")){ if(field != null && field.equalsIgnoreCase(attrName) && cboField.contains(".")){ //åç §çæ¶å setValueForFieldFromCbo(field, obj, av.value); return; } }); } @@ -1217,7 +1243,7 @@ * @param map map */ public static void copyValueToMapFromCbos(BusinessObject cbo,Map<String,String> map){ if(cbo!=null){ if(cbo != null){ copyValueToMapFromBos(cbo,map); } } @@ -1227,21 +1253,21 @@ * @param bo ä¸å¡æ°æ® * @param map map */ public static void copyValueToMapFromBos(com.vci.corba.omd.data.BusinessObject bo, Map<String,String> map){ public static void copyValueToMapFromBos(BusinessObject bo, Map<String,String> map){ if(bo!=null ){ //å æææçåæ®µæ å°æ¾å° com.vci.corba.omd.data.AttributeValue[] newAList = bo.newAttrValList; com.vci.corba.omd.data.AttributeValue[] hisAList = bo.hisAttrValList; if(hisAList!=null&&hisAList.length>0){// AttributeValue[] newAList = bo.newAttrValList; AttributeValue[] hisAList = bo.hisAttrValList; if(hisAList != null && hisAList.length > 0){// for(int i = 0 ; i < hisAList.length;i++){ com.vci.corba.omd.data.AttributeValue av = hisAList[i]; AttributeValue av = hisAList[i]; String attrName = av.name.toLowerCase(); map.put(attrName, av.value); } } if(newAList!=null&&newAList.length>0){//NEWçä¼å 级é«äº if(newAList != null && newAList.length > 0){//NEWçä¼å 级é«äº for(int i = 0 ; i < newAList.length;i++){ com.vci.corba.omd.data.AttributeValue av = newAList[i]; AttributeValue av = newAList[i]; String attrName = av.name.toLowerCase(); map.put(attrName, av.value); } @@ -1358,13 +1384,132 @@ if(value == null){ value = ""; } if(isDefaultField(key)){ setValueToField(key, cbo, value); if(isDefaultField(key.toLowerCase())){ //éæ°åç¬å¤çãå 为BaseModelçåºç¡å±æ§åBusinessObjectä¸çææå·®å¼ setValueToCboField(key.toLowerCase(), cbo, value); } ObjectTool.setBOAttributeValue(cbo,key.toLowerCase(), value); } } } /** * ç»BusinessObject对象ä¸ç屿§è®¾ç½®å¼ * @param fieldName 表ä¸å段æDO对象ä¸ç屿§ * @param bo BusinessObject * @param value 屿§å¼ */ public static void setValueToCboField(String fieldName, BusinessObject bo, String value){ switch (fieldName){ case "oid": bo.oid = value; break; case "revisionoid": bo.revoid = value; break; case "nameoid": bo.nameoid = value; break; case "btmname": bo.btName = value; break; case "lastr": bo.isLastR = "1".equals(value); break; case "firstr": bo.isFirstR = "1".equals(value); break; case "lastv": bo.isLastV = "1".equals(value); break; case "firstv": bo.isFirstV = "1".equals(value); break; case "creator": bo.creator = value; break; case "createtime": try { long createTime = Long.parseLong(value); bo.createTime = createTime; } catch (NumberFormatException e) { try { bo.createTime = VciDateUtil.str2Date(value, VciDateUtil.DateTimeFormat).getTime(); } catch (Exception e2) { //TODO } } break; case "lastmodifier": bo.modifier = value; break; case "lastmodifytime": try { long lastModifyTime = Long.parseLong(value); bo.modifyTime = lastModifyTime; } catch (NumberFormatException e) { try { bo.modifyTime = VciDateUtil.str2Date(value, VciDateUtil.DateTimeFormat).getTime(); } catch (Exception e2) { //TODO } } break; case "revisionrule": bo.revisionRule = value; break; case "versionrule": bo.versionRule = value; break; case "revisionseq": bo.revisionSeq = Short.parseShort(value); break; case "revisionvalue": bo.revisionValue = value; break; case "versionseq": bo.versionSeq = Short.parseShort(value); break; case "versionvalue": bo.versionValue = value; break; case "lctid": bo.lctId = value; break; case "lcstatus": bo.lcStatus = value; break; case "ts": try { long ts = Long.parseLong(value); bo.ts = ts; } catch (NumberFormatException e) { try { bo.ts = VciDateUtil.str2Date(value, VciDateUtil.DateTimeFormat).getTime(); } catch (Exception e2) { //TODO } } break; case "id": bo.id = value; break; case "name": bo.name = value; break; case "description": bo.description = value; break; case "owner": bo.owner = value; break; case "copyfromversion": bo.fromVersion = value; break; default: break; } } /** * æ·è´é¾æ¥ç±»åçå¼å°map @@ -1380,7 +1525,7 @@ if(value == null){ value = ""; } if(isDefaultField(key)){ if(isDefaultField(key.toLowerCase())){ setValueToField(key, clo, value); }else { ObjectTool.setLOAttributeValue(clo,key.toLowerCase(), value); @@ -1420,7 +1565,7 @@ if(value==null){ value = ""; } if(isDefaultField(fieldName)){ if(isDefaultField(fieldName.toLowerCase())){ setValueToField(fieldName, cbo, value); } ObjectTool.setBOAttributeValue(cbo,attrName.toLowerCase(), value); @@ -1435,7 +1580,7 @@ */ public static boolean isDefaultField(String fieldNames){ if(VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(fieldNames) || VciQueryWrapperForDO.LIFECYCLE_MANAGE_FIELD_MAP.containsKey(fieldNames) || VciQueryWrapperForDO.REVISION_MANAGE_FIELD_MAP.containsKey(fieldNames) ) { || VciQueryWrapperForDO.REVISION_MANAGE_FIELD_MAP.containsKey(fieldNames) || VciQueryWrapperForDO.BASE_MODEL_COMPATIBILITY_MAP.containsValue(fieldNames)) { return true; } return false; @@ -1729,4 +1874,20 @@ } return BusinessObject; } /** * è·å对象ä¸ç屿§éåã * @param tClass 对象 * @return 屿§éåMapãkeyï¼å±æ§åç§°ï¼valueï¼å±æ§ */ public static Map<String, Field> getFieldMapForObject(Class tClass) { Map<String, Field> fieldMap = new HashMap<>(); List<Field> allField = getAllFieldForObj(tClass); if(!CollectionUtils.isEmpty(allField)){ for(Field field : allField){ fieldMap.put(field.getName(), field); } } return fieldMap; } } Source/plt-web/plt-web-parent/plt-web-permission/src/test/java/StrTest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ import com.vci.web.util.WebUtil; import java.util.Locale; /** * @Description * @Author dangsn * @Date 2024/12/3 17:07 */ public class StrTest { public static void main(String[] args) { String sql = "select AA AS AB FROM dual"; String selectSql = sql.substring(sql.toLowerCase(Locale.ROOT).indexOf("select") + 6, sql.toLowerCase(Locale.ROOT).indexOf(" from")).trim(); String[] selectKeys = selectSql.split(","); for(int j = 0 ; j < selectKeys.length; j ++){ String field = selectKeys[j]; if(WebUtil.isNotNull(field)){ //field = field.toLowerCase(); //æå¯è½æasçæ åµ æè ç©ºæ ¼ æè æ.çæ åµ //å¿ é¡»ä¼å å¤çasåç©ºæ ¼çæ åµï¼æåå¤ç. if(field.indexOf(" as ")>-1){ field = field.substring(field.lastIndexOf(" as ") + 4); }else if(field.indexOf(" ")>-1){ field =field.substring(field.lastIndexOf(" ") + 1); }else if(field.indexOf(".")>-1){ field = field.substring(field.lastIndexOf(".") + 1); } System.out.println(field); } } } } Source/plt-web/plt-web-parent/plt-web/pom.xml
@@ -69,6 +69,13 @@ <artifactId>xstream</artifactId> <version>1.4.10</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/PlatformWebApplication.java
@@ -8,6 +8,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableScheduling; import javax.annotation.PreDestroy; import java.io.File; Source/plt-web/plt-web-parent/plt-web/src/test/java/BoServiceTest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ import com.vci.PlatformWebApplication; import com.vci.corba.omd.data.BusinessObject; import com.vci.starter.web.pagemodel.DataGrid; import com.vci.starter.web.wrapper.VciQueryWrapperForDO; import com.vci.web.service.WebBoServiceI; import com.vci.web.util.WebUtil; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Description * @Author dangsn * @Date 2024/12/3 17:28 */ @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = PlatformWebApplication.class)//åºç¨ç主ç¨åº public class BoServiceTest { @Resource private WebBoServiceI boServiceI; @Test public void test(){ String sql = "select * from platformbtm_part where oid = 'E2ADEE0E-20F9-4CE2-A904-114460B01EB7'"; //List<BusinessObject> list = boServiceI.queryByOnlySql(sql); //List<PartDO> list = boServiceI.queryByOnlySqlForObj(sql, PartDO.class); Map<String, String> conditonMap = new HashMap<>(); conditonMap.put("oid", "E2ADEE0E-20F9-4CE2-A904-114460B01EB7"); List<PartDO> list = boServiceI.queryObject(PartDO.class, conditonMap); //DataGrid dataGrid = boServiceI.queryGridByBo("part", conditonMap); //DataGrid dataGrid = boServiceI.queryGridClass(PartDO.class, conditonMap); //VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditonMap, PartDO.class); //List<PartDO> list = boServiceI.selectByQueryWrapper(wrapper, PartDO.class); System.out.println(WebUtil.getJSONStringWithDateFormat(list)); } } Source/plt-web/plt-web-parent/plt-web/src/test/java/PartDO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,76 @@ import com.vci.starter.web.annotation.Transient; import com.vci.starter.web.annotation.VciBtmType; import com.vci.starter.web.annotation.VciUseRefer; import com.vci.starter.web.constant.FrameWorkLcStatusConstant; import com.vci.starter.web.model.BaseModel; /** * @Description * @Author dangsn * @Date 2024/12/9 11:05 */ @VciBtmType(name = "part", lifeCycle = FrameWorkLcStatusConstant.RELEASE_LIFE_CYCLE) public class PartDO extends BaseModel { private String code; private int partType; private double weight; @VciUseRefer("workcontext") private String ownProduct; private double thickNess; @Transient(referColumn = "ownProduct.name") private String productName; public String getCode() { return code; } public void setCode(String code) { this.code = code; } public int getPartType() { return partType; } public void setPartType(int partType) { this.partType = partType; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } public String getOwnProduct() { return ownProduct; } public void setOwnProduct(String ownProduct) { this.ownProduct = ownProduct; } public double getThickNess() { return thickNess; } public void setThickNess(double thickNess) { this.thickNess = thickNess; } public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } } Source/plt-web/plt-web-parent/plt-web/src/test/java/WebUtilTest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ import com.vci.corba.omd.data.BusinessObject; import com.vci.starter.web.util.VciBaseUtil; import com.vci.web.util.WebUtil; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Description * @Author dangsn * @Date 2024/12/4 10:00 */ public class WebUtilTest { public static void main(String[] args) { Map thisData = new HashMap(); thisData.put("btmname", "dangsn"); thisData.put("oid","XXXAAA"); thisData.put("createtime", "2024-12-09 10:10:10"); try { Object o = VciBaseUtil.mapToBean(thisData, PartDO.class); System.out.println(WebUtil.getJSONStringWithDateFormat(o)); } catch (Exception e) { throw new RuntimeException(e); } } }