From caaa37d3f59eeb33d97e0f3497bbf5885865f59d Mon Sep 17 00:00:00 2001
From: dangsn <dangsn@chicecm.com>
Date: 星期一, 09 十二月 2024 18:27:17 +0800
Subject: [PATCH] 调整WebBoService中的查询接口。主要是BusinessObject对象属性的赋值,以及BusinessObject和BaseModel之间的属性互相赋值

---
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java    |    4 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java       |  130 +++--
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java |    2 
 Source/plt-web/plt-web-parent/plt-web/pom.xml                                                                       |    7 
 Source/plt-web/plt-web-parent/plt-web/src/test/java/PartDO.java                                                     |   76 +++
 Source/plt-web/plt-web-parent/plt-web-permission/README.md                                                          |   25 +
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java                        |  495 +++++++++++++++-------
 Source/plt-web/plt-web-parent/plt-web-permission/src/test/java/StrTest.java                                         |   32 +
 /dev/null                                                                                                           |  230 ----------
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseModel.java                   |    3 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBoServiceI.java               |   44 +
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/BaseLinkModelDTO.java                           |    2 
 Source/plt-web/plt-web-parent/plt-web/src/test/java/BoServiceTest.java                                              |   43 ++
 Source/plt-web/plt-web-parent/plt-web/src/test/java/WebUtilTest.java                                                |   28 +
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ApplicationContextProvider.java   |   60 --
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseLinkModel.java               |   54 --
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/PlatformWebApplication.java                             |    1 
 17 files changed, 668 insertions(+), 568 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/BaseLinkModelDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/BaseLinkModelDTO.java
index 5b25d70..e5d1c98 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/BaseLinkModelDTO.java
+++ b/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;
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/BaseLinkModel.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/BaseLinkModel.java
deleted file mode 100644
index 44fe7f3..0000000
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/BaseLinkModel.java
+++ /dev/null
@@ -1,230 +0,0 @@
-package com.vci.model;
-
-
-import com.vci.starter.web.annotation.Column;
-import com.vci.starter.web.annotation.VciFieldType;
-import com.vci.starter.web.enumpck.VciFieldTypeEnum;
-
-import java.util.Date;
-
-/**
- * 榛樿鐨勯摼鎺ョ被鍨�---鍏煎鑰佺殑骞冲彴-璇峰嬁浣跨敤com.vci.starter.web.涓嬬殑BaseLinkModel
- * @author weidy
- */
-public class BaseLinkModel implements java.io.Serializable{
-    /**
-     * 涓婚敭
-     */
-    @Column(nullable = false)
-    private String oid;
-
-    /**
-     * 鍒涘缓浜�
-     */
-    @Column(length = 50)
-    private String creator;
-
-    /**
-     * 鍒涘缓鏃堕棿
-     */
-    @VciFieldType(VciFieldTypeEnum.VTDateTime)
-    private Date createTime;
-
-    /**
-     * 鏈�鍚庝慨鏀逛汉
-     */
-    @Column(length = 50)
-    private String lastModifier;
-
-    /**
-     * 鏈�鍚庝慨鏀规椂闂�
-     */
-    @VciFieldType(VciFieldTypeEnum.VTDateTime)
-    private Date lastModifyTime;
-
-    /**
-     * from绔富閿�
-     */
-    @Column(name="f_oid",length = 50)
-    private String foid;
-
-    /**
-     * from绔増鏈富閿�
-     */
-    @Column(name="f_revisionoid",length = 50)
-    private String frevisionoid;
-
-    /**
-     * from绔璞′富閿�
-     */
-    @Column(name="f_nameoid",length = 50)
-    private String fnameoid;
-
-    /**
-     * from绔笟鍔$被鍨�
-     */
-    @Column(name="f_btwname",length = 30)
-    private String fbtmname;
-
-    /**
-     * to绔富閿�
-     */
-    @Column(name="t_oid",length = 50)
-    private String toid;
-
-    /**
-     * to绔増鏈富閿�
-     */
-    @Column(name="t_revisionoid",length = 50)
-    private String trevisionoid;
-
-    /**
-     * to绔璞′富閿�
-     */
-    @Column(name="t_nameoid",length = 50)
-    private String tnameoid;
-
-    /**
-     * to绔笟鍔$被鍨�
-     */
-    @Column(name="t_btwname",length = 30)
-    private String tbtmname;
-
-    /**
-     * 鏃堕棿鎴�
-     */
-    private Date ts;
-
-    public String getOid() {
-        return oid;
-    }
-
-    public void setOid(String oid) {
-        this.oid = oid;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getLastModifier() {
-        return lastModifier;
-    }
-
-    public void setLastModifier(String lastModifier) {
-        this.lastModifier = lastModifier;
-    }
-
-    public Date getLastModifytime() {
-        return lastModifyTime;
-    }
-
-    public void setLastModifytime(Date lastModifytime) {
-        this.lastModifyTime = lastModifytime;
-    }
-
-    public String getFoid() {
-        return foid;
-    }
-
-    public void setFoid(String foid) {
-        this.foid = foid;
-    }
-
-    public String getFrevisionoid() {
-        return frevisionoid;
-    }
-
-    public void setFrevisionoid(String frevisionoid) {
-        this.frevisionoid = frevisionoid;
-    }
-
-    public String getFnameoid() {
-        return fnameoid;
-    }
-
-    public void setFnameoid(String fnameoid) {
-        this.fnameoid = fnameoid;
-    }
-
-
-    public String getToid() {
-        return toid;
-    }
-
-    public void setToid(String toid) {
-        this.toid = toid;
-    }
-
-    public String getTrevisionoid() {
-        return trevisionoid;
-    }
-
-    public void setTrevisionoid(String trevisionoid) {
-        this.trevisionoid = trevisionoid;
-    }
-
-    public String getTnameoid() {
-        return tnameoid;
-    }
-
-    public void setTnameoid(String tnameoid) {
-        this.tnameoid = tnameoid;
-    }
-
-    public String getFbtmname() {
-        return fbtmname;
-    }
-
-    public void setFbtmname(String fbtmname) {
-        this.fbtmname = fbtmname;
-    }
-
-    public String getTbtmname() {
-        return tbtmname;
-    }
-
-    public void setTbtmname(String tbtmname) {
-        this.tbtmname = tbtmname;
-    }
-
-    public Date getTs() {
-        return ts;
-    }
-
-    public void setTs(Date ts) {
-        this.ts = ts;
-    }
-
-    @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 +
-                '}';
-    }
-}
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java
index 9859eb5..438ef78 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java
+++ b/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);
     }
 
     /**
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseLinkModel.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseLinkModel.java
index cc08bbd..11b6e91 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseLinkModel.java
+++ b/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 +
-                '}';
     }
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseModel.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseModel.java
index 2571ef3..b68afbd 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseModel.java
+++ b/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 @@
 	 * 鏃堕棿鎴筹紝鏍煎紡鏄痽yyy-MM-dd HH:mm:ss.SSS
 	 */
 	@JsonFormat(pattern = VciDateUtil.DateTimeMillFormat)
