Commit 1d77a20e authored by 赵啸非's avatar 赵啸非

基础model类提交

parent 7aed0e36
package com.mortals.xhx.common.model;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.SignAlgorithm;
import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.common.code.MessageProtocolEnum;
import com.mortals.xhx.queue.TbQueueMsgHeaders;
import lombok.Setter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 默认消息头
*
* @author: zxfei
* @date: 2021/11/22 11:14
*/
public class DefaultTbQueueMsgHeaders implements TbQueueMsgHeaders {
@Setter
protected Map<String, String> data = new HashMap<>();
public DefaultTbQueueMsgHeaders() {
data.put(MessageHeader.TIMESTAMP, String.valueOf(new Date().getTime()));
// data.put(MessageHeader.MESSAGESIGN, new String(SecureUtil.sign(SignAlgorithm.SHA256withRSA).sign(data.get(MessageHeader.TIMESTAMP).getBytes())));
// TODO: 2022/4/15
data.put(MessageHeader.MESSAGESIGN, "abcd1234");
data.put(MessageHeader.MESSAGEPROTOCOL, MessageProtocolEnum.JSON.getValue());
// data.put(MessageHeader.TOPIC, "");
// data.put(MessageHeader.QOS, "0");
}
@Override
public void put(String key, String value) {
data.put(key, value);
}
@Override
public String get(String key) {
return data.get(key);
}
@Override
public Map<String, String> getData() {
return data;
}
}
package com.mortals.xhx.common.pdu.access;
import java.util.Date;
import java.util.List;
import com.mortals.framework.model.BaseEntityLong;
/**
* 访问日志Pdu对象
*
* @author zxfei
* @date 2022-08-17
*/
public class AccessLogPdu extends BaseEntityLong {
private static final long serialVersionUID = 1L;
/**
* 追踪Id
*/
private String traceID;
/**
* 应用名称
*/
private String appName;
/**
* 实例IP
*/
private String hostName;
/**
* 日志等级
*/
private String logLevel;
/**
* 请求者IP
*/
private String requestIp;
/**
* 请求方式
*/
private String method;
/**
* 用户浏览器UA
*/
private String ua;
/**
* 请求URI
*/
private String uri;
/**
* 请求参数,json序列化
*/
private String requestParam;
/**
* 响应结果
*/
private String response;
/**
* 日志产生时间
*/
private Date logTime;
/**
* 持续时间,单位毫秒
*/
private Integer duration;
/** 开始 主键ID,主键,自增长 */
private Long idStart;
/** 结束 主键ID,主键,自增长 */
private Long idEnd;
/** 增加 主键ID,主键,自增长 */
private Long idIncrement;
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
/** 追踪Id */
private List<String> traceIDList;
/** 应用名称 */
private List<String> appNameList;
/** 实例IP */
private List<String> hostNameList;
/** 日志等级 */
private List<String> logLevelList;
/** 请求者IP */
private List<String> requestIpList;
/** 请求方式 */
private List<String> methodList;
/** 用户浏览器UA */
private List<String> uaList;
/** 请求URI */
private List<String> uriList;
/** 请求参数,json序列化 */
private List<String> requestParamList;
/** 响应结果 */
private List<String> responseList;
/** 开始 日志产生时间 */
private String logTimeStart;
/** 结束 日志产生时间 */
private String logTimeEnd;
/** 开始 持续时间,单位毫秒 */
private Integer durationStart;
/** 结束 持续时间,单位毫秒 */
private Integer durationEnd;
/** 增加 持续时间,单位毫秒 */
private Integer durationIncrement;
/** 持续时间,单位毫秒列表 */
private List <Integer> durationList;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<AccessLogPdu> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<AccessLogPdu> andConditionList;
public AccessLogPdu(){}
/**
* 获取 追踪Id
* @return String
*/
public String getTraceID(){
return traceID;
}
/**
* 设置 追踪Id
* @param traceID
*/
public void setTraceID(String traceID){
this.traceID = traceID;
}
/**
* 获取 应用名称
* @return String
*/
public String getAppName(){
return appName;
}
/**
* 设置 应用名称
* @param appName
*/
public void setAppName(String appName){
this.appName = appName;
}
/**
* 获取 实例IP
* @return String
*/
public String getHostName(){
return hostName;
}
/**
* 设置 实例IP
* @param hostName
*/
public void setHostName(String hostName){
this.hostName = hostName;
}
/**
* 获取 日志等级
* @return String
*/
public String getLogLevel(){
return logLevel;
}
/**
* 设置 日志等级
* @param logLevel
*/
public void setLogLevel(String logLevel){
this.logLevel = logLevel;
}
/**
* 获取 请求者IP
* @return String
*/
public String getRequestIp(){
return requestIp;
}
/**
* 设置 请求者IP
* @param requestIp
*/
public void setRequestIp(String requestIp){
this.requestIp = requestIp;
}
/**
* 获取 请求方式
* @return String
*/
public String getMethod(){
return method;
}
/**
* 设置 请求方式
* @param method
*/
public void setMethod(String method){
this.method = method;
}
/**
* 获取 用户浏览器UA
* @return String
*/
public String getUa(){
return ua;
}
/**
* 设置 用户浏览器UA
* @param ua
*/
public void setUa(String ua){
this.ua = ua;
}
/**
* 获取 请求URI
* @return String
*/
public String getUri(){
return uri;
}
/**
* 设置 请求URI
* @param uri
*/
public void setUri(String uri){
this.uri = uri;
}
/**
* 获取 请求参数,json序列化
* @return String
*/
public String getRequestParam(){
return requestParam;
}
/**
* 设置 请求参数,json序列化
* @param requestParam
*/
public void setRequestParam(String requestParam){
this.requestParam = requestParam;
}
/**
* 获取 响应结果
* @return String
*/
public String getResponse(){
return response;
}
/**
* 设置 响应结果
* @param response
*/
public void setResponse(String response){
this.response = response;
}
/**
* 获取 日志产生时间
* @return Date
*/
public Date getLogTime(){
return logTime;
}
/**
* 设置 日志产生时间
* @param logTime
*/
public void setLogTime(Date logTime){
this.logTime = logTime;
}
/**
* 获取 持续时间,单位毫秒
* @return Integer
*/
public Integer getDuration(){
return duration;
}
/**
* 设置 持续时间,单位毫秒
* @param duration
*/
public void setDuration(Integer duration){
this.duration = duration;
}
/**
* 获取 开始 主键ID,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 主键ID,主键,自增长
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 主键ID,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 主键ID,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 追踪Id
* @return traceIDList
*/
public List<String> getTraceIDList(){
return this.traceIDList;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public void setTraceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
}
/**
* 获取 应用名称
* @return appNameList
*/
public List<String> getAppNameList(){
return this.appNameList;
}
/**
* 设置 应用名称
* @param appNameList
*/
public void setAppNameList(List<String> appNameList){
this.appNameList = appNameList;
}
/**
* 获取 实例IP
* @return hostNameList
*/
public List<String> getHostNameList(){
return this.hostNameList;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public void setHostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
}
/**
* 获取 日志等级
* @return logLevelList
*/
public List<String> getLogLevelList(){
return this.logLevelList;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public void setLogLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
}
/**
* 获取 请求者IP
* @return requestIpList
*/
public List<String> getRequestIpList(){
return this.requestIpList;
}
/**
* 设置 请求者IP
* @param requestIpList
*/
public void setRequestIpList(List<String> requestIpList){
this.requestIpList = requestIpList;
}
/**
* 获取 请求方式
* @return methodList
*/
public List<String> getMethodList(){
return this.methodList;
}
/**
* 设置 请求方式
* @param methodList
*/
public void setMethodList(List<String> methodList){
this.methodList = methodList;
}
/**
* 获取 用户浏览器UA
* @return uaList
*/
public List<String> getUaList(){
return this.uaList;
}
/**
* 设置 用户浏览器UA
* @param uaList
*/
public void setUaList(List<String> uaList){
this.uaList = uaList;
}
/**
* 获取 请求URI
* @return uriList
*/
public List<String> getUriList(){
return this.uriList;
}
/**
* 设置 请求URI
* @param uriList
*/
public void setUriList(List<String> uriList){
this.uriList = uriList;
}
/**
* 获取 请求参数,json序列化
* @return requestParamList
*/
public List<String> getRequestParamList(){
return this.requestParamList;
}
/**
* 设置 请求参数,json序列化
* @param requestParamList
*/
public void setRequestParamList(List<String> requestParamList){
this.requestParamList = requestParamList;
}
/**
* 获取 响应结果
* @return responseList
*/
public List<String> getResponseList(){
return this.responseList;
}
/**
* 设置 响应结果
* @param responseList
*/
public void setResponseList(List<String> responseList){
this.responseList = responseList;
}
/**
* 获取 开始 日志产生时间
* @return logTimeStart
*/
public String getLogTimeStart(){
return this.logTimeStart;
}
/**
* 设置 开始 日志产生时间
* @param logTimeStart
*/
public void setLogTimeStart(String logTimeStart){
this.logTimeStart = logTimeStart;
}
/**
* 获取 结束 日志产生时间
* @return logTimeEnd
*/
public String getLogTimeEnd(){
return this.logTimeEnd;
}
/**
* 设置 结束 日志产生时间
* @param logTimeEnd
*/
public void setLogTimeEnd(String logTimeEnd){
this.logTimeEnd = logTimeEnd;
}
/**
* 获取 开始 持续时间,单位毫秒
* @return durationStart
*/
public Integer getDurationStart(){
return this.durationStart;
}
/**
* 设置 开始 持续时间,单位毫秒
* @param durationStart
*/
public void setDurationStart(Integer durationStart){
this.durationStart = durationStart;
}
/**
* 获取 结束 持续时间,单位毫秒
* @return $durationEnd
*/
public Integer getDurationEnd(){
return this.durationEnd;
}
/**
* 设置 结束 持续时间,单位毫秒
* @param durationEnd
*/
public void setDurationEnd(Integer durationEnd){
this.durationEnd = durationEnd;
}
/**
* 获取 增加 持续时间,单位毫秒
* @return durationIncrement
*/
public Integer getDurationIncrement(){
return this.durationIncrement;
}
/**
* 设置 增加 持续时间,单位毫秒
* @param durationIncrement
*/
public void setDurationIncrement(Integer durationIncrement){
this.durationIncrement = durationIncrement;
}
/**
* 获取 持续时间,单位毫秒
* @return durationList
*/
public List<Integer> getDurationList(){
return this.durationList;
}
/**
* 设置 持续时间,单位毫秒
* @param durationList
*/
public void setDurationList(List<Integer> durationList){
this.durationList = durationList;
}
/**
* 获取 开始 创建用户
* @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 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;
}
/**
* 设置 主键ID,主键,自增长
* @param id
*/
public AccessLogPdu id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public AccessLogPdu idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public AccessLogPdu idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public AccessLogPdu idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public AccessLogPdu idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 追踪Id
* @param traceID
*/
public AccessLogPdu traceID(String traceID){
setTraceID(traceID);
return this;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public AccessLogPdu traceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
return this;
}
/**
* 设置 应用名称
* @param appName
*/
public AccessLogPdu appName(String appName){
setAppName(appName);
return this;
}
/**
* 设置 应用名称
* @param appNameList
*/
public AccessLogPdu appNameList(List<String> appNameList){
this.appNameList = appNameList;
return this;
}
/**
* 设置 实例IP
* @param hostName
*/
public AccessLogPdu hostName(String hostName){
setHostName(hostName);
return this;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public AccessLogPdu hostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
return this;
}
/**
* 设置 日志等级
* @param logLevel
*/
public AccessLogPdu logLevel(String logLevel){
setLogLevel(logLevel);
return this;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public AccessLogPdu logLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
return this;
}
/**
* 设置 请求者IP
* @param requestIp
*/
public AccessLogPdu requestIp(String requestIp){
setRequestIp(requestIp);
return this;
}
/**
* 设置 请求者IP
* @param requestIpList
*/
public AccessLogPdu requestIpList(List<String> requestIpList){
this.requestIpList = requestIpList;
return this;
}
/**
* 设置 请求方式
* @param method
*/
public AccessLogPdu method(String method){
setMethod(method);
return this;
}
/**
* 设置 请求方式
* @param methodList
*/
public AccessLogPdu methodList(List<String> methodList){
this.methodList = methodList;
return this;
}
/**
* 设置 用户浏览器UA
* @param ua
*/
public AccessLogPdu ua(String ua){
setUa(ua);
return this;
}
/**
* 设置 用户浏览器UA
* @param uaList
*/
public AccessLogPdu uaList(List<String> uaList){
this.uaList = uaList;
return this;
}
/**
* 设置 请求URI
* @param uri
*/
public AccessLogPdu uri(String uri){
setUri(uri);
return this;
}
/**
* 设置 请求URI
* @param uriList
*/
public AccessLogPdu uriList(List<String> uriList){
this.uriList = uriList;
return this;
}
/**
* 设置 请求参数,json序列化
* @param requestParam
*/
public AccessLogPdu requestParam(String requestParam){
setRequestParam(requestParam);
return this;
}
/**
* 设置 请求参数,json序列化
* @param requestParamList
*/
public AccessLogPdu requestParamList(List<String> requestParamList){
this.requestParamList = requestParamList;
return this;
}
/**
* 设置 响应结果
* @param response
*/
public AccessLogPdu response(String response){
setResponse(response);
return this;
}
/**
* 设置 响应结果
* @param responseList
*/
public AccessLogPdu responseList(List<String> responseList){
this.responseList = responseList;
return this;
}
/**
* 设置 持续时间,单位毫秒
* @param duration
*/
public AccessLogPdu duration(Integer duration){
setDuration(duration);
return this;
}
/**
* 设置 开始 持续时间,单位毫秒
* @param durationStart
*/
public AccessLogPdu durationStart(Integer durationStart){
this.durationStart = durationStart;
return this;
}
/**
* 设置 结束 持续时间,单位毫秒
* @param durationEnd
*/
public AccessLogPdu durationEnd(Integer durationEnd){
this.durationEnd = durationEnd;
return this;
}
/**
* 设置 增加 持续时间,单位毫秒
* @param durationIncrement
*/
public AccessLogPdu durationIncrement(Integer durationIncrement){
this.durationIncrement = durationIncrement;
return this;
}
/**
* 设置 持续时间,单位毫秒
* @param durationList
*/
public AccessLogPdu durationList(List<Integer> durationList){
this.durationList = durationList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public AccessLogPdu createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public AccessLogPdu createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public AccessLogPdu createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public AccessLogPdu createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public AccessLogPdu createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<AccessLogPdu> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<AccessLogPdu> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<AccessLogPdu> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<AccessLogPdu> andConditionList){
this.andConditionList = andConditionList;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof AccessLogPdu) {
AccessLogPdu tmp = (AccessLogPdu) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.traceID = "";
this.appName = "";
this.hostName = "";
this.logLevel = "";
this.requestIp = "";
this.method = "";
this.ua = "";
this.uri = "";
this.requestParam = "";
this.response = "";
this.logTime = null;
this.duration = null;
}
}
\ No newline at end of file
package com.mortals.xhx.common.pdu.biz;
import java.util.Date;
import java.util.List;
import com.mortals.framework.model.BaseEntityLong;
/**
* 业务日志Pdu对象
*
* @author zxfei
* @date 2022-08-17
*/
public class BizLogPdu extends BaseEntityLong {
private static final long serialVersionUID = 1L;
/**
* 追踪Id
*/
private String traceID;
/**
* 应用名称
*/
private String appName;
/**
* 实例IP
*/
private String hostName;
/**
* 日志等级
*/
private String logLevel;
/**
* 用户唯一标识
*/
private String userCode;
/**
* 设备唯一标识
*/
private String deviceCode;
/**
* 记录埋点的事件主题,方便实时计算或同步进行数据筛选
*/
private String eventTopic;
/**
* 记录埋点中文名称
*/
private String eventTopicName;
/**
* 事件参数,json
*/
private String msg;
/**
* 日志产生时间
*/
private Date logTime;
/** 开始 主键ID,主键,自增长 */
private Long idStart;
/** 结束 主键ID,主键,自增长 */
private Long idEnd;
/** 增加 主键ID,主键,自增长 */
private Long idIncrement;
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
/** 追踪Id */
private List<String> traceIDList;
/** 应用名称 */
private List<String> appNameList;
/** 实例IP */
private List<String> hostNameList;
/** 日志等级 */
private List<String> logLevelList;
/** 用户唯一标识 */
private List<String> userCodeList;
/** 设备唯一标识 */
private List<String> deviceCodeList;
/** 记录埋点的事件主题,方便实时计算或同步进行数据筛选 */
private List<String> eventTopicList;
/** 记录埋点中文名称 */
private List<String> eventTopicNameList;
/** 事件参数,json */
private List<String> msgList;
/** 开始 日志产生时间 */
private String logTimeStart;
/** 结束 日志产生时间 */
private String logTimeEnd;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<BizLogPdu> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<BizLogPdu> andConditionList;
public BizLogPdu(){}
/**
* 获取 追踪Id
* @return String
*/
public String getTraceID(){
return traceID;
}
/**
* 设置 追踪Id
* @param traceID
*/
public void setTraceID(String traceID){
this.traceID = traceID;
}
/**
* 获取 应用名称
* @return String
*/
public String getAppName(){
return appName;
}
/**
* 设置 应用名称
* @param appName
*/
public void setAppName(String appName){
this.appName = appName;
}
/**
* 获取 实例IP
* @return String
*/
public String getHostName(){
return hostName;
}
/**
* 设置 实例IP
* @param hostName
*/
public void setHostName(String hostName){
this.hostName = hostName;
}
/**
* 获取 日志等级
* @return String
*/
public String getLogLevel(){
return logLevel;
}
/**
* 设置 日志等级
* @param logLevel
*/
public void setLogLevel(String logLevel){
this.logLevel = logLevel;
}
/**
* 获取 用户唯一标识
* @return String
*/
public String getUserCode(){
return userCode;
}
/**
* 设置 用户唯一标识
* @param userCode
*/
public void setUserCode(String userCode){
this.userCode = userCode;
}
/**
* 获取 设备唯一标识
* @return String
*/
public String getDeviceCode(){
return deviceCode;
}
/**
* 设置 设备唯一标识
* @param deviceCode
*/
public void setDeviceCode(String deviceCode){
this.deviceCode = deviceCode;
}
/**
* 获取 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @return String
*/
public String getEventTopic(){
return eventTopic;
}
/**
* 设置 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @param eventTopic
*/
public void setEventTopic(String eventTopic){
this.eventTopic = eventTopic;
}
/**
* 获取 记录埋点中文名称
* @return String
*/
public String getEventTopicName(){
return eventTopicName;
}
/**
* 设置 记录埋点中文名称
* @param eventTopicName
*/
public void setEventTopicName(String eventTopicName){
this.eventTopicName = eventTopicName;
}
/**
* 获取 事件参数,json
* @return String
*/
public String getMsg(){
return msg;
}
/**
* 设置 事件参数,json
* @param msg
*/
public void setMsg(String msg){
this.msg = msg;
}
/**
* 获取 日志产生时间
* @return Date
*/
public Date getLogTime(){
return logTime;
}
/**
* 设置 日志产生时间
* @param logTime
*/
public void setLogTime(Date logTime){
this.logTime = logTime;
}
/**
* 获取 开始 主键ID,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 主键ID,主键,自增长
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 主键ID,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 主键ID,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 追踪Id
* @return traceIDList
*/
public List<String> getTraceIDList(){
return this.traceIDList;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public void setTraceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
}
/**
* 获取 应用名称
* @return appNameList
*/
public List<String> getAppNameList(){
return this.appNameList;
}
/**
* 设置 应用名称
* @param appNameList
*/
public void setAppNameList(List<String> appNameList){
this.appNameList = appNameList;
}
/**
* 获取 实例IP
* @return hostNameList
*/
public List<String> getHostNameList(){
return this.hostNameList;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public void setHostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
}
/**
* 获取 日志等级
* @return logLevelList
*/
public List<String> getLogLevelList(){
return this.logLevelList;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public void setLogLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
}
/**
* 获取 用户唯一标识
* @return userCodeList
*/
public List<String> getUserCodeList(){
return this.userCodeList;
}
/**
* 设置 用户唯一标识
* @param userCodeList
*/
public void setUserCodeList(List<String> userCodeList){
this.userCodeList = userCodeList;
}
/**
* 获取 设备唯一标识
* @return deviceCodeList
*/
public List<String> getDeviceCodeList(){
return this.deviceCodeList;
}
/**
* 设置 设备唯一标识
* @param deviceCodeList
*/
public void setDeviceCodeList(List<String> deviceCodeList){
this.deviceCodeList = deviceCodeList;
}
/**
* 获取 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @return eventTopicList
*/
public List<String> getEventTopicList(){
return this.eventTopicList;
}
/**
* 设置 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @param eventTopicList
*/
public void setEventTopicList(List<String> eventTopicList){
this.eventTopicList = eventTopicList;
}
/**
* 获取 记录埋点中文名称
* @return eventTopicNameList
*/
public List<String> getEventTopicNameList(){
return this.eventTopicNameList;
}
/**
* 设置 记录埋点中文名称
* @param eventTopicNameList
*/
public void setEventTopicNameList(List<String> eventTopicNameList){
this.eventTopicNameList = eventTopicNameList;
}
/**
* 获取 事件参数,json
* @return msgList
*/
public List<String> getMsgList(){
return this.msgList;
}
/**
* 设置 事件参数,json
* @param msgList
*/
public void setMsgList(List<String> msgList){
this.msgList = msgList;
}
/**
* 获取 开始 日志产生时间
* @return logTimeStart
*/
public String getLogTimeStart(){
return this.logTimeStart;
}
/**
* 设置 开始 日志产生时间
* @param logTimeStart
*/
public void setLogTimeStart(String logTimeStart){
this.logTimeStart = logTimeStart;
}
/**
* 获取 结束 日志产生时间
* @return logTimeEnd
*/
public String getLogTimeEnd(){
return this.logTimeEnd;
}
/**
* 设置 结束 日志产生时间
* @param logTimeEnd
*/
public void setLogTimeEnd(String logTimeEnd){
this.logTimeEnd = logTimeEnd;
}
/**
* 获取 开始 创建用户
* @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 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;
}
/**
* 设置 主键ID,主键,自增长
* @param id
*/
public BizLogPdu id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public BizLogPdu idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public BizLogPdu idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public BizLogPdu idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public BizLogPdu idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 追踪Id
* @param traceID
*/
public BizLogPdu traceID(String traceID){
setTraceID(traceID);
return this;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public BizLogPdu traceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
return this;
}
/**
* 设置 应用名称
* @param appName
*/
public BizLogPdu appName(String appName){
setAppName(appName);
return this;
}
/**
* 设置 应用名称
* @param appNameList
*/
public BizLogPdu appNameList(List<String> appNameList){
this.appNameList = appNameList;
return this;
}
/**
* 设置 实例IP
* @param hostName
*/
public BizLogPdu hostName(String hostName){
setHostName(hostName);
return this;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public BizLogPdu hostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
return this;
}
/**
* 设置 日志等级
* @param logLevel
*/
public BizLogPdu logLevel(String logLevel){
setLogLevel(logLevel);
return this;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public BizLogPdu logLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
return this;
}
/**
* 设置 用户唯一标识
* @param userCode
*/
public BizLogPdu userCode(String userCode){
setUserCode(userCode);
return this;
}
/**
* 设置 用户唯一标识
* @param userCodeList
*/
public BizLogPdu userCodeList(List<String> userCodeList){
this.userCodeList = userCodeList;
return this;
}
/**
* 设置 设备唯一标识
* @param deviceCode
*/
public BizLogPdu deviceCode(String deviceCode){
setDeviceCode(deviceCode);
return this;
}
/**
* 设置 设备唯一标识
* @param deviceCodeList
*/
public BizLogPdu deviceCodeList(List<String> deviceCodeList){
this.deviceCodeList = deviceCodeList;
return this;
}
/**
* 设置 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @param eventTopic
*/
public BizLogPdu eventTopic(String eventTopic){
setEventTopic(eventTopic);
return this;
}
/**
* 设置 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @param eventTopicList
*/
public BizLogPdu eventTopicList(List<String> eventTopicList){
this.eventTopicList = eventTopicList;
return this;
}
/**
* 设置 记录埋点中文名称
* @param eventTopicName
*/
public BizLogPdu eventTopicName(String eventTopicName){
setEventTopicName(eventTopicName);
return this;
}
/**
* 设置 记录埋点中文名称
* @param eventTopicNameList
*/
public BizLogPdu eventTopicNameList(List<String> eventTopicNameList){
this.eventTopicNameList = eventTopicNameList;
return this;
}
/**
* 设置 事件参数,json
* @param msg
*/
public BizLogPdu msg(String msg){
setMsg(msg);
return this;
}
/**
* 设置 事件参数,json
* @param msgList
*/
public BizLogPdu msgList(List<String> msgList){
this.msgList = msgList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public BizLogPdu createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public BizLogPdu createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public BizLogPdu createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public BizLogPdu createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public BizLogPdu createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<BizLogPdu> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<BizLogPdu> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<BizLogPdu> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<BizLogPdu> andConditionList){
this.andConditionList = andConditionList;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof BizLogPdu) {
BizLogPdu tmp = (BizLogPdu) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.traceID = "";
this.appName = "";
this.hostName = "";
this.logLevel = "";
this.userCode = "";
this.deviceCode = "";
this.eventTopic = "";
this.eventTopicName = "";
this.msg = "";
this.logTime = null;
}
}
\ No newline at end of file
package com.mortals.xhx.common.pdu.error;
import java.util.Date;
import java.util.List;
import com.mortals.framework.model.BaseEntityLong;
/**
* 异常日志Pdu对象
*
* @author zxfei
* @date 2022-08-17
*/
public class ErrorLogPdu extends BaseEntityLong {
private static final long serialVersionUID = 1L;
/**
* 追踪Id
*/
private String traceID;
/**
* 服务类型,webOS,android,IOS,服务后端
*/
private String serverType;
/**
* 应用名称
*/
private String appName;
/**
* 实例IP
*/
private String hostName;
/**
* 日志等级
*/
private String logLevel;
/**
* 线程号
*/
private String threadNo;
/**
* 异常堆栈信息
*/
private String error;
/**
* 响应结果
*/
private String response;
/**
* 日志产生时间
*/
private Date logTime;
/** 开始 主键ID,主键,自增长 */
private Long idStart;
/** 结束 主键ID,主键,自增长 */
private Long idEnd;
/** 增加 主键ID,主键,自增长 */
private Long idIncrement;
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
/** 追踪Id */
private List<String> traceIDList;
/** 服务类型,webOS,android,IOS,服务后端 */
private List<String> serverTypeList;
/** 应用名称 */
private List<String> appNameList;
/** 实例IP */
private List<String> hostNameList;
/** 日志等级 */
private List<String> logLevelList;
/** 线程号 */
private List<String> threadNoList;
/** 异常堆栈信息 */
private List<String> errorList;
/** 响应结果 */
private List<String> responseList;
/** 开始 日志产生时间 */
private String logTimeStart;
/** 结束 日志产生时间 */
private String logTimeEnd;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<ErrorLogPdu> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<ErrorLogPdu> andConditionList;
public ErrorLogPdu(){}
/**
* 获取 追踪Id
* @return String
*/
public String getTraceID(){
return traceID;
}
/**
* 设置 追踪Id
* @param traceID
*/
public void setTraceID(String traceID){
this.traceID = traceID;
}
/**
* 获取 服务类型,webOS,android,IOS,服务后端
* @return String
*/
public String getServerType(){
return serverType;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverType
*/
public void setServerType(String serverType){
this.serverType = serverType;
}
/**
* 获取 应用名称
* @return String
*/
public String getAppName(){
return appName;
}
/**
* 设置 应用名称
* @param appName
*/
public void setAppName(String appName){
this.appName = appName;
}
/**
* 获取 实例IP
* @return String
*/
public String getHostName(){
return hostName;
}
/**
* 设置 实例IP
* @param hostName
*/
public void setHostName(String hostName){
this.hostName = hostName;
}
/**
* 获取 日志等级
* @return String
*/
public String getLogLevel(){
return logLevel;
}
/**
* 设置 日志等级
* @param logLevel
*/
public void setLogLevel(String logLevel){
this.logLevel = logLevel;
}
/**
* 获取 线程号
* @return String
*/
public String getThreadNo(){
return threadNo;
}
/**
* 设置 线程号
* @param threadNo
*/
public void setThreadNo(String threadNo){
this.threadNo = threadNo;
}
/**
* 获取 异常堆栈信息
* @return String
*/
public String getError(){
return error;
}
/**
* 设置 异常堆栈信息
* @param error
*/
public void setError(String error){
this.error = error;
}
/**
* 获取 响应结果
* @return String
*/
public String getResponse(){
return response;
}
/**
* 设置 响应结果
* @param response
*/
public void setResponse(String response){
this.response = response;
}
/**
* 获取 日志产生时间
* @return Date
*/
public Date getLogTime(){
return logTime;
}
/**
* 设置 日志产生时间
* @param logTime
*/
public void setLogTime(Date logTime){
this.logTime = logTime;
}
/**
* 获取 开始 主键ID,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 主键ID,主键,自增长
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 主键ID,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 主键ID,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 追踪Id
* @return traceIDList
*/
public List<String> getTraceIDList(){
return this.traceIDList;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public void setTraceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
}
/**
* 获取 服务类型,webOS,android,IOS,服务后端
* @return serverTypeList
*/
public List<String> getServerTypeList(){
return this.serverTypeList;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverTypeList
*/
public void setServerTypeList(List<String> serverTypeList){
this.serverTypeList = serverTypeList;
}
/**
* 获取 应用名称
* @return appNameList
*/
public List<String> getAppNameList(){
return this.appNameList;
}
/**
* 设置 应用名称
* @param appNameList
*/
public void setAppNameList(List<String> appNameList){
this.appNameList = appNameList;
}
/**
* 获取 实例IP
* @return hostNameList
*/
public List<String> getHostNameList(){
return this.hostNameList;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public void setHostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
}
/**
* 获取 日志等级
* @return logLevelList
*/
public List<String> getLogLevelList(){
return this.logLevelList;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public void setLogLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
}
/**
* 获取 线程号
* @return threadNoList
*/
public List<String> getThreadNoList(){
return this.threadNoList;
}
/**
* 设置 线程号
* @param threadNoList
*/
public void setThreadNoList(List<String> threadNoList){
this.threadNoList = threadNoList;
}
/**
* 获取 异常堆栈信息
* @return errorList
*/
public List<String> getErrorList(){
return this.errorList;
}
/**
* 设置 异常堆栈信息
* @param errorList
*/
public void setErrorList(List<String> errorList){
this.errorList = errorList;
}
/**
* 获取 响应结果
* @return responseList
*/
public List<String> getResponseList(){
return this.responseList;
}
/**
* 设置 响应结果
* @param responseList
*/
public void setResponseList(List<String> responseList){
this.responseList = responseList;
}
/**
* 获取 开始 日志产生时间
* @return logTimeStart
*/
public String getLogTimeStart(){
return this.logTimeStart;
}
/**
* 设置 开始 日志产生时间
* @param logTimeStart
*/
public void setLogTimeStart(String logTimeStart){
this.logTimeStart = logTimeStart;
}
/**
* 获取 结束 日志产生时间
* @return logTimeEnd
*/
public String getLogTimeEnd(){
return this.logTimeEnd;
}
/**
* 设置 结束 日志产生时间
* @param logTimeEnd
*/
public void setLogTimeEnd(String logTimeEnd){
this.logTimeEnd = logTimeEnd;
}
/**
* 获取 开始 创建用户
* @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 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;
}
/**
* 设置 主键ID,主键,自增长
* @param id
*/
public ErrorLogPdu id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public ErrorLogPdu idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public ErrorLogPdu idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public ErrorLogPdu idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public ErrorLogPdu idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 追踪Id
* @param traceID
*/
public ErrorLogPdu traceID(String traceID){
setTraceID(traceID);
return this;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public ErrorLogPdu traceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
return this;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverType
*/
public ErrorLogPdu serverType(String serverType){
setServerType(serverType);
return this;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverTypeList
*/
public ErrorLogPdu serverTypeList(List<String> serverTypeList){
this.serverTypeList = serverTypeList;
return this;
}
/**
* 设置 应用名称
* @param appName
*/
public ErrorLogPdu appName(String appName){
setAppName(appName);
return this;
}
/**
* 设置 应用名称
* @param appNameList
*/
public ErrorLogPdu appNameList(List<String> appNameList){
this.appNameList = appNameList;
return this;
}
/**
* 设置 实例IP
* @param hostName
*/
public ErrorLogPdu hostName(String hostName){
setHostName(hostName);
return this;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public ErrorLogPdu hostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
return this;
}
/**
* 设置 日志等级
* @param logLevel
*/
public ErrorLogPdu logLevel(String logLevel){
setLogLevel(logLevel);
return this;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public ErrorLogPdu logLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
return this;
}
/**
* 设置 线程号
* @param threadNo
*/
public ErrorLogPdu threadNo(String threadNo){
setThreadNo(threadNo);
return this;
}
/**
* 设置 线程号
* @param threadNoList
*/
public ErrorLogPdu threadNoList(List<String> threadNoList){
this.threadNoList = threadNoList;
return this;
}
/**
* 设置 异常堆栈信息
* @param error
*/
public ErrorLogPdu error(String error){
setError(error);
return this;
}
/**
* 设置 异常堆栈信息
* @param errorList
*/
public ErrorLogPdu errorList(List<String> errorList){
this.errorList = errorList;
return this;
}
/**
* 设置 响应结果
* @param response
*/
public ErrorLogPdu response(String response){
setResponse(response);
return this;
}
/**
* 设置 响应结果
* @param responseList
*/
public ErrorLogPdu responseList(List<String> responseList){
this.responseList = responseList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public ErrorLogPdu createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public ErrorLogPdu createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public ErrorLogPdu createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public ErrorLogPdu createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public ErrorLogPdu createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<ErrorLogPdu> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<ErrorLogPdu> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<ErrorLogPdu> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<ErrorLogPdu> andConditionList){
this.andConditionList = andConditionList;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof ErrorLogPdu) {
ErrorLogPdu tmp = (ErrorLogPdu) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.traceID = "";
this.serverType = "";
this.appName = "";
this.hostName = "";
this.logLevel = "";
this.threadNo = "";
this.error = "";
this.response = "";
this.logTime = null;
}
}
\ No newline at end of file
package com.mortals.xhx.common.pdu.operate;
import java.util.Date;
import java.util.List;
import com.mortals.framework.model.BaseEntityLong;
/**
* 平台用户操作日志业务Pdu对象
*
* @author zxfei
* @date 2022-08-17
*/
public class OperateLogPdu extends BaseEntityLong {
private static final long serialVersionUID = 1L;
/**
* 平台标识
*/
private String platformMark;
/**
* 用户id
*/
private Long userId;
/**
* 用户名称
*/
private String userName;
/**
* 用户登录名
*/
private String loginName;
/**
* 请求地址
*/
private String requestUrl;
/**
* 操作内容,记录操作具体信息,如修改前修改或的数据
*/
private String content;
/**
* 操作IP地址
*/
private String ip;
/**
* 操作时间
*/
private Date logDate;
/**
* 操作类型,0:新增,1:修改,2:删除
*/
private Integer operType;
/** 开始 序号,主键,自增长 */
private Long idStart;
/** 结束 序号,主键,自增长 */
private Long idEnd;
/** 增加 序号,主键,自增长 */
private Long idIncrement;
/** 序号,主键,自增长列表 */
private List <Long> idList;
/** 平台标识 */
private List<String> platformMarkList;
/** 开始 用户id */
private Long userIdStart;
/** 结束 用户id */
private Long userIdEnd;
/** 增加 用户id */
private Long userIdIncrement;
/** 用户id列表 */
private List <Long> userIdList;
/** 用户名称 */
private List<String> userNameList;
/** 用户登录名 */
private List<String> loginNameList;
/** 请求地址 */
private List<String> requestUrlList;
/** 操作内容,记录操作具体信息,如修改前修改或的数据 */
private List<String> contentList;
/** 操作IP地址 */
private List<String> ipList;
/** 开始 操作时间 */
private String logDateStart;
/** 结束 操作时间 */
private String logDateEnd;
/** 开始 操作类型,0:新增,1:修改,2:删除 */
private Integer operTypeStart;
/** 结束 操作类型,0:新增,1:修改,2:删除 */
private Integer operTypeEnd;
/** 增加 操作类型,0:新增,1:修改,2:删除 */
private Integer operTypeIncrement;
/** 操作类型,0:新增,1:修改,2:删除列表 */
private List <Integer> operTypeList;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<OperateLogPdu> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<OperateLogPdu> andConditionList;
public OperateLogPdu(){}
/**
* 获取 平台标识
* @return String
*/
public String getPlatformMark(){
return platformMark;
}
/**
* 设置 平台标识
* @param platformMark
*/
public void setPlatformMark(String platformMark){
this.platformMark = platformMark;
}
/**
* 获取 用户id
* @return Long
*/
public Long getUserId(){
return userId;
}
/**
* 设置 用户id
* @param userId
*/
public void setUserId(Long userId){
this.userId = userId;
}
/**
* 获取 用户名称
* @return String
*/
public String getUserName(){
return userName;
}
/**
* 设置 用户名称
* @param userName
*/
public void setUserName(String userName){
this.userName = userName;
}
/**
* 获取 用户登录名
* @return String
*/
public String getLoginName(){
return loginName;
}
/**
* 设置 用户登录名
* @param loginName
*/
public void setLoginName(String loginName){
this.loginName = loginName;
}
/**
* 获取 请求地址
* @return String
*/
public String getRequestUrl(){
return requestUrl;
}
/**
* 设置 请求地址
* @param requestUrl
*/
public void setRequestUrl(String requestUrl){
this.requestUrl = requestUrl;
}
/**
* 获取 操作内容,记录操作具体信息,如修改前修改或的数据
* @return String
*/
public String getContent(){
return content;
}
/**
* 设置 操作内容,记录操作具体信息,如修改前修改或的数据
* @param content
*/
public void setContent(String content){
this.content = content;
}
/**
* 获取 操作IP地址
* @return String
*/
public String getIp(){
return ip;
}
/**
* 设置 操作IP地址
* @param ip
*/
public void setIp(String ip){
this.ip = ip;
}
/**
* 获取 操作时间
* @return Date
*/
public Date getLogDate(){
return logDate;
}
/**
* 设置 操作时间
* @param logDate
*/
public void setLogDate(Date logDate){
this.logDate = logDate;
}
/**
* 获取 操作类型,0:新增,1:修改,2:删除
* @return Integer
*/
public Integer getOperType(){
return operType;
}
/**
* 设置 操作类型,0:新增,1:修改,2:删除
* @param operType
*/
public void setOperType(Integer operType){
this.operType = operType;
}
/**
* 获取 开始 序号,主键,自增长
* @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 platformMarkList
*/
public List<String> getPlatformMarkList(){
return this.platformMarkList;
}
/**
* 设置 平台标识
* @param platformMarkList
*/
public void setPlatformMarkList(List<String> platformMarkList){
this.platformMarkList = platformMarkList;
}
/**
* 获取 开始 用户id
* @return userIdStart
*/
public Long getUserIdStart(){
return this.userIdStart;
}
/**
* 设置 开始 用户id
* @param userIdStart
*/
public void setUserIdStart(Long userIdStart){
this.userIdStart = userIdStart;
}
/**
* 获取 结束 用户id
* @return $userIdEnd
*/
public Long getUserIdEnd(){
return this.userIdEnd;
}
/**
* 设置 结束 用户id
* @param userIdEnd
*/
public void setUserIdEnd(Long userIdEnd){
this.userIdEnd = userIdEnd;
}
/**
* 获取 增加 用户id
* @return userIdIncrement
*/
public Long getUserIdIncrement(){
return this.userIdIncrement;
}
/**
* 设置 增加 用户id
* @param userIdIncrement
*/
public void setUserIdIncrement(Long userIdIncrement){
this.userIdIncrement = userIdIncrement;
}
/**
* 获取 用户id
* @return userIdList
*/
public List<Long> getUserIdList(){
return this.userIdList;
}
/**
* 设置 用户id
* @param userIdList
*/
public void setUserIdList(List<Long> userIdList){
this.userIdList = userIdList;
}
/**
* 获取 用户名称
* @return userNameList
*/
public List<String> getUserNameList(){
return this.userNameList;
}
/**
* 设置 用户名称
* @param userNameList
*/
public void setUserNameList(List<String> userNameList){
this.userNameList = userNameList;
}
/**
* 获取 用户登录名
* @return loginNameList
*/
public List<String> getLoginNameList(){
return this.loginNameList;
}
/**
* 设置 用户登录名
* @param loginNameList
*/
public void setLoginNameList(List<String> loginNameList){
this.loginNameList = loginNameList;
}
/**
* 获取 请求地址
* @return requestUrlList
*/
public List<String> getRequestUrlList(){
return this.requestUrlList;
}
/**
* 设置 请求地址
* @param requestUrlList
*/
public void setRequestUrlList(List<String> requestUrlList){
this.requestUrlList = requestUrlList;
}
/**
* 获取 操作内容,记录操作具体信息,如修改前修改或的数据
* @return contentList
*/
public List<String> getContentList(){
return this.contentList;
}
/**
* 设置 操作内容,记录操作具体信息,如修改前修改或的数据
* @param contentList
*/
public void setContentList(List<String> contentList){
this.contentList = contentList;
}
/**
* 获取 操作IP地址
* @return ipList
*/
public List<String> getIpList(){
return this.ipList;
}
/**
* 设置 操作IP地址
* @param ipList
*/
public void setIpList(List<String> ipList){
this.ipList = ipList;
}
/**
* 获取 开始 操作时间
* @return logDateStart
*/
public String getLogDateStart(){
return this.logDateStart;
}
/**
* 设置 开始 操作时间
* @param logDateStart
*/
public void setLogDateStart(String logDateStart){
this.logDateStart = logDateStart;
}
/**
* 获取 结束 操作时间
* @return logDateEnd
*/
public String getLogDateEnd(){
return this.logDateEnd;
}
/**
* 设置 结束 操作时间
* @param logDateEnd
*/
public void setLogDateEnd(String logDateEnd){
this.logDateEnd = logDateEnd;
}
/**
* 获取 开始 操作类型,0:新增,1:修改,2:删除
* @return operTypeStart
*/
public Integer getOperTypeStart(){
return this.operTypeStart;
}
/**
* 设置 开始 操作类型,0:新增,1:修改,2:删除
* @param operTypeStart
*/
public void setOperTypeStart(Integer operTypeStart){
this.operTypeStart = operTypeStart;
}
/**
* 获取 结束 操作类型,0:新增,1:修改,2:删除
* @return $operTypeEnd
*/
public Integer getOperTypeEnd(){
return this.operTypeEnd;
}
/**
* 设置 结束 操作类型,0:新增,1:修改,2:删除
* @param operTypeEnd
*/
public void setOperTypeEnd(Integer operTypeEnd){
this.operTypeEnd = operTypeEnd;
}
/**
* 获取 增加 操作类型,0:新增,1:修改,2:删除
* @return operTypeIncrement
*/
public Integer getOperTypeIncrement(){
return this.operTypeIncrement;
}
/**
* 设置 增加 操作类型,0:新增,1:修改,2:删除
* @param operTypeIncrement
*/
public void setOperTypeIncrement(Integer operTypeIncrement){
this.operTypeIncrement = operTypeIncrement;
}
/**
* 获取 操作类型,0:新增,1:修改,2:删除
* @return operTypeList
*/
public List<Integer> getOperTypeList(){
return this.operTypeList;
}
/**
* 设置 操作类型,0:新增,1:修改,2:删除
* @param operTypeList
*/
public void setOperTypeList(List<Integer> operTypeList){
this.operTypeList = operTypeList;
}
/**
* 获取 开始 创建用户
* @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 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;
}
/**
* 设置 序号,主键,自增长
* @param id
*/
public OperateLogPdu id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 序号,主键,自增长
* @param idStart
*/
public OperateLogPdu idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 序号,主键,自增长
* @param idEnd
*/
public OperateLogPdu idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 序号,主键,自增长
* @param idIncrement
*/
public OperateLogPdu idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 序号,主键,自增长
* @param idList
*/
public OperateLogPdu idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 平台标识
* @param platformMark
*/
public OperateLogPdu platformMark(String platformMark){
setPlatformMark(platformMark);
return this;
}
/**
* 设置 平台标识
* @param platformMarkList
*/
public OperateLogPdu platformMarkList(List<String> platformMarkList){
this.platformMarkList = platformMarkList;
return this;
}
/**
* 设置 用户id
* @param userId
*/
public OperateLogPdu userId(Long userId){
setUserId(userId);
return this;
}
/**
* 设置 开始 用户id
* @param userIdStart
*/
public OperateLogPdu userIdStart(Long userIdStart){
this.userIdStart = userIdStart;
return this;
}
/**
* 设置 结束 用户id
* @param userIdEnd
*/
public OperateLogPdu userIdEnd(Long userIdEnd){
this.userIdEnd = userIdEnd;
return this;
}
/**
* 设置 增加 用户id
* @param userIdIncrement
*/
public OperateLogPdu userIdIncrement(Long userIdIncrement){
this.userIdIncrement = userIdIncrement;
return this;
}
/**
* 设置 用户id
* @param userIdList
*/
public OperateLogPdu userIdList(List<Long> userIdList){
this.userIdList = userIdList;
return this;
}
/**
* 设置 用户名称
* @param userName
*/
public OperateLogPdu userName(String userName){
setUserName(userName);
return this;
}
/**
* 设置 用户名称
* @param userNameList
*/
public OperateLogPdu userNameList(List<String> userNameList){
this.userNameList = userNameList;
return this;
}
/**
* 设置 用户登录名
* @param loginName
*/
public OperateLogPdu loginName(String loginName){
setLoginName(loginName);
return this;
}
/**
* 设置 用户登录名
* @param loginNameList
*/
public OperateLogPdu loginNameList(List<String> loginNameList){
this.loginNameList = loginNameList;
return this;
}
/**
* 设置 请求地址
* @param requestUrl
*/
public OperateLogPdu requestUrl(String requestUrl){
setRequestUrl(requestUrl);
return this;
}
/**
* 设置 请求地址
* @param requestUrlList
*/
public OperateLogPdu requestUrlList(List<String> requestUrlList){
this.requestUrlList = requestUrlList;
return this;
}
/**
* 设置 操作内容,记录操作具体信息,如修改前修改或的数据
* @param content
*/
public OperateLogPdu content(String content){
setContent(content);
return this;
}
/**
* 设置 操作内容,记录操作具体信息,如修改前修改或的数据
* @param contentList
*/
public OperateLogPdu contentList(List<String> contentList){
this.contentList = contentList;
return this;
}
/**
* 设置 操作IP地址
* @param ip
*/
public OperateLogPdu ip(String ip){
setIp(ip);
return this;
}
/**
* 设置 操作IP地址
* @param ipList
*/
public OperateLogPdu ipList(List<String> ipList){
this.ipList = ipList;
return this;
}
/**
* 设置 操作类型,0:新增,1:修改,2:删除
* @param operType
*/
public OperateLogPdu operType(Integer operType){
setOperType(operType);
return this;
}
/**
* 设置 开始 操作类型,0:新增,1:修改,2:删除
* @param operTypeStart
*/
public OperateLogPdu operTypeStart(Integer operTypeStart){
this.operTypeStart = operTypeStart;
return this;
}
/**
* 设置 结束 操作类型,0:新增,1:修改,2:删除
* @param operTypeEnd
*/
public OperateLogPdu operTypeEnd(Integer operTypeEnd){
this.operTypeEnd = operTypeEnd;
return this;
}
/**
* 设置 增加 操作类型,0:新增,1:修改,2:删除
* @param operTypeIncrement
*/
public OperateLogPdu operTypeIncrement(Integer operTypeIncrement){
this.operTypeIncrement = operTypeIncrement;
return this;
}
/**
* 设置 操作类型,0:新增,1:修改,2:删除
* @param operTypeList
*/
public OperateLogPdu operTypeList(List<Integer> operTypeList){
this.operTypeList = operTypeList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public OperateLogPdu createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public OperateLogPdu createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public OperateLogPdu createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public OperateLogPdu createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public OperateLogPdu createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<OperateLogPdu> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<OperateLogPdu> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<OperateLogPdu> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<OperateLogPdu> andConditionList){
this.andConditionList = andConditionList;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof OperateLogPdu) {
OperateLogPdu tmp = (OperateLogPdu) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.platformMark = "";
this.userId = null;
this.userName = "";
this.loginName = "";
this.requestUrl = "";
this.content = "";
this.ip = "";
this.logDate = null;
this.operType = null;
}
}
\ No newline at end of file
package com.mortals.xhx.feign.access;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.access.AccessLogPdu;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.feign.IFeign;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 访问日志 Feign接口
* @author zxfei
* @date 2022-08-17
*/
@FeignClient(name = "log-platform", path = "/logservice", fallbackFactory = AccessLogFeignFallbackFactory.class)
public interface IAccessLogFeign extends IFeign {
/**
* 查看访问日志列表
*
* @param accessLogPdu
* @return
*/
@PostMapping(value = "/access/log/list")
Rest<RespData<List<AccessLogPdu>>> list(@RequestBody AccessLogPdu accessLogPdu);
/**
* 查看访问日志
*
* @param id
* @return
*/
@GetMapping(value = "/access/log/info")
Rest<AccessLogPdu> info(@RequestParam(value = "id") Long id);
/**
* 删除访问日志
*
* @param ids
* @return
*/
@GetMapping(value = "/access/log/delete")
Rest<Void> delete(Long[] ids,@RequestHeader("Authorization") String authorization);
/**
* 访问日志保存更新
*
* @param accessLogPdu
* @return
*/
@PostMapping(value = "/access/log/save")
Rest<RespData<AccessLogPdu>> save(@RequestBody AccessLogPdu accessLogPdu,@RequestHeader("Authorization") String authorization);
}
@Slf4j
@Component
class AccessLogFeignFallbackFactory implements FallbackFactory<IAccessLogFeign> {
@Override
public IAccessLogFeign create(Throwable t) {
return new IAccessLogFeign() {
@Override
public Rest<RespData<List<AccessLogPdu>>> list(AccessLogPdu accessLogPdu) {
return Rest.fail("暂时无法获取访问日志列表,请稍后再试!");
}
@Override
public Rest<AccessLogPdu> info(Long id) {
return Rest.fail("暂时无法获取访问日志详细,请稍后再试!");
}
@Override
public Rest<Void> delete(Long[] ids, String authorization) {
return Rest.fail("暂时无法删除访问日志,请稍后再试!");
}
@Override
public Rest<RespData<AccessLogPdu>> save(AccessLogPdu accessLogPdu, String authorization) {
return Rest.fail("暂时无法保存访问日志,请稍后再试!");
}
};
}
}
package com.mortals.xhx.feign.biz;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.biz.BizLogPdu;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.feign.IFeign;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 业务日志 Feign接口
* @author zxfei
* @date 2022-08-17
*/
@FeignClient(name = "log-platform", path = "/logservice", fallbackFactory = BizLogFeignFallbackFactory.class)
public interface IBizLogFeign extends IFeign {
/**
* 查看业务日志列表
*
* @param bizLogPdu
* @return
*/
@PostMapping(value = "/biz/log/list")
Rest<RespData<List<BizLogPdu>>> list(@RequestBody BizLogPdu bizLogPdu);
/**
* 查看业务日志
*
* @param id
* @return
*/
@GetMapping(value = "/biz/log/info")
Rest<BizLogPdu> info(@RequestParam(value = "id") Long id);
/**
* 删除业务日志
*
* @param ids
* @return
*/
@GetMapping(value = "/biz/log/delete")
Rest<Void> delete(Long[] ids,@RequestHeader("Authorization") String authorization);
/**
* 业务日志保存更新
*
* @param bizLogPdu
* @return
*/
@PostMapping(value = "/biz/log/save")
Rest<RespData<BizLogPdu>> save(@RequestBody BizLogPdu bizLogPdu,@RequestHeader("Authorization") String authorization);
}
@Slf4j
@Component
class BizLogFeignFallbackFactory implements FallbackFactory<IBizLogFeign> {
@Override
public IBizLogFeign create(Throwable t) {
return new IBizLogFeign() {
@Override
public Rest<RespData<List<BizLogPdu>>> list(BizLogPdu bizLogPdu) {
return Rest.fail("暂时无法获取业务日志列表,请稍后再试!");
}
@Override
public Rest<BizLogPdu> info(Long id) {
return Rest.fail("暂时无法获取业务日志详细,请稍后再试!");
}
@Override
public Rest<Void> delete(Long[] ids, String authorization) {
return Rest.fail("暂时无法删除业务日志,请稍后再试!");
}
@Override
public Rest<RespData<BizLogPdu>> save(BizLogPdu bizLogPdu, String authorization) {
return Rest.fail("暂时无法保存业务日志,请稍后再试!");
}
};
}
}
package com.mortals.xhx.feign.error;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.error.ErrorLogPdu;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.feign.IFeign;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 异常日志 Feign接口
* @author zxfei
* @date 2022-08-17
*/
@FeignClient(name = "log-platform", path = "/logservice", fallbackFactory = ErrorLogFeignFallbackFactory.class)
public interface IErrorLogFeign extends IFeign {
/**
* 查看异常日志列表
*
* @param errorLogPdu
* @return
*/
@PostMapping(value = "/error/log/list")
Rest<RespData<List<ErrorLogPdu>>> list(@RequestBody ErrorLogPdu errorLogPdu);
/**
* 查看异常日志
*
* @param id
* @return
*/
@GetMapping(value = "/error/log/info")
Rest<ErrorLogPdu> info(@RequestParam(value = "id") Long id);
/**
* 删除异常日志
*
* @param ids
* @return
*/
@GetMapping(value = "/error/log/delete")
Rest<Void> delete(Long[] ids,@RequestHeader("Authorization") String authorization);
/**
* 异常日志保存更新
*
* @param errorLogPdu
* @return
*/
@PostMapping(value = "/error/log/save")
Rest<RespData<ErrorLogPdu>> save(@RequestBody ErrorLogPdu errorLogPdu,@RequestHeader("Authorization") String authorization);
}
@Slf4j
@Component
class ErrorLogFeignFallbackFactory implements FallbackFactory<IErrorLogFeign> {
@Override
public IErrorLogFeign create(Throwable t) {
return new IErrorLogFeign() {
@Override
public Rest<RespData<List<ErrorLogPdu>>> list(ErrorLogPdu errorLogPdu) {
return Rest.fail("暂时无法获取异常日志列表,请稍后再试!");
}
@Override
public Rest<ErrorLogPdu> info(Long id) {
return Rest.fail("暂时无法获取异常日志详细,请稍后再试!");
}
@Override
public Rest<Void> delete(Long[] ids, String authorization) {
return Rest.fail("暂时无法删除异常日志,请稍后再试!");
}
@Override
public Rest<RespData<ErrorLogPdu>> save(ErrorLogPdu errorLogPdu, String authorization) {
return Rest.fail("暂时无法保存异常日志,请稍后再试!");
}
};
}
}
package com.mortals.xhx.feign.operate;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.operate.OperateLogPdu;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.feign.IFeign;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 平台用户操作日志业务 Feign接口
* @author zxfei
* @date 2022-08-17
*/
@FeignClient(name = "log-platform", path = "/logservice", fallbackFactory = OperateLogFeignFallbackFactory.class)
public interface IOperateLogFeign extends IFeign {
/**
* 查看平台用户操作日志业务列表
*
* @param operateLogPdu
* @return
*/
@PostMapping(value = "/operate/log/list")
Rest<RespData<List<OperateLogPdu>>> list(@RequestBody OperateLogPdu operateLogPdu);
/**
* 查看平台用户操作日志业务
*
* @param id
* @return
*/
@GetMapping(value = "/operate/log/info")
Rest<OperateLogPdu> info(@RequestParam(value = "id") Long id);
/**
* 删除平台用户操作日志业务
*
* @param ids
* @return
*/
@GetMapping(value = "/operate/log/delete")
Rest<Void> delete(Long[] ids,@RequestHeader("Authorization") String authorization);
/**
* 平台用户操作日志业务保存更新
*
* @param operateLogPdu
* @return
*/
@PostMapping(value = "/operate/log/save")
Rest<RespData<OperateLogPdu>> save(@RequestBody OperateLogPdu operateLogPdu,@RequestHeader("Authorization") String authorization);
}
@Slf4j
@Component
class OperateLogFeignFallbackFactory implements FallbackFactory<IOperateLogFeign> {
@Override
public IOperateLogFeign create(Throwable t) {
return new IOperateLogFeign() {
@Override
public Rest<RespData<List<OperateLogPdu>>> list(OperateLogPdu operateLogPdu) {
return Rest.fail("暂时无法获取平台用户操作日志业务列表,请稍后再试!");
}
@Override
public Rest<OperateLogPdu> info(Long id) {
return Rest.fail("暂时无法获取平台用户操作日志业务详细,请稍后再试!");
}
@Override
public Rest<Void> delete(Long[] ids, String authorization) {
return Rest.fail("暂时无法删除平台用户操作日志业务,请稍后再试!");
}
@Override
public Rest<RespData<OperateLogPdu>> save(OperateLogPdu operateLogPdu, String authorization) {
return Rest.fail("暂时无法保存平台用户操作日志业务,请稍后再试!");
}
};
}
}
package com.mortals.xhx.queue;
import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.extern.apachecommons.CommonsLog;
import org.slf4j.Logger;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 服务端消费消息服务
*
* @author: zxfei
* @date: 2021/11/22 11:31
*/
@CommonsLog
public class ConsumerService {
private long pollDuration;
protected volatile ExecutorService consumersExecutor;
@Getter
private TbQueueConsumer<TbQueueMsg> mainConsumer;
private String currentIp;
protected volatile boolean stopped = false;
public void init(TbQueueConsumer<TbQueueMsg> mainConsumer) {
this.consumersExecutor = Executors.newCachedThreadPool();
this.mainConsumer = mainConsumer;
launchMainConsumers();
this.mainConsumer.subscribe();
}
public ConsumerService(long pollDuration, String currentIp) {
this.pollDuration = pollDuration;
this.currentIp = currentIp;
}
/**
* 消费服务主线程
*/
protected void launchMainConsumers() {
consumersExecutor.submit(() -> {
while (!stopped) {
try {
//todo
List<TbQueueMsg> poll = mainConsumer.poll(pollDuration);
List<TbQueueMsg> msgs = poll;
if (msgs.isEmpty()) {
continue;
}
for (TbQueueMsg item : msgs) {
//todo
// }
}
} catch (Exception e) {
log.error("Exception", e);
}
}
log.info("Queue Consumer stopped.");
});
}
public void destroy() {
if (!stopped) {
stopMainConsumers();
}
stopped = true;
if (consumersExecutor != null) {
consumersExecutor.shutdownNow();
}
}
protected void stopMainConsumers() {
if (mainConsumer != null) {
mainConsumer.unsubscribe();
}
}
}
package com.mortals.xhx.queue;
import com.mortals.xhx.queue.processing.AbstractConsumerService;
import com.mortals.xhx.queue.provider.TbCoreQueueFactory;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationEvent;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.List;
import java.util.concurrent.LinkedBlockingQueue;
@Service
@Slf4j
public class DefaultTbCoreConsumerService extends AbstractConsumerService<TbQueueMsg> implements TbCoreConsumerService {
@Value("${queue.core.poll-interval}")
private long pollDuration;//队列拉取时间间隔,单位毫秒
@Value("${queue.core.pack-processing-timeout}")
private long packProcessingTimeout;
@Getter
private LinkedBlockingQueue<TbQueueMsg> comsureQueue = new LinkedBlockingQueue<>();
@Getter
private TbQueueConsumer<TbQueueMsg> mainConsumer;
@Getter
private List<TbQueueConsumer<TbQueueMsg>> consumerList;
/**
* 根据配置文件动态加载kafka,rabbmitMq等工厂类
* @param tbCoreQueueFactory
*/
public DefaultTbCoreConsumerService(TbCoreQueueFactory tbCoreQueueFactory) {
//通过工厂类创建通道
this.mainConsumer = tbCoreQueueFactory.createMsgConsumer();
}
@PostConstruct
public void init() {
log.info("初始化消费服务线程");
super.init("core-consumer");
}
@PreDestroy
public void destroy() {
super.destroy();
}
@Override
public void onApplicationEvent(ApplicationEvent applicationEvent) {
}
@Override
protected void launchMainConsumers() {
log.info("启动消费线程!");
consumersExecutor.submit(() -> {
while (!stopped) {
try {
List<TbQueueMsg> msgs = mainConsumer.poll(pollDuration);
if (msgs.isEmpty()) {
continue;
}
for (TbQueueMsg item : msgs) {
comsureQueue.offer(item);
}
mainConsumer.commit();
} catch (Exception e) {
if (!stopped) {
// log.warn("Failed to obtain messages from queue.", e);
try {
Thread.sleep(pollDuration);
} catch (InterruptedException e2) {
// log.trace("Failed to wait until the server has capacity to handle new requests", e2);
}
}
}
}
log.info(" Core Consumer stopped.");
});
}
@Override
protected void stopMainConsumers() {
if (mainConsumer != null) {
mainConsumer.unsubscribe();
}
}
@Override
protected void launchConsumersList() {
log.info("启动消费线程组!");
consumerList.stream().forEach(consumer -> {
log.info("channel number:{}"+consumer.getChannelNumber());
consumersExecutor.submit(() -> {
while (!stopped) {
try {
List<TbQueueMsg> msgs = consumer.poll(pollDuration);
if (msgs.isEmpty()) {
continue;
}
for (TbQueueMsg item : msgs) {
comsureQueue.offer(item);
}
consumer.commit();
} catch (Exception e) {
if (!stopped) {
try {
Thread.sleep(pollDuration);
} catch (InterruptedException e2) {
log.trace("Failed to wait until the server has capacity to handle new requests", e2);
}
}
}
}
});
});
}
}
package com.mortals.xhx.queue;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.common.model.DefaultTbQueueMsgHeaders;
import com.mortals.xhx.common.model.MessageHeader;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.UUID;
/**
* 默认消息
*
* @author: zxfei
* @date: 2021/11/22 10:59
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DefaultTbQueueMsg implements TbQueueMsg {
/**
* key 唯一标识
*/
private String key;
/**
* 数据载体
*/
private String data;
/**
* 消息头信息
*/
private TbQueueMsgHeaders headers;
public DefaultTbQueueMsg(TbQueueMsg msg) {
this.key = msg.getKey();
this.data = msg.getData();
TbQueueMsgHeaders headers = new DefaultTbQueueMsgHeaders();
msg.getHeaders().getData().entrySet().stream().forEach(item->
headers.put(item.getKey(),item.getValue()));
this.headers = headers;
}
public static void main(String[] args) {
TbQueueMsgHeaders header = new DefaultTbQueueMsgHeaders();
header.put(MessageHeader.MESSAGETYPE, "UPGREAD");
// header.put(MessageHeader.CLIENTID, "abcd1234");
// header.put(MessageHeader.TIMESTAMP, DateUtils.getCurrStrDateTime());
//header.put(MessageHeader.MESSAGESIGN,"ssdafasdfasdfasfd");
TbQueueMsg queueMsg = new DefaultTbQueueMsg(IdUtil.fastUUID(), "eyJmbG93bnVtIjoiQzEwMTEifQ==" , header);
String ret = JSON.toJSONString(queueMsg);
System.out.println("pro:"+ret);
//
// DefaultTbQueueMsg qu = JSON.parseObject(ret, DefaultTbQueueMsg.class);
}
}
package com.mortals.xhx.queue;
import com.mortals.xhx.common.BrokerConfig;
/**
* 消息队列工厂类,初始化MQ类型(kafka,rabbitMQ,memory)
*
* @author: zxfei
* @date: 2021/11/22 10:57
*/
public interface MessageQueueFactory {
/**
* 创建消息生产者
* @return
*/
TbQueueProducer<TbQueueMsg> createMsgProducer(BrokerConfig brokerConfig);
/**
* 创建消息消费者
* @return
*/
TbQueueConsumer<TbQueueMsg> createMsgConsumer(BrokerConfig brokerConfig);
}
package com.mortals.xhx.queue;
import org.springframework.context.ApplicationListener;
public interface TbCoreConsumerService extends ApplicationListener {
}
package com.mortals.xhx.queue;
/**
* 队列回调消息
*
* @author: zxfei
* @date: 2021/11/22 10:57
*/
public interface TbQueueCallback {
void onSuccess(TbQueueMsgMetadata metadata);
void onFailure(Throwable t);
}
package com.mortals.xhx.queue;
import java.util.List;
import java.util.Set;
/**
* 队列消息消费者接口
*
* @author: zxfei
* @date: 2021/11/22 10:57
*/
public interface TbQueueConsumer<T extends TbQueueMsg> {
/**
* 获取当topic
* @return
*/
String getTopic();
/**
* 订阅
*/
void subscribe();
/**
* 订阅(分区)
* @param partitions
*/
void subscribe(Set<TopicPartitionInfo> partitions);
/**
* 取消订阅
*/
void unsubscribe();
/**
* 取消订阅消息
* @param partitions
*/
void unsubscribe(Set<TopicPartitionInfo> partitions);
/**
* 拉取消息间隔
* @param durationInMillis
* @return
*/
List<T> poll(long durationInMillis);
/**
* 提交
*/
void commit();
/**
* 通道
* @return
*/
String getChannelNumber();
}
package com.mortals.xhx.queue;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Data
@Component
public class TbQueueCoreSettings {
@Value("${queue.core.topic}")
private String topic;
@Value("${queue.core.partitions}")
private int partitions;
}
package com.mortals.xhx.queue;
import java.util.UUID;
/**
* 队列消息体
*
* @author: zxfei
* @date: 2021/11/22 10:56
*/
public interface TbQueueMsg {
String getKey();
TbQueueMsgHeaders getHeaders();
String getData();
}
package com.mortals.xhx.queue;
public interface TbQueueMsgDecoder<T extends TbQueueMsg> {
T decode(TbQueueMsg msg);
}
package com.mortals.xhx.queue;
import java.util.Map;
/**
* 消息头信息
*
* @author: zxfei
* @date: 2021/11/22 10:56
*/
public interface TbQueueMsgHeaders {
void put(String key, String value);
String get(String key);
Map<String, String> getData();
void setData(Map<String, String> data);
}
package com.mortals.xhx.queue;
/**
* 队列消息元数据
*
* @author: zxfei
* @date: 2021/11/22 10:56
*/
public interface TbQueueMsgMetadata {
String getMessageId();
}
package com.mortals.xhx.queue;
/**
* 队列消息生产者
*
* @author: zxfei
* @date: 2021/11/22 10:55
*/
public interface TbQueueProducer<T extends TbQueueMsg> {
void init();
String getDefaultTopic();
//发送消息
void send(TopicPartitionInfo tpi, T msg, TbQueueCallback callback);
void stop();
void queueDeclare(TopicPartitionInfo tpi, TbQueueCallback callback);
void queueDel(String queue, TbQueueCallback callback);
}
package com.mortals.xhx.queue;
import lombok.Builder;
import lombok.Data;
import java.util.Objects;
import java.util.Optional;
@Data
public class TopicPartitionInfo {
/**
* topic名称
*/
private String topic;
/**
* 分区,kafka存在
*/
private Integer partition;
/**
* 交换机名称,rabbmitmq存在
*/
private String exchangeName;
/**
* 带分区的topic
*/
private String fullTopicName;
@Builder
public TopicPartitionInfo(String topic, Integer partition, String exchangeName) {
this.topic = topic;
this.partition = partition;
this.exchangeName = exchangeName;
String tmp = topic;
if (partition != null) {
tmp += "." + partition;
}
this.fullTopicName = tmp;
}
public TopicPartitionInfo newByTopic(String topic) {
return new TopicPartitionInfo(topic, this.partition, "");
}
public String getTopic() {
return topic;
}
public Optional<Integer> getPartition() {
return Optional.ofNullable(partition);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TopicPartitionInfo that = (TopicPartitionInfo) o;
return topic.equals(that.topic) &&
Objects.equals(partition, that.partition) &&
fullTopicName.equals(that.fullTopicName);
}
@Override
public int hashCode() {
return Objects.hash(fullTopicName);
}
}
package com.mortals.xhx.queue.kafka;
import com.alibaba.fastjson.JSON;
import com.mortals.xhx.queue.TbQueueConsumer;
import com.mortals.xhx.queue.TbQueueMsg;
import com.mortals.xhx.queue.TopicPartitionInfo;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
import static java.util.Collections.emptyList;
/**
* 抽象队列消费者模板
*
* @author: zxfei
* @date: 2021/11/22 11:12
*/
@Slf4j
public abstract class AbstractTbQueueConsumerTemplate<R, T extends TbQueueMsg> implements TbQueueConsumer<T> {
private volatile boolean subscribed;
protected volatile boolean stopped = false;
protected volatile Set<TopicPartitionInfo> partitions;
protected final ReentrantLock consumerLock = new ReentrantLock();
final Queue<Set<TopicPartitionInfo>> subscribeQueue = new ConcurrentLinkedQueue<>();
@Getter
private final String topic;
public AbstractTbQueueConsumerTemplate(String topic) {
this.topic = topic;
}
@Override
public void subscribe() {
if (stopped) {
log.error("consumer 线程已停止 topic {}", topic);
return;
}
subscribeQueue.add(Collections.singleton(new TopicPartitionInfo(topic, null,"")));
}
@Override
public void subscribe(Set<TopicPartitionInfo> partitions) {
// log.info("订阅的topics {} ", JSON.toJSONString(partitions));
if (stopped) {
log.error("订阅服务已停止,topic {}", topic);
return;
}
subscribeQueue.add(partitions);
}
@Override
public List<T> poll(long durationInMillis) {
List<R> records;
long startNanos = System.nanoTime();
if (stopped) {
return errorAndReturnEmpty();
}
if (!subscribed && partitions == null && subscribeQueue.isEmpty()) {
return sleepAndReturnEmpty(startNanos, durationInMillis);
}
if (consumerLock.isLocked()) {
log.error("poll. consumerLock is locked. will wait with no timeout. it looks like a race conditions or deadlock", new RuntimeException("stacktrace"));
}
consumerLock.lock();
try {
//更新订阅的主题
while (!subscribeQueue.isEmpty()) {
subscribed = false;
partitions = subscribeQueue.poll();
}
//新增新的订阅信息
if (!subscribed) {
List<String> topicNames = partitions.stream().map(TopicPartitionInfo::getFullTopicName).collect(Collectors.toList());
//新加订阅项
doSubscribe(topicNames);
subscribed = true;
}
records = partitions.isEmpty() ? emptyList() : doPoll(durationInMillis);
} finally {
consumerLock.unlock();
}
if (records.isEmpty()) {
return sleepAndReturnEmpty(startNanos, durationInMillis);
}
return decodeRecords(records);
}
List<T> decodeRecords(List<R> records) {
List<T> result =records.stream().map(record->decode(record)).collect(Collectors.toList());
return result;
}
List<T> errorAndReturnEmpty() {
log.error("poll invoked but consumer stopped for topic:" + topic, new RuntimeException("stacktrace"));
return emptyList();
}
List<T> sleepAndReturnEmpty(final long startNanos, final long durationInMillis) {
long durationNanos = TimeUnit.MILLISECONDS.toNanos(durationInMillis);
long spentNanos = System.nanoTime() - startNanos;
if (spentNanos < durationNanos) {
try {
Thread.sleep(Math.max(TimeUnit.NANOSECONDS.toMillis(durationNanos - spentNanos), 1));
} catch (InterruptedException e) {
if (!stopped) {
log.error("Failed to wait", e);
}
}
}
return emptyList();
}
@Override
public void commit() {
if (consumerLock.isLocked()) {
log.error("commit. consumerLock is locked. will wait with no timeout. it looks like a race conditions or deadlock", new RuntimeException("stacktrace"));
}
consumerLock.lock();
try {
doCommit();
} finally {
consumerLock.unlock();
}
}
@Override
public void unsubscribe() {
log.info("unsubscribe topic and stop consumer {}", getTopic());
stopped = true;
consumerLock.lock();
try {
doUnsubscribe();
} finally {
consumerLock.unlock();
}
}
abstract protected List<R> doPoll(long durationInMillis);
abstract protected T decode(R record);
abstract protected void doSubscribe(List<String> topicNames);
abstract protected void doCommit();
abstract protected void doUnsubscribe();
}
package com.mortals.xhx.queue.kafka;
import com.mortals.xhx.common.model.DefaultTbQueueMsgHeaders;
import com.mortals.xhx.queue.TbQueueMsg;
import com.mortals.xhx.queue.TbQueueMsgHeaders;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import java.util.UUID;
public class KafkaTbQueueMsg implements TbQueueMsg {
private final String key;
private final TbQueueMsgHeaders headers;
private final byte[] data;
public KafkaTbQueueMsg(ConsumerRecord<String, byte[]> record) {
this.key = record.key();
TbQueueMsgHeaders headers = new DefaultTbQueueMsgHeaders();
record.headers().forEach(header -> {
headers.put(header.key(), new String(header.value()));
});
this.headers = headers;
this.data = record.value();
}
@Override
public String getKey() {
return key;
}
@Override
public TbQueueMsgHeaders getHeaders() {
return headers;
}
@Override
public String getData() {
return data.toString();
}
}
package com.mortals.xhx.queue.kafka;
import com.mortals.xhx.queue.TbQueueMsgMetadata;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.apache.kafka.clients.producer.RecordMetadata;
/**
* 队列元数据
*
* @author: zxfei
* @date: 2021/11/22 14:40
*/
@Data
@AllArgsConstructor
public class KafkaTbQueueMsgMetadata implements TbQueueMsgMetadata {
private RecordMetadata metadata;
private String messageId;
}
package com.mortals.xhx.queue.kafka;
import com.mortals.xhx.queue.TbQueueMsg;
import com.mortals.xhx.queue.TopicPartitionInfo;
import lombok.Builder;
import lombok.extern.apachecommons.CommonsLog;
import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.slf4j.Logger;
import java.io.IOException;
import java.time.Duration;
import java.util.*;
/**
* kafka consumer 消费者模板
*
* @author: zxfei
* @date: 2021/11/22 11:21
*/
@Slf4j
public class TbKafkaConsumerTemplate<T extends TbQueueMsg> extends AbstractTbQueueConsumerTemplate<ConsumerRecord<String, byte[]>, T> {
private final KafkaConsumer<String, byte[]> consumer;
private final String groupId;
private final TbKafkaDecoder<T> decoder;
@Builder
private TbKafkaConsumerTemplate(TbKafkaSettings settings, String clientId, TbKafkaDecoder<T> decoder, String groupId, String topic) {
//默认topic
super(topic);
Properties props = settings.toConsumerProps();
//多个输入源的时候 需要配置
//props.put(ConsumerConfig.CLIENT_ID_CONFIG, clientId);
if (groupId != null) {
props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
}
this.groupId = groupId;
this.consumer = new KafkaConsumer<>(props);
this.decoder = decoder;
}
@Override
protected void doSubscribe(List<String> topicNames) {
if (!topicNames.isEmpty()) {
// topicNames.forEach(admin::createTopicIfNotExists);
log.info("subscribe topics {}", topicNames);
consumer.subscribe(topicNames);
} else {
log.info("unsubscribe due to empty topic list");
consumer.unsubscribe();
}
}
@Override
protected List<ConsumerRecord<String, byte[]>> doPoll(long durationInMillis) {
ConsumerRecords<String, byte[]> records = consumer.poll(Duration.ofMillis(durationInMillis));
records.forEach(record -> {
System.out.printf("topic = %s ,partition = %d,offset = %d, key = %s, value = %s%n", record.topic(), record.partition(),
record.offset(), record.key(), record.value());
});
if (records.isEmpty()) {
return Collections.emptyList();
} else {
List<ConsumerRecord<String, byte[]>> recordList = new ArrayList<>(256);
records.forEach(recordList::add);
return recordList;
}
}
@Override
public T decode(ConsumerRecord<String, byte[]> record) {
return decoder.decode(new KafkaTbQueueMsg(record));
}
@Override
protected void doCommit() {
//同步提交,线程会阻塞,直到当前批次offset提交成功
consumer.commitAsync();
}
@Override
protected void doUnsubscribe() {
log.info("unsubscribe topic and close consumer for topic {}", getTopic());
if (consumer != null) {
//consumer.unsubscribe();
consumer.close();
}
}
public static void main(String[] args) {
// TbKafkaConsumerTemplate.builder().
}
@Override
public void unsubscribe(Set<TopicPartitionInfo> partitions) {
}
@Override
public String getChannelNumber() {
return "1231";
}
}
package com.mortals.xhx.queue.kafka;
import com.mortals.xhx.queue.TbQueueMsg;
import java.io.IOException;
/**
* 队列消息编码
*
* @author: zxfei
* @date: 2021/11/22 11:22
*/
public interface TbKafkaDecoder<T extends TbQueueMsg> {
T decode(TbQueueMsg msg);
}
package com.mortals.xhx.queue.kafka;
import com.mortals.xhx.queue.TbQueueCallback;
import com.mortals.xhx.queue.TbQueueMsg;
import com.mortals.xhx.queue.TbQueueProducer;
import com.mortals.xhx.queue.TopicPartitionInfo;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.header.Header;
import org.apache.kafka.common.header.internals.RecordHeader;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* kafka 生产者模板
*
* @author: zxfei
* @date: 2021/11/22 11:23
*/
@Data
@Slf4j
public class TbKafkaProducerTemplate<T extends TbQueueMsg> implements TbQueueProducer<T> {
/**
* 生产者
*/
private KafkaProducer<String, byte[]> producer;
/**
* kafka 配置信息
*/
private TbKafkaSettings settings;
private String defaultTopic;
/**
* topic组
*/
private Set<TopicPartitionInfo> topics;
@Builder
private TbKafkaProducerTemplate(TbKafkaSettings settings, String defaultTopic) {
this.settings = settings;
//初始化生产者参数
this.producer = new KafkaProducer<>(settings.toProducerProps());
this.defaultTopic = defaultTopic;
topics = ConcurrentHashMap.newKeySet();
}
@Override
public void init() {
}
@Override
public void send(TopicPartitionInfo tpi, T msg, TbQueueCallback callback) {
String key = msg.getKey().toString();
byte[] data = msg.getData().getBytes();
ProducerRecord<String, byte[]> record;
if (tpi.getTopic() == null) {
tpi.setTopic(this.defaultTopic);
}
Iterable<Header> headers = msg.getHeaders().getData().entrySet().stream().map(e -> new RecordHeader(e.getKey(), e.getValue().getBytes())).collect(Collectors.toList());
record = new ProducerRecord<>(tpi.getTopic(), null, key, data, headers);
producer.send(record, (metadata, exception) -> {
if (exception == null) {
if (callback != null) {
callback.onSuccess(new KafkaTbQueueMsgMetadata(metadata,key));
}
} else {
if (callback != null) {
callback.onFailure(exception);
} else {
log.warn("Producer template failure: {}", exception.getMessage(), exception);
}
}
});
}
@Override
public void stop() {
if (producer != null) {
producer.close();
}
}
@Override
public void queueDeclare(TopicPartitionInfo tpi, TbQueueCallback callback) {
// TODO: 2022/4/29 创建kafka队列
}
@Override
public void queueDel(String queue, TbQueueCallback callback) {
// TODO: 2022/5/20 删除队列
}
}
package com.mortals.xhx.queue.kafka;
import lombok.Data;
/**
* 其它配置类
*
* @author: zxfei
* @date: 2021/11/22 13:31
*/
@Data
public class TbKafkaProperty {
private String key;
private String value;
}
package com.mortals.xhx.queue.kafka;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.admin.AdminClientConfig;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.ByteArrayDeserializer;
import org.apache.kafka.common.serialization.ByteArraySerializer;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Properties;
/**
* kafka 配置类
*
* @author: zxfei
* @date: 2021/11/22 13:30
*/
@Slf4j
@ConditionalOnProperty(prefix = "queue", value = "type", havingValue = "kafka")
@ConfigurationProperties(prefix = "queue.kafka")
@Component
public class TbKafkaSettings {
@Value("${queue.kafka.bootstrap.servers}")
private String servers;
@Value("${queue.kafka.acks}")
private String acks;
@Value("${queue.kafka.retries}")
private int retries;
@Value("${queue.kafka.batch.size}")
private int batchSize;
@Value("${queue.kafka.linger.ms}")
private long lingerMs;
@Value("${queue.kafka.buffer.memory}")
private long bufferMemory;
@Value("${queue.kafka.replication_factor}")
@Getter
private short replicationFactor;
@Value("${queue.kafka.max_poll_records:8192}")
private int maxPollRecords;
@Value("${queue.kafka.max_poll_interval_ms:300000}")
private int maxPollIntervalMs;
@Value("${queue.kafka.max_partition_fetch_bytes:16777216}")
private int maxPartitionFetchBytes;
@Value("${queue.kafka.fetch_max_bytes:134217728}")
private int fetchMaxBytes;
@Setter
private List<TbKafkaProperty> other;
/**
* 管理端参数配置
* @return
*/
public Properties toAdminProps() {
Properties props = toProps();
props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
props.put(AdminClientConfig.RETRIES_CONFIG, retries);
return props;
}
/**
* 消费者参数
*
* @return
*/
public Properties toConsumerProps() {
Properties props = toProps();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, maxPollRecords);
props.put(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG, maxPartitionFetchBytes);
props.put(ConsumerConfig.FETCH_MAX_BYTES_CONFIG, fetchMaxBytes);
props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, maxPollIntervalMs);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class);
return props;
}
/**
* 生产者参数
*
* @return
*/
public Properties toProducerProps() {
Properties props = toProps();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
props.put(ProducerConfig.RETRIES_CONFIG, retries);
props.put(ProducerConfig.ACKS_CONFIG, acks);
props.put(ProducerConfig.BATCH_SIZE_CONFIG, batchSize);
props.put(ProducerConfig.LINGER_MS_CONFIG, lingerMs);
props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, bufferMemory);
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class);
return props;
}
private Properties toProps() {
Properties props = new Properties();
//添加其它参数
if (other != null) {
other.forEach(kv -> props.put(kv.getKey(), kv.getValue()));
}
return props;
}
}
package com.mortals.xhx.queue.processing;
import com.mortals.xhx.queue.TbQueueMsg;
import com.mortals.xhx.utils.IotThreadFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
import javax.annotation.PreDestroy;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 消费服务抽象类
*
* @author: zxfei
* @date: 2022/4/28 9:43
*/
@Slf4j
public abstract class AbstractConsumerService<N extends TbQueueMsg> {
/**
* 启动消费主线程服务
*/
protected abstract void launchMainConsumers();
/**
* 停止消费主线程服务
*/
protected abstract void stopMainConsumers();
/**
* 启动一组消费线程
*/
protected abstract void launchConsumersList();
/**
* 消息线程池
*/
protected volatile ExecutorService consumersExecutor;
/**
* 变量
*/
protected volatile boolean stopped = false;
public void init(String mainConsumerThreadName) {
this.consumersExecutor = Executors.newCachedThreadPool(IotThreadFactory.forName(mainConsumerThreadName));
launchMainConsumers();
}
@PreDestroy
public void destroy() {
stopped = true;
stopMainConsumers();
if (consumersExecutor != null) {
consumersExecutor.shutdownNow();
}
}
}
package com.mortals.xhx.queue.provider;
import com.mortals.xhx.queue.TbQueueConsumer;
import com.mortals.xhx.queue.TbQueueMsg;
import com.mortals.xhx.queue.TbQueueProducer;
import com.mortals.xhx.queue.kafka.TbKafkaConsumerTemplate;
import com.mortals.xhx.queue.kafka.TbKafkaProducerTemplate;
import com.mortals.xhx.queue.kafka.TbKafkaSettings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* kafka 消息工厂类
*
* @author: zxfei
* @date: 2021/11/22 15:00
*/
@Component
@ConditionalOnExpression("'${queue.type:null}'=='kafka'")
public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory {
@Autowired
private TbKafkaSettings kafkaSettings;
/**
* 初始化创建消息生产者
*
* @return
*/
@Override
public TbQueueProducer<TbQueueMsg> createMsgProducer() {
TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbQueueMsg> builder = TbKafkaProducerTemplate.builder();
builder.settings(kafkaSettings);
return builder.build();
}
/**
* 初始化创建消息消费者
*
* @return
*/
@Override
public TbQueueConsumer<TbQueueMsg> createMsgConsumer() {
TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbQueueMsg> comsumerBuilder = TbKafkaConsumerTemplate.builder();
comsumerBuilder.settings(kafkaSettings);
return comsumerBuilder.build();
}
@Override
public List<TbQueueConsumer<TbQueueMsg>> createListMsgConsumer(List<String> vhosts) {
return null;
}
}
package com.mortals.xhx.queue.provider;
import com.mortals.xhx.queue.*;
import com.mortals.xhx.queue.rabbitmq.TbRabbitMqConsumerTemplate;
import com.mortals.xhx.queue.rabbitmq.TbRabbitMqProducerTemplate;
import com.mortals.xhx.queue.rabbitmq.TbRabbitMqSettings;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@Component
@ConditionalOnExpression("'${queue.type:null}'=='rabbitmq'")
public class RabbitMqTbCoreQueueFactory implements TbCoreQueueFactory {
private final TbRabbitMqSettings rabbitMqSettings;
private final TbQueueCoreSettings coreSettings;
public RabbitMqTbCoreQueueFactory(TbRabbitMqSettings rabbitMqSettings, TbQueueCoreSettings coreSettings) {
this.rabbitMqSettings = rabbitMqSettings;
this.coreSettings = coreSettings;
}
@Override
public TbQueueProducer<TbQueueMsg> createMsgProducer() {
return new TbRabbitMqProducerTemplate<>(rabbitMqSettings, coreSettings.getTopic());
}
@Override
public TbQueueConsumer<TbQueueMsg> createMsgConsumer() {
return new TbRabbitMqConsumerTemplate<>(rabbitMqSettings, coreSettings.getTopic(), msg -> new TbQueueMsg() {
@Override
public String getKey() {
return msg.getKey();
}
@Override
public TbQueueMsgHeaders getHeaders() {
return msg.getHeaders();
}
@Override
public String getData() {
return msg.getData();
}
});
}
@Override
public List<TbQueueConsumer<TbQueueMsg>> createListMsgConsumer(List<String> vhosts) {
List<TbQueueConsumer<TbQueueMsg>> list =vhosts.stream().map(vhost->{
rabbitMqSettings.setVHost(vhost);
return new TbRabbitMqConsumerTemplate<TbQueueMsg>(rabbitMqSettings, coreSettings.getTopic(), msg -> new TbQueueMsg() {
@Override
public String getKey() {
return msg.getKey();
}
@Override
public TbQueueMsgHeaders getHeaders() {
return msg.getHeaders();
}
@Override
public String getData() {
return msg.getData();
}
});
}).collect(Collectors.toList());
return list;
}
}
package com.mortals.xhx.queue.provider;
import com.mortals.xhx.queue.TbQueueConsumer;
import com.mortals.xhx.queue.TbQueueMsg;
import com.mortals.xhx.queue.TbQueueProducer;
import java.util.List;
public interface TbCoreQueueFactory {
/**
* 消息生产者
* @return
*/
TbQueueProducer<TbQueueMsg> createMsgProducer();
/**
* 消息消费服务
* @return
*/
TbQueueConsumer<TbQueueMsg> createMsgConsumer();
/* *//**
* 消息消费服务
* @return
*//*
TbQueueConsumer<TbQueueMsg> createMsgConsumer();*/
/**
*
* @return
*/
List<TbQueueConsumer<TbQueueMsg>> createListMsgConsumer(List<String> vhosts);
}
package com.mortals.xhx.queue.provider;
import com.mortals.xhx.queue.TbQueueMsg;
import com.mortals.xhx.queue.TbQueueProducer;
import lombok.extern.apachecommons.CommonsLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
/**
* 初始化消息生产者服务
*/
@CommonsLog
@Service
public class TbCoreQueueProducerProvider implements TbQueueProducerProvider {
/**
* 消息队列提供
*/
@Autowired
private TbCoreQueueFactory tbQueueProvider;
/**
* 消息队列生产者
*/
private TbQueueProducer<TbQueueMsg> queueProducer;
@PostConstruct
public void init() {
log.info("消息队列生产服务开始...");
this.queueProducer = tbQueueProvider.createMsgProducer();
}
@Override
public TbQueueProducer<TbQueueMsg> getTbCoreMsgProducer() {
return queueProducer;
}
}
package com.mortals.xhx.queue.provider;
import com.mortals.xhx.queue.TbQueueMsg;
import com.mortals.xhx.queue.TbQueueProducer;
/**
* 消息队列提供接口
*
* @author: zxfei
* @date: 2021/11/22 14:59
*/
public interface TbQueueProducerProvider {
/**
* 消息生产者
* @return
*/
TbQueueProducer<TbQueueMsg> getTbCoreMsgProducer();
}
package com.mortals.xhx.queue.rabbitmq;
import com.mortals.xhx.queue.TbQueueMsgMetadata;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.apache.kafka.clients.producer.RecordMetadata;
/**
* 队列元数据
*
* @author: zxfei
* @date: 2021/11/22 14:40
*/
@Data
@AllArgsConstructor
public class RabbitQueueMsgMetadata implements TbQueueMsgMetadata {
private String messageId;
}
package com.mortals.xhx.queue.rabbitmq;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.util.JsonUtil;
import com.mortals.xhx.common.model.DefaultTbQueueMsgHeaders;
import com.mortals.xhx.common.model.MessageHeader;
import com.mortals.xhx.queue.*;
import com.mortals.xhx.queue.kafka.AbstractTbQueueConsumerTemplate;
import com.rabbitmq.client.*;
import lombok.Getter;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors;
/**
* 消费连接池
*
* @author: zxfei
* @date: 2022/4/25 13:49
*/
@Slf4j
public class TbRabbitMqConsumerTemplate<T extends TbQueueMsg> extends AbstractTbQueueConsumerTemplate<GetResponse, T> {
private final TbQueueMsgDecoder<T> decoder;
@Getter
private Channel channel;
private Connection connection;
/**
* rabbmit设置
*/
private TbRabbitMqSettings rabbitMqSettings;
private volatile Set<String> queues=new HashSet<>();
public TbRabbitMqConsumerTemplate(TbRabbitMqSettings rabbitMqSettings, String topic, TbQueueMsgDecoder<T> decoder) {
super(topic);
this.decoder = decoder;
this.rabbitMqSettings = rabbitMqSettings;
try {
connection = rabbitMqSettings.getConnectionFactory().newConnection();
channel = connection.createChannel();
log.info("channelNumber:" + channel.getChannelNumber());
} catch (IOException | TimeoutException e) {
log.error("Failed to create connection.", e);
}
stopped = false;
}
@Override
protected List<GetResponse> doPoll(long durationInMillis) {
List<GetResponse> result = queues.parallelStream()
.map(queue -> {
try {
GetResponse getResponse = channel.basicGet(queue, true);
return getResponse;
} catch (IOException e) {
log.error("Failed to get messages from queue: {},{}", queue, e);
try {
channel = connection.createChannel();
Map<String, Object> args = new HashMap<>();
args.put("x-message-ttl", Integer.parseInt(rabbitMqSettings.getMessageTtl()));
channel.queueDeclare(queue, true, false, false, args);
} catch (IOException ioException) {
ioException.printStackTrace();
}
return null;
}
}).filter(Objects::nonNull).collect(Collectors.toList());
if (result.size() > 0) {
return result;
} else {
return Collections.emptyList();
}
}
@Override
protected void doSubscribe(List<String> topicNames) {
//新增的topkcnames
topicNames.stream().forEach(topic->{
queues.add(topic);
});
// queues = partitions.stream()
// .map(TopicPartitionInfo::getFullTopicName)
// .collect(Collectors.toSet());
log.info("doSubscribe:{},topicNames:{}", JSON.toJSONString(queues), JSON.toJSONString(queues));
}
@Override
protected void doCommit() {
try {
channel.basicAck(0, true);
} catch (IOException e) {
log.error("Failed to ack messages.", e);
}
}
@Override
protected void doUnsubscribe() {
if (channel != null) {
try {
channel.close();
} catch (IOException | TimeoutException e) {
log.error("Failed to close the channel.");
}
}
if (connection != null) {
try {
connection.close();
} catch (IOException e) {
log.error("Failed to close the connection.");
}
}
}
@Override
public void unsubscribe(Set<TopicPartitionInfo> partitions) {
Set<String> collect = partitions.stream().map(item -> item.getFullTopicName()).collect(Collectors.toSet());
queues=queues.stream().filter(f->collect.contains(f)).collect(Collectors.toSet());
}
@Override
public String getChannelNumber() {
return channel.getChannelNumber() + "";
}
public T decode(GetResponse message) {
try {
DefaultTbQueueMsg msg = new DefaultTbQueueMsg();
TbQueueMsgHeaders headers = new DefaultTbQueueMsgHeaders();
String messageBody = new String(message.getBody());
if(JSONUtil.isJson(messageBody)){
Map<String, Object> map = JSON.parseObject(messageBody, HashMap.class);
msg.setKey((String) map.get("key"));
String payloadStr = (String) map.get("data");
msg.setData(payloadStr);
String headerStr = ((JSONObject) map.get("headers")).getString("data");
HashMap<String, String> hashMap = JSON.parseObject(headerStr, HashMap.class);
headers.setData(hashMap);
msg.setHeaders(headers);
return decoder.decode(msg);
}else{
throw new AppException("消息内容异常");
}
} catch (Exception e) {
log.error("message:"+new String(message.getBody()),"反序列化异常!", e);
return null;
}
}
}
package com.mortals.xhx.queue.rabbitmq;
import com.alibaba.fastjson.JSON;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.gson.Gson;
import com.mortals.xhx.queue.*;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors;
/**
* rabbmit 消息生产模板
*
* @author: zxfei
* @date: 2022/4/25 16:10
*/
@Slf4j
public class TbRabbitMqProducerTemplate<T extends TbQueueMsg> implements TbQueueProducer<T> {
/**
* defaultTopic
*/
private String defaultTopic;
/**
* rabbmit设置
*/
private TbRabbitMqSettings rabbitMqSettings;
/**
* 线程执行器
*/
private ListeningExecutorService producerExecutor;
/**
* 通道
*/
private Channel channel;
/**
* 连接器
*/
private Connection connection;
/**
* topic组
*/
private final Set<TopicPartitionInfo> topics = ConcurrentHashMap.newKeySet();
public TbRabbitMqProducerTemplate(TbRabbitMqSettings rabbitMqSettings, String defaultTopic) {
this.defaultTopic = defaultTopic;
this.rabbitMqSettings = rabbitMqSettings;
producerExecutor = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());
try {
connection = rabbitMqSettings.getConnectionFactory().newConnection();
channel = connection.createChannel();
} catch (IOException | TimeoutException e) {
log.error("rabbmit创建连接失败!", e);
}
}
@Override
public void init() {
}
@Override
public String getDefaultTopic() {
return defaultTopic;
}
@Override
public void send(TopicPartitionInfo tpi, T msg, TbQueueCallback callback) {
Boolean topicIfNotExist = createTopicIfNotExist(tpi);
AMQP.BasicProperties properties = new AMQP.BasicProperties().builder().expiration(rabbitMqSettings.getMessageTtl()).build();
try {
if (!topicIfNotExist) {
//topic不存在创建通道队列
Map<String, Object> args = new HashMap<>();
args.put("x-message-ttl", Integer.parseInt(rabbitMqSettings.getMessageTtl()));
channel.queueDeclare(tpi.getTopic(), true, false, false, args);
}
if (!innerExists(tpi.getExchangeName(), channel)) {
//判断交换机是否存在,如果不存在则创建后与新加入的队列绑定
channel = connection.createChannel();
channel.exchangeDeclare(tpi.getExchangeName(), BuiltinExchangeType.DIRECT, true, false, null);
}
channel.queueBind(tpi.getTopic(), tpi.getExchangeName(), tpi.getTopic());
channel.basicPublish(tpi.getExchangeName(), tpi.getTopic(), properties, JSON.toJSONString(new DefaultTbQueueMsg(msg)).getBytes());
if (callback != null) {
callback.onSuccess(new RabbitQueueMsgMetadata(msg.getKey()));
}
} catch (IOException e) {
log.error("Failed publish message: [{}].", msg, e);
if (callback != null) {
callback.onFailure(e);
}
}
}
@Override
public void stop() {
if (producerExecutor != null) {
producerExecutor.shutdownNow();
}
if (channel != null) {
try {
channel.close();
} catch (IOException | TimeoutException e) {
log.error("Failed to close the channel.");
}
}
if (connection != null) {
try {
connection.close();
} catch (IOException e) {
log.error("Failed to close the connection.");
}
}
}
@Override
public void queueDeclare(TopicPartitionInfo tpi, TbQueueCallback callback) {
Boolean topicIfNotExist = createTopicIfNotExist(tpi);
try {
if (!topicIfNotExist) {
//topic不存在创建通道队列
Map<String, Object> args = new HashMap<>();
args.put("x-message-ttl", Integer.parseInt(rabbitMqSettings.getMessageTtl()));
channel.queueDeclare(tpi.getTopic(), true, false, false, args);
}
if (!innerExists(tpi.getExchangeName(), channel)) {
//判断交换机是否存在,如果不存在则创建后与新加入的队列绑定
channel = connection.createChannel();
channel.exchangeDeclare(tpi.getExchangeName(), BuiltinExchangeType.DIRECT, true, false, null);
}
// callback.onSuccess(new RabbitQueueMsgMetadata());
} catch (IOException e) {
log.error("Failed publish message: {}.", e);
if (callback != null) {
callback.onFailure(e);
}
}
}
@Override
public void queueDel(String queue, TbQueueCallback callback) {
try {
channel.queueDelete(queue);
//删除topic
TopicPartitionInfo topicPartitionInfo = this.topics.stream().filter(f -> f.getTopic().equals(queue)).findFirst().orElseGet(() -> null);
if (!ObjectUtils.isEmpty(topicPartitionInfo)) {
this.topics.remove(topicPartitionInfo);
}
} catch (IOException e) {
log.error("Failed publish message: {}.", e);
}
}
private Boolean createTopicIfNotExist(TopicPartitionInfo tpi) {
if (topics.contains(tpi)) {
log.debug("contains topc:{}", tpi.getTopic());
return true;
}
topics.add(tpi);
return false;
}
private boolean innerExists(String exchangeName, Channel outerChannel) {
boolean result = true;
try {
outerChannel.exchangeDeclarePassive(exchangeName);
} catch (IOException e) {
result = false;
}
return result;
}
}
package com.mortals.xhx.queue.rabbitmq;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
//@Component
//@ConditionalOnExpression("'${queue.type:null}'=='rabbitmq'")
public class TbRabbitMqQueueArguments {
@Value("${queue.rabbitmq.queue-properties.core}")
private String coreProperties;
@Value("${queue.rabbitmq.queue-properties.rule-engine}")
private String ruleEngineProperties;
@Value("${queue.rabbitmq.queue-properties.transport-api}")
private String transportApiProperties;
@Value("${queue.rabbitmq.queue-properties.notifications}")
private String notificationsProperties;
@Value("${queue.rabbitmq.queue-properties.js-executor}")
private String jsExecutorProperties;
@Getter
private Map<String, Object> coreArgs;
@Getter
private Map<String, Object> ruleEngineArgs;
@Getter
private Map<String, Object> transportApiArgs;
@Getter
private Map<String, Object> notificationsArgs;
@Getter
private Map<String, Object> jsExecutorArgs;
@PostConstruct
private void init() {
coreArgs = getArgs(coreProperties);
ruleEngineArgs = getArgs(ruleEngineProperties);
transportApiArgs = getArgs(transportApiProperties);
notificationsArgs = getArgs(notificationsProperties);
jsExecutorArgs = getArgs(jsExecutorProperties);
}
private Map<String, Object> getArgs(String properties) {
Map<String, Object> configs = new HashMap<>();
for (String property : properties.split(";")) {
int delimiterPosition = property.indexOf(":");
String key = property.substring(0, delimiterPosition);
String strValue = property.substring(delimiterPosition + 1);
configs.put(key, getObjectValue(strValue));
}
return configs;
}
private Object getObjectValue(String str) {
if (str.equalsIgnoreCase("true") || str.equalsIgnoreCase("false")) {
return Boolean.valueOf(str);
} else if (isNumeric(str)) {
return getNumericValue(str);
}
return str;
}
private Object getNumericValue(String str) {
if (str.contains(".")) {
return Double.valueOf(str);
} else {
return Long.valueOf(str);
}
}
private static final Pattern PATTERN = Pattern.compile("-?\\d+(\\.\\d+)?");
public boolean isNumeric(String strNum) {
if (strNum == null) {
return false;
}
return PATTERN.matcher(strNum).matches();
}
}
package com.mortals.xhx.queue.rabbitmq;
import com.rabbitmq.client.ConnectionFactory;
import lombok.Data;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Slf4j
@ConditionalOnExpression("'${queue.type:null}'=='rabbitmq'")
@Component
@Data
public class TbRabbitMqSettings {
@Value("${queue.rabbitmq.exchange_name:}")
private String exchangeName;
@Value("${queue.rabbitmq.host:}")
private String host;
@Value("${queue.rabbitmq.port:}")
private int port;
@Value("${queue.rabbitmq.virtual_host:}")
private String virtualHost;
@Value("${queue.rabbitmq.username:}")
private String username;
@Value("${queue.rabbitmq.password:}")
private String password;
@Value("${queue.rabbitmq.automatic_recovery_enabled:}")
private boolean automaticRecoveryEnabled;
@Value("${queue.rabbitmq.connection_timeout:}")
private int connectionTimeout;
@Value("${queue.rabbitmq.handshake_timeout:}")
private int handshakeTimeout;
@Value("${queue.rabbitmq.queue-properties.x-message-ttl:86400000}")
@Getter
private String messageTtl;
private ConnectionFactory connectionFactory;
public void setVHost(String virtualHost) {
connectionFactory.setVirtualHost(virtualHost);
}
@PostConstruct
private void init() {
connectionFactory = new ConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setVirtualHost(virtualHost);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
connectionFactory.setAutomaticRecoveryEnabled(automaticRecoveryEnabled);
connectionFactory.setConnectionTimeout(connectionTimeout);
connectionFactory.setHandshakeTimeout(handshakeTimeout);
}
}
-- ----------------------------
-- 设备生产厂商菜单 SQL
-- 访问日志菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '设备生产厂商', '/firm/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
INSERT INTO `mortals_xhx_menu` VALUES (null, '访问日志', '/access/log/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 设备生产厂商资源路径 SQL
-- 访问日志资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '设备生产厂商-菜单管理-查看', '/firm/list,/firm/view,/firm/info,/firm/export,/firm/exportExcel,/firm/downloadTemplate,/firm/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '设备生产厂商-菜单管理-维护', '/firm/add,/firm/edit,/firm/delete,/firm/logicDelete,/firm/save,/firm/importData', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '访问日志-菜单管理-查看', '/access/log/list,/access/log/view,/access/log/info,/access/log/export,/access/log/exportExcel,/access/log/downloadTemplate,/access/log/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '访问日志-菜单管理-维护', '/access/log/add,/access/log/edit,/access/log/delete,/access/log/logicDelete,/access/log/save,/access/log/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 设备菜单 SQL
-- 访问日志参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '设备', '/device/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 设备资源路径 SQL
-- 业务日志菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '设备-菜单管理-查看', '/device/list,/device/view,/device/info,/device/export,/device/exportExcel,/device/downloadTemplate,/device/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '设备-菜单管理-维护', '/device/add,/device/edit,/device/delete,/device/logicDelete,/device/save,/device/importData', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_menu` VALUES (null, '业务日志', '/biz/log/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 平台系统菜单 SQL
-- 业务日志资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '平台系统', '/platform/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
INSERT INTO `mortals_xhx_resource` VALUES (null, '业务日志-菜单管理-查看', '/biz/log/list,/biz/log/view,/biz/log/info,/biz/log/export,/biz/log/exportExcel,/biz/log/downloadTemplate,/biz/log/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '业务日志-菜单管理-维护', '/biz/log/add,/biz/log/edit,/biz/log/delete,/biz/log/logicDelete,/biz/log/save,/biz/log/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 平台系统资源路径 SQL
-- 业务日志参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '平台系统-菜单管理-查看', '/platform/list,/platform/view,/platform/info,/platform/export,/platform/exportExcel,/platform/downloadTemplate,/platform/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '平台系统-菜单管理-维护', '/platform/add,/platform/edit,/platform/delete,/platform/logicDelete,/platform/save,/platform/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 产品菜单 SQL
-- 异常日志菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '产品', '/product/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
INSERT INTO `mortals_xhx_menu` VALUES (null, '异常日志', '/error/log/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 产品资源路径 SQL
-- 异常日志资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '产品-菜单管理-查看', '/product/list,/product/view,/product/info,/product/export,/product/exportExcel,/product/downloadTemplate,/product/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '产品-菜单管理-维护', '/product/add,/product/edit,/product/delete,/product/logicDelete,/product/save,/product/importData', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '异常日志-菜单管理-查看', '/error/log/list,/error/log/view,/error/log/info,/error/log/export,/error/log/exportExcel,/error/log/downloadTemplate,/error/log/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '异常日志-菜单管理-维护', '/error/log/add,/error/log/edit,/error/log/delete,/error/log/logicDelete,/error/log/save,/error/log/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 设备日志菜单 SQL
-- 异常日志参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '设备日志', '/device/log/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 设备日志资源路径 SQL
-- 平台用户操作日志业务菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '设备日志-菜单管理-查看', '/device/log/list,/device/log/view,/device/log/info,/device/log/export,/device/log/exportExcel,/device/log/downloadTemplate,/device/log/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '设备日志-菜单管理-维护', '/device/log/add,/device/log/edit,/device/log/delete,/device/log/logicDelete,/device/log/save,/device/log/importData', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_menu` VALUES (null, '平台用户操作日志业务', '/operate/log/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 平台用户操作日志业务资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '平台用户操作日志业务-菜单管理-查看', '/operate/log/list,/operate/log/view,/operate/log/info,/operate/log/export,/operate/log/exportExcel,/operate/log/downloadTemplate,/operate/log/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '平台用户操作日志业务-菜单管理-维护', '/operate/log/add,/operate/log/edit,/operate/log/delete,/operate/log/logicDelete,/operate/log/save,/operate/log/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 设备统计资源路径 SQL
-- 平台用户操作日志业务参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '设备统计-菜单管理-查看', '/device/stat/list,/device/stat/view,/device/stat/info,/device/stat/export,/device/stat/exportExcel,/device/stat/downloadTemplate,/device/stat/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '设备统计-菜单管理-维护', '/device/stat/add,/device/stat/edit,/device/stat/delete,/device/stat/logicDelete,/device/stat/save,/device/stat/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 设备
-- 访问日志
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_device`;
CREATE TABLE mortals_xhx_device(
DROP TABLE IF EXISTS `mortals_xhx_access_log`;
CREATE TABLE mortals_xhx_access_log(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`deviceName` varchar(20) NOT NULL COMMENT '设备名称',
`deviceCode` varchar(256) COMMENT '设备编码,默认为MAC地址',
`deviceSN` varchar(256) COMMENT '设备SN码',
`deviceMac` varchar(64) COMMENT '设备的MAC地址',
`siteId` bigint(20) COMMENT '站点Id,来源基础服务平台',
`siteCode` varchar(256) COMMENT '站点编号,来源基础服务平台',
`siteName` varchar(256) COMMENT '站点名称',
`platformId` bigint(20) COMMENT '平台系统Id',
`platformName` varchar(256) COMMENT '平台系统名称',
`productId` bigint(20) COMMENT '产品Id',
`productName` varchar(256) COMMENT '产品名称',
`skinId` bigint(20) NOT NULL COMMENT '皮肤id',
`skinName` varchar(20) NOT NULL COMMENT '皮肤名称',
`homeUrl` varchar(512) COMMENT '首页地址',
`deviceFirmId` bigint(20) COMMENT '设备生产厂商ID',
`deviceFirmname` varchar(20) COMMENT '设备生产厂商名称',
`deviceSrc` tinyint(2) COMMENT '设备来源(0.子设备,1.网关设备,2.直连设备)',
`deviceDataSourceWay` tinyint(2) COMMENT '数据获取方式(0.主动上报,1.被动拉取)',
`lon` varchar(32) COMMENT '经度',
`lati` varchar(32) COMMENT '经度',
`deviceInBuilding` tinyint(2) COMMENT '所属楼栋',
`deviceInFloor` tinyint(2) COMMENT '所属楼层',
`defectsLiabilityPeriod` datetime COMMENT '保修期至',
`leadingOfficial` varchar(64) COMMENT '负责人',
`leadingOfficialTelephone` varchar(64) COMMENT '联系电话',
`isReceiveMess` tinyint(2) COMMENT '是否接收异常短(0.否,1.是)',
`devicePhotoPath` varchar(256) COMMENT '设备图片',
`ip` varchar(64) COMMENT '设备访问ip',
`centernum` varchar(64) COMMENT '中心设备编码',
`port` varchar(64) COMMENT '端口',
`deviceTopic` varchar(100) COMMENT '设备topic信息',
`deviceStatus` tinyint(2) COMMENT '设备状态 (0.未激活,1.离线,2.在线)',
`enabled` tinyint(2) COMMENT '启用状态 (0.停止,1.启用)',
`deviceAuthCode` varchar(512) COMMENT '设备授权码',
`deviceRemark` varchar(256) COMMENT '备注',
`onlineTime` datetime COMMENT '最近上线时间',
`offlineTime` datetime COMMENT '最近离线时间',
`deleted` tinyint(2) COMMENT '是否删除(0.否,1.是)',
`source` tinyint(2) COMMENT '设备来源(0.旧设备,1.新设备)',
`traceID` varchar(64) COMMENT '追踪Id',
`appName` varchar(64) COMMENT '应用名称',
`hostName` varchar(64) COMMENT '实例IP',
`logLevel` varchar(64) COMMENT '日志等级',
`requestIp` varchar(64) COMMENT '请求者IP',
`method` varchar(64) COMMENT '请求方式',
`ua` varchar(64) COMMENT '用户浏览器UA',
`uri` varchar(64) COMMENT '请求URI',
`requestParam` text COMMENT '请求参数,json序列化',
`response` text COMMENT '响应结果',
`logTime` datetime COMMENT '日志产生时间',
`duration` int(4) COMMENT '持续时间,单位毫秒',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备';
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='访问日志';
-- ----------------------------
-- 平台系统
-- 业务日志
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_platform`;
CREATE TABLE mortals_xhx_platform(
DROP TABLE IF EXISTS `mortals_xhx_biz_log`;
CREATE TABLE mortals_xhx_biz_log(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`platformName` varchar(20) NOT NULL COMMENT '平台名称,名称唯一',
`platformSn` varchar(256) NOT NULL COMMENT '平台编码,编码唯一(编码加上站点编码,如phxt-51010251-1做Vhost虚拟机编码)',
`sendMsgType` tinyint(2) NOT NULL COMMENT '发送第三方平台消息类型(0.http,1.jms)',
`sendUrl` varchar(512) COMMENT '发送参数请求地址',
`callbackUrl` varchar(512) COMMENT '回调参数地址',
`sendSwitch` tinyint(2) NOT NULL COMMENT '是否启用发送消息(0.停用,1.启用)',
`homeUrl` varchar(512) COMMENT '首页地址',
`platformRemark` varchar(256) COMMENT '备注',
`traceID` varchar(64) COMMENT '追踪Id',
`appName` varchar(64) COMMENT '应用名称',
`hostName` varchar(64) COMMENT '实例IP',
`logLevel` varchar(64) COMMENT '日志等级',
`userCode` varchar(64) COMMENT '用户唯一标识',
`deviceCode` varchar(64) COMMENT '设备唯一标识',
`eventTopic` varchar(64) COMMENT '记录埋点的事件主题,方便实时计算或同步进行数据筛选',
`eventTopicName` varchar(64) COMMENT '记录埋点中文名称',
`msg` mediumtext COMMENT '事件参数,json',
`logTime` datetime NOT NULL COMMENT '日志产生时间',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='平台系统';
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='业务日志';
-- ----------------------------
-- 产品
-- 异常日志
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_product`;
CREATE TABLE mortals_xhx_product(
DROP TABLE IF EXISTS `mortals_xhx_error_log`;
CREATE TABLE mortals_xhx_error_log(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`platformId` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '关联平台',
`productName` varchar(20) NOT NULL COMMENT '产品名称,名称唯一',
`productCode` varchar(256) NOT NULL COMMENT '产品编码',
`homeUrl` varchar(512) NOT NULL COMMENT '首页地址',
`productRemark` varchar(256) COMMENT '备注',
`traceID` varchar(64) COMMENT '追踪Id',
`serverType` varchar(64) COMMENT '服务类型,webOS,android,IOS,服务后端',
`appName` varchar(64) COMMENT '应用名称',
`hostName` varchar(64) COMMENT '实例IP',
`logLevel` varchar(64) COMMENT '日志等级',
`threadNo` varchar(64) COMMENT '线程号',
`error` text COMMENT '异常堆栈信息',
`response` text COMMENT '响应结果',
`logTime` datetime COMMENT '日志产生时间',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='产品';
-- ----------------------------
-- 设备生产厂商表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_firm`;
CREATE TABLE mortals_xhx_firm(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`firmName` varchar(128) NOT NULL COMMENT '设备生产厂商名称',
`firmCode` varchar(128) COMMENT '设备生产商编码',
`firmRemark` varchar(64) COMMENT '备注',
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='异常日志';
-- ----------------------------
-- 平台用户操作日志业务表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_operate_log`;
CREATE TABLE mortals_xhx_operate_log(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`platformMark` varchar(50) COMMENT '平台标识',
`userId` bigint(20) COMMENT '用户id',
`userName` varchar(50) COMMENT '用户名称',
`loginName` varchar(50) COMMENT '用户登录名',
`requestUrl` varchar(200) COMMENT '请求地址',
`content` varchar(2000) COMMENT '操作内容,记录操作具体信息,如修改前修改或的数据',
`ip` varchar(30) COMMENT '操作IP地址',
`logDate` datetime COMMENT '操作时间',
`operType` tinyint(2) COMMENT '操作类型,0:新增,1:修改,2:删除',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备生产厂商';
-- ----------------------------
-- 设备告警日志表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_device_alarm_info`;
CREATE TABLE mortals_xhx_device_alarm_info(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`alarmTime` datetime NOT NULL COMMENT '告警时间',
`alarmDevice` bigint(20) NOT NULL COMMENT '告警设备',
`alarmType` tinyint(2) NOT NULL COMMENT '告警类型,(0.离线)',
`alarmLevel` tinyint(2) NOT NULL COMMENT '告警级别(0.危险,1.次要,2.一般)',
`alarmReceivePersonnel` varchar(32) NOT NULL COMMENT '接收人员[设备管理的责任人]',
`receivePersonnelTelephone` varchar(11) NOT NULL COMMENT '接收人员电话',
`alarmStatus` tinyint(2) COMMENT '告警状态,来自工单系统(0.未清除,1.清除未确认,2.清除已确认)',
`alarmContent` varchar(512) NOT NULL COMMENT '告警详细内容',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备告警日志';
-- ----------------------------
-- 设备模块信息表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_device_module`;
CREATE TABLE mortals_xhx_device_module(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`moduleName` varchar(256) NOT NULL COMMENT '模块名称',
`moduleMsgCode` varchar(256) NOT NULL COMMENT '模块消息编码,与上报消息头编码一致,唯一',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备模块信息';
-- ----------------------------
-- 设备模块使用频率表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_device_module_use`;
CREATE TABLE mortals_xhx_device_module_use(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`moduleName` varchar(256) NOT NULL COMMENT '模块名称',
`moduleMsgCode` varchar(256) NOT NULL COMMENT '模块消息编码',
`deviceId` bigint(20) NOT NULL COMMENT '所属设备',
`useNum` int COMMENT '调用次数',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备模块使用频率';
-- ----------------------------
-- 设备告警配置表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_alarm_config`;
CREATE TABLE mortals_xhx_alarm_config(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`productId` bigint(20) NOT NULL COMMENT '产品',
`alarmType` tinyint(2) NOT NULL COMMENT '告警类型(0.离线)',
`alarmLevel` tinyint(2) NOT NULL COMMENT '告警级别,(0.危险,1.次要,2.一般)',
`alarmPusW1ay` tinyint(2) NOT NULL COMMENT '推送方式,(0.不推送,1.短信)',
`enabled` tinyint(2) NOT NULL COMMENT '是否启用(0.不启用,1.启用)',
`remark` varchar(2048) COMMENT '备注',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备告警配置';
-- ----------------------------
-- 短信发送记录表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_alarm_sms_send`;
CREATE TABLE mortals_xhx_alarm_sms_send(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`mobile` varchar(11) NOT NULL COMMENT '电话号码',
`sendMess` varchar(200) NOT NULL COMMENT '发送内容',
`sendStatus` tinyint(2) NOT NULL COMMENT '发送状态(0.未发送,1.提交,2.发送成功,3.发生失败)',
`sendTime` datetime NOT NULL COMMENT '发送时间',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
`receiver` varchar(200) NOT NULL COMMENT '接收人',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='短信发送记录';
-- ----------------------------
-- 设备日志表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_device_log`;
CREATE TABLE mortals_xhx_device_log(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`traceID` varchar(64) COMMENT 'traceId,日志追踪id',
`deviceId` bigint(20) COMMENT '设备ID',
`deviceCode` varchar(32) NOT NULL COMMENT '设备编号',
`deviceName` varchar(32) NOT NULL COMMENT '设备名称,设置设备名称。',
`messageHead` varchar(64) NOT NULL COMMENT '业务消息头标识',
`logType` tinyint(2) NOT NULL COMMENT '消息类型,(0.上行,1.下行)',
`content` varchar(2048) COMMENT '内容',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备日志';
-- ----------------------------
-- 站点统计表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_sitestat`;
CREATE TABLE mortals_xhx_sitestat(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`siteId` bigint(20) COMMENT '站点Id,来源基础服务平台',
`siteCode` varchar(256) COMMENT '站点编号,来源基础服务平台',
`siteName` varchar(256) COMMENT '站点名称',
`deviceTotal` int(9) COMMENT '设备总数',
`onlineCount` int(9) COMMENT '在线数量',
`offlineCount` int(9) COMMENT '离线数量',
`stopCount` int(9) COMMENT '停用数量',
`unActiveCount` int(9) NOT NULL COMMENT '待激活数量',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='站点统计';
-- ----------------------------
-- 设备统计表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_device_stat`;
CREATE TABLE mortals_xhx_device_stat(
`id` bigint(20) AUTO_INCREMENT COMMENT 'ID',
`deviceTotalCount` int(9) COMMENT '设备总数',
`deviceAddCount` int(9) COMMENT '昨日新增减少设备数量',
`siteTotalCount` int(9) COMMENT '监控站点数量',
`siteAddCount` int(9) COMMENT '昨日新增站点数量',
`deviceOnlineCount` int(9) COMMENT '在线设备数量',
`deviceOnlineRatio` double COMMENT '在线率',
`deviceOfflineCount` int(9) NOT NULL COMMENT '离线设备数量',
`deviceOfflineRatio` double NOT NULL COMMENT '离线率',
`deviceStopCount` int(9) NOT NULL COMMENT '停用设备数量',
`deviceStopRatio` double NOT NULL COMMENT '停用率',
`alarmTotalCount` int(9) NOT NULL COMMENT '今日告警数量',
`alarmAddCount` int(9) NOT NULL COMMENT '昨日新增减少数量',
`pushTotalCount` int(9) NOT NULL COMMENT '今日消息推送数量',
`pushAddCount` int(9) NOT NULL COMMENT '昨日新增减少数量',
`uploadMessageTotalCount` int(9) NOT NULL COMMENT '今日上行消息数量',
`downloadMessageTotalCount` int(9) NOT NULL COMMENT '今日下行消息数量',
`year` int(9) NOT NULL COMMENT '年',
`month` int(9) NOT NULL COMMENT '月',
`day` int(9) NOT NULL COMMENT '日',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备统计';
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='平台用户操作日志业务';
-- ----------------------------
-- 设备生产厂商参数 SQL
-- ----------------------------
-- ----------------------------
-- 设备参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_param` VALUES (null, '在线状态 ', 'Device', 'deviceOnlineStatus', '0', '离线', 1, 4, 0, 'deviceOnlineStatus', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '在线状态 ', 'Device', 'deviceOnlineStatus', '1', '在线', 1, 4, 0, 'deviceOnlineStatus', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '启用状态 ', 'Device', 'status', '0', '停止', 1, 4, 0, 'status', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '启用状态 ', 'Device', 'status', '1', '启用', 1, 4, 0, 'status', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '激活状态 ', 'Device', 'active', '0', '未激活', 1, 4, 0, 'active', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '激活状态 ', 'Device', 'active', '1', '已激活', 1, 4, 0, 'active', NULL, NULL, NULL);
-- ----------------------------
-- 平台系统参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_param` VALUES (null, '发送第三方平台消息类型', 'Platform', 'sendMsgType', '0', 'http', 1, 4, 0, 'sendMsgType', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '发送第三方平台消息类型', 'Platform', 'sendMsgType', '1', 'jms', 1, 4, 0, 'sendMsgType', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '是否启用发送消息', 'Platform', 'sendSwitch', '0', '停用', 1, 4, 0, 'sendSwitch', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '是否启用发送消息', 'Platform', 'sendSwitch', '1', '启用', 1, 4, 0, 'sendSwitch', NULL, NULL, NULL);
-- ----------------------------
-- 产品参数 SQL
-- ----------------------------
-- ----------------------------
-- 设备日志参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_param` VALUES (null, '日志类型,', 'DeviceLog', 'logType', '0', '上报事件', 1, 4, 0, 'logType', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '日志类型,', 'DeviceLog', 'logType', '1', '下发服务', 1, 4, 0, 'logType', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '数据获取方式', 'Device', 'deviceDataSourceWay', '1', '被动拉取', 1, 4, 0, 'deviceDataSourceWay', NULL, NULL, NULL);
\ No newline at end of file
# 设备管理服务平台
版本 | 创建时间 | 作者 | 备注信息
---|---|---|---
v1.0|2022-01-20|zxfei| 接口文档
## 数据类型
类型名称|类型描述|参考样例
---|---|---
String |字符串|A、a、ab
Integer|数字类型|1、12、-1
Long|长整型数字|1、12、-1
date|时间类型,单位纳秒数字|167988745573
BigDecimal|小数类型|545.256
object|对象类型|{"name":"zhang3"}
arrays|数组类型|[{"name":"zhang3"},{"name":"zhang2"}]
## 设备终端接口服务
### 服务端地址获取
**广播服务端口:** 8074
**广播客户端口:** 8073
**请求方式:** UDP
**内容类型:** application/json;charset=utf-8
**简要描述:** 服务端地址获取
**广播参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
deviceNum|String|设备编码|是|-
**请求样例:**
```
{
"deviceNum":"12345678"
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|Object|数据对象|-
&emsp;ip|String|ip|-
&emsp;port|Integer|port|-
&emsp;deviceRegisterApi|String|设备注册API|-
&emsp;deviceInitApi|String|设备初始化信息API|-
&emsp;deviceUpdateApi|String|设备页面修改API|-
**响应消息样例:**
```
{
"msg":"获取服务端地址成功",
"code":1,
"data":{
"ip":"192.168.0.98",
"port":11091,,
"deviceRegisterApi":"/m/api/register",
"deviceInitApi":"/m/api/deviceInit",
"deviceUpdateApi":"/m/api/deviceUpdate"
}
}
```
### 设备注册
**请求URL:** m/api/register
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 设备注册,成功返回响应rabbmit连接参数,如未找到该设备,系统会根据设备码创建新设备
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
deviceCode|String|设备编码,唯一|是|可是编码或者mac地址,由平台创建
**请求样例:**
```
{
"deviceCode":"a12345678"
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
&emsp;content|String|加密后的内容|AES加密
**content解密参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
rabbmitInfo|Object|rabbmit相关链接信息|-
&emsp;downTopicFilter|String|下行队列topic|-
&emsp;uploadTopicFilter|String|上行队列topic|-
&emsp;username|String|rabbmit用户名|-
&emsp;password|String|rabbmit密码|-
&emsp;host|String|ip|-
&emsp;port|String|端口|-
&emsp;virtualHost|String|虚拟机|-
&emsp;exchangeName|String|交换机名称|-
&emsp;messageTtl|String|队列消息超时时间,毫秒|-
serviceInfo|Object|服务接口连接信息|-
&emsp;homeUrl|String|首页|-
&emsp;serverUrl|String|前端服务接口地址|-
deviceInfo|Object|设备基础信息|-
&emsp;siteId|Long|站点ID|-
&emsp;siteCode|String|站点编码|-
&emsp;siteName|String|站点名称|-
&emsp;productId|Long|设备产品类型Id|-
&emsp;productName|String|设备产品类型|-
&emsp;enabled|Integer|设备启用状态 (0.停止,1.启用)|-
&emsp;source|Integer|设备来源,默认1(0.旧设备,1.新设备)|-
**响应消息样例:**
```
{
"code":1,
"data":{
"content":"hRNPu+V1hc4lGRHtXGyVOF0U7ez8/ZxFke9L4o7DWVLMfsZwkViAChfLKSydAEWAdsbgP1dzfNrQTq7X0diu1awR/qdPNcDcpj5/hBozLn+OmuTKLUWhq9+WGtuoF3BTbtIpWkpQWDGolOCfRadenGUkuMozjEwwkt5CIDa+nzOqh56BJIhGahlx79Qt30ugj3UNhLTfvw5lpN9jY7u+icx+xnCRWIAKF8spLJ0ARYAbMXXhI21dYty7e1b+Cb2wZobupPyXRmyuy8Fkn4bculmkCywq78F6tPlu0rCCgJA="
}
}
```
### 设备初始化信息
**请求URL:** m/api/deviceInit
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 设备初始化信息,提供手机编辑设备入口信息
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
**请求样例:**
```
{}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
&emsp;productList|array|产品列表|数组
&emsp;&emsp;productId|Long|产品id|-
&emsp;&emsp;productName|String|产品名称|-
&emsp;&emsp;productCode|String|产品编码|-
&emsp;firmList|array|设备生产商列表|数组
&emsp;&emsp;deviceFirmId|Long|生产商id|-
&emsp;&emsp;deviceFirmname|String|生产商名称|-
&emsp;siteList|array|站点列表|数组
&emsp;&emsp;siteId|Long|站点id|-
&emsp;&emsp;siteName|String|站点名称|-
&emsp;&emsp;siteCode|String|站点编码|-
**响应消息样例:**
```
{
"code": 1,
"data": {
"firmList": [
{
"deviceFirmId": 1,
"deviceFirmname": "四川新鸿翔"
}
],
"productList": [
{
"productCode": "pdj",
"productId": 1,
"productName": "排队机"
},
{
"productCode": "ckp",
"productId": 2,
"productName": "窗口屏"
},
{
"productCode": "hjq",
"productId": 3,
"productName": "呼叫器"
},
{
"productCode": "jzxsp",
"productId": 4,
"productName": "集中显示屏"
},
{
"productCode": "dsj",
"productId": 5,
"productName": "导视机"
},
{
"productCode": "pjq",
"productId": 6,
"productName": "评级器"
},
{
"productCode": "zzfwzd",
"productId": 7,
"productName": "自助服务终端"
},
{
"productCode": "tdj",
"productId": 8,
"productName": "填单机"
},
{
"productCode": "ybj",
"productId": 9,
"productName": "样表机"
}
],
"siteList": [
{
"siteCode": "510105521000-0001",
"siteId": 1,
"siteName": "测试站点1"
},
{
"siteCode": "513400000000-0001",
"siteId": 2,
"siteName": "凉山州行政审批局"
},
{
"siteCode": "513426000000-0001",
"siteId": 3,
"siteName": "会东县行政审批局"
},
{
"siteCode": "513401001000-0001",
"siteId": 6,
"siteName": "test"
},
{
"siteCode": "513425000000-0001",
"siteId": 7,
"siteName": "会理市行政审批局"
},
{
"siteCode": "513425001000-0001",
"siteId": 8,
"siteName": "会理市城北街道办事处"
},
{
"siteCode": "510105521000-0002",
"siteId": 9,
"siteName": "蔡家测试中心"
},
{
"siteCode": "513301000000-0001",
"siteId": 10,
"siteName": "康定市行政审批局"
},
{
"siteCode": "510000000000-0001",
"siteId": 12,
"siteName": "四川省政务服务中心"
}
]
}
}
```
### 设备新增或更新
**请求URL:** m/api/deviceUpdate
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 设备新增或更新,提供给前端手机页面更新设备操作
**请求参数:**
参数名称|类型|必填|其它
---|---|---|---
deviceName|String|否|设备名称
deviceCode|String|是|设备编码,默认为MAC地址
deviceMac|String|否|设备MAC地址,如不填写,默认等于deviceCode
siteId|Long|是|站点Id
siteCode|String|否|站点编号
siteName|String|否|站点名称
productId|Long|是|产品Id
deviceFirmId|Long|否|设备生产厂商ID
deviceFirmname|String|否|设备生产厂商名称
lon|String|否|经度
lati|String|否|经度
deviceInBuilding|Integer|否|所属楼栋
deviceInFloor|Integer|否|所属楼层
defectsLiabilityPeriod|Date|否|保修期,如2020-08-12 15:00:00
leadingOfficial|String|否|负责人
leadingOfficialTelephone|String|否|联系电话
source|Integer|否|设备来源,默认1(0.旧设备,1.新设备)
**请求样例:**
```
{
"deviceName":"agpla8",
"deviceCode":"a1-a2",
"deviceMac":"a1-a2",
"siteId":1,
"siteCode":"510105521000-0001",
"siteName":"测试站点1",
"productId":1,
"deviceFirmId":1,
"lon":"12",
"lati":"22",
"deviceInBuilding":13,
"deviceInFloor":22,
"defectsLiabilityPeriod":"2022-06-30",
"leadingOfficial":"张三",
"leadingOfficialTelephone":"13281114856",,
"source":1
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码|见附录码表
msg|String|消息|-
data|object|数据对象|-
&emsp;content|String|加密后的内容|AES加密
**content解密参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
rabbmitInfo|Object|rabbmit相关链接信息|-
&emsp;downTopicFilter|String|下行队列topic|-
&emsp;uploadTopicFilter|String|上行队列topic|-
&emsp;username|String|rabbmit用户名|-
&emsp;password|String|rabbmit密码|-
&emsp;host|String|ip|-
&emsp;port|String|端口|-
&emsp;virtualHost|String|虚拟机|-
&emsp;exchangeName|String|交换机名称|-
&emsp;messageTtl|String|队列消息超时时间,毫秒|-
serviceInfo|Object|服务接口连接信息|-
&emsp;homeUrl|String|首页|-
&emsp;serverUrl|String|前端服务接口地址|-
serviceInfo|Object|服务接口连接信息|-
&emsp;homeUrl|String|首页|-
&emsp;serverUrl|String|前端服务接口地址|-
deviceInfo|Object|设备基础信息|-
&emsp;siteId|Long|站点ID|-
&emsp;siteCode|String|站点编码|-
&emsp;siteName|String|站点名称|-
&emsp;productId|Long|设备产品类型Id|-
&emsp;productName|String|设备产品类型|-
&emsp;enabled|Integer|设备启用状态 (0.停止,1.启用)|-
**响应消息样例:**
```
{
"code":1,
"data":{
"content":"hRNPu+V1hc4lGRHtXGyVOF0U7ez8/ZxFke9L4o7DWVLMfsZwkViAChfLKSydAEWAdsbgP1dzfNrQTq7X0diu1awR/qdPNcDcpj5/hBozLn+OmuTKLUWhq9+WGtuoF3BTbtIpWkpQWDGolOCfRadenGUkuMozjEwwkt5CIDa+nzOqh56BJIhGahlx79Qt30ugj3UNhLTfvw5lpN9jY7u+icx+xnCRWIAKF8spLJ0ARYAbMXXhI21dYty7e1b+Cb2wZobupPyXRmyuy8Fkn4bculmkCywq78F6tPlu0rCCgJA="
}
}
```
## 对外平台接口服务
### 获取接口访问token
**请求URL:** m/api/getToken
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 获取接口访问token
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
loginName|String|平台用户名称|是|-
password|String|平台用户密码|是|-
**请求样例:**
```
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码|见附录码表
msg|String|消息|-
data|object|数据对象|-
**响应消息样例:**
```
```
### 接收第三方平台设备消息
**请求URL:** m/api/receive
**请求方式:** POST
**鉴权头信息:** Authorization: {{token}}
**内容类型:** application/json;charset=utf-8
**简要描述:**
**请求参数:**
参数名称|类型|备注|必填|其它
:------|:---|:---|:---|:---
receiveMethod|Integer|1:新增,2:修改,3:删除,4:激活,5:启用,6:停用|是|-
deviceName|String|设备名称|否|-
deviceCode|String|设备编码,如MAC地址|是|-
platformCode|String|平台系统编码|是|见平台编码附录
productCode|String|产品编码|是|见产品编码附录
ip|String|设备访问ip|否|-
port|String|设备端口|否|-
siteId|Long|站点ID,来源基础服务平台|是|-
leadingOfficial|String|负责人|否|-
leadingOfficialTelephone|String|否|联系电话|-
siteCode|String|站点编号,来源基础服务平台|是|-
siteName|String|站点名称|是|-
homeUrl|String|首页地址|否|-
deviceRemark|String|备注|是|-
deviceStatus|Integer|设备状态 (0.未激活,1.离线,2.在线)|是|默认0为激活
source|Integer|(0.旧设备,1.新设备)|是|默认1新设备
**请求样例:**
```
{}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码|见附录码表
msg|String|消息|-
data|object|数据对象|-
**响应消息样例:**
```
```
### 接收第三方平台命令消息
**请求URL:** m/api/callback
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 以数组方式进行提交
**请求参数:**
参数名称|类型|备注|必填|其它
:------|:---|:---|:---|:---
deviceCode|String|设备编码,如MAC地址|是|-
messageType|String|消息类型|是|如HEART_BEAT
timestamp|Long|时间戳|是|-
data|String|数据体,内容自行定义|否|-
**请求样例:**
```
[
{
"data":"{xxxx}",
"deviceCode":"a1",
"messageType":"HEART_BEAT",
"timestamp":1654656951795
},
{
"data":"{bbbbbb}",
"deviceCode":"a2",
"messageType":"HEART_BEAT",
"timestamp":1654656951795
}
]
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码|见附录码表
msg|String|消息|-
**响应消息样例:**
```
```
### 回调各个平台通知消息
**请求URL:** 各平台通知地址
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 设备消息通知各个平台,当配置了地址时候
**请求参数:**
参数名称|类型|备注|必填|其它
:------|:---|:---|:---|:---
type|Integer|消息类型|是|0:设备增删改查,data数据域封装具体设备消息,1:设备消息类,数据域透传设备上行消息体。
msg|String|消息|否|-
data|object|数据对象|是|-
&emsp;deviceStatus|Integer||是|状态,1:新增,2:修改,3:删除,4:激活,5:启用,6:停用,7:上线,8:下线
&emsp;deviceName|String|设备名称|否|-
&emsp;deviceCode|String|设备编码,如MAC地址|是|-
&emsp;productCode|String|产品编码|是|见附录
&emsp;ip|String|设备访问ip|否|-
&emsp;port|String|设备端口|否|-
&emsp;leadingOfficial|String|负责人|否|-
&emsp;leadingOfficialTelephone|String|联系电话|否|-
&emsp;siteId|Long|站点ID,来源基础服务平台|是|-
&emsp;siteCode|String|站点编号,来源基础服务平台|是|-
&emsp;siteName|String|站点名称|是|-
&emsp;deviceRemark|String|备注|是|-
**请求样例:**
```
{}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码|见附录码表
msg|String|消息|-
data|object|数据对象|-
**响应消息样例:**
```
```
## 设备消息
### 上行消息
**topic:** uploadTopicFilter
**请求方式:** rabbmitMQ
**内容类型:** application/json;charset=utf-8
**简要描述:** 上行消息存放队列
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
headers|Object|消息头|是|-
&emsp;data|Object|消息头数据对象|是|-
&emsp;&emsp;protocol|String|数据域协议类型,默认json|是|-
&emsp;&emsp;messageType|String|上报消息类型|是|HEART_BEAT
&emsp;&emsp;deviceCode|String|设备编码信息|是|如:mac地址
&emsp;&emsp;sign|String|签名|是|-
&emsp;&emsp;timestamp|String|时间戳|是|-
data|byte[]|byte数组,base64编码|是|-
key|String|消息唯一标识|是|-
**请求样例:**
```
{
"data":"YWJjZDEyMzQ=",
"headers":{
"data":{
"protocol":"json",
"messageType":"HEART_BEAT",
"deviceCode":"A1:A2:A3:A4:A5:A6",
"sign":"abcd1234",
"timestamp":"2022-04-15 09:48:05"
}
},
"key":"d3635cd0597d46c88b85797c3846b04f"
}
```
### 下行消息
**topic:** downTopicFilter
**请求方式:** rabbmitMQ
**内容类型:** application/json;charset=utf-8
**简要描述:** 下行消息存放队列
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
headers|Object|消息头|是|-
&emsp;data|Object|消息头数据对象|是|-
&emsp;&emsp;protocol|String|数据域协议类型,默认json|是|-
&emsp;&emsp;messageType|String|下发消息类型|是|UPGREAD
&emsp;&emsp;deviceCode|String|设备编码信息|是|如:mac地址
&emsp;&emsp;sign|String|签名|是|-
&emsp;&emsp;timestamp|String|时间戳|是|-
data|byte[]|byte数组,base64编码|是|-
key|String|消息唯一标识|是|-
**请求样例:**
```
{
"data":"YWJjZDEyMzQ=",
"headers":{
"data":{
"protocol":"json",
"messageType":"UPGREAD",
"deviceCode":"A1:A2:A3:A4:A5:A6",
"sign":"abcd1234",
"timestamp":"2022-04-15 09:48:05"
}
},
"key":"d3635cd0597d46c88b85797c3846b04f"
}
```
## 码表
### 响应结果码表
结果码|结果|其它
---|---|---
1|成功|-
1001|当前设备编码不存在|-
1002|当前设备编码已存在|-
1003|所属产品编码不存在|-
1004|当前设备未激活,请在后台配置后再激活|-
1005|所属平台不存在!请在后台添加后再激活|-
1006|当前设备所属产品平台未配置,请在后台配置后再激活|-
1007|站点ID为空|-
1008|设备已创建,请完善设备配置信息|-
-1|系统内部异常|-
## 附录
### 业务上行下行消息类型
编码|说明|其它
---|---|---
HEART_BEAT|设备心跳消息|设备上行发送
框架说明
1、已内置基本的系统管理模块(用户,角色,菜单,资源,参数,任务,区域,操作日志)
2、本基础项目基于springboot+ mybatis + mysql + vue
3、依赖外部环境有:redis,mysql,node.js,kafka等
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
后端说明
1.拷贝maven_jar文件夹下面的包到本地maven仓库(当前框架包需手动复制到本地仓库,后期搭建maven私服仓库则可略过)
2.Mysql导入数据库,sql脚本在db目录下,导入顺序:
base.sql (必须)
base-area.sql(可选,如不要区域模块,可不导入此脚本)
3、配置本地hosts:
#编辑C:\Windows\System32\drivers\etc\hosts,添加下面本地域名映射
127.0.0.1 base.testnew.com
4、启动项目,顺序:
4.4 启动管理前台:需安装node.js环境,命令行进入iot-manager-ui目录,依次执行yarn->yarn dev
4.5 启动业务后台:(可选)运行iot-handler下HandlerApplication.java
5、浏览器访问:
http://base.testnew.com:8081/
登录:admin/admin
前端说明
....
代码生成器说明:
1.本地启动codegen.jar 启动命令(java -jar codegen.jar)
2.浏览器访问本地http://localhost:8089/codegen
3.上传文档或者链接本地数据库自动构建源码包
4.生成代码结构,
(1)结构化代码 分为web,model,service,dao,拷贝到指定工程目录
(2)sql映射文件,拷贝到resources\sqlmap目录下
(3)db,根据文档自动生成的sql脚本文件
文档例子:当前目录下的 说明文档.docx
远程代码生成器地址 http://192.168.0.251:1023/
......@@ -22,8 +22,7 @@
</activation>
<properties>
<profiles.active>develop</profiles.active>
<profiles.server.port>18222</profiles.server.port>
<profiles.queue.type>rabbitmq</profiles.queue.type>
<profiles.server.port>18225</profiles.server.port>
<profiles.datasource.uri>
<![CDATA[jdbc:mysql://localhost:3306/log-platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong]]></profiles.datasource.uri>
<profiles.datasource.username>root</profiles.datasource.username>
......@@ -32,9 +31,7 @@
<profiles.redis.port>6379</profiles.redis.port>
<profiles.redis.username></profiles.redis.username>
<profiles.redis.password>hotel@2020</profiles.redis.password>
<profiles.redis.database>7</profiles.redis.database>
<profiles.kafka.brokers>192.168.0.251:9092</profiles.kafka.brokers>
<profiles.queue.type>rabbitmq</profiles.queue.type>
<profiles.redis.database>8</profiles.redis.database>
<profiles.rabbitmq.host>192.168.0.251</profiles.rabbitmq.host>
<profiles.rabbitmq.port>5672</profiles.rabbitmq.port>
<profiles.rabbitmq.username>taxi_mq</profiles.rabbitmq.username>
......
......@@ -6,17 +6,13 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ImportResource;
@EnableFeignClients
@SpringBootApplication(scanBasePackages = {"com.mortals"})
@ServletComponentScan("com.mortals")
@ImportResource(locations = {"classpath:config/spring-config.xml"})
public class ManagerApplication extends BaseWebApplication {
// @Bean
// public ICacheService cacheService() {
// return new LocalCacheServiceImpl();
// }
public static void main(String[] args) {
SpringApplication.run(ManagerApplication.class, args);
}
......
package com.mortals.xhx.module.access.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.framework.dao.ICRUDSubmeterDao;
import com.mortals.xhx.module.access.model.AccessLogEntity;
import java.util.List;
/**
* 访问日志Dao
* 访问日志 DAO接口
*
* @author zxfei
* @date 2022-08-17
*/
public interface AccessLogDao extends ICRUDSubmeterDao<AccessLogEntity,Long> {
}
package com.mortals.xhx.module.access.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.access.dao.AccessLogDao;
import com.mortals.xhx.module.access.model.AccessLogEntity;
import java.util.Date;
import com.mortals.framework.model.TableParam;
import com.mortals.framework.model.TableStrategy;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils;
import org.springframework.util.ObjectUtils;
import com.mortals.framework.dao.ibatis.SubmeterDaoImpl;
import com.mortals.xhx.module.access.model.AccessLogQuery;
import java.util.List;
/**
* 访问日志DaoImpl DAO接口
*
* @author zxfei
* @date 2022-08-17
*/
@Repository("accessLogDao")
public class AccessLogDaoImpl extends SubmeterDaoImpl<AccessLogEntity,Long> implements AccessLogDao {
@Override
protected TableStrategy getTableStrategy() {
return new TableStrategy("mortals_xhx_access_log_${unionTime}", TableStrategy.STRATEGY_BY_MONTH, 3);
}
@Override
public TableParam getTableParam(AccessLogEntity makeTableNameOfentity) {
TableParam tableParam = new TableParam();
if (!ObjectUtils.isEmpty(makeTableNameOfentity.getCreateTime())) {
tableParam.unionTime = makeTableNameOfentity.getCreateTime();
} else if (makeTableNameOfentity instanceof AccessLogQuery) {
AccessLogQuery AccessLogQuery = (AccessLogQuery) makeTableNameOfentity;
if (StringUtils.isNotEmpty(AccessLogQuery.getCreateTimeStart())) {
tableParam.unionTime = DateUtils.StrToDate(AccessLogQuery.getCreateTimeStart());
} else if (StringUtils.isNotEmpty(AccessLogQuery.getCreateTimeEnd())) {
tableParam.unionTime = DateUtils.StrToDate(AccessLogQuery.getCreateTimeEnd());
}
}
if (ObjectUtils.isEmpty(tableParam.unionTime)) {
tableParam.unionTime = new Date();
}
return tableParam;
}
}
package com.mortals.xhx.module.access.model;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.access.model.vo.AccessLogVo;
/**
* 访问日志实体对象
*
* @author zxfei
* @date 2022-08-17
*/
public class AccessLogEntity extends AccessLogVo {
private static final long serialVersionUID = 1L;
/**
* 追踪Id
*/
private String traceID;
/**
* 应用名称
*/
private String appName;
/**
* 实例IP
*/
private String hostName;
/**
* 日志等级
*/
private String logLevel;
/**
* 请求者IP
*/
private String requestIp;
/**
* 请求方式
*/
private String method;
/**
* 用户浏览器UA
*/
private String ua;
/**
* 请求URI
*/
private String uri;
/**
* 请求参数,json序列化
*/
private String requestParam;
/**
* 响应结果
*/
private String response;
/**
* 日志产生时间
*/
private Date logTime;
/**
* 持续时间,单位毫秒
*/
private Integer duration;
public AccessLogEntity(){}
/**
* 获取 追踪Id
* @return String
*/
public String getTraceID(){
return traceID;
}
/**
* 设置 追踪Id
* @param traceID
*/
public void setTraceID(String traceID){
this.traceID = traceID;
}
/**
* 获取 应用名称
* @return String
*/
public String getAppName(){
return appName;
}
/**
* 设置 应用名称
* @param appName
*/
public void setAppName(String appName){
this.appName = appName;
}
/**
* 获取 实例IP
* @return String
*/
public String getHostName(){
return hostName;
}
/**
* 设置 实例IP
* @param hostName
*/
public void setHostName(String hostName){
this.hostName = hostName;
}
/**
* 获取 日志等级
* @return String
*/
public String getLogLevel(){
return logLevel;
}
/**
* 设置 日志等级
* @param logLevel
*/
public void setLogLevel(String logLevel){
this.logLevel = logLevel;
}
/**
* 获取 请求者IP
* @return String
*/
public String getRequestIp(){
return requestIp;
}
/**
* 设置 请求者IP
* @param requestIp
*/
public void setRequestIp(String requestIp){
this.requestIp = requestIp;
}
/**
* 获取 请求方式
* @return String
*/
public String getMethod(){
return method;
}
/**
* 设置 请求方式
* @param method
*/
public void setMethod(String method){
this.method = method;
}
/**
* 获取 用户浏览器UA
* @return String
*/
public String getUa(){
return ua;
}
/**
* 设置 用户浏览器UA
* @param ua
*/
public void setUa(String ua){
this.ua = ua;
}
/**
* 获取 请求URI
* @return String
*/
public String getUri(){
return uri;
}
/**
* 设置 请求URI
* @param uri
*/
public void setUri(String uri){
this.uri = uri;
}
/**
* 获取 请求参数,json序列化
* @return String
*/
public String getRequestParam(){
return requestParam;
}
/**
* 设置 请求参数,json序列化
* @param requestParam
*/
public void setRequestParam(String requestParam){
this.requestParam = requestParam;
}
/**
* 获取 响应结果
* @return String
*/
public String getResponse(){
return response;
}
/**
* 设置 响应结果
* @param response
*/
public void setResponse(String response){
this.response = response;
}
/**
* 获取 日志产生时间
* @return Date
*/
public Date getLogTime(){
return logTime;
}
/**
* 设置 日志产生时间
* @param logTime
*/
public void setLogTime(Date logTime){
this.logTime = logTime;
}
/**
* 获取 持续时间,单位毫秒
* @return Integer
*/
public Integer getDuration(){
return duration;
}
/**
* 设置 持续时间,单位毫秒
* @param duration
*/
public void setDuration(Integer duration){
this.duration = duration;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof AccessLogEntity) {
AccessLogEntity tmp = (AccessLogEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",traceID:").append(getTraceID());
sb.append(",appName:").append(getAppName());
sb.append(",hostName:").append(getHostName());
sb.append(",logLevel:").append(getLogLevel());
sb.append(",requestIp:").append(getRequestIp());
sb.append(",method:").append(getMethod());
sb.append(",ua:").append(getUa());
sb.append(",uri:").append(getUri());
sb.append(",requestParam:").append(getRequestParam());
sb.append(",response:").append(getResponse());
sb.append(",logTime:").append(getLogTime());
sb.append(",duration:").append(getDuration());
return sb.toString();
}
public void initAttrValue(){
this.traceID = "";
this.appName = "";
this.hostName = "";
this.logLevel = "";
this.requestIp = "";
this.method = "";
this.ua = "";
this.uri = "";
this.requestParam = "";
this.response = "";
this.logTime = null;
this.duration = null;
}
}
\ No newline at end of file
package com.mortals.xhx.module.access.model;
import java.util.Date;
import java.util.List;
import com.mortals.xhx.module.access.model.AccessLogEntity;
/**
* 访问日志查询对象
*
* @author zxfei
* @date 2022-08-17
*/
public class AccessLogQuery extends AccessLogEntity {
/** 开始 主键ID,主键,自增长 */
private Long idStart;
/** 结束 主键ID,主键,自增长 */
private Long idEnd;
/** 增加 主键ID,主键,自增长 */
private Long idIncrement;
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
/** 追踪Id */
private List<String> traceIDList;
/** 应用名称 */
private List<String> appNameList;
/** 实例IP */
private List<String> hostNameList;
/** 日志等级 */
private List<String> logLevelList;
/** 请求者IP */
private List<String> requestIpList;
/** 请求方式 */
private List<String> methodList;
/** 用户浏览器UA */
private List<String> uaList;
/** 请求URI */
private List<String> uriList;
/** 请求参数,json序列化 */
private List<String> requestParamList;
/** 响应结果 */
private List<String> responseList;
/** 开始 日志产生时间 */
private String logTimeStart;
/** 结束 日志产生时间 */
private String logTimeEnd;
/** 开始 持续时间,单位毫秒 */
private Integer durationStart;
/** 结束 持续时间,单位毫秒 */
private Integer durationEnd;
/** 增加 持续时间,单位毫秒 */
private Integer durationIncrement;
/** 持续时间,单位毫秒列表 */
private List <Integer> durationList;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<AccessLogQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<AccessLogQuery> andConditionList;
public AccessLogQuery(){}
/**
* 获取 开始 主键ID,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 主键ID,主键,自增长
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 主键ID,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 主键ID,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 追踪Id
* @return traceIDList
*/
public List<String> getTraceIDList(){
return this.traceIDList;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public void setTraceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
}
/**
* 获取 应用名称
* @return appNameList
*/
public List<String> getAppNameList(){
return this.appNameList;
}
/**
* 设置 应用名称
* @param appNameList
*/
public void setAppNameList(List<String> appNameList){
this.appNameList = appNameList;
}
/**
* 获取 实例IP
* @return hostNameList
*/
public List<String> getHostNameList(){
return this.hostNameList;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public void setHostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
}
/**
* 获取 日志等级
* @return logLevelList
*/
public List<String> getLogLevelList(){
return this.logLevelList;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public void setLogLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
}
/**
* 获取 请求者IP
* @return requestIpList
*/
public List<String> getRequestIpList(){
return this.requestIpList;
}
/**
* 设置 请求者IP
* @param requestIpList
*/
public void setRequestIpList(List<String> requestIpList){
this.requestIpList = requestIpList;
}
/**
* 获取 请求方式
* @return methodList
*/
public List<String> getMethodList(){
return this.methodList;
}
/**
* 设置 请求方式
* @param methodList
*/
public void setMethodList(List<String> methodList){
this.methodList = methodList;
}
/**
* 获取 用户浏览器UA
* @return uaList
*/
public List<String> getUaList(){
return this.uaList;
}
/**
* 设置 用户浏览器UA
* @param uaList
*/
public void setUaList(List<String> uaList){
this.uaList = uaList;
}
/**
* 获取 请求URI
* @return uriList
*/
public List<String> getUriList(){
return this.uriList;
}
/**
* 设置 请求URI
* @param uriList
*/
public void setUriList(List<String> uriList){
this.uriList = uriList;
}
/**
* 获取 请求参数,json序列化
* @return requestParamList
*/
public List<String> getRequestParamList(){
return this.requestParamList;
}
/**
* 设置 请求参数,json序列化
* @param requestParamList
*/
public void setRequestParamList(List<String> requestParamList){
this.requestParamList = requestParamList;
}
/**
* 获取 响应结果
* @return responseList
*/
public List<String> getResponseList(){
return this.responseList;
}
/**
* 设置 响应结果
* @param responseList
*/
public void setResponseList(List<String> responseList){
this.responseList = responseList;
}
/**
* 获取 开始 日志产生时间
* @return logTimeStart
*/
public String getLogTimeStart(){
return this.logTimeStart;
}
/**
* 设置 开始 日志产生时间
* @param logTimeStart
*/
public void setLogTimeStart(String logTimeStart){
this.logTimeStart = logTimeStart;
}
/**
* 获取 结束 日志产生时间
* @return logTimeEnd
*/
public String getLogTimeEnd(){
return this.logTimeEnd;
}
/**
* 设置 结束 日志产生时间
* @param logTimeEnd
*/
public void setLogTimeEnd(String logTimeEnd){
this.logTimeEnd = logTimeEnd;
}
/**
* 获取 开始 持续时间,单位毫秒
* @return durationStart
*/
public Integer getDurationStart(){
return this.durationStart;
}
/**
* 设置 开始 持续时间,单位毫秒
* @param durationStart
*/
public void setDurationStart(Integer durationStart){
this.durationStart = durationStart;
}
/**
* 获取 结束 持续时间,单位毫秒
* @return $durationEnd
*/
public Integer getDurationEnd(){
return this.durationEnd;
}
/**
* 设置 结束 持续时间,单位毫秒
* @param durationEnd
*/
public void setDurationEnd(Integer durationEnd){
this.durationEnd = durationEnd;
}
/**
* 获取 增加 持续时间,单位毫秒
* @return durationIncrement
*/
public Integer getDurationIncrement(){
return this.durationIncrement;
}
/**
* 设置 增加 持续时间,单位毫秒
* @param durationIncrement
*/
public void setDurationIncrement(Integer durationIncrement){
this.durationIncrement = durationIncrement;
}
/**
* 获取 持续时间,单位毫秒
* @return durationList
*/
public List<Integer> getDurationList(){
return this.durationList;
}
/**
* 设置 持续时间,单位毫秒
* @param durationList
*/
public void setDurationList(List<Integer> durationList){
this.durationList = durationList;
}
/**
* 获取 开始 创建用户
* @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 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;
}
/**
* 设置 主键ID,主键,自增长
* @param id
*/
public AccessLogQuery id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public AccessLogQuery idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public AccessLogQuery idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public AccessLogQuery idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public AccessLogQuery idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 追踪Id
* @param traceID
*/
public AccessLogQuery traceID(String traceID){
setTraceID(traceID);
return this;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public AccessLogQuery traceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
return this;
}
/**
* 设置 应用名称
* @param appName
*/
public AccessLogQuery appName(String appName){
setAppName(appName);
return this;
}
/**
* 设置 应用名称
* @param appNameList
*/
public AccessLogQuery appNameList(List<String> appNameList){
this.appNameList = appNameList;
return this;
}
/**
* 设置 实例IP
* @param hostName
*/
public AccessLogQuery hostName(String hostName){
setHostName(hostName);
return this;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public AccessLogQuery hostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
return this;
}
/**
* 设置 日志等级
* @param logLevel
*/
public AccessLogQuery logLevel(String logLevel){
setLogLevel(logLevel);
return this;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public AccessLogQuery logLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
return this;
}
/**
* 设置 请求者IP
* @param requestIp
*/
public AccessLogQuery requestIp(String requestIp){
setRequestIp(requestIp);
return this;
}
/**
* 设置 请求者IP
* @param requestIpList
*/
public AccessLogQuery requestIpList(List<String> requestIpList){
this.requestIpList = requestIpList;
return this;
}
/**
* 设置 请求方式
* @param method
*/
public AccessLogQuery method(String method){
setMethod(method);
return this;
}
/**
* 设置 请求方式
* @param methodList
*/
public AccessLogQuery methodList(List<String> methodList){
this.methodList = methodList;
return this;
}
/**
* 设置 用户浏览器UA
* @param ua
*/
public AccessLogQuery ua(String ua){
setUa(ua);
return this;
}
/**
* 设置 用户浏览器UA
* @param uaList
*/
public AccessLogQuery uaList(List<String> uaList){
this.uaList = uaList;
return this;
}
/**
* 设置 请求URI
* @param uri
*/
public AccessLogQuery uri(String uri){
setUri(uri);
return this;
}
/**
* 设置 请求URI
* @param uriList
*/
public AccessLogQuery uriList(List<String> uriList){
this.uriList = uriList;
return this;
}
/**
* 设置 请求参数,json序列化
* @param requestParam
*/
public AccessLogQuery requestParam(String requestParam){
setRequestParam(requestParam);
return this;
}
/**
* 设置 请求参数,json序列化
* @param requestParamList
*/
public AccessLogQuery requestParamList(List<String> requestParamList){
this.requestParamList = requestParamList;
return this;
}
/**
* 设置 响应结果
* @param response
*/
public AccessLogQuery response(String response){
setResponse(response);
return this;
}
/**
* 设置 响应结果
* @param responseList
*/
public AccessLogQuery responseList(List<String> responseList){
this.responseList = responseList;
return this;
}
/**
* 设置 持续时间,单位毫秒
* @param duration
*/
public AccessLogQuery duration(Integer duration){
setDuration(duration);
return this;
}
/**
* 设置 开始 持续时间,单位毫秒
* @param durationStart
*/
public AccessLogQuery durationStart(Integer durationStart){
this.durationStart = durationStart;
return this;
}
/**
* 设置 结束 持续时间,单位毫秒
* @param durationEnd
*/
public AccessLogQuery durationEnd(Integer durationEnd){
this.durationEnd = durationEnd;
return this;
}
/**
* 设置 增加 持续时间,单位毫秒
* @param durationIncrement
*/
public AccessLogQuery durationIncrement(Integer durationIncrement){
this.durationIncrement = durationIncrement;
return this;
}
/**
* 设置 持续时间,单位毫秒
* @param durationList
*/
public AccessLogQuery durationList(List<Integer> durationList){
this.durationList = durationList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public AccessLogQuery createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public AccessLogQuery createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public AccessLogQuery createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public AccessLogQuery createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public AccessLogQuery createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<AccessLogQuery> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<AccessLogQuery> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<AccessLogQuery> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<AccessLogQuery> andConditionList){
this.andConditionList = andConditionList;
}
}
\ No newline at end of file
package com.mortals.xhx.module.access.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.access.model.AccessLogEntity;
import java.util.ArrayList;
import java.util.List;
/**
* 访问日志视图对象
*
* @author zxfei
* @date 2022-08-17
*/
public class AccessLogVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.access.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.access.model.AccessLogEntity;
/**
* AccessLogService
*
* 访问日志 service接口
*
* @author zxfei
* @date 2022-08-17
*/
public interface AccessLogService extends ICRUDService<AccessLogEntity,Long>{
}
\ No newline at end of file
package com.mortals.xhx.module.access.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.access.dao.AccessLogDao;
import com.mortals.xhx.module.access.model.AccessLogEntity;
import com.mortals.xhx.module.access.service.AccessLogService;
/**
* AccessLogService
* 访问日志 service实现
*
* @author zxfei
* @date 2022-08-17
*/
@Service("accessLogService")
public class AccessLogServiceImpl extends AbstractCRUDServiceImpl<AccessLogDao, AccessLogEntity, Long> implements AccessLogService {
}
\ No newline at end of file
package com.mortals.xhx.module.access.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.access.model.AccessLogEntity;
import com.mortals.xhx.module.access.service.AccessLogService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 访问日志
*
* @author zxfei
* @date 2022-08-17
*/
@RestController
@RequestMapping("access/log")
public class AccessLogController extends BaseCRUDJsonBodyMappingController<AccessLogService,AccessLogEntity,Long> {
@Autowired
private ParamService paramService;
public AccessLogController(){
super.setModuleDesc( "访问日志");
}
@Override
protected void init(Map<String, Object> model, Context context) {
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.biz.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.framework.dao.ICRUDSubmeterDao;
import com.mortals.xhx.module.biz.model.BizLogEntity;
import java.util.List;
/**
* 业务日志Dao
* 业务日志 DAO接口
*
* @author zxfei
* @date 2022-08-17
*/
public interface BizLogDao extends ICRUDSubmeterDao<BizLogEntity,Long> {
}
package com.mortals.xhx.module.biz.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.biz.dao.BizLogDao;
import com.mortals.xhx.module.biz.model.BizLogEntity;
import java.util.Date;
import com.mortals.framework.model.TableParam;
import com.mortals.framework.model.TableStrategy;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils;
import org.springframework.util.ObjectUtils;
import com.mortals.framework.dao.ibatis.SubmeterDaoImpl;
import com.mortals.xhx.module.biz.model.BizLogQuery;
import java.util.List;
/**
* 业务日志DaoImpl DAO接口
*
* @author zxfei
* @date 2022-08-17
*/
@Repository("bizLogDao")
public class BizLogDaoImpl extends SubmeterDaoImpl<BizLogEntity,Long> implements BizLogDao {
@Override
protected TableStrategy getTableStrategy() {
return new TableStrategy("mortals_xhx_biz_log_${unionTime}", TableStrategy.STRATEGY_BY_MONTH, 3);
}
@Override
public TableParam getTableParam(BizLogEntity makeTableNameOfentity) {
TableParam tableParam = new TableParam();
if (!ObjectUtils.isEmpty(makeTableNameOfentity.getCreateTime())) {
tableParam.unionTime = makeTableNameOfentity.getCreateTime();
} else if (makeTableNameOfentity instanceof BizLogQuery) {
BizLogQuery BizLogQuery = (BizLogQuery) makeTableNameOfentity;
if (StringUtils.isNotEmpty(BizLogQuery.getCreateTimeStart())) {
tableParam.unionTime = DateUtils.StrToDate(BizLogQuery.getCreateTimeStart());
} else if (StringUtils.isNotEmpty(BizLogQuery.getCreateTimeEnd())) {
tableParam.unionTime = DateUtils.StrToDate(BizLogQuery.getCreateTimeEnd());
}
}
if (ObjectUtils.isEmpty(tableParam.unionTime)) {
tableParam.unionTime = new Date();
}
return tableParam;
}
}
package com.mortals.xhx.module.biz.model;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.biz.model.vo.BizLogVo;
/**
* 业务日志实体对象
*
* @author zxfei
* @date 2022-08-17
*/
public class BizLogEntity extends BizLogVo {
private static final long serialVersionUID = 1L;
/**
* 追踪Id
*/
private String traceID;
/**
* 应用名称
*/
private String appName;
/**
* 实例IP
*/
private String hostName;
/**
* 日志等级
*/
private String logLevel;
/**
* 用户唯一标识
*/
private String userCode;
/**
* 设备唯一标识
*/
private String deviceCode;
/**
* 记录埋点的事件主题,方便实时计算或同步进行数据筛选
*/
private String eventTopic;
/**
* 记录埋点中文名称
*/
private String eventTopicName;
/**
* 事件参数,json
*/
private String msg;
/**
* 日志产生时间
*/
private Date logTime;
public BizLogEntity(){}
/**
* 获取 追踪Id
* @return String
*/
public String getTraceID(){
return traceID;
}
/**
* 设置 追踪Id
* @param traceID
*/
public void setTraceID(String traceID){
this.traceID = traceID;
}
/**
* 获取 应用名称
* @return String
*/
public String getAppName(){
return appName;
}
/**
* 设置 应用名称
* @param appName
*/
public void setAppName(String appName){
this.appName = appName;
}
/**
* 获取 实例IP
* @return String
*/
public String getHostName(){
return hostName;
}
/**
* 设置 实例IP
* @param hostName
*/
public void setHostName(String hostName){
this.hostName = hostName;
}
/**
* 获取 日志等级
* @return String
*/
public String getLogLevel(){
return logLevel;
}
/**
* 设置 日志等级
* @param logLevel
*/
public void setLogLevel(String logLevel){
this.logLevel = logLevel;
}
/**
* 获取 用户唯一标识
* @return String
*/
public String getUserCode(){
return userCode;
}
/**
* 设置 用户唯一标识
* @param userCode
*/
public void setUserCode(String userCode){
this.userCode = userCode;
}
/**
* 获取 设备唯一标识
* @return String
*/
public String getDeviceCode(){
return deviceCode;
}
/**
* 设置 设备唯一标识
* @param deviceCode
*/
public void setDeviceCode(String deviceCode){
this.deviceCode = deviceCode;
}
/**
* 获取 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @return String
*/
public String getEventTopic(){
return eventTopic;
}
/**
* 设置 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @param eventTopic
*/
public void setEventTopic(String eventTopic){
this.eventTopic = eventTopic;
}
/**
* 获取 记录埋点中文名称
* @return String
*/
public String getEventTopicName(){
return eventTopicName;
}
/**
* 设置 记录埋点中文名称
* @param eventTopicName
*/
public void setEventTopicName(String eventTopicName){
this.eventTopicName = eventTopicName;
}
/**
* 获取 事件参数,json
* @return String
*/
public String getMsg(){
return msg;
}
/**
* 设置 事件参数,json
* @param msg
*/
public void setMsg(String msg){
this.msg = msg;
}
/**
* 获取 日志产生时间
* @return Date
*/
public Date getLogTime(){
return logTime;
}
/**
* 设置 日志产生时间
* @param logTime
*/
public void setLogTime(Date logTime){
this.logTime = logTime;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof BizLogEntity) {
BizLogEntity tmp = (BizLogEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",traceID:").append(getTraceID());
sb.append(",appName:").append(getAppName());
sb.append(",hostName:").append(getHostName());
sb.append(",logLevel:").append(getLogLevel());
sb.append(",userCode:").append(getUserCode());
sb.append(",deviceCode:").append(getDeviceCode());
sb.append(",eventTopic:").append(getEventTopic());
sb.append(",eventTopicName:").append(getEventTopicName());
sb.append(",msg:").append(getMsg());
sb.append(",logTime:").append(getLogTime());
return sb.toString();
}
public void initAttrValue(){
this.traceID = "";
this.appName = "";
this.hostName = "";
this.logLevel = "";
this.userCode = "";
this.deviceCode = "";
this.eventTopic = "";
this.eventTopicName = "";
this.msg = "";
this.logTime = null;
}
}
\ No newline at end of file
package com.mortals.xhx.module.biz.model;
import java.util.Date;
import java.util.List;
import com.mortals.xhx.module.biz.model.BizLogEntity;
/**
* 业务日志查询对象
*
* @author zxfei
* @date 2022-08-17
*/
public class BizLogQuery extends BizLogEntity {
/** 开始 主键ID,主键,自增长 */
private Long idStart;
/** 结束 主键ID,主键,自增长 */
private Long idEnd;
/** 增加 主键ID,主键,自增长 */
private Long idIncrement;
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
/** 追踪Id */
private List<String> traceIDList;
/** 应用名称 */
private List<String> appNameList;
/** 实例IP */
private List<String> hostNameList;
/** 日志等级 */
private List<String> logLevelList;
/** 用户唯一标识 */
private List<String> userCodeList;
/** 设备唯一标识 */
private List<String> deviceCodeList;
/** 记录埋点的事件主题,方便实时计算或同步进行数据筛选 */
private List<String> eventTopicList;
/** 记录埋点中文名称 */
private List<String> eventTopicNameList;
/** 事件参数,json */
private List<String> msgList;
/** 开始 日志产生时间 */
private String logTimeStart;
/** 结束 日志产生时间 */
private String logTimeEnd;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<BizLogQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<BizLogQuery> andConditionList;
public BizLogQuery(){}
/**
* 获取 开始 主键ID,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 主键ID,主键,自增长
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 主键ID,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 主键ID,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 追踪Id
* @return traceIDList
*/
public List<String> getTraceIDList(){
return this.traceIDList;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public void setTraceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
}
/**
* 获取 应用名称
* @return appNameList
*/
public List<String> getAppNameList(){
return this.appNameList;
}
/**
* 设置 应用名称
* @param appNameList
*/
public void setAppNameList(List<String> appNameList){
this.appNameList = appNameList;
}
/**
* 获取 实例IP
* @return hostNameList
*/
public List<String> getHostNameList(){
return this.hostNameList;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public void setHostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
}
/**
* 获取 日志等级
* @return logLevelList
*/
public List<String> getLogLevelList(){
return this.logLevelList;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public void setLogLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
}
/**
* 获取 用户唯一标识
* @return userCodeList
*/
public List<String> getUserCodeList(){
return this.userCodeList;
}
/**
* 设置 用户唯一标识
* @param userCodeList
*/
public void setUserCodeList(List<String> userCodeList){
this.userCodeList = userCodeList;
}
/**
* 获取 设备唯一标识
* @return deviceCodeList
*/
public List<String> getDeviceCodeList(){
return this.deviceCodeList;
}
/**
* 设置 设备唯一标识
* @param deviceCodeList
*/
public void setDeviceCodeList(List<String> deviceCodeList){
this.deviceCodeList = deviceCodeList;
}
/**
* 获取 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @return eventTopicList
*/
public List<String> getEventTopicList(){
return this.eventTopicList;
}
/**
* 设置 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @param eventTopicList
*/
public void setEventTopicList(List<String> eventTopicList){
this.eventTopicList = eventTopicList;
}
/**
* 获取 记录埋点中文名称
* @return eventTopicNameList
*/
public List<String> getEventTopicNameList(){
return this.eventTopicNameList;
}
/**
* 设置 记录埋点中文名称
* @param eventTopicNameList
*/
public void setEventTopicNameList(List<String> eventTopicNameList){
this.eventTopicNameList = eventTopicNameList;
}
/**
* 获取 事件参数,json
* @return msgList
*/
public List<String> getMsgList(){
return this.msgList;
}
/**
* 设置 事件参数,json
* @param msgList
*/
public void setMsgList(List<String> msgList){
this.msgList = msgList;
}
/**
* 获取 开始 日志产生时间
* @return logTimeStart
*/
public String getLogTimeStart(){
return this.logTimeStart;
}
/**
* 设置 开始 日志产生时间
* @param logTimeStart
*/
public void setLogTimeStart(String logTimeStart){
this.logTimeStart = logTimeStart;
}
/**
* 获取 结束 日志产生时间
* @return logTimeEnd
*/
public String getLogTimeEnd(){
return this.logTimeEnd;
}
/**
* 设置 结束 日志产生时间
* @param logTimeEnd
*/
public void setLogTimeEnd(String logTimeEnd){
this.logTimeEnd = logTimeEnd;
}
/**
* 获取 开始 创建用户
* @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 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;
}
/**
* 设置 主键ID,主键,自增长
* @param id
*/
public BizLogQuery id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public BizLogQuery idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public BizLogQuery idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public BizLogQuery idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public BizLogQuery idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 追踪Id
* @param traceID
*/
public BizLogQuery traceID(String traceID){
setTraceID(traceID);
return this;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public BizLogQuery traceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
return this;
}
/**
* 设置 应用名称
* @param appName
*/
public BizLogQuery appName(String appName){
setAppName(appName);
return this;
}
/**
* 设置 应用名称
* @param appNameList
*/
public BizLogQuery appNameList(List<String> appNameList){
this.appNameList = appNameList;
return this;
}
/**
* 设置 实例IP
* @param hostName
*/
public BizLogQuery hostName(String hostName){
setHostName(hostName);
return this;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public BizLogQuery hostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
return this;
}
/**
* 设置 日志等级
* @param logLevel
*/
public BizLogQuery logLevel(String logLevel){
setLogLevel(logLevel);
return this;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public BizLogQuery logLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
return this;
}
/**
* 设置 用户唯一标识
* @param userCode
*/
public BizLogQuery userCode(String userCode){
setUserCode(userCode);
return this;
}
/**
* 设置 用户唯一标识
* @param userCodeList
*/
public BizLogQuery userCodeList(List<String> userCodeList){
this.userCodeList = userCodeList;
return this;
}
/**
* 设置 设备唯一标识
* @param deviceCode
*/
public BizLogQuery deviceCode(String deviceCode){
setDeviceCode(deviceCode);
return this;
}
/**
* 设置 设备唯一标识
* @param deviceCodeList
*/
public BizLogQuery deviceCodeList(List<String> deviceCodeList){
this.deviceCodeList = deviceCodeList;
return this;
}
/**
* 设置 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @param eventTopic
*/
public BizLogQuery eventTopic(String eventTopic){
setEventTopic(eventTopic);
return this;
}
/**
* 设置 记录埋点的事件主题,方便实时计算或同步进行数据筛选
* @param eventTopicList
*/
public BizLogQuery eventTopicList(List<String> eventTopicList){
this.eventTopicList = eventTopicList;
return this;
}
/**
* 设置 记录埋点中文名称
* @param eventTopicName
*/
public BizLogQuery eventTopicName(String eventTopicName){
setEventTopicName(eventTopicName);
return this;
}
/**
* 设置 记录埋点中文名称
* @param eventTopicNameList
*/
public BizLogQuery eventTopicNameList(List<String> eventTopicNameList){
this.eventTopicNameList = eventTopicNameList;
return this;
}
/**
* 设置 事件参数,json
* @param msg
*/
public BizLogQuery msg(String msg){
setMsg(msg);
return this;
}
/**
* 设置 事件参数,json
* @param msgList
*/
public BizLogQuery msgList(List<String> msgList){
this.msgList = msgList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public BizLogQuery createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public BizLogQuery createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public BizLogQuery createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public BizLogQuery createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public BizLogQuery createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<BizLogQuery> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<BizLogQuery> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<BizLogQuery> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<BizLogQuery> andConditionList){
this.andConditionList = andConditionList;
}
}
\ No newline at end of file
package com.mortals.xhx.module.biz.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.biz.model.BizLogEntity;
import java.util.ArrayList;
import java.util.List;
/**
* 业务日志视图对象
*
* @author zxfei
* @date 2022-08-17
*/
public class BizLogVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.biz.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.biz.model.BizLogEntity;
/**
* BizLogService
*
* 业务日志 service接口
*
* @author zxfei
* @date 2022-08-17
*/
public interface BizLogService extends ICRUDService<BizLogEntity,Long>{
}
\ No newline at end of file
package com.mortals.xhx.module.biz.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.biz.dao.BizLogDao;
import com.mortals.xhx.module.biz.model.BizLogEntity;
import com.mortals.xhx.module.biz.service.BizLogService;
/**
* BizLogService
* 业务日志 service实现
*
* @author zxfei
* @date 2022-08-17
*/
@Service("bizLogService")
public class BizLogServiceImpl extends AbstractCRUDServiceImpl<BizLogDao, BizLogEntity, Long> implements BizLogService {
}
\ No newline at end of file
package com.mortals.xhx.module.biz.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.biz.model.BizLogEntity;
import com.mortals.xhx.module.biz.service.BizLogService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 业务日志
*
* @author zxfei
* @date 2022-08-17
*/
@RestController
@RequestMapping("biz/log")
public class BizLogController extends BaseCRUDJsonBodyMappingController<BizLogService,BizLogEntity,Long> {
@Autowired
private ParamService paramService;
public BizLogController(){
super.setModuleDesc( "业务日志");
}
@Override
protected void init(Map<String, Object> model, Context context) {
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.error.dao;
import com.mortals.framework.dao.ICRUDSubmeterDao;
import com.mortals.xhx.module.error.model.ErrorLogEntity;
import java.util.List;
/**
* 异常日志Dao
* 异常日志 DAO接口
*
* @author zxfei
* @date 2022-08-17
*/
public interface ErrorLogDao extends ICRUDSubmeterDao<ErrorLogEntity,Long>{
}
package com.mortals.xhx.module.error.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.error.dao.ErrorLogDao;
import com.mortals.xhx.module.error.model.ErrorLogEntity;
import java.util.Date;
import com.mortals.framework.model.TableParam;
import com.mortals.framework.model.TableStrategy;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils;
import org.springframework.util.ObjectUtils;
import com.mortals.framework.dao.ibatis.SubmeterDaoImpl;
import com.mortals.xhx.module.error.model.ErrorLogQuery;
import java.util.List;
/**
* 异常日志DaoImpl DAO接口
*
* @author zxfei
* @date 2022-08-17
*/
@Repository("errorLogDao")
public class ErrorLogDaoImpl extends SubmeterDaoImpl<ErrorLogEntity,Long> implements ErrorLogDao {
@Override
protected TableStrategy getTableStrategy() {
return new TableStrategy("mortals_xhx_error_log_${unionTime}", TableStrategy.STRATEGY_BY_MONTH, 3);
}
@Override
public TableParam getTableParam(ErrorLogEntity makeTableNameOfentity) {
TableParam tableParam = new TableParam();
if (!ObjectUtils.isEmpty(makeTableNameOfentity.getCreateTime())) {
tableParam.unionTime = makeTableNameOfentity.getCreateTime();
} else if (makeTableNameOfentity instanceof ErrorLogQuery) {
ErrorLogQuery ErrorLogQuery = (ErrorLogQuery) makeTableNameOfentity;
if (StringUtils.isNotEmpty(ErrorLogQuery.getCreateTimeStart())) {
tableParam.unionTime = DateUtils.StrToDate(ErrorLogQuery.getCreateTimeStart());
} else if (StringUtils.isNotEmpty(ErrorLogQuery.getCreateTimeEnd())) {
tableParam.unionTime = DateUtils.StrToDate(ErrorLogQuery.getCreateTimeEnd());
}
}
if (ObjectUtils.isEmpty(tableParam.unionTime)) {
tableParam.unionTime = new Date();
}
return tableParam;
}
}
package com.mortals.xhx.module.error.model;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.error.model.vo.ErrorLogVo;
/**
* 异常日志实体对象
*
* @author zxfei
* @date 2022-08-17
*/
public class ErrorLogEntity extends ErrorLogVo {
private static final long serialVersionUID = 1L;
/**
* 追踪Id
*/
private String traceID;
/**
* 服务类型,webOS,android,IOS,服务后端
*/
private String serverType;
/**
* 应用名称
*/
private String appName;
/**
* 实例IP
*/
private String hostName;
/**
* 日志等级
*/
private String logLevel;
/**
* 线程号
*/
private String threadNo;
/**
* 异常堆栈信息
*/
private String error;
/**
* 响应结果
*/
private String response;
/**
* 日志产生时间
*/
private Date logTime;
public ErrorLogEntity(){}
/**
* 获取 追踪Id
* @return String
*/
public String getTraceID(){
return traceID;
}
/**
* 设置 追踪Id
* @param traceID
*/
public void setTraceID(String traceID){
this.traceID = traceID;
}
/**
* 获取 服务类型,webOS,android,IOS,服务后端
* @return String
*/
public String getServerType(){
return serverType;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverType
*/
public void setServerType(String serverType){
this.serverType = serverType;
}
/**
* 获取 应用名称
* @return String
*/
public String getAppName(){
return appName;
}
/**
* 设置 应用名称
* @param appName
*/
public void setAppName(String appName){
this.appName = appName;
}
/**
* 获取 实例IP
* @return String
*/
public String getHostName(){
return hostName;
}
/**
* 设置 实例IP
* @param hostName
*/
public void setHostName(String hostName){
this.hostName = hostName;
}
/**
* 获取 日志等级
* @return String
*/
public String getLogLevel(){
return logLevel;
}
/**
* 设置 日志等级
* @param logLevel
*/
public void setLogLevel(String logLevel){
this.logLevel = logLevel;
}
/**
* 获取 线程号
* @return String
*/
public String getThreadNo(){
return threadNo;
}
/**
* 设置 线程号
* @param threadNo
*/
public void setThreadNo(String threadNo){
this.threadNo = threadNo;
}
/**
* 获取 异常堆栈信息
* @return String
*/
public String getError(){
return error;
}
/**
* 设置 异常堆栈信息
* @param error
*/
public void setError(String error){
this.error = error;
}
/**
* 获取 响应结果
* @return String
*/
public String getResponse(){
return response;
}
/**
* 设置 响应结果
* @param response
*/
public void setResponse(String response){
this.response = response;
}
/**
* 获取 日志产生时间
* @return Date
*/
public Date getLogTime(){
return logTime;
}
/**
* 设置 日志产生时间
* @param logTime
*/
public void setLogTime(Date logTime){
this.logTime = logTime;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof ErrorLogEntity) {
ErrorLogEntity tmp = (ErrorLogEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",traceID:").append(getTraceID());
sb.append(",serverType:").append(getServerType());
sb.append(",appName:").append(getAppName());
sb.append(",hostName:").append(getHostName());
sb.append(",logLevel:").append(getLogLevel());
sb.append(",threadNo:").append(getThreadNo());
sb.append(",error:").append(getError());
sb.append(",response:").append(getResponse());
sb.append(",logTime:").append(getLogTime());
return sb.toString();
}
public void initAttrValue(){
this.traceID = "";
this.serverType = "";
this.appName = "";
this.hostName = "";
this.logLevel = "";
this.threadNo = "";
this.error = "";
this.response = "";
this.logTime = null;
}
}
\ No newline at end of file
package com.mortals.xhx.module.error.model;
import java.util.Date;
import java.util.List;
import com.mortals.xhx.module.error.model.ErrorLogEntity;
/**
* 异常日志查询对象
*
* @author zxfei
* @date 2022-08-17
*/
public class ErrorLogQuery extends ErrorLogEntity {
/** 开始 主键ID,主键,自增长 */
private Long idStart;
/** 结束 主键ID,主键,自增长 */
private Long idEnd;
/** 增加 主键ID,主键,自增长 */
private Long idIncrement;
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
/** 追踪Id */
private List<String> traceIDList;
/** 服务类型,webOS,android,IOS,服务后端 */
private List<String> serverTypeList;
/** 应用名称 */
private List<String> appNameList;
/** 实例IP */
private List<String> hostNameList;
/** 日志等级 */
private List<String> logLevelList;
/** 线程号 */
private List<String> threadNoList;
/** 异常堆栈信息 */
private List<String> errorList;
/** 响应结果 */
private List<String> responseList;
/** 开始 日志产生时间 */
private String logTimeStart;
/** 结束 日志产生时间 */
private String logTimeEnd;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<ErrorLogQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<ErrorLogQuery> andConditionList;
public ErrorLogQuery(){}
/**
* 获取 开始 主键ID,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 主键ID,主键,自增长
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 主键ID,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 主键ID,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 追踪Id
* @return traceIDList
*/
public List<String> getTraceIDList(){
return this.traceIDList;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public void setTraceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
}
/**
* 获取 服务类型,webOS,android,IOS,服务后端
* @return serverTypeList
*/
public List<String> getServerTypeList(){
return this.serverTypeList;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverTypeList
*/
public void setServerTypeList(List<String> serverTypeList){
this.serverTypeList = serverTypeList;
}
/**
* 获取 应用名称
* @return appNameList
*/
public List<String> getAppNameList(){
return this.appNameList;
}
/**
* 设置 应用名称
* @param appNameList
*/
public void setAppNameList(List<String> appNameList){
this.appNameList = appNameList;
}
/**
* 获取 实例IP
* @return hostNameList
*/
public List<String> getHostNameList(){
return this.hostNameList;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public void setHostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
}
/**
* 获取 日志等级
* @return logLevelList
*/
public List<String> getLogLevelList(){
return this.logLevelList;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public void setLogLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
}
/**
* 获取 线程号
* @return threadNoList
*/
public List<String> getThreadNoList(){
return this.threadNoList;
}
/**
* 设置 线程号
* @param threadNoList
*/
public void setThreadNoList(List<String> threadNoList){
this.threadNoList = threadNoList;
}
/**
* 获取 异常堆栈信息
* @return errorList
*/
public List<String> getErrorList(){
return this.errorList;
}
/**
* 设置 异常堆栈信息
* @param errorList
*/
public void setErrorList(List<String> errorList){
this.errorList = errorList;
}
/**
* 获取 响应结果
* @return responseList
*/
public List<String> getResponseList(){
return this.responseList;
}
/**
* 设置 响应结果
* @param responseList
*/
public void setResponseList(List<String> responseList){
this.responseList = responseList;
}
/**
* 获取 开始 日志产生时间
* @return logTimeStart
*/
public String getLogTimeStart(){
return this.logTimeStart;
}
/**
* 设置 开始 日志产生时间
* @param logTimeStart
*/
public void setLogTimeStart(String logTimeStart){
this.logTimeStart = logTimeStart;
}
/**
* 获取 结束 日志产生时间
* @return logTimeEnd
*/
public String getLogTimeEnd(){
return this.logTimeEnd;
}
/**
* 设置 结束 日志产生时间
* @param logTimeEnd
*/
public void setLogTimeEnd(String logTimeEnd){
this.logTimeEnd = logTimeEnd;
}
/**
* 获取 开始 创建用户
* @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 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;
}
/**
* 设置 主键ID,主键,自增长
* @param id
*/
public ErrorLogQuery id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public ErrorLogQuery idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public ErrorLogQuery idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public ErrorLogQuery idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public ErrorLogQuery idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 追踪Id
* @param traceID
*/
public ErrorLogQuery traceID(String traceID){
setTraceID(traceID);
return this;
}
/**
* 设置 追踪Id
* @param traceIDList
*/
public ErrorLogQuery traceIDList(List<String> traceIDList){
this.traceIDList = traceIDList;
return this;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverType
*/
public ErrorLogQuery serverType(String serverType){
setServerType(serverType);
return this;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverTypeList
*/
public ErrorLogQuery serverTypeList(List<String> serverTypeList){
this.serverTypeList = serverTypeList;
return this;
}
/**
* 设置 应用名称
* @param appName
*/
public ErrorLogQuery appName(String appName){
setAppName(appName);
return this;
}
/**
* 设置 应用名称
* @param appNameList
*/
public ErrorLogQuery appNameList(List<String> appNameList){
this.appNameList = appNameList;
return this;
}
/**
* 设置 实例IP
* @param hostName
*/
public ErrorLogQuery hostName(String hostName){
setHostName(hostName);
return this;
}
/**
* 设置 实例IP
* @param hostNameList
*/
public ErrorLogQuery hostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
return this;
}
/**
* 设置 日志等级
* @param logLevel
*/
public ErrorLogQuery logLevel(String logLevel){
setLogLevel(logLevel);
return this;
}
/**
* 设置 日志等级
* @param logLevelList
*/
public ErrorLogQuery logLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
return this;
}
/**
* 设置 线程号
* @param threadNo
*/
public ErrorLogQuery threadNo(String threadNo){
setThreadNo(threadNo);
return this;
}
/**
* 设置 线程号
* @param threadNoList
*/
public ErrorLogQuery threadNoList(List<String> threadNoList){
this.threadNoList = threadNoList;
return this;
}
/**
* 设置 异常堆栈信息
* @param error
*/
public ErrorLogQuery error(String error){
setError(error);
return this;
}
/**
* 设置 异常堆栈信息
* @param errorList
*/
public ErrorLogQuery errorList(List<String> errorList){
this.errorList = errorList;
return this;
}
/**
* 设置 响应结果
* @param response
*/
public ErrorLogQuery response(String response){
setResponse(response);
return this;
}
/**
* 设置 响应结果
* @param responseList
*/
public ErrorLogQuery responseList(List<String> responseList){
this.responseList = responseList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public ErrorLogQuery createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public ErrorLogQuery createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public ErrorLogQuery createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public ErrorLogQuery createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public ErrorLogQuery createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<ErrorLogQuery> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<ErrorLogQuery> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<ErrorLogQuery> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<ErrorLogQuery> andConditionList){
this.andConditionList = andConditionList;
}
}
\ No newline at end of file
package com.mortals.xhx.module.error.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.error.model.ErrorLogEntity;
import java.util.ArrayList;
import java.util.List;
/**
* 异常日志视图对象
*
* @author zxfei
* @date 2022-08-17
*/
public class ErrorLogVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.error.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.error.model.ErrorLogEntity;
/**
* ErrorLogService
*
* 异常日志 service接口
*
* @author zxfei
* @date 2022-08-17
*/
public interface ErrorLogService extends ICRUDService<ErrorLogEntity,Long>{
}
\ No newline at end of file
package com.mortals.xhx.module.error.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.error.dao.ErrorLogDao;
import com.mortals.xhx.module.error.model.ErrorLogEntity;
import com.mortals.xhx.module.error.service.ErrorLogService;
/**
* ErrorLogService
* 异常日志 service实现
*
* @author zxfei
* @date 2022-08-17
*/
@Service("errorLogService")
public class ErrorLogServiceImpl extends AbstractCRUDServiceImpl<ErrorLogDao, ErrorLogEntity, Long> implements ErrorLogService {
}
\ No newline at end of file
package com.mortals.xhx.module.error.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.error.model.ErrorLogEntity;
import com.mortals.xhx.module.error.service.ErrorLogService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 异常日志
*
* @author zxfei
* @date 2022-08-17
*/
@RestController
@RequestMapping("error/log")
public class ErrorLogController extends BaseCRUDJsonBodyMappingController<ErrorLogService,ErrorLogEntity,Long> {
@Autowired
private ParamService paramService;
public ErrorLogController(){
super.setModuleDesc( "异常日志");
}
@Override
protected void init(Map<String, Object> model, Context context) {
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.operate.dao;
import com.mortals.framework.dao.ICRUDSubmeterDao;
import com.mortals.xhx.module.operate.model.OperateLogEntity;
import java.util.List;
/**
* 平台用户操作日志业务Dao
* 平台用户操作日志业务 DAO接口
*
* @author zxfei
* @date 2022-08-17
*/
public interface OperateLogDao extends ICRUDSubmeterDao<OperateLogEntity,Long>{
}
package com.mortals.xhx.module.operate.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.operate.dao.OperateLogDao;
import com.mortals.xhx.module.operate.model.OperateLogEntity;
import java.util.Date;
import com.mortals.framework.model.TableParam;
import com.mortals.framework.model.TableStrategy;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils;
import org.springframework.util.ObjectUtils;
import com.mortals.framework.dao.ibatis.SubmeterDaoImpl;
import com.mortals.xhx.module.operate.model.OperateLogQuery;
import java.util.List;
/**
* 平台用户操作日志业务DaoImpl DAO接口
*
* @author zxfei
* @date 2022-08-17
*/
@Repository("operateLogDao")
public class OperateLogDaoImpl extends SubmeterDaoImpl<OperateLogEntity,Long> implements OperateLogDao {
@Override
protected TableStrategy getTableStrategy() {
return new TableStrategy("mortals_xhx_operate_log_${unionTime}", TableStrategy.STRATEGY_BY_MONTH, 3);
}
@Override
public TableParam getTableParam(OperateLogEntity makeTableNameOfentity) {
TableParam tableParam = new TableParam();
if (!ObjectUtils.isEmpty(makeTableNameOfentity.getCreateTime())) {
tableParam.unionTime = makeTableNameOfentity.getCreateTime();
} else if (makeTableNameOfentity instanceof OperateLogQuery) {
OperateLogQuery OperateLogQuery = (OperateLogQuery) makeTableNameOfentity;
if (StringUtils.isNotEmpty(OperateLogQuery.getCreateTimeStart())) {
tableParam.unionTime = DateUtils.StrToDate(OperateLogQuery.getCreateTimeStart());
} else if (StringUtils.isNotEmpty(OperateLogQuery.getCreateTimeEnd())) {
tableParam.unionTime = DateUtils.StrToDate(OperateLogQuery.getCreateTimeEnd());
}
}
if (ObjectUtils.isEmpty(tableParam.unionTime)) {
tableParam.unionTime = new Date();
}
return tableParam;
}
}
package com.mortals.xhx.module.operate.model;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.operate.model.vo.OperateLogVo;
/**
* 平台用户操作日志业务实体对象
*
* @author zxfei
* @date 2022-08-17
*/
public class OperateLogEntity extends OperateLogVo {
private static final long serialVersionUID = 1L;
/**
* 平台标识
*/
private String platformMark;
/**
* 用户id
*/
private Long userId;
/**
* 用户名称
*/
private String userName;
/**
* 用户登录名
*/
private String loginName;
/**
* 请求地址
*/
private String requestUrl;
/**
* 操作内容,记录操作具体信息,如修改前修改或的数据
*/
private String content;
/**
* 操作IP地址
*/
private String ip;
/**
* 操作时间
*/
private Date logDate;
/**
* 操作类型,0:新增,1:修改,2:删除
*/
private Integer operType;
public OperateLogEntity(){}
/**
* 获取 平台标识
* @return String
*/
public String getPlatformMark(){
return platformMark;
}
/**
* 设置 平台标识
* @param platformMark
*/
public void setPlatformMark(String platformMark){
this.platformMark = platformMark;
}
/**
* 获取 用户id
* @return Long
*/
public Long getUserId(){
return userId;
}
/**
* 设置 用户id
* @param userId
*/
public void setUserId(Long userId){
this.userId = userId;
}
/**
* 获取 用户名称
* @return String
*/
public String getUserName(){
return userName;
}
/**
* 设置 用户名称
* @param userName
*/
public void setUserName(String userName){
this.userName = userName;
}
/**
* 获取 用户登录名
* @return String
*/
public String getLoginName(){
return loginName;
}
/**
* 设置 用户登录名
* @param loginName
*/
public void setLoginName(String loginName){
this.loginName = loginName;
}
/**
* 获取 请求地址
* @return String
*/
public String getRequestUrl(){
return requestUrl;
}
/**
* 设置 请求地址
* @param requestUrl
*/
public void setRequestUrl(String requestUrl){
this.requestUrl = requestUrl;
}
/**
* 获取 操作内容,记录操作具体信息,如修改前修改或的数据
* @return String
*/
public String getContent(){
return content;
}
/**
* 设置 操作内容,记录操作具体信息,如修改前修改或的数据
* @param content
*/
public void setContent(String content){
this.content = content;
}
/**
* 获取 操作IP地址
* @return String
*/
public String getIp(){
return ip;
}
/**
* 设置 操作IP地址
* @param ip
*/
public void setIp(String ip){
this.ip = ip;
}
/**
* 获取 操作时间
* @return Date
*/
public Date getLogDate(){
return logDate;
}
/**
* 设置 操作时间
* @param logDate
*/
public void setLogDate(Date logDate){
this.logDate = logDate;
}
/**
* 获取 操作类型,0:新增,1:修改,2:删除
* @return Integer
*/
public Integer getOperType(){
return operType;
}
/**
* 设置 操作类型,0:新增,1:修改,2:删除
* @param operType
*/
public void setOperType(Integer operType){
this.operType = operType;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof OperateLogEntity) {
OperateLogEntity tmp = (OperateLogEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",platformMark:").append(getPlatformMark());
sb.append(",userId:").append(getUserId());
sb.append(",userName:").append(getUserName());
sb.append(",loginName:").append(getLoginName());
sb.append(",requestUrl:").append(getRequestUrl());
sb.append(",content:").append(getContent());
sb.append(",ip:").append(getIp());
sb.append(",logDate:").append(getLogDate());
sb.append(",operType:").append(getOperType());
return sb.toString();
}
public void initAttrValue(){
this.platformMark = "";
this.userId = null;
this.userName = "";
this.loginName = "";
this.requestUrl = "";
this.content = "";
this.ip = "";
this.logDate = null;
this.operType = null;
}
}
\ No newline at end of file
package com.mortals.xhx.module.operate.model;
import java.util.Date;
import java.util.List;
import com.mortals.xhx.module.operate.model.OperateLogEntity;
/**
* 平台用户操作日志业务查询对象
*
* @author zxfei
* @date 2022-08-17
*/
public class OperateLogQuery extends OperateLogEntity {
/** 开始 序号,主键,自增长 */
private Long idStart;
/** 结束 序号,主键,自增长 */
private Long idEnd;
/** 增加 序号,主键,自增长 */
private Long idIncrement;
/** 序号,主键,自增长列表 */
private List <Long> idList;
/** 平台标识 */
private List<String> platformMarkList;
/** 开始 用户id */
private Long userIdStart;
/** 结束 用户id */
private Long userIdEnd;
/** 增加 用户id */
private Long userIdIncrement;
/** 用户id列表 */
private List <Long> userIdList;
/** 用户名称 */
private List<String> userNameList;
/** 用户登录名 */
private List<String> loginNameList;
/** 请求地址 */
private List<String> requestUrlList;
/** 操作内容,记录操作具体信息,如修改前修改或的数据 */
private List<String> contentList;
/** 操作IP地址 */
private List<String> ipList;
/** 开始 操作时间 */
private String logDateStart;
/** 结束 操作时间 */
private String logDateEnd;
/** 开始 操作类型,0:新增,1:修改,2:删除 */
private Integer operTypeStart;
/** 结束 操作类型,0:新增,1:修改,2:删除 */
private Integer operTypeEnd;
/** 增加 操作类型,0:新增,1:修改,2:删除 */
private Integer operTypeIncrement;
/** 操作类型,0:新增,1:修改,2:删除列表 */
private List <Integer> operTypeList;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<OperateLogQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<OperateLogQuery> andConditionList;
public OperateLogQuery(){}
/**
* 获取 开始 序号,主键,自增长
* @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 platformMarkList
*/
public List<String> getPlatformMarkList(){
return this.platformMarkList;
}
/**
* 设置 平台标识
* @param platformMarkList
*/
public void setPlatformMarkList(List<String> platformMarkList){
this.platformMarkList = platformMarkList;
}
/**
* 获取 开始 用户id
* @return userIdStart
*/
public Long getUserIdStart(){
return this.userIdStart;
}
/**
* 设置 开始 用户id
* @param userIdStart
*/
public void setUserIdStart(Long userIdStart){
this.userIdStart = userIdStart;
}
/**
* 获取 结束 用户id
* @return $userIdEnd
*/
public Long getUserIdEnd(){
return this.userIdEnd;
}
/**
* 设置 结束 用户id
* @param userIdEnd
*/
public void setUserIdEnd(Long userIdEnd){
this.userIdEnd = userIdEnd;
}
/**
* 获取 增加 用户id
* @return userIdIncrement
*/
public Long getUserIdIncrement(){
return this.userIdIncrement;
}
/**
* 设置 增加 用户id
* @param userIdIncrement
*/
public void setUserIdIncrement(Long userIdIncrement){
this.userIdIncrement = userIdIncrement;
}
/**
* 获取 用户id
* @return userIdList
*/
public List<Long> getUserIdList(){
return this.userIdList;
}
/**
* 设置 用户id
* @param userIdList
*/
public void setUserIdList(List<Long> userIdList){
this.userIdList = userIdList;
}
/**
* 获取 用户名称
* @return userNameList
*/
public List<String> getUserNameList(){
return this.userNameList;
}
/**
* 设置 用户名称
* @param userNameList
*/
public void setUserNameList(List<String> userNameList){
this.userNameList = userNameList;
}
/**
* 获取 用户登录名
* @return loginNameList
*/
public List<String> getLoginNameList(){
return this.loginNameList;
}
/**
* 设置 用户登录名
* @param loginNameList
*/
public void setLoginNameList(List<String> loginNameList){
this.loginNameList = loginNameList;
}
/**
* 获取 请求地址
* @return requestUrlList
*/
public List<String> getRequestUrlList(){
return this.requestUrlList;
}
/**
* 设置 请求地址
* @param requestUrlList
*/
public void setRequestUrlList(List<String> requestUrlList){
this.requestUrlList = requestUrlList;
}
/**
* 获取 操作内容,记录操作具体信息,如修改前修改或的数据
* @return contentList
*/
public List<String> getContentList(){
return this.contentList;
}
/**
* 设置 操作内容,记录操作具体信息,如修改前修改或的数据
* @param contentList
*/
public void setContentList(List<String> contentList){
this.contentList = contentList;
}
/**
* 获取 操作IP地址
* @return ipList
*/
public List<String> getIpList(){
return this.ipList;
}
/**
* 设置 操作IP地址
* @param ipList
*/
public void setIpList(List<String> ipList){
this.ipList = ipList;
}
/**
* 获取 开始 操作时间
* @return logDateStart
*/
public String getLogDateStart(){
return this.logDateStart;
}
/**
* 设置 开始 操作时间
* @param logDateStart
*/
public void setLogDateStart(String logDateStart){
this.logDateStart = logDateStart;
}
/**
* 获取 结束 操作时间
* @return logDateEnd
*/
public String getLogDateEnd(){
return this.logDateEnd;
}
/**
* 设置 结束 操作时间
* @param logDateEnd
*/
public void setLogDateEnd(String logDateEnd){
this.logDateEnd = logDateEnd;
}
/**
* 获取 开始 操作类型,0:新增,1:修改,2:删除
* @return operTypeStart
*/
public Integer getOperTypeStart(){
return this.operTypeStart;
}
/**
* 设置 开始 操作类型,0:新增,1:修改,2:删除
* @param operTypeStart
*/
public void setOperTypeStart(Integer operTypeStart){
this.operTypeStart = operTypeStart;
}
/**
* 获取 结束 操作类型,0:新增,1:修改,2:删除
* @return $operTypeEnd
*/
public Integer getOperTypeEnd(){
return this.operTypeEnd;
}
/**
* 设置 结束 操作类型,0:新增,1:修改,2:删除
* @param operTypeEnd
*/
public void setOperTypeEnd(Integer operTypeEnd){
this.operTypeEnd = operTypeEnd;
}
/**
* 获取 增加 操作类型,0:新增,1:修改,2:删除
* @return operTypeIncrement
*/
public Integer getOperTypeIncrement(){
return this.operTypeIncrement;
}
/**
* 设置 增加 操作类型,0:新增,1:修改,2:删除
* @param operTypeIncrement
*/
public void setOperTypeIncrement(Integer operTypeIncrement){
this.operTypeIncrement = operTypeIncrement;
}
/**
* 获取 操作类型,0:新增,1:修改,2:删除
* @return operTypeList
*/
public List<Integer> getOperTypeList(){
return this.operTypeList;
}
/**
* 设置 操作类型,0:新增,1:修改,2:删除
* @param operTypeList
*/
public void setOperTypeList(List<Integer> operTypeList){
this.operTypeList = operTypeList;
}
/**
* 获取 开始 创建用户
* @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 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;
}
/**
* 设置 序号,主键,自增长
* @param id
*/
public OperateLogQuery id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 序号,主键,自增长
* @param idStart
*/
public OperateLogQuery idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 序号,主键,自增长
* @param idEnd
*/
public OperateLogQuery idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 序号,主键,自增长
* @param idIncrement
*/
public OperateLogQuery idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 序号,主键,自增长
* @param idList
*/
public OperateLogQuery idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 平台标识
* @param platformMark
*/
public OperateLogQuery platformMark(String platformMark){
setPlatformMark(platformMark);
return this;
}
/**
* 设置 平台标识
* @param platformMarkList
*/
public OperateLogQuery platformMarkList(List<String> platformMarkList){
this.platformMarkList = platformMarkList;
return this;
}
/**
* 设置 用户id
* @param userId
*/
public OperateLogQuery userId(Long userId){
setUserId(userId);
return this;
}
/**
* 设置 开始 用户id
* @param userIdStart
*/
public OperateLogQuery userIdStart(Long userIdStart){
this.userIdStart = userIdStart;
return this;
}
/**
* 设置 结束 用户id
* @param userIdEnd
*/
public OperateLogQuery userIdEnd(Long userIdEnd){
this.userIdEnd = userIdEnd;
return this;
}
/**
* 设置 增加 用户id
* @param userIdIncrement
*/
public OperateLogQuery userIdIncrement(Long userIdIncrement){
this.userIdIncrement = userIdIncrement;
return this;
}
/**
* 设置 用户id
* @param userIdList
*/
public OperateLogQuery userIdList(List<Long> userIdList){
this.userIdList = userIdList;
return this;
}
/**
* 设置 用户名称
* @param userName
*/
public OperateLogQuery userName(String userName){
setUserName(userName);
return this;
}
/**
* 设置 用户名称
* @param userNameList
*/
public OperateLogQuery userNameList(List<String> userNameList){
this.userNameList = userNameList;
return this;
}
/**
* 设置 用户登录名
* @param loginName
*/
public OperateLogQuery loginName(String loginName){
setLoginName(loginName);
return this;
}
/**
* 设置 用户登录名
* @param loginNameList
*/
public OperateLogQuery loginNameList(List<String> loginNameList){
this.loginNameList = loginNameList;
return this;
}
/**
* 设置 请求地址
* @param requestUrl
*/
public OperateLogQuery requestUrl(String requestUrl){
setRequestUrl(requestUrl);
return this;
}
/**
* 设置 请求地址
* @param requestUrlList
*/
public OperateLogQuery requestUrlList(List<String> requestUrlList){
this.requestUrlList = requestUrlList;
return this;
}
/**
* 设置 操作内容,记录操作具体信息,如修改前修改或的数据
* @param content
*/
public OperateLogQuery content(String content){
setContent(content);
return this;
}
/**
* 设置 操作内容,记录操作具体信息,如修改前修改或的数据
* @param contentList
*/
public OperateLogQuery contentList(List<String> contentList){
this.contentList = contentList;
return this;
}
/**
* 设置 操作IP地址
* @param ip
*/
public OperateLogQuery ip(String ip){
setIp(ip);
return this;
}
/**
* 设置 操作IP地址
* @param ipList
*/
public OperateLogQuery ipList(List<String> ipList){
this.ipList = ipList;
return this;
}
/**
* 设置 操作类型,0:新增,1:修改,2:删除
* @param operType
*/
public OperateLogQuery operType(Integer operType){
setOperType(operType);
return this;
}
/**
* 设置 开始 操作类型,0:新增,1:修改,2:删除
* @param operTypeStart
*/
public OperateLogQuery operTypeStart(Integer operTypeStart){
this.operTypeStart = operTypeStart;
return this;
}
/**
* 设置 结束 操作类型,0:新增,1:修改,2:删除
* @param operTypeEnd
*/
public OperateLogQuery operTypeEnd(Integer operTypeEnd){
this.operTypeEnd = operTypeEnd;
return this;
}
/**
* 设置 增加 操作类型,0:新增,1:修改,2:删除
* @param operTypeIncrement
*/
public OperateLogQuery operTypeIncrement(Integer operTypeIncrement){
this.operTypeIncrement = operTypeIncrement;
return this;
}
/**
* 设置 操作类型,0:新增,1:修改,2:删除
* @param operTypeList
*/
public OperateLogQuery operTypeList(List<Integer> operTypeList){
this.operTypeList = operTypeList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public OperateLogQuery createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public OperateLogQuery createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public OperateLogQuery createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public OperateLogQuery createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public OperateLogQuery createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<OperateLogQuery> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<OperateLogQuery> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<OperateLogQuery> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<OperateLogQuery> andConditionList){
this.andConditionList = andConditionList;
}
}
\ No newline at end of file
package com.mortals.xhx.module.operate.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.operate.model.OperateLogEntity;
import java.util.ArrayList;
import java.util.List;
/**
* 平台用户操作日志业务视图对象
*
* @author zxfei
* @date 2022-08-17
*/
public class OperateLogVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.operate.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.operate.model.OperateLogEntity;
/**
* OperateLogService
*
* 平台用户操作日志业务 service接口
*
* @author zxfei
* @date 2022-08-17
*/
public interface OperateLogService extends ICRUDService<OperateLogEntity,Long>{
}
\ No newline at end of file
package com.mortals.xhx.module.operate.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.operate.dao.OperateLogDao;
import com.mortals.xhx.module.operate.model.OperateLogEntity;
import com.mortals.xhx.module.operate.service.OperateLogService;
/**
* OperateLogService
* 平台用户操作日志业务 service实现
*
* @author zxfei
* @date 2022-08-17
*/
@Service("operateLogService")
public class OperateLogServiceImpl extends AbstractCRUDServiceImpl<OperateLogDao, OperateLogEntity, Long> implements OperateLogService {
}
\ No newline at end of file
package com.mortals.xhx.module.operate.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.operate.model.OperateLogEntity;
import com.mortals.xhx.module.operate.service.OperateLogService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 平台用户操作日志业务
*
* @author zxfei
* @date 2022-08-17
*/
@RestController
@RequestMapping("operate/log")
public class OperateLogController extends BaseCRUDJsonBodyMappingController<OperateLogService,OperateLogEntity,Long> {
@Autowired
private ParamService paramService;
public OperateLogController(){
super.setModuleDesc( "平台用户操作日志业务");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "operType", paramService.getParamBySecondOrganize("OperateLog","operType"));
super.init(model, context);
}
}
\ No newline at end of file
......@@ -85,44 +85,44 @@ upload:
# hystrix:
# enabled: false
queue:
type: @profiles.queue.type@ # memory or kafka (Apache Kafka) or rabbitmq (RabbitMQ)
core:
topic: tb_core
poll-interval: 25
partitions: 10
pack-processing-timeout: 2000
in_memory:
stats:
print-interval-ms: 60000
kafka:
bootstrap.servers: @profiles.kafka.brokers@
acks: all
retries: 1
batch.size: 16384
linger.ms: 1
buffer.memory: 33554432
replication_factor: 1
max_poll_interval_ms: 300000
max_poll_records: 8192
max_partition_fetch_bytes: 16777216
fetch_max_bytes: 134217728
use_confluent_cloud: false
consumer-stats:
enabled: true
print-interval-ms: 60000
kafka-response-timeout-ms: 1000
rabbitmq:
exchange_name: @profiles.rabbitmq.exchange@
host: @profiles.rabbitmq.host@
port: @profiles.rabbitmq.port@
virtual_host: @profiles.rabbitmq.virtualhost@
username: @profiles.rabbitmq.username@
password: @profiles.rabbitmq.password@
automatic_recovery_enabled: false
connection_timeout: 5000
handshake_timeout: 10000
queue-properties:
x-message-ttl: 86400000
x-max-length-bytes: 1048576000
#queue:
# type: @profiles.queue.type@ # memory or kafka (Apache Kafka) or rabbitmq (RabbitMQ)
# core:
# topic: tb_core
# poll-interval: 25
# partitions: 10
# pack-processing-timeout: 2000
# in_memory:
# stats:
# print-interval-ms: 60000
# kafka:
# bootstrap.servers: @profiles.kafka.brokers@
# acks: all
# retries: 1
# batch.size: 16384
# linger.ms: 1
# buffer.memory: 33554432
# replication_factor: 1
# max_poll_interval_ms: 300000
# max_poll_records: 8192
# max_partition_fetch_bytes: 16777216
# fetch_max_bytes: 134217728
# use_confluent_cloud: false
# consumer-stats:
# enabled: true
# print-interval-ms: 60000
# kafka-response-timeout-ms: 1000
# rabbitmq:
# exchange_name: @profiles.rabbitmq.exchange@
# host: @profiles.rabbitmq.host@
# port: @profiles.rabbitmq.port@
# virtual_host: @profiles.rabbitmq.virtualhost@
# username: @profiles.rabbitmq.username@
# password: @profiles.rabbitmq.password@
# automatic_recovery_enabled: false
# connection_timeout: 5000
# handshake_timeout: 10000
# queue-properties:
# x-message-ttl: 86400000
# x-max-length-bytes: 1048576000
<?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.device.dao.ibatis.DeviceAlarmInfoDaoImpl">
<mapper namespace="com.mortals.xhx.module.access.dao.ibatis.AccessLogDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="DeviceAlarmInfoEntity" id="DeviceAlarmInfoEntity-Map">
<resultMap type="AccessLogEntity" id="AccessLogEntity-Map">
<id property="id" column="id" />
<result property="alarmTime" column="alarmTime" />
<result property="alarmDevice" column="alarmDevice" />
<result property="alarmType" column="alarmType" />
<result property="alarmLevel" column="alarmLevel" />
<result property="alarmReceivePersonnel" column="alarmReceivePersonnel" />
<result property="receivePersonnelTelephone" column="receivePersonnelTelephone" />
<result property="alarmStatus" column="alarmStatus" />
<result property="alarmContent" column="alarmContent" />
<result property="traceID" column="traceID" />
<result property="appName" column="appName" />
<result property="hostName" column="hostName" />
<result property="logLevel" column="logLevel" />
<result property="requestIp" column="requestIp" />
<result property="method" column="method" />
<result property="ua" column="ua" />
<result property="uri" column="uri" />
<result property="requestParam" column="requestParam" />
<result property="response" column="response" />
<result property="logTime" column="logTime" />
<result property="duration" column="duration" />
<result property="createUserId" column="createUserId" />
<result property="createTime" column="createTime" />
<result property="updateUserId" column="updateUserId" />
<result property="updateTime" column="updateTime" />
</resultMap>
<update id="createTable" parameterType="paramDto">
CREATE TABLE `${tableName}`(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`traceID` varchar(64) COMMENT '追踪Id',
`appName` varchar(64) COMMENT '应用名称',
`hostName` varchar(64) COMMENT '实例IP',
`logLevel` varchar(64) COMMENT '日志等级',
`requestIp` varchar(64) COMMENT '请求者IP',
`method` varchar(64) COMMENT '请求方式',
`ua` varchar(64) COMMENT '用户浏览器UA',
`uri` varchar(64) COMMENT '请求URI',
`requestParam` text COMMENT '请求参数,json序列化',
`response` text COMMENT '响应结果',
`logTime` datetime COMMENT '日志产生时间',
`duration` int(4) COMMENT '持续时间,单位毫秒',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='访问日志';
</update>
<!-- 表所有列 -->
<sql id="_columns">
......@@ -27,112 +50,121 @@
<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('alarmTime') or colPickMode == 1 and data.containsKey('alarmTime')))">
a.alarmTime,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('traceID') or colPickMode == 1 and data.containsKey('traceID')))">
a.traceID,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmDevice') or colPickMode == 1 and data.containsKey('alarmDevice')))">
a.alarmDevice,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appName') or colPickMode == 1 and data.containsKey('appName')))">
a.appName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmType') or colPickMode == 1 and data.containsKey('alarmType')))">
a.alarmType,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('hostName') or colPickMode == 1 and data.containsKey('hostName')))">
a.hostName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmLevel') or colPickMode == 1 and data.containsKey('alarmLevel')))">
a.alarmLevel,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('logLevel') or colPickMode == 1 and data.containsKey('logLevel')))">
a.logLevel,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmReceivePersonnel') or colPickMode == 1 and data.containsKey('alarmReceivePersonnel')))">
a.alarmReceivePersonnel,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('requestIp') or colPickMode == 1 and data.containsKey('requestIp')))">
a.requestIp,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('receivePersonnelTelephone') or colPickMode == 1 and data.containsKey('receivePersonnelTelephone')))">
a.receivePersonnelTelephone,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('method') or colPickMode == 1 and data.containsKey('method')))">
a.method,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmStatus') or colPickMode == 1 and data.containsKey('alarmStatus')))">
a.alarmStatus,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('ua') or colPickMode == 1 and data.containsKey('ua')))">
a.ua,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmContent') or colPickMode == 1 and data.containsKey('alarmContent')))">
a.alarmContent,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('uri') or colPickMode == 1 and data.containsKey('uri')))">
a.uri,
</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 test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('requestParam') or colPickMode == 1 and data.containsKey('requestParam')))">
a.requestParam,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('response') or colPickMode == 1 and data.containsKey('response')))">
a.response,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('logTime') or colPickMode == 1 and data.containsKey('logTime')))">
a.logTime,
</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 test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('duration') or colPickMode == 1 and data.containsKey('duration')))">
a.duration,
</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 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>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="DeviceAlarmInfoEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_device_alarm_info
(alarmTime,alarmDevice,alarmType,alarmLevel,alarmReceivePersonnel,receivePersonnelTelephone,alarmStatus,alarmContent,createTime,updateUserId,updateTime)
<insert id="insert" parameterType="AccessLogEntity" useGeneratedKeys="true" keyProperty="id">
insert into `${tableName}`
(traceID,appName,hostName,logLevel,requestIp,method,ua,uri,requestParam,response,logTime,duration,createUserId,createTime)
VALUES
(#{alarmTime},#{alarmDevice},#{alarmType},#{alarmLevel},#{alarmReceivePersonnel},#{receivePersonnelTelephone},#{alarmStatus},#{alarmContent},#{createTime},#{updateUserId},#{updateTime})
(#{traceID},#{appName},#{hostName},#{logLevel},#{requestIp},#{method},#{ua},#{uri},#{requestParam},#{response},#{logTime},#{duration},#{createUserId},#{createTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_device_alarm_info
(alarmTime,alarmDevice,alarmType,alarmLevel,alarmReceivePersonnel,receivePersonnelTelephone,alarmStatus,alarmContent,createTime,updateUserId,updateTime)
insert into `${tableName}`
(traceID,appName,hostName,logLevel,requestIp,method,ua,uri,requestParam,response,logTime,duration,createUserId,createTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.alarmTime},#{item.alarmDevice},#{item.alarmType},#{item.alarmLevel},#{item.alarmReceivePersonnel},#{item.receivePersonnelTelephone},#{item.alarmStatus},#{item.alarmContent},#{item.createTime},#{item.updateUserId},#{item.updateTime})
(#{item.traceID},#{item.appName},#{item.hostName},#{item.logLevel},#{item.requestIp},#{item.method},#{item.ua},#{item.uri},#{item.requestParam},#{item.response},#{item.logTime},#{item.duration},#{item.createUserId},#{item.createTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_device_alarm_info as a
update `${tableName}` as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('alarmTime')) or (colPickMode==1 and !data.containsKey('alarmTime'))">
a.alarmTime=#{data.alarmTime},
<if test="(colPickMode==0 and data.containsKey('traceID')) or (colPickMode==1 and !data.containsKey('traceID'))">
a.traceID=#{data.traceID},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmDevice')) or (colPickMode==1 and !data.containsKey('alarmDevice'))">
a.alarmDevice=#{data.alarmDevice},
<if test="(colPickMode==0 and data.containsKey('appName')) or (colPickMode==1 and !data.containsKey('appName'))">
a.appName=#{data.appName},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmDeviceIncrement')) or (colPickMode==1 and !data.containsKey('alarmDeviceIncrement'))">
a.alarmDevice=ifnull(a.alarmDevice,0) + #{data.alarmDeviceIncrement},
<if test="(colPickMode==0 and data.containsKey('hostName')) or (colPickMode==1 and !data.containsKey('hostName'))">
a.hostName=#{data.hostName},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmType')) or (colPickMode==1 and !data.containsKey('alarmType'))">
a.alarmType=#{data.alarmType},
<if test="(colPickMode==0 and data.containsKey('logLevel')) or (colPickMode==1 and !data.containsKey('logLevel'))">
a.logLevel=#{data.logLevel},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmTypeIncrement')) or (colPickMode==1 and !data.containsKey('alarmTypeIncrement'))">
a.alarmType=ifnull(a.alarmType,0) + #{data.alarmTypeIncrement},
<if test="(colPickMode==0 and data.containsKey('requestIp')) or (colPickMode==1 and !data.containsKey('requestIp'))">
a.requestIp=#{data.requestIp},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmLevel')) or (colPickMode==1 and !data.containsKey('alarmLevel'))">
a.alarmLevel=#{data.alarmLevel},
<if test="(colPickMode==0 and data.containsKey('method')) or (colPickMode==1 and !data.containsKey('method'))">
a.method=#{data.method},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmLevelIncrement')) or (colPickMode==1 and !data.containsKey('alarmLevelIncrement'))">
a.alarmLevel=ifnull(a.alarmLevel,0) + #{data.alarmLevelIncrement},
<if test="(colPickMode==0 and data.containsKey('ua')) or (colPickMode==1 and !data.containsKey('ua'))">
a.ua=#{data.ua},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmReceivePersonnel')) or (colPickMode==1 and !data.containsKey('alarmReceivePersonnel'))">
a.alarmReceivePersonnel=#{data.alarmReceivePersonnel},
<if test="(colPickMode==0 and data.containsKey('uri')) or (colPickMode==1 and !data.containsKey('uri'))">
a.uri=#{data.uri},
</if>
<if test="(colPickMode==0 and data.containsKey('receivePersonnelTelephone')) or (colPickMode==1 and !data.containsKey('receivePersonnelTelephone'))">
a.receivePersonnelTelephone=#{data.receivePersonnelTelephone},
<if test="(colPickMode==0 and data.containsKey('requestParam')) or (colPickMode==1 and !data.containsKey('requestParam'))">
a.requestParam=#{data.requestParam},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmStatus')) or (colPickMode==1 and !data.containsKey('alarmStatus'))">
a.alarmStatus=#{data.alarmStatus},
<if test="(colPickMode==0 and data.containsKey('response')) or (colPickMode==1 and !data.containsKey('response'))">
a.response=#{data.response},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmStatusIncrement')) or (colPickMode==1 and !data.containsKey('alarmStatusIncrement'))">
a.alarmStatus=ifnull(a.alarmStatus,0) + #{data.alarmStatusIncrement},
<if test="(colPickMode==0 and data.containsKey('logTime')) or (colPickMode==1 and !data.containsKey('logTime'))">
a.logTime=#{data.logTime},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmContent')) or (colPickMode==1 and !data.containsKey('alarmContent'))">
a.alarmContent=#{data.alarmContent},
<if test="(colPickMode==0 and data.containsKey('duration')) or (colPickMode==1 and !data.containsKey('duration'))">
a.duration=#{data.duration},
</if>
<if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
a.createTime=#{data.createTime},
<if test="(colPickMode==0 and data.containsKey('durationIncrement')) or (colPickMode==1 and !data.containsKey('durationIncrement'))">
a.duration=ifnull(a.duration,0) + #{data.durationIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('updateUserId')) or (colPickMode==1 and !data.containsKey('updateUserId'))">
a.updateUserId=#{data.updateUserId},
<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('updateUserIdIncrement')) or (colPickMode==1 and !data.containsKey('updateUserIdIncrement'))">
a.updateUserId=ifnull(a.updateUserId,0) + #{data.updateUserIdIncrement},
<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('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
a.updateTime=#{data.updateTime},
<if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
a.createTime=#{data.createTime},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
......@@ -144,107 +176,113 @@
</update>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="paramDto">
update mortals_xhx_device_alarm_info as a
update `${tableName}` as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="alarmTime=(case" suffix="ELSE alarmTime end),">
<trim prefix="traceID=(case" suffix="ELSE traceID end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('alarmTime')) or (colPickMode==1 and !item.containsKey('alarmTime'))">
when a.id=#{item.id} then #{item.alarmTime}
<if test="(colPickMode==0 and item.containsKey('traceID')) or (colPickMode==1 and !item.containsKey('traceID'))">
when a.id=#{item.id} then #{item.traceID}
</if>
</foreach>
</trim>
<trim prefix="alarmDevice=(case" suffix="ELSE alarmDevice end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmDevice')) or (colPickMode==1 and !item.containsKey('alarmDevice'))">
when a.id=#{item.id} then #{item.alarmDevice}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmDeviceIncrement')) or (colPickMode==1 and !item.containsKey('alarmDeviceIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmDevice,0) + #{item.alarmDeviceIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmType=(case" suffix="ELSE alarmType end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmType')) or (colPickMode==1 and !item.containsKey('alarmType'))">
when a.id=#{item.id} then #{item.alarmType}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmTypeIncrement')) or (colPickMode==1 and !item.containsKey('alarmTypeIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmType,0) + #{item.alarmTypeIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmLevel=(case" suffix="ELSE alarmLevel end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmLevel')) or (colPickMode==1 and !item.containsKey('alarmLevel'))">
when a.id=#{item.id} then #{item.alarmLevel}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmLevelIncrement')) or (colPickMode==1 and !item.containsKey('alarmLevelIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmLevel,0) + #{item.alarmLevelIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmReceivePersonnel=(case" suffix="ELSE alarmReceivePersonnel end),">
<trim prefix="appName=(case" suffix="ELSE appName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('alarmReceivePersonnel')) or (colPickMode==1 and !item.containsKey('alarmReceivePersonnel'))">
when a.id=#{item.id} then #{item.alarmReceivePersonnel}
<if test="(colPickMode==0 and item.containsKey('appName')) or (colPickMode==1 and !item.containsKey('appName'))">
when a.id=#{item.id} then #{item.appName}
</if>
</foreach>
</trim>
<trim prefix="receivePersonnelTelephone=(case" suffix="ELSE receivePersonnelTelephone end),">
<trim prefix="hostName=(case" suffix="ELSE hostName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('receivePersonnelTelephone')) or (colPickMode==1 and !item.containsKey('receivePersonnelTelephone'))">
when a.id=#{item.id} then #{item.receivePersonnelTelephone}
<if test="(colPickMode==0 and item.containsKey('hostName')) or (colPickMode==1 and !item.containsKey('hostName'))">
when a.id=#{item.id} then #{item.hostName}
</if>
</foreach>
</trim>
<trim prefix="alarmStatus=(case" suffix="ELSE alarmStatus end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmStatus')) or (colPickMode==1 and !item.containsKey('alarmStatus'))">
when a.id=#{item.id} then #{item.alarmStatus}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmStatusIncrement')) or (colPickMode==1 and !item.containsKey('alarmStatusIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmStatus,0) + #{item.alarmStatusIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmContent=(case" suffix="ELSE alarmContent end),">
<trim prefix="logLevel=(case" suffix="ELSE logLevel end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('alarmContent')) or (colPickMode==1 and !item.containsKey('alarmContent'))">
when a.id=#{item.id} then #{item.alarmContent}
<if test="(colPickMode==0 and item.containsKey('logLevel')) or (colPickMode==1 and !item.containsKey('logLevel'))">
when a.id=#{item.id} then #{item.logLevel}
</if>
</foreach>
</trim>
<trim prefix="createTime=(case" suffix="ELSE createTime end),">
<trim prefix="requestIp=(case" suffix="ELSE requestIp 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 test="(colPickMode==0 and item.containsKey('requestIp')) or (colPickMode==1 and !item.containsKey('requestIp'))">
when a.id=#{item.id} then #{item.requestIp}
</if>
</foreach>
</trim>
<trim prefix="method=(case" suffix="ELSE method end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('method')) or (colPickMode==1 and !item.containsKey('method'))">
when a.id=#{item.id} then #{item.method}
</if>
</foreach>
</trim>
<trim prefix="ua=(case" suffix="ELSE ua end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('ua')) or (colPickMode==1 and !item.containsKey('ua'))">
when a.id=#{item.id} then #{item.ua}
</if>
</foreach>
</trim>
<trim prefix="uri=(case" suffix="ELSE uri end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('uri')) or (colPickMode==1 and !item.containsKey('uri'))">
when a.id=#{item.id} then #{item.uri}
</if>
</foreach>
</trim>
<trim prefix="updateUserId=(case" suffix="ELSE updateUserId end),">
<trim prefix="requestParam=(case" suffix="ELSE requestParam end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('requestParam')) or (colPickMode==1 and !item.containsKey('requestParam'))">
when a.id=#{item.id} then #{item.requestParam}
</if>
</foreach>
</trim>
<trim prefix="response=(case" suffix="ELSE response end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('response')) or (colPickMode==1 and !item.containsKey('response'))">
when a.id=#{item.id} then #{item.response}
</if>
</foreach>
</trim>
<trim prefix="logTime=(case" suffix="ELSE logTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('logTime')) or (colPickMode==1 and !item.containsKey('logTime'))">
when a.id=#{item.id} then #{item.logTime}
</if>
</foreach>
</trim>
<trim prefix="duration=(case" suffix="ELSE duration 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 test="(colPickMode==0 and item.containsKey('duration')) or (colPickMode==1 and !item.containsKey('duration'))">
when a.id=#{item.id} then #{item.duration}
</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 test="(colPickMode==0 and item.containsKey('durationIncrement')) or (colPickMode==1 and !item.containsKey('durationIncrement'))">
when a.id=#{item.id} then ifnull(a.duration,0) + #{item.durationIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="updateTime=(case" suffix="ELSE updateTime end),">
<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('updateTime')) or (colPickMode==1 and !item.containsKey('updateTime'))">
when a.id=#{item.id} then #{item.updateTime}
<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>
......@@ -255,25 +293,25 @@
</foreach>
</update>
<!-- 根据主健查询 -->
<select id="getByKey" parameterType="paramDto" resultMap="DeviceAlarmInfoEntity-Map">
<select id="getByKey" parameterType="paramDto" resultMap="AccessLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_alarm_info as a
from `${tableName}` as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_device_alarm_info as a where a.id=#{condition.id}
delete a.* from `${tableName}` as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_device_alarm_info where id in
delete from `${tableName}` where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_device_alarm_info as a
delete a.* from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -282,9 +320,9 @@
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="DeviceAlarmInfoEntity-Map">
<select id="getList" parameterType="paramDto" resultMap="AccessLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_alarm_info as a
from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -299,7 +337,7 @@
<!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int">
select count(1)
from mortals_xhx_device_alarm_info as a
from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -371,199 +409,226 @@
</if>
<if test="conditionParamRef.containsKey('alarmTime')">
<if test="conditionParamRef.alarmTime != null ">
${_conditionType_} a.alarmTime = #{${_conditionParam_}.alarmTime}
<if test="conditionParamRef.containsKey('traceID')">
<if test="conditionParamRef.traceID != null and conditionParamRef.traceID != ''">
${_conditionType_} a.traceID like #{${_conditionParam_}.traceID}
</if>
<if test="conditionParamRef.alarmTime == null">
${_conditionType_} a.alarmTime is null
<if test="conditionParamRef.traceID == null">
${_conditionType_} a.traceID is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmTimeStart') and conditionParamRef.alarmTimeStart != null and conditionParamRef.alarmTimeStart!=''">
${_conditionType_} a.alarmTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.alarmTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('alarmTimeEnd') and conditionParamRef.alarmTimeEnd != null and conditionParamRef.alarmTimeEnd!=''">
${_conditionType_} a.alarmTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.alarmTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
<if test="conditionParamRef.containsKey('traceIDList')">
${_conditionType_} a.traceID in
<foreach collection="conditionParamRef.traceIDList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmDevice')">
<if test="conditionParamRef.alarmDevice != null ">
${_conditionType_} a.alarmDevice = #{${_conditionParam_}.alarmDevice}
<if test="conditionParamRef.containsKey('appName')">
<if test="conditionParamRef.appName != null and conditionParamRef.appName != ''">
${_conditionType_} a.appName like #{${_conditionParam_}.appName}
</if>
<if test="conditionParamRef.alarmDevice == null">
${_conditionType_} a.alarmDevice is null
<if test="conditionParamRef.appName == null">
${_conditionType_} a.appName is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmDeviceList')">
${_conditionType_} a.alarmDevice in
<foreach collection="conditionParamRef.alarmDeviceList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('appNameList')">
${_conditionType_} a.appName in
<foreach collection="conditionParamRef.appNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmDeviceStart') and conditionParamRef.alarmDeviceStart != null">
${_conditionType_} a.alarmDevice <![CDATA[ >= ]]> #{${_conditionParam_}.alarmDeviceStart}
</if>
<if test="conditionParamRef.containsKey('alarmDeviceEnd') and conditionParamRef.alarmDeviceEnd != null">
${_conditionType_} a.alarmDevice <![CDATA[ <= ]]> #{${_conditionParam_}.alarmDeviceEnd}
</if>
<if test="conditionParamRef.containsKey('alarmType')">
<if test="conditionParamRef.alarmType != null ">
${_conditionType_} a.alarmType = #{${_conditionParam_}.alarmType}
<if test="conditionParamRef.containsKey('hostName')">
<if test="conditionParamRef.hostName != null and conditionParamRef.hostName != ''">
${_conditionType_} a.hostName like #{${_conditionParam_}.hostName}
</if>
<if test="conditionParamRef.alarmType == null">
${_conditionType_} a.alarmType is null
<if test="conditionParamRef.hostName == null">
${_conditionType_} a.hostName is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmTypeList')">
${_conditionType_} a.alarmType in
<foreach collection="conditionParamRef.alarmTypeList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('hostNameList')">
${_conditionType_} a.hostName in
<foreach collection="conditionParamRef.hostNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmTypeStart') and conditionParamRef.alarmTypeStart != null">
${_conditionType_} a.alarmType <![CDATA[ >= ]]> #{${_conditionParam_}.alarmTypeStart}
</if>
<if test="conditionParamRef.containsKey('alarmTypeEnd') and conditionParamRef.alarmTypeEnd != null">
${_conditionType_} a.alarmType <![CDATA[ <= ]]> #{${_conditionParam_}.alarmTypeEnd}
</if>
<if test="conditionParamRef.containsKey('alarmLevel')">
<if test="conditionParamRef.alarmLevel != null ">
${_conditionType_} a.alarmLevel = #{${_conditionParam_}.alarmLevel}
<if test="conditionParamRef.containsKey('logLevel')">
<if test="conditionParamRef.logLevel != null and conditionParamRef.logLevel != ''">
${_conditionType_} a.logLevel like #{${_conditionParam_}.logLevel}
</if>
<if test="conditionParamRef.alarmLevel == null">
${_conditionType_} a.alarmLevel is null
<if test="conditionParamRef.logLevel == null">
${_conditionType_} a.logLevel is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmLevelList')">
${_conditionType_} a.alarmLevel in
<foreach collection="conditionParamRef.alarmLevelList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('logLevelList')">
${_conditionType_} a.logLevel in
<foreach collection="conditionParamRef.logLevelList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmLevelStart') and conditionParamRef.alarmLevelStart != null">
${_conditionType_} a.alarmLevel <![CDATA[ >= ]]> #{${_conditionParam_}.alarmLevelStart}
<if test="conditionParamRef.containsKey('requestIp')">
<if test="conditionParamRef.requestIp != null and conditionParamRef.requestIp != ''">
${_conditionType_} a.requestIp like #{${_conditionParam_}.requestIp}
</if>
<if test="conditionParamRef.requestIp == null">
${_conditionType_} a.requestIp is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmLevelEnd') and conditionParamRef.alarmLevelEnd != null">
${_conditionType_} a.alarmLevel <![CDATA[ <= ]]> #{${_conditionParam_}.alarmLevelEnd}
<if test="conditionParamRef.containsKey('requestIpList')">
${_conditionType_} a.requestIp in
<foreach collection="conditionParamRef.requestIpList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmReceivePersonnel')">
<if test="conditionParamRef.alarmReceivePersonnel != null and conditionParamRef.alarmReceivePersonnel != ''">
${_conditionType_} a.alarmReceivePersonnel like #{${_conditionParam_}.alarmReceivePersonnel}
<if test="conditionParamRef.containsKey('method')">
<if test="conditionParamRef.method != null and conditionParamRef.method != ''">
${_conditionType_} a.method like #{${_conditionParam_}.method}
</if>
<if test="conditionParamRef.alarmReceivePersonnel == null">
${_conditionType_} a.alarmReceivePersonnel is null
<if test="conditionParamRef.method == null">
${_conditionType_} a.method is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmReceivePersonnelList')">
${_conditionType_} a.alarmReceivePersonnel in
<foreach collection="conditionParamRef.alarmReceivePersonnelList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('methodList')">
${_conditionType_} a.method in
<foreach collection="conditionParamRef.methodList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('receivePersonnelTelephone')">
<if test="conditionParamRef.receivePersonnelTelephone != null and conditionParamRef.receivePersonnelTelephone != ''">
${_conditionType_} a.receivePersonnelTelephone like #{${_conditionParam_}.receivePersonnelTelephone}
<if test="conditionParamRef.containsKey('ua')">
<if test="conditionParamRef.ua != null and conditionParamRef.ua != ''">
${_conditionType_} a.ua like #{${_conditionParam_}.ua}
</if>
<if test="conditionParamRef.receivePersonnelTelephone == null">
${_conditionType_} a.receivePersonnelTelephone is null
<if test="conditionParamRef.ua == null">
${_conditionType_} a.ua is null
</if>
</if>
<if test="conditionParamRef.containsKey('receivePersonnelTelephoneList')">
${_conditionType_} a.receivePersonnelTelephone in
<foreach collection="conditionParamRef.receivePersonnelTelephoneList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('uaList')">
${_conditionType_} a.ua in
<foreach collection="conditionParamRef.uaList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmStatus')">
<if test="conditionParamRef.alarmStatus != null ">
${_conditionType_} a.alarmStatus = #{${_conditionParam_}.alarmStatus}
<if test="conditionParamRef.containsKey('uri')">
<if test="conditionParamRef.uri != null and conditionParamRef.uri != ''">
${_conditionType_} a.uri like #{${_conditionParam_}.uri}
</if>
<if test="conditionParamRef.alarmStatus == null">
${_conditionType_} a.alarmStatus is null
<if test="conditionParamRef.uri == null">
${_conditionType_} a.uri is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmStatusList')">
${_conditionType_} a.alarmStatus in
<foreach collection="conditionParamRef.alarmStatusList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('uriList')">
${_conditionType_} a.uri in
<foreach collection="conditionParamRef.uriList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmStatusStart') and conditionParamRef.alarmStatusStart != null">
${_conditionType_} a.alarmStatus <![CDATA[ >= ]]> #{${_conditionParam_}.alarmStatusStart}
<if test="conditionParamRef.containsKey('requestParam')">
<if test="conditionParamRef.requestParam != null and conditionParamRef.requestParam != ''">
${_conditionType_} a.requestParam like #{${_conditionParam_}.requestParam}
</if>
<if test="conditionParamRef.requestParam == null">
${_conditionType_} a.requestParam is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmStatusEnd') and conditionParamRef.alarmStatusEnd != null">
${_conditionType_} a.alarmStatus <![CDATA[ <= ]]> #{${_conditionParam_}.alarmStatusEnd}
<if test="conditionParamRef.containsKey('requestParamList')">
${_conditionType_} a.requestParam in
<foreach collection="conditionParamRef.requestParamList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmContent')">
<if test="conditionParamRef.alarmContent != null and conditionParamRef.alarmContent != ''">
${_conditionType_} a.alarmContent like #{${_conditionParam_}.alarmContent}
<if test="conditionParamRef.containsKey('response')">
<if test="conditionParamRef.response != null and conditionParamRef.response != ''">
${_conditionType_} a.response like #{${_conditionParam_}.response}
</if>
<if test="conditionParamRef.alarmContent == null">
${_conditionType_} a.alarmContent is null
<if test="conditionParamRef.response == null">
${_conditionType_} a.response is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmContentList')">
${_conditionType_} a.alarmContent in
<foreach collection="conditionParamRef.alarmContentList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('responseList')">
${_conditionType_} a.response in
<foreach collection="conditionParamRef.responseList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null ">
${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
<if test="conditionParamRef.containsKey('logTime')">
<if test="conditionParamRef.logTime != null ">
${_conditionType_} a.logTime = #{${_conditionParam_}.logTime}
</if>
<if test="conditionParamRef.createTime == null">
${_conditionType_} a.createTime is null
<if test="conditionParamRef.logTime == null">
${_conditionType_} a.logTime 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 test="conditionParamRef.containsKey('logTimeStart') and conditionParamRef.logTimeStart != null and conditionParamRef.logTimeStart!=''">
${_conditionType_} a.logTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.logTimeStart},' 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('logTimeEnd') and conditionParamRef.logTimeEnd != null and conditionParamRef.logTimeEnd!=''">
${_conditionType_} a.logTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.logTimeEnd},' 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 test="conditionParamRef.containsKey('duration')">
<if test="conditionParamRef.duration != null ">
${_conditionType_} a.duration = #{${_conditionParam_}.duration}
</if>
<if test="conditionParamRef.updateUserId == null">
${_conditionType_} a.updateUserId is null
<if test="conditionParamRef.duration == null">
${_conditionType_} a.duration is null
</if>
</if>
<if test="conditionParamRef.containsKey('updateUserIdList')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('durationList')">
${_conditionType_} a.duration in
<foreach collection="conditionParamRef.durationList" 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 test="conditionParamRef.containsKey('durationStart') and conditionParamRef.durationStart != null">
${_conditionType_} a.duration <![CDATA[ >= ]]> #{${_conditionParam_}.durationStart}
</if>
<if test="conditionParamRef.containsKey('updateUserIdEnd') and conditionParamRef.updateUserIdEnd != null">
${_conditionType_} a.updateUserId <![CDATA[ <= ]]> #{${_conditionParam_}.updateUserIdEnd}
<if test="conditionParamRef.containsKey('durationEnd') and conditionParamRef.durationEnd != null">
${_conditionType_} a.duration <![CDATA[ <= ]]> #{${_conditionParam_}.durationEnd}
</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')">
${_conditionType_} a.createUserId in
<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('updateTime')">
<if test="conditionParamRef.updateTime != null ">
${_conditionType_} a.updateTime = #{${_conditionParam_}.updateTime}
<if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null ">
${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
</if>
<if test="conditionParamRef.updateTime == null">
${_conditionType_} a.updateTime is null
<if test="conditionParamRef.createTime == null">
${_conditionType_} a.createTime 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 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('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 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>
</sql>
<sql id="_orderCols_">
......@@ -583,59 +648,74 @@
<if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmTime')">
a.alarmTime
<if test='orderCol.alarmTime != null and "DESC".equalsIgnoreCase(orderCol.alarmTime)'>DESC</if>
<if test="orderCol.containsKey('traceID')">
a.traceID
<if test='orderCol.traceID != null and "DESC".equalsIgnoreCase(orderCol.traceID)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmDevice')">
a.alarmDevice
<if test='orderCol.alarmDevice != null and "DESC".equalsIgnoreCase(orderCol.alarmDevice)'>DESC</if>
<if test="orderCol.containsKey('appName')">
a.appName
<if test='orderCol.appName != null and "DESC".equalsIgnoreCase(orderCol.appName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmType')">
a.alarmType
<if test='orderCol.alarmType != null and "DESC".equalsIgnoreCase(orderCol.alarmType)'>DESC</if>
<if test="orderCol.containsKey('hostName')">
a.hostName
<if test='orderCol.hostName != null and "DESC".equalsIgnoreCase(orderCol.hostName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmLevel')">
a.alarmLevel
<if test='orderCol.alarmLevel != null and "DESC".equalsIgnoreCase(orderCol.alarmLevel)'>DESC</if>
<if test="orderCol.containsKey('logLevel')">
a.logLevel
<if test='orderCol.logLevel != null and "DESC".equalsIgnoreCase(orderCol.logLevel)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmReceivePersonnel')">
a.alarmReceivePersonnel
<if test='orderCol.alarmReceivePersonnel != null and "DESC".equalsIgnoreCase(orderCol.alarmReceivePersonnel)'>DESC</if>
<if test="orderCol.containsKey('requestIp')">
a.requestIp
<if test='orderCol.requestIp != null and "DESC".equalsIgnoreCase(orderCol.requestIp)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('receivePersonnelTelephone')">
a.receivePersonnelTelephone
<if test='orderCol.receivePersonnelTelephone != null and "DESC".equalsIgnoreCase(orderCol.receivePersonnelTelephone)'>DESC</if>
<if test="orderCol.containsKey('method')">
a.method
<if test='orderCol.method != null and "DESC".equalsIgnoreCase(orderCol.method)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmStatus')">
a.alarmStatus
<if test='orderCol.alarmStatus != null and "DESC".equalsIgnoreCase(orderCol.alarmStatus)'>DESC</if>
<if test="orderCol.containsKey('ua')">
a.ua
<if test='orderCol.ua != null and "DESC".equalsIgnoreCase(orderCol.ua)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmContent')">
a.alarmContent
<if test='orderCol.alarmContent != null and "DESC".equalsIgnoreCase(orderCol.alarmContent)'>DESC</if>
<if test="orderCol.containsKey('uri')">
a.uri
<if test='orderCol.uri != null and "DESC".equalsIgnoreCase(orderCol.uri)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createTime')">
a.createTime
<if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
<if test="orderCol.containsKey('requestParam')">
a.requestParam
<if test='orderCol.requestParam != null and "DESC".equalsIgnoreCase(orderCol.requestParam)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('updateUserId')">
a.updateUserId
<if test='orderCol.updateUserId != null and "DESC".equalsIgnoreCase(orderCol.updateUserId)'>DESC</if>
<if test="orderCol.containsKey('response')">
a.response
<if test='orderCol.response != null and "DESC".equalsIgnoreCase(orderCol.response)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('updateTime')">
a.updateTime
<if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
<if test="orderCol.containsKey('logTime')">
a.logTime
<if test='orderCol.logTime != null and "DESC".equalsIgnoreCase(orderCol.logTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('duration')">
a.duration
<if test='orderCol.duration != null and "DESC".equalsIgnoreCase(orderCol.duration)'>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>
</trim>
......
<?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.alarm.dao.ibatis.AlarmConfigDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="AlarmConfigEntity" id="AlarmConfigEntity-Map">
<id property="id" column="id" />
<result property="productId" column="productId" />
<result property="alarmType" column="alarmType" />
<result property="alarmLevel" column="alarmLevel" />
<result property="alarmPusW1ay" column="alarmPusW1ay" />
<result property="enabled" column="enabled" />
<result property="remark" column="remark" />
<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('productId') or colPickMode == 1 and data.containsKey('productId')))">
a.productId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmType') or colPickMode == 1 and data.containsKey('alarmType')))">
a.alarmType,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmLevel') or colPickMode == 1 and data.containsKey('alarmLevel')))">
a.alarmLevel,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmPusW1ay') or colPickMode == 1 and data.containsKey('alarmPusW1ay')))">
a.alarmPusW1ay,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('enabled') or colPickMode == 1 and data.containsKey('enabled')))">
a.enabled,
</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('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="AlarmConfigEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_alarm_config
(productId,alarmType,alarmLevel,alarmPusW1ay,enabled,remark,createTime,updateUserId,updateTime)
VALUES
(#{productId},#{alarmType},#{alarmLevel},#{alarmPusW1ay},#{enabled},#{remark},#{createTime},#{updateUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_alarm_config
(productId,alarmType,alarmLevel,alarmPusW1ay,enabled,remark,createTime,updateUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.productId},#{item.alarmType},#{item.alarmLevel},#{item.alarmPusW1ay},#{item.enabled},#{item.remark},#{item.createTime},#{item.updateUserId},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_alarm_config as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('productId')) or (colPickMode==1 and !data.containsKey('productId'))">
a.productId=#{data.productId},
</if>
<if test="(colPickMode==0 and data.containsKey('productIdIncrement')) or (colPickMode==1 and !data.containsKey('productIdIncrement'))">
a.productId=ifnull(a.productId,0) + #{data.productIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmType')) or (colPickMode==1 and !data.containsKey('alarmType'))">
a.alarmType=#{data.alarmType},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmTypeIncrement')) or (colPickMode==1 and !data.containsKey('alarmTypeIncrement'))">
a.alarmType=ifnull(a.alarmType,0) + #{data.alarmTypeIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmLevel')) or (colPickMode==1 and !data.containsKey('alarmLevel'))">
a.alarmLevel=#{data.alarmLevel},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmLevelIncrement')) or (colPickMode==1 and !data.containsKey('alarmLevelIncrement'))">
a.alarmLevel=ifnull(a.alarmLevel,0) + #{data.alarmLevelIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmPusW1ay')) or (colPickMode==1 and !data.containsKey('alarmPusW1ay'))">
a.alarmPusW1ay=#{data.alarmPusW1ay},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmPusW1ayIncrement')) or (colPickMode==1 and !data.containsKey('alarmPusW1ayIncrement'))">
a.alarmPusW1ay=ifnull(a.alarmPusW1ay,0) + #{data.alarmPusW1ayIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('enabled')) or (colPickMode==1 and !data.containsKey('enabled'))">
a.enabled=#{data.enabled},
</if>
<if test="(colPickMode==0 and data.containsKey('enabledIncrement')) or (colPickMode==1 and !data.containsKey('enabledIncrement'))">
a.enabled=ifnull(a.enabled,0) + #{data.enabledIncrement},
</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('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_alarm_config as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="productId=(case" suffix="ELSE productId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('productId')) or (colPickMode==1 and !item.containsKey('productId'))">
when a.id=#{item.id} then #{item.productId}
</when>
<when test="(colPickMode==0 and item.containsKey('productIdIncrement')) or (colPickMode==1 and !item.containsKey('productIdIncrement'))">
when a.id=#{item.id} then ifnull(a.productId,0) + #{item.productIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmType=(case" suffix="ELSE alarmType end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmType')) or (colPickMode==1 and !item.containsKey('alarmType'))">
when a.id=#{item.id} then #{item.alarmType}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmTypeIncrement')) or (colPickMode==1 and !item.containsKey('alarmTypeIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmType,0) + #{item.alarmTypeIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmLevel=(case" suffix="ELSE alarmLevel end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmLevel')) or (colPickMode==1 and !item.containsKey('alarmLevel'))">
when a.id=#{item.id} then #{item.alarmLevel}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmLevelIncrement')) or (colPickMode==1 and !item.containsKey('alarmLevelIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmLevel,0) + #{item.alarmLevelIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmPusW1ay=(case" suffix="ELSE alarmPusW1ay end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmPusW1ay')) or (colPickMode==1 and !item.containsKey('alarmPusW1ay'))">
when a.id=#{item.id} then #{item.alarmPusW1ay}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmPusW1ayIncrement')) or (colPickMode==1 and !item.containsKey('alarmPusW1ayIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmPusW1ay,0) + #{item.alarmPusW1ayIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="enabled=(case" suffix="ELSE enabled end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('enabled')) or (colPickMode==1 and !item.containsKey('enabled'))">
when a.id=#{item.id} then #{item.enabled}
</when>
<when test="(colPickMode==0 and item.containsKey('enabledIncrement')) or (colPickMode==1 and !item.containsKey('enabledIncrement'))">
when a.id=#{item.id} then ifnull(a.enabled,0) + #{item.enabledIncrement}
</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="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="AlarmConfigEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_alarm_config as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_alarm_config as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_alarm_config where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_alarm_config as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="AlarmConfigEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_alarm_config 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_alarm_config 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>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" 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('productId')">
<if test="conditionParamRef.productId != null ">
${_conditionType_} a.productId = #{${_conditionParam_}.productId}
</if>
<if test="conditionParamRef.productId == null">
${_conditionType_} a.productId is null
</if>
</if>
<if test="conditionParamRef.containsKey('productIdList')">
${_conditionType_} a.productId in
<foreach collection="conditionParamRef.productIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('productIdStart') and conditionParamRef.productIdStart != null">
${_conditionType_} a.productId <![CDATA[ >= ]]> #{${_conditionParam_}.productIdStart}
</if>
<if test="conditionParamRef.containsKey('productIdEnd') and conditionParamRef.productIdEnd != null">
${_conditionType_} a.productId <![CDATA[ <= ]]> #{${_conditionParam_}.productIdEnd}
</if>
<if test="conditionParamRef.containsKey('alarmType')">
<if test="conditionParamRef.alarmType != null ">
${_conditionType_} a.alarmType = #{${_conditionParam_}.alarmType}
</if>
<if test="conditionParamRef.alarmType == null">
${_conditionType_} a.alarmType is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmTypeList')">
${_conditionType_} a.alarmType in
<foreach collection="conditionParamRef.alarmTypeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmTypeStart') and conditionParamRef.alarmTypeStart != null">
${_conditionType_} a.alarmType <![CDATA[ >= ]]> #{${_conditionParam_}.alarmTypeStart}
</if>
<if test="conditionParamRef.containsKey('alarmTypeEnd') and conditionParamRef.alarmTypeEnd != null">
${_conditionType_} a.alarmType <![CDATA[ <= ]]> #{${_conditionParam_}.alarmTypeEnd}
</if>
<if test="conditionParamRef.containsKey('alarmLevel')">
<if test="conditionParamRef.alarmLevel != null ">
${_conditionType_} a.alarmLevel = #{${_conditionParam_}.alarmLevel}
</if>
<if test="conditionParamRef.alarmLevel == null">
${_conditionType_} a.alarmLevel is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmLevelList')">
${_conditionType_} a.alarmLevel in
<foreach collection="conditionParamRef.alarmLevelList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmLevelStart') and conditionParamRef.alarmLevelStart != null">
${_conditionType_} a.alarmLevel <![CDATA[ >= ]]> #{${_conditionParam_}.alarmLevelStart}
</if>
<if test="conditionParamRef.containsKey('alarmLevelEnd') and conditionParamRef.alarmLevelEnd != null">
${_conditionType_} a.alarmLevel <![CDATA[ <= ]]> #{${_conditionParam_}.alarmLevelEnd}
</if>
<if test="conditionParamRef.containsKey('alarmPusW1ay')">
<if test="conditionParamRef.alarmPusW1ay != null ">
${_conditionType_} a.alarmPusW1ay = #{${_conditionParam_}.alarmPusW1ay}
</if>
<if test="conditionParamRef.alarmPusW1ay == null">
${_conditionType_} a.alarmPusW1ay is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmPusW1ayList')">
${_conditionType_} a.alarmPusW1ay in
<foreach collection="conditionParamRef.alarmPusW1ayList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmPusW1ayStart') and conditionParamRef.alarmPusW1ayStart != null">
${_conditionType_} a.alarmPusW1ay <![CDATA[ >= ]]> #{${_conditionParam_}.alarmPusW1ayStart}
</if>
<if test="conditionParamRef.containsKey('alarmPusW1ayEnd') and conditionParamRef.alarmPusW1ayEnd != null">
${_conditionType_} a.alarmPusW1ay <![CDATA[ <= ]]> #{${_conditionParam_}.alarmPusW1ayEnd}
</if>
<if test="conditionParamRef.containsKey('enabled')">
<if test="conditionParamRef.enabled != null ">
${_conditionType_} a.enabled = #{${_conditionParam_}.enabled}
</if>
<if test="conditionParamRef.enabled == null">
${_conditionType_} a.enabled is null
</if>
</if>
<if test="conditionParamRef.containsKey('enabledList')">
${_conditionType_} a.enabled in
<foreach collection="conditionParamRef.enabledList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('enabledStart') and conditionParamRef.enabledStart != null">
${_conditionType_} a.enabled <![CDATA[ >= ]]> #{${_conditionParam_}.enabledStart}
</if>
<if test="conditionParamRef.containsKey('enabledEnd') and conditionParamRef.enabledEnd != null">
${_conditionType_} a.enabled <![CDATA[ <= ]]> #{${_conditionParam_}.enabledEnd}
</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')">
${_conditionType_} a.remark in
<foreach collection="conditionParamRef.remarkList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</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')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" 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('productId')">
a.productId
<if test='orderCol.productId != null and "DESC".equalsIgnoreCase(orderCol.productId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmType')">
a.alarmType
<if test='orderCol.alarmType != null and "DESC".equalsIgnoreCase(orderCol.alarmType)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmLevel')">
a.alarmLevel
<if test='orderCol.alarmLevel != null and "DESC".equalsIgnoreCase(orderCol.alarmLevel)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmPusW1ay')">
a.alarmPusW1ay
<if test='orderCol.alarmPusW1ay != null and "DESC".equalsIgnoreCase(orderCol.alarmPusW1ay)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('enabled')">
a.enabled
<if test='orderCol.enabled != null and "DESC".equalsIgnoreCase(orderCol.enabled)'>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('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
<?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.alarm.dao.ibatis.AlarmSmsSendDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="AlarmSmsSendEntity" id="AlarmSmsSendEntity-Map">
<id property="id" column="id" />
<result property="mobile" column="mobile" />
<result property="sendMess" column="sendMess" />
<result property="sendStatus" column="sendStatus" />
<result property="sendTime" column="sendTime" />
<result property="createTime" column="createTime" />
<result property="updateUserId" column="updateUserId" />
<result property="updateTime" column="updateTime" />
<result property="receiver" column="receiver" />
</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('mobile') or colPickMode == 1 and data.containsKey('mobile')))">
a.mobile,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sendMess') or colPickMode == 1 and data.containsKey('sendMess')))">
a.sendMess,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sendStatus') or colPickMode == 1 and data.containsKey('sendStatus')))">
a.sendStatus,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sendTime') or colPickMode == 1 and data.containsKey('sendTime')))">
a.sendTime,
</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('receiver') or colPickMode == 1 and data.containsKey('receiver')))">
a.receiver,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="AlarmSmsSendEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_alarm_sms_send
(mobile,sendMess,sendStatus,sendTime,createTime,updateUserId,updateTime,receiver)
VALUES
(#{mobile},#{sendMess},#{sendStatus},#{sendTime},#{createTime},#{updateUserId},#{updateTime},#{receiver})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_alarm_sms_send
(mobile,sendMess,sendStatus,sendTime,createTime,updateUserId,updateTime,receiver)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.mobile},#{item.sendMess},#{item.sendStatus},#{item.sendTime},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.receiver})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_alarm_sms_send as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('mobile')) or (colPickMode==1 and !data.containsKey('mobile'))">
a.mobile=#{data.mobile},
</if>
<if test="(colPickMode==0 and data.containsKey('sendMess')) or (colPickMode==1 and !data.containsKey('sendMess'))">
a.sendMess=#{data.sendMess},
</if>
<if test="(colPickMode==0 and data.containsKey('sendStatus')) or (colPickMode==1 and !data.containsKey('sendStatus'))">
a.sendStatus=#{data.sendStatus},
</if>
<if test="(colPickMode==0 and data.containsKey('sendStatusIncrement')) or (colPickMode==1 and !data.containsKey('sendStatusIncrement'))">
a.sendStatus=ifnull(a.sendStatus,0) + #{data.sendStatusIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('sendTime')) or (colPickMode==1 and !data.containsKey('sendTime'))">
a.sendTime=#{data.sendTime},
</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>
<if test="(colPickMode==0 and data.containsKey('receiver')) or (colPickMode==1 and !data.containsKey('receiver'))">
a.receiver=#{data.receiver},
</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_alarm_sms_send as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="mobile=(case" suffix="ELSE mobile end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('mobile')) or (colPickMode==1 and !item.containsKey('mobile'))">
when a.id=#{item.id} then #{item.mobile}
</if>
</foreach>
</trim>
<trim prefix="sendMess=(case" suffix="ELSE sendMess end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('sendMess')) or (colPickMode==1 and !item.containsKey('sendMess'))">
when a.id=#{item.id} then #{item.sendMess}
</if>
</foreach>
</trim>
<trim prefix="sendStatus=(case" suffix="ELSE sendStatus end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('sendStatus')) or (colPickMode==1 and !item.containsKey('sendStatus'))">
when a.id=#{item.id} then #{item.sendStatus}
</when>
<when test="(colPickMode==0 and item.containsKey('sendStatusIncrement')) or (colPickMode==1 and !item.containsKey('sendStatusIncrement'))">
when a.id=#{item.id} then ifnull(a.sendStatus,0) + #{item.sendStatusIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="sendTime=(case" suffix="ELSE sendTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('sendTime')) or (colPickMode==1 and !item.containsKey('sendTime'))">
when a.id=#{item.id} then #{item.sendTime}
</if>
</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="receiver=(case" suffix="ELSE receiver end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('receiver')) or (colPickMode==1 and !item.containsKey('receiver'))">
when a.id=#{item.id} then #{item.receiver}
</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="AlarmSmsSendEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_alarm_sms_send as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_alarm_sms_send as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_alarm_sms_send where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_alarm_sms_send as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="AlarmSmsSendEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_alarm_sms_send 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_alarm_sms_send 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>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" 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('mobile')">
<if test="conditionParamRef.mobile != null and conditionParamRef.mobile != ''">
${_conditionType_} a.mobile like #{${_conditionParam_}.mobile}
</if>
<if test="conditionParamRef.mobile == null">
${_conditionType_} a.mobile is null
</if>
</if>
<if test="conditionParamRef.containsKey('mobileList')">
${_conditionType_} a.mobile in
<foreach collection="conditionParamRef.mobileList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('sendMess')">
<if test="conditionParamRef.sendMess != null and conditionParamRef.sendMess != ''">
${_conditionType_} a.sendMess like #{${_conditionParam_}.sendMess}
</if>
<if test="conditionParamRef.sendMess == null">
${_conditionType_} a.sendMess is null
</if>
</if>
<if test="conditionParamRef.containsKey('sendMessList')">
${_conditionType_} a.sendMess in
<foreach collection="conditionParamRef.sendMessList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('sendStatus')">
<if test="conditionParamRef.sendStatus != null ">
${_conditionType_} a.sendStatus = #{${_conditionParam_}.sendStatus}
</if>
<if test="conditionParamRef.sendStatus == null">
${_conditionType_} a.sendStatus is null
</if>
</if>
<if test="conditionParamRef.containsKey('sendStatusList')">
${_conditionType_} a.sendStatus in
<foreach collection="conditionParamRef.sendStatusList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('sendStatusStart') and conditionParamRef.sendStatusStart != null">
${_conditionType_} a.sendStatus <![CDATA[ >= ]]> #{${_conditionParam_}.sendStatusStart}
</if>
<if test="conditionParamRef.containsKey('sendStatusEnd') and conditionParamRef.sendStatusEnd != null">
${_conditionType_} a.sendStatus <![CDATA[ <= ]]> #{${_conditionParam_}.sendStatusEnd}
</if>
<if test="conditionParamRef.containsKey('sendTime')">
<if test="conditionParamRef.sendTime != null ">
${_conditionType_} a.sendTime = #{${_conditionParam_}.sendTime}
</if>
<if test="conditionParamRef.sendTime == null">
${_conditionType_} a.sendTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('sendTimeStart') and conditionParamRef.sendTimeStart != null and conditionParamRef.sendTimeStart!=''">
${_conditionType_} a.sendTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.sendTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('sendTimeEnd') and conditionParamRef.sendTimeEnd != null and conditionParamRef.sendTimeEnd!=''">
${_conditionType_} a.sendTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.sendTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</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')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" 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>
<if test="conditionParamRef.containsKey('receiver')">
<if test="conditionParamRef.receiver != null and conditionParamRef.receiver != ''">
${_conditionType_} a.receiver like #{${_conditionParam_}.receiver}
</if>
<if test="conditionParamRef.receiver == null">
${_conditionType_} a.receiver is null
</if>
</if>
<if test="conditionParamRef.containsKey('receiverList')">
${_conditionType_} a.receiver in
<foreach collection="conditionParamRef.receiverList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</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('mobile')">
a.mobile
<if test='orderCol.mobile != null and "DESC".equalsIgnoreCase(orderCol.mobile)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('sendMess')">
a.sendMess
<if test='orderCol.sendMess != null and "DESC".equalsIgnoreCase(orderCol.sendMess)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('sendStatus')">
a.sendStatus
<if test='orderCol.sendStatus != null and "DESC".equalsIgnoreCase(orderCol.sendStatus)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('sendTime')">
a.sendTime
<if test='orderCol.sendTime != null and "DESC".equalsIgnoreCase(orderCol.sendTime)'>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('receiver')">
a.receiver
<if test='orderCol.receiver != null and "DESC".equalsIgnoreCase(orderCol.receiver)'>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
<?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.device.dao.ibatis.DeviceModuleDistributeDaoImpl">
<mapper namespace="com.mortals.xhx.module.biz.dao.ibatis.BizLogDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="DeviceModuleDistributeEntity" id="DeviceModuleDistributeEntity-Map">
<resultMap type="BizLogEntity" id="BizLogEntity-Map">
<id property="id" column="id" />
<result property="productId" column="productId" />
<result property="productCode" column="productCode" />
<result property="productName" column="productName" />
<result property="imageResolution" column="imageResolution" />
<result property="imageResolutionValue" column="imageResolutionValue" />
<result property="filePath" column="filePath" />
<result property="distributeFilePath" column="distributeFilePath" />
<result property="version" column="version" />
<result property="distribute" column="distribute" />
<result property="traceID" column="traceID" />
<result property="appName" column="appName" />
<result property="hostName" column="hostName" />
<result property="logLevel" column="logLevel" />
<result property="userCode" column="userCode" />
<result property="deviceCode" column="deviceCode" />
<result property="eventTopic" column="eventTopic" />
<result property="eventTopicName" column="eventTopicName" />
<result property="msg" column="msg" />
<result property="logTime" column="logTime" />
<result property="createUserId" column="createUserId" />
<result property="createTime" column="createTime" />
<result property="updateUserId" column="updateUserId" />
<result property="updateTime" column="updateTime" />
</resultMap>
<update id="createTable" parameterType="paramDto">
CREATE TABLE `${tableName}`(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`traceID` varchar(64) COMMENT '追踪Id',
`appName` varchar(64) COMMENT '应用名称',
`hostName` varchar(64) COMMENT '实例IP',
`logLevel` varchar(64) COMMENT '日志等级',
`userCode` varchar(64) COMMENT '用户唯一标识',
`deviceCode` varchar(64) COMMENT '设备唯一标识',
`eventTopic` varchar(64) COMMENT '记录埋点的事件主题,方便实时计算或同步进行数据筛选',
`eventTopicName` varchar(64) COMMENT '记录埋点中文名称',
`msg` mediumtext COMMENT '事件参数,json',
`logTime` datetime NOT NULL COMMENT '日志产生时间',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='业务日志';
</update>
<!-- 表所有列 -->
<sql id="_columns">
......@@ -28,113 +46,107 @@
<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('productId') or colPickMode == 1 and data.containsKey('productId')))">
a.productId,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('traceID') or colPickMode == 1 and data.containsKey('traceID')))">
a.traceID,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('productCode') or colPickMode == 1 and data.containsKey('productCode')))">
a.productCode,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appName') or colPickMode == 1 and data.containsKey('appName')))">
a.appName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('productName') or colPickMode == 1 and data.containsKey('productName')))">
a.productName,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('hostName') or colPickMode == 1 and data.containsKey('hostName')))">
a.hostName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('imageResolution') or colPickMode == 1 and data.containsKey('imageResolution')))">
a.imageResolution,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('logLevel') or colPickMode == 1 and data.containsKey('logLevel')))">
a.logLevel,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('imageResolutionValue') or colPickMode == 1 and data.containsKey('imageResolutionValue')))">
a.imageResolutionValue,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('userCode') or colPickMode == 1 and data.containsKey('userCode')))">
a.userCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('filePath') or colPickMode == 1 and data.containsKey('filePath')))">
a.filePath,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceCode') or colPickMode == 1 and data.containsKey('deviceCode')))">
a.deviceCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('distributeFilePath') or colPickMode == 1 and data.containsKey('distributeFilePath')))">
a.distributeFilePath,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('eventTopic') or colPickMode == 1 and data.containsKey('eventTopic')))">
a.eventTopic,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('version') or colPickMode == 1 and data.containsKey('version')))">
a.version,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('eventTopicName') or colPickMode == 1 and data.containsKey('eventTopicName')))">
a.eventTopicName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('distribute') or colPickMode == 1 and data.containsKey('distribute')))">
a.distribute,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('msg') or colPickMode == 1 and data.containsKey('msg')))">
a.msg,
</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 test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('logTime') or colPickMode == 1 and data.containsKey('logTime')))">
a.logTime,
</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 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('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
a.updateTime,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
a.createTime,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="DeviceModuleDistributeEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_device_module_distribute
(productId,productCode,productName,imageResolution,imageResolutionValue,filePath,distributeFilePath,version,distribute,createTime,updateUserId,updateTime)
<insert id="insert" parameterType="BizLogEntity" useGeneratedKeys="true" keyProperty="id">
insert into `${tableName}`
(traceID,appName,hostName,logLevel,userCode,deviceCode,eventTopic,eventTopicName,msg,logTime,createUserId,createTime)
VALUES
(#{productId},#{productCode},#{productName},#{imageResolution},#{imageResolutionValue},#{filePath},#{distributeFilePath},#{version},#{distribute},#{createTime},#{updateUserId},#{updateTime})
(#{traceID},#{appName},#{hostName},#{logLevel},#{userCode},#{deviceCode},#{eventTopic},#{eventTopicName},#{msg},#{logTime},#{createUserId},#{createTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_device_module_distribute
(productId,productCode,productName,imageResolution,imageResolutionValue,filePath,distributeFilePath,version,distribute,createTime,updateUserId,updateTime)
insert into `${tableName}`
(traceID,appName,hostName,logLevel,userCode,deviceCode,eventTopic,eventTopicName,msg,logTime,createUserId,createTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.productId},#{item.productCode},#{item.productName},#{item.imageResolution},#{item.imageResolutionValue},#{item.filePath},#{item.distributeFilePath},#{item.version},#{item.distribute},#{item.createTime},#{item.updateUserId},#{item.updateTime})
(#{item.traceID},#{item.appName},#{item.hostName},#{item.logLevel},#{item.userCode},#{item.deviceCode},#{item.eventTopic},#{item.eventTopicName},#{item.msg},#{item.logTime},#{item.createUserId},#{item.createTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_device_module_distribute as a
update `${tableName}` as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('productId')) or (colPickMode==1 and !data.containsKey('productId'))">
a.productId=#{data.productId},
<if test="(colPickMode==0 and data.containsKey('traceID')) or (colPickMode==1 and !data.containsKey('traceID'))">
a.traceID=#{data.traceID},
</if>
<if test="(colPickMode==0 and data.containsKey('productIdIncrement')) or (colPickMode==1 and !data.containsKey('productIdIncrement'))">
a.productId=ifnull(a.productId,0) + #{data.productIdIncrement},
<if test="(colPickMode==0 and data.containsKey('appName')) or (colPickMode==1 and !data.containsKey('appName'))">
a.appName=#{data.appName},
</if>
<if test="(colPickMode==0 and data.containsKey('productCode')) or (colPickMode==1 and !data.containsKey('productCode'))">
a.productCode=#{data.productCode},
<if test="(colPickMode==0 and data.containsKey('hostName')) or (colPickMode==1 and !data.containsKey('hostName'))">
a.hostName=#{data.hostName},
</if>
<if test="(colPickMode==0 and data.containsKey('productName')) or (colPickMode==1 and !data.containsKey('productName'))">
a.productName=#{data.productName},
<if test="(colPickMode==0 and data.containsKey('logLevel')) or (colPickMode==1 and !data.containsKey('logLevel'))">
a.logLevel=#{data.logLevel},
</if>
<if test="(colPickMode==0 and data.containsKey('imageResolution')) or (colPickMode==1 and !data.containsKey('imageResolution'))">
a.imageResolution=#{data.imageResolution},
<if test="(colPickMode==0 and data.containsKey('userCode')) or (colPickMode==1 and !data.containsKey('userCode'))">
a.userCode=#{data.userCode},
</if>
<if test="(colPickMode==0 and data.containsKey('imageResolutionValue')) or (colPickMode==1 and !data.containsKey('imageResolutionValue'))">
a.imageResolutionValue=#{data.imageResolutionValue},
<if test="(colPickMode==0 and data.containsKey('deviceCode')) or (colPickMode==1 and !data.containsKey('deviceCode'))">
a.deviceCode=#{data.deviceCode},
</if>
<if test="(colPickMode==0 and data.containsKey('filePath')) or (colPickMode==1 and !data.containsKey('filePath'))">
a.filePath=#{data.filePath},
<if test="(colPickMode==0 and data.containsKey('eventTopic')) or (colPickMode==1 and !data.containsKey('eventTopic'))">
a.eventTopic=#{data.eventTopic},
</if>
<if test="(colPickMode==0 and data.containsKey('distributeFilePath')) or (colPickMode==1 and !data.containsKey('distributeFilePath'))">
a.distributeFilePath=#{data.distributeFilePath},
<if test="(colPickMode==0 and data.containsKey('eventTopicName')) or (colPickMode==1 and !data.containsKey('eventTopicName'))">
a.eventTopicName=#{data.eventTopicName},
</if>
<if test="(colPickMode==0 and data.containsKey('version')) or (colPickMode==1 and !data.containsKey('version'))">
a.version=#{data.version},
<if test="(colPickMode==0 and data.containsKey('msg')) or (colPickMode==1 and !data.containsKey('msg'))">
a.msg=#{data.msg},
</if>
<if test="(colPickMode==0 and data.containsKey('distribute')) or (colPickMode==1 and !data.containsKey('distribute'))">
a.distribute=#{data.distribute},
<if test="(colPickMode==0 and data.containsKey('logTime')) or (colPickMode==1 and !data.containsKey('logTime'))">
a.logTime=#{data.logTime},
</if>
<if test="(colPickMode==0 and data.containsKey('distributeIncrement')) or (colPickMode==1 and !data.containsKey('distributeIncrement'))">
a.distribute=ifnull(a.distribute,0) + #{data.distributeIncrement},
<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
......@@ -145,104 +157,94 @@
</update>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="paramDto">
update mortals_xhx_device_module_distribute as a
update `${tableName}` as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="productId=(case" suffix="ELSE productId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('productId')) or (colPickMode==1 and !item.containsKey('productId'))">
when a.id=#{item.id} then #{item.productId}
</when>
<when test="(colPickMode==0 and item.containsKey('productIdIncrement')) or (colPickMode==1 and !item.containsKey('productIdIncrement'))">
when a.id=#{item.id} then ifnull(a.productId,0) + #{item.productIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="productCode=(case" suffix="ELSE productCode end),">
<trim prefix="traceID=(case" suffix="ELSE traceID end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('productCode')) or (colPickMode==1 and !item.containsKey('productCode'))">
when a.id=#{item.id} then #{item.productCode}
<if test="(colPickMode==0 and item.containsKey('traceID')) or (colPickMode==1 and !item.containsKey('traceID'))">
when a.id=#{item.id} then #{item.traceID}
</if>
</foreach>
</trim>
<trim prefix="productName=(case" suffix="ELSE productName end),">
<trim prefix="appName=(case" suffix="ELSE appName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('productName')) or (colPickMode==1 and !item.containsKey('productName'))">
when a.id=#{item.id} then #{item.productName}
<if test="(colPickMode==0 and item.containsKey('appName')) or (colPickMode==1 and !item.containsKey('appName'))">
when a.id=#{item.id} then #{item.appName}
</if>
</foreach>
</trim>
<trim prefix="imageResolution=(case" suffix="ELSE imageResolution end),">
<trim prefix="hostName=(case" suffix="ELSE hostName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('imageResolution')) or (colPickMode==1 and !item.containsKey('imageResolution'))">
when a.id=#{item.id} then #{item.imageResolution}
<if test="(colPickMode==0 and item.containsKey('hostName')) or (colPickMode==1 and !item.containsKey('hostName'))">
when a.id=#{item.id} then #{item.hostName}
</if>
</foreach>
</trim>
<trim prefix="imageResolutionValue=(case" suffix="ELSE imageResolutionValue end),">
<trim prefix="logLevel=(case" suffix="ELSE logLevel end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('imageResolutionValue')) or (colPickMode==1 and !item.containsKey('imageResolutionValue'))">
when a.id=#{item.id} then #{item.imageResolutionValue}
<if test="(colPickMode==0 and item.containsKey('logLevel')) or (colPickMode==1 and !item.containsKey('logLevel'))">
when a.id=#{item.id} then #{item.logLevel}
</if>
</foreach>
</trim>
<trim prefix="filePath=(case" suffix="ELSE filePath end),">
<trim prefix="userCode=(case" suffix="ELSE userCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('filePath')) or (colPickMode==1 and !item.containsKey('filePath'))">
when a.id=#{item.id} then #{item.filePath}
<if test="(colPickMode==0 and item.containsKey('userCode')) or (colPickMode==1 and !item.containsKey('userCode'))">
when a.id=#{item.id} then #{item.userCode}
</if>
</foreach>
</trim>
<trim prefix="distributeFilePath=(case" suffix="ELSE distributeFilePath end),">
<trim prefix="deviceCode=(case" suffix="ELSE deviceCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('distributeFilePath')) or (colPickMode==1 and !item.containsKey('distributeFilePath'))">
when a.id=#{item.id} then #{item.distributeFilePath}
<if test="(colPickMode==0 and item.containsKey('deviceCode')) or (colPickMode==1 and !item.containsKey('deviceCode'))">
when a.id=#{item.id} then #{item.deviceCode}
</if>
</foreach>
</trim>
<trim prefix="version=(case" suffix="ELSE version end),">
<trim prefix="eventTopic=(case" suffix="ELSE eventTopic end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('version')) or (colPickMode==1 and !item.containsKey('version'))">
when a.id=#{item.id} then #{item.version}
<if test="(colPickMode==0 and item.containsKey('eventTopic')) or (colPickMode==1 and !item.containsKey('eventTopic'))">
when a.id=#{item.id} then #{item.eventTopic}
</if>
</foreach>
</trim>
<trim prefix="distribute=(case" suffix="ELSE distribute end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('distribute')) or (colPickMode==1 and !item.containsKey('distribute'))">
when a.id=#{item.id} then #{item.distribute}
</when>
<when test="(colPickMode==0 and item.containsKey('distributeIncrement')) or (colPickMode==1 and !item.containsKey('distributeIncrement'))">
when a.id=#{item.id} then ifnull(a.distribute,0) + #{item.distributeIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="createTime=(case" suffix="ELSE createTime end),">
<trim prefix="eventTopicName=(case" suffix="ELSE eventTopicName 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 test="(colPickMode==0 and item.containsKey('eventTopicName')) or (colPickMode==1 and !item.containsKey('eventTopicName'))">
when a.id=#{item.id} then #{item.eventTopicName}
</if>
</foreach>
</trim>
<trim prefix="updateUserId=(case" suffix="ELSE updateUserId end),">
<trim prefix="msg=(case" suffix="ELSE msg end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('msg')) or (colPickMode==1 and !item.containsKey('msg'))">
when a.id=#{item.id} then #{item.msg}
</if>
</foreach>
</trim>
<trim prefix="logTime=(case" suffix="ELSE logTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('logTime')) or (colPickMode==1 and !item.containsKey('logTime'))">
when a.id=#{item.id} then #{item.logTime}
</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('updateUserId')) or (colPickMode==1 and !item.containsKey('updateUserId'))">
when a.id=#{item.id} then #{item.updateUserId}
<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('updateUserIdIncrement')) or (colPickMode==1 and !item.containsKey('updateUserIdIncrement'))">
when a.id=#{item.id} then ifnull(a.updateUserId,0) + #{item.updateUserIdIncrement}
<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="updateTime=(case" suffix="ELSE updateTime end),">
<trim prefix="createTime=(case" suffix="ELSE createTime 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 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>
......@@ -253,25 +255,25 @@
</foreach>
</update>
<!-- 根据主健查询 -->
<select id="getByKey" parameterType="paramDto" resultMap="DeviceModuleDistributeEntity-Map">
<select id="getByKey" parameterType="paramDto" resultMap="BizLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_module_distribute as a
from `${tableName}` as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_device_module_distribute as a where a.id=#{condition.id}
delete a.* from `${tableName}` as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_device_module_distribute where id in
delete from `${tableName}` where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_device_module_distribute as a
delete a.* from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -280,9 +282,9 @@
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="DeviceModuleDistributeEntity-Map">
<select id="getList" parameterType="paramDto" resultMap="BizLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_module_distribute as a
from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -297,7 +299,7 @@
<!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int">
select count(1)
from mortals_xhx_device_module_distribute as a
from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -368,203 +370,191 @@
${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
</if>
<if test="conditionParamRef.containsKey('productId')">
<if test="conditionParamRef.productId != null ">
${_conditionType_} a.productId = #{${_conditionParam_}.productId}
<if test="conditionParamRef.containsKey('traceID')">
<if test="conditionParamRef.traceID != null and conditionParamRef.traceID != ''">
${_conditionType_} a.traceID like #{${_conditionParam_}.traceID}
</if>
<if test="conditionParamRef.productId == null">
${_conditionType_} a.productId is null
<if test="conditionParamRef.traceID == null">
${_conditionType_} a.traceID is null
</if>
</if>
<if test="conditionParamRef.containsKey('productIdList')">
${_conditionType_} a.productId in
<foreach collection="conditionParamRef.productIdList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('traceIDList')">
${_conditionType_} a.traceID in
<foreach collection="conditionParamRef.traceIDList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('productIdStart') and conditionParamRef.productIdStart != null">
${_conditionType_} a.productId <![CDATA[ >= ]]> #{${_conditionParam_}.productIdStart}
</if>
<if test="conditionParamRef.containsKey('productIdEnd') and conditionParamRef.productIdEnd != null">
${_conditionType_} a.productId <![CDATA[ <= ]]> #{${_conditionParam_}.productIdEnd}
</if>
<if test="conditionParamRef.containsKey('productCode')">
<if test="conditionParamRef.productCode != null and conditionParamRef.productCode != ''">
${_conditionType_} a.productCode like #{${_conditionParam_}.productCode}
<if test="conditionParamRef.containsKey('appName')">
<if test="conditionParamRef.appName != null and conditionParamRef.appName != ''">
${_conditionType_} a.appName like #{${_conditionParam_}.appName}
</if>
<if test="conditionParamRef.productCode == null">
${_conditionType_} a.productCode is null
<if test="conditionParamRef.appName == null">
${_conditionType_} a.appName is null
</if>
</if>
<if test="conditionParamRef.containsKey('productCodeList')">
${_conditionType_} a.productCode in
<foreach collection="conditionParamRef.productCodeList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('appNameList')">
${_conditionType_} a.appName in
<foreach collection="conditionParamRef.appNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('productName')">
<if test="conditionParamRef.productName != null and conditionParamRef.productName != ''">
${_conditionType_} a.productName like #{${_conditionParam_}.productName}
<if test="conditionParamRef.containsKey('hostName')">
<if test="conditionParamRef.hostName != null and conditionParamRef.hostName != ''">
${_conditionType_} a.hostName like #{${_conditionParam_}.hostName}
</if>
<if test="conditionParamRef.productName == null">
${_conditionType_} a.productName is null
<if test="conditionParamRef.hostName == null">
${_conditionType_} a.hostName is null
</if>
</if>
<if test="conditionParamRef.containsKey('productNameList')">
${_conditionType_} a.productName in
<foreach collection="conditionParamRef.productNameList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('hostNameList')">
${_conditionType_} a.hostName in
<foreach collection="conditionParamRef.hostNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('imageResolution')">
<if test="conditionParamRef.imageResolution != null and conditionParamRef.imageResolution != ''">
${_conditionType_} a.imageResolution like #{${_conditionParam_}.imageResolution}
<if test="conditionParamRef.containsKey('logLevel')">
<if test="conditionParamRef.logLevel != null and conditionParamRef.logLevel != ''">
${_conditionType_} a.logLevel like #{${_conditionParam_}.logLevel}
</if>
<if test="conditionParamRef.imageResolution == null">
${_conditionType_} a.imageResolution is null
<if test="conditionParamRef.logLevel == null">
${_conditionType_} a.logLevel is null
</if>
</if>
<if test="conditionParamRef.containsKey('imageResolutionList')">
${_conditionType_} a.imageResolution in
<foreach collection="conditionParamRef.imageResolutionList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('logLevelList')">
${_conditionType_} a.logLevel in
<foreach collection="conditionParamRef.logLevelList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('imageResolutionValue')">
<if test="conditionParamRef.imageResolutionValue != null and conditionParamRef.imageResolutionValue != ''">
${_conditionType_} a.imageResolutionValue like #{${_conditionParam_}.imageResolutionValue}
<if test="conditionParamRef.containsKey('userCode')">
<if test="conditionParamRef.userCode != null and conditionParamRef.userCode != ''">
${_conditionType_} a.userCode like #{${_conditionParam_}.userCode}
</if>
<if test="conditionParamRef.imageResolutionValue == null">
${_conditionType_} a.imageResolutionValue is null
<if test="conditionParamRef.userCode == null">
${_conditionType_} a.userCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('imageResolutionValueList')">
${_conditionType_} a.imageResolutionValue in
<foreach collection="conditionParamRef.imageResolutionValueList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('userCodeList')">
${_conditionType_} a.userCode in
<foreach collection="conditionParamRef.userCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('filePath')">
<if test="conditionParamRef.filePath != null and conditionParamRef.filePath != ''">
${_conditionType_} a.filePath like #{${_conditionParam_}.filePath}
<if test="conditionParamRef.containsKey('deviceCode')">
<if test="conditionParamRef.deviceCode != null and conditionParamRef.deviceCode != ''">
${_conditionType_} a.deviceCode like #{${_conditionParam_}.deviceCode}
</if>
<if test="conditionParamRef.filePath == null">
${_conditionType_} a.filePath is null
<if test="conditionParamRef.deviceCode == null">
${_conditionType_} a.deviceCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('filePathList')">
${_conditionType_} a.filePath in
<foreach collection="conditionParamRef.filePathList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('deviceCodeList')">
${_conditionType_} a.deviceCode in
<foreach collection="conditionParamRef.deviceCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('distributeFilePath')">
<if test="conditionParamRef.distributeFilePath != null and conditionParamRef.distributeFilePath != ''">
${_conditionType_} a.distributeFilePath like #{${_conditionParam_}.distributeFilePath}
<if test="conditionParamRef.containsKey('eventTopic')">
<if test="conditionParamRef.eventTopic != null and conditionParamRef.eventTopic != ''">
${_conditionType_} a.eventTopic like #{${_conditionParam_}.eventTopic}
</if>
<if test="conditionParamRef.distributeFilePath == null">
${_conditionType_} a.distributeFilePath is null
<if test="conditionParamRef.eventTopic == null">
${_conditionType_} a.eventTopic is null
</if>
</if>
<if test="conditionParamRef.containsKey('distributeFilePathList')">
${_conditionType_} a.distributeFilePath in
<foreach collection="conditionParamRef.distributeFilePathList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('eventTopicList')">
${_conditionType_} a.eventTopic in
<foreach collection="conditionParamRef.eventTopicList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('version')">
<if test="conditionParamRef.version != null and conditionParamRef.version != ''">
${_conditionType_} a.version like #{${_conditionParam_}.version}
<if test="conditionParamRef.containsKey('eventTopicName')">
<if test="conditionParamRef.eventTopicName != null and conditionParamRef.eventTopicName != ''">
${_conditionType_} a.eventTopicName like #{${_conditionParam_}.eventTopicName}
</if>
<if test="conditionParamRef.version == null">
${_conditionType_} a.version is null
<if test="conditionParamRef.eventTopicName == null">
${_conditionType_} a.eventTopicName is null
</if>
</if>
<if test="conditionParamRef.containsKey('versionList')">
${_conditionType_} a.version in
<foreach collection="conditionParamRef.versionList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('eventTopicNameList')">
${_conditionType_} a.eventTopicName in
<foreach collection="conditionParamRef.eventTopicNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('distribute')">
<if test="conditionParamRef.distribute != null ">
${_conditionType_} a.distribute = #{${_conditionParam_}.distribute}
<if test="conditionParamRef.containsKey('msg')">
<if test="conditionParamRef.msg != null and conditionParamRef.msg != ''">
${_conditionType_} a.msg like #{${_conditionParam_}.msg}
</if>
<if test="conditionParamRef.distribute == null">
${_conditionType_} a.distribute is null
<if test="conditionParamRef.msg == null">
${_conditionType_} a.msg is null
</if>
</if>
<if test="conditionParamRef.containsKey('distributeList')">
${_conditionType_} a.distribute in
<foreach collection="conditionParamRef.distributeList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('msgList')">
${_conditionType_} a.msg in
<foreach collection="conditionParamRef.msgList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('distributeStart') and conditionParamRef.distributeStart != null">
${_conditionType_} a.distribute <![CDATA[ >= ]]> #{${_conditionParam_}.distributeStart}
</if>
<if test="conditionParamRef.containsKey('distributeEnd') and conditionParamRef.distributeEnd != null">
${_conditionType_} a.distribute <![CDATA[ <= ]]> #{${_conditionParam_}.distributeEnd}
</if>
<if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null ">
${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
<if test="conditionParamRef.containsKey('logTime')">
<if test="conditionParamRef.logTime != null ">
${_conditionType_} a.logTime = #{${_conditionParam_}.logTime}
</if>
<if test="conditionParamRef.createTime == null">
${_conditionType_} a.createTime is null
<if test="conditionParamRef.logTime == null">
${_conditionType_} a.logTime 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 test="conditionParamRef.containsKey('logTimeStart') and conditionParamRef.logTimeStart != null and conditionParamRef.logTimeStart!=''">
${_conditionType_} a.logTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.logTimeStart},' 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('logTimeEnd') and conditionParamRef.logTimeEnd != null and conditionParamRef.logTimeEnd!=''">
${_conditionType_} a.logTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.logTimeEnd},' 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 test="conditionParamRef.containsKey('createUserId')">
<if test="conditionParamRef.createUserId != null ">
${_conditionType_} a.createUserId = #{${_conditionParam_}.createUserId}
</if>
<if test="conditionParamRef.updateUserId == null">
${_conditionType_} a.updateUserId is null
<if test="conditionParamRef.createUserId == null">
${_conditionType_} a.createUserId is null
</if>
</if>
<if test="conditionParamRef.containsKey('updateUserIdList')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('createUserIdList')">
${_conditionType_} a.createUserId in
<foreach collection="conditionParamRef.createUserIdList" 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 test="conditionParamRef.containsKey('createUserIdStart') and conditionParamRef.createUserIdStart != null">
${_conditionType_} a.createUserId <![CDATA[ >= ]]> #{${_conditionParam_}.createUserIdStart}
</if>
<if test="conditionParamRef.containsKey('updateUserIdEnd') and conditionParamRef.updateUserIdEnd != null">
${_conditionType_} a.updateUserId <![CDATA[ <= ]]> #{${_conditionParam_}.updateUserIdEnd}
<if test="conditionParamRef.containsKey('createUserIdEnd') and conditionParamRef.createUserIdEnd != null">
${_conditionType_} a.createUserId <![CDATA[ <= ]]> #{${_conditionParam_}.createUserIdEnd}
</if>
<if test="conditionParamRef.containsKey('updateTime')">
<if test="conditionParamRef.updateTime != null ">
${_conditionType_} a.updateTime = #{${_conditionParam_}.updateTime}
<if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null ">
${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
</if>
<if test="conditionParamRef.updateTime == null">
${_conditionType_} a.updateTime is null
<if test="conditionParamRef.createTime == null">
${_conditionType_} a.createTime 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 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('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 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>
</sql>
<sql id="_orderCols_">
......@@ -584,64 +574,64 @@
<if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('productId')">
a.productId
<if test='orderCol.productId != null and "DESC".equalsIgnoreCase(orderCol.productId)'>DESC</if>
<if test="orderCol.containsKey('traceID')">
a.traceID
<if test='orderCol.traceID != null and "DESC".equalsIgnoreCase(orderCol.traceID)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('productCode')">
a.productCode
<if test='orderCol.productCode != null and "DESC".equalsIgnoreCase(orderCol.productCode)'>DESC</if>
<if test="orderCol.containsKey('appName')">
a.appName
<if test='orderCol.appName != null and "DESC".equalsIgnoreCase(orderCol.appName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('productName')">
a.productName
<if test='orderCol.productName != null and "DESC".equalsIgnoreCase(orderCol.productName)'>DESC</if>
<if test="orderCol.containsKey('hostName')">
a.hostName
<if test='orderCol.hostName != null and "DESC".equalsIgnoreCase(orderCol.hostName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('imageResolution')">
a.imageResolution
<if test='orderCol.imageResolution != null and "DESC".equalsIgnoreCase(orderCol.imageResolution)'>DESC</if>
<if test="orderCol.containsKey('logLevel')">
a.logLevel
<if test='orderCol.logLevel != null and "DESC".equalsIgnoreCase(orderCol.logLevel)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('imageResolutionValue')">
a.imageResolutionValue
<if test='orderCol.imageResolutionValue != null and "DESC".equalsIgnoreCase(orderCol.imageResolutionValue)'>DESC</if>
<if test="orderCol.containsKey('userCode')">
a.userCode
<if test='orderCol.userCode != null and "DESC".equalsIgnoreCase(orderCol.userCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('filePath')">
a.filePath
<if test='orderCol.filePath != null and "DESC".equalsIgnoreCase(orderCol.filePath)'>DESC</if>
<if test="orderCol.containsKey('deviceCode')">
a.deviceCode
<if test='orderCol.deviceCode != null and "DESC".equalsIgnoreCase(orderCol.deviceCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('distributeFilePath')">
a.distributeFilePath
<if test='orderCol.distributeFilePath != null and "DESC".equalsIgnoreCase(orderCol.distributeFilePath)'>DESC</if>
<if test="orderCol.containsKey('eventTopic')">
a.eventTopic
<if test='orderCol.eventTopic != null and "DESC".equalsIgnoreCase(orderCol.eventTopic)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('version')">
a.version
<if test='orderCol.version != null and "DESC".equalsIgnoreCase(orderCol.version)'>DESC</if>
<if test="orderCol.containsKey('eventTopicName')">
a.eventTopicName
<if test='orderCol.eventTopicName != null and "DESC".equalsIgnoreCase(orderCol.eventTopicName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('distribute')">
a.distribute
<if test='orderCol.distribute != null and "DESC".equalsIgnoreCase(orderCol.distribute)'>DESC</if>
<if test="orderCol.containsKey('msg')">
a.msg
<if test='orderCol.msg != null and "DESC".equalsIgnoreCase(orderCol.msg)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createTime')">
a.createTime
<if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
<if test="orderCol.containsKey('logTime')">
a.logTime
<if test='orderCol.logTime != null and "DESC".equalsIgnoreCase(orderCol.logTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('updateUserId')">
a.updateUserId
<if test='orderCol.updateUserId != null and "DESC".equalsIgnoreCase(orderCol.updateUserId)'>DESC</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('updateTime')">
a.updateTime
<if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
<if test="orderCol.containsKey('createTime')">
a.createTime
<if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
,
</if>
</trim>
......
<?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.device.dao.ibatis.DeviceLogDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="DeviceLogEntity" id="DeviceLogEntity-Map">
<id property="id" column="id" />
<result property="traceID" column="traceID" />
<result property="deviceId" column="deviceId" />
<result property="deviceCode" column="deviceCode" />
<result property="deviceName" column="deviceName" />
<result property="messageHead" column="messageHead" />
<result property="logType" column="logType" />
<result property="content" column="content" />
<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('traceID') or colPickMode == 1 and data.containsKey('traceID')))">
a.traceID,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceId') or colPickMode == 1 and data.containsKey('deviceId')))">
a.deviceId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceCode') or colPickMode == 1 and data.containsKey('deviceCode')))">
a.deviceCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceName') or colPickMode == 1 and data.containsKey('deviceName')))">
a.deviceName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('messageHead') or colPickMode == 1 and data.containsKey('messageHead')))">
a.messageHead,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('logType') or colPickMode == 1 and data.containsKey('logType')))">
a.logType,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('content') or colPickMode == 1 and data.containsKey('content')))">
a.content,
</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="DeviceLogEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_device_log
(traceID,deviceId,deviceCode,deviceName,messageHead,logType,content,createUserId,createTime,updateUserId,updateTime)
VALUES
(#{traceID},#{deviceId},#{deviceCode},#{deviceName},#{messageHead},#{logType},#{content},#{createUserId},#{createTime},#{updateUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_device_log
(traceID,deviceId,deviceCode,deviceName,messageHead,logType,content,createUserId,createTime,updateUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.traceID},#{item.deviceId},#{item.deviceCode},#{item.deviceName},#{item.messageHead},#{item.logType},#{item.content},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_device_log as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('traceID')) or (colPickMode==1 and !data.containsKey('traceID'))">
a.traceID=#{data.traceID},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceId')) or (colPickMode==1 and !data.containsKey('deviceId'))">
a.deviceId=#{data.deviceId},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceIdIncrement')) or (colPickMode==1 and !data.containsKey('deviceIdIncrement'))">
a.deviceId=ifnull(a.deviceId,0) + #{data.deviceIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceCode')) or (colPickMode==1 and !data.containsKey('deviceCode'))">
a.deviceCode=#{data.deviceCode},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceName')) or (colPickMode==1 and !data.containsKey('deviceName'))">
a.deviceName=#{data.deviceName},
</if>
<if test="(colPickMode==0 and data.containsKey('messageHead')) or (colPickMode==1 and !data.containsKey('messageHead'))">
a.messageHead=#{data.messageHead},
</if>
<if test="(colPickMode==0 and data.containsKey('logType')) or (colPickMode==1 and !data.containsKey('logType'))">
a.logType=#{data.logType},
</if>
<if test="(colPickMode==0 and data.containsKey('logTypeIncrement')) or (colPickMode==1 and !data.containsKey('logTypeIncrement'))">
a.logType=ifnull(a.logType,0) + #{data.logTypeIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('content')) or (colPickMode==1 and !data.containsKey('content'))">
a.content=#{data.content},
</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_device_log as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="traceID=(case" suffix="ELSE traceID end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('traceID')) or (colPickMode==1 and !item.containsKey('traceID'))">
when a.id=#{item.id} then #{item.traceID}
</if>
</foreach>
</trim>
<trim prefix="deviceId=(case" suffix="ELSE deviceId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceId')) or (colPickMode==1 and !item.containsKey('deviceId'))">
when a.id=#{item.id} then #{item.deviceId}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceIdIncrement')) or (colPickMode==1 and !item.containsKey('deviceIdIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceId,0) + #{item.deviceIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="deviceCode=(case" suffix="ELSE deviceCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('deviceCode')) or (colPickMode==1 and !item.containsKey('deviceCode'))">
when a.id=#{item.id} then #{item.deviceCode}
</if>
</foreach>
</trim>
<trim prefix="deviceName=(case" suffix="ELSE deviceName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('deviceName')) or (colPickMode==1 and !item.containsKey('deviceName'))">
when a.id=#{item.id} then #{item.deviceName}
</if>
</foreach>
</trim>
<trim prefix="messageHead=(case" suffix="ELSE messageHead end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('messageHead')) or (colPickMode==1 and !item.containsKey('messageHead'))">
when a.id=#{item.id} then #{item.messageHead}
</if>
</foreach>
</trim>
<trim prefix="logType=(case" suffix="ELSE logType end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('logType')) or (colPickMode==1 and !item.containsKey('logType'))">
when a.id=#{item.id} then #{item.logType}
</when>
<when test="(colPickMode==0 and item.containsKey('logTypeIncrement')) or (colPickMode==1 and !item.containsKey('logTypeIncrement'))">
when a.id=#{item.id} then ifnull(a.logType,0) + #{item.logTypeIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="content=(case" suffix="ELSE content end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('content')) or (colPickMode==1 and !item.containsKey('content'))">
when a.id=#{item.id} then #{item.content}
</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="DeviceLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_log as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_device_log as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_device_log where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_device_log as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="DeviceLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_log 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_device_log 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>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" 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('traceID')">
<if test="conditionParamRef.traceID != null and conditionParamRef.traceID != ''">
${_conditionType_} a.traceID like #{${_conditionParam_}.traceID}
</if>
<if test="conditionParamRef.traceID == null">
${_conditionType_} a.traceID is null
</if>
</if>
<if test="conditionParamRef.containsKey('traceIDList')">
${_conditionType_} a.traceID in
<foreach collection="conditionParamRef.traceIDList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceId')">
<if test="conditionParamRef.deviceId != null ">
${_conditionType_} a.deviceId = #{${_conditionParam_}.deviceId}
</if>
<if test="conditionParamRef.deviceId == null">
${_conditionType_} a.deviceId is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceIdList')">
${_conditionType_} a.deviceId in
<foreach collection="conditionParamRef.deviceIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceIdStart') and conditionParamRef.deviceIdStart != null">
${_conditionType_} a.deviceId <![CDATA[ >= ]]> #{${_conditionParam_}.deviceIdStart}
</if>
<if test="conditionParamRef.containsKey('deviceIdEnd') and conditionParamRef.deviceIdEnd != null">
${_conditionType_} a.deviceId <![CDATA[ <= ]]> #{${_conditionParam_}.deviceIdEnd}
</if>
<if test="conditionParamRef.containsKey('deviceCode')">
<if test="conditionParamRef.deviceCode != null and conditionParamRef.deviceCode != ''">
${_conditionType_} a.deviceCode like #{${_conditionParam_}.deviceCode}
</if>
<if test="conditionParamRef.deviceCode == null">
${_conditionType_} a.deviceCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceCodeList')">
${_conditionType_} a.deviceCode in
<foreach collection="conditionParamRef.deviceCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceName')">
<if test="conditionParamRef.deviceName != null and conditionParamRef.deviceName != ''">
${_conditionType_} a.deviceName like #{${_conditionParam_}.deviceName}
</if>
<if test="conditionParamRef.deviceName == null">
${_conditionType_} a.deviceName is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceNameList')">
${_conditionType_} a.deviceName in
<foreach collection="conditionParamRef.deviceNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('messageHead')">
<if test="conditionParamRef.messageHead != null and conditionParamRef.messageHead != ''">
${_conditionType_} a.messageHead like #{${_conditionParam_}.messageHead}
</if>
<if test="conditionParamRef.messageHead == null">
${_conditionType_} a.messageHead is null
</if>
</if>
<if test="conditionParamRef.containsKey('messageHeadList')">
${_conditionType_} a.messageHead in
<foreach collection="conditionParamRef.messageHeadList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('logType')">
<if test="conditionParamRef.logType != null ">
${_conditionType_} a.logType = #{${_conditionParam_}.logType}
</if>
<if test="conditionParamRef.logType == null">
${_conditionType_} a.logType is null
</if>
</if>
<if test="conditionParamRef.containsKey('logTypeList')">
${_conditionType_} a.logType in
<foreach collection="conditionParamRef.logTypeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('logTypeStart') and conditionParamRef.logTypeStart != null">
${_conditionType_} a.logType <![CDATA[ >= ]]> #{${_conditionParam_}.logTypeStart}
</if>
<if test="conditionParamRef.containsKey('logTypeEnd') and conditionParamRef.logTypeEnd != null">
${_conditionType_} a.logType <![CDATA[ <= ]]> #{${_conditionParam_}.logTypeEnd}
</if>
<if test="conditionParamRef.containsKey('content')">
<if test="conditionParamRef.content != null and conditionParamRef.content != ''">
${_conditionType_} a.content like #{${_conditionParam_}.content}
</if>
<if test="conditionParamRef.content == null">
${_conditionType_} a.content is null
</if>
</if>
<if test="conditionParamRef.containsKey('contentList')">
${_conditionType_} a.content in
<foreach collection="conditionParamRef.contentList" 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')">
${_conditionType_} a.createUserId in
<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')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" 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('traceID')">
a.traceID
<if test='orderCol.traceID != null and "DESC".equalsIgnoreCase(orderCol.traceID)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceId')">
a.deviceId
<if test='orderCol.deviceId != null and "DESC".equalsIgnoreCase(orderCol.deviceId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceCode')">
a.deviceCode
<if test='orderCol.deviceCode != null and "DESC".equalsIgnoreCase(orderCol.deviceCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceName')">
a.deviceName
<if test='orderCol.deviceName != null and "DESC".equalsIgnoreCase(orderCol.deviceName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('messageHead')">
a.messageHead
<if test='orderCol.messageHead != null and "DESC".equalsIgnoreCase(orderCol.messageHead)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('logType')">
a.logType
<if test='orderCol.logType != null and "DESC".equalsIgnoreCase(orderCol.logType)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('content')">
a.content
<if test='orderCol.content != null and "DESC".equalsIgnoreCase(orderCol.content)'>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
This source diff could not be displayed because it is too large. You can view the blob instead.
<?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.device.dao.ibatis.DeviceModuleDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="DeviceModuleEntity" id="DeviceModuleEntity-Map">
<id property="id" column="id" />
<result property="moduleName" column="moduleName" />
<result property="moduleMsgCode" column="moduleMsgCode" />
<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('moduleName') or colPickMode == 1 and data.containsKey('moduleName')))">
a.moduleName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('moduleMsgCode') or colPickMode == 1 and data.containsKey('moduleMsgCode')))">
a.moduleMsgCode,
</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="DeviceModuleEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_device_module
(moduleName,moduleMsgCode,createTime,updateUserId,updateTime)
VALUES
(#{moduleName},#{moduleMsgCode},#{createTime},#{updateUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_device_module
(moduleName,moduleMsgCode,createTime,updateUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.moduleName},#{item.moduleMsgCode},#{item.createTime},#{item.updateUserId},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_device_module as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('moduleName')) or (colPickMode==1 and !data.containsKey('moduleName'))">
a.moduleName=#{data.moduleName},
</if>
<if test="(colPickMode==0 and data.containsKey('moduleMsgCode')) or (colPickMode==1 and !data.containsKey('moduleMsgCode'))">
a.moduleMsgCode=#{data.moduleMsgCode},
</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_device_module as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="moduleName=(case" suffix="ELSE moduleName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('moduleName')) or (colPickMode==1 and !item.containsKey('moduleName'))">
when a.id=#{item.id} then #{item.moduleName}
</if>
</foreach>
</trim>
<trim prefix="moduleMsgCode=(case" suffix="ELSE moduleMsgCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('moduleMsgCode')) or (colPickMode==1 and !item.containsKey('moduleMsgCode'))">
when a.id=#{item.id} then #{item.moduleMsgCode}
</if>
</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="DeviceModuleEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_module as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_device_module as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_device_module where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_device_module as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="DeviceModuleEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_module 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_device_module 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>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" 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('moduleName')">
<if test="conditionParamRef.moduleName != null and conditionParamRef.moduleName != ''">
${_conditionType_} a.moduleName like #{${_conditionParam_}.moduleName}
</if>
<if test="conditionParamRef.moduleName == null">
${_conditionType_} a.moduleName is null
</if>
</if>
<if test="conditionParamRef.containsKey('moduleNameList')">
${_conditionType_} a.moduleName in
<foreach collection="conditionParamRef.moduleNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('moduleMsgCode')">
<if test="conditionParamRef.moduleMsgCode != null and conditionParamRef.moduleMsgCode != ''">
${_conditionType_} a.moduleMsgCode like #{${_conditionParam_}.moduleMsgCode}
</if>
<if test="conditionParamRef.moduleMsgCode == null">
${_conditionType_} a.moduleMsgCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('moduleMsgCodeList')">
${_conditionType_} a.moduleMsgCode in
<foreach collection="conditionParamRef.moduleMsgCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</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')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" 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('moduleName')">
a.moduleName
<if test='orderCol.moduleName != null and "DESC".equalsIgnoreCase(orderCol.moduleName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('moduleMsgCode')">
a.moduleMsgCode
<if test='orderCol.moduleMsgCode != null and "DESC".equalsIgnoreCase(orderCol.moduleMsgCode)'>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
<?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.device.dao.ibatis.DeviceModuleUseDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="DeviceModuleUseEntity" id="DeviceModuleUseEntity-Map">
<id property="id" column="id" />
<result property="moduleName" column="moduleName" />
<result property="moduleMsgCode" column="moduleMsgCode" />
<result property="deviceId" column="deviceId" />
<result property="useNum" column="useNum" />
<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('moduleName') or colPickMode == 1 and data.containsKey('moduleName')))">
a.moduleName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('moduleMsgCode') or colPickMode == 1 and data.containsKey('moduleMsgCode')))">
a.moduleMsgCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceId') or colPickMode == 1 and data.containsKey('deviceId')))">
a.deviceId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('useNum') or colPickMode == 1 and data.containsKey('useNum')))">
a.useNum,
</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="DeviceModuleUseEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_device_module_use
(moduleName,moduleMsgCode,deviceId,useNum,createTime,updateUserId,updateTime)
VALUES
(#{moduleName},#{moduleMsgCode},#{deviceId},#{useNum},#{createTime},#{updateUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_device_module_use
(moduleName,moduleMsgCode,deviceId,useNum,createTime,updateUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.moduleName},#{item.moduleMsgCode},#{item.deviceId},#{item.useNum},#{item.createTime},#{item.updateUserId},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_device_module_use as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('moduleName')) or (colPickMode==1 and !data.containsKey('moduleName'))">
a.moduleName=#{data.moduleName},
</if>
<if test="(colPickMode==0 and data.containsKey('moduleMsgCode')) or (colPickMode==1 and !data.containsKey('moduleMsgCode'))">
a.moduleMsgCode=#{data.moduleMsgCode},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceId')) or (colPickMode==1 and !data.containsKey('deviceId'))">
a.deviceId=#{data.deviceId},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceIdIncrement')) or (colPickMode==1 and !data.containsKey('deviceIdIncrement'))">
a.deviceId=ifnull(a.deviceId,0) + #{data.deviceIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('useNum')) or (colPickMode==1 and !data.containsKey('useNum'))">
a.useNum=#{data.useNum},
</if>
<if test="(colPickMode==0 and data.containsKey('useNumIncrement')) or (colPickMode==1 and !data.containsKey('useNumIncrement'))">
a.useNum=ifnull(a.useNum,0) + #{data.useNumIncrement},
</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_device_module_use as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="moduleName=(case" suffix="ELSE moduleName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('moduleName')) or (colPickMode==1 and !item.containsKey('moduleName'))">
when a.id=#{item.id} then #{item.moduleName}
</if>
</foreach>
</trim>
<trim prefix="moduleMsgCode=(case" suffix="ELSE moduleMsgCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('moduleMsgCode')) or (colPickMode==1 and !item.containsKey('moduleMsgCode'))">
when a.id=#{item.id} then #{item.moduleMsgCode}
</if>
</foreach>
</trim>
<trim prefix="deviceId=(case" suffix="ELSE deviceId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceId')) or (colPickMode==1 and !item.containsKey('deviceId'))">
when a.id=#{item.id} then #{item.deviceId}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceIdIncrement')) or (colPickMode==1 and !item.containsKey('deviceIdIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceId,0) + #{item.deviceIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="useNum=(case" suffix="ELSE useNum end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('useNum')) or (colPickMode==1 and !item.containsKey('useNum'))">
when a.id=#{item.id} then #{item.useNum}
</when>
<when test="(colPickMode==0 and item.containsKey('useNumIncrement')) or (colPickMode==1 and !item.containsKey('useNumIncrement'))">
when a.id=#{item.id} then ifnull(a.useNum,0) + #{item.useNumIncrement}
</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="DeviceModuleUseEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_module_use as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_device_module_use as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_device_module_use where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_device_module_use as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="DeviceModuleUseEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_module_use 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_device_module_use 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>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" 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('moduleName')">
<if test="conditionParamRef.moduleName != null and conditionParamRef.moduleName != ''">
${_conditionType_} a.moduleName like #{${_conditionParam_}.moduleName}
</if>
<if test="conditionParamRef.moduleName == null">
${_conditionType_} a.moduleName is null
</if>
</if>
<if test="conditionParamRef.containsKey('moduleNameList')">
${_conditionType_} a.moduleName in
<foreach collection="conditionParamRef.moduleNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('moduleMsgCode')">
<if test="conditionParamRef.moduleMsgCode != null and conditionParamRef.moduleMsgCode != ''">
${_conditionType_} a.moduleMsgCode like #{${_conditionParam_}.moduleMsgCode}
</if>
<if test="conditionParamRef.moduleMsgCode == null">
${_conditionType_} a.moduleMsgCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('moduleMsgCodeList')">
${_conditionType_} a.moduleMsgCode in
<foreach collection="conditionParamRef.moduleMsgCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceId')">
<if test="conditionParamRef.deviceId != null ">
${_conditionType_} a.deviceId = #{${_conditionParam_}.deviceId}
</if>
<if test="conditionParamRef.deviceId == null">
${_conditionType_} a.deviceId is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceIdList')">
${_conditionType_} a.deviceId in
<foreach collection="conditionParamRef.deviceIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceIdStart') and conditionParamRef.deviceIdStart != null">
${_conditionType_} a.deviceId <![CDATA[ >= ]]> #{${_conditionParam_}.deviceIdStart}
</if>
<if test="conditionParamRef.containsKey('deviceIdEnd') and conditionParamRef.deviceIdEnd != null">
${_conditionType_} a.deviceId <![CDATA[ <= ]]> #{${_conditionParam_}.deviceIdEnd}
</if>
<if test="conditionParamRef.containsKey('useNum')">
<if test="conditionParamRef.useNum != null ">
${_conditionType_} a.useNum = #{${_conditionParam_}.useNum}
</if>
<if test="conditionParamRef.useNum == null">
${_conditionType_} a.useNum is null
</if>
</if>
<if test="conditionParamRef.containsKey('useNumList')">
${_conditionType_} a.useNum in
<foreach collection="conditionParamRef.useNumList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('useNumStart') and conditionParamRef.useNumStart != null">
${_conditionType_} a.useNum <![CDATA[ >= ]]> #{${_conditionParam_}.useNumStart}
</if>
<if test="conditionParamRef.containsKey('useNumEnd') and conditionParamRef.useNumEnd != null">
${_conditionType_} a.useNum <![CDATA[ <= ]]> #{${_conditionParam_}.useNumEnd}
</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')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" 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('moduleName')">
a.moduleName
<if test='orderCol.moduleName != null and "DESC".equalsIgnoreCase(orderCol.moduleName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('moduleMsgCode')">
a.moduleMsgCode
<if test='orderCol.moduleMsgCode != null and "DESC".equalsIgnoreCase(orderCol.moduleMsgCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceId')">
a.deviceId
<if test='orderCol.deviceId != null and "DESC".equalsIgnoreCase(orderCol.deviceId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('useNum')">
a.useNum
<if test='orderCol.useNum != null and "DESC".equalsIgnoreCase(orderCol.useNum)'>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
<?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.device.dao.ibatis.DeviceStatDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="DeviceStatEntity" id="DeviceStatEntity-Map">
<id property="id" column="id" />
<result property="deviceTotalCount" column="deviceTotalCount" />
<result property="deviceAddCount" column="deviceAddCount" />
<result property="siteTotalCount" column="siteTotalCount" />
<result property="siteAddCount" column="siteAddCount" />
<result property="deviceOnlineCount" column="deviceOnlineCount" />
<result property="deviceOnlineRatio" column="deviceOnlineRatio" />
<result property="deviceOfflineCount" column="deviceOfflineCount" />
<result property="deviceOfflineRatio" column="deviceOfflineRatio" />
<result property="deviceStopCount" column="deviceStopCount" />
<result property="deviceStopRatio" column="deviceStopRatio" />
<result property="alarmTotalCount" column="alarmTotalCount" />
<result property="alarmAddCount" column="alarmAddCount" />
<result property="pushTotalCount" column="pushTotalCount" />
<result property="pushAddCount" column="pushAddCount" />
<result property="uploadMessageTotalCount" column="uploadMessageTotalCount" />
<result property="downloadMessageTotalCount" column="downloadMessageTotalCount" />
<result property="year" column="year" />
<result property="month" column="month" />
<result property="day" column="day" />
<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('deviceTotalCount') or colPickMode == 1 and data.containsKey('deviceTotalCount')))">
a.deviceTotalCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceAddCount') or colPickMode == 1 and data.containsKey('deviceAddCount')))">
a.deviceAddCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteTotalCount') or colPickMode == 1 and data.containsKey('siteTotalCount')))">
a.siteTotalCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteAddCount') or colPickMode == 1 and data.containsKey('siteAddCount')))">
a.siteAddCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceOnlineCount') or colPickMode == 1 and data.containsKey('deviceOnlineCount')))">
a.deviceOnlineCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceOnlineRatio') or colPickMode == 1 and data.containsKey('deviceOnlineRatio')))">
a.deviceOnlineRatio,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceOfflineCount') or colPickMode == 1 and data.containsKey('deviceOfflineCount')))">
a.deviceOfflineCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceOfflineRatio') or colPickMode == 1 and data.containsKey('deviceOfflineRatio')))">
a.deviceOfflineRatio,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceStopCount') or colPickMode == 1 and data.containsKey('deviceStopCount')))">
a.deviceStopCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceStopRatio') or colPickMode == 1 and data.containsKey('deviceStopRatio')))">
a.deviceStopRatio,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmTotalCount') or colPickMode == 1 and data.containsKey('alarmTotalCount')))">
a.alarmTotalCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmAddCount') or colPickMode == 1 and data.containsKey('alarmAddCount')))">
a.alarmAddCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('pushTotalCount') or colPickMode == 1 and data.containsKey('pushTotalCount')))">
a.pushTotalCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('pushAddCount') or colPickMode == 1 and data.containsKey('pushAddCount')))">
a.pushAddCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('uploadMessageTotalCount') or colPickMode == 1 and data.containsKey('uploadMessageTotalCount')))">
a.uploadMessageTotalCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('downloadMessageTotalCount') or colPickMode == 1 and data.containsKey('downloadMessageTotalCount')))">
a.downloadMessageTotalCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('year') or colPickMode == 1 and data.containsKey('year')))">
a.year,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('month') or colPickMode == 1 and data.containsKey('month')))">
a.month,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('day') or colPickMode == 1 and data.containsKey('day')))">
a.day,
</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="DeviceStatEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_device_stat
(deviceTotalCount,deviceAddCount,siteTotalCount,siteAddCount,deviceOnlineCount,deviceOnlineRatio,deviceOfflineCount,deviceOfflineRatio,deviceStopCount,deviceStopRatio,alarmTotalCount,alarmAddCount,pushTotalCount,pushAddCount,uploadMessageTotalCount,downloadMessageTotalCount,year,month,day,createTime,updateUserId,updateTime)
VALUES
(#{deviceTotalCount},#{deviceAddCount},#{siteTotalCount},#{siteAddCount},#{deviceOnlineCount},#{deviceOnlineRatio},#{deviceOfflineCount},#{deviceOfflineRatio},#{deviceStopCount},#{deviceStopRatio},#{alarmTotalCount},#{alarmAddCount},#{pushTotalCount},#{pushAddCount},#{uploadMessageTotalCount},#{downloadMessageTotalCount},#{year},#{month},#{day},#{createTime},#{updateUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_device_stat
(deviceTotalCount,deviceAddCount,siteTotalCount,siteAddCount,deviceOnlineCount,deviceOnlineRatio,deviceOfflineCount,deviceOfflineRatio,deviceStopCount,deviceStopRatio,alarmTotalCount,alarmAddCount,pushTotalCount,pushAddCount,uploadMessageTotalCount,downloadMessageTotalCount,year,month,day,createTime,updateUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.deviceTotalCount},#{item.deviceAddCount},#{item.siteTotalCount},#{item.siteAddCount},#{item.deviceOnlineCount},#{item.deviceOnlineRatio},#{item.deviceOfflineCount},#{item.deviceOfflineRatio},#{item.deviceStopCount},#{item.deviceStopRatio},#{item.alarmTotalCount},#{item.alarmAddCount},#{item.pushTotalCount},#{item.pushAddCount},#{item.uploadMessageTotalCount},#{item.downloadMessageTotalCount},#{item.year},#{item.month},#{item.day},#{item.createTime},#{item.updateUserId},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_device_stat as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('deviceTotalCount')) or (colPickMode==1 and !data.containsKey('deviceTotalCount'))">
a.deviceTotalCount=#{data.deviceTotalCount},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceTotalCountIncrement')) or (colPickMode==1 and !data.containsKey('deviceTotalCountIncrement'))">
a.deviceTotalCount=ifnull(a.deviceTotalCount,0) + #{data.deviceTotalCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceAddCount')) or (colPickMode==1 and !data.containsKey('deviceAddCount'))">
a.deviceAddCount=#{data.deviceAddCount},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceAddCountIncrement')) or (colPickMode==1 and !data.containsKey('deviceAddCountIncrement'))">
a.deviceAddCount=ifnull(a.deviceAddCount,0) + #{data.deviceAddCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('siteTotalCount')) or (colPickMode==1 and !data.containsKey('siteTotalCount'))">
a.siteTotalCount=#{data.siteTotalCount},
</if>
<if test="(colPickMode==0 and data.containsKey('siteTotalCountIncrement')) or (colPickMode==1 and !data.containsKey('siteTotalCountIncrement'))">
a.siteTotalCount=ifnull(a.siteTotalCount,0) + #{data.siteTotalCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('siteAddCount')) or (colPickMode==1 and !data.containsKey('siteAddCount'))">
a.siteAddCount=#{data.siteAddCount},
</if>
<if test="(colPickMode==0 and data.containsKey('siteAddCountIncrement')) or (colPickMode==1 and !data.containsKey('siteAddCountIncrement'))">
a.siteAddCount=ifnull(a.siteAddCount,0) + #{data.siteAddCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceOnlineCount')) or (colPickMode==1 and !data.containsKey('deviceOnlineCount'))">
a.deviceOnlineCount=#{data.deviceOnlineCount},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceOnlineCountIncrement')) or (colPickMode==1 and !data.containsKey('deviceOnlineCountIncrement'))">
a.deviceOnlineCount=ifnull(a.deviceOnlineCount,0) + #{data.deviceOnlineCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceOnlineRatio')) or (colPickMode==1 and !data.containsKey('deviceOnlineRatio'))">
a.deviceOnlineRatio=#{data.deviceOnlineRatio},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceOnlineRatioIncrement')) or (colPickMode==1 and !data.containsKey('deviceOnlineRatioIncrement'))">
a.deviceOnlineRatio=ifnull(a.deviceOnlineRatio,0) + #{data.deviceOnlineRatioIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceOfflineCount')) or (colPickMode==1 and !data.containsKey('deviceOfflineCount'))">
a.deviceOfflineCount=#{data.deviceOfflineCount},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceOfflineCountIncrement')) or (colPickMode==1 and !data.containsKey('deviceOfflineCountIncrement'))">
a.deviceOfflineCount=ifnull(a.deviceOfflineCount,0) + #{data.deviceOfflineCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceOfflineRatio')) or (colPickMode==1 and !data.containsKey('deviceOfflineRatio'))">
a.deviceOfflineRatio=#{data.deviceOfflineRatio},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceOfflineRatioIncrement')) or (colPickMode==1 and !data.containsKey('deviceOfflineRatioIncrement'))">
a.deviceOfflineRatio=ifnull(a.deviceOfflineRatio,0) + #{data.deviceOfflineRatioIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceStopCount')) or (colPickMode==1 and !data.containsKey('deviceStopCount'))">
a.deviceStopCount=#{data.deviceStopCount},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceStopCountIncrement')) or (colPickMode==1 and !data.containsKey('deviceStopCountIncrement'))">
a.deviceStopCount=ifnull(a.deviceStopCount,0) + #{data.deviceStopCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceStopRatio')) or (colPickMode==1 and !data.containsKey('deviceStopRatio'))">
a.deviceStopRatio=#{data.deviceStopRatio},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceStopRatioIncrement')) or (colPickMode==1 and !data.containsKey('deviceStopRatioIncrement'))">
a.deviceStopRatio=ifnull(a.deviceStopRatio,0) + #{data.deviceStopRatioIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmTotalCount')) or (colPickMode==1 and !data.containsKey('alarmTotalCount'))">
a.alarmTotalCount=#{data.alarmTotalCount},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmTotalCountIncrement')) or (colPickMode==1 and !data.containsKey('alarmTotalCountIncrement'))">
a.alarmTotalCount=ifnull(a.alarmTotalCount,0) + #{data.alarmTotalCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmAddCount')) or (colPickMode==1 and !data.containsKey('alarmAddCount'))">
a.alarmAddCount=#{data.alarmAddCount},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmAddCountIncrement')) or (colPickMode==1 and !data.containsKey('alarmAddCountIncrement'))">
a.alarmAddCount=ifnull(a.alarmAddCount,0) + #{data.alarmAddCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('pushTotalCount')) or (colPickMode==1 and !data.containsKey('pushTotalCount'))">
a.pushTotalCount=#{data.pushTotalCount},
</if>
<if test="(colPickMode==0 and data.containsKey('pushTotalCountIncrement')) or (colPickMode==1 and !data.containsKey('pushTotalCountIncrement'))">
a.pushTotalCount=ifnull(a.pushTotalCount,0) + #{data.pushTotalCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('pushAddCount')) or (colPickMode==1 and !data.containsKey('pushAddCount'))">
a.pushAddCount=#{data.pushAddCount},
</if>
<if test="(colPickMode==0 and data.containsKey('pushAddCountIncrement')) or (colPickMode==1 and !data.containsKey('pushAddCountIncrement'))">
a.pushAddCount=ifnull(a.pushAddCount,0) + #{data.pushAddCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('uploadMessageTotalCount')) or (colPickMode==1 and !data.containsKey('uploadMessageTotalCount'))">
a.uploadMessageTotalCount=#{data.uploadMessageTotalCount},
</if>
<if test="(colPickMode==0 and data.containsKey('uploadMessageTotalCountIncrement')) or (colPickMode==1 and !data.containsKey('uploadMessageTotalCountIncrement'))">
a.uploadMessageTotalCount=ifnull(a.uploadMessageTotalCount,0) + #{data.uploadMessageTotalCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('downloadMessageTotalCount')) or (colPickMode==1 and !data.containsKey('downloadMessageTotalCount'))">
a.downloadMessageTotalCount=#{data.downloadMessageTotalCount},
</if>
<if test="(colPickMode==0 and data.containsKey('downloadMessageTotalCountIncrement')) or (colPickMode==1 and !data.containsKey('downloadMessageTotalCountIncrement'))">
a.downloadMessageTotalCount=ifnull(a.downloadMessageTotalCount,0) + #{data.downloadMessageTotalCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('year')) or (colPickMode==1 and !data.containsKey('year'))">
a.year=#{data.year},
</if>
<if test="(colPickMode==0 and data.containsKey('yearIncrement')) or (colPickMode==1 and !data.containsKey('yearIncrement'))">
a.year=ifnull(a.year,0) + #{data.yearIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('month')) or (colPickMode==1 and !data.containsKey('month'))">
a.month=#{data.month},
</if>
<if test="(colPickMode==0 and data.containsKey('monthIncrement')) or (colPickMode==1 and !data.containsKey('monthIncrement'))">
a.month=ifnull(a.month,0) + #{data.monthIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('day')) or (colPickMode==1 and !data.containsKey('day'))">
a.day=#{data.day},
</if>
<if test="(colPickMode==0 and data.containsKey('dayIncrement')) or (colPickMode==1 and !data.containsKey('dayIncrement'))">
a.day=ifnull(a.day,0) + #{data.dayIncrement},
</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_device_stat as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="deviceTotalCount=(case" suffix="ELSE deviceTotalCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceTotalCount')) or (colPickMode==1 and !item.containsKey('deviceTotalCount'))">
when a.id=#{item.id} then #{item.deviceTotalCount}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceTotalCountIncrement')) or (colPickMode==1 and !item.containsKey('deviceTotalCountIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceTotalCount,0) + #{item.deviceTotalCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="deviceAddCount=(case" suffix="ELSE deviceAddCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceAddCount')) or (colPickMode==1 and !item.containsKey('deviceAddCount'))">
when a.id=#{item.id} then #{item.deviceAddCount}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceAddCountIncrement')) or (colPickMode==1 and !item.containsKey('deviceAddCountIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceAddCount,0) + #{item.deviceAddCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="siteTotalCount=(case" suffix="ELSE siteTotalCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('siteTotalCount')) or (colPickMode==1 and !item.containsKey('siteTotalCount'))">
when a.id=#{item.id} then #{item.siteTotalCount}
</when>
<when test="(colPickMode==0 and item.containsKey('siteTotalCountIncrement')) or (colPickMode==1 and !item.containsKey('siteTotalCountIncrement'))">
when a.id=#{item.id} then ifnull(a.siteTotalCount,0) + #{item.siteTotalCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="siteAddCount=(case" suffix="ELSE siteAddCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('siteAddCount')) or (colPickMode==1 and !item.containsKey('siteAddCount'))">
when a.id=#{item.id} then #{item.siteAddCount}
</when>
<when test="(colPickMode==0 and item.containsKey('siteAddCountIncrement')) or (colPickMode==1 and !item.containsKey('siteAddCountIncrement'))">
when a.id=#{item.id} then ifnull(a.siteAddCount,0) + #{item.siteAddCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="deviceOnlineCount=(case" suffix="ELSE deviceOnlineCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceOnlineCount')) or (colPickMode==1 and !item.containsKey('deviceOnlineCount'))">
when a.id=#{item.id} then #{item.deviceOnlineCount}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceOnlineCountIncrement')) or (colPickMode==1 and !item.containsKey('deviceOnlineCountIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceOnlineCount,0) + #{item.deviceOnlineCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="deviceOnlineRatio=(case" suffix="ELSE deviceOnlineRatio end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceOnlineRatio')) or (colPickMode==1 and !item.containsKey('deviceOnlineRatio'))">
when a.id=#{item.id} then #{item.deviceOnlineRatio}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceOnlineRatioIncrement')) or (colPickMode==1 and !item.containsKey('deviceOnlineRatioIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceOnlineRatio,0) + #{item.deviceOnlineRatioIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="deviceOfflineCount=(case" suffix="ELSE deviceOfflineCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceOfflineCount')) or (colPickMode==1 and !item.containsKey('deviceOfflineCount'))">
when a.id=#{item.id} then #{item.deviceOfflineCount}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceOfflineCountIncrement')) or (colPickMode==1 and !item.containsKey('deviceOfflineCountIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceOfflineCount,0) + #{item.deviceOfflineCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="deviceOfflineRatio=(case" suffix="ELSE deviceOfflineRatio end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceOfflineRatio')) or (colPickMode==1 and !item.containsKey('deviceOfflineRatio'))">
when a.id=#{item.id} then #{item.deviceOfflineRatio}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceOfflineRatioIncrement')) or (colPickMode==1 and !item.containsKey('deviceOfflineRatioIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceOfflineRatio,0) + #{item.deviceOfflineRatioIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="deviceStopCount=(case" suffix="ELSE deviceStopCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceStopCount')) or (colPickMode==1 and !item.containsKey('deviceStopCount'))">
when a.id=#{item.id} then #{item.deviceStopCount}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceStopCountIncrement')) or (colPickMode==1 and !item.containsKey('deviceStopCountIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceStopCount,0) + #{item.deviceStopCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="deviceStopRatio=(case" suffix="ELSE deviceStopRatio end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceStopRatio')) or (colPickMode==1 and !item.containsKey('deviceStopRatio'))">
when a.id=#{item.id} then #{item.deviceStopRatio}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceStopRatioIncrement')) or (colPickMode==1 and !item.containsKey('deviceStopRatioIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceStopRatio,0) + #{item.deviceStopRatioIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmTotalCount=(case" suffix="ELSE alarmTotalCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmTotalCount')) or (colPickMode==1 and !item.containsKey('alarmTotalCount'))">
when a.id=#{item.id} then #{item.alarmTotalCount}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmTotalCountIncrement')) or (colPickMode==1 and !item.containsKey('alarmTotalCountIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmTotalCount,0) + #{item.alarmTotalCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmAddCount=(case" suffix="ELSE alarmAddCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmAddCount')) or (colPickMode==1 and !item.containsKey('alarmAddCount'))">
when a.id=#{item.id} then #{item.alarmAddCount}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmAddCountIncrement')) or (colPickMode==1 and !item.containsKey('alarmAddCountIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmAddCount,0) + #{item.alarmAddCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="pushTotalCount=(case" suffix="ELSE pushTotalCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('pushTotalCount')) or (colPickMode==1 and !item.containsKey('pushTotalCount'))">
when a.id=#{item.id} then #{item.pushTotalCount}
</when>
<when test="(colPickMode==0 and item.containsKey('pushTotalCountIncrement')) or (colPickMode==1 and !item.containsKey('pushTotalCountIncrement'))">
when a.id=#{item.id} then ifnull(a.pushTotalCount,0) + #{item.pushTotalCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="pushAddCount=(case" suffix="ELSE pushAddCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('pushAddCount')) or (colPickMode==1 and !item.containsKey('pushAddCount'))">
when a.id=#{item.id} then #{item.pushAddCount}
</when>
<when test="(colPickMode==0 and item.containsKey('pushAddCountIncrement')) or (colPickMode==1 and !item.containsKey('pushAddCountIncrement'))">
when a.id=#{item.id} then ifnull(a.pushAddCount,0) + #{item.pushAddCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="uploadMessageTotalCount=(case" suffix="ELSE uploadMessageTotalCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('uploadMessageTotalCount')) or (colPickMode==1 and !item.containsKey('uploadMessageTotalCount'))">
when a.id=#{item.id} then #{item.uploadMessageTotalCount}
</when>
<when test="(colPickMode==0 and item.containsKey('uploadMessageTotalCountIncrement')) or (colPickMode==1 and !item.containsKey('uploadMessageTotalCountIncrement'))">
when a.id=#{item.id} then ifnull(a.uploadMessageTotalCount,0) + #{item.uploadMessageTotalCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="downloadMessageTotalCount=(case" suffix="ELSE downloadMessageTotalCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('downloadMessageTotalCount')) or (colPickMode==1 and !item.containsKey('downloadMessageTotalCount'))">
when a.id=#{item.id} then #{item.downloadMessageTotalCount}
</when>
<when test="(colPickMode==0 and item.containsKey('downloadMessageTotalCountIncrement')) or (colPickMode==1 and !item.containsKey('downloadMessageTotalCountIncrement'))">
when a.id=#{item.id} then ifnull(a.downloadMessageTotalCount,0) + #{item.downloadMessageTotalCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="year=(case" suffix="ELSE year end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('year')) or (colPickMode==1 and !item.containsKey('year'))">
when a.id=#{item.id} then #{item.year}
</when>
<when test="(colPickMode==0 and item.containsKey('yearIncrement')) or (colPickMode==1 and !item.containsKey('yearIncrement'))">
when a.id=#{item.id} then ifnull(a.year,0) + #{item.yearIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="month=(case" suffix="ELSE month end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('month')) or (colPickMode==1 and !item.containsKey('month'))">
when a.id=#{item.id} then #{item.month}
</when>
<when test="(colPickMode==0 and item.containsKey('monthIncrement')) or (colPickMode==1 and !item.containsKey('monthIncrement'))">
when a.id=#{item.id} then ifnull(a.month,0) + #{item.monthIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="day=(case" suffix="ELSE day end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('day')) or (colPickMode==1 and !item.containsKey('day'))">
when a.id=#{item.id} then #{item.day}
</when>
<when test="(colPickMode==0 and item.containsKey('dayIncrement')) or (colPickMode==1 and !item.containsKey('dayIncrement'))">
when a.id=#{item.id} then ifnull(a.day,0) + #{item.dayIncrement}
</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="DeviceStatEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_stat as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_device_stat as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_device_stat where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_device_stat as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="DeviceStatEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_stat 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_device_stat 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>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" 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('deviceTotalCount')">
<if test="conditionParamRef.deviceTotalCount != null ">
${_conditionType_} a.deviceTotalCount = #{${_conditionParam_}.deviceTotalCount}
</if>
<if test="conditionParamRef.deviceTotalCount == null">
${_conditionType_} a.deviceTotalCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceTotalCountList')">
${_conditionType_} a.deviceTotalCount in
<foreach collection="conditionParamRef.deviceTotalCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceTotalCountStart') and conditionParamRef.deviceTotalCountStart != null">
${_conditionType_} a.deviceTotalCount <![CDATA[ >= ]]> #{${_conditionParam_}.deviceTotalCountStart}
</if>
<if test="conditionParamRef.containsKey('deviceTotalCountEnd') and conditionParamRef.deviceTotalCountEnd != null">
${_conditionType_} a.deviceTotalCount <![CDATA[ <= ]]> #{${_conditionParam_}.deviceTotalCountEnd}
</if>
<if test="conditionParamRef.containsKey('deviceAddCount')">
<if test="conditionParamRef.deviceAddCount != null ">
${_conditionType_} a.deviceAddCount = #{${_conditionParam_}.deviceAddCount}
</if>
<if test="conditionParamRef.deviceAddCount == null">
${_conditionType_} a.deviceAddCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceAddCountList')">
${_conditionType_} a.deviceAddCount in
<foreach collection="conditionParamRef.deviceAddCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceAddCountStart') and conditionParamRef.deviceAddCountStart != null">
${_conditionType_} a.deviceAddCount <![CDATA[ >= ]]> #{${_conditionParam_}.deviceAddCountStart}
</if>
<if test="conditionParamRef.containsKey('deviceAddCountEnd') and conditionParamRef.deviceAddCountEnd != null">
${_conditionType_} a.deviceAddCount <![CDATA[ <= ]]> #{${_conditionParam_}.deviceAddCountEnd}
</if>
<if test="conditionParamRef.containsKey('siteTotalCount')">
<if test="conditionParamRef.siteTotalCount != null ">
${_conditionType_} a.siteTotalCount = #{${_conditionParam_}.siteTotalCount}
</if>
<if test="conditionParamRef.siteTotalCount == null">
${_conditionType_} a.siteTotalCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteTotalCountList')">
${_conditionType_} a.siteTotalCount in
<foreach collection="conditionParamRef.siteTotalCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteTotalCountStart') and conditionParamRef.siteTotalCountStart != null">
${_conditionType_} a.siteTotalCount <![CDATA[ >= ]]> #{${_conditionParam_}.siteTotalCountStart}
</if>
<if test="conditionParamRef.containsKey('siteTotalCountEnd') and conditionParamRef.siteTotalCountEnd != null">
${_conditionType_} a.siteTotalCount <![CDATA[ <= ]]> #{${_conditionParam_}.siteTotalCountEnd}
</if>
<if test="conditionParamRef.containsKey('siteAddCount')">
<if test="conditionParamRef.siteAddCount != null ">
${_conditionType_} a.siteAddCount = #{${_conditionParam_}.siteAddCount}
</if>
<if test="conditionParamRef.siteAddCount == null">
${_conditionType_} a.siteAddCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteAddCountList')">
${_conditionType_} a.siteAddCount in
<foreach collection="conditionParamRef.siteAddCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteAddCountStart') and conditionParamRef.siteAddCountStart != null">
${_conditionType_} a.siteAddCount <![CDATA[ >= ]]> #{${_conditionParam_}.siteAddCountStart}
</if>
<if test="conditionParamRef.containsKey('siteAddCountEnd') and conditionParamRef.siteAddCountEnd != null">
${_conditionType_} a.siteAddCount <![CDATA[ <= ]]> #{${_conditionParam_}.siteAddCountEnd}
</if>
<if test="conditionParamRef.containsKey('deviceOnlineCount')">
<if test="conditionParamRef.deviceOnlineCount != null ">
${_conditionType_} a.deviceOnlineCount = #{${_conditionParam_}.deviceOnlineCount}
</if>
<if test="conditionParamRef.deviceOnlineCount == null">
${_conditionType_} a.deviceOnlineCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceOnlineCountList')">
${_conditionType_} a.deviceOnlineCount in
<foreach collection="conditionParamRef.deviceOnlineCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceOnlineCountStart') and conditionParamRef.deviceOnlineCountStart != null">
${_conditionType_} a.deviceOnlineCount <![CDATA[ >= ]]> #{${_conditionParam_}.deviceOnlineCountStart}
</if>
<if test="conditionParamRef.containsKey('deviceOnlineCountEnd') and conditionParamRef.deviceOnlineCountEnd != null">
${_conditionType_} a.deviceOnlineCount <![CDATA[ <= ]]> #{${_conditionParam_}.deviceOnlineCountEnd}
</if>
<if test="conditionParamRef.containsKey('deviceOnlineRatio')">
<if test="conditionParamRef.deviceOnlineRatio != null ">
${_conditionType_} a.deviceOnlineRatio = #{${_conditionParam_}.deviceOnlineRatio}
</if>
<if test="conditionParamRef.deviceOnlineRatio == null">
${_conditionType_} a.deviceOnlineRatio is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceOnlineRatioList')">
${_conditionType_} a.deviceOnlineRatio in
<foreach collection="conditionParamRef.deviceOnlineRatioList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceOnlineRatioStart') and conditionParamRef.deviceOnlineRatioStart != null">
${_conditionType_} a.deviceOnlineRatio <![CDATA[ >= ]]> #{${_conditionParam_}.deviceOnlineRatioStart}
</if>
<if test="conditionParamRef.containsKey('deviceOnlineRatioEnd') and conditionParamRef.deviceOnlineRatioEnd != null">
${_conditionType_} a.deviceOnlineRatio <![CDATA[ <= ]]> #{${_conditionParam_}.deviceOnlineRatioEnd}
</if>
<if test="conditionParamRef.containsKey('deviceOfflineCount')">
<if test="conditionParamRef.deviceOfflineCount != null ">
${_conditionType_} a.deviceOfflineCount = #{${_conditionParam_}.deviceOfflineCount}
</if>
<if test="conditionParamRef.deviceOfflineCount == null">
${_conditionType_} a.deviceOfflineCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceOfflineCountList')">
${_conditionType_} a.deviceOfflineCount in
<foreach collection="conditionParamRef.deviceOfflineCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceOfflineCountStart') and conditionParamRef.deviceOfflineCountStart != null">
${_conditionType_} a.deviceOfflineCount <![CDATA[ >= ]]> #{${_conditionParam_}.deviceOfflineCountStart}
</if>
<if test="conditionParamRef.containsKey('deviceOfflineCountEnd') and conditionParamRef.deviceOfflineCountEnd != null">
${_conditionType_} a.deviceOfflineCount <![CDATA[ <= ]]> #{${_conditionParam_}.deviceOfflineCountEnd}
</if>
<if test="conditionParamRef.containsKey('deviceOfflineRatio')">
<if test="conditionParamRef.deviceOfflineRatio != null ">
${_conditionType_} a.deviceOfflineRatio = #{${_conditionParam_}.deviceOfflineRatio}
</if>
<if test="conditionParamRef.deviceOfflineRatio == null">
${_conditionType_} a.deviceOfflineRatio is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceOfflineRatioList')">
${_conditionType_} a.deviceOfflineRatio in
<foreach collection="conditionParamRef.deviceOfflineRatioList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceOfflineRatioStart') and conditionParamRef.deviceOfflineRatioStart != null">
${_conditionType_} a.deviceOfflineRatio <![CDATA[ >= ]]> #{${_conditionParam_}.deviceOfflineRatioStart}
</if>
<if test="conditionParamRef.containsKey('deviceOfflineRatioEnd') and conditionParamRef.deviceOfflineRatioEnd != null">
${_conditionType_} a.deviceOfflineRatio <![CDATA[ <= ]]> #{${_conditionParam_}.deviceOfflineRatioEnd}
</if>
<if test="conditionParamRef.containsKey('deviceStopCount')">
<if test="conditionParamRef.deviceStopCount != null ">
${_conditionType_} a.deviceStopCount = #{${_conditionParam_}.deviceStopCount}
</if>
<if test="conditionParamRef.deviceStopCount == null">
${_conditionType_} a.deviceStopCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceStopCountList')">
${_conditionType_} a.deviceStopCount in
<foreach collection="conditionParamRef.deviceStopCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceStopCountStart') and conditionParamRef.deviceStopCountStart != null">
${_conditionType_} a.deviceStopCount <![CDATA[ >= ]]> #{${_conditionParam_}.deviceStopCountStart}
</if>
<if test="conditionParamRef.containsKey('deviceStopCountEnd') and conditionParamRef.deviceStopCountEnd != null">
${_conditionType_} a.deviceStopCount <![CDATA[ <= ]]> #{${_conditionParam_}.deviceStopCountEnd}
</if>
<if test="conditionParamRef.containsKey('deviceStopRatio')">
<if test="conditionParamRef.deviceStopRatio != null ">
${_conditionType_} a.deviceStopRatio = #{${_conditionParam_}.deviceStopRatio}
</if>
<if test="conditionParamRef.deviceStopRatio == null">
${_conditionType_} a.deviceStopRatio is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceStopRatioList')">
${_conditionType_} a.deviceStopRatio in
<foreach collection="conditionParamRef.deviceStopRatioList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceStopRatioStart') and conditionParamRef.deviceStopRatioStart != null">
${_conditionType_} a.deviceStopRatio <![CDATA[ >= ]]> #{${_conditionParam_}.deviceStopRatioStart}
</if>
<if test="conditionParamRef.containsKey('deviceStopRatioEnd') and conditionParamRef.deviceStopRatioEnd != null">
${_conditionType_} a.deviceStopRatio <![CDATA[ <= ]]> #{${_conditionParam_}.deviceStopRatioEnd}
</if>
<if test="conditionParamRef.containsKey('alarmTotalCount')">
<if test="conditionParamRef.alarmTotalCount != null ">
${_conditionType_} a.alarmTotalCount = #{${_conditionParam_}.alarmTotalCount}
</if>
<if test="conditionParamRef.alarmTotalCount == null">
${_conditionType_} a.alarmTotalCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmTotalCountList')">
${_conditionType_} a.alarmTotalCount in
<foreach collection="conditionParamRef.alarmTotalCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmTotalCountStart') and conditionParamRef.alarmTotalCountStart != null">
${_conditionType_} a.alarmTotalCount <![CDATA[ >= ]]> #{${_conditionParam_}.alarmTotalCountStart}
</if>
<if test="conditionParamRef.containsKey('alarmTotalCountEnd') and conditionParamRef.alarmTotalCountEnd != null">
${_conditionType_} a.alarmTotalCount <![CDATA[ <= ]]> #{${_conditionParam_}.alarmTotalCountEnd}
</if>
<if test="conditionParamRef.containsKey('alarmAddCount')">
<if test="conditionParamRef.alarmAddCount != null ">
${_conditionType_} a.alarmAddCount = #{${_conditionParam_}.alarmAddCount}
</if>
<if test="conditionParamRef.alarmAddCount == null">
${_conditionType_} a.alarmAddCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmAddCountList')">
${_conditionType_} a.alarmAddCount in
<foreach collection="conditionParamRef.alarmAddCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmAddCountStart') and conditionParamRef.alarmAddCountStart != null">
${_conditionType_} a.alarmAddCount <![CDATA[ >= ]]> #{${_conditionParam_}.alarmAddCountStart}
</if>
<if test="conditionParamRef.containsKey('alarmAddCountEnd') and conditionParamRef.alarmAddCountEnd != null">
${_conditionType_} a.alarmAddCount <![CDATA[ <= ]]> #{${_conditionParam_}.alarmAddCountEnd}
</if>
<if test="conditionParamRef.containsKey('pushTotalCount')">
<if test="conditionParamRef.pushTotalCount != null ">
${_conditionType_} a.pushTotalCount = #{${_conditionParam_}.pushTotalCount}
</if>
<if test="conditionParamRef.pushTotalCount == null">
${_conditionType_} a.pushTotalCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('pushTotalCountList')">
${_conditionType_} a.pushTotalCount in
<foreach collection="conditionParamRef.pushTotalCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('pushTotalCountStart') and conditionParamRef.pushTotalCountStart != null">
${_conditionType_} a.pushTotalCount <![CDATA[ >= ]]> #{${_conditionParam_}.pushTotalCountStart}
</if>
<if test="conditionParamRef.containsKey('pushTotalCountEnd') and conditionParamRef.pushTotalCountEnd != null">
${_conditionType_} a.pushTotalCount <![CDATA[ <= ]]> #{${_conditionParam_}.pushTotalCountEnd}
</if>
<if test="conditionParamRef.containsKey('pushAddCount')">
<if test="conditionParamRef.pushAddCount != null ">
${_conditionType_} a.pushAddCount = #{${_conditionParam_}.pushAddCount}
</if>
<if test="conditionParamRef.pushAddCount == null">
${_conditionType_} a.pushAddCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('pushAddCountList')">
${_conditionType_} a.pushAddCount in
<foreach collection="conditionParamRef.pushAddCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('pushAddCountStart') and conditionParamRef.pushAddCountStart != null">
${_conditionType_} a.pushAddCount <![CDATA[ >= ]]> #{${_conditionParam_}.pushAddCountStart}
</if>
<if test="conditionParamRef.containsKey('pushAddCountEnd') and conditionParamRef.pushAddCountEnd != null">
${_conditionType_} a.pushAddCount <![CDATA[ <= ]]> #{${_conditionParam_}.pushAddCountEnd}
</if>
<if test="conditionParamRef.containsKey('uploadMessageTotalCount')">
<if test="conditionParamRef.uploadMessageTotalCount != null ">
${_conditionType_} a.uploadMessageTotalCount = #{${_conditionParam_}.uploadMessageTotalCount}
</if>
<if test="conditionParamRef.uploadMessageTotalCount == null">
${_conditionType_} a.uploadMessageTotalCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('uploadMessageTotalCountList')">
${_conditionType_} a.uploadMessageTotalCount in
<foreach collection="conditionParamRef.uploadMessageTotalCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('uploadMessageTotalCountStart') and conditionParamRef.uploadMessageTotalCountStart != null">
${_conditionType_} a.uploadMessageTotalCount <![CDATA[ >= ]]> #{${_conditionParam_}.uploadMessageTotalCountStart}
</if>
<if test="conditionParamRef.containsKey('uploadMessageTotalCountEnd') and conditionParamRef.uploadMessageTotalCountEnd != null">
${_conditionType_} a.uploadMessageTotalCount <![CDATA[ <= ]]> #{${_conditionParam_}.uploadMessageTotalCountEnd}
</if>
<if test="conditionParamRef.containsKey('downloadMessageTotalCount')">
<if test="conditionParamRef.downloadMessageTotalCount != null ">
${_conditionType_} a.downloadMessageTotalCount = #{${_conditionParam_}.downloadMessageTotalCount}
</if>
<if test="conditionParamRef.downloadMessageTotalCount == null">
${_conditionType_} a.downloadMessageTotalCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('downloadMessageTotalCountList')">
${_conditionType_} a.downloadMessageTotalCount in
<foreach collection="conditionParamRef.downloadMessageTotalCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('downloadMessageTotalCountStart') and conditionParamRef.downloadMessageTotalCountStart != null">
${_conditionType_} a.downloadMessageTotalCount <![CDATA[ >= ]]> #{${_conditionParam_}.downloadMessageTotalCountStart}
</if>
<if test="conditionParamRef.containsKey('downloadMessageTotalCountEnd') and conditionParamRef.downloadMessageTotalCountEnd != null">
${_conditionType_} a.downloadMessageTotalCount <![CDATA[ <= ]]> #{${_conditionParam_}.downloadMessageTotalCountEnd}
</if>
<if test="conditionParamRef.containsKey('year')">
<if test="conditionParamRef.year != null ">
${_conditionType_} a.year = #{${_conditionParam_}.year}
</if>
<if test="conditionParamRef.year == null">
${_conditionType_} a.year is null
</if>
</if>
<if test="conditionParamRef.containsKey('yearList')">
${_conditionType_} a.year in
<foreach collection="conditionParamRef.yearList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('yearStart') and conditionParamRef.yearStart != null">
${_conditionType_} a.year <![CDATA[ >= ]]> #{${_conditionParam_}.yearStart}
</if>
<if test="conditionParamRef.containsKey('yearEnd') and conditionParamRef.yearEnd != null">
${_conditionType_} a.year <![CDATA[ <= ]]> #{${_conditionParam_}.yearEnd}
</if>
<if test="conditionParamRef.containsKey('month')">
<if test="conditionParamRef.month != null ">
${_conditionType_} a.month = #{${_conditionParam_}.month}
</if>
<if test="conditionParamRef.month == null">
${_conditionType_} a.month is null
</if>
</if>
<if test="conditionParamRef.containsKey('monthList')">
${_conditionType_} a.month in
<foreach collection="conditionParamRef.monthList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('monthStart') and conditionParamRef.monthStart != null">
${_conditionType_} a.month <![CDATA[ >= ]]> #{${_conditionParam_}.monthStart}
</if>
<if test="conditionParamRef.containsKey('monthEnd') and conditionParamRef.monthEnd != null">
${_conditionType_} a.month <![CDATA[ <= ]]> #{${_conditionParam_}.monthEnd}
</if>
<if test="conditionParamRef.containsKey('day')">
<if test="conditionParamRef.day != null ">
${_conditionType_} a.day = #{${_conditionParam_}.day}
</if>
<if test="conditionParamRef.day == null">
${_conditionType_} a.day is null
</if>
</if>
<if test="conditionParamRef.containsKey('dayList')">
${_conditionType_} a.day in
<foreach collection="conditionParamRef.dayList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('dayStart') and conditionParamRef.dayStart != null">
${_conditionType_} a.day <![CDATA[ >= ]]> #{${_conditionParam_}.dayStart}
</if>
<if test="conditionParamRef.containsKey('dayEnd') and conditionParamRef.dayEnd != null">
${_conditionType_} a.day <![CDATA[ <= ]]> #{${_conditionParam_}.dayEnd}
</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')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" 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('deviceTotalCount')">
a.deviceTotalCount
<if test='orderCol.deviceTotalCount != null and "DESC".equalsIgnoreCase(orderCol.deviceTotalCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceAddCount')">
a.deviceAddCount
<if test='orderCol.deviceAddCount != null and "DESC".equalsIgnoreCase(orderCol.deviceAddCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteTotalCount')">
a.siteTotalCount
<if test='orderCol.siteTotalCount != null and "DESC".equalsIgnoreCase(orderCol.siteTotalCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteAddCount')">
a.siteAddCount
<if test='orderCol.siteAddCount != null and "DESC".equalsIgnoreCase(orderCol.siteAddCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceOnlineCount')">
a.deviceOnlineCount
<if test='orderCol.deviceOnlineCount != null and "DESC".equalsIgnoreCase(orderCol.deviceOnlineCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceOnlineRatio')">
a.deviceOnlineRatio
<if test='orderCol.deviceOnlineRatio != null and "DESC".equalsIgnoreCase(orderCol.deviceOnlineRatio)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceOfflineCount')">
a.deviceOfflineCount
<if test='orderCol.deviceOfflineCount != null and "DESC".equalsIgnoreCase(orderCol.deviceOfflineCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceOfflineRatio')">
a.deviceOfflineRatio
<if test='orderCol.deviceOfflineRatio != null and "DESC".equalsIgnoreCase(orderCol.deviceOfflineRatio)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceStopCount')">
a.deviceStopCount
<if test='orderCol.deviceStopCount != null and "DESC".equalsIgnoreCase(orderCol.deviceStopCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceStopRatio')">
a.deviceStopRatio
<if test='orderCol.deviceStopRatio != null and "DESC".equalsIgnoreCase(orderCol.deviceStopRatio)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmTotalCount')">
a.alarmTotalCount
<if test='orderCol.alarmTotalCount != null and "DESC".equalsIgnoreCase(orderCol.alarmTotalCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmAddCount')">
a.alarmAddCount
<if test='orderCol.alarmAddCount != null and "DESC".equalsIgnoreCase(orderCol.alarmAddCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('pushTotalCount')">
a.pushTotalCount
<if test='orderCol.pushTotalCount != null and "DESC".equalsIgnoreCase(orderCol.pushTotalCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('pushAddCount')">
a.pushAddCount
<if test='orderCol.pushAddCount != null and "DESC".equalsIgnoreCase(orderCol.pushAddCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('uploadMessageTotalCount')">
a.uploadMessageTotalCount
<if test='orderCol.uploadMessageTotalCount != null and "DESC".equalsIgnoreCase(orderCol.uploadMessageTotalCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('downloadMessageTotalCount')">
a.downloadMessageTotalCount
<if test='orderCol.downloadMessageTotalCount != null and "DESC".equalsIgnoreCase(orderCol.downloadMessageTotalCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('year')">
a.year
<if test='orderCol.year != null and "DESC".equalsIgnoreCase(orderCol.year)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('month')">
a.month
<if test='orderCol.month != null and "DESC".equalsIgnoreCase(orderCol.month)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('day')">
a.day
<if test='orderCol.day != null and "DESC".equalsIgnoreCase(orderCol.day)'>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
<?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.firm.dao.ibatis.FirmDaoImpl">
<mapper namespace="com.mortals.xhx.module.error.dao.ibatis.ErrorLogDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="FirmEntity" id="FirmEntity-Map">
<resultMap type="ErrorLogEntity" id="ErrorLogEntity-Map">
<id property="id" column="id" />
<result property="firmName" column="firmName" />
<result property="firmCode" column="firmCode" />
<result property="firmRemark" column="firmRemark" />
<result property="traceID" column="traceID" />
<result property="serverType" column="serverType" />
<result property="appName" column="appName" />
<result property="hostName" column="hostName" />
<result property="logLevel" column="logLevel" />
<result property="threadNo" column="threadNo" />
<result property="error" column="error" />
<result property="response" column="response" />
<result property="logTime" column="logTime" />
<result property="createUserId" column="createUserId" />
<result property="createTime" column="createTime" />
<result property="updateUserId" column="updateUserId" />
<result property="updateTime" column="updateTime" />
</resultMap>
<update id="createTable" parameterType="paramDto">
CREATE TABLE `${tableName}`(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`traceID` varchar(64) COMMENT '追踪Id',
`serverType` varchar(64) COMMENT '服务类型,webOS,android,IOS,服务后端',
`appName` varchar(64) COMMENT '应用名称',
`hostName` varchar(64) COMMENT '实例IP',
`logLevel` varchar(64) COMMENT '日志等级',
`threadNo` varchar(64) COMMENT '线程号',
`error` text COMMENT '异常堆栈信息',
`response` text COMMENT '响应结果',
`logTime` datetime COMMENT '日志产生时间',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='异常日志';
</update>
<!-- 表所有列 -->
<sql id="_columns">
......@@ -23,14 +44,32 @@
<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('firmName') or colPickMode == 1 and data.containsKey('firmName')))">
a.firmName,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('traceID') or colPickMode == 1 and data.containsKey('traceID')))">
a.traceID,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('serverType') or colPickMode == 1 and data.containsKey('serverType')))">
a.serverType,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appName') or colPickMode == 1 and data.containsKey('appName')))">
a.appName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('hostName') or colPickMode == 1 and data.containsKey('hostName')))">
a.hostName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('firmCode') or colPickMode == 1 and data.containsKey('firmCode')))">
a.firmCode,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('logLevel') or colPickMode == 1 and data.containsKey('logLevel')))">
a.logLevel,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('firmRemark') or colPickMode == 1 and data.containsKey('firmRemark')))">
a.firmRemark,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('threadNo') or colPickMode == 1 and data.containsKey('threadNo')))">
a.threadNo,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('error') or colPickMode == 1 and data.containsKey('error')))">
a.error,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('response') or colPickMode == 1 and data.containsKey('response')))">
a.response,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('logTime') or colPickMode == 1 and data.containsKey('logTime')))">
a.logTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
a.createUserId,
......@@ -38,46 +77,58 @@
<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="FirmEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_firm
(firmName,firmCode,firmRemark,createUserId,createTime,updateUserId,updateTime)
<insert id="insert" parameterType="ErrorLogEntity" useGeneratedKeys="true" keyProperty="id">
insert into `${tableName}`
(traceID,serverType,appName,hostName,logLevel,threadNo,error,response,logTime,createUserId,createTime)
VALUES
(#{firmName},#{firmCode},#{firmRemark},#{createUserId},#{createTime},#{updateUserId},#{updateTime})
(#{traceID},#{serverType},#{appName},#{hostName},#{logLevel},#{threadNo},#{error},#{response},#{logTime},#{createUserId},#{createTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_firm
(firmName,firmCode,firmRemark,createUserId,createTime,updateUserId,updateTime)
insert into `${tableName}`
(traceID,serverType,appName,hostName,logLevel,threadNo,error,response,logTime,createUserId,createTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.firmName},#{item.firmCode},#{item.firmRemark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime})
(#{item.traceID},#{item.serverType},#{item.appName},#{item.hostName},#{item.logLevel},#{item.threadNo},#{item.error},#{item.response},#{item.logTime},#{item.createUserId},#{item.createTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_firm as a
update `${tableName}` as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('firmName')) or (colPickMode==1 and !data.containsKey('firmName'))">
a.firmName=#{data.firmName},
<if test="(colPickMode==0 and data.containsKey('traceID')) or (colPickMode==1 and !data.containsKey('traceID'))">
a.traceID=#{data.traceID},
</if>
<if test="(colPickMode==0 and data.containsKey('serverType')) or (colPickMode==1 and !data.containsKey('serverType'))">
a.serverType=#{data.serverType},
</if>
<if test="(colPickMode==0 and data.containsKey('appName')) or (colPickMode==1 and !data.containsKey('appName'))">
a.appName=#{data.appName},
</if>
<if test="(colPickMode==0 and data.containsKey('hostName')) or (colPickMode==1 and !data.containsKey('hostName'))">
a.hostName=#{data.hostName},
</if>
<if test="(colPickMode==0 and data.containsKey('firmCode')) or (colPickMode==1 and !data.containsKey('firmCode'))">
a.firmCode=#{data.firmCode},
<if test="(colPickMode==0 and data.containsKey('logLevel')) or (colPickMode==1 and !data.containsKey('logLevel'))">
a.logLevel=#{data.logLevel},
</if>
<if test="(colPickMode==0 and data.containsKey('firmRemark')) or (colPickMode==1 and !data.containsKey('firmRemark'))">
a.firmRemark=#{data.firmRemark},
<if test="(colPickMode==0 and data.containsKey('threadNo')) or (colPickMode==1 and !data.containsKey('threadNo'))">
a.threadNo=#{data.threadNo},
</if>
<if test="(colPickMode==0 and data.containsKey('error')) or (colPickMode==1 and !data.containsKey('error'))">
a.error=#{data.error},
</if>
<if test="(colPickMode==0 and data.containsKey('response')) or (colPickMode==1 and !data.containsKey('response'))">
a.response=#{data.response},
</if>
<if test="(colPickMode==0 and data.containsKey('logTime')) or (colPickMode==1 and !data.containsKey('logTime'))">
a.logTime=#{data.logTime},
</if>
<if test="(colPickMode==0 and data.containsKey('createUserId')) or (colPickMode==1 and !data.containsKey('createUserId'))">
a.createUserId=#{data.createUserId},
......@@ -88,15 +139,6 @@
<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
......@@ -107,26 +149,68 @@
</update>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="paramDto">
update mortals_xhx_firm as a
update `${tableName}` as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="firmName=(case" suffix="ELSE firmName end),">
<trim prefix="traceID=(case" suffix="ELSE traceID end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('traceID')) or (colPickMode==1 and !item.containsKey('traceID'))">
when a.id=#{item.id} then #{item.traceID}
</if>
</foreach>
</trim>
<trim prefix="serverType=(case" suffix="ELSE serverType end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('serverType')) or (colPickMode==1 and !item.containsKey('serverType'))">
when a.id=#{item.id} then #{item.serverType}
</if>
</foreach>
</trim>
<trim prefix="appName=(case" suffix="ELSE appName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('appName')) or (colPickMode==1 and !item.containsKey('appName'))">
when a.id=#{item.id} then #{item.appName}
</if>
</foreach>
</trim>
<trim prefix="hostName=(case" suffix="ELSE hostName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('firmName')) or (colPickMode==1 and !item.containsKey('firmName'))">
when a.id=#{item.id} then #{item.firmName}
<if test="(colPickMode==0 and item.containsKey('hostName')) or (colPickMode==1 and !item.containsKey('hostName'))">
when a.id=#{item.id} then #{item.hostName}
</if>
</foreach>
</trim>
<trim prefix="firmCode=(case" suffix="ELSE firmCode end),">
<trim prefix="logLevel=(case" suffix="ELSE logLevel end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('firmCode')) or (colPickMode==1 and !item.containsKey('firmCode'))">
when a.id=#{item.id} then #{item.firmCode}
<if test="(colPickMode==0 and item.containsKey('logLevel')) or (colPickMode==1 and !item.containsKey('logLevel'))">
when a.id=#{item.id} then #{item.logLevel}
</if>
</foreach>
</trim>
<trim prefix="firmRemark=(case" suffix="ELSE firmRemark end),">
<trim prefix="threadNo=(case" suffix="ELSE threadNo end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('firmRemark')) or (colPickMode==1 and !item.containsKey('firmRemark'))">
when a.id=#{item.id} then #{item.firmRemark}
<if test="(colPickMode==0 and item.containsKey('threadNo')) or (colPickMode==1 and !item.containsKey('threadNo'))">
when a.id=#{item.id} then #{item.threadNo}
</if>
</foreach>
</trim>
<trim prefix="error=(case" suffix="ELSE error end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('error')) or (colPickMode==1 and !item.containsKey('error'))">
when a.id=#{item.id} then #{item.error}
</if>
</foreach>
</trim>
<trim prefix="response=(case" suffix="ELSE response end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('response')) or (colPickMode==1 and !item.containsKey('response'))">
when a.id=#{item.id} then #{item.response}
</if>
</foreach>
</trim>
<trim prefix="logTime=(case" suffix="ELSE logTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('logTime')) or (colPickMode==1 and !item.containsKey('logTime'))">
when a.id=#{item.id} then #{item.logTime}
</if>
</foreach>
</trim>
......@@ -149,25 +233,6 @@
</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=")">
......@@ -175,25 +240,25 @@
</foreach>
</update>
<!-- 根据主健查询 -->
<select id="getByKey" parameterType="paramDto" resultMap="FirmEntity-Map">
<select id="getByKey" parameterType="paramDto" resultMap="ErrorLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_firm as a
from `${tableName}` as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_firm as a where a.id=#{condition.id}
delete a.* from `${tableName}` as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_firm where id in
delete from `${tableName}` where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_firm as a
delete a.* from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -202,9 +267,9 @@
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="FirmEntity-Map">
<select id="getList" parameterType="paramDto" resultMap="ErrorLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_firm as a
from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -219,7 +284,7 @@
<!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int">
select count(1)
from mortals_xhx_firm as a
from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -291,50 +356,140 @@
</if>
<if test="conditionParamRef.containsKey('firmName')">
<if test="conditionParamRef.firmName != null and conditionParamRef.firmName != ''">
${_conditionType_} a.firmName like #{${_conditionParam_}.firmName}
<if test="conditionParamRef.containsKey('traceID')">
<if test="conditionParamRef.traceID != null and conditionParamRef.traceID != ''">
${_conditionType_} a.traceID like #{${_conditionParam_}.traceID}
</if>
<if test="conditionParamRef.firmName == null">
${_conditionType_} a.firmName is null
<if test="conditionParamRef.traceID == null">
${_conditionType_} a.traceID is null
</if>
</if>
<if test="conditionParamRef.containsKey('firmNameList')">
${_conditionType_} a.firmName in
<foreach collection="conditionParamRef.firmNameList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('traceIDList')">
${_conditionType_} a.traceID in
<foreach collection="conditionParamRef.traceIDList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('firmCode')">
<if test="conditionParamRef.firmCode != null and conditionParamRef.firmCode != ''">
${_conditionType_} a.firmCode like #{${_conditionParam_}.firmCode}
<if test="conditionParamRef.containsKey('serverType')">
<if test="conditionParamRef.serverType != null and conditionParamRef.serverType != ''">
${_conditionType_} a.serverType like #{${_conditionParam_}.serverType}
</if>
<if test="conditionParamRef.firmCode == null">
${_conditionType_} a.firmCode is null
<if test="conditionParamRef.serverType == null">
${_conditionType_} a.serverType is null
</if>
</if>
<if test="conditionParamRef.containsKey('firmCodeList')">
${_conditionType_} a.firmCode in
<foreach collection="conditionParamRef.firmCodeList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('serverTypeList')">
${_conditionType_} a.serverType in
<foreach collection="conditionParamRef.serverTypeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('firmRemark')">
<if test="conditionParamRef.firmRemark != null and conditionParamRef.firmRemark != ''">
${_conditionType_} a.firmRemark like #{${_conditionParam_}.firmRemark}
<if test="conditionParamRef.containsKey('appName')">
<if test="conditionParamRef.appName != null and conditionParamRef.appName != ''">
${_conditionType_} a.appName like #{${_conditionParam_}.appName}
</if>
<if test="conditionParamRef.firmRemark == null">
${_conditionType_} a.firmRemark is null
<if test="conditionParamRef.appName == null">
${_conditionType_} a.appName is null
</if>
</if>
<if test="conditionParamRef.containsKey('firmRemarkList')">
${_conditionType_} a.firmRemark in
<foreach collection="conditionParamRef.firmRemarkList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('appNameList')">
${_conditionType_} a.appName in
<foreach collection="conditionParamRef.appNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('hostName')">
<if test="conditionParamRef.hostName != null and conditionParamRef.hostName != ''">
${_conditionType_} a.hostName like #{${_conditionParam_}.hostName}
</if>
<if test="conditionParamRef.hostName == null">
${_conditionType_} a.hostName is null
</if>
</if>
<if test="conditionParamRef.containsKey('hostNameList')">
${_conditionType_} a.hostName in
<foreach collection="conditionParamRef.hostNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('logLevel')">
<if test="conditionParamRef.logLevel != null and conditionParamRef.logLevel != ''">
${_conditionType_} a.logLevel like #{${_conditionParam_}.logLevel}
</if>
<if test="conditionParamRef.logLevel == null">
${_conditionType_} a.logLevel is null
</if>
</if>
<if test="conditionParamRef.containsKey('logLevelList')">
${_conditionType_} a.logLevel in
<foreach collection="conditionParamRef.logLevelList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('threadNo')">
<if test="conditionParamRef.threadNo != null and conditionParamRef.threadNo != ''">
${_conditionType_} a.threadNo like #{${_conditionParam_}.threadNo}
</if>
<if test="conditionParamRef.threadNo == null">
${_conditionType_} a.threadNo is null
</if>
</if>
<if test="conditionParamRef.containsKey('threadNoList')">
${_conditionType_} a.threadNo in
<foreach collection="conditionParamRef.threadNoList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('error')">
<if test="conditionParamRef.error != null and conditionParamRef.error != ''">
${_conditionType_} a.error like #{${_conditionParam_}.error}
</if>
<if test="conditionParamRef.error == null">
${_conditionType_} a.error is null
</if>
</if>
<if test="conditionParamRef.containsKey('errorList')">
${_conditionType_} a.error in
<foreach collection="conditionParamRef.errorList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('response')">
<if test="conditionParamRef.response != null and conditionParamRef.response != ''">
${_conditionType_} a.response like #{${_conditionParam_}.response}
</if>
<if test="conditionParamRef.response == null">
${_conditionType_} a.response is null
</if>
</if>
<if test="conditionParamRef.containsKey('responseList')">
${_conditionType_} a.response in
<foreach collection="conditionParamRef.responseList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('logTime')">
<if test="conditionParamRef.logTime != null ">
${_conditionType_} a.logTime = #{${_conditionParam_}.logTime}
</if>
<if test="conditionParamRef.logTime == null">
${_conditionType_} a.logTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('logTimeStart') and conditionParamRef.logTimeStart != null and conditionParamRef.logTimeStart!=''">
${_conditionType_} a.logTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.logTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('logTimeEnd') and conditionParamRef.logTimeEnd != null and conditionParamRef.logTimeEnd!=''">
${_conditionType_} a.logTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.logTimeEnd},' 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}
......@@ -371,42 +526,6 @@
<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')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" 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()">
......@@ -425,19 +544,49 @@
<if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('firmName')">
a.firmName
<if test='orderCol.firmName != null and "DESC".equalsIgnoreCase(orderCol.firmName)'>DESC</if>
<if test="orderCol.containsKey('traceID')">
a.traceID
<if test='orderCol.traceID != null and "DESC".equalsIgnoreCase(orderCol.traceID)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('firmCode')">
a.firmCode
<if test='orderCol.firmCode != null and "DESC".equalsIgnoreCase(orderCol.firmCode)'>DESC</if>
<if test="orderCol.containsKey('serverType')">
a.serverType
<if test='orderCol.serverType != null and "DESC".equalsIgnoreCase(orderCol.serverType)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('firmRemark')">
a.firmRemark
<if test='orderCol.firmRemark != null and "DESC".equalsIgnoreCase(orderCol.firmRemark)'>DESC</if>
<if test="orderCol.containsKey('appName')">
a.appName
<if test='orderCol.appName != null and "DESC".equalsIgnoreCase(orderCol.appName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('hostName')">
a.hostName
<if test='orderCol.hostName != null and "DESC".equalsIgnoreCase(orderCol.hostName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('logLevel')">
a.logLevel
<if test='orderCol.logLevel != null and "DESC".equalsIgnoreCase(orderCol.logLevel)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('threadNo')">
a.threadNo
<if test='orderCol.threadNo != null and "DESC".equalsIgnoreCase(orderCol.threadNo)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('error')">
a.error
<if test='orderCol.error != null and "DESC".equalsIgnoreCase(orderCol.error)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('response')">
a.response
<if test='orderCol.response != null and "DESC".equalsIgnoreCase(orderCol.response)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('logTime')">
a.logTime
<if test='orderCol.logTime != null and "DESC".equalsIgnoreCase(orderCol.logTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createUserId')">
......@@ -450,16 +599,6 @@
<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>
......
<?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.platform.dao.ibatis.PlatformDaoImpl">
<mapper namespace="com.mortals.xhx.module.operate.dao.ibatis.OperateLogDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="PlatformEntity" id="PlatformEntity-Map">
<resultMap type="OperateLogEntity" id="OperateLogEntity-Map">
<id property="id" column="id" />
<result property="platformName" column="platformName" />
<result property="platformSn" column="platformSn" />
<result property="sendMsgType" column="sendMsgType" />
<result property="sendUrl" column="sendUrl" />
<result property="callbackUrl" column="callbackUrl" />
<result property="sendSwitch" column="sendSwitch" />
<result property="homeUrl" column="homeUrl" />
<result property="platformRemark" column="platformRemark" />
<result property="platformMark" column="platformMark" />
<result property="userId" column="userId" />
<result property="userName" column="userName" />
<result property="loginName" column="loginName" />
<result property="requestUrl" column="requestUrl" />
<result property="content" column="content" />
<result property="ip" column="ip" />
<result property="logDate" column="logDate" />
<result property="operType" column="operType" />
<result property="createUserId" column="createUserId" />
<result property="createTime" column="createTime" />
<result property="updateUserId" column="updateUserId" />
<result property="updateTime" column="updateTime" />
</resultMap>
<update id="createTable" parameterType="paramDto">
CREATE TABLE `${tableName}`(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`platformMark` varchar(50) COMMENT '平台标识',
`userId` bigint(20) COMMENT '用户id',
`userName` varchar(50) COMMENT '用户名称',
`loginName` varchar(50) COMMENT '用户登录名',
`requestUrl` varchar(200) COMMENT '请求地址',
`content` varchar(2000) COMMENT '操作内容,记录操作具体信息,如修改前修改或的数据',
`ip` varchar(30) COMMENT '操作IP地址',
`logDate` datetime COMMENT '操作时间',
`operType` tinyint(2) COMMENT '操作类型,0:新增,1:修改,2:删除',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='平台用户操作日志业务';
</update>
<!-- 表所有列 -->
<sql id="_columns">
......@@ -28,29 +44,32 @@
<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('platformName') or colPickMode == 1 and data.containsKey('platformName')))">
a.platformName,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('platformMark') or colPickMode == 1 and data.containsKey('platformMark')))">
a.platformMark,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('userId') or colPickMode == 1 and data.containsKey('userId')))">
a.userId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('platformSn') or colPickMode == 1 and data.containsKey('platformSn')))">
a.platformSn,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('userName') or colPickMode == 1 and data.containsKey('userName')))">
a.userName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sendMsgType') or colPickMode == 1 and data.containsKey('sendMsgType')))">
a.sendMsgType,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginName') or colPickMode == 1 and data.containsKey('loginName')))">
a.loginName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sendUrl') or colPickMode == 1 and data.containsKey('sendUrl')))">
a.sendUrl,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('requestUrl') or colPickMode == 1 and data.containsKey('requestUrl')))">
a.requestUrl,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('callbackUrl') or colPickMode == 1 and data.containsKey('callbackUrl')))">
a.callbackUrl,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('content') or colPickMode == 1 and data.containsKey('content')))">
a.content,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sendSwitch') or colPickMode == 1 and data.containsKey('sendSwitch')))">
a.sendSwitch,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('ip') or colPickMode == 1 and data.containsKey('ip')))">
a.ip,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('homeUrl') or colPickMode == 1 and data.containsKey('homeUrl')))">
a.homeUrl,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('logDate') or colPickMode == 1 and data.containsKey('logDate')))">
a.logDate,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('platformRemark') or colPickMode == 1 and data.containsKey('platformRemark')))">
a.platformRemark,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('operType') or colPickMode == 1 and data.containsKey('operType')))">
a.operType,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
a.createUserId,
......@@ -58,67 +77,64 @@
<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="PlatformEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_platform
(platformName,platformSn,sendMsgType,sendUrl,callbackUrl,sendSwitch,homeUrl,platformRemark,createUserId,createTime,updateUserId,updateTime)
<insert id="insert" parameterType="OperateLogEntity" useGeneratedKeys="true" keyProperty="id">
insert into `${tableName}`
(platformMark,userId,userName,loginName,requestUrl,content,ip,logDate,operType,createUserId,createTime)
VALUES
(#{platformName},#{platformSn},#{sendMsgType},#{sendUrl},#{callbackUrl},#{sendSwitch},#{homeUrl},#{platformRemark},#{createUserId},#{createTime},#{updateUserId},#{updateTime})
(#{platformMark},#{userId},#{userName},#{loginName},#{requestUrl},#{content},#{ip},#{logDate},#{operType},#{createUserId},#{createTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_platform
(platformName,platformSn,sendMsgType,sendUrl,callbackUrl,sendSwitch,homeUrl,platformRemark,createUserId,createTime,updateUserId,updateTime)
insert into `${tableName}`
(platformMark,userId,userName,loginName,requestUrl,content,ip,logDate,operType,createUserId,createTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.platformName},#{item.platformSn},#{item.sendMsgType},#{item.sendUrl},#{item.callbackUrl},#{item.sendSwitch},#{item.homeUrl},#{item.platformRemark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime})
(#{item.platformMark},#{item.userId},#{item.userName},#{item.loginName},#{item.requestUrl},#{item.content},#{item.ip},#{item.logDate},#{item.operType},#{item.createUserId},#{item.createTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_platform as a
update `${tableName}` as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('platformName')) or (colPickMode==1 and !data.containsKey('platformName'))">
a.platformName=#{data.platformName},
<if test="(colPickMode==0 and data.containsKey('platformMark')) or (colPickMode==1 and !data.containsKey('platformMark'))">
a.platformMark=#{data.platformMark},
</if>
<if test="(colPickMode==0 and data.containsKey('userId')) or (colPickMode==1 and !data.containsKey('userId'))">
a.userId=#{data.userId},
</if>
<if test="(colPickMode==0 and data.containsKey('platformSn')) or (colPickMode==1 and !data.containsKey('platformSn'))">
a.platformSn=#{data.platformSn},
<if test="(colPickMode==0 and data.containsKey('userIdIncrement')) or (colPickMode==1 and !data.containsKey('userIdIncrement'))">
a.userId=ifnull(a.userId,0) + #{data.userIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('sendMsgType')) or (colPickMode==1 and !data.containsKey('sendMsgType'))">
a.sendMsgType=#{data.sendMsgType},
<if test="(colPickMode==0 and data.containsKey('userName')) or (colPickMode==1 and !data.containsKey('userName'))">
a.userName=#{data.userName},
</if>
<if test="(colPickMode==0 and data.containsKey('sendMsgTypeIncrement')) or (colPickMode==1 and !data.containsKey('sendMsgTypeIncrement'))">
a.sendMsgType=ifnull(a.sendMsgType,0) + #{data.sendMsgTypeIncrement},
<if test="(colPickMode==0 and data.containsKey('loginName')) or (colPickMode==1 and !data.containsKey('loginName'))">
a.loginName=#{data.loginName},
</if>
<if test="(colPickMode==0 and data.containsKey('sendUrl')) or (colPickMode==1 and !data.containsKey('sendUrl'))">
a.sendUrl=#{data.sendUrl},
<if test="(colPickMode==0 and data.containsKey('requestUrl')) or (colPickMode==1 and !data.containsKey('requestUrl'))">
a.requestUrl=#{data.requestUrl},
</if>
<if test="(colPickMode==0 and data.containsKey('callbackUrl')) or (colPickMode==1 and !data.containsKey('callbackUrl'))">
a.callbackUrl=#{data.callbackUrl},
<if test="(colPickMode==0 and data.containsKey('content')) or (colPickMode==1 and !data.containsKey('content'))">
a.content=#{data.content},
</if>
<if test="(colPickMode==0 and data.containsKey('sendSwitch')) or (colPickMode==1 and !data.containsKey('sendSwitch'))">
a.sendSwitch=#{data.sendSwitch},
<if test="(colPickMode==0 and data.containsKey('ip')) or (colPickMode==1 and !data.containsKey('ip'))">
a.ip=#{data.ip},
</if>
<if test="(colPickMode==0 and data.containsKey('sendSwitchIncrement')) or (colPickMode==1 and !data.containsKey('sendSwitchIncrement'))">
a.sendSwitch=ifnull(a.sendSwitch,0) + #{data.sendSwitchIncrement},
<if test="(colPickMode==0 and data.containsKey('logDate')) or (colPickMode==1 and !data.containsKey('logDate'))">
a.logDate=#{data.logDate},
</if>
<if test="(colPickMode==0 and data.containsKey('homeUrl')) or (colPickMode==1 and !data.containsKey('homeUrl'))">
a.homeUrl=#{data.homeUrl},
<if test="(colPickMode==0 and data.containsKey('operType')) or (colPickMode==1 and !data.containsKey('operType'))">
a.operType=#{data.operType},
</if>
<if test="(colPickMode==0 and data.containsKey('platformRemark')) or (colPickMode==1 and !data.containsKey('platformRemark'))">
a.platformRemark=#{data.platformRemark},
<if test="(colPickMode==0 and data.containsKey('operTypeIncrement')) or (colPickMode==1 and !data.containsKey('operTypeIncrement'))">
a.operType=ifnull(a.operType,0) + #{data.operTypeIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('createUserId')) or (colPickMode==1 and !data.containsKey('createUserId'))">
a.createUserId=#{data.createUserId},
......@@ -129,15 +145,6 @@
<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
......@@ -148,74 +155,81 @@
</update>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="paramDto">
update mortals_xhx_platform as a
update `${tableName}` as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="platformName=(case" suffix="ELSE platformName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('platformName')) or (colPickMode==1 and !item.containsKey('platformName'))">
when a.id=#{item.id} then #{item.platformName}
</if>
</foreach>
</trim>
<trim prefix="platformSn=(case" suffix="ELSE platformSn end),">
<trim prefix="platformMark=(case" suffix="ELSE platformMark end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('platformSn')) or (colPickMode==1 and !item.containsKey('platformSn'))">
when a.id=#{item.id} then #{item.platformSn}
<if test="(colPickMode==0 and item.containsKey('platformMark')) or (colPickMode==1 and !item.containsKey('platformMark'))">
when a.id=#{item.id} then #{item.platformMark}
</if>
</foreach>
</trim>
<trim prefix="sendMsgType=(case" suffix="ELSE sendMsgType end),">
<trim prefix="userId=(case" suffix="ELSE userId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('sendMsgType')) or (colPickMode==1 and !item.containsKey('sendMsgType'))">
when a.id=#{item.id} then #{item.sendMsgType}
<when test="(colPickMode==0 and item.containsKey('userId')) or (colPickMode==1 and !item.containsKey('userId'))">
when a.id=#{item.id} then #{item.userId}
</when>
<when test="(colPickMode==0 and item.containsKey('sendMsgTypeIncrement')) or (colPickMode==1 and !item.containsKey('sendMsgTypeIncrement'))">
when a.id=#{item.id} then ifnull(a.sendMsgType,0) + #{item.sendMsgTypeIncrement}
<when test="(colPickMode==0 and item.containsKey('userIdIncrement')) or (colPickMode==1 and !item.containsKey('userIdIncrement'))">
when a.id=#{item.id} then ifnull(a.userId,0) + #{item.userIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="sendUrl=(case" suffix="ELSE sendUrl end),">
<trim prefix="userName=(case" suffix="ELSE userName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('sendUrl')) or (colPickMode==1 and !item.containsKey('sendUrl'))">
when a.id=#{item.id} then #{item.sendUrl}
<if test="(colPickMode==0 and item.containsKey('userName')) or (colPickMode==1 and !item.containsKey('userName'))">
when a.id=#{item.id} then #{item.userName}
</if>
</foreach>
</trim>
<trim prefix="callbackUrl=(case" suffix="ELSE callbackUrl end),">
<trim prefix="loginName=(case" suffix="ELSE loginName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('callbackUrl')) or (colPickMode==1 and !item.containsKey('callbackUrl'))">
when a.id=#{item.id} then #{item.callbackUrl}
<if test="(colPickMode==0 and item.containsKey('loginName')) or (colPickMode==1 and !item.containsKey('loginName'))">
when a.id=#{item.id} then #{item.loginName}
</if>
</foreach>
</trim>
<trim prefix="sendSwitch=(case" suffix="ELSE sendSwitch end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('sendSwitch')) or (colPickMode==1 and !item.containsKey('sendSwitch'))">
when a.id=#{item.id} then #{item.sendSwitch}
</when>
<when test="(colPickMode==0 and item.containsKey('sendSwitchIncrement')) or (colPickMode==1 and !item.containsKey('sendSwitchIncrement'))">
when a.id=#{item.id} then ifnull(a.sendSwitch,0) + #{item.sendSwitchIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="homeUrl=(case" suffix="ELSE homeUrl end),">
<trim prefix="requestUrl=(case" suffix="ELSE requestUrl end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('homeUrl')) or (colPickMode==1 and !item.containsKey('homeUrl'))">
when a.id=#{item.id} then #{item.homeUrl}
<if test="(colPickMode==0 and item.containsKey('requestUrl')) or (colPickMode==1 and !item.containsKey('requestUrl'))">
when a.id=#{item.id} then #{item.requestUrl}
</if>
</foreach>
</trim>
<trim prefix="platformRemark=(case" suffix="ELSE platformRemark end),">
<trim prefix="content=(case" suffix="ELSE content end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('platformRemark')) or (colPickMode==1 and !item.containsKey('platformRemark'))">
when a.id=#{item.id} then #{item.platformRemark}
<if test="(colPickMode==0 and item.containsKey('content')) or (colPickMode==1 and !item.containsKey('content'))">
when a.id=#{item.id} then #{item.content}
</if>
</foreach>
</trim>
<trim prefix="ip=(case" suffix="ELSE ip end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('ip')) or (colPickMode==1 and !item.containsKey('ip'))">
when a.id=#{item.id} then #{item.ip}
</if>
</foreach>
</trim>
<trim prefix="logDate=(case" suffix="ELSE logDate end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('logDate')) or (colPickMode==1 and !item.containsKey('logDate'))">
when a.id=#{item.id} then #{item.logDate}
</if>
</foreach>
</trim>
<trim prefix="operType=(case" suffix="ELSE operType end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('operType')) or (colPickMode==1 and !item.containsKey('operType'))">
when a.id=#{item.id} then #{item.operType}
</when>
<when test="(colPickMode==0 and item.containsKey('operTypeIncrement')) or (colPickMode==1 and !item.containsKey('operTypeIncrement'))">
when a.id=#{item.id} then ifnull(a.operType,0) + #{item.operTypeIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="createUserId=(case" suffix="ELSE createUserId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
......@@ -235,25 +249,6 @@
</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=")">
......@@ -261,25 +256,25 @@
</foreach>
</update>
<!-- 根据主健查询 -->
<select id="getByKey" parameterType="paramDto" resultMap="PlatformEntity-Map">
<select id="getByKey" parameterType="paramDto" resultMap="OperateLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_platform as a
from `${tableName}` as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_platform as a where a.id=#{condition.id}
delete a.* from `${tableName}` as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_platform where id in
delete from `${tableName}` where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_platform as a
delete a.* from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -288,9 +283,9 @@
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="PlatformEntity-Map">
<select id="getList" parameterType="paramDto" resultMap="OperateLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_platform as a
from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -305,7 +300,7 @@
<!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int">
select count(1)
from mortals_xhx_platform as a
from `${tableName}` as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -377,137 +372,152 @@
</if>
<if test="conditionParamRef.containsKey('platformName')">
<if test="conditionParamRef.platformName != null and conditionParamRef.platformName != ''">
${_conditionType_} a.platformName like #{${_conditionParam_}.platformName}
<if test="conditionParamRef.containsKey('platformMark')">
<if test="conditionParamRef.platformMark != null and conditionParamRef.platformMark != ''">
${_conditionType_} a.platformMark like #{${_conditionParam_}.platformMark}
</if>
<if test="conditionParamRef.platformName == null">
${_conditionType_} a.platformName is null
<if test="conditionParamRef.platformMark == null">
${_conditionType_} a.platformMark is null
</if>
</if>
<if test="conditionParamRef.containsKey('platformNameList')">
${_conditionType_} a.platformName in
<foreach collection="conditionParamRef.platformNameList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('platformMarkList')">
${_conditionType_} a.platformMark in
<foreach collection="conditionParamRef.platformMarkList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('platformSn')">
<if test="conditionParamRef.platformSn != null and conditionParamRef.platformSn != ''">
${_conditionType_} a.platformSn like #{${_conditionParam_}.platformSn}
<if test="conditionParamRef.containsKey('userId')">
<if test="conditionParamRef.userId != null ">
${_conditionType_} a.userId = #{${_conditionParam_}.userId}
</if>
<if test="conditionParamRef.platformSn == null">
${_conditionType_} a.platformSn is null
<if test="conditionParamRef.userId == null">
${_conditionType_} a.userId is null
</if>
</if>
<if test="conditionParamRef.containsKey('platformSnList')">
${_conditionType_} a.platformSn in
<foreach collection="conditionParamRef.platformSnList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('userIdList')">
${_conditionType_} a.userId in
<foreach collection="conditionParamRef.userIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('sendMsgType')">
<if test="conditionParamRef.sendMsgType != null ">
${_conditionType_} a.sendMsgType = #{${_conditionParam_}.sendMsgType}
<if test="conditionParamRef.containsKey('userIdStart') and conditionParamRef.userIdStart != null">
${_conditionType_} a.userId <![CDATA[ >= ]]> #{${_conditionParam_}.userIdStart}
</if>
<if test="conditionParamRef.containsKey('userIdEnd') and conditionParamRef.userIdEnd != null">
${_conditionType_} a.userId <![CDATA[ <= ]]> #{${_conditionParam_}.userIdEnd}
</if>
<if test="conditionParamRef.containsKey('userName')">
<if test="conditionParamRef.userName != null and conditionParamRef.userName != ''">
${_conditionType_} a.userName like #{${_conditionParam_}.userName}
</if>
<if test="conditionParamRef.sendMsgType == null">
${_conditionType_} a.sendMsgType is null
<if test="conditionParamRef.userName == null">
${_conditionType_} a.userName is null
</if>
</if>
<if test="conditionParamRef.containsKey('sendMsgTypeList')">
${_conditionType_} a.sendMsgType in
<foreach collection="conditionParamRef.sendMsgTypeList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('userNameList')">
${_conditionType_} a.userName in
<foreach collection="conditionParamRef.userNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('sendMsgTypeStart') and conditionParamRef.sendMsgTypeStart != null">
${_conditionType_} a.sendMsgType <![CDATA[ >= ]]> #{${_conditionParam_}.sendMsgTypeStart}
</if>
<if test="conditionParamRef.containsKey('sendMsgTypeEnd') and conditionParamRef.sendMsgTypeEnd != null">
${_conditionType_} a.sendMsgType <![CDATA[ <= ]]> #{${_conditionParam_}.sendMsgTypeEnd}
</if>
<if test="conditionParamRef.containsKey('sendUrl')">
<if test="conditionParamRef.sendUrl != null and conditionParamRef.sendUrl != ''">
${_conditionType_} a.sendUrl like #{${_conditionParam_}.sendUrl}
<if test="conditionParamRef.containsKey('loginName')">
<if test="conditionParamRef.loginName != null and conditionParamRef.loginName != ''">
${_conditionType_} a.loginName like #{${_conditionParam_}.loginName}
</if>
<if test="conditionParamRef.sendUrl == null">
${_conditionType_} a.sendUrl is null
<if test="conditionParamRef.loginName == null">
${_conditionType_} a.loginName is null
</if>
</if>
<if test="conditionParamRef.containsKey('sendUrlList')">
${_conditionType_} a.sendUrl in
<foreach collection="conditionParamRef.sendUrlList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('loginNameList')">
${_conditionType_} a.loginName in
<foreach collection="conditionParamRef.loginNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('callbackUrl')">
<if test="conditionParamRef.callbackUrl != null and conditionParamRef.callbackUrl != ''">
${_conditionType_} a.callbackUrl like #{${_conditionParam_}.callbackUrl}
<if test="conditionParamRef.containsKey('requestUrl')">
<if test="conditionParamRef.requestUrl != null and conditionParamRef.requestUrl != ''">
${_conditionType_} a.requestUrl like #{${_conditionParam_}.requestUrl}
</if>
<if test="conditionParamRef.callbackUrl == null">
${_conditionType_} a.callbackUrl is null
<if test="conditionParamRef.requestUrl == null">
${_conditionType_} a.requestUrl is null
</if>
</if>
<if test="conditionParamRef.containsKey('callbackUrlList')">
${_conditionType_} a.callbackUrl in
<foreach collection="conditionParamRef.callbackUrlList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('requestUrlList')">
${_conditionType_} a.requestUrl in
<foreach collection="conditionParamRef.requestUrlList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('sendSwitch')">
<if test="conditionParamRef.sendSwitch != null ">
${_conditionType_} a.sendSwitch = #{${_conditionParam_}.sendSwitch}
<if test="conditionParamRef.containsKey('content')">
<if test="conditionParamRef.content != null and conditionParamRef.content != ''">
${_conditionType_} a.content like #{${_conditionParam_}.content}
</if>
<if test="conditionParamRef.sendSwitch == null">
${_conditionType_} a.sendSwitch is null
<if test="conditionParamRef.content == null">
${_conditionType_} a.content is null
</if>
</if>
<if test="conditionParamRef.containsKey('sendSwitchList')">
${_conditionType_} a.sendSwitch in
<foreach collection="conditionParamRef.sendSwitchList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('contentList')">
${_conditionType_} a.content in
<foreach collection="conditionParamRef.contentList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('sendSwitchStart') and conditionParamRef.sendSwitchStart != null">
${_conditionType_} a.sendSwitch <![CDATA[ >= ]]> #{${_conditionParam_}.sendSwitchStart}
</if>
<if test="conditionParamRef.containsKey('sendSwitchEnd') and conditionParamRef.sendSwitchEnd != null">
${_conditionType_} a.sendSwitch <![CDATA[ <= ]]> #{${_conditionParam_}.sendSwitchEnd}
</if>
<if test="conditionParamRef.containsKey('homeUrl')">
<if test="conditionParamRef.homeUrl != null and conditionParamRef.homeUrl != ''">
${_conditionType_} a.homeUrl like #{${_conditionParam_}.homeUrl}
<if test="conditionParamRef.containsKey('ip')">
<if test="conditionParamRef.ip != null and conditionParamRef.ip != ''">
${_conditionType_} a.ip like #{${_conditionParam_}.ip}
</if>
<if test="conditionParamRef.homeUrl == null">
${_conditionType_} a.homeUrl is null
<if test="conditionParamRef.ip == null">
${_conditionType_} a.ip is null
</if>
</if>
<if test="conditionParamRef.containsKey('homeUrlList')">
${_conditionType_} a.homeUrl in
<foreach collection="conditionParamRef.homeUrlList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('ipList')">
${_conditionType_} a.ip in
<foreach collection="conditionParamRef.ipList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('platformRemark')">
<if test="conditionParamRef.platformRemark != null and conditionParamRef.platformRemark != ''">
${_conditionType_} a.platformRemark like #{${_conditionParam_}.platformRemark}
<if test="conditionParamRef.containsKey('logDate')">
<if test="conditionParamRef.logDate != null ">
${_conditionType_} a.logDate = #{${_conditionParam_}.logDate}
</if>
<if test="conditionParamRef.platformRemark == null">
${_conditionType_} a.platformRemark is null
<if test="conditionParamRef.logDate == null">
${_conditionType_} a.logDate is null
</if>
</if>
<if test="conditionParamRef.containsKey('platformRemarkList')">
${_conditionType_} a.platformRemark in
<foreach collection="conditionParamRef.platformRemarkList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('logDateStart') and conditionParamRef.logDateStart != null and conditionParamRef.logDateStart!=''">
${_conditionType_} a.logDate <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.logDateStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('logDateEnd') and conditionParamRef.logDateEnd != null and conditionParamRef.logDateEnd!=''">
${_conditionType_} a.logDate <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.logDateEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('operType')">
<if test="conditionParamRef.operType != null ">
${_conditionType_} a.operType = #{${_conditionParam_}.operType}
</if>
<if test="conditionParamRef.operType == null">
${_conditionType_} a.operType is null
</if>
</if>
<if test="conditionParamRef.containsKey('operTypeList')">
${_conditionType_} a.operType in
<foreach collection="conditionParamRef.operTypeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('operTypeStart') and conditionParamRef.operTypeStart != null">
${_conditionType_} a.operType <![CDATA[ >= ]]> #{${_conditionParam_}.operTypeStart}
</if>
<if test="conditionParamRef.containsKey('operTypeEnd') and conditionParamRef.operTypeEnd != null">
${_conditionType_} a.operType <![CDATA[ <= ]]> #{${_conditionParam_}.operTypeEnd}
</if>
<if test="conditionParamRef.containsKey('createUserId')">
<if test="conditionParamRef.createUserId != null ">
${_conditionType_} a.createUserId = #{${_conditionParam_}.createUserId}
......@@ -544,42 +554,6 @@
<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')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" 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()">
......@@ -598,44 +572,49 @@
<if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('platformName')">
a.platformName
<if test='orderCol.platformName != null and "DESC".equalsIgnoreCase(orderCol.platformName)'>DESC</if>
<if test="orderCol.containsKey('platformMark')">
a.platformMark
<if test='orderCol.platformMark != null and "DESC".equalsIgnoreCase(orderCol.platformMark)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('userId')">
a.userId
<if test='orderCol.userId != null and "DESC".equalsIgnoreCase(orderCol.userId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('platformSn')">
a.platformSn
<if test='orderCol.platformSn != null and "DESC".equalsIgnoreCase(orderCol.platformSn)'>DESC</if>
<if test="orderCol.containsKey('userName')">
a.userName
<if test='orderCol.userName != null and "DESC".equalsIgnoreCase(orderCol.userName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('sendMsgType')">
a.sendMsgType
<if test='orderCol.sendMsgType != null and "DESC".equalsIgnoreCase(orderCol.sendMsgType)'>DESC</if>
<if test="orderCol.containsKey('loginName')">
a.loginName
<if test='orderCol.loginName != null and "DESC".equalsIgnoreCase(orderCol.loginName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('sendUrl')">
a.sendUrl
<if test='orderCol.sendUrl != null and "DESC".equalsIgnoreCase(orderCol.sendUrl)'>DESC</if>
<if test="orderCol.containsKey('requestUrl')">
a.requestUrl
<if test='orderCol.requestUrl != null and "DESC".equalsIgnoreCase(orderCol.requestUrl)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('callbackUrl')">
a.callbackUrl
<if test='orderCol.callbackUrl != null and "DESC".equalsIgnoreCase(orderCol.callbackUrl)'>DESC</if>
<if test="orderCol.containsKey('content')">
a.content
<if test='orderCol.content != null and "DESC".equalsIgnoreCase(orderCol.content)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('sendSwitch')">
a.sendSwitch
<if test='orderCol.sendSwitch != null and "DESC".equalsIgnoreCase(orderCol.sendSwitch)'>DESC</if>
<if test="orderCol.containsKey('ip')">
a.ip
<if test='orderCol.ip != null and "DESC".equalsIgnoreCase(orderCol.ip)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('homeUrl')">
a.homeUrl
<if test='orderCol.homeUrl != null and "DESC".equalsIgnoreCase(orderCol.homeUrl)'>DESC</if>
<if test="orderCol.containsKey('logDate')">
a.logDate
<if test='orderCol.logDate != null and "DESC".equalsIgnoreCase(orderCol.logDate)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('platformRemark')">
a.platformRemark
<if test='orderCol.platformRemark != null and "DESC".equalsIgnoreCase(orderCol.platformRemark)'>DESC</if>
<if test="orderCol.containsKey('operType')">
a.operType
<if test='orderCol.operType != null and "DESC".equalsIgnoreCase(orderCol.operType)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createUserId')">
......@@ -648,16 +627,6 @@
<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>
......
<?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.product.dao.ibatis.ProductDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="ProductEntity" id="ProductEntity-Map">
<id property="id" column="id" />
<id property="platformId" column="platformId" />
<result property="productName" column="productName" />
<result property="productCode" column="productCode" />
<result property="skinId" column="skinId" />
<result property="skinName" column="skinName" />
<result property="homeUrl" column="homeUrl" />
<result property="productRemark" column="productRemark" />
<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('platformId') or colPickMode == 1 and data.containsKey('platformId')))">
a.platformId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('productName') or colPickMode == 1 and data.containsKey('productName')))">
a.productName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('productCode') or colPickMode == 1 and data.containsKey('productCode')))">
a.productCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('skinId') or colPickMode == 1 and data.containsKey('skinId')))">
a.skinId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('skinName') or colPickMode == 1 and data.containsKey('skinName')))">
a.skinName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('homeUrl') or colPickMode == 1 and data.containsKey('homeUrl')))">
a.homeUrl,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('productRemark') or colPickMode == 1 and data.containsKey('productRemark')))">
a.productRemark,
</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="ProductEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_product
(platformId,productName,productCode,skinId,skinName,homeUrl,productRemark,createUserId,createTime,updateUserId,updateTime)
VALUES
(#{platformId},#{productName},#{productCode},#{skinId},#{skinName},#{homeUrl},#{productRemark},#{createUserId},#{createTime},#{updateUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_product
(platformId,productName,productCode,skinId,skinName,homeUrl,productRemark,createUserId,createTime,updateUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.platformId},#{item.productName},#{item.productCode},#{item.skinId},#{item.skinName},#{item.homeUrl},#{item.productRemark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_product as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('platformId')) or (colPickMode==1 and !data.containsKey('platformId'))">
a.platformId=#{data.platformId},
</if>
<if test="(colPickMode==0 and data.containsKey('platformIdIncrement')) or (colPickMode==1 and !data.containsKey('platformIdIncrement'))">
a.platformId=ifnull(a.platformId,0) + #{data.platformIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('productName')) or (colPickMode==1 and !data.containsKey('productName'))">
a.productName=#{data.productName},
</if>
<if test="(colPickMode==0 and data.containsKey('productCode')) or (colPickMode==1 and !data.containsKey('productCode'))">
a.productCode=#{data.productCode},
</if>
<if test="(colPickMode==0 and data.containsKey('skinId')) or (colPickMode==1 and !data.containsKey('skinId'))">
a.skinId=#{data.skinId},
</if>
<if test="(colPickMode==0 and data.containsKey('skinIdIncrement')) or (colPickMode==1 and !data.containsKey('skinIdIncrement'))">
a.skinId=ifnull(a.skinId,0) + #{data.skinIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('skinName')) or (colPickMode==1 and !data.containsKey('skinName'))">
a.skinName=#{data.skinName},
</if>
<if test="(colPickMode==0 and data.containsKey('homeUrl')) or (colPickMode==1 and !data.containsKey('homeUrl'))">
a.homeUrl=#{data.homeUrl},
</if>
<if test="(colPickMode==0 and data.containsKey('productRemark')) or (colPickMode==1 and !data.containsKey('productRemark'))">
a.productRemark=#{data.productRemark},
</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_product as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="platformId=(case" suffix="ELSE platformId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('platformId')) or (colPickMode==1 and !item.containsKey('platformId'))">
when a.id=#{item.id} then #{item.platformId}
</when>
<when test="(colPickMode==0 and item.containsKey('platformIdIncrement')) or (colPickMode==1 and !item.containsKey('platformIdIncrement'))">
when a.id=#{item.id} then ifnull(a.platformId,0) + #{item.platformIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="productName=(case" suffix="ELSE productName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('productName')) or (colPickMode==1 and !item.containsKey('productName'))">
when a.id=#{item.id} then #{item.productName}
</if>
</foreach>
</trim>
<trim prefix="productCode=(case" suffix="ELSE productCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('productCode')) or (colPickMode==1 and !item.containsKey('productCode'))">
when a.id=#{item.id} then #{item.productCode}
</if>
</foreach>
</trim>
<trim prefix="skinId=(case" suffix="ELSE skinId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('skinId')) or (colPickMode==1 and !item.containsKey('skinId'))">
when a.id=#{item.id} then #{item.skinId}
</when>
<when test="(colPickMode==0 and item.containsKey('skinIdIncrement')) or (colPickMode==1 and !item.containsKey('skinIdIncrement'))">
when a.id=#{item.id} then ifnull(a.skinId,0) + #{item.skinIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="skinName=(case" suffix="ELSE skinName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('skinName')) or (colPickMode==1 and !item.containsKey('skinName'))">
when a.id=#{item.id} then #{item.skinName}
</if>
</foreach>
</trim>
<trim prefix="homeUrl=(case" suffix="ELSE homeUrl end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('homeUrl')) or (colPickMode==1 and !item.containsKey('homeUrl'))">
when a.id=#{item.id} then #{item.homeUrl}
</if>
</foreach>
</trim>
<trim prefix="productRemark=(case" suffix="ELSE productRemark end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('productRemark')) or (colPickMode==1 and !item.containsKey('productRemark'))">
when a.id=#{item.id} then #{item.productRemark}
</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="ProductEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_product as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_product as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_product where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_product as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="ProductEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_product 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_product 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>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" 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('platformId')">
<if test="conditionParamRef.platformId != null ">
${_conditionType_} a.platformId = #{${_conditionParam_}.platformId}
</if>
<if test="conditionParamRef.platformId == null">
${_conditionType_} a.platformId is null
</if>
</if>
<if test="conditionParamRef.containsKey('platformIdList')">
${_conditionType_} a.platformId in
<foreach collection="conditionParamRef.platformIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('platformIdStart') and conditionParamRef.platformIdStart != null">
${_conditionType_} a.platformId <![CDATA[ >= ]]> #{${_conditionParam_}.platformIdStart}
</if>
<if test="conditionParamRef.containsKey('platformIdEnd') and conditionParamRef.platformIdEnd != null">
${_conditionType_} a.platformId <![CDATA[ <= ]]> #{${_conditionParam_}.platformIdEnd}
</if>
<if test="conditionParamRef.containsKey('productName')">
<if test="conditionParamRef.productName != null and conditionParamRef.productName != ''">
${_conditionType_} a.productName like #{${_conditionParam_}.productName}
</if>
<if test="conditionParamRef.productName == null">
${_conditionType_} a.productName is null
</if>
</if>
<if test="conditionParamRef.containsKey('productNameList')">
${_conditionType_} a.productName in
<foreach collection="conditionParamRef.productNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('productCode')">
<if test="conditionParamRef.productCode != null and conditionParamRef.productCode != ''">
${_conditionType_} a.productCode like #{${_conditionParam_}.productCode}
</if>
<if test="conditionParamRef.productCode == null">
${_conditionType_} a.productCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('productCodeList')">
${_conditionType_} a.productCode in
<foreach collection="conditionParamRef.productCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('skinId')">
<if test="conditionParamRef.skinId != null ">
${_conditionType_} a.skinId = #{${_conditionParam_}.skinId}
</if>
<if test="conditionParamRef.skinId == null">
${_conditionType_} a.skinId is null
</if>
</if>
<if test="conditionParamRef.containsKey('skinIdList')">
${_conditionType_} a.skinId in
<foreach collection="conditionParamRef.skinIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('skinIdStart') and conditionParamRef.skinIdStart != null">
${_conditionType_} a.skinId <![CDATA[ >= ]]> #{${_conditionParam_}.skinIdStart}
</if>
<if test="conditionParamRef.containsKey('skinIdEnd') and conditionParamRef.skinIdEnd != null">
${_conditionType_} a.skinId <![CDATA[ <= ]]> #{${_conditionParam_}.skinIdEnd}
</if>
<if test="conditionParamRef.containsKey('skinName')">
<if test="conditionParamRef.skinName != null and conditionParamRef.skinName != ''">
${_conditionType_} a.skinName like #{${_conditionParam_}.skinName}
</if>
<if test="conditionParamRef.skinName == null">
${_conditionType_} a.skinName is null
</if>
</if>
<if test="conditionParamRef.containsKey('skinNameList')">
${_conditionType_} a.skinName in
<foreach collection="conditionParamRef.skinNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('homeUrl')">
<if test="conditionParamRef.homeUrl != null and conditionParamRef.homeUrl != ''">
${_conditionType_} a.homeUrl like #{${_conditionParam_}.homeUrl}
</if>
<if test="conditionParamRef.homeUrl == null">
${_conditionType_} a.homeUrl is null
</if>
</if>
<if test="conditionParamRef.containsKey('homeUrlList')">
${_conditionType_} a.homeUrl in
<foreach collection="conditionParamRef.homeUrlList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('productRemark')">
<if test="conditionParamRef.productRemark != null and conditionParamRef.productRemark != ''">
${_conditionType_} a.productRemark like #{${_conditionParam_}.productRemark}
</if>
<if test="conditionParamRef.productRemark == null">
${_conditionType_} a.productRemark is null
</if>
</if>
<if test="conditionParamRef.containsKey('productRemarkList')">
${_conditionType_} a.productRemark in
<foreach collection="conditionParamRef.productRemarkList" 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')">
${_conditionType_} a.createUserId in
<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')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" 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('platformId')">
a.platformId
<if test='orderCol.platformId != null and "DESC".equalsIgnoreCase(orderCol.platformId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('productName')">
a.productName
<if test='orderCol.productName != null and "DESC".equalsIgnoreCase(orderCol.productName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('productCode')">
a.productCode
<if test='orderCol.productCode != null and "DESC".equalsIgnoreCase(orderCol.productCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('skinId')">
a.skinId
<if test='orderCol.skinId != null and "DESC".equalsIgnoreCase(orderCol.skinId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('skinName')">
a.skinName
<if test='orderCol.skinName != null and "DESC".equalsIgnoreCase(orderCol.skinName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('homeUrl')">
a.homeUrl
<if test='orderCol.homeUrl != null and "DESC".equalsIgnoreCase(orderCol.homeUrl)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('productRemark')">
a.productRemark
<if test='orderCol.productRemark != null and "DESC".equalsIgnoreCase(orderCol.productRemark)'>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
<?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.sitestat.dao.ibatis.SitestatDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="SitestatEntity" id="SitestatEntity-Map">
<id property="id" column="id" />
<result property="siteId" column="siteId" />
<result property="siteCode" column="siteCode" />
<result property="siteName" column="siteName" />
<result property="deviceTotal" column="deviceTotal" />
<result property="onlineCount" column="onlineCount" />
<result property="offlineCount" column="offlineCount" />
<result property="stopCount" column="stopCount" />
<result property="unActiveCount" column="unActiveCount" />
<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('siteId') or colPickMode == 1 and data.containsKey('siteId')))">
a.siteId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteCode') or colPickMode == 1 and data.containsKey('siteCode')))">
a.siteCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteName') or colPickMode == 1 and data.containsKey('siteName')))">
a.siteName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceTotal') or colPickMode == 1 and data.containsKey('deviceTotal')))">
a.deviceTotal,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('onlineCount') or colPickMode == 1 and data.containsKey('onlineCount')))">
a.onlineCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('offlineCount') or colPickMode == 1 and data.containsKey('offlineCount')))">
a.offlineCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('stopCount') or colPickMode == 1 and data.containsKey('stopCount')))">
a.stopCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('unActiveCount') or colPickMode == 1 and data.containsKey('unActiveCount')))">
a.unActiveCount,
</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="SitestatEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_sitestat
(siteId,siteCode,siteName,deviceTotal,onlineCount,offlineCount,stopCount,unActiveCount,createTime,updateUserId,updateTime)
VALUES
(#{siteId},#{siteCode},#{siteName},#{deviceTotal},#{onlineCount},#{offlineCount},#{stopCount},#{unActiveCount},#{createTime},#{updateUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_sitestat
(siteId,siteCode,siteName,deviceTotal,onlineCount,offlineCount,stopCount,unActiveCount,createTime,updateUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.siteId},#{item.siteCode},#{item.siteName},#{item.deviceTotal},#{item.onlineCount},#{item.offlineCount},#{item.stopCount},#{item.unActiveCount},#{item.createTime},#{item.updateUserId},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_sitestat as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('siteId')) or (colPickMode==1 and !data.containsKey('siteId'))">
a.siteId=#{data.siteId},
</if>
<if test="(colPickMode==0 and data.containsKey('siteIdIncrement')) or (colPickMode==1 and !data.containsKey('siteIdIncrement'))">
a.siteId=ifnull(a.siteId,0) + #{data.siteIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('siteCode')) or (colPickMode==1 and !data.containsKey('siteCode'))">
a.siteCode=#{data.siteCode},
</if>
<if test="(colPickMode==0 and data.containsKey('siteName')) or (colPickMode==1 and !data.containsKey('siteName'))">
a.siteName=#{data.siteName},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceTotal')) or (colPickMode==1 and !data.containsKey('deviceTotal'))">
a.deviceTotal=#{data.deviceTotal},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceTotalIncrement')) or (colPickMode==1 and !data.containsKey('deviceTotalIncrement'))">
a.deviceTotal=ifnull(a.deviceTotal,0) + #{data.deviceTotalIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('onlineCount')) or (colPickMode==1 and !data.containsKey('onlineCount'))">
a.onlineCount=#{data.onlineCount},
</if>
<if test="(colPickMode==0 and data.containsKey('onlineCountIncrement')) or (colPickMode==1 and !data.containsKey('onlineCountIncrement'))">
a.onlineCount=ifnull(a.onlineCount,0) + #{data.onlineCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('offlineCount')) or (colPickMode==1 and !data.containsKey('offlineCount'))">
a.offlineCount=#{data.offlineCount},
</if>
<if test="(colPickMode==0 and data.containsKey('offlineCountIncrement')) or (colPickMode==1 and !data.containsKey('offlineCountIncrement'))">
a.offlineCount=ifnull(a.offlineCount,0) + #{data.offlineCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('stopCount')) or (colPickMode==1 and !data.containsKey('stopCount'))">
a.stopCount=#{data.stopCount},
</if>
<if test="(colPickMode==0 and data.containsKey('stopCountIncrement')) or (colPickMode==1 and !data.containsKey('stopCountIncrement'))">
a.stopCount=ifnull(a.stopCount,0) + #{data.stopCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('unActiveCount')) or (colPickMode==1 and !data.containsKey('unActiveCount'))">
a.unActiveCount=#{data.unActiveCount},
</if>
<if test="(colPickMode==0 and data.containsKey('unActiveCountIncrement')) or (colPickMode==1 and !data.containsKey('unActiveCountIncrement'))">
a.unActiveCount=ifnull(a.unActiveCount,0) + #{data.unActiveCountIncrement},
</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_sitestat as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="siteId=(case" suffix="ELSE siteId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('siteId')) or (colPickMode==1 and !item.containsKey('siteId'))">
when a.id=#{item.id} then #{item.siteId}
</when>
<when test="(colPickMode==0 and item.containsKey('siteIdIncrement')) or (colPickMode==1 and !item.containsKey('siteIdIncrement'))">
when a.id=#{item.id} then ifnull(a.siteId,0) + #{item.siteIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="siteCode=(case" suffix="ELSE siteCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('siteCode')) or (colPickMode==1 and !item.containsKey('siteCode'))">
when a.id=#{item.id} then #{item.siteCode}
</if>
</foreach>
</trim>
<trim prefix="siteName=(case" suffix="ELSE siteName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('siteName')) or (colPickMode==1 and !item.containsKey('siteName'))">
when a.id=#{item.id} then #{item.siteName}
</if>
</foreach>
</trim>
<trim prefix="deviceTotal=(case" suffix="ELSE deviceTotal end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceTotal')) or (colPickMode==1 and !item.containsKey('deviceTotal'))">
when a.id=#{item.id} then #{item.deviceTotal}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceTotalIncrement')) or (colPickMode==1 and !item.containsKey('deviceTotalIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceTotal,0) + #{item.deviceTotalIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="onlineCount=(case" suffix="ELSE onlineCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('onlineCount')) or (colPickMode==1 and !item.containsKey('onlineCount'))">
when a.id=#{item.id} then #{item.onlineCount}
</when>
<when test="(colPickMode==0 and item.containsKey('onlineCountIncrement')) or (colPickMode==1 and !item.containsKey('onlineCountIncrement'))">
when a.id=#{item.id} then ifnull(a.onlineCount,0) + #{item.onlineCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="offlineCount=(case" suffix="ELSE offlineCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('offlineCount')) or (colPickMode==1 and !item.containsKey('offlineCount'))">
when a.id=#{item.id} then #{item.offlineCount}
</when>
<when test="(colPickMode==0 and item.containsKey('offlineCountIncrement')) or (colPickMode==1 and !item.containsKey('offlineCountIncrement'))">
when a.id=#{item.id} then ifnull(a.offlineCount,0) + #{item.offlineCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="stopCount=(case" suffix="ELSE stopCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('stopCount')) or (colPickMode==1 and !item.containsKey('stopCount'))">
when a.id=#{item.id} then #{item.stopCount}
</when>
<when test="(colPickMode==0 and item.containsKey('stopCountIncrement')) or (colPickMode==1 and !item.containsKey('stopCountIncrement'))">
when a.id=#{item.id} then ifnull(a.stopCount,0) + #{item.stopCountIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="unActiveCount=(case" suffix="ELSE unActiveCount end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('unActiveCount')) or (colPickMode==1 and !item.containsKey('unActiveCount'))">
when a.id=#{item.id} then #{item.unActiveCount}
</when>
<when test="(colPickMode==0 and item.containsKey('unActiveCountIncrement')) or (colPickMode==1 and !item.containsKey('unActiveCountIncrement'))">
when a.id=#{item.id} then ifnull(a.unActiveCount,0) + #{item.unActiveCountIncrement}
</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="SitestatEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_sitestat as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_sitestat as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_sitestat where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_sitestat as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="SitestatEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_sitestat 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_sitestat 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>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" 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('siteId')">
<if test="conditionParamRef.siteId != null ">
${_conditionType_} a.siteId = #{${_conditionParam_}.siteId}
</if>
<if test="conditionParamRef.siteId == null">
${_conditionType_} a.siteId is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteIdList')">
${_conditionType_} a.siteId in
<foreach collection="conditionParamRef.siteIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteIdStart') and conditionParamRef.siteIdStart != null">
${_conditionType_} a.siteId <![CDATA[ >= ]]> #{${_conditionParam_}.siteIdStart}
</if>
<if test="conditionParamRef.containsKey('siteIdEnd') and conditionParamRef.siteIdEnd != null">
${_conditionType_} a.siteId <![CDATA[ <= ]]> #{${_conditionParam_}.siteIdEnd}
</if>
<if test="conditionParamRef.containsKey('siteCode')">
<if test="conditionParamRef.siteCode != null and conditionParamRef.siteCode != ''">
${_conditionType_} a.siteCode like #{${_conditionParam_}.siteCode}
</if>
<if test="conditionParamRef.siteCode == null">
${_conditionType_} a.siteCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteCodeList')">
${_conditionType_} a.siteCode in
<foreach collection="conditionParamRef.siteCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteName')">
<if test="conditionParamRef.siteName != null and conditionParamRef.siteName != ''">
${_conditionType_} a.siteName like #{${_conditionParam_}.siteName}
</if>
<if test="conditionParamRef.siteName == null">
${_conditionType_} a.siteName is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteNameList')">
${_conditionType_} a.siteName in
<foreach collection="conditionParamRef.siteNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceTotal')">
<if test="conditionParamRef.deviceTotal != null ">
${_conditionType_} a.deviceTotal = #{${_conditionParam_}.deviceTotal}
</if>
<if test="conditionParamRef.deviceTotal == null">
${_conditionType_} a.deviceTotal is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceTotalList')">
${_conditionType_} a.deviceTotal in
<foreach collection="conditionParamRef.deviceTotalList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceTotalStart') and conditionParamRef.deviceTotalStart != null">
${_conditionType_} a.deviceTotal <![CDATA[ >= ]]> #{${_conditionParam_}.deviceTotalStart}
</if>
<if test="conditionParamRef.containsKey('deviceTotalEnd') and conditionParamRef.deviceTotalEnd != null">
${_conditionType_} a.deviceTotal <![CDATA[ <= ]]> #{${_conditionParam_}.deviceTotalEnd}
</if>
<if test="conditionParamRef.containsKey('onlineCount')">
<if test="conditionParamRef.onlineCount != null ">
${_conditionType_} a.onlineCount = #{${_conditionParam_}.onlineCount}
</if>
<if test="conditionParamRef.onlineCount == null">
${_conditionType_} a.onlineCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('onlineCountList')">
${_conditionType_} a.onlineCount in
<foreach collection="conditionParamRef.onlineCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('onlineCountStart') and conditionParamRef.onlineCountStart != null">
${_conditionType_} a.onlineCount <![CDATA[ >= ]]> #{${_conditionParam_}.onlineCountStart}
</if>
<if test="conditionParamRef.containsKey('onlineCountEnd') and conditionParamRef.onlineCountEnd != null">
${_conditionType_} a.onlineCount <![CDATA[ <= ]]> #{${_conditionParam_}.onlineCountEnd}
</if>
<if test="conditionParamRef.containsKey('offlineCount')">
<if test="conditionParamRef.offlineCount != null ">
${_conditionType_} a.offlineCount = #{${_conditionParam_}.offlineCount}
</if>
<if test="conditionParamRef.offlineCount == null">
${_conditionType_} a.offlineCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('offlineCountList')">
${_conditionType_} a.offlineCount in
<foreach collection="conditionParamRef.offlineCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('offlineCountStart') and conditionParamRef.offlineCountStart != null">
${_conditionType_} a.offlineCount <![CDATA[ >= ]]> #{${_conditionParam_}.offlineCountStart}
</if>
<if test="conditionParamRef.containsKey('offlineCountEnd') and conditionParamRef.offlineCountEnd != null">
${_conditionType_} a.offlineCount <![CDATA[ <= ]]> #{${_conditionParam_}.offlineCountEnd}
</if>
<if test="conditionParamRef.containsKey('stopCount')">
<if test="conditionParamRef.stopCount != null ">
${_conditionType_} a.stopCount = #{${_conditionParam_}.stopCount}
</if>
<if test="conditionParamRef.stopCount == null">
${_conditionType_} a.stopCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('stopCountList')">
${_conditionType_} a.stopCount in
<foreach collection="conditionParamRef.stopCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('stopCountStart') and conditionParamRef.stopCountStart != null">
${_conditionType_} a.stopCount <![CDATA[ >= ]]> #{${_conditionParam_}.stopCountStart}
</if>
<if test="conditionParamRef.containsKey('stopCountEnd') and conditionParamRef.stopCountEnd != null">
${_conditionType_} a.stopCount <![CDATA[ <= ]]> #{${_conditionParam_}.stopCountEnd}
</if>
<if test="conditionParamRef.containsKey('unActiveCount')">
<if test="conditionParamRef.unActiveCount != null ">
${_conditionType_} a.unActiveCount = #{${_conditionParam_}.unActiveCount}
</if>
<if test="conditionParamRef.unActiveCount == null">
${_conditionType_} a.unActiveCount is null
</if>
</if>
<if test="conditionParamRef.containsKey('unActiveCountList')">
${_conditionType_} a.unActiveCount in
<foreach collection="conditionParamRef.unActiveCountList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('unActiveCountStart') and conditionParamRef.unActiveCountStart != null">
${_conditionType_} a.unActiveCount <![CDATA[ >= ]]> #{${_conditionParam_}.unActiveCountStart}
</if>
<if test="conditionParamRef.containsKey('unActiveCountEnd') and conditionParamRef.unActiveCountEnd != null">
${_conditionType_} a.unActiveCount <![CDATA[ <= ]]> #{${_conditionParam_}.unActiveCountEnd}
</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')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" 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('siteId')">
a.siteId
<if test='orderCol.siteId != null and "DESC".equalsIgnoreCase(orderCol.siteId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteCode')">
a.siteCode
<if test='orderCol.siteCode != null and "DESC".equalsIgnoreCase(orderCol.siteCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteName')">
a.siteName
<if test='orderCol.siteName != null and "DESC".equalsIgnoreCase(orderCol.siteName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceTotal')">
a.deviceTotal
<if test='orderCol.deviceTotal != null and "DESC".equalsIgnoreCase(orderCol.deviceTotal)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('onlineCount')">
a.onlineCount
<if test='orderCol.onlineCount != null and "DESC".equalsIgnoreCase(orderCol.onlineCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('offlineCount')">
a.offlineCount
<if test='orderCol.offlineCount != null and "DESC".equalsIgnoreCase(orderCol.offlineCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('stopCount')">
a.stopCount
<if test='orderCol.stopCount != null and "DESC".equalsIgnoreCase(orderCol.stopCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('unActiveCount')">
a.unActiveCount
<if test='orderCol.unActiveCount != null and "DESC".equalsIgnoreCase(orderCol.unActiveCount)'>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
###登录
POST {{baseUrl}}/login/login
Content-Type: application/json
{
"loginName":"admin",
"password":"admin",
"securityCode":"8888"
}
> {%
client.global.set("SmsSet_id", JSON.parse(response.body).data.id);
client.global.set("authToken", JSON.parse(response.body).data.token);
%}
###访问日志列表
POST {{baseUrl}}/access/log/list
Authorization: {{authToken}}
Content-Type: application/json
{
"traceID":"di42wk",
"appName":"6dambn",
"method":"v5numy",
"page":1,
"size":10
}
###访问日志更新与保存
POST {{baseUrl}}/access/log/save
Authorization: {{authToken}}
Content-Type: application/json
{
"traceID":"osyert",
"appName":"wxc3d2",
"hostName":"3vr07c",
"logLevel":"aird21",
"requestIp":"329nw4",
"method":"ylglio",
"ua":"8th5c4",
"uri":"31a4wz",
"requestParam":"dqu22k",
"response":"1791q6",
"logTime":"1660665600000",
"duration":67,
}
> {%
client.global.set("AccessLog_id", JSON.parse(response.body).data.id);
%}
###访问日志查看
GET {{baseUrl}}/access/log/info?id={{AccessLog_id}}
Authorization: {{authToken}}
Accept: application/json
###访问日志编辑
GET {{baseUrl}}/access/log/edit?id={{AccessLog_id}}
Authorization: {{authToken}}
Accept: application/json
###访问日志删除
GET {{baseUrl}}/access/log/delete?id={{AccessLog_id}}
Authorization: {{authToken}}
Accept: application/json
###登录
POST {{baseUrl}}/login/login
Content-Type: application/json
{
"loginName":"admin",
"password":"admin",
"securityCode":"8888"
}
> {%
client.global.set("SmsSet_id", JSON.parse(response.body).data.id);
client.global.set("authToken", JSON.parse(response.body).data.token);
%}
###业务日志列表
POST {{baseUrl}}/biz/log/list
Authorization: {{authToken}}
Content-Type: application/json
{
"traceID":"9woksb",
"appName":"tkb75m",
"userCode":"3fs53m",
"deviceCode":"6a9n6c",
"eventTopic":"2fflmd",
"eventTopicName":"e1rtp6",
"logTime":"1660665600000",
"page":1,
"size":10
}
###业务日志更新与保存
POST {{baseUrl}}/biz/log/save
Authorization: {{authToken}}
Content-Type: application/json
{
"traceID":"hctiu5",
"appName":"6umnak",
"hostName":"oae3ab",
"logLevel":"kzjyu8",
"userCode":"cr93sa",
"deviceCode":"51xz2r",
"eventTopic":"atq8b3",
"eventTopicName":"vsi2u9",
"msg":"gr6iz6",
"logTime":"1660665600000"
}
> {%
client.global.set("BizLog_id", JSON.parse(response.body).data.id);
%}
###业务日志查看
GET {{baseUrl}}/biz/log/info?id={{BizLog_id}}
Authorization: {{authToken}}
Accept: application/json
###业务日志编辑
GET {{baseUrl}}/biz/log/edit?id={{BizLog_id}}
Authorization: {{authToken}}
Accept: application/json
###业务日志删除
GET {{baseUrl}}/biz/log/delete?id={{BizLog_id}}
Authorization: {{authToken}}
Accept: application/json
###登录
POST {{baseUrl}}/login/login
Content-Type: application/json
{
"loginName":"admin",
"password":"admin",
"securityCode":"8888"
}
> {%
client.global.set("SmsSet_id", JSON.parse(response.body).data.id);
client.global.set("authToken", JSON.parse(response.body).data.token);
%}
###异常日志列表
POST {{baseUrl}}/error/log/list
Authorization: {{authToken}}
Content-Type: application/json
{
"traceID":"arvhdl",
"serverType":"nqq0bh",
"appName":"8i6fqg",
"logTime":"1660665600000",
"page":1,
"size":10
}
###异常日志更新与保存
POST {{baseUrl}}/error/log/save
Authorization: {{authToken}}
Content-Type: application/json
{
"traceID":"8ryjdp",
"serverType":"mdgdb8",
"appName":"6fobjf",
"hostName":"mpwzb3",
"logLevel":"of3igm",
"threadNo":"eqdsam",
"error":"asd235",
"response":"2djxe2",
"logTime":"1660665600000",
}
> {%
client.global.set("ErrorLog_id", JSON.parse(response.body).data.id);
%}
###异常日志查看
GET {{baseUrl}}/error/log/info?id={{ErrorLog_id}}
Authorization: {{authToken}}
Accept: application/json
###异常日志编辑
GET {{baseUrl}}/error/log/edit?id={{ErrorLog_id}}
Authorization: {{authToken}}
Accept: application/json
###异常日志删除
GET {{baseUrl}}/error/log/delete?id={{ErrorLog_id}}
Authorization: {{authToken}}
Accept: application/json
###登录
POST {{baseUrl}}/login/login
Content-Type: application/json
{
"loginName":"admin",
"password":"admin",
"securityCode":"8888"
}
> {%
client.global.set("SmsSet_id", JSON.parse(response.body).data.id);
client.global.set("authToken", JSON.parse(response.body).data.token);
%}
###平台用户操作日志业务列表
POST {{baseUrl}}/operate/log/list
Authorization: {{authToken}}
Content-Type: application/json
{
"platformMark":"2eh61g",
"logDate":"1660665600000",
"page":1,
"size":10
}
###平台用户操作日志业务更新与保存
POST {{baseUrl}}/operate/log/save
Authorization: {{authToken}}
Content-Type: application/json
{
"platformMark":"6s8ia2",
"userId":46,
"userName":"5calqx",
"loginName":"rx3vc6",
"requestUrl":"r40qzm",
"content":"5x7eyb",
"ip":"h6wkk2",
"logDate":"1660665600000",
"operType":574,
}
> {%
client.global.set("OperateLog_id", JSON.parse(response.body).data.id);
%}
###平台用户操作日志业务查看
GET {{baseUrl}}/operate/log/info?id={{OperateLog_id}}
Authorization: {{authToken}}
Accept: application/json
###平台用户操作日志业务编辑
GET {{baseUrl}}/operate/log/edit?id={{OperateLog_id}}
Authorization: {{authToken}}
Accept: application/json
###平台用户操作日志业务删除
GET {{baseUrl}}/operate/log/delete?id={{OperateLog_id}}
Authorization: {{authToken}}
Accept: application/json
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment