From e5c5c3bf61011f485cc7abd19c95c9212e4d5e1b Mon Sep 17 00:00:00 2001 From: liaoxuwei <5789413@qq.com> Date: Wed, 20 Nov 2024 14:57:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=98=E5=B7=A5=E5=90=8D=E7=89=87=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E8=AE=B0=E5=BD=95=E8=A1=A8=EF=BC=9B=E5=90=8D=E7=89=87?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=E6=AC=A1=E6=95=B0=E7=B4=AF=E5=8A=A0=EF=BC=9B?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=90=8D=E7=89=87=E5=85=AC=E5=8F=B8=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/add.sql | 27 + ...345\212\241\345\271\263\345\217\260 .docx" | Bin 122007 -> 125003 bytes .../dao/BussinesscardRecordDao.java | 17 + .../ibatis/BussinesscardRecordDaoImpl.java | 21 + .../model/BussinesscardEntity.java | 9 +- .../model/BussinesscardQuery.java | 174 ++- .../model/BussinesscardRecordEntity.java | 71 + .../model/BussinesscardRecordQuery.java | 1182 +++++++++++++++++ .../model/vo/BussinesscardRecordVo.java | 23 + .../service/BussinesscardRecordService.java | 25 + .../impl/BussinesscardRecordServiceImpl.java | 54 + .../impl/BussinesscardServiceImpl.java | 30 +- .../web/BussinesscardController.java | 39 + .../web/BussinesscardRecordController.java | 50 + .../service/impl/CompanyServiceImpl.java | 4 +- .../module/news/model/NewsRecordEntity.java | 15 +- .../module/news/model/NewsRecordQuery.java | 992 ++++++++------ .../module/staff/model/StaffRecordEntity.java | 17 +- .../module/staff/model/StaffRecordQuery.java | 1052 ++++++++------- .../module/staff/service/StaffService.java | 5 + .../staff/service/impl/StaffServiceImpl.java | 14 + .../bussinesscard/BussinesscardMapper.xml | 88 +- .../BussinesscardRecordMapper.xml | 771 +++++++++++ .../sqlmap/module/news/NewsRecordMapper.xml | 872 +++++++----- .../sqlmap/module/staff/StaffMapper.xml | 3 +- .../sqlmap/module/staff/StaffRecordMapper.xml | 944 +++++++------ 26 files changed, 4822 insertions(+), 1677 deletions(-) create mode 100644 enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/dao/BussinesscardRecordDao.java create mode 100644 enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/dao/ibatis/BussinesscardRecordDaoImpl.java create mode 100644 enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardRecordEntity.java create mode 100644 enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardRecordQuery.java create mode 100644 enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/vo/BussinesscardRecordVo.java create mode 100644 enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/BussinesscardRecordService.java create mode 100644 enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/impl/BussinesscardRecordServiceImpl.java create mode 100644 enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/web/BussinesscardRecordController.java create mode 100644 enterprise-manager/src/main/resources/sqlmap/module/bussinesscard/BussinesscardRecordMapper.xml diff --git a/db/add.sql b/db/add.sql index fe87b51..2cc540d 100644 --- a/db/add.sql +++ b/db/add.sql @@ -51,3 +51,30 @@ INSERT INTO `mortals_xhx_menu` VALUES (null, '鍛樺伐绂昏亴淇℃伅', '/staff/leave INSERT INTO `mortals_xhx_resource` VALUES (null, '鍛樺伐绂昏亴淇℃伅-鑿滃崟绠$悊-鏌ョ湅', '/staff/leave/list,/staff/leave/view,/staff/leave/info,/staff/leave/export,/staff/leave/exportExcel,/staff/leave/downloadTemplate,/staff/leave/download', 3, 0, NULL, NULL, NULL, 0); INSERT INTO `mortals_xhx_resource` VALUES (null, '鍛樺伐绂昏亴淇℃伅-鑿滃崟绠$悊-缁存姢', '/staff/leave/add,/staff/leave/edit,/staff/leave/delete,/staff/leave/logicDelete,/staff/leave/save,/staff/leave/importData', 3, 0, NULL, NULL, NULL, 0); +-- ---------------------------- +-- 2024-11-20 +-- ---------------------------- +ALTER TABLE `mortals_xhx_bussinesscard` MODIFY COLUMN `companyId` bigint(20) DEFAULT NULL COMMENT '璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D'; +ALTER TABLE `mortals_xhx_bussinesscard` ADD COLUMN `companyAdress` varchar(256) COMMENT '鍚嶇墖灞曠ず璁剧疆'; +ALTER TABLE `mortals_xhx_news_record` ADD COLUMN `viewId` bigint(20) COMMENT '鏌ョ湅浜篿d'; +ALTER TABLE `mortals_xhx_staff_record` ADD COLUMN `viewId` bigint(20) COMMENT '鏌ョ湅浜篿d'; + +-- ---------------------------- +-- 鍚嶇墖璁块棶璁板綍淇℃伅琛� +-- ---------------------------- +DROP TABLE IF EXISTS `mortals_xhx_bussinesscard_record`; +CREATE TABLE mortals_xhx_bussinesscard_record( + `id` bigint(20) AUTO_INCREMENT COMMENT '搴忓彿锛屼富閿紝鑷闀�', + `bussinesscardId` bigint(20) NOT NULL COMMENT '鍚嶇墖ID', + `viewId` bigint(20) COMMENT '鏌ョ湅浜篿d', + `viewName` varchar(64) COMMENT '鏌ョ湅浜哄悕绉�', + `sumViews` int(4) DEFAULT '0' COMMENT '绱鏌ョ湅娆℃暟', + `remark` varchar(255) COMMENT '澶囨敞', + `viewTime` datetime COMMENT '鏈€鍚庢祻瑙堟椂闂�', + `createUserId` bigint(20) COMMENT '鍒涘缓鐢ㄦ埛', + `createTime` datetime COMMENT '鍒涘缓鏃堕棿', + `updateUserId` bigint(20) COMMENT '鏇存柊鐢ㄦ埛', + `updateTime` datetime COMMENT '鏇存柊鏃堕棿', +PRIMARY KEY (`id`) +,KEY `viewId` (`viewId`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='鍚嶇墖璁块棶璁板綍淇℃伅'; \ No newline at end of file diff --git "a/doc/\344\274\201\344\270\232\346\234\215\345\212\241\345\271\263\345\217\260 .docx" "b/doc/\344\274\201\344\270\232\346\234\215\345\212\241\345\271\263\345\217\260 .docx" index 7f7672c9e62ac20ec1552410a236a39ded991a4f..0d9537c5f398d3c19c11206f589b94d265a59ebf 100644 GIT binary patch delta 75300 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 delta 72275 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 WyABYfUL3=Vt^>sB^(W6~QvDB0AwKv3 diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/dao/BussinesscardRecordDao.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/dao/BussinesscardRecordDao.java new file mode 100644 index 0000000..ecd750f --- /dev/null +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/dao/BussinesscardRecordDao.java @@ -0,0 +1,17 @@ +package com.mortals.xhx.module.bussinesscard.dao; + +import com.mortals.framework.dao.ICRUDDao; +import com.mortals.xhx.module.bussinesscard.model.BussinesscardRecordEntity; +import java.util.List; +/** +* 鍚嶇墖璁块棶璁板綍淇℃伅Dao +* 鍚嶇墖璁块棶璁板綍淇℃伅 DAO鎺ュ彛 +* +* @author zxfei +* @date 2024-11-20 +*/ + +public interface BussinesscardRecordDao extends ICRUDDao<BussinesscardRecordEntity,Long>{ + + +} diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/dao/ibatis/BussinesscardRecordDaoImpl.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/dao/ibatis/BussinesscardRecordDaoImpl.java new file mode 100644 index 0000000..0fcf2f4 --- /dev/null +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/dao/ibatis/BussinesscardRecordDaoImpl.java @@ -0,0 +1,21 @@ +package com.mortals.xhx.module.bussinesscard.dao.ibatis; + + +import org.springframework.stereotype.Repository; +import com.mortals.xhx.module.bussinesscard.dao.BussinesscardRecordDao; +import com.mortals.xhx.module.bussinesscard.model.BussinesscardRecordEntity; +import java.util.Date; +import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; +import java.util.List; +/** +* 鍚嶇墖璁块棶璁板綍淇℃伅DaoImpl DAO鎺ュ彛 +* +* @author zxfei +* @date 2024-11-20 +*/ +@Repository("bussinesscardRecordDao") +public class BussinesscardRecordDaoImpl extends BaseCRUDDaoMybatis<BussinesscardRecordEntity,Long> implements BussinesscardRecordDao { + + + +} diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardEntity.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardEntity.java index 9f300ee..7f69777 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardEntity.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardEntity.java @@ -59,7 +59,7 @@ public class BussinesscardEntity extends BussinesscardVo { /** * 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D */ - private String companyId; + private Long companyId; /** * 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉� */ @@ -104,6 +104,10 @@ public class BussinesscardEntity extends BussinesscardVo { * 鍚嶇墖灞曠ず璁剧疆 */ private String setting; + /** + * 鍏徃鍦板潃 + */ + private String companyAdress; @Override public int hashCode() { return this.getId().hashCode(); @@ -130,7 +134,7 @@ public class BussinesscardEntity extends BussinesscardVo { this.email = ""; this.phoneNumber = ""; this.idCard = ""; - this.companyId = ""; + this.companyId = null; this.companyName = ""; this.positionId = null; this.positionName = ""; @@ -142,5 +146,6 @@ public class BussinesscardEntity extends BussinesscardVo { this.viewsByDay = 0; this.sendBusinessCardTimes = 0; this.setting = ""; + this.companyAdress = ""; } } \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardQuery.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardQuery.java index 2a75596..ce6a147 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardQuery.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardQuery.java @@ -7,7 +7,7 @@ import com.mortals.xhx.module.bussinesscard.model.BussinesscardEntity; * 鍚嶇墖鍩烘湰淇℃伅鏌ヨ瀵硅薄 * * @author zxfei - * @date 2024-11-19 + * @date 2024-11-20 */ public class BussinesscardQuery extends BussinesscardEntity { /** 寮€濮� 搴忓彿锛屼富閿紝鑷闀� */ @@ -91,11 +91,21 @@ public class BussinesscardQuery extends BussinesscardEntity { /** 韬唤璇佸彿鐮佹帓闄ゅ垪琛� */ private List <String> idCardNotList; - /** 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D */ - private List<String> companyIdList; + /** 寮€濮� 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D */ + private Long companyIdStart; + + /** 缁撴潫 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D */ + private Long companyIdEnd; + + /** 澧炲姞 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D */ + private Long companyIdIncrement; + + /** 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D鍒楄〃 */ + private List <Long> companyIdList; /** 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D鎺掗櫎鍒楄〃 */ - private List <String> companyIdNotList; + private List <Long> companyIdNotList; + /** 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉� */ private List<String> companyNameList; @@ -233,6 +243,11 @@ public class BussinesscardQuery extends BussinesscardEntity { /** 鍚嶇墖灞曠ず璁剧疆鎺掗櫎鍒楄〃 */ private List <String> settingNotList; + /** 鍏徃鍦板潃 */ + private List<String> companyAdressList; + + /** 鍏徃鍦板潃鎺掗櫎鍒楄〃 */ + private List <String> companyAdressNotList; /** OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */ private List<BussinesscardQuery> orConditionList; @@ -708,11 +723,59 @@ public class BussinesscardQuery extends BussinesscardEntity { this.idCardNotList = idCardNotList; } + /** + * 鑾峰彇 寮€濮� 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * @return companyIdStart + */ + public Long getCompanyIdStart(){ + return this.companyIdStart; + } + + /** + * 璁剧疆 寮€濮� 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * @param companyIdStart + */ + public void setCompanyIdStart(Long companyIdStart){ + this.companyIdStart = companyIdStart; + } + + /** + * 鑾峰彇 缁撴潫 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * @return $companyIdEnd + */ + public Long getCompanyIdEnd(){ + return this.companyIdEnd; + } + + /** + * 璁剧疆 缁撴潫 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * @param companyIdEnd + */ + public void setCompanyIdEnd(Long companyIdEnd){ + this.companyIdEnd = companyIdEnd; + } + + /** + * 鑾峰彇 澧炲姞 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * @return companyIdIncrement + */ + public Long getCompanyIdIncrement(){ + return this.companyIdIncrement; + } + + /** + * 璁剧疆 澧炲姞 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * @param companyIdIncrement + */ + public void setCompanyIdIncrement(Long companyIdIncrement){ + this.companyIdIncrement = companyIdIncrement; + } + /** * 鑾峰彇 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D * @return companyIdList */ - public List<String> getCompanyIdList(){ + public List<Long> getCompanyIdList(){ return this.companyIdList; } @@ -720,7 +783,7 @@ public class BussinesscardQuery extends BussinesscardEntity { * 璁剧疆 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D * @param companyIdList */ - public void setCompanyIdList(List<String> companyIdList){ + public void setCompanyIdList(List<Long> companyIdList){ this.companyIdList = companyIdList; } @@ -728,7 +791,7 @@ public class BussinesscardQuery extends BussinesscardEntity { * 鑾峰彇 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D * @return companyIdNotList */ - public List<String> getCompanyIdNotList(){ + public List<Long> getCompanyIdNotList(){ return this.companyIdNotList; } @@ -736,10 +799,11 @@ public class BussinesscardQuery extends BussinesscardEntity { * 璁剧疆 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D * @param companyIdNotList */ - public void setCompanyIdNotList(List<String> companyIdNotList){ + public void setCompanyIdNotList(List<Long> companyIdNotList){ this.companyIdNotList = companyIdNotList; } + /** * 鑾峰彇 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉� * @return companyNameList @@ -1514,6 +1578,38 @@ public class BussinesscardQuery extends BussinesscardEntity { this.settingNotList = settingNotList; } + /** + * 鑾峰彇 鍏徃鍦板潃 + * @return companyAdressList + */ + public List<String> getCompanyAdressList(){ + return this.companyAdressList; + } + + /** + * 璁剧疆 鍏徃鍦板潃 + * @param companyAdressList + */ + public void setCompanyAdressList(List<String> companyAdressList){ + this.companyAdressList = companyAdressList; + } + + /** + * 鑾峰彇 鍏徃鍦板潃 + * @return companyAdressNotList + */ + public List<String> getCompanyAdressNotList(){ + return this.companyAdressNotList; + } + + /** + * 璁剧疆 鍏徃鍦板潃 + * @param companyAdressNotList + */ + public void setCompanyAdressNotList(List<String> companyAdressNotList){ + this.companyAdressNotList = companyAdressNotList; + } + /** * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� * @param id @@ -1791,25 +1887,60 @@ public class BussinesscardQuery extends BussinesscardEntity { return this; } - /** - * 璁剧疆 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * 璁剧疆 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D * @param companyId */ - public BussinesscardQuery companyId(String companyId){ + public BussinesscardQuery companyId(Long companyId){ setCompanyId(companyId); return this; } + /** + * 璁剧疆 寮€濮� 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * @param companyIdStart + */ + public BussinesscardQuery companyIdStart(Long companyIdStart){ + this.companyIdStart = companyIdStart; + return this; + } + + /** + * 璁剧疆 缁撴潫 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * @param companyIdEnd + */ + public BussinesscardQuery companyIdEnd(Long companyIdEnd){ + this.companyIdEnd = companyIdEnd; + return this; + } + + /** + * 璁剧疆 澧炲姞 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * @param companyIdIncrement + */ + public BussinesscardQuery companyIdIncrement(Long companyIdIncrement){ + this.companyIdIncrement = companyIdIncrement; + return this; + } + /** * 璁剧疆 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D * @param companyIdList */ - public BussinesscardQuery companyIdList(List<String> companyIdList){ + public BussinesscardQuery companyIdList(List<Long> companyIdList){ this.companyIdList = companyIdList; return this; } + /** + * 璁剧疆 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉癐D + * @param companyIdNotList + */ + public BussinesscardQuery companyIdNotList(List<Long> companyIdNotList){ + this.companyIdNotList = companyIdNotList; + return this; + } + /** * 璁剧疆 璁板綍鍚嶇墖鎸佹湁鑰呮墍鍦ㄥ叕鍙告垨缁勭粐鐨勫悕绉� @@ -2269,6 +2400,25 @@ public class BussinesscardQuery extends BussinesscardEntity { return this; } + + /** + * 璁剧疆 鍏徃鍦板潃 + * @param companyAdress + */ + public BussinesscardQuery companyAdress(String companyAdress){ + setCompanyAdress(companyAdress); + return this; + } + + /** + * 璁剧疆 鍏徃鍦板潃 + * @param companyAdressList + */ + public BussinesscardQuery companyAdressList(List<String> companyAdressList){ + this.companyAdressList = companyAdressList; + return this; + } + /** * 鑾峰彇 OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) * @return orConditionList diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardRecordEntity.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardRecordEntity.java new file mode 100644 index 0000000..6b83a06 --- /dev/null +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardRecordEntity.java @@ -0,0 +1,71 @@ +package com.mortals.xhx.module.bussinesscard.model; +import java.util.Date; +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.bussinesscard.model.vo.BussinesscardRecordVo; +import lombok.Data; +/** +* 鍚嶇墖璁块棶璁板綍淇℃伅瀹炰綋瀵硅薄 +* +* @author zxfei +* @date 2024-11-20 +*/ +@Data +public class BussinesscardRecordEntity extends BussinesscardRecordVo { + private static final long serialVersionUID = 1L; + + /** + * 鍚嶇墖ID + */ + private Long bussinesscardId; + /** + * 鏌ョ湅浜篿d + */ + private Long viewId; + /** + * 鏌ョ湅浜哄悕绉� + */ + private String viewName; + /** + * 绱鏌ョ湅娆℃暟 + */ + private Integer sumViews; + /** + * 澶囨敞 + */ + private String remark; + /** + * 鏈€鍚庢祻瑙堟椂闂� + */ + private Date viewTime; + @Override + public int hashCode() { + return this.getId().hashCode(); + } + @Override + public boolean equals(Object obj) { + if (obj == null) return false; + if (obj instanceof BussinesscardRecordEntity) { + BussinesscardRecordEntity tmp = (BussinesscardRecordEntity) obj; + if (this.getId() == tmp.getId()) { + return true; + } + } + return false; + } + + public void initAttrValue(){ + this.bussinesscardId = null; + this.viewId = null; + this.viewName = ""; + this.sumViews = 0; + this.remark = ""; + this.viewTime = null; + } +} \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardRecordQuery.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardRecordQuery.java new file mode 100644 index 0000000..dcff60a --- /dev/null +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/BussinesscardRecordQuery.java @@ -0,0 +1,1182 @@ +package com.mortals.xhx.module.bussinesscard.model; + +import java.util.Date; +import java.util.List; +import com.mortals.xhx.module.bussinesscard.model.BussinesscardRecordEntity; +/** +* 鍚嶇墖璁块棶璁板綍淇℃伅鏌ヨ瀵硅薄 +* +* @author zxfei +* @date 2024-11-20 +*/ +public class BussinesscardRecordQuery extends BussinesscardRecordEntity { + /** 寮€濮� 搴忓彿锛屼富閿紝鑷闀� */ + private Long idStart; + + /** 缁撴潫 搴忓彿锛屼富閿紝鑷闀� */ + private Long idEnd; + + /** 澧炲姞 搴忓彿锛屼富閿紝鑷闀� */ + private Long idIncrement; + + /** 搴忓彿锛屼富閿紝鑷闀垮垪琛� */ + private List <Long> idList; + + /** 搴忓彿锛屼富閿紝鑷闀挎帓闄ゅ垪琛� */ + private List <Long> idNotList; + + /** 寮€濮� 鍚嶇墖ID */ + private Long bussinesscardIdStart; + + /** 缁撴潫 鍚嶇墖ID */ + private Long bussinesscardIdEnd; + + /** 澧炲姞 鍚嶇墖ID */ + private Long bussinesscardIdIncrement; + + /** 鍚嶇墖ID鍒楄〃 */ + private List <Long> bussinesscardIdList; + + /** 鍚嶇墖ID鎺掗櫎鍒楄〃 */ + private List <Long> bussinesscardIdNotList; + + /** 寮€濮� 鏌ョ湅浜篿d */ + private Long viewIdStart; + + /** 缁撴潫 鏌ョ湅浜篿d */ + private Long viewIdEnd; + + /** 澧炲姞 鏌ョ湅浜篿d */ + private Long viewIdIncrement; + + /** 鏌ョ湅浜篿d鍒楄〃 */ + private List <Long> viewIdList; + + /** 鏌ョ湅浜篿d鎺掗櫎鍒楄〃 */ + private List <Long> viewIdNotList; + + /** 鏌ョ湅浜哄悕绉� */ + private List<String> viewNameList; + + /** 鏌ョ湅浜哄悕绉版帓闄ゅ垪琛� */ + private List <String> viewNameNotList; + /** 寮€濮� 绱鏌ョ湅娆℃暟 */ + private Integer sumViewsStart; + + /** 缁撴潫 绱鏌ョ湅娆℃暟 */ + private Integer sumViewsEnd; + + /** 澧炲姞 绱鏌ョ湅娆℃暟 */ + private Integer sumViewsIncrement; + + /** 绱鏌ョ湅娆℃暟鍒楄〃 */ + private List <Integer> sumViewsList; + + /** 绱鏌ョ湅娆℃暟鎺掗櫎鍒楄〃 */ + private List <Integer> sumViewsNotList; + + /** 澶囨敞 */ + private List<String> remarkList; + + /** 澶囨敞鎺掗櫎鍒楄〃 */ + private List <String> remarkNotList; + /** 寮€濮� 鏈€鍚庢祻瑙堟椂闂� */ + private String viewTimeStart; + + /** 缁撴潫 鏈€鍚庢祻瑙堟椂闂� */ + private String viewTimeEnd; + + /** 寮€濮� 鍒涘缓鐢ㄦ埛 */ + 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<BussinesscardRecordQuery> orConditionList; + + /** AND鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疉ND锛岄」鍐呭涔嬮棿鏄疧R锛屽锛�(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */ + private List<BussinesscardRecordQuery> andConditionList; + + public BussinesscardRecordQuery(){} + + /** + * 鑾峰彇 寮€濮� 搴忓彿锛屼富閿紝鑷闀� + * @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 bussinesscardIdStart + */ + public Long getBussinesscardIdStart(){ + return this.bussinesscardIdStart; + } + + /** + * 璁剧疆 寮€濮� 鍚嶇墖ID + * @param bussinesscardIdStart + */ + public void setBussinesscardIdStart(Long bussinesscardIdStart){ + this.bussinesscardIdStart = bussinesscardIdStart; + } + + /** + * 鑾峰彇 缁撴潫 鍚嶇墖ID + * @return $bussinesscardIdEnd + */ + public Long getBussinesscardIdEnd(){ + return this.bussinesscardIdEnd; + } + + /** + * 璁剧疆 缁撴潫 鍚嶇墖ID + * @param bussinesscardIdEnd + */ + public void setBussinesscardIdEnd(Long bussinesscardIdEnd){ + this.bussinesscardIdEnd = bussinesscardIdEnd; + } + + /** + * 鑾峰彇 澧炲姞 鍚嶇墖ID + * @return bussinesscardIdIncrement + */ + public Long getBussinesscardIdIncrement(){ + return this.bussinesscardIdIncrement; + } + + /** + * 璁剧疆 澧炲姞 鍚嶇墖ID + * @param bussinesscardIdIncrement + */ + public void setBussinesscardIdIncrement(Long bussinesscardIdIncrement){ + this.bussinesscardIdIncrement = bussinesscardIdIncrement; + } + + /** + * 鑾峰彇 鍚嶇墖ID + * @return bussinesscardIdList + */ + public List<Long> getBussinesscardIdList(){ + return this.bussinesscardIdList; + } + + /** + * 璁剧疆 鍚嶇墖ID + * @param bussinesscardIdList + */ + public void setBussinesscardIdList(List<Long> bussinesscardIdList){ + this.bussinesscardIdList = bussinesscardIdList; + } + + /** + * 鑾峰彇 鍚嶇墖ID + * @return bussinesscardIdNotList + */ + public List<Long> getBussinesscardIdNotList(){ + return this.bussinesscardIdNotList; + } + + /** + * 璁剧疆 鍚嶇墖ID + * @param bussinesscardIdNotList + */ + public void setBussinesscardIdNotList(List<Long> bussinesscardIdNotList){ + this.bussinesscardIdNotList = bussinesscardIdNotList; + } + + + /** + * 鑾峰彇 寮€濮� 鏌ョ湅浜篿d + * @return viewIdStart + */ + public Long getViewIdStart(){ + return this.viewIdStart; + } + + /** + * 璁剧疆 寮€濮� 鏌ョ湅浜篿d + * @param viewIdStart + */ + public void setViewIdStart(Long viewIdStart){ + this.viewIdStart = viewIdStart; + } + + /** + * 鑾峰彇 缁撴潫 鏌ョ湅浜篿d + * @return $viewIdEnd + */ + public Long getViewIdEnd(){ + return this.viewIdEnd; + } + + /** + * 璁剧疆 缁撴潫 鏌ョ湅浜篿d + * @param viewIdEnd + */ + public void setViewIdEnd(Long viewIdEnd){ + this.viewIdEnd = viewIdEnd; + } + + /** + * 鑾峰彇 澧炲姞 鏌ョ湅浜篿d + * @return viewIdIncrement + */ + public Long getViewIdIncrement(){ + return this.viewIdIncrement; + } + + /** + * 璁剧疆 澧炲姞 鏌ョ湅浜篿d + * @param viewIdIncrement + */ + public void setViewIdIncrement(Long viewIdIncrement){ + this.viewIdIncrement = viewIdIncrement; + } + + /** + * 鑾峰彇 鏌ョ湅浜篿d + * @return viewIdList + */ + public List<Long> getViewIdList(){ + return this.viewIdList; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdList + */ + public void setViewIdList(List<Long> viewIdList){ + this.viewIdList = viewIdList; + } + + /** + * 鑾峰彇 鏌ョ湅浜篿d + * @return viewIdNotList + */ + public List<Long> getViewIdNotList(){ + return this.viewIdNotList; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdNotList + */ + public void setViewIdNotList(List<Long> viewIdNotList){ + this.viewIdNotList = viewIdNotList; + } + + + /** + * 鑾峰彇 鏌ョ湅浜哄悕绉� + * @return viewNameList + */ + public List<String> getViewNameList(){ + return this.viewNameList; + } + + /** + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewNameList + */ + public void setViewNameList(List<String> viewNameList){ + this.viewNameList = viewNameList; + } + + /** + * 鑾峰彇 鏌ョ湅浜哄悕绉� + * @return viewNameNotList + */ + public List<String> getViewNameNotList(){ + return this.viewNameNotList; + } + + /** + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewNameNotList + */ + public void setViewNameNotList(List<String> viewNameNotList){ + this.viewNameNotList = viewNameNotList; + } + + /** + * 鑾峰彇 寮€濮� 绱鏌ョ湅娆℃暟 + * @return sumViewsStart + */ + public Integer getSumViewsStart(){ + return this.sumViewsStart; + } + + /** + * 璁剧疆 寮€濮� 绱鏌ョ湅娆℃暟 + * @param sumViewsStart + */ + public void setSumViewsStart(Integer sumViewsStart){ + this.sumViewsStart = sumViewsStart; + } + + /** + * 鑾峰彇 缁撴潫 绱鏌ョ湅娆℃暟 + * @return $sumViewsEnd + */ + public Integer getSumViewsEnd(){ + return this.sumViewsEnd; + } + + /** + * 璁剧疆 缁撴潫 绱鏌ョ湅娆℃暟 + * @param sumViewsEnd + */ + public void setSumViewsEnd(Integer sumViewsEnd){ + this.sumViewsEnd = sumViewsEnd; + } + + /** + * 鑾峰彇 澧炲姞 绱鏌ョ湅娆℃暟 + * @return sumViewsIncrement + */ + public Integer getSumViewsIncrement(){ + return this.sumViewsIncrement; + } + + /** + * 璁剧疆 澧炲姞 绱鏌ョ湅娆℃暟 + * @param sumViewsIncrement + */ + public void setSumViewsIncrement(Integer sumViewsIncrement){ + this.sumViewsIncrement = sumViewsIncrement; + } + + /** + * 鑾峰彇 绱鏌ョ湅娆℃暟 + * @return sumViewsList + */ + public List<Integer> getSumViewsList(){ + return this.sumViewsList; + } + + /** + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsList + */ + public void setSumViewsList(List<Integer> sumViewsList){ + this.sumViewsList = sumViewsList; + } + + /** + * 鑾峰彇 绱鏌ョ湅娆℃暟 + * @return sumViewsNotList + */ + public List<Integer> getSumViewsNotList(){ + return this.sumViewsNotList; + } + + /** + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsNotList + */ + public void setSumViewsNotList(List<Integer> sumViewsNotList){ + this.sumViewsNotList = sumViewsNotList; + } + + + /** + * 鑾峰彇 澶囨敞 + * @return remarkList + */ + public List<String> getRemarkList(){ + return this.remarkList; + } + + /** + * 璁剧疆 澶囨敞 + * @param remarkList + */ + public void setRemarkList(List<String> remarkList){ + this.remarkList = remarkList; + } + + /** + * 鑾峰彇 澶囨敞 + * @return remarkNotList + */ + public List<String> getRemarkNotList(){ + return this.remarkNotList; + } + + /** + * 璁剧疆 澶囨敞 + * @param remarkNotList + */ + public void setRemarkNotList(List<String> remarkNotList){ + this.remarkNotList = remarkNotList; + } + + /** + * 鑾峰彇 寮€濮� 鏈€鍚庢祻瑙堟椂闂� + * @return viewTimeStart + */ + public String getViewTimeStart(){ + return this.viewTimeStart; + } + + /** + * 璁剧疆 寮€濮� 鏈€鍚庢祻瑙堟椂闂� + * @param viewTimeStart + */ + public void setViewTimeStart(String viewTimeStart){ + this.viewTimeStart = viewTimeStart; + } + + /** + * 鑾峰彇 缁撴潫 鏈€鍚庢祻瑙堟椂闂� + * @return viewTimeEnd + */ + public String getViewTimeEnd(){ + return this.viewTimeEnd; + } + + /** + * 璁剧疆 缁撴潫 鏈€鍚庢祻瑙堟椂闂� + * @param viewTimeEnd + */ + public void setViewTimeEnd(String viewTimeEnd){ + this.viewTimeEnd = viewTimeEnd; + } + + /** + * 鑾峰彇 寮€濮� 鍒涘缓鐢ㄦ埛 + * @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 BussinesscardRecordQuery id(Long id){ + setId(id); + return this; + } + + /** + * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀� + * @param idStart + */ + public BussinesscardRecordQuery idStart(Long idStart){ + this.idStart = idStart; + return this; + } + + /** + * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀� + * @param idEnd + */ + public BussinesscardRecordQuery idEnd(Long idEnd){ + this.idEnd = idEnd; + return this; + } + + /** + * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀� + * @param idIncrement + */ + public BussinesscardRecordQuery idIncrement(Long idIncrement){ + this.idIncrement = idIncrement; + return this; + } + + /** + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param idList + */ + public BussinesscardRecordQuery idList(List<Long> idList){ + this.idList = idList; + return this; + } + + /** + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param idNotList + */ + public BussinesscardRecordQuery idNotList(List<Long> idNotList){ + this.idNotList = idNotList; + return this; + } + + /** + * 璁剧疆 鍚嶇墖ID + * @param bussinesscardId + */ + public BussinesscardRecordQuery bussinesscardId(Long bussinesscardId){ + setBussinesscardId(bussinesscardId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鍚嶇墖ID + * @param bussinesscardIdStart + */ + public BussinesscardRecordQuery bussinesscardIdStart(Long bussinesscardIdStart){ + this.bussinesscardIdStart = bussinesscardIdStart; + return this; + } + + /** + * 璁剧疆 缁撴潫 鍚嶇墖ID + * @param bussinesscardIdEnd + */ + public BussinesscardRecordQuery bussinesscardIdEnd(Long bussinesscardIdEnd){ + this.bussinesscardIdEnd = bussinesscardIdEnd; + return this; + } + + /** + * 璁剧疆 澧炲姞 鍚嶇墖ID + * @param bussinesscardIdIncrement + */ + public BussinesscardRecordQuery bussinesscardIdIncrement(Long bussinesscardIdIncrement){ + this.bussinesscardIdIncrement = bussinesscardIdIncrement; + return this; + } + + /** + * 璁剧疆 鍚嶇墖ID + * @param bussinesscardIdList + */ + public BussinesscardRecordQuery bussinesscardIdList(List<Long> bussinesscardIdList){ + this.bussinesscardIdList = bussinesscardIdList; + return this; + } + + /** + * 璁剧疆 鍚嶇墖ID + * @param bussinesscardIdNotList + */ + public BussinesscardRecordQuery bussinesscardIdNotList(List<Long> bussinesscardIdNotList){ + this.bussinesscardIdNotList = bussinesscardIdNotList; + return this; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewId + */ + public BussinesscardRecordQuery viewId(Long viewId){ + setViewId(viewId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鏌ョ湅浜篿d + * @param viewIdStart + */ + public BussinesscardRecordQuery viewIdStart(Long viewIdStart){ + this.viewIdStart = viewIdStart; + return this; + } + + /** + * 璁剧疆 缁撴潫 鏌ョ湅浜篿d + * @param viewIdEnd + */ + public BussinesscardRecordQuery viewIdEnd(Long viewIdEnd){ + this.viewIdEnd = viewIdEnd; + return this; + } + + /** + * 璁剧疆 澧炲姞 鏌ョ湅浜篿d + * @param viewIdIncrement + */ + public BussinesscardRecordQuery viewIdIncrement(Long viewIdIncrement){ + this.viewIdIncrement = viewIdIncrement; + return this; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdList + */ + public BussinesscardRecordQuery viewIdList(List<Long> viewIdList){ + this.viewIdList = viewIdList; + return this; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdNotList + */ + public BussinesscardRecordQuery viewIdNotList(List<Long> viewIdNotList){ + this.viewIdNotList = viewIdNotList; + return this; + } + + + /** + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewName + */ + public BussinesscardRecordQuery viewName(String viewName){ + setViewName(viewName); + return this; + } + + /** + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewNameList + */ + public BussinesscardRecordQuery viewNameList(List<String> viewNameList){ + this.viewNameList = viewNameList; + return this; + } + + /** + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViews + */ + public BussinesscardRecordQuery sumViews(Integer sumViews){ + setSumViews(sumViews); + return this; + } + + /** + * 璁剧疆 寮€濮� 绱鏌ョ湅娆℃暟 + * @param sumViewsStart + */ + public BussinesscardRecordQuery sumViewsStart(Integer sumViewsStart){ + this.sumViewsStart = sumViewsStart; + return this; + } + + /** + * 璁剧疆 缁撴潫 绱鏌ョ湅娆℃暟 + * @param sumViewsEnd + */ + public BussinesscardRecordQuery sumViewsEnd(Integer sumViewsEnd){ + this.sumViewsEnd = sumViewsEnd; + return this; + } + + /** + * 璁剧疆 澧炲姞 绱鏌ョ湅娆℃暟 + * @param sumViewsIncrement + */ + public BussinesscardRecordQuery sumViewsIncrement(Integer sumViewsIncrement){ + this.sumViewsIncrement = sumViewsIncrement; + return this; + } + + /** + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsList + */ + public BussinesscardRecordQuery sumViewsList(List<Integer> sumViewsList){ + this.sumViewsList = sumViewsList; + return this; + } + + /** + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsNotList + */ + public BussinesscardRecordQuery sumViewsNotList(List<Integer> sumViewsNotList){ + this.sumViewsNotList = sumViewsNotList; + return this; + } + + + /** + * 璁剧疆 澶囨敞 + * @param remark + */ + public BussinesscardRecordQuery remark(String remark){ + setRemark(remark); + return this; + } + + /** + * 璁剧疆 澶囨敞 + * @param remarkList + */ + public BussinesscardRecordQuery remarkList(List<String> remarkList){ + this.remarkList = remarkList; + return this; + } + + + /** + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserId + */ + public BussinesscardRecordQuery createUserId(Long createUserId){ + setCreateUserId(createUserId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛 + * @param createUserIdStart + */ + public BussinesscardRecordQuery createUserIdStart(Long createUserIdStart){ + this.createUserIdStart = createUserIdStart; + return this; + } + + /** + * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛 + * @param createUserIdEnd + */ + public BussinesscardRecordQuery createUserIdEnd(Long createUserIdEnd){ + this.createUserIdEnd = createUserIdEnd; + return this; + } + + /** + * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛 + * @param createUserIdIncrement + */ + public BussinesscardRecordQuery createUserIdIncrement(Long createUserIdIncrement){ + this.createUserIdIncrement = createUserIdIncrement; + return this; + } + + /** + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserIdList + */ + public BussinesscardRecordQuery createUserIdList(List<Long> createUserIdList){ + this.createUserIdList = createUserIdList; + return this; + } + + /** + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserIdNotList + */ + public BussinesscardRecordQuery createUserIdNotList(List<Long> createUserIdNotList){ + this.createUserIdNotList = createUserIdNotList; + return this; + } + + + /** + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserId + */ + public BussinesscardRecordQuery updateUserId(Long updateUserId){ + setUpdateUserId(updateUserId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛 + * @param updateUserIdStart + */ + public BussinesscardRecordQuery updateUserIdStart(Long updateUserIdStart){ + this.updateUserIdStart = updateUserIdStart; + return this; + } + + /** + * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛 + * @param updateUserIdEnd + */ + public BussinesscardRecordQuery updateUserIdEnd(Long updateUserIdEnd){ + this.updateUserIdEnd = updateUserIdEnd; + return this; + } + + /** + * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛 + * @param updateUserIdIncrement + */ + public BussinesscardRecordQuery updateUserIdIncrement(Long updateUserIdIncrement){ + this.updateUserIdIncrement = updateUserIdIncrement; + return this; + } + + /** + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserIdList + */ + public BussinesscardRecordQuery updateUserIdList(List<Long> updateUserIdList){ + this.updateUserIdList = updateUserIdList; + return this; + } + + /** + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserIdNotList + */ + public BussinesscardRecordQuery 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<BussinesscardRecordQuery> 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<BussinesscardRecordQuery> 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<BussinesscardRecordQuery> 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<BussinesscardRecordQuery> andConditionList){ + this.andConditionList = andConditionList; + } + +} \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/vo/BussinesscardRecordVo.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/vo/BussinesscardRecordVo.java new file mode 100644 index 0000000..ee0c499 --- /dev/null +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/model/vo/BussinesscardRecordVo.java @@ -0,0 +1,23 @@ +package com.mortals.xhx.module.bussinesscard.model.vo; +import com.mortals.framework.model.BaseEntityLong; +import com.mortals.xhx.module.bussinesscard.model.BussinesscardRecordEntity; +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 2024-11-20 +*/ +@Data +public class BussinesscardRecordVo extends BaseEntityLong { + + /** 搴忓彿锛屼富閿紝鑷闀垮垪琛� */ + private List <Long> idList; + + +} \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/BussinesscardRecordService.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/BussinesscardRecordService.java new file mode 100644 index 0000000..44d5e25 --- /dev/null +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/BussinesscardRecordService.java @@ -0,0 +1,25 @@ +package com.mortals.xhx.module.bussinesscard.service; +import com.mortals.framework.model.Context; +import com.mortals.framework.service.ICRUDService; +import com.mortals.xhx.module.bussinesscard.model.BussinesscardEntity; +import com.mortals.xhx.module.bussinesscard.model.BussinesscardRecordEntity; +import com.mortals.xhx.module.bussinesscard.dao.BussinesscardRecordDao; +/** +* BussinesscardRecordService +* +* 鍚嶇墖璁块棶璁板綍淇℃伅 service鎺ュ彛 +* +* @author zxfei +* @date 2024-11-20 +*/ +public interface BussinesscardRecordService extends ICRUDService<BussinesscardRecordEntity,Long>{ + + BussinesscardRecordDao getDao(); + + /** + * 鏍规嵁鍚嶇墖淇℃伅淇濆瓨娴忚璁板綍 + * @param bussinesscardEntity + * @param context + */ + void saveRecord(BussinesscardEntity bussinesscardEntity, Context context); +} \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/impl/BussinesscardRecordServiceImpl.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/impl/BussinesscardRecordServiceImpl.java new file mode 100644 index 0000000..2d62ef6 --- /dev/null +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/impl/BussinesscardRecordServiceImpl.java @@ -0,0 +1,54 @@ +package com.mortals.xhx.module.bussinesscard.service.impl; +import com.mortals.xhx.module.bussinesscard.model.BussinesscardEntity; +import com.mortals.xhx.module.bussinesscard.model.BussinesscardRecordQuery; +import org.springframework.beans.BeanUtils; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; +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.bussinesscard.dao.BussinesscardRecordDao; +import com.mortals.xhx.module.bussinesscard.model.BussinesscardRecordEntity; +import com.mortals.xhx.module.bussinesscard.service.BussinesscardRecordService; +import lombok.extern.slf4j.Slf4j; +/** +* BussinesscardRecordService +* 鍚嶇墖璁块棶璁板綍淇℃伅 service瀹炵幇 +* +* @author zxfei +* @date 2024-11-20 +*/ +@Service("bussinesscardRecordService") +@Slf4j +public class BussinesscardRecordServiceImpl extends AbstractCRUDServiceImpl<BussinesscardRecordDao, BussinesscardRecordEntity, Long> implements BussinesscardRecordService { + + @Override + public void saveRecord(BussinesscardEntity bussinesscardEntity, Context context) { + if(context!=null&&context.getUser()!=null) { + BussinesscardRecordEntity recordEntity = this.selectOne(new BussinesscardRecordQuery().bussinesscardId(bussinesscardEntity.getId()).viewId(context.getUser().getId())); + if(recordEntity!=null){ + Map condition = new HashMap(); + condition.put("id",recordEntity.getId()); + Map data = new HashMap(); + data.put("sumViewsIncrement",1); + data.put("viewTime",new Date()); + this.dao.update(data,condition); + }else { + recordEntity = new BussinesscardRecordEntity(); + recordEntity.initAttrValue(); + recordEntity.setBussinesscardId(bussinesscardEntity.getId()); + recordEntity.setSumViews(1); + recordEntity.setViewId(context.getUser().getId()); + recordEntity.setViewName(context.getUser().getRealName()); + recordEntity.setViewTime(new Date()); + recordEntity.setCreateTime(new Date()); + recordEntity.setCreateUserId(1l); + this.save(recordEntity); + } + } + } +} \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/impl/BussinesscardServiceImpl.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/impl/BussinesscardServiceImpl.java index 5183d8f..4dd1c36 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/impl/BussinesscardServiceImpl.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/service/impl/BussinesscardServiceImpl.java @@ -1,4 +1,8 @@ package com.mortals.xhx.module.bussinesscard.service.impl; +import com.mortals.framework.util.DataUtil; +import com.mortals.xhx.module.company.model.CompanyEntity; +import com.mortals.xhx.module.company.service.CompanyService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.exception.AppException; @@ -17,5 +21,29 @@ import lombok.extern.slf4j.Slf4j; @Service("bussinesscardService") @Slf4j public class BussinesscardServiceImpl extends AbstractCRUDServiceImpl<BussinesscardDao, BussinesscardEntity, Long> implements BussinesscardService { - + + @Autowired + private CompanyService companyService; + + @Override + protected void saveBefore(BussinesscardEntity entity, Context context) throws AppException { + super.saveBefore(entity, context); + if(entity.getCompanyId()!=null){ + CompanyEntity companyEntity = companyService.get(entity.getCompanyId()); + if(companyEntity!=null){ + entity.setCompanyAdress(companyEntity.getBusinessAdress()); + } + } + } + + @Override + protected void updateBefore(BussinesscardEntity entity, Context context) throws AppException { + super.saveBefore(entity, context); + if(entity.getCompanyId()!=null){ + CompanyEntity companyEntity = companyService.get(entity.getCompanyId()); + if(companyEntity!=null){ + entity.setCompanyAdress(companyEntity.getBusinessAdress()); + } + } + } } \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/web/BussinesscardController.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/web/BussinesscardController.java index 70b74ef..4018f02 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/web/BussinesscardController.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/web/BussinesscardController.java @@ -1,7 +1,12 @@ package com.mortals.xhx.module.bussinesscard.web; +import com.mortals.framework.exception.AppException; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.xhx.base.system.param.service.ParamService; +import com.mortals.xhx.base.system.user.model.UserEntity; +import com.mortals.xhx.base.system.user.service.UserService; +import com.mortals.xhx.module.bussinesscard.model.BussinesscardRecordEntity; +import com.mortals.xhx.module.bussinesscard.service.BussinesscardRecordService; import com.mortals.xhx.module.company.model.CompanyQuery; import com.mortals.xhx.module.company.service.CompanyService; import com.mortals.xhx.module.position.model.PositionQuery; @@ -57,6 +62,10 @@ public class BussinesscardController extends BaseCRUDJsonBodyMappingController<B private CompanyService companyService; @Autowired private PositionService positionService; + @Autowired + private BussinesscardRecordService bussinesscardRecordService; + @Autowired + private UserService userService; public BussinesscardController() { super.setModuleDesc("鍚嶇墖鍩烘湰淇℃伅"); @@ -75,5 +84,35 @@ public class BussinesscardController extends BaseCRUDJsonBodyMappingController<B super.init(model, context); } + @Override + protected int viewAfter(Long id, Map<String, Object> model, BussinesscardEntity entity, Context context) throws AppException { + saveRecord(entity,context); + return 1; + } + + @Override + protected int infoAfter(Long id, Map<String, Object> model, BussinesscardEntity entity, Context context) throws AppException { + saveRecord(entity,context); + return 1; + } + /** + * 淇濆瓨鍚嶇墖琚煡鐪嬭褰� + * @param entity + * @param context + */ + private void saveRecord(BussinesscardEntity entity, Context context){ + if(entity!=null){ + if(context!=null&&context.getUser()!=null){ + bussinesscardRecordService.saveRecord(entity, context); + UserEntity userEntity = userService.get(context.getUser().getId()); + if(userEntity!=null){ + //闈炴湰浜烘祻瑙堟椂鎵嶅鍔犳祻瑙堟鏁� + if(!(userEntity.getStaffId()!=null && userEntity.getStaffId().longValue() ==entity.getStaffId().longValue())){ + staffService.saveView(entity.getStaffId()); + } + } + } + } + } } \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/web/BussinesscardRecordController.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/web/BussinesscardRecordController.java new file mode 100644 index 0000000..93d1e1f --- /dev/null +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/bussinesscard/web/BussinesscardRecordController.java @@ -0,0 +1,50 @@ +package com.mortals.xhx.module.bussinesscard.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.bussinesscard.model.BussinesscardRecordEntity; +import com.mortals.xhx.module.bussinesscard.service.BussinesscardRecordService; +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.*; +import com.mortals.xhx.common.code.*; +/** +* +* 鍚嶇墖璁块棶璁板綍淇℃伅 +* +* @author zxfei +* @date 2024-11-20 +*/ +@RestController +@RequestMapping("bussinesscard/record") +public class BussinesscardRecordController extends BaseCRUDJsonBodyMappingController<BussinesscardRecordService,BussinesscardRecordEntity,Long> { + + @Autowired + private ParamService paramService; + + public BussinesscardRecordController(){ + 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/enterprise-manager/src/main/java/com/mortals/xhx/module/company/service/impl/CompanyServiceImpl.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/company/service/impl/CompanyServiceImpl.java index ba9bed2..e91f6bd 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/company/service/impl/CompanyServiceImpl.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/company/service/impl/CompanyServiceImpl.java @@ -201,13 +201,13 @@ public class CompanyServiceImpl extends AbstractCRUDServiceImpl<CompanyDao, Comp //鍙戦€佸悕鐗囧垎甯� List<BussinesscardEntity> bussinesscardList = bussinesscardService.find(new BussinesscardQuery()); - Map<String, Integer> collect = bussinesscardList.stream().collect(Collectors.groupingBy(x -> x.getCompanyId(), Collectors.summingInt(BussinesscardEntity::getSendBusinessCardTimes))); + Map<Long, Integer> collect = bussinesscardList.stream().collect(Collectors.groupingBy(x -> x.getCompanyId(), Collectors.summingInt(BussinesscardEntity::getSendBusinessCardTimes))); /* Map<String, Integer> collect = staffList.stream().collect(Collectors.groupingBy(x -> x.getCompanyIds(), Collectors.summingInt(StaffEntity::getSendBusinessCardTimes))); */ companyList.forEach(company -> { //褰掗泦鍏徃鍙戦€佸崱鐗囨暟閲� Long companyId = company.getId(); - company.setBusinessCardNums(collect.getOrDefault(companyId.toString(),0)); + company.setBusinessCardNums(collect.getOrDefault(companyId,0)); /* collect.entrySet().stream().forEach(item -> { String key = item.getKey(); Integer nums = item.getValue(); diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/news/model/NewsRecordEntity.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/news/model/NewsRecordEntity.java index e939961..592adf1 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/news/model/NewsRecordEntity.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/news/model/NewsRecordEntity.java @@ -40,6 +40,10 @@ public class NewsRecordEntity extends NewsRecordVo { * 鏈€鍚庢祻瑙堟椂闂� */ private Date viewTime; + /** + * 鏌ョ湅浜篿d + */ + private Long viewId; @Override public int hashCode() { return this.getId().hashCode(); @@ -57,10 +61,11 @@ public class NewsRecordEntity extends NewsRecordVo { } public void initAttrValue(){ - this.newsId = 0L; - this.viewName = ""; - this.sumViews = 0; - this.remark = ""; - this.viewTime = new Date(); + this.newsId = 0L; + this.viewName = ""; + this.sumViews = 0; + this.remark = ""; + this.viewTime = new Date(); + this.viewId = null; } } \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/news/model/NewsRecordQuery.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/news/model/NewsRecordQuery.java index b75b0d9..a30c4b9 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/news/model/NewsRecordQuery.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/news/model/NewsRecordQuery.java @@ -4,11 +4,11 @@ import java.util.Date; import java.util.List; import com.mortals.xhx.module.news.model.NewsRecordEntity; /** -* 鏂伴椈璁块棶璁板綍淇℃伅鏌ヨ瀵硅薄 -* -* @author zxfei -* @date 2023-09-18 -*/ + * 鏂伴椈璁块棶璁板綍淇℃伅鏌ヨ瀵硅薄 + * + * @author zxfei + * @date 2024-11-20 + */ public class NewsRecordQuery extends NewsRecordEntity { /** 寮€濮� 搴忓彿锛屼富閿紝鑷闀� */ private Long idStart; @@ -113,6 +113,21 @@ public class NewsRecordQuery extends NewsRecordEntity { /** 缁撴潫 鏇存柊鏃堕棿 */ private String updateTimeEnd; + /** 寮€濮� 鏌ョ湅浜篿d */ + private Long viewIdStart; + + /** 缁撴潫 鏌ョ湅浜篿d */ + private Long viewIdEnd; + + /** 澧炲姞 鏌ョ湅浜篿d */ + private Long viewIdIncrement; + + /** 鏌ョ湅浜篿d鍒楄〃 */ + private List <Long> viewIdList; + + /** 鏌ョ湅浜篿d鎺掗櫎鍒楄〃 */ + private List <Long> viewIdNotList; + /** OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */ private List<NewsRecordQuery> orConditionList; @@ -122,909 +137,1044 @@ public class NewsRecordQuery extends NewsRecordEntity { public NewsRecordQuery(){} /** - * 鑾峰彇 寮€濮� 搴忓彿锛屼富閿紝鑷闀� - * @return idStart - */ + * 鑾峰彇 寮€濮� 搴忓彿锛屼富閿紝鑷闀� + * @return idStart + */ public Long getIdStart(){ return this.idStart; } /** - * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀� - * @param idStart - */ + * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀� + * @param idStart + */ public void setIdStart(Long idStart){ this.idStart = idStart; } /** - * 鑾峰彇 缁撴潫 搴忓彿锛屼富閿紝鑷闀� - * @return $idEnd - */ + * 鑾峰彇 缁撴潫 搴忓彿锛屼富閿紝鑷闀� + * @return $idEnd + */ public Long getIdEnd(){ return this.idEnd; } /** - * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀� - * @param idEnd - */ + * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀� + * @param idEnd + */ public void setIdEnd(Long idEnd){ this.idEnd = idEnd; } /** - * 鑾峰彇 澧炲姞 搴忓彿锛屼富閿紝鑷闀� - * @return idIncrement - */ + * 鑾峰彇 澧炲姞 搴忓彿锛屼富閿紝鑷闀� + * @return idIncrement + */ public Long getIdIncrement(){ return this.idIncrement; } /** - * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀� - * @param idIncrement - */ + * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀� + * @param idIncrement + */ public void setIdIncrement(Long idIncrement){ this.idIncrement = idIncrement; } /** - * 鑾峰彇 搴忓彿锛屼富閿紝鑷闀� - * @return idList - */ + * 鑾峰彇 搴忓彿锛屼富閿紝鑷闀� + * @return idList + */ public List<Long> getIdList(){ return this.idList; } /** - * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� - * @param idList - */ + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param idList + */ public void setIdList(List<Long> idList){ this.idList = idList; } /** - * 鑾峰彇 搴忓彿锛屼富閿紝鑷闀� - * @return idNotList - */ + * 鑾峰彇 搴忓彿锛屼富閿紝鑷闀� + * @return idNotList + */ public List<Long> getIdNotList(){ return this.idNotList; } /** - * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� - * @param idNotList - */ + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param idNotList + */ public void setIdNotList(List<Long> idNotList){ this.idNotList = idNotList; } /** - * 鑾峰彇 寮€濮� 鏂伴椈ID - * @return newsIdStart - */ + * 鑾峰彇 寮€濮� 鏂伴椈ID + * @return newsIdStart + */ public Long getNewsIdStart(){ return this.newsIdStart; } /** - * 璁剧疆 寮€濮� 鏂伴椈ID - * @param newsIdStart - */ + * 璁剧疆 寮€濮� 鏂伴椈ID + * @param newsIdStart + */ public void setNewsIdStart(Long newsIdStart){ this.newsIdStart = newsIdStart; } /** - * 鑾峰彇 缁撴潫 鏂伴椈ID - * @return $newsIdEnd - */ + * 鑾峰彇 缁撴潫 鏂伴椈ID + * @return $newsIdEnd + */ public Long getNewsIdEnd(){ return this.newsIdEnd; } /** - * 璁剧疆 缁撴潫 鏂伴椈ID - * @param newsIdEnd - */ + * 璁剧疆 缁撴潫 鏂伴椈ID + * @param newsIdEnd + */ public void setNewsIdEnd(Long newsIdEnd){ this.newsIdEnd = newsIdEnd; } /** - * 鑾峰彇 澧炲姞 鏂伴椈ID - * @return newsIdIncrement - */ + * 鑾峰彇 澧炲姞 鏂伴椈ID + * @return newsIdIncrement + */ public Long getNewsIdIncrement(){ return this.newsIdIncrement; } /** - * 璁剧疆 澧炲姞 鏂伴椈ID - * @param newsIdIncrement - */ + * 璁剧疆 澧炲姞 鏂伴椈ID + * @param newsIdIncrement + */ public void setNewsIdIncrement(Long newsIdIncrement){ this.newsIdIncrement = newsIdIncrement; } /** - * 鑾峰彇 鏂伴椈ID - * @return newsIdList - */ + * 鑾峰彇 鏂伴椈ID + * @return newsIdList + */ public List<Long> getNewsIdList(){ return this.newsIdList; } /** - * 璁剧疆 鏂伴椈ID - * @param newsIdList - */ + * 璁剧疆 鏂伴椈ID + * @param newsIdList + */ public void setNewsIdList(List<Long> newsIdList){ this.newsIdList = newsIdList; } /** - * 鑾峰彇 鏂伴椈ID - * @return newsIdNotList - */ + * 鑾峰彇 鏂伴椈ID + * @return newsIdNotList + */ public List<Long> getNewsIdNotList(){ return this.newsIdNotList; } /** - * 璁剧疆 鏂伴椈ID - * @param newsIdNotList - */ + * 璁剧疆 鏂伴椈ID + * @param newsIdNotList + */ public void setNewsIdNotList(List<Long> newsIdNotList){ this.newsIdNotList = newsIdNotList; } /** - * 鑾峰彇 鏌ョ湅浜哄悕绉� - * @return viewNameList - */ + * 鑾峰彇 鏌ョ湅浜哄悕绉� + * @return viewNameList + */ public List<String> getViewNameList(){ return this.viewNameList; } /** - * 璁剧疆 鏌ョ湅浜哄悕绉� - * @param viewNameList - */ + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewNameList + */ public void setViewNameList(List<String> viewNameList){ this.viewNameList = viewNameList; } /** - * 鑾峰彇 鏌ョ湅浜哄悕绉� - * @return viewNameNotList - */ + * 鑾峰彇 鏌ョ湅浜哄悕绉� + * @return viewNameNotList + */ public List<String> getViewNameNotList(){ return this.viewNameNotList; } /** - * 璁剧疆 鏌ョ湅浜哄悕绉� - * @param viewNameNotList - */ + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewNameNotList + */ public void setViewNameNotList(List<String> viewNameNotList){ this.viewNameNotList = viewNameNotList; } /** - * 鑾峰彇 寮€濮� 绱鏌ョ湅娆℃暟 - * @return sumViewsStart - */ + * 鑾峰彇 寮€濮� 绱鏌ョ湅娆℃暟 + * @return sumViewsStart + */ public Integer getSumViewsStart(){ return this.sumViewsStart; } /** - * 璁剧疆 寮€濮� 绱鏌ョ湅娆℃暟 - * @param sumViewsStart - */ + * 璁剧疆 寮€濮� 绱鏌ョ湅娆℃暟 + * @param sumViewsStart + */ public void setSumViewsStart(Integer sumViewsStart){ this.sumViewsStart = sumViewsStart; } /** - * 鑾峰彇 缁撴潫 绱鏌ョ湅娆℃暟 - * @return $sumViewsEnd - */ + * 鑾峰彇 缁撴潫 绱鏌ョ湅娆℃暟 + * @return $sumViewsEnd + */ public Integer getSumViewsEnd(){ return this.sumViewsEnd; } /** - * 璁剧疆 缁撴潫 绱鏌ョ湅娆℃暟 - * @param sumViewsEnd - */ + * 璁剧疆 缁撴潫 绱鏌ョ湅娆℃暟 + * @param sumViewsEnd + */ public void setSumViewsEnd(Integer sumViewsEnd){ this.sumViewsEnd = sumViewsEnd; } /** - * 鑾峰彇 澧炲姞 绱鏌ョ湅娆℃暟 - * @return sumViewsIncrement - */ + * 鑾峰彇 澧炲姞 绱鏌ョ湅娆℃暟 + * @return sumViewsIncrement + */ public Integer getSumViewsIncrement(){ return this.sumViewsIncrement; } /** - * 璁剧疆 澧炲姞 绱鏌ョ湅娆℃暟 - * @param sumViewsIncrement - */ + * 璁剧疆 澧炲姞 绱鏌ョ湅娆℃暟 + * @param sumViewsIncrement + */ public void setSumViewsIncrement(Integer sumViewsIncrement){ this.sumViewsIncrement = sumViewsIncrement; } /** - * 鑾峰彇 绱鏌ョ湅娆℃暟 - * @return sumViewsList - */ + * 鑾峰彇 绱鏌ョ湅娆℃暟 + * @return sumViewsList + */ public List<Integer> getSumViewsList(){ return this.sumViewsList; } /** - * 璁剧疆 绱鏌ョ湅娆℃暟 - * @param sumViewsList - */ + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsList + */ public void setSumViewsList(List<Integer> sumViewsList){ this.sumViewsList = sumViewsList; } /** - * 鑾峰彇 绱鏌ョ湅娆℃暟 - * @return sumViewsNotList - */ + * 鑾峰彇 绱鏌ョ湅娆℃暟 + * @return sumViewsNotList + */ public List<Integer> getSumViewsNotList(){ return this.sumViewsNotList; } /** - * 璁剧疆 绱鏌ョ湅娆℃暟 - * @param sumViewsNotList - */ + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsNotList + */ public void setSumViewsNotList(List<Integer> sumViewsNotList){ this.sumViewsNotList = sumViewsNotList; } /** - * 鑾峰彇 澶囨敞 - * @return remarkList - */ + * 鑾峰彇 澶囨敞 + * @return remarkList + */ public List<String> getRemarkList(){ return this.remarkList; } /** - * 璁剧疆 澶囨敞 - * @param remarkList - */ + * 璁剧疆 澶囨敞 + * @param remarkList + */ public void setRemarkList(List<String> remarkList){ this.remarkList = remarkList; } /** - * 鑾峰彇 澶囨敞 - * @return remarkNotList - */ + * 鑾峰彇 澶囨敞 + * @return remarkNotList + */ public List<String> getRemarkNotList(){ return this.remarkNotList; } /** - * 璁剧疆 澶囨敞 - * @param remarkNotList - */ + * 璁剧疆 澶囨敞 + * @param remarkNotList + */ public void setRemarkNotList(List<String> remarkNotList){ this.remarkNotList = remarkNotList; } /** - * 鑾峰彇 寮€濮� 鏈€鍚庢祻瑙堟椂闂� - * @return viewTimeStart - */ + * 鑾峰彇 寮€濮� 鏈€鍚庢祻瑙堟椂闂� + * @return viewTimeStart + */ public String getViewTimeStart(){ return this.viewTimeStart; } /** - * 璁剧疆 寮€濮� 鏈€鍚庢祻瑙堟椂闂� - * @param viewTimeStart - */ + * 璁剧疆 寮€濮� 鏈€鍚庢祻瑙堟椂闂� + * @param viewTimeStart + */ public void setViewTimeStart(String viewTimeStart){ this.viewTimeStart = viewTimeStart; } /** - * 鑾峰彇 缁撴潫 鏈€鍚庢祻瑙堟椂闂� - * @return viewTimeEnd - */ + * 鑾峰彇 缁撴潫 鏈€鍚庢祻瑙堟椂闂� + * @return viewTimeEnd + */ public String getViewTimeEnd(){ return this.viewTimeEnd; } /** - * 璁剧疆 缁撴潫 鏈€鍚庢祻瑙堟椂闂� - * @param viewTimeEnd - */ + * 璁剧疆 缁撴潫 鏈€鍚庢祻瑙堟椂闂� + * @param viewTimeEnd + */ public void setViewTimeEnd(String viewTimeEnd){ this.viewTimeEnd = viewTimeEnd; } /** - * 鑾峰彇 寮€濮� 鍒涘缓鐢ㄦ埛 - * @return createUserIdStart - */ + * 鑾峰彇 寮€濮� 鍒涘缓鐢ㄦ埛 + * @return createUserIdStart + */ public Long getCreateUserIdStart(){ return this.createUserIdStart; } /** - * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛 - * @param createUserIdStart - */ + * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛 + * @param createUserIdStart + */ public void setCreateUserIdStart(Long createUserIdStart){ this.createUserIdStart = createUserIdStart; } /** - * 鑾峰彇 缁撴潫 鍒涘缓鐢ㄦ埛 - * @return $createUserIdEnd - */ + * 鑾峰彇 缁撴潫 鍒涘缓鐢ㄦ埛 + * @return $createUserIdEnd + */ public Long getCreateUserIdEnd(){ return this.createUserIdEnd; } /** - * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛 - * @param createUserIdEnd - */ + * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛 + * @param createUserIdEnd + */ public void setCreateUserIdEnd(Long createUserIdEnd){ this.createUserIdEnd = createUserIdEnd; } /** - * 鑾峰彇 澧炲姞 鍒涘缓鐢ㄦ埛 - * @return createUserIdIncrement - */ + * 鑾峰彇 澧炲姞 鍒涘缓鐢ㄦ埛 + * @return createUserIdIncrement + */ public Long getCreateUserIdIncrement(){ return this.createUserIdIncrement; } /** - * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛 - * @param createUserIdIncrement - */ + * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛 + * @param createUserIdIncrement + */ public void setCreateUserIdIncrement(Long createUserIdIncrement){ this.createUserIdIncrement = createUserIdIncrement; } /** - * 鑾峰彇 鍒涘缓鐢ㄦ埛 - * @return createUserIdList - */ + * 鑾峰彇 鍒涘缓鐢ㄦ埛 + * @return createUserIdList + */ public List<Long> getCreateUserIdList(){ return this.createUserIdList; } /** - * 璁剧疆 鍒涘缓鐢ㄦ埛 - * @param createUserIdList - */ + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserIdList + */ public void setCreateUserIdList(List<Long> createUserIdList){ this.createUserIdList = createUserIdList; } /** - * 鑾峰彇 鍒涘缓鐢ㄦ埛 - * @return createUserIdNotList - */ + * 鑾峰彇 鍒涘缓鐢ㄦ埛 + * @return createUserIdNotList + */ public List<Long> getCreateUserIdNotList(){ return this.createUserIdNotList; } /** - * 璁剧疆 鍒涘缓鐢ㄦ埛 - * @param createUserIdNotList - */ + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserIdNotList + */ public void setCreateUserIdNotList(List<Long> createUserIdNotList){ this.createUserIdNotList = createUserIdNotList; } /** - * 鑾峰彇 寮€濮� 鍒涘缓鏃堕棿 - * @return createTimeStart - */ + * 鑾峰彇 寮€濮� 鍒涘缓鏃堕棿 + * @return createTimeStart + */ public String getCreateTimeStart(){ return this.createTimeStart; } /** - * 璁剧疆 寮€濮� 鍒涘缓鏃堕棿 - * @param createTimeStart - */ + * 璁剧疆 寮€濮� 鍒涘缓鏃堕棿 + * @param createTimeStart + */ public void setCreateTimeStart(String createTimeStart){ this.createTimeStart = createTimeStart; } /** - * 鑾峰彇 缁撴潫 鍒涘缓鏃堕棿 - * @return createTimeEnd - */ + * 鑾峰彇 缁撴潫 鍒涘缓鏃堕棿 + * @return createTimeEnd + */ public String getCreateTimeEnd(){ return this.createTimeEnd; } /** - * 璁剧疆 缁撴潫 鍒涘缓鏃堕棿 - * @param createTimeEnd - */ + * 璁剧疆 缁撴潫 鍒涘缓鏃堕棿 + * @param createTimeEnd + */ public void setCreateTimeEnd(String createTimeEnd){ this.createTimeEnd = createTimeEnd; } /** - * 鑾峰彇 寮€濮� 鏇存柊鐢ㄦ埛 - * @return updateUserIdStart - */ + * 鑾峰彇 寮€濮� 鏇存柊鐢ㄦ埛 + * @return updateUserIdStart + */ public Long getUpdateUserIdStart(){ return this.updateUserIdStart; } /** - * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛 - * @param updateUserIdStart - */ + * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛 + * @param updateUserIdStart + */ public void setUpdateUserIdStart(Long updateUserIdStart){ this.updateUserIdStart = updateUserIdStart; } /** - * 鑾峰彇 缁撴潫 鏇存柊鐢ㄦ埛 - * @return $updateUserIdEnd - */ + * 鑾峰彇 缁撴潫 鏇存柊鐢ㄦ埛 + * @return $updateUserIdEnd + */ public Long getUpdateUserIdEnd(){ return this.updateUserIdEnd; } /** - * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛 - * @param updateUserIdEnd - */ + * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛 + * @param updateUserIdEnd + */ public void setUpdateUserIdEnd(Long updateUserIdEnd){ this.updateUserIdEnd = updateUserIdEnd; } /** - * 鑾峰彇 澧炲姞 鏇存柊鐢ㄦ埛 - * @return updateUserIdIncrement - */ + * 鑾峰彇 澧炲姞 鏇存柊鐢ㄦ埛 + * @return updateUserIdIncrement + */ public Long getUpdateUserIdIncrement(){ return this.updateUserIdIncrement; } /** - * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛 - * @param updateUserIdIncrement - */ + * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛 + * @param updateUserIdIncrement + */ public void setUpdateUserIdIncrement(Long updateUserIdIncrement){ this.updateUserIdIncrement = updateUserIdIncrement; } /** - * 鑾峰彇 鏇存柊鐢ㄦ埛 - * @return updateUserIdList - */ + * 鑾峰彇 鏇存柊鐢ㄦ埛 + * @return updateUserIdList + */ public List<Long> getUpdateUserIdList(){ return this.updateUserIdList; } /** - * 璁剧疆 鏇存柊鐢ㄦ埛 - * @param updateUserIdList - */ + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserIdList + */ public void setUpdateUserIdList(List<Long> updateUserIdList){ this.updateUserIdList = updateUserIdList; } /** - * 鑾峰彇 鏇存柊鐢ㄦ埛 - * @return updateUserIdNotList - */ + * 鑾峰彇 鏇存柊鐢ㄦ埛 + * @return updateUserIdNotList + */ public List<Long> getUpdateUserIdNotList(){ return this.updateUserIdNotList; } /** - * 璁剧疆 鏇存柊鐢ㄦ埛 - * @param updateUserIdNotList - */ + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserIdNotList + */ public void setUpdateUserIdNotList(List<Long> updateUserIdNotList){ this.updateUserIdNotList = updateUserIdNotList; } /** - * 鑾峰彇 寮€濮� 鏇存柊鏃堕棿 - * @return updateTimeStart - */ + * 鑾峰彇 寮€濮� 鏇存柊鏃堕棿 + * @return updateTimeStart + */ public String getUpdateTimeStart(){ return this.updateTimeStart; } /** - * 璁剧疆 寮€濮� 鏇存柊鏃堕棿 - * @param updateTimeStart - */ + * 璁剧疆 寮€濮� 鏇存柊鏃堕棿 + * @param updateTimeStart + */ public void setUpdateTimeStart(String updateTimeStart){ this.updateTimeStart = updateTimeStart; } /** - * 鑾峰彇 缁撴潫 鏇存柊鏃堕棿 - * @return updateTimeEnd - */ + * 鑾峰彇 缁撴潫 鏇存柊鏃堕棿 + * @return updateTimeEnd + */ public String getUpdateTimeEnd(){ return this.updateTimeEnd; } /** - * 璁剧疆 缁撴潫 鏇存柊鏃堕棿 - * @param updateTimeEnd - */ + * 璁剧疆 缁撴潫 鏇存柊鏃堕棿 + * @param updateTimeEnd + */ public void setUpdateTimeEnd(String updateTimeEnd){ this.updateTimeEnd = updateTimeEnd; } /** - * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� - * @param id - */ + * 鑾峰彇 寮€濮� 鏌ョ湅浜篿d + * @return viewIdStart + */ + public Long getViewIdStart(){ + return this.viewIdStart; + } + + /** + * 璁剧疆 寮€濮� 鏌ョ湅浜篿d + * @param viewIdStart + */ + public void setViewIdStart(Long viewIdStart){ + this.viewIdStart = viewIdStart; + } + + /** + * 鑾峰彇 缁撴潫 鏌ョ湅浜篿d + * @return $viewIdEnd + */ + public Long getViewIdEnd(){ + return this.viewIdEnd; + } + + /** + * 璁剧疆 缁撴潫 鏌ョ湅浜篿d + * @param viewIdEnd + */ + public void setViewIdEnd(Long viewIdEnd){ + this.viewIdEnd = viewIdEnd; + } + + /** + * 鑾峰彇 澧炲姞 鏌ョ湅浜篿d + * @return viewIdIncrement + */ + public Long getViewIdIncrement(){ + return this.viewIdIncrement; + } + + /** + * 璁剧疆 澧炲姞 鏌ョ湅浜篿d + * @param viewIdIncrement + */ + public void setViewIdIncrement(Long viewIdIncrement){ + this.viewIdIncrement = viewIdIncrement; + } + + /** + * 鑾峰彇 鏌ョ湅浜篿d + * @return viewIdList + */ + public List<Long> getViewIdList(){ + return this.viewIdList; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdList + */ + public void setViewIdList(List<Long> viewIdList){ + this.viewIdList = viewIdList; + } + + /** + * 鑾峰彇 鏌ョ湅浜篿d + * @return viewIdNotList + */ + public List<Long> getViewIdNotList(){ + return this.viewIdNotList; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdNotList + */ + public void setViewIdNotList(List<Long> viewIdNotList){ + this.viewIdNotList = viewIdNotList; + } + + + /** + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param id + */ public NewsRecordQuery id(Long id){ - setId(id); - return this; - } - - /** - * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀� - * @param idStart - */ + setId(id); + return this; + } + + /** + * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀� + * @param idStart + */ public NewsRecordQuery idStart(Long idStart){ - this.idStart = idStart; - return this; + this.idStart = idStart; + return this; } /** - * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀� - * @param idEnd - */ + * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀� + * @param idEnd + */ public NewsRecordQuery idEnd(Long idEnd){ - this.idEnd = idEnd; - return this; + this.idEnd = idEnd; + return this; } /** - * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀� - * @param idIncrement - */ + * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀� + * @param idIncrement + */ public NewsRecordQuery idIncrement(Long idIncrement){ - this.idIncrement = idIncrement; - return this; + this.idIncrement = idIncrement; + return this; } /** - * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� - * @param idList - */ + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param idList + */ public NewsRecordQuery idList(List<Long> idList){ this.idList = idList; - return this; - } - - /** - * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� - * @param idNotList - */ - public NewsRecordQuery idNotList(List<Long> idNotList){ + return this; + } + + /** + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param idNotList + */ + public NewsRecordQuery idNotList(List<Long> idNotList){ this.idNotList = idNotList; return this; - } + } /** - * 璁剧疆 鏂伴椈ID - * @param newsId - */ + * 璁剧疆 鏂伴椈ID + * @param newsId + */ public NewsRecordQuery newsId(Long newsId){ - setNewsId(newsId); - return this; - } - - /** - * 璁剧疆 寮€濮� 鏂伴椈ID - * @param newsIdStart - */ + setNewsId(newsId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鏂伴椈ID + * @param newsIdStart + */ public NewsRecordQuery newsIdStart(Long newsIdStart){ - this.newsIdStart = newsIdStart; - return this; + this.newsIdStart = newsIdStart; + return this; } /** - * 璁剧疆 缁撴潫 鏂伴椈ID - * @param newsIdEnd - */ + * 璁剧疆 缁撴潫 鏂伴椈ID + * @param newsIdEnd + */ public NewsRecordQuery newsIdEnd(Long newsIdEnd){ - this.newsIdEnd = newsIdEnd; - return this; + this.newsIdEnd = newsIdEnd; + return this; } /** - * 璁剧疆 澧炲姞 鏂伴椈ID - * @param newsIdIncrement - */ + * 璁剧疆 澧炲姞 鏂伴椈ID + * @param newsIdIncrement + */ public NewsRecordQuery newsIdIncrement(Long newsIdIncrement){ - this.newsIdIncrement = newsIdIncrement; - return this; + this.newsIdIncrement = newsIdIncrement; + return this; } /** - * 璁剧疆 鏂伴椈ID - * @param newsIdList - */ + * 璁剧疆 鏂伴椈ID + * @param newsIdList + */ public NewsRecordQuery newsIdList(List<Long> newsIdList){ this.newsIdList = newsIdList; - return this; - } - - /** - * 璁剧疆 鏂伴椈ID - * @param newsIdNotList - */ - public NewsRecordQuery newsIdNotList(List<Long> newsIdNotList){ + return this; + } + + /** + * 璁剧疆 鏂伴椈ID + * @param newsIdNotList + */ + public NewsRecordQuery newsIdNotList(List<Long> newsIdNotList){ this.newsIdNotList = newsIdNotList; return this; - } + } - /** - * 璁剧疆 鏌ョ湅浜哄悕绉� - * @param viewName - */ + /** + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewName + */ public NewsRecordQuery viewName(String viewName){ setViewName(viewName); - return this; + return this; } /** - * 璁剧疆 鏌ョ湅浜哄悕绉� - * @param viewNameList - */ + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewNameList + */ public NewsRecordQuery viewNameList(List<String> viewNameList){ this.viewNameList = viewNameList; - return this; + return this; } /** - * 璁剧疆 绱鏌ョ湅娆℃暟 - * @param sumViews - */ + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViews + */ public NewsRecordQuery sumViews(Integer sumViews){ - setSumViews(sumViews); - return this; - } - - /** - * 璁剧疆 寮€濮� 绱鏌ョ湅娆℃暟 - * @param sumViewsStart - */ + setSumViews(sumViews); + return this; + } + + /** + * 璁剧疆 寮€濮� 绱鏌ョ湅娆℃暟 + * @param sumViewsStart + */ public NewsRecordQuery sumViewsStart(Integer sumViewsStart){ - this.sumViewsStart = sumViewsStart; - return this; + this.sumViewsStart = sumViewsStart; + return this; } /** - * 璁剧疆 缁撴潫 绱鏌ョ湅娆℃暟 - * @param sumViewsEnd - */ + * 璁剧疆 缁撴潫 绱鏌ョ湅娆℃暟 + * @param sumViewsEnd + */ public NewsRecordQuery sumViewsEnd(Integer sumViewsEnd){ - this.sumViewsEnd = sumViewsEnd; - return this; + this.sumViewsEnd = sumViewsEnd; + return this; } /** - * 璁剧疆 澧炲姞 绱鏌ョ湅娆℃暟 - * @param sumViewsIncrement - */ + * 璁剧疆 澧炲姞 绱鏌ョ湅娆℃暟 + * @param sumViewsIncrement + */ public NewsRecordQuery sumViewsIncrement(Integer sumViewsIncrement){ - this.sumViewsIncrement = sumViewsIncrement; - return this; + this.sumViewsIncrement = sumViewsIncrement; + return this; } /** - * 璁剧疆 绱鏌ョ湅娆℃暟 - * @param sumViewsList - */ + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsList + */ public NewsRecordQuery sumViewsList(List<Integer> sumViewsList){ this.sumViewsList = sumViewsList; - return this; - } - - /** - * 璁剧疆 绱鏌ョ湅娆℃暟 - * @param sumViewsNotList - */ - public NewsRecordQuery sumViewsNotList(List<Integer> sumViewsNotList){ + return this; + } + + /** + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsNotList + */ + public NewsRecordQuery sumViewsNotList(List<Integer> sumViewsNotList){ this.sumViewsNotList = sumViewsNotList; return this; - } + } - /** - * 璁剧疆 澶囨敞 - * @param remark - */ + /** + * 璁剧疆 澶囨敞 + * @param remark + */ public NewsRecordQuery remark(String remark){ setRemark(remark); - return this; + return this; } /** - * 璁剧疆 澶囨敞 - * @param remarkList - */ + * 璁剧疆 澶囨敞 + * @param remarkList + */ public NewsRecordQuery remarkList(List<String> remarkList){ this.remarkList = remarkList; - return this; + return this; } /** - * 璁剧疆 鍒涘缓鐢ㄦ埛 - * @param createUserId - */ + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserId + */ public NewsRecordQuery createUserId(Long createUserId){ - setCreateUserId(createUserId); - return this; - } - - /** - * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛 - * @param createUserIdStart - */ + setCreateUserId(createUserId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛 + * @param createUserIdStart + */ public NewsRecordQuery createUserIdStart(Long createUserIdStart){ - this.createUserIdStart = createUserIdStart; - return this; + this.createUserIdStart = createUserIdStart; + return this; } /** - * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛 - * @param createUserIdEnd - */ + * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛 + * @param createUserIdEnd + */ public NewsRecordQuery createUserIdEnd(Long createUserIdEnd){ - this.createUserIdEnd = createUserIdEnd; - return this; + this.createUserIdEnd = createUserIdEnd; + return this; } /** - * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛 - * @param createUserIdIncrement - */ + * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛 + * @param createUserIdIncrement + */ public NewsRecordQuery createUserIdIncrement(Long createUserIdIncrement){ - this.createUserIdIncrement = createUserIdIncrement; - return this; + this.createUserIdIncrement = createUserIdIncrement; + return this; } /** - * 璁剧疆 鍒涘缓鐢ㄦ埛 - * @param createUserIdList - */ + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserIdList + */ public NewsRecordQuery createUserIdList(List<Long> createUserIdList){ this.createUserIdList = createUserIdList; - return this; - } - - /** - * 璁剧疆 鍒涘缓鐢ㄦ埛 - * @param createUserIdNotList - */ - public NewsRecordQuery createUserIdNotList(List<Long> createUserIdNotList){ + return this; + } + + /** + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserIdNotList + */ + public NewsRecordQuery createUserIdNotList(List<Long> createUserIdNotList){ this.createUserIdNotList = createUserIdNotList; return this; - } + } /** - * 璁剧疆 鏇存柊鐢ㄦ埛 - * @param updateUserId - */ + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserId + */ public NewsRecordQuery updateUserId(Long updateUserId){ - setUpdateUserId(updateUserId); - return this; - } - - /** - * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛 - * @param updateUserIdStart - */ + setUpdateUserId(updateUserId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛 + * @param updateUserIdStart + */ public NewsRecordQuery updateUserIdStart(Long updateUserIdStart){ - this.updateUserIdStart = updateUserIdStart; - return this; + this.updateUserIdStart = updateUserIdStart; + return this; } /** - * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛 - * @param updateUserIdEnd - */ + * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛 + * @param updateUserIdEnd + */ public NewsRecordQuery updateUserIdEnd(Long updateUserIdEnd){ - this.updateUserIdEnd = updateUserIdEnd; - return this; + this.updateUserIdEnd = updateUserIdEnd; + return this; } /** - * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛 - * @param updateUserIdIncrement - */ + * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛 + * @param updateUserIdIncrement + */ public NewsRecordQuery updateUserIdIncrement(Long updateUserIdIncrement){ - this.updateUserIdIncrement = updateUserIdIncrement; - return this; + this.updateUserIdIncrement = updateUserIdIncrement; + return this; } /** - * 璁剧疆 鏇存柊鐢ㄦ埛 - * @param updateUserIdList - */ + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserIdList + */ public NewsRecordQuery updateUserIdList(List<Long> updateUserIdList){ this.updateUserIdList = updateUserIdList; - return this; - } - - /** - * 璁剧疆 鏇存柊鐢ㄦ埛 - * @param updateUserIdNotList - */ - public NewsRecordQuery updateUserIdNotList(List<Long> updateUserIdNotList){ + return this; + } + + /** + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserIdNotList + */ + public NewsRecordQuery updateUserIdNotList(List<Long> updateUserIdNotList){ this.updateUserIdNotList = updateUserIdNotList; return this; - } + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewId + */ + public NewsRecordQuery viewId(Long viewId){ + setViewId(viewId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鏌ョ湅浜篿d + * @param viewIdStart + */ + public NewsRecordQuery viewIdStart(Long viewIdStart){ + this.viewIdStart = viewIdStart; + return this; + } + + /** + * 璁剧疆 缁撴潫 鏌ョ湅浜篿d + * @param viewIdEnd + */ + public NewsRecordQuery viewIdEnd(Long viewIdEnd){ + this.viewIdEnd = viewIdEnd; + return this; + } + + /** + * 璁剧疆 澧炲姞 鏌ョ湅浜篿d + * @param viewIdIncrement + */ + public NewsRecordQuery viewIdIncrement(Long viewIdIncrement){ + this.viewIdIncrement = viewIdIncrement; + return this; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdList + */ + public NewsRecordQuery viewIdList(List<Long> viewIdList){ + this.viewIdList = viewIdList; + return this; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdNotList + */ + public NewsRecordQuery viewIdNotList(List<Long> viewIdNotList){ + this.viewIdNotList = viewIdNotList; + return this; + } /** - * 鑾峰彇 OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) - * @return orConditionList - */ + * 鑾峰彇 OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) + * @return orConditionList + */ public List<NewsRecordQuery> getOrConditionList(){ - return this.orConditionList; + return this.orConditionList; } /** - * 璁剧疆 OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) - * @param 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<NewsRecordQuery> orConditionList){ this.orConditionList = orConditionList; } /** - * 鑾峰彇 AND鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疉ND锛岄」鍐呭涔嬮棿鏄疧R锛屽锛�(list[0].1 or list[0].2) and (list[1].3 or list[1].4) - * @return andConditionList - */ + * 鑾峰彇 AND鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疉ND锛岄」鍐呭涔嬮棿鏄疧R锛屽锛�(list[0].1 or list[0].2) and (list[1].3 or list[1].4) + * @return andConditionList + */ public List<NewsRecordQuery> getAndConditionList(){ return this.andConditionList; } /** - * 璁剧疆 AND鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疉ND锛岄」鍐呭涔嬮棿鏄疧R锛屽锛�(list[0].1 or list[0].2) and (list[1].3 or list[1].4) - * @param 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<NewsRecordQuery> andConditionList){ this.andConditionList = andConditionList; } diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/model/StaffRecordEntity.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/model/StaffRecordEntity.java index 6f061df..a2a4077 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/model/StaffRecordEntity.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/model/StaffRecordEntity.java @@ -43,6 +43,10 @@ public class StaffRecordEntity extends StaffRecordVo { * 澶囨敞 */ private String remark; + /** + * 鏌ョ湅浜篿d + */ + private Long viewId; @Override public int hashCode() { return this.getId().hashCode(); @@ -60,11 +64,12 @@ public class StaffRecordEntity extends StaffRecordVo { } public void initAttrValue(){ - this.staffId = 0L; - this.staffName = ""; - this.viewName = ""; - this.sumViews = 0; - this.viewContent = ""; - this.remark = ""; + this.staffId = 0L; + this.staffName = ""; + this.viewName = ""; + this.sumViews = 0; + this.viewContent = ""; + this.remark = ""; + this.viewId = null; } } \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/model/StaffRecordQuery.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/model/StaffRecordQuery.java index cb707f7..dbf8b2a 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/model/StaffRecordQuery.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/model/StaffRecordQuery.java @@ -3,11 +3,11 @@ package com.mortals.xhx.module.staff.model; import java.util.List; import com.mortals.xhx.module.staff.model.StaffRecordEntity; /** -* 瀹㈡埛璁块棶璁板綍淇℃伅鏌ヨ瀵硅薄 -* -* @author zxfei -* @date 2023-09-18 -*/ + * 瀹㈡埛璁块棶璁板綍淇℃伅鏌ヨ瀵硅薄 + * + * @author zxfei + * @date 2024-11-20 + */ public class StaffRecordQuery extends StaffRecordEntity { /** 寮€濮� 搴忓彿锛屼富閿紝鑷闀� */ private Long idStart; @@ -116,6 +116,21 @@ public class StaffRecordQuery extends StaffRecordEntity { /** 缁撴潫 鏇存柊鏃堕棿 */ private String updateTimeEnd; + /** 寮€濮� 鏌ョ湅浜篿d */ + private Long viewIdStart; + + /** 缁撴潫 鏌ョ湅浜篿d */ + private Long viewIdEnd; + + /** 澧炲姞 鏌ョ湅浜篿d */ + private Long viewIdIncrement; + + /** 鏌ョ湅浜篿d鍒楄〃 */ + private List <Long> viewIdList; + + /** 鏌ョ湅浜篿d鎺掗櫎鍒楄〃 */ + private List <Long> viewIdNotList; + /** OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */ private List<StaffRecordQuery> orConditionList; @@ -125,978 +140,1113 @@ public class StaffRecordQuery extends StaffRecordEntity { public StaffRecordQuery(){} /** - * 鑾峰彇 寮€濮� 搴忓彿锛屼富閿紝鑷闀� - * @return idStart - */ + * 鑾峰彇 寮€濮� 搴忓彿锛屼富閿紝鑷闀� + * @return idStart + */ public Long getIdStart(){ return this.idStart; } /** - * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀� - * @param idStart - */ + * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀� + * @param idStart + */ public void setIdStart(Long idStart){ this.idStart = idStart; } /** - * 鑾峰彇 缁撴潫 搴忓彿锛屼富閿紝鑷闀� - * @return $idEnd - */ + * 鑾峰彇 缁撴潫 搴忓彿锛屼富閿紝鑷闀� + * @return $idEnd + */ public Long getIdEnd(){ return this.idEnd; } /** - * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀� - * @param idEnd - */ + * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀� + * @param idEnd + */ public void setIdEnd(Long idEnd){ this.idEnd = idEnd; } /** - * 鑾峰彇 澧炲姞 搴忓彿锛屼富閿紝鑷闀� - * @return idIncrement - */ + * 鑾峰彇 澧炲姞 搴忓彿锛屼富閿紝鑷闀� + * @return idIncrement + */ public Long getIdIncrement(){ return this.idIncrement; } /** - * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀� - * @param idIncrement - */ + * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀� + * @param idIncrement + */ public void setIdIncrement(Long idIncrement){ this.idIncrement = idIncrement; } /** - * 鑾峰彇 搴忓彿锛屼富閿紝鑷闀� - * @return idList - */ + * 鑾峰彇 搴忓彿锛屼富閿紝鑷闀� + * @return idList + */ public List<Long> getIdList(){ return this.idList; } /** - * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� - * @param idList - */ + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param idList + */ public void setIdList(List<Long> idList){ this.idList = idList; } /** - * 鑾峰彇 搴忓彿锛屼富閿紝鑷闀� - * @return idNotList - */ + * 鑾峰彇 搴忓彿锛屼富閿紝鑷闀� + * @return idNotList + */ public List<Long> getIdNotList(){ return this.idNotList; } /** - * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� - * @param idNotList - */ + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param idNotList + */ public void setIdNotList(List<Long> idNotList){ this.idNotList = idNotList; } /** - * 鑾峰彇 寮€濮� 琚煡鐪嬪憳宸D - * @return staffIdStart - */ + * 鑾峰彇 寮€濮� 琚煡鐪嬪憳宸D + * @return staffIdStart + */ public Long getStaffIdStart(){ return this.staffIdStart; } /** - * 璁剧疆 寮€濮� 琚煡鐪嬪憳宸D - * @param staffIdStart - */ + * 璁剧疆 寮€濮� 琚煡鐪嬪憳宸D + * @param staffIdStart + */ public void setStaffIdStart(Long staffIdStart){ this.staffIdStart = staffIdStart; } /** - * 鑾峰彇 缁撴潫 琚煡鐪嬪憳宸D - * @return $staffIdEnd - */ + * 鑾峰彇 缁撴潫 琚煡鐪嬪憳宸D + * @return $staffIdEnd + */ public Long getStaffIdEnd(){ return this.staffIdEnd; } /** - * 璁剧疆 缁撴潫 琚煡鐪嬪憳宸D - * @param staffIdEnd - */ + * 璁剧疆 缁撴潫 琚煡鐪嬪憳宸D + * @param staffIdEnd + */ public void setStaffIdEnd(Long staffIdEnd){ this.staffIdEnd = staffIdEnd; } /** - * 鑾峰彇 澧炲姞 琚煡鐪嬪憳宸D - * @return staffIdIncrement - */ + * 鑾峰彇 澧炲姞 琚煡鐪嬪憳宸D + * @return staffIdIncrement + */ public Long getStaffIdIncrement(){ return this.staffIdIncrement; } /** - * 璁剧疆 澧炲姞 琚煡鐪嬪憳宸D - * @param staffIdIncrement - */ + * 璁剧疆 澧炲姞 琚煡鐪嬪憳宸D + * @param staffIdIncrement + */ public void setStaffIdIncrement(Long staffIdIncrement){ this.staffIdIncrement = staffIdIncrement; } /** - * 鑾峰彇 琚煡鐪嬪憳宸D - * @return staffIdList - */ + * 鑾峰彇 琚煡鐪嬪憳宸D + * @return staffIdList + */ public List<Long> getStaffIdList(){ return this.staffIdList; } /** - * 璁剧疆 琚煡鐪嬪憳宸D - * @param staffIdList - */ + * 璁剧疆 琚煡鐪嬪憳宸D + * @param staffIdList + */ public void setStaffIdList(List<Long> staffIdList){ this.staffIdList = staffIdList; } /** - * 鑾峰彇 琚煡鐪嬪憳宸D - * @return staffIdNotList - */ + * 鑾峰彇 琚煡鐪嬪憳宸D + * @return staffIdNotList + */ public List<Long> getStaffIdNotList(){ return this.staffIdNotList; } /** - * 璁剧疆 琚煡鐪嬪憳宸D - * @param staffIdNotList - */ + * 璁剧疆 琚煡鐪嬪憳宸D + * @param staffIdNotList + */ public void setStaffIdNotList(List<Long> staffIdNotList){ this.staffIdNotList = staffIdNotList; } /** - * 鑾峰彇 琚煡鐪嬪憳宸ュ鍚� - * @return staffNameList - */ + * 鑾峰彇 琚煡鐪嬪憳宸ュ鍚� + * @return staffNameList + */ public List<String> getStaffNameList(){ return this.staffNameList; } /** - * 璁剧疆 琚煡鐪嬪憳宸ュ鍚� - * @param staffNameList - */ + * 璁剧疆 琚煡鐪嬪憳宸ュ鍚� + * @param staffNameList + */ public void setStaffNameList(List<String> staffNameList){ this.staffNameList = staffNameList; } /** - * 鑾峰彇 琚煡鐪嬪憳宸ュ鍚� - * @return staffNameNotList - */ + * 鑾峰彇 琚煡鐪嬪憳宸ュ鍚� + * @return staffNameNotList + */ public List<String> getStaffNameNotList(){ return this.staffNameNotList; } /** - * 璁剧疆 琚煡鐪嬪憳宸ュ鍚� - * @param staffNameNotList - */ + * 璁剧疆 琚煡鐪嬪憳宸ュ鍚� + * @param staffNameNotList + */ public void setStaffNameNotList(List<String> staffNameNotList){ this.staffNameNotList = staffNameNotList; } /** - * 鑾峰彇 鏌ョ湅浜哄悕绉� - * @return viewNameList - */ + * 鑾峰彇 鏌ョ湅浜哄悕绉� + * @return viewNameList + */ public List<String> getViewNameList(){ return this.viewNameList; } /** - * 璁剧疆 鏌ョ湅浜哄悕绉� - * @param viewNameList - */ + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewNameList + */ public void setViewNameList(List<String> viewNameList){ this.viewNameList = viewNameList; } /** - * 鑾峰彇 鏌ョ湅浜哄悕绉� - * @return viewNameNotList - */ + * 鑾峰彇 鏌ョ湅浜哄悕绉� + * @return viewNameNotList + */ public List<String> getViewNameNotList(){ return this.viewNameNotList; } /** - * 璁剧疆 鏌ョ湅浜哄悕绉� - * @param viewNameNotList - */ + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewNameNotList + */ public void setViewNameNotList(List<String> viewNameNotList){ this.viewNameNotList = viewNameNotList; } /** - * 鑾峰彇 寮€濮� 绱鏌ョ湅娆℃暟 - * @return sumViewsStart - */ + * 鑾峰彇 寮€濮� 绱鏌ョ湅娆℃暟 + * @return sumViewsStart + */ public Integer getSumViewsStart(){ return this.sumViewsStart; } /** - * 璁剧疆 寮€濮� 绱鏌ョ湅娆℃暟 - * @param sumViewsStart - */ + * 璁剧疆 寮€濮� 绱鏌ョ湅娆℃暟 + * @param sumViewsStart + */ public void setSumViewsStart(Integer sumViewsStart){ this.sumViewsStart = sumViewsStart; } /** - * 鑾峰彇 缁撴潫 绱鏌ョ湅娆℃暟 - * @return $sumViewsEnd - */ + * 鑾峰彇 缁撴潫 绱鏌ョ湅娆℃暟 + * @return $sumViewsEnd + */ public Integer getSumViewsEnd(){ return this.sumViewsEnd; } /** - * 璁剧疆 缁撴潫 绱鏌ョ湅娆℃暟 - * @param sumViewsEnd - */ + * 璁剧疆 缁撴潫 绱鏌ョ湅娆℃暟 + * @param sumViewsEnd + */ public void setSumViewsEnd(Integer sumViewsEnd){ this.sumViewsEnd = sumViewsEnd; } /** - * 鑾峰彇 澧炲姞 绱鏌ョ湅娆℃暟 - * @return sumViewsIncrement - */ + * 鑾峰彇 澧炲姞 绱鏌ョ湅娆℃暟 + * @return sumViewsIncrement + */ public Integer getSumViewsIncrement(){ return this.sumViewsIncrement; } /** - * 璁剧疆 澧炲姞 绱鏌ョ湅娆℃暟 - * @param sumViewsIncrement - */ + * 璁剧疆 澧炲姞 绱鏌ョ湅娆℃暟 + * @param sumViewsIncrement + */ public void setSumViewsIncrement(Integer sumViewsIncrement){ this.sumViewsIncrement = sumViewsIncrement; } /** - * 鑾峰彇 绱鏌ョ湅娆℃暟 - * @return sumViewsList - */ + * 鑾峰彇 绱鏌ョ湅娆℃暟 + * @return sumViewsList + */ public List<Integer> getSumViewsList(){ return this.sumViewsList; } /** - * 璁剧疆 绱鏌ョ湅娆℃暟 - * @param sumViewsList - */ + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsList + */ public void setSumViewsList(List<Integer> sumViewsList){ this.sumViewsList = sumViewsList; } /** - * 鑾峰彇 绱鏌ョ湅娆℃暟 - * @return sumViewsNotList - */ + * 鑾峰彇 绱鏌ョ湅娆℃暟 + * @return sumViewsNotList + */ public List<Integer> getSumViewsNotList(){ return this.sumViewsNotList; } /** - * 璁剧疆 绱鏌ョ湅娆℃暟 - * @param sumViewsNotList - */ + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsNotList + */ public void setSumViewsNotList(List<Integer> sumViewsNotList){ this.sumViewsNotList = sumViewsNotList; } /** - * 鑾峰彇 璁块棶鍐呭 - * @return viewContentList - */ + * 鑾峰彇 璁块棶鍐呭 + * @return viewContentList + */ public List<String> getViewContentList(){ return this.viewContentList; } /** - * 璁剧疆 璁块棶鍐呭 - * @param viewContentList - */ + * 璁剧疆 璁块棶鍐呭 + * @param viewContentList + */ public void setViewContentList(List<String> viewContentList){ this.viewContentList = viewContentList; } /** - * 鑾峰彇 璁块棶鍐呭 - * @return viewContentNotList - */ + * 鑾峰彇 璁块棶鍐呭 + * @return viewContentNotList + */ public List<String> getViewContentNotList(){ return this.viewContentNotList; } /** - * 璁剧疆 璁块棶鍐呭 - * @param viewContentNotList - */ + * 璁剧疆 璁块棶鍐呭 + * @param viewContentNotList + */ public void setViewContentNotList(List<String> viewContentNotList){ this.viewContentNotList = viewContentNotList; } /** - * 鑾峰彇 澶囨敞 - * @return remarkList - */ + * 鑾峰彇 澶囨敞 + * @return remarkList + */ public List<String> getRemarkList(){ return this.remarkList; } /** - * 璁剧疆 澶囨敞 - * @param remarkList - */ + * 璁剧疆 澶囨敞 + * @param remarkList + */ public void setRemarkList(List<String> remarkList){ this.remarkList = remarkList; } /** - * 鑾峰彇 澶囨敞 - * @return remarkNotList - */ + * 鑾峰彇 澶囨敞 + * @return remarkNotList + */ public List<String> getRemarkNotList(){ return this.remarkNotList; } /** - * 璁剧疆 澶囨敞 - * @param remarkNotList - */ + * 璁剧疆 澶囨敞 + * @param remarkNotList + */ public void setRemarkNotList(List<String> remarkNotList){ this.remarkNotList = remarkNotList; } /** - * 鑾峰彇 寮€濮� 鍒涘缓鐢ㄦ埛 - * @return createUserIdStart - */ + * 鑾峰彇 寮€濮� 鍒涘缓鐢ㄦ埛 + * @return createUserIdStart + */ public Long getCreateUserIdStart(){ return this.createUserIdStart; } /** - * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛 - * @param createUserIdStart - */ + * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛 + * @param createUserIdStart + */ public void setCreateUserIdStart(Long createUserIdStart){ this.createUserIdStart = createUserIdStart; } /** - * 鑾峰彇 缁撴潫 鍒涘缓鐢ㄦ埛 - * @return $createUserIdEnd - */ + * 鑾峰彇 缁撴潫 鍒涘缓鐢ㄦ埛 + * @return $createUserIdEnd + */ public Long getCreateUserIdEnd(){ return this.createUserIdEnd; } /** - * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛 - * @param createUserIdEnd - */ + * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛 + * @param createUserIdEnd + */ public void setCreateUserIdEnd(Long createUserIdEnd){ this.createUserIdEnd = createUserIdEnd; } /** - * 鑾峰彇 澧炲姞 鍒涘缓鐢ㄦ埛 - * @return createUserIdIncrement - */ + * 鑾峰彇 澧炲姞 鍒涘缓鐢ㄦ埛 + * @return createUserIdIncrement + */ public Long getCreateUserIdIncrement(){ return this.createUserIdIncrement; } /** - * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛 - * @param createUserIdIncrement - */ + * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛 + * @param createUserIdIncrement + */ public void setCreateUserIdIncrement(Long createUserIdIncrement){ this.createUserIdIncrement = createUserIdIncrement; } /** - * 鑾峰彇 鍒涘缓鐢ㄦ埛 - * @return createUserIdList - */ + * 鑾峰彇 鍒涘缓鐢ㄦ埛 + * @return createUserIdList + */ public List<Long> getCreateUserIdList(){ return this.createUserIdList; } /** - * 璁剧疆 鍒涘缓鐢ㄦ埛 - * @param createUserIdList - */ + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserIdList + */ public void setCreateUserIdList(List<Long> createUserIdList){ this.createUserIdList = createUserIdList; } /** - * 鑾峰彇 鍒涘缓鐢ㄦ埛 - * @return createUserIdNotList - */ + * 鑾峰彇 鍒涘缓鐢ㄦ埛 + * @return createUserIdNotList + */ public List<Long> getCreateUserIdNotList(){ return this.createUserIdNotList; } /** - * 璁剧疆 鍒涘缓鐢ㄦ埛 - * @param createUserIdNotList - */ + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserIdNotList + */ public void setCreateUserIdNotList(List<Long> createUserIdNotList){ this.createUserIdNotList = createUserIdNotList; } /** - * 鑾峰彇 寮€濮� 鍒涘缓鏃堕棿 - * @return createTimeStart - */ + * 鑾峰彇 寮€濮� 鍒涘缓鏃堕棿 + * @return createTimeStart + */ public String getCreateTimeStart(){ return this.createTimeStart; } /** - * 璁剧疆 寮€濮� 鍒涘缓鏃堕棿 - * @param createTimeStart - */ + * 璁剧疆 寮€濮� 鍒涘缓鏃堕棿 + * @param createTimeStart + */ public void setCreateTimeStart(String createTimeStart){ this.createTimeStart = createTimeStart; } /** - * 鑾峰彇 缁撴潫 鍒涘缓鏃堕棿 - * @return createTimeEnd - */ + * 鑾峰彇 缁撴潫 鍒涘缓鏃堕棿 + * @return createTimeEnd + */ public String getCreateTimeEnd(){ return this.createTimeEnd; } /** - * 璁剧疆 缁撴潫 鍒涘缓鏃堕棿 - * @param createTimeEnd - */ + * 璁剧疆 缁撴潫 鍒涘缓鏃堕棿 + * @param createTimeEnd + */ public void setCreateTimeEnd(String createTimeEnd){ this.createTimeEnd = createTimeEnd; } /** - * 鑾峰彇 寮€濮� 鏇存柊鐢ㄦ埛 - * @return updateUserIdStart - */ + * 鑾峰彇 寮€濮� 鏇存柊鐢ㄦ埛 + * @return updateUserIdStart + */ public Long getUpdateUserIdStart(){ return this.updateUserIdStart; } /** - * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛 - * @param updateUserIdStart - */ + * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛 + * @param updateUserIdStart + */ public void setUpdateUserIdStart(Long updateUserIdStart){ this.updateUserIdStart = updateUserIdStart; } /** - * 鑾峰彇 缁撴潫 鏇存柊鐢ㄦ埛 - * @return $updateUserIdEnd - */ + * 鑾峰彇 缁撴潫 鏇存柊鐢ㄦ埛 + * @return $updateUserIdEnd + */ public Long getUpdateUserIdEnd(){ return this.updateUserIdEnd; } /** - * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛 - * @param updateUserIdEnd - */ + * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛 + * @param updateUserIdEnd + */ public void setUpdateUserIdEnd(Long updateUserIdEnd){ this.updateUserIdEnd = updateUserIdEnd; } /** - * 鑾峰彇 澧炲姞 鏇存柊鐢ㄦ埛 - * @return updateUserIdIncrement - */ + * 鑾峰彇 澧炲姞 鏇存柊鐢ㄦ埛 + * @return updateUserIdIncrement + */ public Long getUpdateUserIdIncrement(){ return this.updateUserIdIncrement; } /** - * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛 - * @param updateUserIdIncrement - */ + * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛 + * @param updateUserIdIncrement + */ public void setUpdateUserIdIncrement(Long updateUserIdIncrement){ this.updateUserIdIncrement = updateUserIdIncrement; } /** - * 鑾峰彇 鏇存柊鐢ㄦ埛 - * @return updateUserIdList - */ + * 鑾峰彇 鏇存柊鐢ㄦ埛 + * @return updateUserIdList + */ public List<Long> getUpdateUserIdList(){ return this.updateUserIdList; } /** - * 璁剧疆 鏇存柊鐢ㄦ埛 - * @param updateUserIdList - */ + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserIdList + */ public void setUpdateUserIdList(List<Long> updateUserIdList){ this.updateUserIdList = updateUserIdList; } /** - * 鑾峰彇 鏇存柊鐢ㄦ埛 - * @return updateUserIdNotList - */ + * 鑾峰彇 鏇存柊鐢ㄦ埛 + * @return updateUserIdNotList + */ public List<Long> getUpdateUserIdNotList(){ return this.updateUserIdNotList; } /** - * 璁剧疆 鏇存柊鐢ㄦ埛 - * @param updateUserIdNotList - */ + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserIdNotList + */ public void setUpdateUserIdNotList(List<Long> updateUserIdNotList){ this.updateUserIdNotList = updateUserIdNotList; } /** - * 鑾峰彇 寮€濮� 鏇存柊鏃堕棿 - * @return updateTimeStart - */ + * 鑾峰彇 寮€濮� 鏇存柊鏃堕棿 + * @return updateTimeStart + */ public String getUpdateTimeStart(){ return this.updateTimeStart; } /** - * 璁剧疆 寮€濮� 鏇存柊鏃堕棿 - * @param updateTimeStart - */ + * 璁剧疆 寮€濮� 鏇存柊鏃堕棿 + * @param updateTimeStart + */ public void setUpdateTimeStart(String updateTimeStart){ this.updateTimeStart = updateTimeStart; } /** - * 鑾峰彇 缁撴潫 鏇存柊鏃堕棿 - * @return updateTimeEnd - */ + * 鑾峰彇 缁撴潫 鏇存柊鏃堕棿 + * @return updateTimeEnd + */ public String getUpdateTimeEnd(){ return this.updateTimeEnd; } /** - * 璁剧疆 缁撴潫 鏇存柊鏃堕棿 - * @param updateTimeEnd - */ + * 璁剧疆 缁撴潫 鏇存柊鏃堕棿 + * @param updateTimeEnd + */ public void setUpdateTimeEnd(String updateTimeEnd){ this.updateTimeEnd = updateTimeEnd; } /** - * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� - * @param id - */ + * 鑾峰彇 寮€濮� 鏌ョ湅浜篿d + * @return viewIdStart + */ + public Long getViewIdStart(){ + return this.viewIdStart; + } + + /** + * 璁剧疆 寮€濮� 鏌ョ湅浜篿d + * @param viewIdStart + */ + public void setViewIdStart(Long viewIdStart){ + this.viewIdStart = viewIdStart; + } + + /** + * 鑾峰彇 缁撴潫 鏌ョ湅浜篿d + * @return $viewIdEnd + */ + public Long getViewIdEnd(){ + return this.viewIdEnd; + } + + /** + * 璁剧疆 缁撴潫 鏌ョ湅浜篿d + * @param viewIdEnd + */ + public void setViewIdEnd(Long viewIdEnd){ + this.viewIdEnd = viewIdEnd; + } + + /** + * 鑾峰彇 澧炲姞 鏌ョ湅浜篿d + * @return viewIdIncrement + */ + public Long getViewIdIncrement(){ + return this.viewIdIncrement; + } + + /** + * 璁剧疆 澧炲姞 鏌ョ湅浜篿d + * @param viewIdIncrement + */ + public void setViewIdIncrement(Long viewIdIncrement){ + this.viewIdIncrement = viewIdIncrement; + } + + /** + * 鑾峰彇 鏌ョ湅浜篿d + * @return viewIdList + */ + public List<Long> getViewIdList(){ + return this.viewIdList; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdList + */ + public void setViewIdList(List<Long> viewIdList){ + this.viewIdList = viewIdList; + } + + /** + * 鑾峰彇 鏌ョ湅浜篿d + * @return viewIdNotList + */ + public List<Long> getViewIdNotList(){ + return this.viewIdNotList; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdNotList + */ + public void setViewIdNotList(List<Long> viewIdNotList){ + this.viewIdNotList = viewIdNotList; + } + + + /** + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param id + */ public StaffRecordQuery id(Long id){ - setId(id); - return this; - } - - /** - * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀� - * @param idStart - */ + setId(id); + return this; + } + + /** + * 璁剧疆 寮€濮� 搴忓彿锛屼富閿紝鑷闀� + * @param idStart + */ public StaffRecordQuery idStart(Long idStart){ - this.idStart = idStart; - return this; + this.idStart = idStart; + return this; } /** - * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀� - * @param idEnd - */ + * 璁剧疆 缁撴潫 搴忓彿锛屼富閿紝鑷闀� + * @param idEnd + */ public StaffRecordQuery idEnd(Long idEnd){ - this.idEnd = idEnd; - return this; + this.idEnd = idEnd; + return this; } /** - * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀� - * @param idIncrement - */ + * 璁剧疆 澧炲姞 搴忓彿锛屼富閿紝鑷闀� + * @param idIncrement + */ public StaffRecordQuery idIncrement(Long idIncrement){ - this.idIncrement = idIncrement; - return this; + this.idIncrement = idIncrement; + return this; } /** - * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� - * @param idList - */ + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param idList + */ public StaffRecordQuery idList(List<Long> idList){ this.idList = idList; - return this; - } - - /** - * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� - * @param idNotList - */ - public StaffRecordQuery idNotList(List<Long> idNotList){ + return this; + } + + /** + * 璁剧疆 搴忓彿锛屼富閿紝鑷闀� + * @param idNotList + */ + public StaffRecordQuery idNotList(List<Long> idNotList){ this.idNotList = idNotList; return this; - } + } /** - * 璁剧疆 琚煡鐪嬪憳宸D - * @param staffId - */ + * 璁剧疆 琚煡鐪嬪憳宸D + * @param staffId + */ public StaffRecordQuery staffId(Long staffId){ - setStaffId(staffId); - return this; - } - - /** - * 璁剧疆 寮€濮� 琚煡鐪嬪憳宸D - * @param staffIdStart - */ + setStaffId(staffId); + return this; + } + + /** + * 璁剧疆 寮€濮� 琚煡鐪嬪憳宸D + * @param staffIdStart + */ public StaffRecordQuery staffIdStart(Long staffIdStart){ - this.staffIdStart = staffIdStart; - return this; + this.staffIdStart = staffIdStart; + return this; } /** - * 璁剧疆 缁撴潫 琚煡鐪嬪憳宸D - * @param staffIdEnd - */ + * 璁剧疆 缁撴潫 琚煡鐪嬪憳宸D + * @param staffIdEnd + */ public StaffRecordQuery staffIdEnd(Long staffIdEnd){ - this.staffIdEnd = staffIdEnd; - return this; + this.staffIdEnd = staffIdEnd; + return this; } /** - * 璁剧疆 澧炲姞 琚煡鐪嬪憳宸D - * @param staffIdIncrement - */ + * 璁剧疆 澧炲姞 琚煡鐪嬪憳宸D + * @param staffIdIncrement + */ public StaffRecordQuery staffIdIncrement(Long staffIdIncrement){ - this.staffIdIncrement = staffIdIncrement; - return this; + this.staffIdIncrement = staffIdIncrement; + return this; } /** - * 璁剧疆 琚煡鐪嬪憳宸D - * @param staffIdList - */ + * 璁剧疆 琚煡鐪嬪憳宸D + * @param staffIdList + */ public StaffRecordQuery staffIdList(List<Long> staffIdList){ this.staffIdList = staffIdList; - return this; - } - - /** - * 璁剧疆 琚煡鐪嬪憳宸D - * @param staffIdNotList - */ - public StaffRecordQuery staffIdNotList(List<Long> staffIdNotList){ + return this; + } + + /** + * 璁剧疆 琚煡鐪嬪憳宸D + * @param staffIdNotList + */ + public StaffRecordQuery staffIdNotList(List<Long> staffIdNotList){ this.staffIdNotList = staffIdNotList; return this; - } + } - /** - * 璁剧疆 琚煡鐪嬪憳宸ュ鍚� - * @param staffName - */ + /** + * 璁剧疆 琚煡鐪嬪憳宸ュ鍚� + * @param staffName + */ public StaffRecordQuery staffName(String staffName){ setStaffName(staffName); - return this; + return this; } /** - * 璁剧疆 琚煡鐪嬪憳宸ュ鍚� - * @param staffNameList - */ + * 璁剧疆 琚煡鐪嬪憳宸ュ鍚� + * @param staffNameList + */ public StaffRecordQuery staffNameList(List<String> staffNameList){ this.staffNameList = staffNameList; - return this; + return this; } - /** - * 璁剧疆 鏌ョ湅浜哄悕绉� - * @param viewName - */ + /** + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewName + */ public StaffRecordQuery viewName(String viewName){ setViewName(viewName); - return this; + return this; } /** - * 璁剧疆 鏌ョ湅浜哄悕绉� - * @param viewNameList - */ + * 璁剧疆 鏌ョ湅浜哄悕绉� + * @param viewNameList + */ public StaffRecordQuery viewNameList(List<String> viewNameList){ this.viewNameList = viewNameList; - return this; + return this; } /** - * 璁剧疆 绱鏌ョ湅娆℃暟 - * @param sumViews - */ + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViews + */ public StaffRecordQuery sumViews(Integer sumViews){ - setSumViews(sumViews); - return this; - } - - /** - * 璁剧疆 寮€濮� 绱鏌ョ湅娆℃暟 - * @param sumViewsStart - */ + setSumViews(sumViews); + return this; + } + + /** + * 璁剧疆 寮€濮� 绱鏌ョ湅娆℃暟 + * @param sumViewsStart + */ public StaffRecordQuery sumViewsStart(Integer sumViewsStart){ - this.sumViewsStart = sumViewsStart; - return this; + this.sumViewsStart = sumViewsStart; + return this; } /** - * 璁剧疆 缁撴潫 绱鏌ョ湅娆℃暟 - * @param sumViewsEnd - */ + * 璁剧疆 缁撴潫 绱鏌ョ湅娆℃暟 + * @param sumViewsEnd + */ public StaffRecordQuery sumViewsEnd(Integer sumViewsEnd){ - this.sumViewsEnd = sumViewsEnd; - return this; + this.sumViewsEnd = sumViewsEnd; + return this; } /** - * 璁剧疆 澧炲姞 绱鏌ョ湅娆℃暟 - * @param sumViewsIncrement - */ + * 璁剧疆 澧炲姞 绱鏌ョ湅娆℃暟 + * @param sumViewsIncrement + */ public StaffRecordQuery sumViewsIncrement(Integer sumViewsIncrement){ - this.sumViewsIncrement = sumViewsIncrement; - return this; + this.sumViewsIncrement = sumViewsIncrement; + return this; } /** - * 璁剧疆 绱鏌ョ湅娆℃暟 - * @param sumViewsList - */ + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsList + */ public StaffRecordQuery sumViewsList(List<Integer> sumViewsList){ this.sumViewsList = sumViewsList; - return this; - } - - /** - * 璁剧疆 绱鏌ョ湅娆℃暟 - * @param sumViewsNotList - */ - public StaffRecordQuery sumViewsNotList(List<Integer> sumViewsNotList){ + return this; + } + + /** + * 璁剧疆 绱鏌ョ湅娆℃暟 + * @param sumViewsNotList + */ + public StaffRecordQuery sumViewsNotList(List<Integer> sumViewsNotList){ this.sumViewsNotList = sumViewsNotList; return this; - } + } - /** - * 璁剧疆 璁块棶鍐呭 - * @param viewContent - */ + /** + * 璁剧疆 璁块棶鍐呭 + * @param viewContent + */ public StaffRecordQuery viewContent(String viewContent){ setViewContent(viewContent); - return this; + return this; } /** - * 璁剧疆 璁块棶鍐呭 - * @param viewContentList - */ + * 璁剧疆 璁块棶鍐呭 + * @param viewContentList + */ public StaffRecordQuery viewContentList(List<String> viewContentList){ this.viewContentList = viewContentList; - return this; + return this; } - /** - * 璁剧疆 澶囨敞 - * @param remark - */ + /** + * 璁剧疆 澶囨敞 + * @param remark + */ public StaffRecordQuery remark(String remark){ setRemark(remark); - return this; + return this; } /** - * 璁剧疆 澶囨敞 - * @param remarkList - */ + * 璁剧疆 澶囨敞 + * @param remarkList + */ public StaffRecordQuery remarkList(List<String> remarkList){ this.remarkList = remarkList; - return this; + return this; } /** - * 璁剧疆 鍒涘缓鐢ㄦ埛 - * @param createUserId - */ + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserId + */ public StaffRecordQuery createUserId(Long createUserId){ - setCreateUserId(createUserId); - return this; - } - - /** - * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛 - * @param createUserIdStart - */ + setCreateUserId(createUserId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛 + * @param createUserIdStart + */ public StaffRecordQuery createUserIdStart(Long createUserIdStart){ - this.createUserIdStart = createUserIdStart; - return this; + this.createUserIdStart = createUserIdStart; + return this; } /** - * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛 - * @param createUserIdEnd - */ + * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛 + * @param createUserIdEnd + */ public StaffRecordQuery createUserIdEnd(Long createUserIdEnd){ - this.createUserIdEnd = createUserIdEnd; - return this; + this.createUserIdEnd = createUserIdEnd; + return this; } /** - * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛 - * @param createUserIdIncrement - */ + * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛 + * @param createUserIdIncrement + */ public StaffRecordQuery createUserIdIncrement(Long createUserIdIncrement){ - this.createUserIdIncrement = createUserIdIncrement; - return this; + this.createUserIdIncrement = createUserIdIncrement; + return this; } /** - * 璁剧疆 鍒涘缓鐢ㄦ埛 - * @param createUserIdList - */ + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserIdList + */ public StaffRecordQuery createUserIdList(List<Long> createUserIdList){ this.createUserIdList = createUserIdList; - return this; - } - - /** - * 璁剧疆 鍒涘缓鐢ㄦ埛 - * @param createUserIdNotList - */ - public StaffRecordQuery createUserIdNotList(List<Long> createUserIdNotList){ + return this; + } + + /** + * 璁剧疆 鍒涘缓鐢ㄦ埛 + * @param createUserIdNotList + */ + public StaffRecordQuery createUserIdNotList(List<Long> createUserIdNotList){ this.createUserIdNotList = createUserIdNotList; return this; - } + } /** - * 璁剧疆 鏇存柊鐢ㄦ埛 - * @param updateUserId - */ + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserId + */ public StaffRecordQuery updateUserId(Long updateUserId){ - setUpdateUserId(updateUserId); - return this; - } - - /** - * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛 - * @param updateUserIdStart - */ + setUpdateUserId(updateUserId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鏇存柊鐢ㄦ埛 + * @param updateUserIdStart + */ public StaffRecordQuery updateUserIdStart(Long updateUserIdStart){ - this.updateUserIdStart = updateUserIdStart; - return this; + this.updateUserIdStart = updateUserIdStart; + return this; } /** - * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛 - * @param updateUserIdEnd - */ + * 璁剧疆 缁撴潫 鏇存柊鐢ㄦ埛 + * @param updateUserIdEnd + */ public StaffRecordQuery updateUserIdEnd(Long updateUserIdEnd){ - this.updateUserIdEnd = updateUserIdEnd; - return this; + this.updateUserIdEnd = updateUserIdEnd; + return this; } /** - * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛 - * @param updateUserIdIncrement - */ + * 璁剧疆 澧炲姞 鏇存柊鐢ㄦ埛 + * @param updateUserIdIncrement + */ public StaffRecordQuery updateUserIdIncrement(Long updateUserIdIncrement){ - this.updateUserIdIncrement = updateUserIdIncrement; - return this; + this.updateUserIdIncrement = updateUserIdIncrement; + return this; } /** - * 璁剧疆 鏇存柊鐢ㄦ埛 - * @param updateUserIdList - */ + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserIdList + */ public StaffRecordQuery updateUserIdList(List<Long> updateUserIdList){ this.updateUserIdList = updateUserIdList; - return this; - } - - /** - * 璁剧疆 鏇存柊鐢ㄦ埛 - * @param updateUserIdNotList - */ - public StaffRecordQuery updateUserIdNotList(List<Long> updateUserIdNotList){ + return this; + } + + /** + * 璁剧疆 鏇存柊鐢ㄦ埛 + * @param updateUserIdNotList + */ + public StaffRecordQuery updateUserIdNotList(List<Long> updateUserIdNotList){ this.updateUserIdNotList = updateUserIdNotList; return this; - } + } + + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewId + */ + public StaffRecordQuery viewId(Long viewId){ + setViewId(viewId); + return this; + } + + /** + * 璁剧疆 寮€濮� 鏌ョ湅浜篿d + * @param viewIdStart + */ + public StaffRecordQuery viewIdStart(Long viewIdStart){ + this.viewIdStart = viewIdStart; + return this; + } + + /** + * 璁剧疆 缁撴潫 鏌ョ湅浜篿d + * @param viewIdEnd + */ + public StaffRecordQuery viewIdEnd(Long viewIdEnd){ + this.viewIdEnd = viewIdEnd; + return this; + } + + /** + * 璁剧疆 澧炲姞 鏌ョ湅浜篿d + * @param viewIdIncrement + */ + public StaffRecordQuery viewIdIncrement(Long viewIdIncrement){ + this.viewIdIncrement = viewIdIncrement; + return this; + } + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdList + */ + public StaffRecordQuery viewIdList(List<Long> viewIdList){ + this.viewIdList = viewIdList; + return this; + } + + /** + * 璁剧疆 鏌ョ湅浜篿d + * @param viewIdNotList + */ + public StaffRecordQuery viewIdNotList(List<Long> viewIdNotList){ + this.viewIdNotList = viewIdNotList; + return this; + } /** - * 鑾峰彇 OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) - * @return orConditionList - */ + * 鑾峰彇 OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) + * @return orConditionList + */ public List<StaffRecordQuery> getOrConditionList(){ - return this.orConditionList; + return this.orConditionList; } /** - * 璁剧疆 OR鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疧R锛岄」鍐呭涔嬮棿鏄疉ND锛屽锛�(list[0].1 and list[0].2) or (list[1].3 and list[1].4) - * @param 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<StaffRecordQuery> orConditionList){ this.orConditionList = orConditionList; } /** - * 鑾峰彇 AND鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疉ND锛岄」鍐呭涔嬮棿鏄疧R锛屽锛�(list[0].1 or list[0].2) and (list[1].3 or list[1].4) - * @return andConditionList - */ + * 鑾峰彇 AND鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疉ND锛岄」鍐呭涔嬮棿鏄疧R锛屽锛�(list[0].1 or list[0].2) and (list[1].3 or list[1].4) + * @return andConditionList + */ public List<StaffRecordQuery> getAndConditionList(){ return this.andConditionList; } /** - * 璁剧疆 AND鏉′欢闆嗗悎锛屽垪琛ㄩ」涔嬮棿鏄疉ND锛岄」鍐呭涔嬮棿鏄疧R锛屽锛�(list[0].1 or list[0].2) and (list[1].3 or list[1].4) - * @param 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<StaffRecordQuery> andConditionList){ this.andConditionList = andConditionList; } diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java index b87fd08..0c598d3 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java @@ -20,4 +20,9 @@ public interface StaffService extends ICRUDCacheService<StaffEntity,Long> { Rest<Void> leave(StaffEntity staffEntity, Context context); + /** + * 鏇存柊鍚嶇墖璁块棶淇℃伅 + * @param id + */ + void saveView(Long id); } \ No newline at end of file diff --git a/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java b/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java index b449736..18be1a6 100644 --- a/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java +++ b/enterprise-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java @@ -21,6 +21,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.util.ObjectUtils; import java.util.Date; +import java.util.HashMap; +import java.util.Map; /** * StaffService @@ -58,4 +60,16 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta } return Rest.ok(); } + + @Override + public void saveView(Long id) { + if(id!=null){ + Map condition = new HashMap(); + condition.put("id",id); + Map data = new HashMap(); + data.put("sumViewsIncrement",1); + data.put("viewsByDayIncrement",1); + this.dao.update(data,condition); + } + } } \ No newline at end of file diff --git a/enterprise-manager/src/main/resources/sqlmap/module/bussinesscard/BussinesscardMapper.xml b/enterprise-manager/src/main/resources/sqlmap/module/bussinesscard/BussinesscardMapper.xml index fb8d72d..280e407 100644 --- a/enterprise-manager/src/main/resources/sqlmap/module/bussinesscard/BussinesscardMapper.xml +++ b/enterprise-manager/src/main/resources/sqlmap/module/bussinesscard/BussinesscardMapper.xml @@ -31,6 +31,7 @@ <result property="updateUserId" column="updateUserId" /> <result property="updateTime" column="updateTime" /> <result property="setting" column="setting" /> + <result property="companyAdress" column="companyAdress" /> </resultMap> <!-- 琛ㄦ墍鏈夊垪 --> @@ -114,23 +115,26 @@ <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('setting') or colPickMode == 1 and data.containsKey('setting')))"> a.setting, </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('companyAdress') or colPickMode == 1 and data.containsKey('companyAdress')))"> + a.companyAdress, + </if> </trim> </sql> <!-- 鏂板 鍖哄垎涓婚敭鑷鍔犺繕鏄笟鍔℃彃鍏� --> <insert id="insert" parameterType="BussinesscardEntity" useGeneratedKeys="true" keyProperty="id"> insert into mortals_xhx_bussinesscard - (staffId,staffName,name,gender,birthday,photoPath,email,phoneNumber,idCard,companyId,companyName,positionId,positionName,bio,socialMedia,qRCode,remark,sumViews,viewsByDay,sendBusinessCardTimes,createUserId,createTime,updateUserId,updateTime,setting) + (staffId,staffName,name,gender,birthday,photoPath,email,phoneNumber,idCard,companyId,companyName,positionId,positionName,bio,socialMedia,qRCode,remark,sumViews,viewsByDay,sendBusinessCardTimes,createUserId,createTime,updateUserId,updateTime,setting,companyAdress) VALUES - (#{staffId},#{staffName},#{name},#{gender},#{birthday},#{photoPath},#{email},#{phoneNumber},#{idCard},#{companyId},#{companyName},#{positionId},#{positionName},#{bio},#{socialMedia},#{qRCode},#{remark},#{sumViews},#{viewsByDay},#{sendBusinessCardTimes},#{createUserId},#{createTime},#{updateUserId},#{updateTime},#{setting}) + (#{staffId},#{staffName},#{name},#{gender},#{birthday},#{photoPath},#{email},#{phoneNumber},#{idCard},#{companyId},#{companyName},#{positionId},#{positionName},#{bio},#{socialMedia},#{qRCode},#{remark},#{sumViews},#{viewsByDay},#{sendBusinessCardTimes},#{createUserId},#{createTime},#{updateUserId},#{updateTime},#{setting},#{companyAdress}) </insert> <!-- 鎵归噺鏂板 --> <insert id="insertBatch" parameterType="paramDto"> insert into mortals_xhx_bussinesscard - (staffId,staffName,name,gender,birthday,photoPath,email,phoneNumber,idCard,companyId,companyName,positionId,positionName,bio,socialMedia,qRCode,remark,sumViews,viewsByDay,sendBusinessCardTimes,createUserId,createTime,updateUserId,updateTime,setting) + (staffId,staffName,name,gender,birthday,photoPath,email,phoneNumber,idCard,companyId,companyName,positionId,positionName,bio,socialMedia,qRCode,remark,sumViews,viewsByDay,sendBusinessCardTimes,createUserId,createTime,updateUserId,updateTime,setting,companyAdress) VALUES <foreach collection="data.dataList" item="item" index="index" separator="," > - (#{item.staffId},#{item.staffName},#{item.name},#{item.gender},#{item.birthday},#{item.photoPath},#{item.email},#{item.phoneNumber},#{item.idCard},#{item.companyId},#{item.companyName},#{item.positionId},#{item.positionName},#{item.bio},#{item.socialMedia},#{item.qRCode},#{item.remark},#{item.sumViews},#{item.viewsByDay},#{item.sendBusinessCardTimes},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.setting}) + (#{item.staffId},#{item.staffName},#{item.name},#{item.gender},#{item.birthday},#{item.photoPath},#{item.email},#{item.phoneNumber},#{item.idCard},#{item.companyId},#{item.companyName},#{item.positionId},#{item.positionName},#{item.bio},#{item.socialMedia},#{item.qRCode},#{item.remark},#{item.sumViews},#{item.viewsByDay},#{item.sendBusinessCardTimes},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.setting},#{item.companyAdress}) </foreach> </insert> @@ -176,6 +180,9 @@ <if test="(colPickMode==0 and data.containsKey('companyId')) or (colPickMode==1 and !data.containsKey('companyId'))"> a.companyId=#{data.companyId}, </if> + <if test="(colPickMode==0 and data.containsKey('companyIdIncrement')) or (colPickMode==1 and !data.containsKey('companyIdIncrement'))"> + a.companyId=ifnull(a.companyId,0) + #{data.companyIdIncrement}, + </if> <if test="(colPickMode==0 and data.containsKey('companyName')) or (colPickMode==1 and !data.containsKey('companyName'))"> a.companyName=#{data.companyName}, </if> @@ -239,6 +246,9 @@ <if test="(colPickMode==0 and data.containsKey('setting')) or (colPickMode==1 and !data.containsKey('setting'))"> a.setting=#{data.setting}, </if> + <if test="(colPickMode==0 and data.containsKey('companyAdress')) or (colPickMode==1 and !data.containsKey('companyAdress'))"> + a.companyAdress=#{data.companyAdress}, + </if> </trim> <trim suffixOverrides="where" suffix=""> where @@ -326,9 +336,14 @@ </trim> <trim prefix="companyId=(case" suffix="ELSE companyId end),"> <foreach collection="data.dataList" item="item" index="index" separator="" > - <if test="(colPickMode==0 and item.containsKey('companyId')) or (colPickMode==1 and !item.containsKey('companyId'))"> - when a.id=#{item.id} then #{item.companyId} - </if> + <choose> + <when test="(colPickMode==0 and item.containsKey('companyId')) or (colPickMode==1 and !item.containsKey('companyId'))"> + when a.id=#{item.id} then #{item.companyId} + </when> + <when test="(colPickMode==0 and item.containsKey('companyIdIncrement')) or (colPickMode==1 and !item.containsKey('companyIdIncrement'))"> + when a.id=#{item.id} then ifnull(a.companyId,0) + #{item.companyIdIncrement} + </when> + </choose> </foreach> </trim> <trim prefix="companyName=(case" suffix="ELSE companyName end),"> @@ -466,6 +481,13 @@ </if> </foreach> </trim> + <trim prefix="companyAdress=(case" suffix="ELSE companyAdress end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('companyAdress')) or (colPickMode==1 and !item.containsKey('companyAdress'))"> + when a.id=#{item.id} then #{item.companyAdress} + </if> + </foreach> + </trim> </trim> where id in <foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")"> @@ -808,10 +830,9 @@ #{item} </foreach> </if> - <if test="conditionParamRef.containsKey('companyId')"> - <if test="conditionParamRef.companyId != null and conditionParamRef.companyId != ''"> - ${_conditionType_} a.companyId like #{${_conditionParam_}.companyId} + <if test="conditionParamRef.companyId != null "> + ${_conditionType_} a.companyId = #{${_conditionParam_}.companyId} </if> <if test="conditionParamRef.companyId == null"> ${_conditionType_} a.companyId is null @@ -829,6 +850,13 @@ #{item} </foreach> </if> + <if test="conditionParamRef.containsKey('companyIdStart') and conditionParamRef.companyIdStart != null"> + ${_conditionType_} a.companyId <![CDATA[ >= ]]> #{${_conditionParam_}.companyIdStart} + </if> + <if test="conditionParamRef.containsKey('companyIdEnd') and conditionParamRef.companyIdEnd != null"> + ${_conditionType_} a.companyId <![CDATA[ <= ]]> #{${_conditionParam_}.companyIdEnd} + </if> + <if test="conditionParamRef.containsKey('companyName')"> <if test="conditionParamRef.companyName != null and conditionParamRef.companyName != ''"> @@ -1168,6 +1196,27 @@ #{item} </foreach> </if> + + <if test="conditionParamRef.containsKey('companyAdress')"> + <if test="conditionParamRef.companyAdress != null and conditionParamRef.companyAdress != ''"> + ${_conditionType_} a.companyAdress like #{${_conditionParam_}.companyAdress} + </if> + <if test="conditionParamRef.companyAdress == null"> + ${_conditionType_} a.companyAdress is null + </if> + </if> + <if test="conditionParamRef.containsKey('companyAdressList') and conditionParamRef.companyAdressList.size() > 0"> + ${_conditionType_} a.companyAdress in + <foreach collection="conditionParamRef.companyAdressList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('companyAdressNotList') and conditionParamRef.companyAdressNotList.size() > 0"> + ${_conditionType_} a.companyAdress not in + <foreach collection="conditionParamRef.companyAdressNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> </sql> <sql id="_orderCols_"> <if test="orderColList != null and !orderColList.isEmpty()"> @@ -1193,6 +1242,13 @@ </foreach> , </if> + <if test="conditionParamRef.containsKey('companyIdList') and conditionParamRef.companyIdList.size() > 0"> + field(a.companyId, + <foreach collection="conditionParamRef.companyIdList" open="" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + , + </if> <if test="conditionParamRef.containsKey('positionIdList') and conditionParamRef.positionIdList.size() > 0"> field(a.positionId, <foreach collection="conditionParamRef.positionIdList" open="" close=")" index="index" item="item" separator=","> @@ -1264,6 +1320,13 @@ </foreach> , </if> + <if test="conditionParamRef.containsKey('companyIdList') and conditionParamRef.companyIdList.size() > 0"> + field(a.companyId, + <foreach collection="conditionParamRef.companyIdList" open="" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + , + </if> <if test="conditionParamRef.containsKey('positionIdList') and conditionParamRef.positionIdList.size() > 0"> field(a.positionId, <foreach collection="conditionParamRef.positionIdList" open="" close=")" index="index" item="item" separator=","> @@ -1437,6 +1500,11 @@ <if test='orderCol.setting != null and "DESC".equalsIgnoreCase(orderCol.setting)'>DESC</if> , </if> + <if test="orderCol.containsKey('companyAdress')"> + a.companyAdress + <if test='orderCol.companyAdress != null and "DESC".equalsIgnoreCase(orderCol.companyAdress)'>DESC</if> + , + </if> </trim> </if> diff --git a/enterprise-manager/src/main/resources/sqlmap/module/bussinesscard/BussinesscardRecordMapper.xml b/enterprise-manager/src/main/resources/sqlmap/module/bussinesscard/BussinesscardRecordMapper.xml new file mode 100644 index 0000000..038534d --- /dev/null +++ b/enterprise-manager/src/main/resources/sqlmap/module/bussinesscard/BussinesscardRecordMapper.xml @@ -0,0 +1,771 @@ +<?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.bussinesscard.dao.ibatis.BussinesscardRecordDaoImpl"> + + <!-- 瀛楁鍜屽睘鎬ф槧灏� --> + <resultMap type="BussinesscardRecordEntity" id="BussinesscardRecordEntity-Map"> + <id property="id" column="id" /> + <result property="bussinesscardId" column="bussinesscardId" /> + <result property="viewId" column="viewId" /> + <result property="viewName" column="viewName" /> + <result property="sumViews" column="sumViews" /> + <result property="remark" column="remark" /> + <result property="viewTime" column="viewTime" /> + <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('bussinesscardId') or colPickMode == 1 and data.containsKey('bussinesscardId')))"> + a.bussinesscardId, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewId') or colPickMode == 1 and data.containsKey('viewId')))"> + a.viewId, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewName') or colPickMode == 1 and data.containsKey('viewName')))"> + a.viewName, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sumViews') or colPickMode == 1 and data.containsKey('sumViews')))"> + a.sumViews, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('remark') or colPickMode == 1 and data.containsKey('remark')))"> + a.remark, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewTime') or colPickMode == 1 and data.containsKey('viewTime')))"> + a.viewTime, + </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="BussinesscardRecordEntity" useGeneratedKeys="true" keyProperty="id"> + insert into mortals_xhx_bussinesscard_record + (bussinesscardId,viewId,viewName,sumViews,remark,viewTime,createUserId,createTime,updateUserId,updateTime) + VALUES + (#{bussinesscardId},#{viewId},#{viewName},#{sumViews},#{remark},#{viewTime},#{createUserId},#{createTime},#{updateUserId},#{updateTime}) + </insert> + + <!-- 鎵归噺鏂板 --> + <insert id="insertBatch" parameterType="paramDto"> + insert into mortals_xhx_bussinesscard_record + (bussinesscardId,viewId,viewName,sumViews,remark,viewTime,createUserId,createTime,updateUserId,updateTime) + VALUES + <foreach collection="data.dataList" item="item" index="index" separator="," > + (#{item.bussinesscardId},#{item.viewId},#{item.viewName},#{item.sumViews},#{item.remark},#{item.viewTime},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime}) + </foreach> + </insert> + + + <!-- 鏍规嵁ParamDto鏇存柊 --> + <update id="update" parameterType="paramDto"> + update mortals_xhx_bussinesscard_record as a + set + <trim suffixOverrides="," suffix=""> + <if test="(colPickMode==0 and data.containsKey('bussinesscardId')) or (colPickMode==1 and !data.containsKey('bussinesscardId'))"> + a.bussinesscardId=#{data.bussinesscardId}, + </if> + <if test="(colPickMode==0 and data.containsKey('bussinesscardIdIncrement')) or (colPickMode==1 and !data.containsKey('bussinesscardIdIncrement'))"> + a.bussinesscardId=ifnull(a.bussinesscardId,0) + #{data.bussinesscardIdIncrement}, + </if> + <if test="(colPickMode==0 and data.containsKey('viewId')) or (colPickMode==1 and !data.containsKey('viewId'))"> + a.viewId=#{data.viewId}, + </if> + <if test="(colPickMode==0 and data.containsKey('viewIdIncrement')) or (colPickMode==1 and !data.containsKey('viewIdIncrement'))"> + a.viewId=ifnull(a.viewId,0) + #{data.viewIdIncrement}, + </if> + <if test="(colPickMode==0 and data.containsKey('viewName')) or (colPickMode==1 and !data.containsKey('viewName'))"> + a.viewName=#{data.viewName}, + </if> + <if test="(colPickMode==0 and data.containsKey('sumViews')) or (colPickMode==1 and !data.containsKey('sumViews'))"> + a.sumViews=#{data.sumViews}, + </if> + <if test="(colPickMode==0 and data.containsKey('sumViewsIncrement')) or (colPickMode==1 and !data.containsKey('sumViewsIncrement'))"> + a.sumViews=ifnull(a.sumViews,0) + #{data.sumViewsIncrement}, + </if> + <if test="(colPickMode==0 and data.containsKey('remark')) or (colPickMode==1 and !data.containsKey('remark'))"> + a.remark=#{data.remark}, + </if> + <if test="(colPickMode==0 and data.containsKey('viewTime')) or (colPickMode==1 and !data.containsKey('viewTime'))"> + a.viewTime=#{data.viewTime}, + </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_bussinesscard_record as a + <trim prefix="set" suffixOverrides=","> + <trim prefix="bussinesscardId=(case" suffix="ELSE bussinesscardId end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <choose> + <when test="(colPickMode==0 and item.containsKey('bussinesscardId')) or (colPickMode==1 and !item.containsKey('bussinesscardId'))"> + when a.id=#{item.id} then #{item.bussinesscardId} + </when> + <when test="(colPickMode==0 and item.containsKey('bussinesscardIdIncrement')) or (colPickMode==1 and !item.containsKey('bussinesscardIdIncrement'))"> + when a.id=#{item.id} then ifnull(a.bussinesscardId,0) + #{item.bussinesscardIdIncrement} + </when> + </choose> + </foreach> + </trim> + <trim prefix="viewId=(case" suffix="ELSE viewId end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <choose> + <when test="(colPickMode==0 and item.containsKey('viewId')) or (colPickMode==1 and !item.containsKey('viewId'))"> + when a.id=#{item.id} then #{item.viewId} + </when> + <when test="(colPickMode==0 and item.containsKey('viewIdIncrement')) or (colPickMode==1 and !item.containsKey('viewIdIncrement'))"> + when a.id=#{item.id} then ifnull(a.viewId,0) + #{item.viewIdIncrement} + </when> + </choose> + </foreach> + </trim> + <trim prefix="viewName=(case" suffix="ELSE viewName end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('viewName')) or (colPickMode==1 and !item.containsKey('viewName'))"> + when a.id=#{item.id} then #{item.viewName} + </if> + </foreach> + </trim> + <trim prefix="sumViews=(case" suffix="ELSE sumViews end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <choose> + <when test="(colPickMode==0 and item.containsKey('sumViews')) or (colPickMode==1 and !item.containsKey('sumViews'))"> + when a.id=#{item.id} then #{item.sumViews} + </when> + <when test="(colPickMode==0 and item.containsKey('sumViewsIncrement')) or (colPickMode==1 and !item.containsKey('sumViewsIncrement'))"> + when a.id=#{item.id} then ifnull(a.sumViews,0) + #{item.sumViewsIncrement} + </when> + </choose> + </foreach> + </trim> + <trim prefix="remark=(case" suffix="ELSE remark end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('remark')) or (colPickMode==1 and !item.containsKey('remark'))"> + when a.id=#{item.id} then #{item.remark} + </if> + </foreach> + </trim> + <trim prefix="viewTime=(case" suffix="ELSE viewTime end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('viewTime')) or (colPickMode==1 and !item.containsKey('viewTime'))"> + when a.id=#{item.id} then #{item.viewTime} + </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="BussinesscardRecordEntity-Map"> + select <include refid="_columns"/> + from mortals_xhx_bussinesscard_record as a + where a.id=#{condition.id} + </select> + <!-- 鏍规嵁涓诲仴鍒犻櫎 --> + <delete id="deleteByKey" parameterType="paramDto"> + delete a.* from mortals_xhx_bussinesscard_record as a where a.id=#{condition.id} + </delete> + <!-- 鏍规嵁涓诲仴鍒犻櫎涓€鎵癸紝閽堝鍗曚竴涓诲仴鏈夋晥 --> + <delete id="deleteByKeys"> + delete from mortals_xhx_bussinesscard_record where id in + <foreach collection="array" item="item" index="index" open="(" separator="," close=")"> + #{item} + </foreach> + </delete> + <!-- 鏍规嵁涓诲仴鍒楄〃鍒犻櫎涓€鎵癸紝閽堝鍗曚竴涓诲仴鏈夋晥 --> + <delete id="deleteByKeyList"> + delete from mortals_xhx_bussinesscard_record where id in + <foreach collection="list" item="item" index="index" open="(" separator="," close=")"> + #{item} + </foreach> + </delete> + + <!-- 鏍规嵁瀵硅薄鍒楄〃鍒犻櫎涓€鎵癸紝閽堝鍗曚竴涓诲仴鏈夋晥 --> + <delete id="deleteByEntityList"> + delete from mortals_xhx_bussinesscard_record 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_bussinesscard_record as a + <trim suffixOverrides="where" suffix=""> + where + <trim prefixOverrides="and" prefix=""> + <include refid="_condition_"/> + </trim> + </trim> + </delete> + <!-- 鑾峰彇鍒楄〃 --> + <select id="getList" parameterType="paramDto" resultMap="BussinesscardRecordEntity-Map"> + select <include refid="_columns"/> + from mortals_xhx_bussinesscard_record 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_bussinesscard_record 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="permissionSql != null and permissionSql != ''"> + ${permissionSql} + </if> + + <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('bussinesscardId')"> + <if test="conditionParamRef.bussinesscardId != null "> + ${_conditionType_} a.bussinesscardId = #{${_conditionParam_}.bussinesscardId} + </if> + <if test="conditionParamRef.bussinesscardId == null"> + ${_conditionType_} a.bussinesscardId is null + </if> + </if> + <if test="conditionParamRef.containsKey('bussinesscardIdList') and conditionParamRef.bussinesscardIdList.size() > 0"> + ${_conditionType_} a.bussinesscardId in + <foreach collection="conditionParamRef.bussinesscardIdList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('bussinesscardIdNotList') and conditionParamRef.bussinesscardIdNotList.size() > 0"> + ${_conditionType_} a.bussinesscardId not in + <foreach collection="conditionParamRef.bussinesscardIdNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('bussinesscardIdStart') and conditionParamRef.bussinesscardIdStart != null"> + ${_conditionType_} a.bussinesscardId <![CDATA[ >= ]]> #{${_conditionParam_}.bussinesscardIdStart} + </if> + <if test="conditionParamRef.containsKey('bussinesscardIdEnd') and conditionParamRef.bussinesscardIdEnd != null"> + ${_conditionType_} a.bussinesscardId <![CDATA[ <= ]]> #{${_conditionParam_}.bussinesscardIdEnd} + </if> + + <if test="conditionParamRef.containsKey('viewId')"> + <if test="conditionParamRef.viewId != null "> + ${_conditionType_} a.viewId = #{${_conditionParam_}.viewId} + </if> + <if test="conditionParamRef.viewId == null"> + ${_conditionType_} a.viewId is null + </if> + </if> + <if test="conditionParamRef.containsKey('viewIdList') and conditionParamRef.viewIdList.size() > 0"> + ${_conditionType_} a.viewId in + <foreach collection="conditionParamRef.viewIdList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('viewIdNotList') and conditionParamRef.viewIdNotList.size() > 0"> + ${_conditionType_} a.viewId not in + <foreach collection="conditionParamRef.viewIdNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('viewIdStart') and conditionParamRef.viewIdStart != null"> + ${_conditionType_} a.viewId <![CDATA[ >= ]]> #{${_conditionParam_}.viewIdStart} + </if> + <if test="conditionParamRef.containsKey('viewIdEnd') and conditionParamRef.viewIdEnd != null"> + ${_conditionType_} a.viewId <![CDATA[ <= ]]> #{${_conditionParam_}.viewIdEnd} + </if> + + + <if test="conditionParamRef.containsKey('viewName')"> + <if test="conditionParamRef.viewName != null and conditionParamRef.viewName != ''"> + ${_conditionType_} a.viewName like #{${_conditionParam_}.viewName} + </if> + <if test="conditionParamRef.viewName == null"> + ${_conditionType_} a.viewName is null + </if> + </if> + <if test="conditionParamRef.containsKey('viewNameList') and conditionParamRef.viewNameList.size() > 0"> + ${_conditionType_} a.viewName in + <foreach collection="conditionParamRef.viewNameList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('viewNameNotList') and conditionParamRef.viewNameNotList.size() > 0"> + ${_conditionType_} a.viewName not in + <foreach collection="conditionParamRef.viewNameNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('sumViews')"> + <if test="conditionParamRef.sumViews != null "> + ${_conditionType_} a.sumViews = #{${_conditionParam_}.sumViews} + </if> + <if test="conditionParamRef.sumViews == null"> + ${_conditionType_} a.sumViews is null + </if> + </if> + <if test="conditionParamRef.containsKey('sumViewsList') and conditionParamRef.sumViewsList.size() > 0"> + ${_conditionType_} a.sumViews in + <foreach collection="conditionParamRef.sumViewsList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('sumViewsNotList') and conditionParamRef.sumViewsNotList.size() > 0"> + ${_conditionType_} a.sumViews not in + <foreach collection="conditionParamRef.sumViewsNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('sumViewsStart') and conditionParamRef.sumViewsStart != null"> + ${_conditionType_} a.sumViews <![CDATA[ >= ]]> #{${_conditionParam_}.sumViewsStart} + </if> + <if test="conditionParamRef.containsKey('sumViewsEnd') and conditionParamRef.sumViewsEnd != null"> + ${_conditionType_} a.sumViews <![CDATA[ <= ]]> #{${_conditionParam_}.sumViewsEnd} + </if> + + + <if test="conditionParamRef.containsKey('remark')"> + <if test="conditionParamRef.remark != null and conditionParamRef.remark != ''"> + ${_conditionType_} a.remark like #{${_conditionParam_}.remark} + </if> + <if test="conditionParamRef.remark == null"> + ${_conditionType_} a.remark is null + </if> + </if> + <if test="conditionParamRef.containsKey('remarkList') and conditionParamRef.remarkList.size() > 0"> + ${_conditionType_} a.remark in + <foreach collection="conditionParamRef.remarkList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('remarkNotList') and conditionParamRef.remarkNotList.size() > 0"> + ${_conditionType_} a.remark not in + <foreach collection="conditionParamRef.remarkNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + + <if test="conditionParamRef.containsKey('viewTime')"> + <if test="conditionParamRef.viewTime != null "> + ${_conditionType_} a.viewTime = #{${_conditionParam_}.viewTime} + </if> + <if test="conditionParamRef.viewTime == null"> + ${_conditionType_} a.viewTime is null + </if> + </if> + <if test="conditionParamRef.containsKey('viewTimeStart') and conditionParamRef.viewTimeStart != null and conditionParamRef.viewTimeStart!=''"> + ${_conditionType_} a.viewTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.viewTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') + </if> + <if test="conditionParamRef.containsKey('viewTimeEnd') and conditionParamRef.viewTimeEnd != null and conditionParamRef.viewTimeEnd!=''"> + ${_conditionType_} a.viewTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.viewTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') + </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('bussinesscardIdList') and conditionParamRef.bussinesscardIdList.size() > 0"> + field(a.bussinesscardId, + <foreach collection="conditionParamRef.bussinesscardIdList" open="" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + , + </if> + <if test="conditionParamRef.containsKey('viewIdList') and conditionParamRef.viewIdList.size() > 0"> + field(a.viewId, + <foreach collection="conditionParamRef.viewIdList" open="" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + , + </if> + <if test="conditionParamRef.containsKey('sumViewsList') and conditionParamRef.sumViewsList.size() > 0"> + field(a.sumViews, + <foreach collection="conditionParamRef.sumViewsList" 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=","> + a.${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('bussinesscardIdList') and conditionParamRef.bussinesscardIdList.size() > 0"> + field(a.bussinesscardId, + <foreach collection="conditionParamRef.bussinesscardIdList" open="" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + , + </if> + <if test="conditionParamRef.containsKey('viewIdList') and conditionParamRef.viewIdList.size() > 0"> + field(a.viewId, + <foreach collection="conditionParamRef.viewIdList" open="" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + , + </if> + <if test="conditionParamRef.containsKey('sumViewsList') and conditionParamRef.sumViewsList.size() > 0"> + field(a.sumViews, + <foreach collection="conditionParamRef.sumViewsList" 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('bussinesscardId')"> + a.bussinesscardId + <if test='orderCol.bussinesscardId != null and "DESC".equalsIgnoreCase(orderCol.bussinesscardId)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('viewId')"> + a.viewId + <if test='orderCol.viewId != null and "DESC".equalsIgnoreCase(orderCol.viewId)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('viewName')"> + a.viewName + <if test='orderCol.viewName != null and "DESC".equalsIgnoreCase(orderCol.viewName)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('sumViews')"> + a.sumViews + <if test='orderCol.sumViews != null and "DESC".equalsIgnoreCase(orderCol.sumViews)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('remark')"> + a.remark + <if test='orderCol.remark != null and "DESC".equalsIgnoreCase(orderCol.remark)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('viewTime')"> + a.viewTime + <if test='orderCol.viewTime != null and "DESC".equalsIgnoreCase(orderCol.viewTime)'>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 diff --git a/enterprise-manager/src/main/resources/sqlmap/module/news/NewsRecordMapper.xml b/enterprise-manager/src/main/resources/sqlmap/module/news/NewsRecordMapper.xml index 6ae4c3c..419e628 100644 --- a/enterprise-manager/src/main/resources/sqlmap/module/news/NewsRecordMapper.xml +++ b/enterprise-manager/src/main/resources/sqlmap/module/news/NewsRecordMapper.xml @@ -1,74 +1,76 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -"mybatis-3-mapper.dtd"> + "mybatis-3-mapper.dtd"> <mapper namespace="com.mortals.xhx.module.news.dao.ibatis.NewsRecordDaoImpl"> <!-- 瀛楁鍜屽睘鎬ф槧灏� --> <resultMap type="NewsRecordEntity" id="NewsRecordEntity-Map"> - <id property="id" column="id" /> - <result property="newsId" column="newsId" /> - <result property="viewName" column="viewName" /> - <result property="sumViews" column="sumViews" /> - <result property="remark" column="remark" /> - <result property="viewTime" column="viewTime" /> - <result property="createUserId" column="createUserId" /> - <result property="createTime" column="createTime" /> - <result property="updateUserId" column="updateUserId" /> - <result property="updateTime" column="updateTime" /> - + <id property="id" column="id" /> + <result property="newsId" column="newsId" /> + <result property="viewName" column="viewName" /> + <result property="sumViews" column="sumViews" /> + <result property="remark" column="remark" /> + <result property="viewTime" column="viewTime" /> + <result property="createUserId" column="createUserId" /> + <result property="createTime" column="createTime" /> + <result property="updateUserId" column="updateUserId" /> + <result property="updateTime" column="updateTime" /> + <result property="viewId" column="viewId" /> </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('newsId') or colPickMode == 1 and data.containsKey('newsId')))"> - a.newsId, - </if> - <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewName') or colPickMode == 1 and data.containsKey('viewName')))"> - a.viewName, - </if> - <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sumViews') or colPickMode == 1 and data.containsKey('sumViews')))"> - a.sumViews, - </if> - <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('remark') or colPickMode == 1 and data.containsKey('remark')))"> - a.remark, - </if> - <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewTime') or colPickMode == 1 and data.containsKey('viewTime')))"> - a.viewTime, - </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> + <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('newsId') or colPickMode == 1 and data.containsKey('newsId')))"> + a.newsId, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewName') or colPickMode == 1 and data.containsKey('viewName')))"> + a.viewName, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sumViews') or colPickMode == 1 and data.containsKey('sumViews')))"> + a.sumViews, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('remark') or colPickMode == 1 and data.containsKey('remark')))"> + a.remark, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewTime') or colPickMode == 1 and data.containsKey('viewTime')))"> + a.viewTime, + </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> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewId') or colPickMode == 1 and data.containsKey('viewId')))"> + a.viewId, + </if> </trim> </sql> <!-- 鏂板 鍖哄垎涓婚敭鑷鍔犺繕鏄笟鍔℃彃鍏� --> <insert id="insert" parameterType="NewsRecordEntity" useGeneratedKeys="true" keyProperty="id"> insert into mortals_xhx_news_record - (newsId,viewName,sumViews,remark,viewTime,createUserId,createTime,updateUserId,updateTime) + (newsId,viewName,sumViews,remark,viewTime,createUserId,createTime,updateUserId,updateTime,viewId) VALUES - (#{newsId},#{viewName},#{sumViews},#{remark},#{viewTime},#{createUserId},#{createTime},#{updateUserId},#{updateTime}) + (#{newsId},#{viewName},#{sumViews},#{remark},#{viewTime},#{createUserId},#{createTime},#{updateUserId},#{updateTime},#{viewId}) </insert> <!-- 鎵归噺鏂板 --> <insert id="insertBatch" parameterType="paramDto"> insert into mortals_xhx_news_record - (newsId,viewName,sumViews,remark,viewTime,createUserId,createTime,updateUserId,updateTime) + (newsId,viewName,sumViews,remark,viewTime,createUserId,createTime,updateUserId,updateTime,viewId) VALUES <foreach collection="data.dataList" item="item" index="index" separator="," > - (#{item.newsId},#{item.viewName},#{item.sumViews},#{item.remark},#{item.viewTime},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime}) + (#{item.newsId},#{item.viewName},#{item.sumViews},#{item.remark},#{item.viewTime},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.viewId}) </foreach> </insert> @@ -117,6 +119,12 @@ <if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))"> a.updateTime=#{data.updateTime}, </if> + <if test="(colPickMode==0 and data.containsKey('viewId')) or (colPickMode==1 and !data.containsKey('viewId'))"> + a.viewId=#{data.viewId}, + </if> + <if test="(colPickMode==0 and data.containsKey('viewIdIncrement')) or (colPickMode==1 and !data.containsKey('viewIdIncrement'))"> + a.viewId=ifnull(a.viewId,0) + #{data.viewIdIncrement}, + </if> </trim> <trim suffixOverrides="where" suffix=""> where @@ -129,89 +137,101 @@ <update id="updateBatch" parameterType="paramDto"> update mortals_xhx_news_record as a <trim prefix="set" suffixOverrides=","> - <trim prefix="newsId=(case" suffix="ELSE newsId end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <choose> - <when test="(colPickMode==0 and item.containsKey('newsId')) or (colPickMode==1 and !item.containsKey('newsId'))"> - when a.id=#{item.id} then #{item.newsId} - </when> - <when test="(colPickMode==0 and item.containsKey('newsIdIncrement')) or (colPickMode==1 and !item.containsKey('newsIdIncrement'))"> - when a.id=#{item.id} then ifnull(a.newsId,0) + #{item.newsIdIncrement} - </when> - </choose> - </foreach> - </trim> - <trim prefix="viewName=(case" suffix="ELSE viewName end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <if test="(colPickMode==0 and item.containsKey('viewName')) or (colPickMode==1 and !item.containsKey('viewName'))"> - when a.id=#{item.id} then #{item.viewName} - </if> - </foreach> - </trim> - <trim prefix="sumViews=(case" suffix="ELSE sumViews end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <choose> - <when test="(colPickMode==0 and item.containsKey('sumViews')) or (colPickMode==1 and !item.containsKey('sumViews'))"> - when a.id=#{item.id} then #{item.sumViews} - </when> - <when test="(colPickMode==0 and item.containsKey('sumViewsIncrement')) or (colPickMode==1 and !item.containsKey('sumViewsIncrement'))"> - when a.id=#{item.id} then ifnull(a.sumViews,0) + #{item.sumViewsIncrement} - </when> - </choose> - </foreach> - </trim> - <trim prefix="remark=(case" suffix="ELSE remark end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <if test="(colPickMode==0 and item.containsKey('remark')) or (colPickMode==1 and !item.containsKey('remark'))"> - when a.id=#{item.id} then #{item.remark} - </if> - </foreach> - </trim> - <trim prefix="viewTime=(case" suffix="ELSE viewTime end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <if test="(colPickMode==0 and item.containsKey('viewTime')) or (colPickMode==1 and !item.containsKey('viewTime'))"> - when a.id=#{item.id} then #{item.viewTime} - </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 prefix="newsId=(case" suffix="ELSE newsId end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <choose> + <when test="(colPickMode==0 and item.containsKey('newsId')) or (colPickMode==1 and !item.containsKey('newsId'))"> + when a.id=#{item.id} then #{item.newsId} + </when> + <when test="(colPickMode==0 and item.containsKey('newsIdIncrement')) or (colPickMode==1 and !item.containsKey('newsIdIncrement'))"> + when a.id=#{item.id} then ifnull(a.newsId,0) + #{item.newsIdIncrement} + </when> + </choose> + </foreach> + </trim> + <trim prefix="viewName=(case" suffix="ELSE viewName end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('viewName')) or (colPickMode==1 and !item.containsKey('viewName'))"> + when a.id=#{item.id} then #{item.viewName} + </if> + </foreach> + </trim> + <trim prefix="sumViews=(case" suffix="ELSE sumViews end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <choose> + <when test="(colPickMode==0 and item.containsKey('sumViews')) or (colPickMode==1 and !item.containsKey('sumViews'))"> + when a.id=#{item.id} then #{item.sumViews} + </when> + <when test="(colPickMode==0 and item.containsKey('sumViewsIncrement')) or (colPickMode==1 and !item.containsKey('sumViewsIncrement'))"> + when a.id=#{item.id} then ifnull(a.sumViews,0) + #{item.sumViewsIncrement} + </when> + </choose> + </foreach> + </trim> + <trim prefix="remark=(case" suffix="ELSE remark end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('remark')) or (colPickMode==1 and !item.containsKey('remark'))"> + when a.id=#{item.id} then #{item.remark} + </if> + </foreach> + </trim> + <trim prefix="viewTime=(case" suffix="ELSE viewTime end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('viewTime')) or (colPickMode==1 and !item.containsKey('viewTime'))"> + when a.id=#{item.id} then #{item.viewTime} + </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 prefix="viewId=(case" suffix="ELSE viewId end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <choose> + <when test="(colPickMode==0 and item.containsKey('viewId')) or (colPickMode==1 and !item.containsKey('viewId'))"> + when a.id=#{item.id} then #{item.viewId} + </when> + <when test="(colPickMode==0 and item.containsKey('viewIdIncrement')) or (colPickMode==1 and !item.containsKey('viewIdIncrement'))"> + when a.id=#{item.id} then ifnull(a.viewId,0) + #{item.viewIdIncrement} + </when> + </choose> + </foreach> + </trim> </trim> where id in <foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")"> @@ -323,298 +343,420 @@ <!-- 鏉′欢鏄犲皠-浠e弬鏁� --> <sql id="_condition_param_"> <bind name="conditionParamRef" value="${_conditionParam_}"/> + <if test="permissionSql != null and permissionSql != ''"> + ${permissionSql} + </if> + <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 test="conditionParamRef.containsKey('id')"> + <if test="conditionParamRef.id != null "> + ${_conditionType_} a.id = #{${_conditionParam_}.id} </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 test="conditionParamRef.id == null"> + ${_conditionType_} a.id is null </if> - <if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null"> - ${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart} + </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('newsId')"> + <if test="conditionParamRef.newsId != null "> + ${_conditionType_} a.newsId = #{${_conditionParam_}.newsId} </if> - <if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null"> - ${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd} + <if test="conditionParamRef.newsId == null"> + ${_conditionType_} a.newsId is null </if> + </if> + <if test="conditionParamRef.containsKey('newsIdList') and conditionParamRef.newsIdList.size() > 0"> + ${_conditionType_} a.newsId in + <foreach collection="conditionParamRef.newsIdList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('newsIdNotList') and conditionParamRef.newsIdNotList.size() > 0"> + ${_conditionType_} a.newsId not in + <foreach collection="conditionParamRef.newsIdNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('newsIdStart') and conditionParamRef.newsIdStart != null"> + ${_conditionType_} a.newsId <![CDATA[ >= ]]> #{${_conditionParam_}.newsIdStart} + </if> + <if test="conditionParamRef.containsKey('newsIdEnd') and conditionParamRef.newsIdEnd != null"> + ${_conditionType_} a.newsId <![CDATA[ <= ]]> #{${_conditionParam_}.newsIdEnd} + </if> - <if test="conditionParamRef.containsKey('newsId')"> - <if test="conditionParamRef.newsId != null "> - ${_conditionType_} a.newsId = #{${_conditionParam_}.newsId} - </if> - <if test="conditionParamRef.newsId == null"> - ${_conditionType_} a.newsId is null - </if> - </if> - <if test="conditionParamRef.containsKey('newsIdList') and conditionParamRef.newsIdList.size() > 0"> - ${_conditionType_} a.newsId in - <foreach collection="conditionParamRef.newsIdList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + + <if test="conditionParamRef.containsKey('viewName')"> + <if test="conditionParamRef.viewName != null and conditionParamRef.viewName != ''"> + ${_conditionType_} a.viewName like #{${_conditionParam_}.viewName} </if> - <if test="conditionParamRef.containsKey('newsIdNotList') and conditionParamRef.newsIdNotList.size() > 0"> - ${_conditionType_} a.newsId not in - <foreach collection="conditionParamRef.newsIdNotList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + <if test="conditionParamRef.viewName == null"> + ${_conditionType_} a.viewName is null </if> - <if test="conditionParamRef.containsKey('newsIdStart') and conditionParamRef.newsIdStart != null"> - ${_conditionType_} a.newsId <![CDATA[ >= ]]> #{${_conditionParam_}.newsIdStart} + </if> + <if test="conditionParamRef.containsKey('viewNameList') and conditionParamRef.viewNameList.size() > 0"> + ${_conditionType_} a.viewName in + <foreach collection="conditionParamRef.viewNameList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('viewNameNotList') and conditionParamRef.viewNameNotList.size() > 0"> + ${_conditionType_} a.viewName not in + <foreach collection="conditionParamRef.viewNameNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('sumViews')"> + <if test="conditionParamRef.sumViews != null "> + ${_conditionType_} a.sumViews = #{${_conditionParam_}.sumViews} </if> - <if test="conditionParamRef.containsKey('newsIdEnd') and conditionParamRef.newsIdEnd != null"> - ${_conditionType_} a.newsId <![CDATA[ <= ]]> #{${_conditionParam_}.newsIdEnd} + <if test="conditionParamRef.sumViews == null"> + ${_conditionType_} a.sumViews is null </if> + </if> + <if test="conditionParamRef.containsKey('sumViewsList') and conditionParamRef.sumViewsList.size() > 0"> + ${_conditionType_} a.sumViews in + <foreach collection="conditionParamRef.sumViewsList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('sumViewsNotList') and conditionParamRef.sumViewsNotList.size() > 0"> + ${_conditionType_} a.sumViews not in + <foreach collection="conditionParamRef.sumViewsNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('sumViewsStart') and conditionParamRef.sumViewsStart != null"> + ${_conditionType_} a.sumViews <![CDATA[ >= ]]> #{${_conditionParam_}.sumViewsStart} + </if> + <if test="conditionParamRef.containsKey('sumViewsEnd') and conditionParamRef.sumViewsEnd != null"> + ${_conditionType_} a.sumViews <![CDATA[ <= ]]> #{${_conditionParam_}.sumViewsEnd} + </if> - <if test="conditionParamRef.containsKey('viewName')"> - <if test="conditionParamRef.viewName != null and conditionParamRef.viewName != ''"> - ${_conditionType_} a.viewName like #{${_conditionParam_}.viewName} - </if> - <if test="conditionParamRef.viewName == null"> - ${_conditionType_} a.viewName is null - </if> - </if> - <if test="conditionParamRef.containsKey('viewNameList') and conditionParamRef.viewNameList.size() > 0"> - ${_conditionType_} a.viewName in - <foreach collection="conditionParamRef.viewNameList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + <if test="conditionParamRef.containsKey('remark')"> + <if test="conditionParamRef.remark != null and conditionParamRef.remark != ''"> + ${_conditionType_} a.remark like #{${_conditionParam_}.remark} </if> - <if test="conditionParamRef.containsKey('viewNameNotList') and conditionParamRef.viewNameNotList.size() > 0"> - ${_conditionType_} a.viewName not in - <foreach collection="conditionParamRef.viewNameNotList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + <if test="conditionParamRef.remark == null"> + ${_conditionType_} a.remark is null </if> - <if test="conditionParamRef.containsKey('sumViews')"> - <if test="conditionParamRef.sumViews != null "> - ${_conditionType_} a.sumViews = #{${_conditionParam_}.sumViews} - </if> - <if test="conditionParamRef.sumViews == null"> - ${_conditionType_} a.sumViews is null - </if> - </if> - <if test="conditionParamRef.containsKey('sumViewsList') and conditionParamRef.sumViewsList.size() > 0"> - ${_conditionType_} a.sumViews in - <foreach collection="conditionParamRef.sumViewsList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + </if> + <if test="conditionParamRef.containsKey('remarkList') and conditionParamRef.remarkList.size() > 0"> + ${_conditionType_} a.remark in + <foreach collection="conditionParamRef.remarkList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('remarkNotList') and conditionParamRef.remarkNotList.size() > 0"> + ${_conditionType_} a.remark not in + <foreach collection="conditionParamRef.remarkNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + + <if test="conditionParamRef.containsKey('viewTime')"> + <if test="conditionParamRef.viewTime != null "> + ${_conditionType_} a.viewTime = #{${_conditionParam_}.viewTime} </if> - <if test="conditionParamRef.containsKey('sumViewsNotList') and conditionParamRef.sumViewsNotList.size() > 0"> - ${_conditionType_} a.sumViews not in - <foreach collection="conditionParamRef.sumViewsNotList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + <if test="conditionParamRef.viewTime == null"> + ${_conditionType_} a.viewTime is null </if> - <if test="conditionParamRef.containsKey('sumViewsStart') and conditionParamRef.sumViewsStart != null"> - ${_conditionType_} a.sumViews <![CDATA[ >= ]]> #{${_conditionParam_}.sumViewsStart} + </if> + <if test="conditionParamRef.containsKey('viewTimeStart') and conditionParamRef.viewTimeStart != null and conditionParamRef.viewTimeStart!=''"> + ${_conditionType_} a.viewTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.viewTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') + </if> + <if test="conditionParamRef.containsKey('viewTimeEnd') and conditionParamRef.viewTimeEnd != null and conditionParamRef.viewTimeEnd!=''"> + ${_conditionType_} a.viewTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.viewTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') + </if> + <if test="conditionParamRef.containsKey('createUserId')"> + <if test="conditionParamRef.createUserId != null "> + ${_conditionType_} a.createUserId = #{${_conditionParam_}.createUserId} </if> - <if test="conditionParamRef.containsKey('sumViewsEnd') and conditionParamRef.sumViewsEnd != null"> - ${_conditionType_} a.sumViews <![CDATA[ <= ]]> #{${_conditionParam_}.sumViewsEnd} + <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('remark')"> - <if test="conditionParamRef.remark != null and conditionParamRef.remark != ''"> - ${_conditionType_} a.remark like #{${_conditionParam_}.remark} - </if> - <if test="conditionParamRef.remark == null"> - ${_conditionType_} a.remark is null - </if> + <if test="conditionParamRef.containsKey('createTime')"> + <if test="conditionParamRef.createTime != null "> + ${_conditionType_} a.createTime = #{${_conditionParam_}.createTime} </if> - <if test="conditionParamRef.containsKey('remarkList') and conditionParamRef.remarkList.size() > 0"> - ${_conditionType_} a.remark in - <foreach collection="conditionParamRef.remarkList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + <if test="conditionParamRef.createTime == null"> + ${_conditionType_} a.createTime is null </if> - <if test="conditionParamRef.containsKey('remarkNotList') and conditionParamRef.remarkNotList.size() > 0"> - ${_conditionType_} a.remark not in - <foreach collection="conditionParamRef.remarkNotList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + </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('viewTime')"> - <if test="conditionParamRef.viewTime != null "> - ${_conditionType_} a.viewTime = #{${_conditionParam_}.viewTime} - </if> - <if test="conditionParamRef.viewTime == null"> - ${_conditionType_} a.viewTime is null - </if> + + <if test="conditionParamRef.containsKey('updateTime')"> + <if test="conditionParamRef.updateTime != null "> + ${_conditionType_} a.updateTime = #{${_conditionParam_}.updateTime} </if> - <if test="conditionParamRef.containsKey('viewTimeStart') and conditionParamRef.viewTimeStart != null and conditionParamRef.viewTimeStart!=''"> - ${_conditionType_} a.viewTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.viewTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') + <if test="conditionParamRef.updateTime == null"> + ${_conditionType_} a.updateTime is null </if> - <if test="conditionParamRef.containsKey('viewTimeEnd') and conditionParamRef.viewTimeEnd != null and conditionParamRef.viewTimeEnd!=''"> - ${_conditionType_} a.viewTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.viewTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') + </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> + <if test="conditionParamRef.containsKey('viewId')"> + <if test="conditionParamRef.viewId != null "> + ${_conditionType_} a.viewId = #{${_conditionParam_}.viewId} </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 test="conditionParamRef.viewId == null"> + ${_conditionType_} a.viewId is null </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=","> + </if> + <if test="conditionParamRef.containsKey('viewIdList') and conditionParamRef.viewIdList.size() > 0"> + ${_conditionType_} a.viewId in + <foreach collection="conditionParamRef.viewIdList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('viewIdNotList') and conditionParamRef.viewIdNotList.size() > 0"> + ${_conditionType_} a.viewId not in + <foreach collection="conditionParamRef.viewIdNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('viewIdStart') and conditionParamRef.viewIdStart != null"> + ${_conditionType_} a.viewId <![CDATA[ >= ]]> #{${_conditionParam_}.viewIdStart} + </if> + <if test="conditionParamRef.containsKey('viewIdEnd') and conditionParamRef.viewIdEnd != null"> + ${_conditionType_} a.viewId <![CDATA[ <= ]]> #{${_conditionParam_}.viewIdEnd} + </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('createUserIdNotList') and conditionParamRef.createUserIdNotList.size() > 0"> - ${_conditionType_} a.createUserId not in - <foreach collection="conditionParamRef.createUserIdNotList" open="(" close=")" index="index" item="item" separator=","> + <if test="conditionParamRef.containsKey('newsIdList') and conditionParamRef.newsIdList.size() > 0"> + field(a.newsId, + <foreach collection="conditionParamRef.newsIdList" 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 test="conditionParamRef.containsKey('sumViewsList') and conditionParamRef.sumViewsList.size() > 0"> + field(a.sumViews, + <foreach collection="conditionParamRef.sumViewsList" open="" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + , </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 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"> - ${_conditionType_} a.updateUserId in - <foreach collection="conditionParamRef.updateUserIdList" open="(" close=")" index="index" item="item" separator=","> + field(a.updateUserId, + <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=","> + <if test="conditionParamRef.containsKey('viewIdList') and conditionParamRef.viewIdList.size() > 0"> + field(a.viewId, + <foreach collection="conditionParamRef.viewIdList" 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 <trim suffixOverrides="," suffix=""> <foreach collection="orderColList" open="" close="" index="index" item="item" separator=","> - ${item.colName} ${item.sortKind} + a.${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('newsIdList') and conditionParamRef.newsIdList.size() > 0"> + field(a.newsId, + <foreach collection="conditionParamRef.newsIdList" open="" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + , + </if> + <if test="conditionParamRef.containsKey('sumViewsList') and conditionParamRef.sumViewsList.size() > 0"> + field(a.sumViews, + <foreach collection="conditionParamRef.sumViewsList" 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> + <if test="conditionParamRef.containsKey('viewIdList') and conditionParamRef.viewIdList.size() > 0"> + field(a.viewId, + <foreach collection="conditionParamRef.viewIdList" 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('newsId')"> - a.newsId - <if test='orderCol.newsId != null and "DESC".equalsIgnoreCase(orderCol.newsId)'>DESC</if> - , - </if> - <if test="orderCol.containsKey('viewName')"> - a.viewName - <if test='orderCol.viewName != null and "DESC".equalsIgnoreCase(orderCol.viewName)'>DESC</if> - , - </if> - <if test="orderCol.containsKey('sumViews')"> - a.sumViews - <if test='orderCol.sumViews != null and "DESC".equalsIgnoreCase(orderCol.sumViews)'>DESC</if> - , - </if> - <if test="orderCol.containsKey('remark')"> - a.remark - <if test='orderCol.remark != null and "DESC".equalsIgnoreCase(orderCol.remark)'>DESC</if> - , - </if> - <if test="orderCol.containsKey('viewTime')"> - a.viewTime - <if test='orderCol.viewTime != null and "DESC".equalsIgnoreCase(orderCol.viewTime)'>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> + <if test="orderCol.containsKey('id')"> + a.id + <if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('newsId')"> + a.newsId + <if test='orderCol.newsId != null and "DESC".equalsIgnoreCase(orderCol.newsId)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('viewName')"> + a.viewName + <if test='orderCol.viewName != null and "DESC".equalsIgnoreCase(orderCol.viewName)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('sumViews')"> + a.sumViews + <if test='orderCol.sumViews != null and "DESC".equalsIgnoreCase(orderCol.sumViews)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('remark')"> + a.remark + <if test='orderCol.remark != null and "DESC".equalsIgnoreCase(orderCol.remark)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('viewTime')"> + a.viewTime + <if test='orderCol.viewTime != null and "DESC".equalsIgnoreCase(orderCol.viewTime)'>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> + <if test="orderCol.containsKey('viewId')"> + a.viewId + <if test='orderCol.viewId != null and "DESC".equalsIgnoreCase(orderCol.viewId)'>DESC</if> + , + </if> </trim> </if> + + </sql> <sql id="_group_by_"> <if test="groupList != null and !groupList.isEmpty()"> diff --git a/enterprise-manager/src/main/resources/sqlmap/module/staff/StaffMapper.xml b/enterprise-manager/src/main/resources/sqlmap/module/staff/StaffMapper.xml index 610f6a8..7df1364 100644 --- a/enterprise-manager/src/main/resources/sqlmap/module/staff/StaffMapper.xml +++ b/enterprise-manager/src/main/resources/sqlmap/module/staff/StaffMapper.xml @@ -62,6 +62,7 @@ <result property="updateTime" column="updateTime" /> <result property="sendBusinessCardTimes" column="sendBusinessCardTimes" /> <result property="setting" column="setting" /> + <result property="companyAdress" column="companyAdress" /> </resultMap> @@ -157,7 +158,7 @@ <!-- 瀛愯〃鎵€鏈夊垪 --> <sql id="_columns_sub"> <trim suffixOverrides="," suffix=""> - b.id,b.staffId,b.staffName,b.name,b.gender,b.birthday,b.photoPath,b.email,b.phoneNumber,b.idCard,b.companyId,b.companyName,b.positionId,b.positionName,b.bio,b.socialMedia,b.qRCode,b.remark,b.sumViews,b.viewsByDay,b.createUserId,b.createTime,b.updateUserId,b.updateTime,b.sendBusinessCardTimes,b.setting, + b.id,b.staffId,b.staffName,b.name,b.gender,b.birthday,b.photoPath,b.email,b.phoneNumber,b.idCard,b.companyId,b.companyName,b.positionId,b.positionName,b.bio,b.socialMedia,b.qRCode,b.remark,b.sumViews,b.viewsByDay,b.createUserId,b.createTime,b.updateUserId,b.updateTime,b.sendBusinessCardTimes,b.setting,b.companyAdress, </trim> </sql> <!-- 鏂板 鍖哄垎涓婚敭鑷鍔犺繕鏄笟鍔℃彃鍏� --> diff --git a/enterprise-manager/src/main/resources/sqlmap/module/staff/StaffRecordMapper.xml b/enterprise-manager/src/main/resources/sqlmap/module/staff/StaffRecordMapper.xml index 04d20da..31d0b2e 100644 --- a/enterprise-manager/src/main/resources/sqlmap/module/staff/StaffRecordMapper.xml +++ b/enterprise-manager/src/main/resources/sqlmap/module/staff/StaffRecordMapper.xml @@ -1,78 +1,80 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -"mybatis-3-mapper.dtd"> + "mybatis-3-mapper.dtd"> <mapper namespace="com.mortals.xhx.module.staff.dao.ibatis.StaffRecordDaoImpl"> <!-- 瀛楁鍜屽睘鎬ф槧灏� --> <resultMap type="StaffRecordEntity" id="StaffRecordEntity-Map"> - <id property="id" column="id" /> - <result property="staffId" column="staffId" /> - <result property="staffName" column="staffName" /> - <result property="viewName" column="viewName" /> - <result property="sumViews" column="sumViews" /> - <result property="viewContent" column="viewContent" /> - <result property="remark" column="remark" /> - <result property="createUserId" column="createUserId" /> - <result property="createTime" column="createTime" /> - <result property="updateUserId" column="updateUserId" /> - <result property="updateTime" column="updateTime" /> - + <id property="id" column="id" /> + <result property="staffId" column="staffId" /> + <result property="staffName" column="staffName" /> + <result property="viewName" column="viewName" /> + <result property="sumViews" column="sumViews" /> + <result property="viewContent" column="viewContent" /> + <result property="remark" column="remark" /> + <result property="createUserId" column="createUserId" /> + <result property="createTime" column="createTime" /> + <result property="updateUserId" column="updateUserId" /> + <result property="updateTime" column="updateTime" /> + <result property="viewId" column="viewId" /> </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('staffId') or colPickMode == 1 and data.containsKey('staffId')))"> - a.staffId, - </if> - <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('staffName') or colPickMode == 1 and data.containsKey('staffName')))"> - a.staffName, - </if> - <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewName') or colPickMode == 1 and data.containsKey('viewName')))"> - a.viewName, - </if> - <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sumViews') or colPickMode == 1 and data.containsKey('sumViews')))"> - a.sumViews, - </if> - <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewContent') or colPickMode == 1 and data.containsKey('viewContent')))"> - a.viewContent, - </if> - <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('remark') or colPickMode == 1 and data.containsKey('remark')))"> - a.remark, - </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> + <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('staffId') or colPickMode == 1 and data.containsKey('staffId')))"> + a.staffId, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('staffName') or colPickMode == 1 and data.containsKey('staffName')))"> + a.staffName, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewName') or colPickMode == 1 and data.containsKey('viewName')))"> + a.viewName, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sumViews') or colPickMode == 1 and data.containsKey('sumViews')))"> + a.sumViews, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewContent') or colPickMode == 1 and data.containsKey('viewContent')))"> + a.viewContent, + </if> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('remark') or colPickMode == 1 and data.containsKey('remark')))"> + a.remark, + </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> + <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('viewId') or colPickMode == 1 and data.containsKey('viewId')))"> + a.viewId, + </if> </trim> </sql> <!-- 鏂板 鍖哄垎涓婚敭鑷鍔犺繕鏄笟鍔℃彃鍏� --> <insert id="insert" parameterType="StaffRecordEntity" useGeneratedKeys="true" keyProperty="id"> insert into mortals_xhx_staff_record - (staffId,staffName,viewName,sumViews,viewContent,remark,createUserId,createTime,updateUserId,updateTime) + (staffId,staffName,viewName,sumViews,viewContent,remark,createUserId,createTime,updateUserId,updateTime,viewId) VALUES - (#{staffId},#{staffName},#{viewName},#{sumViews},#{viewContent},#{remark},#{createUserId},#{createTime},#{updateUserId},#{updateTime}) + (#{staffId},#{staffName},#{viewName},#{sumViews},#{viewContent},#{remark},#{createUserId},#{createTime},#{updateUserId},#{updateTime},#{viewId}) </insert> <!-- 鎵归噺鏂板 --> <insert id="insertBatch" parameterType="paramDto"> insert into mortals_xhx_staff_record - (staffId,staffName,viewName,sumViews,viewContent,remark,createUserId,createTime,updateUserId,updateTime) + (staffId,staffName,viewName,sumViews,viewContent,remark,createUserId,createTime,updateUserId,updateTime,viewId) VALUES <foreach collection="data.dataList" item="item" index="index" separator="," > - (#{item.staffId},#{item.staffName},#{item.viewName},#{item.sumViews},#{item.viewContent},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime}) + (#{item.staffId},#{item.staffName},#{item.viewName},#{item.sumViews},#{item.viewContent},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.viewId}) </foreach> </insert> @@ -124,6 +126,12 @@ <if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))"> a.updateTime=#{data.updateTime}, </if> + <if test="(colPickMode==0 and data.containsKey('viewId')) or (colPickMode==1 and !data.containsKey('viewId'))"> + a.viewId=#{data.viewId}, + </if> + <if test="(colPickMode==0 and data.containsKey('viewIdIncrement')) or (colPickMode==1 and !data.containsKey('viewIdIncrement'))"> + a.viewId=ifnull(a.viewId,0) + #{data.viewIdIncrement}, + </if> </trim> <trim suffixOverrides="where" suffix=""> where @@ -136,96 +144,108 @@ <update id="updateBatch" parameterType="paramDto"> update mortals_xhx_staff_record as a <trim prefix="set" suffixOverrides=","> - <trim prefix="staffId=(case" suffix="ELSE staffId end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <choose> - <when test="(colPickMode==0 and item.containsKey('staffId')) or (colPickMode==1 and !item.containsKey('staffId'))"> - when a.id=#{item.id} then #{item.staffId} - </when> - <when test="(colPickMode==0 and item.containsKey('staffIdIncrement')) or (colPickMode==1 and !item.containsKey('staffIdIncrement'))"> - when a.id=#{item.id} then ifnull(a.staffId,0) + #{item.staffIdIncrement} - </when> - </choose> - </foreach> - </trim> - <trim prefix="staffName=(case" suffix="ELSE staffName end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <if test="(colPickMode==0 and item.containsKey('staffName')) or (colPickMode==1 and !item.containsKey('staffName'))"> - when a.id=#{item.id} then #{item.staffName} - </if> - </foreach> - </trim> - <trim prefix="viewName=(case" suffix="ELSE viewName end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <if test="(colPickMode==0 and item.containsKey('viewName')) or (colPickMode==1 and !item.containsKey('viewName'))"> - when a.id=#{item.id} then #{item.viewName} - </if> - </foreach> - </trim> - <trim prefix="sumViews=(case" suffix="ELSE sumViews end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <choose> - <when test="(colPickMode==0 and item.containsKey('sumViews')) or (colPickMode==1 and !item.containsKey('sumViews'))"> - when a.id=#{item.id} then #{item.sumViews} - </when> - <when test="(colPickMode==0 and item.containsKey('sumViewsIncrement')) or (colPickMode==1 and !item.containsKey('sumViewsIncrement'))"> - when a.id=#{item.id} then ifnull(a.sumViews,0) + #{item.sumViewsIncrement} - </when> - </choose> - </foreach> - </trim> - <trim prefix="viewContent=(case" suffix="ELSE viewContent end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <if test="(colPickMode==0 and item.containsKey('viewContent')) or (colPickMode==1 and !item.containsKey('viewContent'))"> - when a.id=#{item.id} then #{item.viewContent} - </if> - </foreach> - </trim> - <trim prefix="remark=(case" suffix="ELSE remark end),"> - <foreach collection="data.dataList" item="item" index="index" separator="" > - <if test="(colPickMode==0 and item.containsKey('remark')) or (colPickMode==1 and !item.containsKey('remark'))"> - when a.id=#{item.id} then #{item.remark} - </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 prefix="staffId=(case" suffix="ELSE staffId end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <choose> + <when test="(colPickMode==0 and item.containsKey('staffId')) or (colPickMode==1 and !item.containsKey('staffId'))"> + when a.id=#{item.id} then #{item.staffId} + </when> + <when test="(colPickMode==0 and item.containsKey('staffIdIncrement')) or (colPickMode==1 and !item.containsKey('staffIdIncrement'))"> + when a.id=#{item.id} then ifnull(a.staffId,0) + #{item.staffIdIncrement} + </when> + </choose> + </foreach> + </trim> + <trim prefix="staffName=(case" suffix="ELSE staffName end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('staffName')) or (colPickMode==1 and !item.containsKey('staffName'))"> + when a.id=#{item.id} then #{item.staffName} + </if> + </foreach> + </trim> + <trim prefix="viewName=(case" suffix="ELSE viewName end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('viewName')) or (colPickMode==1 and !item.containsKey('viewName'))"> + when a.id=#{item.id} then #{item.viewName} + </if> + </foreach> + </trim> + <trim prefix="sumViews=(case" suffix="ELSE sumViews end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <choose> + <when test="(colPickMode==0 and item.containsKey('sumViews')) or (colPickMode==1 and !item.containsKey('sumViews'))"> + when a.id=#{item.id} then #{item.sumViews} + </when> + <when test="(colPickMode==0 and item.containsKey('sumViewsIncrement')) or (colPickMode==1 and !item.containsKey('sumViewsIncrement'))"> + when a.id=#{item.id} then ifnull(a.sumViews,0) + #{item.sumViewsIncrement} + </when> + </choose> + </foreach> + </trim> + <trim prefix="viewContent=(case" suffix="ELSE viewContent end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('viewContent')) or (colPickMode==1 and !item.containsKey('viewContent'))"> + when a.id=#{item.id} then #{item.viewContent} + </if> + </foreach> + </trim> + <trim prefix="remark=(case" suffix="ELSE remark end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <if test="(colPickMode==0 and item.containsKey('remark')) or (colPickMode==1 and !item.containsKey('remark'))"> + when a.id=#{item.id} then #{item.remark} + </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 prefix="viewId=(case" suffix="ELSE viewId end),"> + <foreach collection="data.dataList" item="item" index="index" separator="" > + <choose> + <when test="(colPickMode==0 and item.containsKey('viewId')) or (colPickMode==1 and !item.containsKey('viewId'))"> + when a.id=#{item.id} then #{item.viewId} + </when> + <when test="(colPickMode==0 and item.containsKey('viewIdIncrement')) or (colPickMode==1 and !item.containsKey('viewIdIncrement'))"> + when a.id=#{item.id} then ifnull(a.viewId,0) + #{item.viewIdIncrement} + </when> + </choose> + </foreach> + </trim> </trim> where id in <foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")"> @@ -337,330 +357,452 @@ <!-- 鏉′欢鏄犲皠-浠e弬鏁� --> <sql id="_condition_param_"> <bind name="conditionParamRef" value="${_conditionParam_}"/> + <if test="permissionSql != null and permissionSql != ''"> + ${permissionSql} + </if> + <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 test="conditionParamRef.containsKey('id')"> + <if test="conditionParamRef.id != null "> + ${_conditionType_} a.id = #{${_conditionParam_}.id} </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 test="conditionParamRef.id == null"> + ${_conditionType_} a.id is null </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('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('staffId')"> + <if test="conditionParamRef.staffId != null "> + ${_conditionType_} a.staffId = #{${_conditionParam_}.staffId} </if> - <if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null"> - ${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart} + <if test="conditionParamRef.staffId == null"> + ${_conditionType_} a.staffId is null </if> - <if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null"> - ${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd} + </if> + <if test="conditionParamRef.containsKey('staffIdList') and conditionParamRef.staffIdList.size() > 0"> + ${_conditionType_} a.staffId in + <foreach collection="conditionParamRef.staffIdList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('staffIdNotList') and conditionParamRef.staffIdNotList.size() > 0"> + ${_conditionType_} a.staffId not in + <foreach collection="conditionParamRef.staffIdNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('staffIdStart') and conditionParamRef.staffIdStart != null"> + ${_conditionType_} a.staffId <![CDATA[ >= ]]> #{${_conditionParam_}.staffIdStart} + </if> + <if test="conditionParamRef.containsKey('staffIdEnd') and conditionParamRef.staffIdEnd != null"> + ${_conditionType_} a.staffId <![CDATA[ <= ]]> #{${_conditionParam_}.staffIdEnd} + </if> + + + <if test="conditionParamRef.containsKey('staffName')"> + <if test="conditionParamRef.staffName != null and conditionParamRef.staffName != ''"> + ${_conditionType_} a.staffName like #{${_conditionParam_}.staffName} + </if> + <if test="conditionParamRef.staffName == null"> + ${_conditionType_} a.staffName is null </if> + </if> + <if test="conditionParamRef.containsKey('staffNameList') and conditionParamRef.staffNameList.size() > 0"> + ${_conditionType_} a.staffName in + <foreach collection="conditionParamRef.staffNameList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('staffNameNotList') and conditionParamRef.staffNameNotList.size() > 0"> + ${_conditionType_} a.staffName not in + <foreach collection="conditionParamRef.staffNameNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> - <if test="conditionParamRef.containsKey('staffId')"> - <if test="conditionParamRef.staffId != null "> - ${_conditionType_} a.staffId = #{${_conditionParam_}.staffId} - </if> - <if test="conditionParamRef.staffId == null"> - ${_conditionType_} a.staffId is null - </if> + <if test="conditionParamRef.containsKey('viewName')"> + <if test="conditionParamRef.viewName != null and conditionParamRef.viewName != ''"> + ${_conditionType_} a.viewName like #{${_conditionParam_}.viewName} </if> - <if test="conditionParamRef.containsKey('staffIdList') and conditionParamRef.staffIdList.size() > 0"> - ${_conditionType_} a.staffId in - <foreach collection="conditionParamRef.staffIdList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + <if test="conditionParamRef.viewName == null"> + ${_conditionType_} a.viewName is null </if> - <if test="conditionParamRef.containsKey('staffIdNotList') and conditionParamRef.staffIdNotList.size() > 0"> - ${_conditionType_} a.staffId not in - <foreach collection="conditionParamRef.staffIdNotList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + </if> + <if test="conditionParamRef.containsKey('viewNameList') and conditionParamRef.viewNameList.size() > 0"> + ${_conditionType_} a.viewName in + <foreach collection="conditionParamRef.viewNameList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('viewNameNotList') and conditionParamRef.viewNameNotList.size() > 0"> + ${_conditionType_} a.viewName not in + <foreach collection="conditionParamRef.viewNameNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('sumViews')"> + <if test="conditionParamRef.sumViews != null "> + ${_conditionType_} a.sumViews = #{${_conditionParam_}.sumViews} + </if> + <if test="conditionParamRef.sumViews == null"> + ${_conditionType_} a.sumViews is null + </if> + </if> + <if test="conditionParamRef.containsKey('sumViewsList') and conditionParamRef.sumViewsList.size() > 0"> + ${_conditionType_} a.sumViews in + <foreach collection="conditionParamRef.sumViewsList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('sumViewsNotList') and conditionParamRef.sumViewsNotList.size() > 0"> + ${_conditionType_} a.sumViews not in + <foreach collection="conditionParamRef.sumViewsNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('sumViewsStart') and conditionParamRef.sumViewsStart != null"> + ${_conditionType_} a.sumViews <![CDATA[ >= ]]> #{${_conditionParam_}.sumViewsStart} + </if> + <if test="conditionParamRef.containsKey('sumViewsEnd') and conditionParamRef.sumViewsEnd != null"> + ${_conditionType_} a.sumViews <![CDATA[ <= ]]> #{${_conditionParam_}.sumViewsEnd} + </if> + + + <if test="conditionParamRef.containsKey('viewContent')"> + <if test="conditionParamRef.viewContent != null and conditionParamRef.viewContent != ''"> + ${_conditionType_} a.viewContent like #{${_conditionParam_}.viewContent} </if> - <if test="conditionParamRef.containsKey('staffIdStart') and conditionParamRef.staffIdStart != null"> - ${_conditionType_} a.staffId <![CDATA[ >= ]]> #{${_conditionParam_}.staffIdStart} + <if test="conditionParamRef.viewContent == null"> + ${_conditionType_} a.viewContent is null </if> - <if test="conditionParamRef.containsKey('staffIdEnd') and conditionParamRef.staffIdEnd != null"> - ${_conditionType_} a.staffId <![CDATA[ <= ]]> #{${_conditionParam_}.staffIdEnd} + </if> + <if test="conditionParamRef.containsKey('viewContentList') and conditionParamRef.viewContentList.size() > 0"> + ${_conditionType_} a.viewContent in + <foreach collection="conditionParamRef.viewContentList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('viewContentNotList') and conditionParamRef.viewContentNotList.size() > 0"> + ${_conditionType_} a.viewContent not in + <foreach collection="conditionParamRef.viewContentNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + + <if test="conditionParamRef.containsKey('remark')"> + <if test="conditionParamRef.remark != null and conditionParamRef.remark != ''"> + ${_conditionType_} a.remark like #{${_conditionParam_}.remark} + </if> + <if test="conditionParamRef.remark == null"> + ${_conditionType_} a.remark is null + </if> + </if> + <if test="conditionParamRef.containsKey('remarkList') and conditionParamRef.remarkList.size() > 0"> + ${_conditionType_} a.remark in + <foreach collection="conditionParamRef.remarkList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('remarkNotList') and conditionParamRef.remarkNotList.size() > 0"> + ${_conditionType_} a.remark not in + <foreach collection="conditionParamRef.remarkNotList" 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('staffName')"> - <if test="conditionParamRef.staffName != null and conditionParamRef.staffName != ''"> - ${_conditionType_} a.staffName like #{${_conditionParam_}.staffName} - </if> - <if test="conditionParamRef.staffName == null"> - ${_conditionType_} a.staffName is null - </if> + <if test="conditionParamRef.containsKey('createTime')"> + <if test="conditionParamRef.createTime != null "> + ${_conditionType_} a.createTime = #{${_conditionParam_}.createTime} </if> - <if test="conditionParamRef.containsKey('staffNameList') and conditionParamRef.staffNameList.size() > 0"> - ${_conditionType_} a.staffName in - <foreach collection="conditionParamRef.staffNameList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + <if test="conditionParamRef.createTime == null"> + ${_conditionType_} a.createTime is null </if> - <if test="conditionParamRef.containsKey('staffNameNotList') and conditionParamRef.staffNameNotList.size() > 0"> - ${_conditionType_} a.staffName not in - <foreach collection="conditionParamRef.staffNameNotList" open="(" close=")" index="index" item="item" separator=","> - #{item} - </foreach> + </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('viewName')"> - <if test="conditionParamRef.viewName != null and conditionParamRef.viewName != ''"> - ${_conditionType_} a.viewName like #{${_conditionParam_}.viewName} - </if> - <if test="conditionParamRef.viewName == null"> - ${_conditionType_} a.viewName is null - </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> + <if test="conditionParamRef.containsKey('viewId')"> + <if test="conditionParamRef.viewId != null "> + ${_conditionType_} a.viewId = #{${_conditionParam_}.viewId} </if> - <if test="conditionParamRef.containsKey('viewNameList') and conditionParamRef.viewNameList.size() > 0"> - ${_conditionType_} a.viewName in - <foreach collection="conditionParamRef.viewNameList" open="(" close=")" index="index" item="item" separator=","> + <if test="conditionParamRef.viewId == null"> + ${_conditionType_} a.viewId is null + </if> + </if> + <if test="conditionParamRef.containsKey('viewIdList') and conditionParamRef.viewIdList.size() > 0"> + ${_conditionType_} a.viewId in + <foreach collection="conditionParamRef.viewIdList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('viewIdNotList') and conditionParamRef.viewIdNotList.size() > 0"> + ${_conditionType_} a.viewId not in + <foreach collection="conditionParamRef.viewIdNotList" open="(" close=")" index="index" item="item" separator=","> + #{item} + </foreach> + </if> + <if test="conditionParamRef.containsKey('viewIdStart') and conditionParamRef.viewIdStart != null"> + ${_conditionType_} a.viewId <![CDATA[ >= ]]> #{${_conditionParam_}.viewIdStart} + </if> + <if test="conditionParamRef.containsKey('viewIdEnd') and conditionParamRef.viewIdEnd != null"> + ${_conditionType_} a.viewId <![CDATA[ <= ]]> #{${_conditionParam_}.viewIdEnd} + </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('viewNameNotList') and conditionParamRef.viewNameNotList.size() > 0"> - ${_conditionType_} a.viewName not in - <foreach collection="conditionParamRef.viewNameNotList" open="(" close=")" index="index" item="item" separator=","> + <if test="conditionParamRef.containsKey('staffIdList') and conditionParamRef.staffIdList.size() > 0"> + field(a.staffId, + <foreach collection="conditionParamRef.staffIdList" open="" close=")" index="index" item="item" separator=","> #{item} </foreach> - </if> - <if test="conditionParamRef.containsKey('sumViews')"> - <if test="conditionParamRef.sumViews != null "> - ${_conditionType_} a.sumViews = #{${_conditionParam_}.sumViews} - </if> - <if test="conditionParamRef.sumViews == null"> - ${_conditionType_} a.sumViews is null - </if> + , </if> <if test="conditionParamRef.containsKey('sumViewsList') and conditionParamRef.sumViewsList.size() > 0"> - ${_conditionType_} a.sumViews in - <foreach collection="conditionParamRef.sumViewsList" open="(" close=")" index="index" item="item" separator=","> + field(a.sumViews, + <foreach collection="conditionParamRef.sumViewsList" open="" close=")" index="index" item="item" separator=","> #{item} </foreach> + , </if> - <if test="conditionParamRef.containsKey('sumViewsNotList') and conditionParamRef.sumViewsNotList.size() > 0"> - ${_conditionType_} a.sumViews not in - <foreach collection="conditionParamRef.sumViewsNotList" open="(" close=")" index="index" item="item" separator=","> + <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('sumViewsStart') and conditionParamRef.sumViewsStart != null"> - ${_conditionType_} a.sumViews <![CDATA[ >= ]]> #{${_conditionParam_}.sumViewsStart} - </if> - <if test="conditionParamRef.containsKey('sumViewsEnd') and conditionParamRef.sumViewsEnd != null"> - ${_conditionType_} a.sumViews <![CDATA[ <= ]]> #{${_conditionParam_}.sumViewsEnd} - </if> - - - <if test="conditionParamRef.containsKey('viewContent')"> - <if test="conditionParamRef.viewContent != null and conditionParamRef.viewContent != ''"> - ${_conditionType_} a.viewContent like #{${_conditionParam_}.viewContent} - </if> - <if test="conditionParamRef.viewContent == null"> - ${_conditionType_} a.viewContent is null - </if> - </if> - <if test="conditionParamRef.containsKey('viewContentList') and conditionParamRef.viewContentList.size() > 0"> - ${_conditionType_} a.viewContent in - <foreach collection="conditionParamRef.viewContentList" open="(" close=")" index="index" item="item" separator=","> + <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> - <if test="conditionParamRef.containsKey('viewContentNotList') and conditionParamRef.viewContentNotList.size() > 0"> - ${_conditionType_} a.viewContent not in - <foreach collection="conditionParamRef.viewContentNotList" open="(" close=")" index="index" item="item" separator=","> + <if test="conditionParamRef.containsKey('viewIdList') and conditionParamRef.viewIdList.size() > 0"> + field(a.viewId, + <foreach collection="conditionParamRef.viewIdList" open="" close=")" index="index" item="item" separator=","> #{item} </foreach> + , </if> - - <if test="conditionParamRef.containsKey('remark')"> - <if test="conditionParamRef.remark != null and conditionParamRef.remark != ''"> - ${_conditionType_} a.remark like #{${_conditionParam_}.remark} - </if> - <if test="conditionParamRef.remark == null"> - ${_conditionType_} a.remark is null - </if> - </if> - <if test="conditionParamRef.containsKey('remarkList') and conditionParamRef.remarkList.size() > 0"> - ${_conditionType_} a.remark in - <foreach collection="conditionParamRef.remarkList" open="(" close=")" index="index" item="item" separator=","> + <trim suffixOverrides="," suffix=""> + <foreach collection="orderColList" open="" close="" index="index" item="item" separator=","> + a.${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('remarkNotList') and conditionParamRef.remarkNotList.size() > 0"> - ${_conditionType_} a.remark not in - <foreach collection="conditionParamRef.remarkNotList" open="(" close=")" index="index" item="item" separator=","> + <if test="conditionParamRef.containsKey('staffIdList') and conditionParamRef.staffIdList.size() > 0"> + field(a.staffId, + <foreach collection="conditionParamRef.staffIdList" 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=","> + <if test="conditionParamRef.containsKey('sumViewsList') and conditionParamRef.sumViewsList.size() > 0"> + field(a.sumViews, + <foreach collection="conditionParamRef.sumViewsList" 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=","> + <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('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=","> + field(a.updateUserId, + <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=","> + <if test="conditionParamRef.containsKey('viewIdList') and conditionParamRef.viewIdList.size() > 0"> + field(a.viewId, + <foreach collection="conditionParamRef.viewIdList" 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 - <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 <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('staffId')"> - a.staffId - <if test='orderCol.staffId != null and "DESC".equalsIgnoreCase(orderCol.staffId)'>DESC</if> - , - </if> - <if test="orderCol.containsKey('staffName')"> - a.staffName - <if test='orderCol.staffName != null and "DESC".equalsIgnoreCase(orderCol.staffName)'>DESC</if> - , - </if> - <if test="orderCol.containsKey('viewName')"> - a.viewName - <if test='orderCol.viewName != null and "DESC".equalsIgnoreCase(orderCol.viewName)'>DESC</if> - , - </if> - <if test="orderCol.containsKey('sumViews')"> - a.sumViews - <if test='orderCol.sumViews != null and "DESC".equalsIgnoreCase(orderCol.sumViews)'>DESC</if> - , - </if> - <if test="orderCol.containsKey('viewContent')"> - a.viewContent - <if test='orderCol.viewContent != null and "DESC".equalsIgnoreCase(orderCol.viewContent)'>DESC</if> - , - </if> - <if test="orderCol.containsKey('remark')"> - a.remark - <if test='orderCol.remark != null and "DESC".equalsIgnoreCase(orderCol.remark)'>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> + <if test="orderCol.containsKey('id')"> + a.id + <if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('staffId')"> + a.staffId + <if test='orderCol.staffId != null and "DESC".equalsIgnoreCase(orderCol.staffId)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('staffName')"> + a.staffName + <if test='orderCol.staffName != null and "DESC".equalsIgnoreCase(orderCol.staffName)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('viewName')"> + a.viewName + <if test='orderCol.viewName != null and "DESC".equalsIgnoreCase(orderCol.viewName)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('sumViews')"> + a.sumViews + <if test='orderCol.sumViews != null and "DESC".equalsIgnoreCase(orderCol.sumViews)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('viewContent')"> + a.viewContent + <if test='orderCol.viewContent != null and "DESC".equalsIgnoreCase(orderCol.viewContent)'>DESC</if> + , + </if> + <if test="orderCol.containsKey('remark')"> + a.remark + <if test='orderCol.remark != null and "DESC".equalsIgnoreCase(orderCol.remark)'>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> + <if test="orderCol.containsKey('viewId')"> + a.viewId + <if test='orderCol.viewId != null and "DESC".equalsIgnoreCase(orderCol.viewId)'>DESC</if> + , + </if> </trim> </if> + + </sql> <sql id="_group_by_"> <if test="groupList != null and !groupList.isEmpty()"> -- 2.24.3