+	@VciFieldType(VciFieldTypeEnum.VTDateTime)
 	private Date ts;
 
 	/**
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ApplicationContextProvider.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ApplicationContextProvider.java
index 800ff1d..51d8004 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ApplicationContextProvider.java
+++ b/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涓嶅簲璇ュ湪杩欓噷鑾峰彇锛屽洜涓簊pringmvc鍙簲璇ヨ鍓嶇璋冪敤
- * 娌℃湁浣跨敤springboot鐨刴ain鍑芥暟閲岃缃苟鑾峰彇鏄洜涓哄彲鑳戒細璁╁涓湇鍔″悎骞跺埌涓�璧峰惎鍔�
- * @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("鍚姩瀹屾垚");
-    }
-
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/README.md b/Source/plt-web/plt-web-parent/plt-web-permission/README.md
new file mode 100644
index 0000000..395cd44
--- /dev/null
+++ b/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;
+```
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBoServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBoServiceI.java
index a1f9f49..af2b509 100644
--- a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBoServiceI.java
+++ b/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 鏌ヨ瀛楁锛屽弬鐓у瓧娈典娇鐢▁xxx.yy;鏋氫妇瀛楁浣跨敤xxx_enumCode;鐢熷懡鍛ㄦ湡浼氳嚜鍔ㄥ鐞嗕负lcStatus_text
+	 * @param clauseList 鏌ヨ瀛楁锛屽弬鐓у瓧娈典娇鐢╢ield.yy;鏋氫妇瀛楁浣跨敤enumCode_field;鐢熷懡鍛ㄦ湡浼氳嚜鍔ㄥ鐞嗕负lcStatus_text銆傛牴鎹瓧娈垫槧灏凪ap鐨刱ey鑰屾潵銆�
 	 * @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鍖哄埆鏄紝鐗规畩鐨剆ql(濡傚寘鍚湁鍑芥暟鐨�)鍙互鐢ㄨ繖涓柟娉曪紝浣嗘槸鏈塻ql娉ㄥ叆椋庨櫓
 	 * @param sql sql璇彞锛屾煡璇㈡潯浠跺繀椤昏嚜琛屽湪鍏朵腑澶勭悊瀹屾垚
-	 * @return 鏁版嵁鏄犲皠
+	 * @return 鏁版嵁鏄犲皠銆侻ap涓紝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銆俿ql涓嶈兘鏄痵elect * 鎴栬�� select t.*
      * @param sql 涓轰簡闃叉SQL娉ㄥ叆锛屽�煎繀椤诲湪sql璇彞閲屼互:xxx鏍煎紡锛屽 id =:idvalue锛岀劧鍚庡湪conditionMap涓坊鍔犲缓涓篿dvalue鐨勬牸寮�
      * @param conditionMap  鏌ヨ鏉′欢锛屽繀椤讳笌sql閲屽搴�
      * @return map鏁版嵁
@@ -220,7 +221,7 @@
      */
      List<Map> queryBySqlForMap(String sql, Map<String, String> conditionMap) throws VciBaseException;
 	/**
-	 * 鏍规嵁sql璇彞鏉ユ煡璇㈠唴瀹癸紝杩斿洖Map
+	 * 鏍规嵁sql璇彞鏉ユ煡璇㈠唴瀹癸紝杩斿洖Map銆俿ql涓嶈兘鏄痵elect * 鎴栬�� select t.*
 	 * @param sql 涓轰簡闃叉SQL娉ㄥ叆锛屽�煎繀椤诲湪sql璇彞閲屼互:xxx鏍煎紡锛屽 id =:idvalue锛岀劧鍚庡湪conditionMap涓坊鍔犲缓涓篿dvalue鐨勬牸寮�
 	 * @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 鏌ヨ瀵硅薄鎵�灞炵被
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
index ea8b652..a39479e 100644
--- a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
+++ b/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);
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
index ad5ea40..614884d 100644
--- a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
+++ b/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鏄灇涓剧殑缂栫爜锛宖ield鏄綋鍓嶄笟鍔$被鍨嬪瓨鍌ㄦ灇涓惧�肩殑瀛楁
+			for(String enumAttr : enumAttrName){//鏍煎紡涓�   code_field  code鏄灇涓剧殑缂栫爜锛宖ield鏄綋鍓嶄笟鍔$被鍨嬪瓨鍌ㄦ灇涓惧�肩殑瀛楁
 				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鍖哄埆鏄紝鐗规畩鐨剆ql(濡傚寘鍚湁鍑芥暟鐨�)鍙互鐢ㄨ繖涓柟娉曪紝浣嗘槸鏈塻ql娉ㄥ叆椋庨櫓
 	 * @param sql sql璇彞锛屾煡璇㈡潯浠跺繀椤昏嚜琛屽湪鍏朵腑澶勭悊瀹屾垚
-	 * @return 鏁版嵁鏄犲皠
+	 * @return 鏁版嵁鏄犲皠銆侻ap涓紝key鍊间负澶у啓銆�
 	 * @throws VciBaseException 鏌ヨ鍑洪敊娲绘姏鍑哄紓甯�
 	 */
 	@Override
