From 7b678f88a7f8e223af1d0b803efa38f11ca36144 Mon Sep 17 00:00:00 2001
From: liaoxuwei <5789413@qq.com>
Date: Tue, 17 Oct 2023 14:50:25 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=B1=87=E8=81=9A=E5=BA=94?=
 =?UTF-8?q?=E7=94=A8=E4=BF=A1=E6=81=AF=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 sst-manager/db/add_db.sql                     |  17 +-
 .../converge/dao/ConvergeAppsInfoDao.java     |  17 +
 .../dao/ibatis/ConvergeAppsInfoDaoImpl.java   |  21 +
 .../model/ConvergeAppsInfoEntity.java         |  50 ++
 .../converge/model/ConvergeAppsInfoQuery.java | 692 ++++++++++++++++++
 .../converge/model/vo/ConvergeAppsInfoVo.java |  23 +
 .../service/ConvergeAppsInfoService.java      |  16 +
 .../impl/ConvergeAppsInfoServiceImpl.java     |  21 +
 .../service/impl/ConvergeSiteServiceImpl.java |  21 +-
 .../web/ConvergeAppsInfoController.java       |  49 ++
 .../converge/ConvergeAppsInfoMapper.xml       | 531 ++++++++++++++
 11 files changed, 1451 insertions(+), 7 deletions(-)
 create mode 100644 sst-manager/src/main/java/com/mortals/xhx/module/converge/dao/ConvergeAppsInfoDao.java
 create mode 100644 sst-manager/src/main/java/com/mortals/xhx/module/converge/dao/ibatis/ConvergeAppsInfoDaoImpl.java
 create mode 100644 sst-manager/src/main/java/com/mortals/xhx/module/converge/model/ConvergeAppsInfoEntity.java
 create mode 100644 sst-manager/src/main/java/com/mortals/xhx/module/converge/model/ConvergeAppsInfoQuery.java
 create mode 100644 sst-manager/src/main/java/com/mortals/xhx/module/converge/model/vo/ConvergeAppsInfoVo.java
 create mode 100644 sst-manager/src/main/java/com/mortals/xhx/module/converge/service/ConvergeAppsInfoService.java
 create mode 100644 sst-manager/src/main/java/com/mortals/xhx/module/converge/service/impl/ConvergeAppsInfoServiceImpl.java
 create mode 100644 sst-manager/src/main/java/com/mortals/xhx/module/converge/web/ConvergeAppsInfoController.java
 create mode 100644 sst-manager/src/main/resources/sqlmap/module/converge/ConvergeAppsInfoMapper.xml

diff --git a/sst-manager/db/add_db.sql b/sst-manager/db/add_db.sql
index ecdc8f8..aa93ba5 100644
--- a/sst-manager/db/add_db.sql
+++ b/sst-manager/db/add_db.sql
@@ -292,4 +292,19 @@ CREATE TABLE `mortals_xhx_converge_apps_interface` (
   `totalInvokeSum` int(8) DEFAULT NULL COMMENT '鎺ュ彛璋冪敤娆℃暟',
   `createTime` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='搴旂敤鎺ュ彛';
\ No newline at end of file
+) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='搴旂敤鎺ュ彛';
+
+---------------
+--2023-10-17
+---------------
+DROP TABLE IF EXISTS `mortals_xhx_converge_apps_info`;
+CREATE TABLE mortals_xhx_converge_apps_info(
+    `id` bigint(20)   AUTO_INCREMENT   COMMENT '搴忓彿锛屼富閿紝鑷闀�',
+    `appEname` varchar(128)      COMMENT '搴旂敤ID',
+    `appName` varchar(128)      COMMENT '搴旂敤鍚嶇О',
+    `createUserId` bigint(20)      COMMENT '鍒涘缓鐢ㄦ埛',
+    `createTime` datetime      COMMENT '鍒涘缓鏃堕棿',
+    `updateUserId` bigint(20)      COMMENT '鏇存柊鐢ㄦ埛',
+    `updateTime` datetime      COMMENT '鏇存柊鏃堕棿',
+PRIMARY KEY  (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='搴旂敤淇℃伅';
\ No newline at end of file
diff --git a/sst-manager/src/main/java/com/mortals/xhx/module/converge/dao/ConvergeAppsInfoDao.java b/sst-manager/src/main/java/com/mortals/xhx/module/converge/dao/ConvergeAppsInfoDao.java
new file mode 100644
index 0000000..82fcdf4
--- /dev/null
+++ b/sst-manager/src/main/java/com/mortals/xhx/module/converge/dao/ConvergeAppsInfoDao.java
@@ -0,0 +1,17 @@
+package com.mortals.xhx.module.converge.dao;
+
+import com.mortals.framework.dao.ICRUDDao;
+import com.mortals.xhx.module.converge.model.ConvergeAppsInfoEntity;
+import java.util.List;
+/**
+* 搴旂敤淇℃伅Dao
+* 搴旂敤淇℃伅 DAO鎺ュ彛
+*
+* @author zxfei
+* @date 2023-10-17
+*/
+
+public interface  ConvergeAppsInfoDao extends ICRUDDao<ConvergeAppsInfoEntity,Long>{
+
+
+}
diff --git a/sst-manager/src/main/java/com/mortals/xhx/module/converge/dao/ibatis/ConvergeAppsInfoDaoImpl.java b/sst-manager/src/main/java/com/mortals/xhx/module/converge/dao/ibatis/ConvergeAppsInfoDaoImpl.java
new file mode 100644
index 0000000..a549340
--- /dev/null
+++ b/sst-manager/src/main/java/com/mortals/xhx/module/converge/dao/ibatis/ConvergeAppsInfoDaoImpl.java
@@ -0,0 +1,21 @@
+package com.mortals.xhx.module.converge.dao.ibatis;
+
+
+import org.springframework.stereotype.Repository;
+import com.mortals.xhx.module.converge.dao.ConvergeAppsInfoDao;
+import com.mortals.xhx.module.converge.model.ConvergeAppsInfoEntity;
+import java.util.Date;
+import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
+import java.util.List;
+/**
+* 搴旂敤淇℃伅DaoImpl DAO鎺ュ彛
+*
+* @author zxfei
+* @date 2023-10-17
+*/
+@Repository("convergeAppsInfoDao")
+public class ConvergeAppsInfoDaoImpl extends BaseCRUDDaoMybatis<ConvergeAppsInfoEntity,Long> implements ConvergeAppsInfoDao {
+
+
+
+}
diff --git a/sst-manager/src/main/java/com/mortals/xhx/module/converge/model/ConvergeAppsInfoEntity.java b/sst-manager/src/main/java/com/mortals/xhx/module/converge/model/ConvergeAppsInfoEntity.java
new file mode 100644
index 0000000..ed434dd
--- /dev/null
+++ b/sst-manager/src/main/java/com/mortals/xhx/module/converge/model/ConvergeAppsInfoEntity.java
@@ -0,0 +1,50 @@
+package com.mortals.xhx.module.converge.model;
+import java.util.List;
+import java.util.ArrayList;
+import java.math.BigDecimal;
+import cn.hutool.core.date.DateUtil;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mortals.framework.annotation.Excel;
+import com.mortals.framework.model.BaseEntityLong;
+import com.mortals.xhx.module.converge.model.vo.ConvergeAppsInfoVo;
+import lombok.Data;
+/**
+* 搴旂敤淇℃伅瀹炰綋瀵硅薄
+*
+* @author zxfei
+* @date 2023-10-17
+*/
+@Data
+public class ConvergeAppsInfoEntity extends ConvergeAppsInfoVo {
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 搴旂敤ID
+    */
+    private String appEname;
+    /**
+    * 搴旂敤鍚嶇О
+    */
+    private String appName;
+    @Override
+    public int hashCode() {
+         return this.getId().hashCode();
+    }
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (obj instanceof ConvergeAppsInfoEntity) {
+            ConvergeAppsInfoEntity tmp = (ConvergeAppsInfoEntity) obj;
+            if (this.getId() == tmp.getId()) {
+                 return true;
+            }
+        }
+        return false;
+    }
+
+    public void initAttrValue(){
+            this.appEname = "";
+            this.appName = "";
+    }
+}
\ No newline at end of file
diff --git a/sst-manager/src/main/java/com/mortals/xhx/module/converge/model/ConvergeAppsInfoQuery.java b/sst-manager/src/main/java/com/mortals/xhx/module/converge/model/ConvergeAppsInfoQuery.java
new file mode 100644
index 0000000..ae97eac
--- /dev/null
+++ b/sst-manager/src/main/java/com/mortals/xhx/module/converge/model/ConvergeAppsInfoQuery.java
@@ -0,0 +1,692 @@
+package com.mortals.xhx.module.converge.model;
+
+import java.util.List;
+import com.mortals.xhx.module.converge.model.ConvergeAppsInfoEntity;
+/**
+* 搴旂敤淇℃伅鏌ヨ瀵硅薄
+*
+* @author zxfei
+* @date 2023-10-17
+*/
+public class ConvergeAppsInfoQuery extends ConvergeAppsInfoEntity {
+    /** 寮€濮� 搴忓彿锛屼富閿紝鑷闀� */
+    private Long idStart;
+
+    /** 缁撴潫 搴忓彿锛屼富閿紝鑷闀� */
+    private Long idEnd;
+
+    /** 澧炲姞 搴忓彿锛屼富閿紝鑷闀� */
+    private Long idIncrement;
+
+    /** 搴忓彿锛屼富閿紝鑷闀垮垪琛� */
+    private List <Long> idList;
+
+    /** 搴忓彿锛屼富閿紝鑷闀挎帓闄ゅ垪琛� */
+    private List <Long> idNotList;
+
+    /** 搴旂敤ID */
+    private List<String> appEnameList;
+
+    /** 搴旂敤ID鎺掗櫎鍒楄〃 */
+    private List <String> appEnameNotList;
+    /** 搴旂敤鍚嶇О */
+    private List<String> appNameList;
+
+    /** 搴旂敤鍚嶇О鎺掗櫎鍒楄〃 */
+    private List <String> appNameNotList;
+    /** 寮€濮� 鍒涘缓鐢ㄦ埛 */
+    private Long createUserIdStart;
+
+    /** 缁撴潫 鍒涘缓鐢ㄦ埛 */
+    private Long createUserIdEnd;
+
+    /** 澧炲姞 鍒涘缓鐢ㄦ埛 */
+    private Long createUserIdIncrement;
+
+    /** 鍒涘缓鐢ㄦ埛鍒楄〃 */
+    private List <Long> createUserIdList;
+
+    /** 鍒涘缓鐢ㄦ埛鎺掗櫎鍒楄〃 */
+    private List <Long> createUserIdNotList;
+
+    /** 寮€濮� 鍒涘缓鏃堕棿 */
+    private String createTimeStart;
+
+    /** 缁撴潫 鍒涘缓鏃堕棿 */
+    private String createTimeEnd;
+
+    /** 寮€濮� 鏇存柊鐢ㄦ埛 */
+    private Long updateUserIdStart;
+
+    /** 缁撴潫 鏇存柊鐢ㄦ埛 */
+    private Long updateUserIdEnd;
+
+    /** 澧炲姞 鏇存柊鐢ㄦ埛 */
+    private Long updateUserIdIncrement;
+
+    /** 鏇存柊鐢ㄦ埛鍒楄〃 */
+    private List <Long> updateUserIdList;
+
+    /** 鏇存柊鐢ㄦ埛鎺掗櫎鍒楄〃 */
+    private List <Long> updateUserIdNotList;
+
+    /** 寮€濮� 鏇存柊鏃堕棿 */
+    private String updateTimeStart;
+
+    /** 缁撴潫 鏇存柊鏃堕棿 */
+    private String updateTimeEnd;
+
+    /** OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
+    private List<ConvergeAppsInfoQuery> orConditionList;
+
+    /** AND鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疉ND锛岄」鍐呭涔嬮棿鏄疧R锛屽锛�(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
+    private List<ConvergeAppsInfoQuery> andConditionList;
+
+    public ConvergeAppsInfoQuery(){}
+
+    /**
+    * 鑾峰彇 寮€濮� 搴忓彿锛屼富閿紝鑷闀�
+    * @return idStart
+    */
+    public Long getIdStart(){
+        return this.idStart;
+    }
+
+    /**
+    * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀�
+    * @param idStart
+    */
+    public void setIdStart(Long idStart){
+        this.idStart = idStart;
+    }
+
+    /**
+    * 鑾峰彇 缁撴潫 搴忓彿锛屼富閿紝鑷闀�
+    * @return $idEnd
+    */
+    public Long getIdEnd(){
+        return this.idEnd;
+    }
+
+    /**
+    * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀�
+    * @param idEnd
+    */
+    public void setIdEnd(Long idEnd){
+        this.idEnd = idEnd;
+    }
+
+    /**
+    * 鑾峰彇 澧炲姞 搴忓彿锛屼富閿紝鑷闀�
+    * @return idIncrement
+    */
+    public Long getIdIncrement(){
+        return this.idIncrement;
+    }
+
+    /**
+    * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀�
+    * @param idIncrement
+    */
+    public void setIdIncrement(Long idIncrement){
+        this.idIncrement = idIncrement;
+    }
+
+    /**
+    * 鑾峰彇 搴忓彿锛屼富閿紝鑷闀�
+    * @return idList
+    */
+    public List<Long> getIdList(){
+        return this.idList;
+    }
+
+    /**
+    * 璁剧疆 搴忓彿锛屼富閿紝鑷闀�
+    * @param idList
+    */
+    public void setIdList(List<Long> idList){
+        this.idList = idList;
+    }
+
+    /**
+    * 鑾峰彇 搴忓彿锛屼富閿紝鑷闀�
+    * @return idNotList
+    */
+    public List<Long> getIdNotList(){
+        return this.idNotList;
+    }
+
+    /**
+    * 璁剧疆 搴忓彿锛屼富閿紝鑷闀�
+    * @param idNotList
+    */
+    public void setIdNotList(List<Long> idNotList){
+        this.idNotList = idNotList;
+    }
+
+
+    /**
+    * 鑾峰彇 搴旂敤ID
+    * @return appEnameList
+    */
+    public List<String> getAppEnameList(){
+        return this.appEnameList;
+    }
+
+    /**
+    * 璁剧疆 搴旂敤ID
+    * @param appEnameList
+    */
+    public void setAppEnameList(List<String> appEnameList){
+        this.appEnameList = appEnameList;
+    }
+
+    /**
+    * 鑾峰彇 搴旂敤ID
+    * @return appEnameNotList
+    */
+    public List<String> getAppEnameNotList(){
+        return this.appEnameNotList;
+    }
+
+    /**
+    * 璁剧疆 搴旂敤ID
+    * @param appEnameNotList
+    */
+    public void setAppEnameNotList(List<String> appEnameNotList){
+        this.appEnameNotList = appEnameNotList;
+    }
+
+    /**
+    * 鑾峰彇 搴旂敤鍚嶇О
+    * @return appNameList
+    */
+    public List<String> getAppNameList(){
+        return this.appNameList;
+    }
+
+    /**
+    * 璁剧疆 搴旂敤鍚嶇О
+    * @param appNameList
+    */
+    public void setAppNameList(List<String> appNameList){
+        this.appNameList = appNameList;
+    }
+
+    /**
+    * 鑾峰彇 搴旂敤鍚嶇О
+    * @return appNameNotList
+    */
+    public List<String> getAppNameNotList(){
+        return this.appNameNotList;
+    }
+
+    /**
+    * 璁剧疆 搴旂敤鍚嶇О
+    * @param appNameNotList
+    */
+    public void setAppNameNotList(List<String> appNameNotList){
+        this.appNameNotList = appNameNotList;
+    }
+
+    /**
+    * 鑾峰彇 寮€濮� 鍒涘缓鐢ㄦ埛
+    * @return createUserIdStart
+    */
+    public Long getCreateUserIdStart(){
+        return this.createUserIdStart;
+    }
+
+    /**
+    * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛
+    * @param createUserIdStart
+    */
+    public void setCreateUserIdStart(Long createUserIdStart){
+        this.createUserIdStart = createUserIdStart;
+    }
+
+    /**
+    * 鑾峰彇 缁撴潫 鍒涘缓鐢ㄦ埛
+    * @return $createUserIdEnd
+    */
+    public Long getCreateUserIdEnd(){
+        return this.createUserIdEnd;
+    }
+
+    /**
+    * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛
+    * @param createUserIdEnd
+    */
+    public void setCreateUserIdEnd(Long createUserIdEnd){
+        this.createUserIdEnd = createUserIdEnd;
+    }
+
+    /**
+    * 鑾峰彇 澧炲姞 鍒涘缓鐢ㄦ埛
+    * @return createUserIdIncrement
+    */
+    public Long getCreateUserIdIncrement(){
+        return this.createUserIdIncrement;
+    }
+
+    /**
+    * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛
+    * @param createUserIdIncrement
+    */
+    public void setCreateUserIdIncrement(Long createUserIdIncrement){
+        this.createUserIdIncrement = createUserIdIncrement;
+    }
+
+    /**
+    * 鑾峰彇 鍒涘缓鐢ㄦ埛
+    * @return createUserIdList
+    */
+    public List<Long> getCreateUserIdList(){
+        return this.createUserIdList;
+    }
+
+    /**
+    * 璁剧疆 鍒涘缓鐢ㄦ埛
+    * @param createUserIdList
+    */
+    public void setCreateUserIdList(List<Long> createUserIdList){
+        this.createUserIdList = createUserIdList;
+    }
+
+    /**
+    * 鑾峰彇 鍒涘缓鐢ㄦ埛
+    * @return createUserIdNotList
+    */
+    public List<Long> getCreateUserIdNotList(){
+        return this.createUserIdNotList;
+    }
+
+    /**
+    * 璁剧疆 鍒涘缓鐢ㄦ埛
+    * @param createUserIdNotList
+    */
+    public void setCreateUserIdNotList(List<Long> createUserIdNotList){
+        this.createUserIdNotList = createUserIdNotList;
+    }
+
+
+    /**
+    * 鑾峰彇 寮€濮� 鍒涘缓鏃堕棿
+    * @return createTimeStart
+    */
+    public String getCreateTimeStart(){
+        return this.createTimeStart;
+    }
+
+    /**
+    * 璁剧疆 寮€濮� 鍒涘缓鏃堕棿
+    * @param createTimeStart
+    */
+    public void setCreateTimeStart(String createTimeStart){
+        this.createTimeStart = createTimeStart;
+    }
+
+    /**
+    * 鑾峰彇 缁撴潫 鍒涘缓鏃堕棿
+    * @return createTimeEnd
+    */
+    public String getCreateTimeEnd(){
+        return this.createTimeEnd;
+    }
+
+    /**
+    * 璁剧疆 缁撴潫 鍒涘缓鏃堕棿
+    * @param createTimeEnd
+    */
+    public void setCreateTimeEnd(String createTimeEnd){
+        this.createTimeEnd = createTimeEnd;
+    }
+
+    /**
+    * 鑾峰彇 寮€濮� 鏇存柊鐢ㄦ埛
+    * @return updateUserIdStart
+    */
+    public Long getUpdateUserIdStart(){
+        return this.updateUserIdStart;
+    }
+
+    /**
+    * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛
+    * @param updateUserIdStart
+    */
+    public void setUpdateUserIdStart(Long updateUserIdStart){
+        this.updateUserIdStart = updateUserIdStart;
+    }
+
+    /**
+    * 鑾峰彇 缁撴潫 鏇存柊鐢ㄦ埛
+    * @return $updateUserIdEnd
+    */
+    public Long getUpdateUserIdEnd(){
+        return this.updateUserIdEnd;
+    }
+
+    /**
+    * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛
+    * @param updateUserIdEnd
+    */
+    public void setUpdateUserIdEnd(Long updateUserIdEnd){
+        this.updateUserIdEnd = updateUserIdEnd;
+    }
+
+    /**
+    * 鑾峰彇 澧炲姞 鏇存柊鐢ㄦ埛
+    * @return updateUserIdIncrement
+    */
+    public Long getUpdateUserIdIncrement(){
+        return this.updateUserIdIncrement;
+    }
+
+    /**
+    * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛
+    * @param updateUserIdIncrement
+    */
+    public void setUpdateUserIdIncrement(Long updateUserIdIncrement){
+        this.updateUserIdIncrement = updateUserIdIncrement;
+    }
+
+    /**
+    * 鑾峰彇 鏇存柊鐢ㄦ埛
+    * @return updateUserIdList
+    */
+    public List<Long> getUpdateUserIdList(){
+        return this.updateUserIdList;
+    }
+
+    /**
+    * 璁剧疆 鏇存柊鐢ㄦ埛
+    * @param updateUserIdList
+    */
+    public void setUpdateUserIdList(List<Long> updateUserIdList){
+        this.updateUserIdList = updateUserIdList;
+    }
+
+    /**
+    * 鑾峰彇 鏇存柊鐢ㄦ埛
+    * @return updateUserIdNotList
+    */
+    public List<Long> getUpdateUserIdNotList(){
+        return this.updateUserIdNotList;
+    }
+
+    /**
+    * 璁剧疆 鏇存柊鐢ㄦ埛
+    * @param updateUserIdNotList
+    */
+    public void setUpdateUserIdNotList(List<Long> updateUserIdNotList){
+        this.updateUserIdNotList = updateUserIdNotList;
+    }
+
+
+    /**
+    * 鑾峰彇 寮€濮� 鏇存柊鏃堕棿
+    * @return updateTimeStart
+    */
+    public String getUpdateTimeStart(){
+        return this.updateTimeStart;
+    }
+
+    /**
+    * 璁剧疆 寮€濮� 鏇存柊鏃堕棿
+    * @param updateTimeStart
+    */
+    public void setUpdateTimeStart(String updateTimeStart){
+        this.updateTimeStart = updateTimeStart;
+    }
+
+    /**
+    * 鑾峰彇 缁撴潫 鏇存柊鏃堕棿
+    * @return updateTimeEnd
+    */
+    public String getUpdateTimeEnd(){
+        return this.updateTimeEnd;
+    }
+
+    /**
+    * 璁剧疆 缁撴潫 鏇存柊鏃堕棿
+    * @param updateTimeEnd
+    */
+    public void setUpdateTimeEnd(String updateTimeEnd){
+        this.updateTimeEnd = updateTimeEnd;
+    }
+
+    /**
+    * 璁剧疆  搴忓彿锛屼富閿紝鑷闀�
+    * @param id
+    */
+    public ConvergeAppsInfoQuery id(Long id){
+	    setId(id);
+		return this;
+    }
+	
+	 /**
+    * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀�
+    * @param idStart
+    */
+    public ConvergeAppsInfoQuery idStart(Long idStart){
+		this.idStart = idStart;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀�
+    * @param idEnd
+    */
+    public ConvergeAppsInfoQuery idEnd(Long idEnd){
+		this.idEnd = idEnd;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀�
+    * @param idIncrement
+    */
+    public ConvergeAppsInfoQuery idIncrement(Long idIncrement){
+		this.idIncrement = idIncrement;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 搴忓彿锛屼富閿紝鑷闀�
+    * @param idList
+    */
+    public ConvergeAppsInfoQuery idList(List<Long> idList){
+        this.idList = idList;
+		return this;
+        }
+
+        /**
+        * 璁剧疆 搴忓彿锛屼富閿紝鑷闀�
+        * @param idNotList
+        */
+        public ConvergeAppsInfoQuery idNotList(List<Long> idNotList){
+        this.idNotList = idNotList;
+        return this;
+        }
+
+
+	/**
+    * 璁剧疆 搴旂敤ID
+    * @param appEname
+    */
+    public ConvergeAppsInfoQuery appEname(String appEname){
+        setAppEname(appEname);
+		return this;
+    }
+
+    /**
+    * 璁剧疆 搴旂敤ID
+    * @param appEnameList
+    */
+    public ConvergeAppsInfoQuery appEnameList(List<String> appEnameList){
+        this.appEnameList = appEnameList;
+		return this;
+    }
+
+
+	/**
+    * 璁剧疆 搴旂敤鍚嶇О
+    * @param appName
+    */
+    public ConvergeAppsInfoQuery appName(String appName){
+        setAppName(appName);
+		return this;
+    }
+
+    /**
+    * 璁剧疆 搴旂敤鍚嶇О
+    * @param appNameList
+    */
+    public ConvergeAppsInfoQuery appNameList(List<String> appNameList){
+        this.appNameList = appNameList;
+		return this;
+    }
+
+    /**
+    * 璁剧疆  鍒涘缓鐢ㄦ埛
+    * @param createUserId
+    */
+    public ConvergeAppsInfoQuery createUserId(Long createUserId){
+	    setCreateUserId(createUserId);
+		return this;
+    }
+	
+	 /**
+    * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛
+    * @param createUserIdStart
+    */
+    public ConvergeAppsInfoQuery createUserIdStart(Long createUserIdStart){
+		this.createUserIdStart = createUserIdStart;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛
+    * @param createUserIdEnd
+    */
+    public ConvergeAppsInfoQuery createUserIdEnd(Long createUserIdEnd){
+		this.createUserIdEnd = createUserIdEnd;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛
+    * @param createUserIdIncrement
+    */
+    public ConvergeAppsInfoQuery createUserIdIncrement(Long createUserIdIncrement){
+		this.createUserIdIncrement = createUserIdIncrement;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 鍒涘缓鐢ㄦ埛
+    * @param createUserIdList
+    */
+    public ConvergeAppsInfoQuery createUserIdList(List<Long> createUserIdList){
+        this.createUserIdList = createUserIdList;
+		return this;
+        }
+
+        /**
+        * 璁剧疆 鍒涘缓鐢ㄦ埛
+        * @param createUserIdNotList
+        */
+        public ConvergeAppsInfoQuery createUserIdNotList(List<Long> createUserIdNotList){
+        this.createUserIdNotList = createUserIdNotList;
+        return this;
+        }
+
+
+    /**
+    * 璁剧疆  鏇存柊鐢ㄦ埛
+    * @param updateUserId
+    */
+    public ConvergeAppsInfoQuery updateUserId(Long updateUserId){
+	    setUpdateUserId(updateUserId);
+		return this;
+    }
+	
+	 /**
+    * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛
+    * @param updateUserIdStart
+    */
+    public ConvergeAppsInfoQuery updateUserIdStart(Long updateUserIdStart){
+		this.updateUserIdStart = updateUserIdStart;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛
+    * @param updateUserIdEnd
+    */
+    public ConvergeAppsInfoQuery updateUserIdEnd(Long updateUserIdEnd){
+		this.updateUserIdEnd = updateUserIdEnd;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛
+    * @param updateUserIdIncrement
+    */
+    public ConvergeAppsInfoQuery updateUserIdIncrement(Long updateUserIdIncrement){
+		this.updateUserIdIncrement = updateUserIdIncrement;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 鏇存柊鐢ㄦ埛
+    * @param updateUserIdList
+    */
+    public ConvergeAppsInfoQuery updateUserIdList(List<Long> updateUserIdList){
+        this.updateUserIdList = updateUserIdList;
+		return this;
+        }
+
+        /**
+        * 璁剧疆 鏇存柊鐢ㄦ埛
+        * @param updateUserIdNotList
+        */
+        public ConvergeAppsInfoQuery updateUserIdNotList(List<Long> updateUserIdNotList){
+        this.updateUserIdNotList = updateUserIdNotList;
+        return this;
+        }
+
+
+    /**
+    * 鑾峰彇 OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
+    * @return orConditionList
+    */
+    public List<ConvergeAppsInfoQuery> getOrConditionList(){
+    return this.orConditionList;
+    }
+
+    /**
+    * 璁剧疆 OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
+    * @param orConditionList
+    */
+    public void setOrConditionList(List<ConvergeAppsInfoQuery> orConditionList){
+        this.orConditionList = orConditionList;
+    }
+
+    /**
+    * 鑾峰彇 AND鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疉ND锛岄」鍐呭涔嬮棿鏄疧R锛屽锛�(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
+    * @return andConditionList
+    */
+    public List<ConvergeAppsInfoQuery> getAndConditionList(){
+        return this.andConditionList;
+    }
+
+    /**
+    * 璁剧疆 AND鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疉ND锛岄」鍐呭涔嬮棿鏄疧R锛屽锛�(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
+    * @param andConditionList
+    */
+    public void setAndConditionList(List<ConvergeAppsInfoQuery> andConditionList){
+        this.andConditionList = andConditionList;
+    }
+
+}
\ No newline at end of file
diff --git a/sst-manager/src/main/java/com/mortals/xhx/module/converge/model/vo/ConvergeAppsInfoVo.java b/sst-manager/src/main/java/com/mortals/xhx/module/converge/model/vo/ConvergeAppsInfoVo.java
new file mode 100644
index 0000000..86d4667
--- /dev/null
+++ b/sst-manager/src/main/java/com/mortals/xhx/module/converge/model/vo/ConvergeAppsInfoVo.java
@@ -0,0 +1,23 @@
+package com.mortals.xhx.module.converge.model.vo;
+import com.mortals.framework.model.BaseEntityLong;
+import com.mortals.xhx.module.converge.model.ConvergeAppsInfoEntity;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Data;
+import com.mortals.framework.annotation.Excel;
+import java.math.BigDecimal;
+import java.util.Date;
+/**
+* 搴旂敤淇℃伅瑙嗗浘瀵硅薄
+*
+* @author zxfei
+* @date 2023-10-17
+*/
+@Data
+public class ConvergeAppsInfoVo extends BaseEntityLong {
+
+    /** 搴忓彿锛屼富閿紝鑷闀垮垪琛� */
+    private List <Long> idList;
+
+
+}
\ No newline at end of file
diff --git a/sst-manager/src/main/java/com/mortals/xhx/module/converge/service/ConvergeAppsInfoService.java b/sst-manager/src/main/java/com/mortals/xhx/module/converge/service/ConvergeAppsInfoService.java
new file mode 100644
index 0000000..36684b3
--- /dev/null
+++ b/sst-manager/src/main/java/com/mortals/xhx/module/converge/service/ConvergeAppsInfoService.java
@@ -0,0 +1,16 @@
+package com.mortals.xhx.module.converge.service;
+import com.mortals.framework.service.ICRUDService;
+import com.mortals.xhx.module.converge.model.ConvergeAppsInfoEntity;
+import com.mortals.xhx.module.converge.dao.ConvergeAppsInfoDao;
+/**
+* ConvergeAppsInfoService
+*
+* 搴旂敤淇℃伅 service鎺ュ彛
+*
+* @author zxfei
+* @date 2023-10-17
+*/
+public interface ConvergeAppsInfoService extends ICRUDService<ConvergeAppsInfoEntity,Long>{
+
+    ConvergeAppsInfoDao getDao();
+}
\ No newline at end of file
diff --git a/sst-manager/src/main/java/com/mortals/xhx/module/converge/service/impl/ConvergeAppsInfoServiceImpl.java b/sst-manager/src/main/java/com/mortals/xhx/module/converge/service/impl/ConvergeAppsInfoServiceImpl.java
new file mode 100644
index 0000000..50fc371
--- /dev/null
+++ b/sst-manager/src/main/java/com/mortals/xhx/module/converge/service/impl/ConvergeAppsInfoServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mortals.xhx.module.converge.service.impl;
+import org.springframework.stereotype.Service;
+import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
+import com.mortals.framework.exception.AppException;
+import com.mortals.framework.model.Context;
+import com.mortals.xhx.module.converge.dao.ConvergeAppsInfoDao;
+import com.mortals.xhx.module.converge.model.ConvergeAppsInfoEntity;
+import com.mortals.xhx.module.converge.service.ConvergeAppsInfoService;
+import lombok.extern.slf4j.Slf4j;
+/**
+* ConvergeAppsInfoService
+* 搴旂敤淇℃伅 service瀹炵幇
+*
+* @author zxfei
+* @date 2023-10-17
+*/
+@Service("convergeAppsInfoService")
+@Slf4j
+public class ConvergeAppsInfoServiceImpl extends AbstractCRUDServiceImpl<ConvergeAppsInfoDao, ConvergeAppsInfoEntity, Long> implements ConvergeAppsInfoService {
+    
+}
\ No newline at end of file
diff --git a/sst-manager/src/main/java/com/mortals/xhx/module/converge/service/impl/ConvergeSiteServiceImpl.java b/sst-manager/src/main/java/com/mortals/xhx/module/converge/service/impl/ConvergeSiteServiceImpl.java
index 952ac3d..fc095ca 100644
--- a/sst-manager/src/main/java/com/mortals/xhx/module/converge/service/impl/ConvergeSiteServiceImpl.java
+++ b/sst-manager/src/main/java/com/mortals/xhx/module/converge/service/impl/ConvergeSiteServiceImpl.java
@@ -12,9 +12,7 @@ import com.mortals.xhx.module.converge.model.vo.AppVO;
 import com.mortals.xhx.module.converge.model.vo.BranchVO;
 import com.mortals.xhx.module.converge.model.vo.EquipmentVO;
 import com.mortals.xhx.module.converge.model.vo.InterfaceStatsVO;
-import com.mortals.xhx.module.converge.service.ConvergeAppsInterfaceService;
-import com.mortals.xhx.module.converge.service.ConvergeAppsService;
-import com.mortals.xhx.module.converge.service.ConvergeDeviceService;
+import com.mortals.xhx.module.converge.service.*;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,7 +21,6 @@ import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
 import com.mortals.xhx.module.converge.dao.ConvergeSiteDao;
-import com.mortals.xhx.module.converge.service.ConvergeSiteService;
 import lombok.extern.slf4j.Slf4j;
 
 import java.text.SimpleDateFormat;
@@ -49,6 +46,8 @@ public class ConvergeSiteServiceImpl extends AbstractCRUDServiceImpl<ConvergeSit
     private ConvergeAppsService convergeAppsService;
     @Autowired
     private ConvergeAppsInterfaceService convergeAppsInterfaceService;
+    @Autowired
+    private ConvergeAppsInfoService convergeAppsInfoService;
 
     @Override
     public List<BranchVO> getConvergeData() throws AppException {
@@ -62,6 +61,13 @@ public class ConvergeSiteServiceImpl extends AbstractCRUDServiceImpl<ConvergeSit
 //            calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
 //            String currMonthEnd = format.format(calendar.getTime());
 //            String currMonth = DateUtils.getCurrDateTime("yyyy-MM");
+            List<ConvergeAppsInfoEntity> appsInfoList = convergeAppsInfoService.getAllList();
+            Map<String,String> appsInfoMap = new HashMap<>();
+            if(CollectionUtils.isNotEmpty(appsInfoList)) {
+                appsInfoList.forEach(i -> {
+                    appsInfoMap.put(i.getAppEname(), i.getAppName());
+                });
+            }
             for(ConvergeSiteEntity siteEntity:siteList){
                 BranchVO branchVO = new BranchVO();
                 BeanUtils.copyProperties(siteEntity,branchVO,BeanUtil.getNullPropertyNames(siteEntity));
@@ -91,7 +97,7 @@ public class ConvergeSiteServiceImpl extends AbstractCRUDServiceImpl<ConvergeSit
                             }
                             item.setInterfaceEntityList(interfaceEntityList);
                         }
-                        equipmentVO.setAppStats(convertAppVO(apps));
+                        equipmentVO.setAppStats(convertAppVO(apps,appsInfoMap));
                         if(CollectionUtils.isEmpty(equipmentVO.getAppStats())){
                             continue;
                         }
@@ -172,7 +178,7 @@ public class ConvergeSiteServiceImpl extends AbstractCRUDServiceImpl<ConvergeSit
         return true;
     }
 
-    private List<AppVO> convertAppVO(List<ConvergeAppsEntity> apps){
+    private List<AppVO> convertAppVO(List<ConvergeAppsEntity> apps,Map<String,String> appsInfoMap){
         if(CollectionUtils.isEmpty(apps)){
             return Collections.emptyList();
         }else {
@@ -183,6 +189,9 @@ public class ConvergeSiteServiceImpl extends AbstractCRUDServiceImpl<ConvergeSit
                 }
                 AppVO vo = new AppVO();
                 BeanUtils.copyProperties(item,vo,BeanUtil.getNullPropertyNames(item));
+                if(appsInfoMap.containsKey(item.getAppEname())){
+                    vo.setAppName(appsInfoMap.get(item.getAppEname()));
+                }
                 vo.setInterfaceStats(item.getInterfaceEntityList());
                 voList.add(vo);
             }
diff --git a/sst-manager/src/main/java/com/mortals/xhx/module/converge/web/ConvergeAppsInfoController.java b/sst-manager/src/main/java/com/mortals/xhx/module/converge/web/ConvergeAppsInfoController.java
new file mode 100644
index 0000000..3f3eed4
--- /dev/null
+++ b/sst-manager/src/main/java/com/mortals/xhx/module/converge/web/ConvergeAppsInfoController.java
@@ -0,0 +1,49 @@
+package com.mortals.xhx.module.converge.web;
+import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
+import com.mortals.xhx.base.system.param.service.ParamService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import com.mortals.framework.model.Context;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
+import com.mortals.xhx.module.converge.model.ConvergeAppsInfoEntity;
+import com.mortals.xhx.module.converge.service.ConvergeAppsInfoService;
+import org.apache.commons.lang3.ArrayUtils;
+import com.mortals.framework.util.StringUtils;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import com.alibaba.fastjson.JSONObject;
+import java.util.Arrays;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import static com.mortals.framework.ap.SysConstains.*;
+/**
+*
+* 搴旂敤淇℃伅
+*
+* @author zxfei
+* @date 2023-10-17
+*/
+@RestController
+@RequestMapping("converge/apps/info")
+public class ConvergeAppsInfoController extends BaseCRUDJsonBodyMappingController<ConvergeAppsInfoService,ConvergeAppsInfoEntity,Long> {
+
+    @Autowired
+    private ParamService paramService;
+
+    public ConvergeAppsInfoController(){
+        super.setModuleDesc( "搴旂敤淇℃伅");
+    }
+
+    @Override
+    protected void init(Map<String, Object> model, Context context) {
+        super.init(model, context);
+    }
+
+
+}
\ No newline at end of file
diff --git a/sst-manager/src/main/resources/sqlmap/module/converge/ConvergeAppsInfoMapper.xml b/sst-manager/src/main/resources/sqlmap/module/converge/ConvergeAppsInfoMapper.xml
new file mode 100644
index 0000000..90a5453
--- /dev/null
+++ b/sst-manager/src/main/resources/sqlmap/module/converge/ConvergeAppsInfoMapper.xml
@@ -0,0 +1,531 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"mybatis-3-mapper.dtd">
+<mapper namespace="com.mortals.xhx.module.converge.dao.ibatis.ConvergeAppsInfoDaoImpl">
+
+    <!-- 瀛楁鍜屽睘鎬ф槧灏� -->
+    <resultMap type="ConvergeAppsInfoEntity" id="ConvergeAppsInfoEntity-Map">
+            <id  property="id" column="id" />
+            <result property="appEname" column="appEname" />
+            <result property="appName" column="appName" />
+            <result property="createUserId" column="createUserId" />
+            <result property="createTime" column="createTime" />
+            <result property="updateUserId" column="updateUserId" />
+            <result property="updateTime" column="updateTime" />
+            
+    </resultMap>
+
+
+    <!-- 琛ㄦ墍鏈夊垪 -->
+    <sql id="_columns">
+        <trim suffixOverrides="," suffix="">
+                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('id') or colPickMode == 1 and data.containsKey('id')))">
+                    a.id,
+                </if>
+                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appEname') or colPickMode == 1 and data.containsKey('appEname')))">
+                    a.appEname,
+                </if>
+                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appName') or colPickMode == 1 and data.containsKey('appName')))">
+                    a.appName,
+                </if>
+                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
+                    a.createUserId,
+                </if>
+                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
+                    a.createTime,
+                </if>
+                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateUserId') or colPickMode == 1 and data.containsKey('updateUserId')))">
+                    a.updateUserId,
+                </if>
+                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
+                    a.updateTime,
+                </if>
+        </trim>
+    </sql>
+    <!-- 鏂板 鍖哄垎涓婚敭鑷鍔犺繕鏄笟鍔℃彃鍏� -->
+    <insert id="insert" parameterType="ConvergeAppsInfoEntity"  useGeneratedKeys="true" keyProperty="id">
+        insert into mortals_xhx_converge_apps_info
+        (appEname,appName,createUserId,createTime,updateUserId,updateTime)
+        VALUES
+        (#{appEname},#{appName},#{createUserId},#{createTime},#{updateUserId},#{updateTime})
+    </insert>
+
+    <!-- 鎵归噺鏂板 -->
+    <insert id="insertBatch" parameterType="paramDto">
+        insert into mortals_xhx_converge_apps_info
+        (appEname,appName,createUserId,createTime,updateUserId,updateTime)
+        VALUES
+        <foreach collection="data.dataList" item="item" index="index" separator="," >
+            (#{item.appEname},#{item.appName},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime})
+        </foreach>
+    </insert>
+
+
+    <!-- 鏍规嵁ParamDto鏇存柊 -->
+    <update id="update" parameterType="paramDto">
+        update mortals_xhx_converge_apps_info as a
+        set
+        <trim suffixOverrides="," suffix="">
+            <if test="(colPickMode==0 and data.containsKey('appEname')) or (colPickMode==1 and !data.containsKey('appEname'))">
+                a.appEname=#{data.appEname},
+            </if>
+            <if test="(colPickMode==0 and data.containsKey('appName')) or (colPickMode==1 and !data.containsKey('appName'))">
+                a.appName=#{data.appName},
+            </if>
+            <if test="(colPickMode==0 and data.containsKey('createUserId')) or (colPickMode==1 and !data.containsKey('createUserId'))">
+                a.createUserId=#{data.createUserId},
+            </if>
+            <if test="(colPickMode==0 and data.containsKey('createUserIdIncrement')) or (colPickMode==1 and !data.containsKey('createUserIdIncrement'))">
+                a.createUserId=ifnull(a.createUserId,0) + #{data.createUserIdIncrement},
+            </if>
+            <if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
+                a.createTime=#{data.createTime},
+            </if>
+            <if test="(colPickMode==0 and data.containsKey('updateUserId')) or (colPickMode==1 and !data.containsKey('updateUserId'))">
+                a.updateUserId=#{data.updateUserId},
+            </if>
+            <if test="(colPickMode==0 and data.containsKey('updateUserIdIncrement')) or (colPickMode==1 and !data.containsKey('updateUserIdIncrement'))">
+                a.updateUserId=ifnull(a.updateUserId,0) + #{data.updateUserIdIncrement},
+            </if>
+            <if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
+                a.updateTime=#{data.updateTime},
+            </if>
+        </trim>
+        <trim suffixOverrides="where" suffix="">
+            where
+            <trim prefixOverrides="and" prefix="">
+                <include refid="_condition_"/>
+            </trim>
+        </trim>
+    </update>
+    <!-- 鎵归噺鏇存柊 -->
+    <update id="updateBatch" parameterType="paramDto">
+        update mortals_xhx_converge_apps_info as a
+        <trim prefix="set" suffixOverrides=",">
+                <trim prefix="appEname=(case" suffix="ELSE appEname end),">
+                    <foreach collection="data.dataList" item="item" index="index" separator="" >
+                        <if test="(colPickMode==0 and item.containsKey('appEname')) or (colPickMode==1 and !item.containsKey('appEname'))">
+                            when a.id=#{item.id} then #{item.appEname}
+                        </if>
+                    </foreach>
+                </trim>
+                <trim prefix="appName=(case" suffix="ELSE appName end),">
+                    <foreach collection="data.dataList" item="item" index="index" separator="" >
+                        <if test="(colPickMode==0 and item.containsKey('appName')) or (colPickMode==1 and !item.containsKey('appName'))">
+                            when a.id=#{item.id} then #{item.appName}
+                        </if>
+                    </foreach>
+                </trim>
+                        <trim prefix="createUserId=(case" suffix="ELSE createUserId end),">
+                            <foreach collection="data.dataList" item="item" index="index" separator="" >
+                                <choose>
+                                    <when test="(colPickMode==0 and item.containsKey('createUserId')) or (colPickMode==1 and !item.containsKey('createUserId'))">
+                                        when a.id=#{item.id} then #{item.createUserId}
+                                    </when>
+                                    <when test="(colPickMode==0 and item.containsKey('createUserIdIncrement')) or (colPickMode==1 and !item.containsKey('createUserIdIncrement'))">
+                                        when a.id=#{item.id} then ifnull(a.createUserId,0) + #{item.createUserIdIncrement}
+                                    </when>
+                                </choose>
+                            </foreach>
+                        </trim>
+                <trim prefix="createTime=(case" suffix="ELSE createTime end),">
+                    <foreach collection="data.dataList" item="item" index="index" separator="" >
+                        <if test="(colPickMode==0 and item.containsKey('createTime')) or (colPickMode==1 and !item.containsKey('createTime'))">
+                            when a.id=#{item.id} then #{item.createTime}
+                        </if>
+                    </foreach>
+                </trim>
+                        <trim prefix="updateUserId=(case" suffix="ELSE updateUserId end),">
+                            <foreach collection="data.dataList" item="item" index="index" separator="" >
+                                <choose>
+                                    <when test="(colPickMode==0 and item.containsKey('updateUserId')) or (colPickMode==1 and !item.containsKey('updateUserId'))">
+                                        when a.id=#{item.id} then #{item.updateUserId}
+                                    </when>
+                                    <when test="(colPickMode==0 and item.containsKey('updateUserIdIncrement')) or (colPickMode==1 and !item.containsKey('updateUserIdIncrement'))">
+                                        when a.id=#{item.id} then ifnull(a.updateUserId,0) + #{item.updateUserIdIncrement}
+                                    </when>
+                                </choose>
+                            </foreach>
+                        </trim>
+                <trim prefix="updateTime=(case" suffix="ELSE updateTime end),">
+                    <foreach collection="data.dataList" item="item" index="index" separator="" >
+                        <if test="(colPickMode==0 and item.containsKey('updateTime')) or (colPickMode==1 and !item.containsKey('updateTime'))">
+                            when a.id=#{item.id} then #{item.updateTime}
+                        </if>
+                    </foreach>
+                </trim>
+        </trim>
+        where id in
+        <foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
+            #{item.id}
+        </foreach>
+    </update>
+    <!-- 鏍规嵁涓诲仴鏌ヨ -->
+    <select id="getByKey" parameterType="paramDto" resultMap="ConvergeAppsInfoEntity-Map">
+        select <include refid="_columns"/>
+        from mortals_xhx_converge_apps_info as a
+        where a.id=#{condition.id}
+    </select>
+    <!-- 鏍规嵁涓诲仴鍒犻櫎 -->
+    <delete id="deleteByKey" parameterType="paramDto">
+        delete a.* from mortals_xhx_converge_apps_info as a where a.id=#{condition.id}
+    </delete>
+    <!-- 鏍规嵁涓诲仴鍒犻櫎涓€鎵癸紝閽堝鍗曚竴涓诲仴鏈夋晥 -->
+    <delete id="deleteByKeys">
+        delete from mortals_xhx_converge_apps_info where id in
+        <foreach collection="array" item="item" index="index" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </delete>
+    <!-- 鏍规嵁涓诲仴鍒楄〃鍒犻櫎涓€鎵癸紝閽堝鍗曚竴涓诲仴鏈夋晥 -->
+    <delete id="deleteByKeyList">
+        delete from mortals_xhx_converge_apps_info where id in
+        <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </delete>
+
+    <!-- 鏍规嵁瀵硅薄鍒楄〃鍒犻櫎涓€鎵癸紝閽堝鍗曚竴涓诲仴鏈夋晥 -->
+    <delete id="deleteByEntityList">
+        delete from mortals_xhx_converge_apps_info where id in
+        <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
+            #{item.id}
+        </foreach>
+    </delete>
+    <!-- 鏍规嵁paramDto鍒犻櫎涓€鎵� -->
+    <delete id="deleteByMap" parameterType="paramDto">
+        delete a.* from mortals_xhx_converge_apps_info as a
+        <trim suffixOverrides="where" suffix="">
+            where
+            <trim prefixOverrides="and" prefix="">
+                <include refid="_condition_"/>
+            </trim>
+        </trim>
+    </delete>
+    <!-- 鑾峰彇鍒楄〃 -->
+    <select id="getList" parameterType="paramDto" resultMap="ConvergeAppsInfoEntity-Map">
+        select <include refid="_columns"/>
+        from mortals_xhx_converge_apps_info as a
+        <trim suffixOverrides="where" suffix="">
+            where
+            <trim prefixOverrides="and" prefix="">
+                <include refid="_condition_"/>
+            </trim>
+        </trim>
+        <include refid="_orderCols_"/>
+    </select>
+
+
+
+    <!-- 鑾峰彇 -->
+    <select id="getListCount" parameterType="paramDto" resultType="int">
+        select count(1)
+        from mortals_xhx_converge_apps_info as a
+        <trim suffixOverrides="where" suffix="">
+            where
+            <trim prefixOverrides="and" prefix="">
+                <include refid="_condition_"/>
+            </trim>
+        </trim>
+    </select>
+    <!-- 鏉′欢鏄犲皠 -->
+    <sql id="_condition_">
+        <if test="condition != null and !condition.isEmpty()">
+            <!-- 鏉′欢鏄犲皠-鏅€氭潯浠� -->
+            <include refid="_condition_param_">
+                <property name="_conditionParam_" value="condition"/>
+                <property name="_conditionType_" value="and"/>
+            </include>
+            <!-- 鏉′欢鏄犲皠-闆嗗悎涔嬮棿浣跨敤AND锛岄泦鍚堜腑鍏冪礌浣跨敤OR-(list[0].1 or list[0].2) and (list[1].3 or list[1].4) -->
+            <if test="condition.containsKey('andConditionList') and !condition.andConditionList.isEmpty()">
+                and
+                <foreach collection="condition.andConditionList" open="(" close=")" index="index" item="andCondition" separator=" and ">
+                    <trim prefixOverrides="or" prefix="(" suffix=")">
+                        <include refid="_condition_param_">
+                            <property name="_conditionParam_" value="andCondition"/>
+                            <property name="_conditionType_" value="or"/>
+                        </include>
+                    </trim>
+                </foreach>
+            </if>
+            <!-- 鏉′欢鏄犲皠-闆嗗悎涔嬮棿浣跨敤OR锛岄泦鍚堜腑鍏冪礌浣跨敤AND-(list[0].1 and list[0].2) or (list[1].3 and list[1].4) -->
+            <if test="condition.containsKey('orConditionList') and !condition.orConditionList.isEmpty()">
+                and
+                <foreach collection="condition.orConditionList" open="(" close=")" index="index" item="orCondition" separator=" or ">
+                    <trim prefixOverrides="and" prefix="(" suffix=")">
+                        <include refid="_condition_param_">
+                            <property name="_conditionParam_" value="orCondition"/>
+                            <property name="_conditionType_" value="and"/>
+                        </include>
+                    </trim>
+                </foreach>
+            </if>
+        </if>
+    </sql>
+    <!-- 鏉′欢鏄犲皠-浠e弬鏁� -->
+    <sql id="_condition_param_">
+        <bind name="conditionParamRef" value="${_conditionParam_}"/>
+        <if test="conditionParamRef.containsKey('id')">
+            <if test="conditionParamRef.id != null">
+                ${_conditionType_} a.id=#{${_conditionParam_}.id}
+            </if>
+        </if>
+            <if test="conditionParamRef.containsKey('id')">
+                <if test="conditionParamRef.id != null ">
+                    ${_conditionType_} a.id = #{${_conditionParam_}.id}
+                </if>
+                <if test="conditionParamRef.id == null">
+                    ${_conditionType_} a.id is null
+                </if>
+            </if>
+            <if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
+                ${_conditionType_} a.id in
+                <foreach collection="conditionParamRef.idList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('idNotList') and conditionParamRef.idNotList.size() > 0">
+                ${_conditionType_} a.id not in
+                <foreach collection="conditionParamRef.idNotList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null">
+                ${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart}
+            </if>
+            <if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null">
+                ${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
+            </if>
+
+
+            <if test="conditionParamRef.containsKey('appEname')">
+                <if test="conditionParamRef.appEname != null and conditionParamRef.appEname != ''">
+                    ${_conditionType_} a.appEname like #{${_conditionParam_}.appEname}
+                </if>
+                <if test="conditionParamRef.appEname == null">
+                    ${_conditionType_} a.appEname is null
+                </if>
+            </if>
+            <if test="conditionParamRef.containsKey('appEnameList') and conditionParamRef.appEnameList.size() > 0">
+                ${_conditionType_} a.appEname in
+                <foreach collection="conditionParamRef.appEnameList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('appEnameNotList') and conditionParamRef.appEnameNotList.size() > 0">
+                ${_conditionType_} a.appEname not in
+                <foreach collection="conditionParamRef.appEnameNotList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+
+            <if test="conditionParamRef.containsKey('appName')">
+                <if test="conditionParamRef.appName != null and conditionParamRef.appName != ''">
+                    ${_conditionType_} a.appName like #{${_conditionParam_}.appName}
+                </if>
+                <if test="conditionParamRef.appName == null">
+                    ${_conditionType_} a.appName is null
+                </if>
+            </if>
+            <if test="conditionParamRef.containsKey('appNameList') and conditionParamRef.appNameList.size() > 0">
+                ${_conditionType_} a.appName in
+                <foreach collection="conditionParamRef.appNameList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('appNameNotList') and conditionParamRef.appNameNotList.size() > 0">
+                ${_conditionType_} a.appName not in
+                <foreach collection="conditionParamRef.appNameNotList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('createUserId')">
+                <if test="conditionParamRef.createUserId != null ">
+                    ${_conditionType_} a.createUserId = #{${_conditionParam_}.createUserId}
+                </if>
+                <if test="conditionParamRef.createUserId == null">
+                    ${_conditionType_} a.createUserId is null
+                </if>
+            </if>
+            <if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
+                ${_conditionType_} a.createUserId in
+                <foreach collection="conditionParamRef.createUserIdList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('createUserIdNotList') and conditionParamRef.createUserIdNotList.size() > 0">
+                ${_conditionType_} a.createUserId not in
+                <foreach collection="conditionParamRef.createUserIdNotList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('createUserIdStart') and conditionParamRef.createUserIdStart != null">
+                ${_conditionType_} a.createUserId <![CDATA[ >= ]]> #{${_conditionParam_}.createUserIdStart}
+            </if>
+            <if test="conditionParamRef.containsKey('createUserIdEnd') and conditionParamRef.createUserIdEnd != null">
+                ${_conditionType_} a.createUserId <![CDATA[ <= ]]> #{${_conditionParam_}.createUserIdEnd}
+            </if>
+
+
+            <if test="conditionParamRef.containsKey('createTime')">
+                <if test="conditionParamRef.createTime != null ">
+                    ${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
+                </if>
+                <if test="conditionParamRef.createTime == null">
+                    ${_conditionType_} a.createTime is null
+                </if>
+            </if>
+            <if test="conditionParamRef.containsKey('createTimeStart') and conditionParamRef.createTimeStart != null and conditionParamRef.createTimeStart!=''">
+                ${_conditionType_} a.createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
+            </if>
+            <if test="conditionParamRef.containsKey('createTimeEnd') and conditionParamRef.createTimeEnd != null and conditionParamRef.createTimeEnd!=''">
+                ${_conditionType_} a.createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
+            </if>
+            <if test="conditionParamRef.containsKey('updateUserId')">
+                <if test="conditionParamRef.updateUserId != null ">
+                    ${_conditionType_} a.updateUserId = #{${_conditionParam_}.updateUserId}
+                </if>
+                <if test="conditionParamRef.updateUserId == null">
+                    ${_conditionType_} a.updateUserId is null
+                </if>
+            </if>
+            <if test="conditionParamRef.containsKey('updateUserIdList') and conditionParamRef.updateUserIdList.size() > 0">
+                ${_conditionType_} a.updateUserId in
+                <foreach collection="conditionParamRef.updateUserIdList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('updateUserIdNotList') and conditionParamRef.updateUserIdNotList.size() > 0">
+                ${_conditionType_} a.updateUserId not in
+                <foreach collection="conditionParamRef.updateUserIdNotList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('updateUserIdStart') and conditionParamRef.updateUserIdStart != null">
+                ${_conditionType_} a.updateUserId <![CDATA[ >= ]]> #{${_conditionParam_}.updateUserIdStart}
+            </if>
+            <if test="conditionParamRef.containsKey('updateUserIdEnd') and conditionParamRef.updateUserIdEnd != null">
+                ${_conditionType_} a.updateUserId <![CDATA[ <= ]]> #{${_conditionParam_}.updateUserIdEnd}
+            </if>
+
+
+            <if test="conditionParamRef.containsKey('updateTime')">
+                <if test="conditionParamRef.updateTime != null ">
+                    ${_conditionType_} a.updateTime = #{${_conditionParam_}.updateTime}
+                </if>
+                <if test="conditionParamRef.updateTime == null">
+                    ${_conditionType_} a.updateTime is null
+                </if>
+            </if>
+            <if test="conditionParamRef.containsKey('updateTimeStart') and conditionParamRef.updateTimeStart != null and conditionParamRef.updateTimeStart!=''">
+                ${_conditionType_} a.updateTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
+            </if>
+            <if test="conditionParamRef.containsKey('updateTimeEnd') and conditionParamRef.updateTimeEnd != null and conditionParamRef.updateTimeEnd!=''">
+                ${_conditionType_} a.updateTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
+            </if>
+    </sql>
+    <sql id="_orderCols_">
+        <if test="orderColList != null and !orderColList.isEmpty()">
+            order by
+                    <if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
+                        field(a.id,
+                        <foreach collection="conditionParamRef.idList" open="" close=")" index="index" item="item" separator=",">
+                            #{item}
+                        </foreach>
+                        ,
+                    </if>
+                    <if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
+                        field(a.createUserId,
+                        <foreach collection="conditionParamRef.createUserIdList" open="" close=")" index="index" item="item" separator=",">
+                            #{item}
+                        </foreach>
+                        ,
+                    </if>
+                    <if test="conditionParamRef.containsKey('updateUserIdList') and conditionParamRef.updateUserIdList.size() > 0">
+                        field(a.updateUserId,
+                        <foreach collection="conditionParamRef.updateUserIdList" open="" close=")" index="index" item="item" separator=",">
+                            #{item}
+                        </foreach>
+                        ,
+                    </if>
+            <trim suffixOverrides=","  suffix="">
+                <foreach collection="orderColList" open="" close="" index="index" item="item" separator=",">
+                     ${item.colName} ${item.sortKind}
+                </foreach>
+            </trim>
+        </if>
+        <if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
+            order by
+                    <if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
+                        field(a.id,
+                        <foreach collection="conditionParamRef.idList" open="" close=")" index="index" item="item" separator=",">
+                            #{item}
+                        </foreach>
+                        ,
+                    </if>
+                    <if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
+                        field(a.createUserId,
+                        <foreach collection="conditionParamRef.createUserIdList" open="" close=")" index="index" item="item" separator=",">
+                            #{item}
+                        </foreach>
+                        ,
+                    </if>
+                    <if test="conditionParamRef.containsKey('updateUserIdList') and conditionParamRef.updateUserIdList.size() > 0">
+                        field(a.updateUserId,
+                        <foreach collection="conditionParamRef.updateUserIdList" open="" close=")" index="index" item="item" separator=",">
+                            #{item}
+                        </foreach>
+                        ,
+                    </if>
+            <trim suffixOverrides=","  suffix="">
+                    <if test="orderCol.containsKey('id')">
+                        a.id
+                        <if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
+                        ,
+                    </if>
+                    <if test="orderCol.containsKey('appEname')">
+                        a.appEname
+                        <if test='orderCol.appEname != null and "DESC".equalsIgnoreCase(orderCol.appEname)'>DESC</if>
+                        ,
+                    </if>
+                    <if test="orderCol.containsKey('appName')">
+                        a.appName
+                        <if test='orderCol.appName != null and "DESC".equalsIgnoreCase(orderCol.appName)'>DESC</if>
+                        ,
+                    </if>
+                    <if test="orderCol.containsKey('createUserId')">
+                        a.createUserId
+                        <if test='orderCol.createUserId != null and "DESC".equalsIgnoreCase(orderCol.createUserId)'>DESC</if>
+                        ,
+                    </if>
+                    <if test="orderCol.containsKey('createTime')">
+                        a.createTime
+                        <if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
+                        ,
+                    </if>
+                    <if test="orderCol.containsKey('updateUserId')">
+                        a.updateUserId
+                        <if test='orderCol.updateUserId != null and "DESC".equalsIgnoreCase(orderCol.updateUserId)'>DESC</if>
+                        ,
+                    </if>
+                    <if test="orderCol.containsKey('updateTime')">
+                        a.updateTime
+                        <if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
+                        ,
+                    </if>
+            </trim>
+        </if>
+
+
+    </sql>
+    <sql id="_group_by_">
+        <if test="groupList != null and !groupList.isEmpty()">
+            GROUP BY
+            <trim suffixOverrides=","  suffix="">
+                <foreach collection="groupList" open="" close="" index="index" item="item" separator=",">
+                    ${item}
+                </foreach>
+            </trim>
+        </if>
+    </sql>
+</mapper>
\ No newline at end of file
-- 
2.24.3