@@ -1198,13 +1199,32 @@
 		List<Map> allData = queryByOnlySqlForMap(sql);
 		//闇�瑕佽浆鎹竴涓媍bo鐨勯偅涓睘鎬�
 		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涓嶈兘鏄痵elect * 鎴栬�� select t.* 
      * @param sql 涓轰簡闃叉SQL娉ㄥ叆锛屽�煎繀椤诲湪sql璇彞閲屼互:xxx鏍煎紡锛屽 id =:idvalue锛岀劧鍚庡湪conditionMap涓坊鍔犲缓涓篿dvalue鐨勬牸寮�
      * @param conditionMap  鏌ヨ鏉′欢锛屽繀椤讳笌sql閲屽搴�
-     * @return 涓氬姟鏁版嵁鐨勬槧灏�
+     * @return 涓氬姟鏁版嵁鐨勬槧灏勩��
      * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
      */
 	@Override
@@ -1234,7 +1254,7 @@
 	}
 
 	/**
-	 * 鍜屼笂涓柟娉曚竴鏍凤紝澶氫紶浜嗘煡璇㈠瓧娈� selectKeys
+	 * 鍜屼笂涓柟娉曚竴鏍凤紝澶氫紶浜嗘煡璇㈠瓧娈� selectKeys銆俿ql涓嶈兘鏄痵elect * 鎴栬�� 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鍜孫ID涓嶈兘璁剧疆.鍥犱负骞冲彴閭f帴鍙h缃簡灏变細鎶ラ敊
 				}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));
 	}
 
-	  
 	 /**
      * 鏍规嵁涓氬姟绫诲瀷鏉ユ煡璇㈠垪琛ㄦ暟鎹紱鍙互鍦╬ageHelper涓缃槸鍚︽煡璇㈡�绘暟
      * @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);
 			//鑲畾鏄綋鍓嶅垎椤垫湁鍊硷紝鎵嶄細鏈夋�绘暟
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java
index 0659902..c0f557d 100644
--- a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java
+++ b/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)锛欴O瀵硅薄涓婄殑灞炴��(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)){
-			//鐪嬬湅鏈夋病鏈塶ull
+			//鐪嬬湅鏈夋病鏈塶ull锛岃繃婊ゆ帀value涓簄ull鐨�
 			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){
 			//鎵句竴涓婫et鏂规硶涓�..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)){
-	                    //骞冲彴瀹為檯瀛樺偍鐨勯兘鏄疶imestamp,涓嶈鏄棩鏈燂紝鏃ユ湡鏃堕棿锛岄兘鏄�傚鏋滀粎鏄椂闂达紝闇�瑕佺敤瀛楃涓叉潵瀛樺偍銆�
-	                    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)){
+					//骞冲彴瀹為檯瀛樺偍鐨勯兘鏄疶imestamp,涓嶈鏄棩鏈燂紝鏃ユ湡鏃堕棿锛岄兘鏄�傚鏋滀粎鏄椂闂达紝闇�瑕佺敤瀛楃涓叉潵瀛樺偍銆�
+					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锛屾瘮濡侭O鍜孡O瀵硅薄杩欑
 					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;
 			//瑕佸厛鎶夿O瀵硅薄涓婄殑鍊兼嫹璐濊繃鍘�
 			List<Field> boFields = getAllFieldForObj(bo.getClass());
-	
-			if(boFields!=null){
-				for(Field field :boFields){
-					if(fieldAttrMap.containsKey(field.getName().toLowerCase())){
-						//璇存槑杩欎釜灏辨槸鍦˙O瀵硅薄涓婄殑
-						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){
+					//璇存槑杩欎釜灏辨槸鍦˙O瀵硅薄涓婄殑
+					Object value = getValueFromField(field.getName(), bo);
+					if(value != null){
+						//BusinessObject鍜孊aseModel涓紝浠ヤ笅鐨勫睘鎬э紝涓嶇浉鍚岋紝闇�瑕佸崟鐙鐞�
+						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())){
+					//閲嶆柊鍗曠嫭澶勭悊銆傚洜涓築aseModel鐨勫熀纭�灞炴�у拰BusinessObject涓殑鏈夋墍宸紓
+					setValueToCboField(key.toLowerCase(), cbo, value);
 				}
 				ObjectTool.setBOAttributeValue(cbo,key.toLowerCase(), value);
 			}
     	}
     }
+
+	/**
+	 * 缁橞usinessObject瀵硅薄涓殑灞炴�ц缃��
+	 * @param fieldName 琛ㄤ腑瀛楁鎴朌O瀵硅薄涓殑灞炴��
+	 * @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 灞炴�ч泦鍚圡ap銆俴ey锛氬睘鎬у悕绉帮紝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;
+	}
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/test/java/StrTest.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/test/java/StrTest.java
new file mode 100644
index 0000000..4beb2c2
--- /dev/null
+++ b/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);
+            }
+        }
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/pom.xml b/Source/plt-web/plt-web-parent/plt-web/pom.xml
index 12d5e13..58a217f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/pom.xml
+++ b/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>
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/PlatformWebApplication.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/PlatformWebApplication.java
index 612dd98..331d2b0 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/PlatformWebApplication.java
+++ b/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;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/test/java/BoServiceTest.java b/Source/plt-web/plt-web-parent/plt-web/src/test/java/BoServiceTest.java
new file mode 100644
index 0000000..e251203
--- /dev/null
+++ b/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));
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/test/java/PartDO.java b/Source/plt-web/plt-web-parent/plt-web/src/test/java/PartDO.java
new file mode 100644
index 0000000..3dc8087
--- /dev/null
+++ b/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;
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/test/java/WebUtilTest.java b/Source/plt-web/plt-web-parent/plt-web/src/test/java/WebUtilTest.java
new file mode 100644
index 0000000..a1b648b
--- /dev/null
+++ b/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);
+        }
+    }
+}

--
Gitblit v1.9.3