Commit 99d1c9b8 authored by 赵啸非's avatar 赵啸非

添加统计日志

parent 24a45472
-- ----------------------------
2024-04-08
-- 2024-04-08
-- ----------------------------
-- ----------------------------
-- 排号汇总表
......@@ -121,9 +121,11 @@ CREATE TABLE mortals_xhx_access(
`tag` varchar(255) NOT NULL DEFAULT '' COMMENT '标签',
`latitude` varchar(64) NOT NULL DEFAULT '' COMMENT '维度',
`longitude` varchar(64) COMMENT '经度',
`access_time` datetime COMMENT '接入开通时间',
`type` varchar(16) NOT NULL DEFAULT '类型' COMMENT '接入类型 (area.区域,site.站点)',
`sort` int(4) DEFAULT '0' COMMENT '排序',
`remark` varchar(128) NOT NULL DEFAULT '' COMMENT '备注',
`content` varchar(1024) NOT NULL DEFAULT '' COMMENT '描述内容',
`remark` varchar(256) NOT NULL DEFAULT '' COMMENT '备注',
`create_user_id` bigint(20) COMMENT '创建用户',
`create_time` datetime COMMENT '创建时间',
`update_time` datetime COMMENT '更新时间',
......@@ -231,3 +233,25 @@ CREATE TABLE `mortals_xhx_stat` (
INSERT INTO mortals_xhx_task VALUES (null, '报表统计', 'SiteStatTask', 0, 'SiteStatTask', '', '', 1, 3600, '21:00', '', '192.168.1.107', '2024-05-18 16:05:00', 0, '2024-03-01 10:59:53', 1, '系统管理员');
-- ----------------------------
-- 区域统计日志表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_access_stat_log`;
CREATE TABLE mortals_xhx_access_stat_log(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`access_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '接入Id',
`site_id` bigint(20) COMMENT '站点Id',
`site_code` varchar(128) NOT NULL DEFAULT '' COMMENT '站点编码',
`site_name` varchar(128) NOT NULL DEFAULT '' COMMENT '站点名称',
`stat_start_time` datetime COMMENT '统计开始时间',
`stat_end_time` datetime COMMENT '统计结束时间',
`duration` bigint(20) DEFAULT '0' COMMENT '站点Id',
`type` varchar(16) NOT NULL DEFAULT '全部' COMMENT '类型 (ALL.全部,PJQ.评价器,PDJ.排队机)',
`remark` varchar(256) NOT NULL DEFAULT '' COMMENT '备注',
`create_user_id` bigint(20) COMMENT '创建用户',
`create_time` datetime COMMENT '创建时间',
`update_time` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='统计日志表';
......@@ -138,7 +138,9 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
if (!ObjectUtils.isEmpty(siteTreeStr)) {
log.info("siteTreeStr:{}", siteTreeStr);
//获取当前用户所拥有的站点列表
accessEntities = accessService.find(new AccessQuery());
AccessQuery accessQuery = new AccessQuery();
accessQuery.setTagNotList(Arrays.asList(""));
accessEntities = accessService.find(accessQuery);
totalAccessSite = accessEntities.size();
if (!ObjectUtils.isEmpty(accessEntities)) {
......
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 接入类型 (area.区域,site.站点)枚举类
*
* @author zxfei
*/
public enum AccessTypeEnum {
全部("ALL", "全部"),
评价器("PJQ", "评价器"),
排队机("PDJ", "排队机");
private String value;
private String desc;
AccessTypeEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static AccessTypeEnum getByValue(String value) {
for (AccessTypeEnum typeEnum : AccessTypeEnum.values()) {
if (typeEnum.getValue() == value) {
return typeEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (AccessTypeEnum item : AccessTypeEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
......@@ -7,11 +7,17 @@ import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.common.code.AccessTypeEnum;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.keys.RedisCacheKeys;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.site.SitePdu;
import com.mortals.xhx.feign.site.ISiteFeign;
import com.mortals.xhx.module.access.model.AccessEntity;
import com.mortals.xhx.module.access.model.AccessQuery;
import com.mortals.xhx.module.access.model.AccessStatLogEntity;
import com.mortals.xhx.module.access.service.AccessService;
import com.mortals.xhx.module.access.service.AccessStatLogService;
import com.mortals.xhx.module.ph.model.PhQueueStatEntity;
import com.mortals.xhx.module.ph.model.PhQueueStatQuery;
import com.mortals.xhx.module.ph.service.PhQueueStatService;
......@@ -24,6 +30,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StopWatch;
import java.util.Arrays;
import java.util.Date;
......@@ -51,15 +58,23 @@ public class SiteStatTaskImpl implements ITaskExcuteService {
@Autowired
private ICacheService cacheService;
@Autowired
private AccessService accessService;
@Autowired
private AccessStatLogService accessStatLogService;
@Override
public void excuteTask(ITask task) throws AppException {
log.info("站点评价统计任务");
//统计最近一周
statByDate();
log.info("站点统计缓存任务");
//统计排号与评价 部门,等字典顺序记录次数
updateSiteCache();
}
private void updateSiteCache() {
SitePdu sitePdu = new SitePdu();
sitePdu.setSize(-1);
Rest<RespData<List<SitePdu>>> resp = siteFeign.list(sitePdu);
......@@ -131,7 +146,6 @@ public class SiteStatTaskImpl implements ITaskExcuteService {
}
private void updatePjSectionCache(SitePdu site) {
PjEvaluateStatQuery pjEvaluateStatQuery = new PjEvaluateStatQuery();
pjEvaluateStatQuery.setSiteId(site.getId());
......@@ -178,7 +192,41 @@ public class SiteStatTaskImpl implements ITaskExcuteService {
if (resp.getCode() == 1) {
List<SitePdu> sitePduList = resp.getData().getData();
for (SitePdu site : sitePduList) {
for (int i = 0; i < 4; i++) {
StopWatch allStopWatch = new StopWatch("allStopWatch");
StopWatch pjqStopWatch = new StopWatch("pjqStopWatch");
StopWatch pdjStopWatch = new StopWatch("pdjStopWatch");
allStopWatch.start();
AccessStatLogEntity statLogAllEntity = new AccessStatLogEntity();
statLogAllEntity.setCreateUserId(1L);
statLogAllEntity.setCreateTime(new Date());
statLogAllEntity.setSiteId(site.getId());
statLogAllEntity.setSiteCode(site.getSiteCode());
statLogAllEntity.setSiteName(site.getSiteName());
statLogAllEntity.setStatStartTime(new Date());
statLogAllEntity.setType(AccessTypeEnum.全部.getValue());
pjqStopWatch.start();
AccessStatLogEntity statLogEntity = new AccessStatLogEntity();
statLogEntity.setCreateUserId(1L);
statLogEntity.setCreateTime(new Date());
statLogEntity.setSiteId(site.getId());
statLogEntity.setSiteCode(site.getSiteCode());
statLogEntity.setSiteName(site.getSiteName());
AccessQuery accessQuery = new AccessQuery();
accessQuery.setSiteId(site.getId());
AccessEntity accessEntity = accessService.selectOne(accessQuery);
statLogEntity.setAccessId(accessEntity.getId());
statLogEntity.setStatStartTime(new Date());
statLogEntity.setType(AccessTypeEnum.评价器.getValue());
int range = 4;
for (int i = 0; i < range; i++) {
DateTime beforeDate = DateUtil.offsetDay(new Date(), -i);
int year = beforeDate.year();
int month = beforeDate.month() + 1;
......@@ -195,7 +243,21 @@ public class SiteStatTaskImpl implements ITaskExcuteService {
sitestatEntity.setDay(day);
//设置年月日
pjEvaluateStatService.updateSitePjStat(sitestatEntity, null);
}
pjqStopWatch.stop();
statLogEntity.setStatEndTime(new Date());
statLogEntity.setDuration(pjqStopWatch.getLastTaskTimeMillis());
accessStatLogService.save(statLogEntity, null);
pdjStopWatch.start();
statLogEntity.setStatStartTime(new Date());
statLogEntity.setType(AccessTypeEnum.排队机.getValue());
for (int i = 0; i < range; i++) {
DateTime beforeDate = DateUtil.offsetDay(new Date(), -i);
int year = beforeDate.year();
int month = beforeDate.month() + 1;
int day = beforeDate.dayOfMonth();
//设置排号
PhQueueStatEntity phQueueStatEntity = new PhQueueStatEntity();
phQueueStatEntity.initAttrValue();
......@@ -208,7 +270,17 @@ public class SiteStatTaskImpl implements ITaskExcuteService {
phQueueStatEntity.setDay(day);
phQueueStatService.updateSitePhStat(phQueueStatEntity, null);
}
pdjStopWatch.stop();
statLogEntity.setStatEndTime(new Date());
statLogEntity.setDuration(pjqStopWatch.getLastTaskTimeMillis());
accessStatLogService.save(statLogEntity, null);
for (int i = 0; i < range; i++) {
DateTime beforeDate = DateUtil.offsetDay(new Date(), -i);
int year = beforeDate.year();
int month = beforeDate.month() + 1;
int day = beforeDate.dayOfMonth();
StatEntity statEntity = new StatEntity();
statEntity.initAttrValue();
statEntity.setSiteId(site.getId());
......@@ -222,6 +294,11 @@ public class SiteStatTaskImpl implements ITaskExcuteService {
statService.updateSiteStat(statEntity, null);
}
allStopWatch.stop();
statLogAllEntity.setStatEndTime(new Date());
statLogAllEntity.setDuration(pjqStopWatch.getLastTaskTimeMillis());
accessStatLogService.save(statLogAllEntity, null);
}
}
}
......
package com.mortals.xhx.module.access.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.access.model.AccessStatLogEntity;
import java.util.List;
/**
* 统计日志Dao
* 统计日志 DAO接口
*
* @author zxfei
* @date 2024-07-26
*/
public interface AccessStatLogDao extends ICRUDDao<AccessStatLogEntity,Long>{
}
package com.mortals.xhx.module.access.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.access.dao.AccessStatLogDao;
import com.mortals.xhx.module.access.model.AccessStatLogEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 统计日志DaoImpl DAO接口
*
* @author zxfei
* @date 2024-07-26
*/
@Repository("accessStatLogDao")
public class AccessStatLogDaoImpl extends BaseCRUDDaoMybatis<AccessStatLogEntity,Long> implements AccessStatLogDao {
}
package com.mortals.xhx.module.access.model;
import java.util.List;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.math.BigDecimal;
......@@ -12,11 +13,11 @@ import com.mortals.xhx.module.access.model.vo.AccessVo;
import com.mortals.xhx.module.access.model.AccessSystemEntity;
import lombok.Data;
/**
* 区域接入实体对象
*
* @author zxfei
* @date 2024-07-02
*/
* 区域接入实体对象
*
* @author zxfei
* @date 2024-07-26
*/
@Data
public class AccessEntity extends AccessVo {
private static final long serialVersionUID = 1L;
......@@ -77,6 +78,14 @@ public class AccessEntity extends AccessVo {
* 接入类型 (area.区域,site.站点)
*/
private String type;
/**
* 接入开通时间
*/
private Date accessTime;
/**
* 描述内容
*/
private String content;
/**
* 区域接入系统信息
*/
......@@ -119,5 +128,7 @@ public class AccessEntity extends AccessVo {
this.latitude = "";
this.longitude = "";
this.type = "类型";
this.accessTime = null;
this.content = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.access.model;
import java.util.List;
import java.util.Date;
import java.util.List;
import com.mortals.xhx.module.access.model.AccessEntity;
/**
* 区域接入查询对象
*
* @author zxfei
* @date 2024-07-02
*/
* 区域接入查询对象
*
* @author zxfei
* @date 2024-07-26
*/
public class AccessQuery extends AccessEntity {
/** 开始 序号,主键,自增长 */
private Long idStart;
......@@ -142,6 +143,17 @@ public class AccessQuery extends AccessEntity {
/** 接入类型 (area.区域,site.站点)排除列表 */
private List <String> typeNotList;
/** 开始 接入开通时间 */
private String accessTimeStart;
/** 结束 接入开通时间 */
private String accessTimeEnd;
/** 描述内容 */
private List<String> contentList;
/** 描述内容排除列表 */
private List <String> contentNotList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<AccessQuery> orConditionList;
......@@ -922,6 +934,70 @@ public class AccessQuery extends AccessEntity {
this.typeNotList = typeNotList;
}
/**
* 获取 开始 接入开通时间
* @return accessTimeStart
*/
public String getAccessTimeStart(){
return this.accessTimeStart;
}
/**
* 设置 开始 接入开通时间
* @param accessTimeStart
*/
public void setAccessTimeStart(String accessTimeStart){
this.accessTimeStart = accessTimeStart;
}
/**
* 获取 结束 接入开通时间
* @return accessTimeEnd
*/
public String getAccessTimeEnd(){
return this.accessTimeEnd;
}
/**
* 设置 结束 接入开通时间
* @param accessTimeEnd
*/
public void setAccessTimeEnd(String accessTimeEnd){
this.accessTimeEnd = accessTimeEnd;
}
/**
* 获取 描述内容
* @return contentList
*/
public List<String> getContentList(){
return this.contentList;
}
/**
* 设置 描述内容
* @param contentList
*/
public void setContentList(List<String> contentList){
this.contentList = contentList;
}
/**
* 获取 描述内容
* @return contentNotList
*/
public List<String> getContentNotList(){
return this.contentNotList;
}
/**
* 设置 描述内容
* @param contentNotList
*/
public void setContentNotList(List<String> contentNotList){
this.contentNotList = contentNotList;
}
/**
* 设置 序号,主键,自增长
* @param id
......@@ -1368,6 +1444,26 @@ public class AccessQuery extends AccessEntity {
return this;
}
/**
* 设置 描述内容
* @param content
*/
public AccessQuery content(String content){
setContent(content);
return this;
}
/**
* 设置 描述内容
* @param contentList
*/
public AccessQuery contentList(List<String> contentList){
this.contentList = contentList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
......
package com.mortals.xhx.module.access.model;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.math.BigDecimal;
import cn.hutool.core.date.DateUtil;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.access.model.vo.AccessStatLogVo;
import lombok.Data;
/**
* 统计日志实体对象
*
* @author zxfei
* @date 2024-07-26
*/
@Data
public class AccessStatLogEntity extends AccessStatLogVo {
private static final long serialVersionUID = 1L;
/**
* 接入Id
*/
private Long accessId;
/**
* 站点Id
*/
private Long siteId;
/**
* 站点编码
*/
private String siteCode;
/**
* 站点名称
*/
private String siteName;
/**
* 统计开始时间
*/
private Date statStartTime;
/**
* 统计结束时间
*/
private Date statEndTime;
/**
* 站点Id
*/
private Long duration;
/**
* 类型 (ALL.全部,PJQ.评价器,PDJ.排队机)
*/
private String type;
/**
* 备注
*/
private String remark;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof AccessStatLogEntity) {
AccessStatLogEntity tmp = (AccessStatLogEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.accessId = 0L;
this.siteId = null;
this.siteCode = "";
this.siteName = "";
this.statStartTime = null;
this.statEndTime = null;
this.duration = 0L;
this.type = "全部";
this.remark = "";
}
}
\ 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.AccessStatLogEntity;
/**
* 统计日志查询对象
*
* @author zxfei
* @date 2024-07-26
*/
public class AccessStatLogQuery extends AccessStatLogEntity {
/** 开始 序号,主键,自增长 */
private Long idStart;
/** 结束 序号,主键,自增长 */
private Long idEnd;
/** 增加 序号,主键,自增长 */
private Long idIncrement;
/** 序号,主键,自增长列表 */
private List <Long> idList;
/** 序号,主键,自增长排除列表 */
private List <Long> idNotList;
/** 开始 接入Id */
private Long accessIdStart;
/** 结束 接入Id */
private Long accessIdEnd;
/** 增加 接入Id */
private Long accessIdIncrement;
/** 接入Id列表 */
private List <Long> accessIdList;
/** 接入Id排除列表 */
private List <Long> accessIdNotList;
/** 开始 站点Id */
private Long siteIdStart;
/** 结束 站点Id */
private Long siteIdEnd;
/** 增加 站点Id */
private Long siteIdIncrement;
/** 站点Id列表 */
private List <Long> siteIdList;
/** 站点Id排除列表 */
private List <Long> siteIdNotList;
/** 站点编码 */
private List<String> siteCodeList;
/** 站点编码排除列表 */
private List <String> siteCodeNotList;
/** 站点名称 */
private List<String> siteNameList;
/** 站点名称排除列表 */
private List <String> siteNameNotList;
/** 开始 统计开始时间 */
private String statStartTimeStart;
/** 结束 统计开始时间 */
private String statStartTimeEnd;
/** 开始 统计结束时间 */
private String statEndTimeStart;
/** 结束 统计结束时间 */
private String statEndTimeEnd;
/** 开始 站点Id */
private Long durationStart;
/** 结束 站点Id */
private Long durationEnd;
/** 增加 站点Id */
private Long durationIncrement;
/** 站点Id列表 */
private List <Long> durationList;
/** 站点Id排除列表 */
private List <Long> durationNotList;
/** 类型 (ALL.全部,PJQ.评价器,PDJ.排队机) */
private List<String> typeList;
/** 类型 (ALL.全部,PJQ.评价器,PDJ.排队机)排除列表 */
private List <String> typeNotList;
/** 备注 */
private List<String> remarkList;
/** 备注排除列表 */
private List <String> remarkNotList;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 创建用户排除列表 */
private List <Long> createUserIdNotList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** 开始 更新时间 */
private String updateTimeStart;
/** 结束 更新时间 */
private String updateTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<AccessStatLogQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<AccessStatLogQuery> andConditionList;
public AccessStatLogQuery(){}
/**
* 获取 开始 序号,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 序号,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 序号,主键,自增长
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 序号,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 序号,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 序号,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 序号,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 序号,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 序号,主键,自增长
* @return idNotList
*/
public List<Long> getIdNotList(){
return this.idNotList;
}
/**
* 设置 序号,主键,自增长
* @param idNotList
*/
public void setIdNotList(List<Long> idNotList){
this.idNotList = idNotList;
}
/**
* 获取 开始 接入Id
* @return accessIdStart
*/
public Long getAccessIdStart(){
return this.accessIdStart;
}
/**
* 设置 开始 接入Id
* @param accessIdStart
*/
public void setAccessIdStart(Long accessIdStart){
this.accessIdStart = accessIdStart;
}
/**
* 获取 结束 接入Id
* @return $accessIdEnd
*/
public Long getAccessIdEnd(){
return this.accessIdEnd;
}
/**
* 设置 结束 接入Id
* @param accessIdEnd
*/
public void setAccessIdEnd(Long accessIdEnd){
this.accessIdEnd = accessIdEnd;
}
/**
* 获取 增加 接入Id
* @return accessIdIncrement
*/
public Long getAccessIdIncrement(){
return this.accessIdIncrement;
}
/**
* 设置 增加 接入Id
* @param accessIdIncrement
*/
public void setAccessIdIncrement(Long accessIdIncrement){
this.accessIdIncrement = accessIdIncrement;
}
/**
* 获取 接入Id
* @return accessIdList
*/
public List<Long> getAccessIdList(){
return this.accessIdList;
}
/**
* 设置 接入Id
* @param accessIdList
*/
public void setAccessIdList(List<Long> accessIdList){
this.accessIdList = accessIdList;
}
/**
* 获取 接入Id
* @return accessIdNotList
*/
public List<Long> getAccessIdNotList(){
return this.accessIdNotList;
}
/**
* 设置 接入Id
* @param accessIdNotList
*/
public void setAccessIdNotList(List<Long> accessIdNotList){
this.accessIdNotList = accessIdNotList;
}
/**
* 获取 开始 站点Id
* @return siteIdStart
*/
public Long getSiteIdStart(){
return this.siteIdStart;
}
/**
* 设置 开始 站点Id
* @param siteIdStart
*/
public void setSiteIdStart(Long siteIdStart){
this.siteIdStart = siteIdStart;
}
/**
* 获取 结束 站点Id
* @return $siteIdEnd
*/
public Long getSiteIdEnd(){
return this.siteIdEnd;
}
/**
* 设置 结束 站点Id
* @param siteIdEnd
*/
public void setSiteIdEnd(Long siteIdEnd){
this.siteIdEnd = siteIdEnd;
}
/**
* 获取 增加 站点Id
* @return siteIdIncrement
*/
public Long getSiteIdIncrement(){
return this.siteIdIncrement;
}
/**
* 设置 增加 站点Id
* @param siteIdIncrement
*/
public void setSiteIdIncrement(Long siteIdIncrement){
this.siteIdIncrement = siteIdIncrement;
}
/**
* 获取 站点Id
* @return siteIdList
*/
public List<Long> getSiteIdList(){
return this.siteIdList;
}
/**
* 设置 站点Id
* @param siteIdList
*/
public void setSiteIdList(List<Long> siteIdList){
this.siteIdList = siteIdList;
}
/**
* 获取 站点Id
* @return siteIdNotList
*/
public List<Long> getSiteIdNotList(){
return this.siteIdNotList;
}
/**
* 设置 站点Id
* @param siteIdNotList
*/
public void setSiteIdNotList(List<Long> siteIdNotList){
this.siteIdNotList = siteIdNotList;
}
/**
* 获取 站点编码
* @return siteCodeList
*/
public List<String> getSiteCodeList(){
return this.siteCodeList;
}
/**
* 设置 站点编码
* @param siteCodeList
*/
public void setSiteCodeList(List<String> siteCodeList){
this.siteCodeList = siteCodeList;
}
/**
* 获取 站点编码
* @return siteCodeNotList
*/
public List<String> getSiteCodeNotList(){
return this.siteCodeNotList;
}
/**
* 设置 站点编码
* @param siteCodeNotList
*/
public void setSiteCodeNotList(List<String> siteCodeNotList){
this.siteCodeNotList = siteCodeNotList;
}
/**
* 获取 站点名称
* @return siteNameList
*/
public List<String> getSiteNameList(){
return this.siteNameList;
}
/**
* 设置 站点名称
* @param siteNameList
*/
public void setSiteNameList(List<String> siteNameList){
this.siteNameList = siteNameList;
}
/**
* 获取 站点名称
* @return siteNameNotList
*/
public List<String> getSiteNameNotList(){
return this.siteNameNotList;
}
/**
* 设置 站点名称
* @param siteNameNotList
*/
public void setSiteNameNotList(List<String> siteNameNotList){
this.siteNameNotList = siteNameNotList;
}
/**
* 获取 开始 统计开始时间
* @return statStartTimeStart
*/
public String getStatStartTimeStart(){
return this.statStartTimeStart;
}
/**
* 设置 开始 统计开始时间
* @param statStartTimeStart
*/
public void setStatStartTimeStart(String statStartTimeStart){
this.statStartTimeStart = statStartTimeStart;
}
/**
* 获取 结束 统计开始时间
* @return statStartTimeEnd
*/
public String getStatStartTimeEnd(){
return this.statStartTimeEnd;
}
/**
* 设置 结束 统计开始时间
* @param statStartTimeEnd
*/
public void setStatStartTimeEnd(String statStartTimeEnd){
this.statStartTimeEnd = statStartTimeEnd;
}
/**
* 获取 开始 统计结束时间
* @return statEndTimeStart
*/
public String getStatEndTimeStart(){
return this.statEndTimeStart;
}
/**
* 设置 开始 统计结束时间
* @param statEndTimeStart
*/
public void setStatEndTimeStart(String statEndTimeStart){
this.statEndTimeStart = statEndTimeStart;
}
/**
* 获取 结束 统计结束时间
* @return statEndTimeEnd
*/
public String getStatEndTimeEnd(){
return this.statEndTimeEnd;
}
/**
* 设置 结束 统计结束时间
* @param statEndTimeEnd
*/
public void setStatEndTimeEnd(String statEndTimeEnd){
this.statEndTimeEnd = statEndTimeEnd;
}
/**
* 获取 开始 站点Id
* @return durationStart
*/
public Long getDurationStart(){
return this.durationStart;
}
/**
* 设置 开始 站点Id
* @param durationStart
*/
public void setDurationStart(Long durationStart){
this.durationStart = durationStart;
}
/**
* 获取 结束 站点Id
* @return $durationEnd
*/
public Long getDurationEnd(){
return this.durationEnd;
}
/**
* 设置 结束 站点Id
* @param durationEnd
*/
public void setDurationEnd(Long durationEnd){
this.durationEnd = durationEnd;
}
/**
* 获取 增加 站点Id
* @return durationIncrement
*/
public Long getDurationIncrement(){
return this.durationIncrement;
}
/**
* 设置 增加 站点Id
* @param durationIncrement
*/
public void setDurationIncrement(Long durationIncrement){
this.durationIncrement = durationIncrement;
}
/**
* 获取 站点Id
* @return durationList
*/
public List<Long> getDurationList(){
return this.durationList;
}
/**
* 设置 站点Id
* @param durationList
*/
public void setDurationList(List<Long> durationList){
this.durationList = durationList;
}
/**
* 获取 站点Id
* @return durationNotList
*/
public List<Long> getDurationNotList(){
return this.durationNotList;
}
/**
* 设置 站点Id
* @param durationNotList
*/
public void setDurationNotList(List<Long> durationNotList){
this.durationNotList = durationNotList;
}
/**
* 获取 类型 (ALL.全部,PJQ.评价器,PDJ.排队机)
* @return typeList
*/
public List<String> getTypeList(){
return this.typeList;
}
/**
* 设置 类型 (ALL.全部,PJQ.评价器,PDJ.排队机)
* @param typeList
*/
public void setTypeList(List<String> typeList){
this.typeList = typeList;
}
/**
* 获取 类型 (ALL.全部,PJQ.评价器,PDJ.排队机)
* @return typeNotList
*/
public List<String> getTypeNotList(){
return this.typeNotList;
}
/**
* 设置 类型 (ALL.全部,PJQ.评价器,PDJ.排队机)
* @param typeNotList
*/
public void setTypeNotList(List<String> typeNotList){
this.typeNotList = typeNotList;
}
/**
* 获取 备注
* @return remarkList
*/
public List<String> getRemarkList(){
return this.remarkList;
}
/**
* 设置 备注
* @param remarkList
*/
public void setRemarkList(List<String> remarkList){
this.remarkList = remarkList;
}
/**
* 获取 备注
* @return remarkNotList
*/
public List<String> getRemarkNotList(){
return this.remarkNotList;
}
/**
* 设置 备注
* @param remarkNotList
*/
public void setRemarkNotList(List<String> remarkNotList){
this.remarkNotList = remarkNotList;
}
/**
* 获取 开始 创建用户
* @return createUserIdStart
*/
public Long getCreateUserIdStart(){
return this.createUserIdStart;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public void setCreateUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
}
/**
* 获取 结束 创建用户
* @return $createUserIdEnd
*/
public Long getCreateUserIdEnd(){
return this.createUserIdEnd;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public void setCreateUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
}
/**
* 获取 增加 创建用户
* @return createUserIdIncrement
*/
public Long getCreateUserIdIncrement(){
return this.createUserIdIncrement;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public void setCreateUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
}
/**
* 获取 创建用户
* @return createUserIdList
*/
public List<Long> getCreateUserIdList(){
return this.createUserIdList;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public void setCreateUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
}
/**
* 获取 创建用户
* @return createUserIdNotList
*/
public List<Long> getCreateUserIdNotList(){
return this.createUserIdNotList;
}
/**
* 设置 创建用户
* @param createUserIdNotList
*/
public void setCreateUserIdNotList(List<Long> createUserIdNotList){
this.createUserIdNotList = createUserIdNotList;
}
/**
* 获取 开始 创建时间
* @return createTimeStart
*/
public String getCreateTimeStart(){
return this.createTimeStart;
}
/**
* 设置 开始 创建时间
* @param createTimeStart
*/
public void setCreateTimeStart(String createTimeStart){
this.createTimeStart = createTimeStart;
}
/**
* 获取 结束 创建时间
* @return createTimeEnd
*/
public String getCreateTimeEnd(){
return this.createTimeEnd;
}
/**
* 设置 结束 创建时间
* @param createTimeEnd
*/
public void setCreateTimeEnd(String createTimeEnd){
this.createTimeEnd = createTimeEnd;
}
/**
* 获取 开始 更新时间
* @return updateTimeStart
*/
public String getUpdateTimeStart(){
return this.updateTimeStart;
}
/**
* 设置 开始 更新时间
* @param updateTimeStart
*/
public void setUpdateTimeStart(String updateTimeStart){
this.updateTimeStart = updateTimeStart;
}
/**
* 获取 结束 更新时间
* @return updateTimeEnd
*/
public String getUpdateTimeEnd(){
return this.updateTimeEnd;
}
/**
* 设置 结束 更新时间
* @param updateTimeEnd
*/
public void setUpdateTimeEnd(String updateTimeEnd){
this.updateTimeEnd = updateTimeEnd;
}
/**
* 设置 序号,主键,自增长
* @param id
*/
public AccessStatLogQuery id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 序号,主键,自增长
* @param idStart
*/
public AccessStatLogQuery idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 序号,主键,自增长
* @param idEnd
*/
public AccessStatLogQuery idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 序号,主键,自增长
* @param idIncrement
*/
public AccessStatLogQuery idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 序号,主键,自增长
* @param idList
*/
public AccessStatLogQuery idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 序号,主键,自增长
* @param idNotList
*/
public AccessStatLogQuery idNotList(List<Long> idNotList){
this.idNotList = idNotList;
return this;
}
/**
* 设置 接入Id
* @param accessId
*/
public AccessStatLogQuery accessId(Long accessId){
setAccessId(accessId);
return this;
}
/**
* 设置 开始 接入Id
* @param accessIdStart
*/
public AccessStatLogQuery accessIdStart(Long accessIdStart){
this.accessIdStart = accessIdStart;
return this;
}
/**
* 设置 结束 接入Id
* @param accessIdEnd
*/
public AccessStatLogQuery accessIdEnd(Long accessIdEnd){
this.accessIdEnd = accessIdEnd;
return this;
}
/**
* 设置 增加 接入Id
* @param accessIdIncrement
*/
public AccessStatLogQuery accessIdIncrement(Long accessIdIncrement){
this.accessIdIncrement = accessIdIncrement;
return this;
}
/**
* 设置 接入Id
* @param accessIdList
*/
public AccessStatLogQuery accessIdList(List<Long> accessIdList){
this.accessIdList = accessIdList;
return this;
}
/**
* 设置 接入Id
* @param accessIdNotList
*/
public AccessStatLogQuery accessIdNotList(List<Long> accessIdNotList){
this.accessIdNotList = accessIdNotList;
return this;
}
/**
* 设置 站点Id
* @param siteId
*/
public AccessStatLogQuery siteId(Long siteId){
setSiteId(siteId);
return this;
}
/**
* 设置 开始 站点Id
* @param siteIdStart
*/
public AccessStatLogQuery siteIdStart(Long siteIdStart){
this.siteIdStart = siteIdStart;
return this;
}
/**
* 设置 结束 站点Id
* @param siteIdEnd
*/
public AccessStatLogQuery siteIdEnd(Long siteIdEnd){
this.siteIdEnd = siteIdEnd;
return this;
}
/**
* 设置 增加 站点Id
* @param siteIdIncrement
*/
public AccessStatLogQuery siteIdIncrement(Long siteIdIncrement){
this.siteIdIncrement = siteIdIncrement;
return this;
}
/**
* 设置 站点Id
* @param siteIdList
*/
public AccessStatLogQuery siteIdList(List<Long> siteIdList){
this.siteIdList = siteIdList;
return this;
}
/**
* 设置 站点Id
* @param siteIdNotList
*/
public AccessStatLogQuery siteIdNotList(List<Long> siteIdNotList){
this.siteIdNotList = siteIdNotList;
return this;
}
/**
* 设置 站点编码
* @param siteCode
*/
public AccessStatLogQuery siteCode(String siteCode){
setSiteCode(siteCode);
return this;
}
/**
* 设置 站点编码
* @param siteCodeList
*/
public AccessStatLogQuery siteCodeList(List<String> siteCodeList){
this.siteCodeList = siteCodeList;
return this;
}
/**
* 设置 站点名称
* @param siteName
*/
public AccessStatLogQuery siteName(String siteName){
setSiteName(siteName);
return this;
}
/**
* 设置 站点名称
* @param siteNameList
*/
public AccessStatLogQuery siteNameList(List<String> siteNameList){
this.siteNameList = siteNameList;
return this;
}
/**
* 设置 站点Id
* @param duration
*/
public AccessStatLogQuery duration(Long duration){
setDuration(duration);
return this;
}
/**
* 设置 开始 站点Id
* @param durationStart
*/
public AccessStatLogQuery durationStart(Long durationStart){
this.durationStart = durationStart;
return this;
}
/**
* 设置 结束 站点Id
* @param durationEnd
*/
public AccessStatLogQuery durationEnd(Long durationEnd){
this.durationEnd = durationEnd;
return this;
}
/**
* 设置 增加 站点Id
* @param durationIncrement
*/
public AccessStatLogQuery durationIncrement(Long durationIncrement){
this.durationIncrement = durationIncrement;
return this;
}
/**
* 设置 站点Id
* @param durationList
*/
public AccessStatLogQuery durationList(List<Long> durationList){
this.durationList = durationList;
return this;
}
/**
* 设置 站点Id
* @param durationNotList
*/
public AccessStatLogQuery durationNotList(List<Long> durationNotList){
this.durationNotList = durationNotList;
return this;
}
/**
* 设置 类型 (ALL.全部,PJQ.评价器,PDJ.排队机)
* @param type
*/
public AccessStatLogQuery type(String type){
setType(type);
return this;
}
/**
* 设置 类型 (ALL.全部,PJQ.评价器,PDJ.排队机)
* @param typeList
*/
public AccessStatLogQuery typeList(List<String> typeList){
this.typeList = typeList;
return this;
}
/**
* 设置 备注
* @param remark
*/
public AccessStatLogQuery remark(String remark){
setRemark(remark);
return this;
}
/**
* 设置 备注
* @param remarkList
*/
public AccessStatLogQuery remarkList(List<String> remarkList){
this.remarkList = remarkList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public AccessStatLogQuery createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public AccessStatLogQuery createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public AccessStatLogQuery createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public AccessStatLogQuery createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public AccessStatLogQuery createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 设置 创建用户
* @param createUserIdNotList
*/
public AccessStatLogQuery createUserIdNotList(List<Long> createUserIdNotList){
this.createUserIdNotList = createUserIdNotList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<AccessStatLogQuery> 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<AccessStatLogQuery> 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<AccessStatLogQuery> 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<AccessStatLogQuery> 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.AccessStatLogEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import com.mortals.framework.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
/**
* 统计日志视图对象
*
* @author zxfei
* @date 2024-07-26
*/
@Data
public class AccessStatLogVo extends BaseEntityLong {
/** 序号,主键,自增长列表 */
private List <Long> idList;
}
\ 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.AccessStatLogEntity;
import com.mortals.xhx.module.access.dao.AccessStatLogDao;
/**
* AccessStatLogService
*
* 统计日志 service接口
*
* @author zxfei
* @date 2024-07-26
*/
public interface AccessStatLogService extends ICRUDService<AccessStatLogEntity,Long>{
AccessStatLogDao getDao();
}
\ No newline at end of file
package com.mortals.xhx.module.access.service.impl;
import org.springframework.beans.BeanUtils;
import java.util.function.Function;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.access.dao.AccessStatLogDao;
import com.mortals.xhx.module.access.model.AccessStatLogEntity;
import com.mortals.xhx.module.access.service.AccessStatLogService;
import lombok.extern.slf4j.Slf4j;
/**
* AccessStatLogService
* 统计日志 service实现
*
* @author zxfei
* @date 2024-07-26
*/
@Service("accessStatLogService")
@Slf4j
public class AccessStatLogServiceImpl extends AbstractCRUDServiceImpl<AccessStatLogDao, AccessStatLogEntity, Long> implements AccessStatLogService {
}
\ 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.AccessStatLogEntity;
import com.mortals.xhx.module.access.service.AccessStatLogService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
import com.mortals.xhx.common.code.*;
/**
*
* 统计日志
*
* @author zxfei
* @date 2024-07-26
*/
@RestController
@RequestMapping("access/stat/log")
public class AccessStatLogController extends BaseCRUDJsonBodyMappingController<AccessStatLogService,AccessStatLogEntity,Long> {
@Autowired
private ParamService paramService;
public AccessStatLogController(){
super.setModuleDesc( "统计日志");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "type", TypeEnum.getEnumMap());
super.init(model, context);
}
}
\ No newline at end of file
......@@ -7,6 +7,8 @@ import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.module.access.service.AccessService;
import com.mortals.xhx.module.access.service.AccessStatLogService;
import com.mortals.xhx.module.ph.model.PhQueueEntity;
import com.mortals.xhx.module.ph.model.PhQueueQuery;
import com.mortals.xhx.module.ph.model.PhQueueStatQuery;
......@@ -40,6 +42,7 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
@Autowired
private PhQueueService phQueueService;
@Override
public Rest<Void> updateSitePhStat(PhQueueStatEntity entity, Context context) {
......@@ -215,7 +218,7 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
List<PhQueueStatEntity> saveAndUpdatelist = businessAndSectionCollect.entrySet().parallelStream().map(item -> {
String vals = item.getKey();
String[] split = StrUtil.splitToArray(vals,"&");
String[] split = StrUtil.splitToArray(vals, "&");
if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1])) return null;
Double intAvg = item.getValue().parallelStream().mapToInt(e -> e.getWaitTime()).average().orElse(0D);
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
......@@ -236,7 +239,7 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
.collect(Collectors.groupingBy(x -> x.getBusiness() + "&" + x.getWindowFromnum()));
List<PhQueueStatEntity> saveAndUpdatelist = businessAndSectionCollect.entrySet().parallelStream().map(item -> {
String vals = item.getKey();
String[] split = StrUtil.splitToArray(vals,"&");
String[] split = StrUtil.splitToArray(vals, "&");
if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1])) return null;
Double intAvg = item.getValue().parallelStream().mapToInt(e -> e.getWaitTime()).average().orElse(0D);
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
......@@ -257,7 +260,7 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
.collect(Collectors.groupingBy(x -> x.getSectionName() + "&" + x.getWindowFromnum()));
List<PhQueueStatEntity> saveAndUpdatelist = businessAndSectionCollect.entrySet().parallelStream().map(item -> {
String vals = item.getKey();
String[] split = StrUtil.splitToArray(vals,"&");
String[] split = StrUtil.splitToArray(vals, "&");
if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1])) return null;
Double intAvg = item.getValue().parallelStream().mapToInt(e -> e.getWaitTime()).average().orElse(0D);
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
......@@ -277,7 +280,7 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
.collect(Collectors.groupingBy(x -> x.getBusiness() + "&" + x.getSectionName() + "&" + x.getWindowFromnum()));
List<PhQueueStatEntity> saveAndUpdatelist = businessAndSectionCollect.entrySet().parallelStream().map(item -> {
String vals = item.getKey();
String[] split = StrUtil.splitToArray(vals,"&");
String[] split = StrUtil.splitToArray(vals, "&");
if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1]) || ObjectUtils.isEmpty(split[2]))
return null;
Double intAvg = item.getValue().parallelStream().mapToInt(e -> e.getWaitTime()).average().orElse(0D);
......@@ -351,19 +354,14 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
}
public static void main(String[] args) {
String str="adbc&&";
String str = "adbc&&";
List<String> split = StrUtil.split(str, "&");
String[] strings = StrUtil.splitToArray(str, "&");
System.out.println(split.get(0));
System.out.println(split.get(1));
System.out.println(strings[0]);
System.out.println(strings[1]);
System.out.println(strings[2]);
}
}
\ No newline at end of file
......@@ -11,11 +11,17 @@ import com.mortals.framework.service.ICacheService;
import com.mortals.framework.util.ThreadPool;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.AccessTypeEnum;
import com.mortals.xhx.common.code.GroupListEnum;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.site.SitePdu;
import com.mortals.xhx.feign.site.ISiteFeign;
import com.mortals.xhx.module.access.model.AccessEntity;
import com.mortals.xhx.module.access.model.AccessQuery;
import com.mortals.xhx.module.access.model.AccessStatLogEntity;
import com.mortals.xhx.module.access.service.AccessService;
import com.mortals.xhx.module.access.service.AccessStatLogService;
import com.mortals.xhx.module.ph.model.PhQueueQuery;
import com.mortals.xhx.module.ph.model.PhQueueStatEntity;
import com.mortals.xhx.module.ph.model.PhQueueStatQuery;
......@@ -44,15 +50,16 @@ import java.util.stream.Collectors;
@Slf4j
public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQueueStatService, PhQueueStatEntity, Long> {
@Autowired
private ParamService paramService;
@Autowired
private ISiteFeign siteFeign;
@Autowired
private PhQueueStatService phQueueStatService;
@Autowired
private ICacheService cacheService;
@Autowired
private AccessService accessService;
@Autowired
private AccessStatLogService accessStatLogService;
public PhQueueStatController() {
super.setModuleDesc("排队叫号汇总统计");
......@@ -60,21 +67,9 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
@Override
protected void init(Map<String, Object> model, Context context) {
//通过站点 查询存在的部门 大厅等
Object siteId = model.get("siteId");
if (!ObjectUtils.isEmpty(siteId)) {
/*
PhQueueStatQuery queueStatQuery = new PhQueueStatQuery();
queueStatQuery.setSiteId((Long) siteId);
List<PhQueueStatEntity> phQueueStatEntities = this.service.find(queueStatQuery, context);
Map<String, String> sectionNameMap = phQueueStatEntities.stream().filter(f -> !ObjectUtils.isEmpty(f.getSectionName())).collect(Collectors.toMap(PhQueueStatEntity::getSectionName, PhQueueStatEntity::getSectionName, (k1, k2) -> k2));
Map<String, String> hallNameMap = phQueueStatEntities.stream().filter(f -> !ObjectUtils.isEmpty(f.getHallName())).collect(Collectors.toMap(PhQueueStatEntity::getHallName, PhQueueStatEntity::getHallName, (k1, k2) -> k2));
Map<String, String> windowFromnumMap = phQueueStatEntities.stream().filter(f -> !ObjectUtils.isEmpty(f.getWindowFromnum())).collect(Collectors.toMap(PhQueueStatEntity::getWindowFromnum, PhQueueStatEntity::getWindowFromnum, (k1, k2) -> k2));
Map<String, String> bussinessMap = phQueueStatEntities.stream().filter(f -> !ObjectUtils.isEmpty(f.getBusiness())).collect(Collectors.toMap(PhQueueStatEntity::getBusiness, PhQueueStatEntity::getBusiness, (k1, k2) -> k2));
*/
Map<String, String> sectionNameMap = cacheService.hgetAll(RedisKey.KEY_SITE_QUEUE_SECTIONNAME_CHCHE + siteId);
Map<String, String> hallNameMap = cacheService.hgetAll(RedisKey.KEY_SITE_QUEUE_HALLNAME_CHCHE + siteId);
Map<String, String> windowFromnumMap = cacheService.hgetAll(RedisKey.KEY_SITE_QUEUE_WINDOW_CHCHE + siteId);
......@@ -82,16 +77,24 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
List<Map<String, String>> m1 = sectionNameMap.entrySet().stream()
.sorted((e1, e2) -> Integer.compare(Integer.parseInt(e2.getValue()), Integer.parseInt(e1.getValue())))
.map(item->new HashMap<String,String>(){{ put(item.getKey(), item.getValue());}}).collect(Collectors.toList());
.map(item -> new HashMap<String, String>() {{
put(item.getKey(), item.getValue());
}}).collect(Collectors.toList());
List<Map<String, String>> m2 = hallNameMap.entrySet().stream()
.sorted((e1, e2) -> Integer.compare(Integer.parseInt(e2.getValue()), Integer.parseInt(e1.getValue())))
.map(item->new HashMap<String,String>(){{ put(item.getKey(), item.getValue());}}).collect(Collectors.toList());
.map(item -> new HashMap<String, String>() {{
put(item.getKey(), item.getValue());
}}).collect(Collectors.toList());
List<Map<String, String>> m3 = windowFromnumMap.entrySet().stream()
.sorted((e1, e2) -> Integer.compare(Integer.parseInt(e2.getValue()), Integer.parseInt(e1.getValue())))
.map(item->new HashMap<String,String>(){{ put(item.getKey(), item.getValue());}}).collect(Collectors.toList());
.map(item -> new HashMap<String, String>() {{
put(item.getKey(), item.getValue());
}}).collect(Collectors.toList());
List<Map<String, String>> m4 = bussinessMap.entrySet().stream()
.sorted((e1, e2) -> Integer.compare(Integer.parseInt(e2.getValue()), Integer.parseInt(e1.getValue())))
.map(item->new HashMap<String,String>(){{ put(item.getKey(), item.getValue());}}).collect(Collectors.toList());
.map(item -> new HashMap<String, String>() {{
put(item.getKey(), item.getValue());
}}).collect(Collectors.toList());
this.addDict(model, "sectionNameList", m1);
this.addDict(model, "hallNameList", m2);
......@@ -106,10 +109,14 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
@Override
protected void doListBefore(PhQueueStatEntity query, Map<String, Object> model, Context context) throws AppException {
if (ObjectUtils.isEmpty(query.getHallName())&&ObjectUtils.isEmpty(query.getHallNameList())&&ObjectUtils.isEmpty(query.getHallNameNotList())) query.setHallNameList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getSectionName())&&ObjectUtils.isEmpty(query.getSectionNameList())&&ObjectUtils.isEmpty(query.getSectionNameNotList())) query.setSectionNameList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getBusiness())&&ObjectUtils.isEmpty(query.getBusinessList())&&ObjectUtils.isEmpty(query.getBusinessNotList())) query.setBusinessList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getWindowFromnum())&&ObjectUtils.isEmpty(query.getWindowFromnumList())&&ObjectUtils.isEmpty(query.getWindowFromnumNotList())) query.setWindowFromnumList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getHallName()) && ObjectUtils.isEmpty(query.getHallNameList()) && ObjectUtils.isEmpty(query.getHallNameNotList()))
query.setHallNameList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getSectionName()) && ObjectUtils.isEmpty(query.getSectionNameList()) && ObjectUtils.isEmpty(query.getSectionNameNotList()))
query.setSectionNameList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getBusiness()) && ObjectUtils.isEmpty(query.getBusinessList()) && ObjectUtils.isEmpty(query.getBusinessNotList()))
query.setBusinessList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getWindowFromnum()) && ObjectUtils.isEmpty(query.getWindowFromnumList()) && ObjectUtils.isEmpty(query.getWindowFromnumNotList()))
query.setWindowFromnumList(Arrays.asList(""));
addGroup(query);
model.put("siteId", query.getSiteId());
}
......@@ -123,16 +130,16 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
}
if (!ObjectUtils.isEmpty(query.getSectionName())
||!ObjectUtils.isEmpty(query.getSectionNameList())
||!ObjectUtils.isEmpty(query.getSectionNameNotList())) {
|| !ObjectUtils.isEmpty(query.getSectionNameList())
|| !ObjectUtils.isEmpty(query.getSectionNameNotList())) {
List<String> groupList = query.getGroupList();
if (!groupList.contains("sectionName")) {
groupList.add("sectionName");
}
}
if (!ObjectUtils.isEmpty(query.getHallName())
||!ObjectUtils.isEmpty(query.getHallNameList())
||!ObjectUtils.isEmpty(query.getHallNameNotList())) {
|| !ObjectUtils.isEmpty(query.getHallNameList())
|| !ObjectUtils.isEmpty(query.getHallNameNotList())) {
List<String> groupList = query.getGroupList();
if (!groupList.contains("hallName")) {
groupList.add("hallName");
......@@ -140,8 +147,8 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
}
if (!ObjectUtils.isEmpty(query.getWindowFromnum())
||!ObjectUtils.isEmpty(query.getWindowFromnumList())
||!ObjectUtils.isEmpty(query.getWindowFromnumNotList())) {
|| !ObjectUtils.isEmpty(query.getWindowFromnumList())
|| !ObjectUtils.isEmpty(query.getWindowFromnumNotList())) {
List<String> groupList = query.getGroupList();
if (!groupList.contains("windowFromnum")) {
groupList.add("windowFromnum");
......@@ -149,8 +156,8 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
}
if (!ObjectUtils.isEmpty(query.getBusiness())
||!ObjectUtils.isEmpty(query.getBusinessList())
||!ObjectUtils.isEmpty(query.getHallNameNotList())) {
|| !ObjectUtils.isEmpty(query.getBusinessList())
|| !ObjectUtils.isEmpty(query.getHallNameNotList())) {
List<String> groupList = query.getGroupList();
if (!groupList.contains("business")) {
groupList.add("business");
......@@ -168,7 +175,6 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
String busiDesc = "查询" + this.getModuleDesc();
int code = 1;
try {
Runnable runnable = new Runnable() {
@Override
public void run() {
......@@ -176,19 +182,33 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
DateTime attendStart = DateUtil.parseDate(phQueueQuery.getTaketimeStart());
DateTime attendEnd = DateUtil.parseDate(phQueueQuery.getTaketimeEnd());
Long compare = DateUtil.between(attendEnd, attendStart, DateUnit.DAY);
StopWatch stopWatch = new StopWatch("stopwatch");
StopWatch stopWatch = new StopWatch();
log.info("计算天数区间:{}", compare);
SitePdu sitePdu = new SitePdu();
sitePdu.setSize(-1);
Rest<RespData<List<SitePdu>>> resp = siteFeign.list(sitePdu);
if (resp.getCode() == 1) {
List<SitePdu> sitePduList = resp.getData().getData();
for (SitePdu site : sitePduList) {
stopWatch.start("站点排号统计开始");
AccessStatLogEntity statLogEntity = new AccessStatLogEntity();
statLogEntity.setStatStartTime(new Date());
statLogEntity.setType(AccessTypeEnum.排队机.getValue());
statLogEntity.setCreateUserId(1L);
statLogEntity.setCreateTime(new Date());
statLogEntity.setSiteId(site.getId());
statLogEntity.setSiteCode(site.getSiteCode());
statLogEntity.setSiteName(site.getSiteName());
AccessQuery accessQuery = new AccessQuery();
accessQuery.setSiteId(site.getId());
AccessEntity accessEntity = accessService.selectOne(accessQuery);
statLogEntity.setAccessId(accessEntity.getId());
for (int i = 0; i <= compare.intValue(); i++) {
DateTime curDate = DateUtil.offsetDay(attendStart, i);
log.info("记录日期:{}", curDate.toDateStr());
stopWatch.start("执行本地方法");
if (resp.getCode() == 1) {
List<SitePdu> sitePduList = resp.getData().getData();
sitePduList.stream().forEach(site -> {
PhQueueStatEntity sitestatEntity = new PhQueueStatEntity();
sitestatEntity.initAttrValue();
sitestatEntity.setSiteId(site.getId());
......@@ -200,17 +220,19 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
sitestatEntity.setDay(curDate.dayOfMonth());
//设置年月日
phQueueStatService.updateSitePhStat(sitestatEntity, context);
});
}
stopWatch.stop();
log.info("日期:{} 完成,耗时:{}ms", curDate.toDateStr(), stopWatch.getLastTaskTimeMillis());
statLogEntity.setStatEndTime(new Date());
statLogEntity.setDuration(stopWatch.getLastTaskTimeMillis());
accessStatLogService.save(statLogEntity, context);
}
//log.info("日期:{} 完成,耗时:{}ms", curDate.toDateStr(), stopWatch.getLastTaskTimeMillis());
}
}
};
ThreadPool.getInstance().execute(runnable);
model.put("message_info", busiDesc + "成功");
this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception e) {
......@@ -225,4 +247,22 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
return ret;
}
public static void main(String[] args) throws InterruptedException {
StopWatch stopWatch = new StopWatch("stopwatch");
stopWatch.start();
Thread.sleep(1200);
stopWatch.stop();
System.out.println(stopWatch.getLastTaskTimeMillis());
stopWatch.start();
Thread.sleep(1200);
stopWatch.stop();
System.out.println(stopWatch.getLastTaskTimeMillis());
}
}
\ No newline at end of file
......@@ -13,6 +13,11 @@ import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.site.SitePdu;
import com.mortals.xhx.feign.site.ISiteFeign;
import com.mortals.xhx.module.access.model.AccessEntity;
import com.mortals.xhx.module.access.model.AccessQuery;
import com.mortals.xhx.module.access.model.AccessStatLogEntity;
import com.mortals.xhx.module.access.service.AccessService;
import com.mortals.xhx.module.access.service.AccessStatLogService;
import com.mortals.xhx.module.pj.model.PjEvaluateQuery;
import com.mortals.xhx.module.pj.model.PjEvaluateStatQuery;
import lombok.extern.slf4j.Slf4j;
......@@ -27,10 +32,7 @@ import com.mortals.framework.model.Context;
import com.mortals.xhx.module.pj.model.PjEvaluateStatEntity;
import com.mortals.xhx.module.pj.service.PjEvaluateStatService;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import com.mortals.xhx.common.code.*;
......@@ -53,6 +55,11 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<
@Autowired
private ICacheService cacheService;
@Autowired
private AccessService accessService;
@Autowired
private AccessStatLogService accessStatLogService;
public PjEvaluateStatController() {
super.setModuleDesc("评价汇总统计");
}
......@@ -65,28 +72,25 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<
//通过站点 查询存在的部门 大厅等
Object siteId = model.get("siteId");
if (!ObjectUtils.isEmpty(siteId)) {
/*
PjEvaluateStatQuery pjEvaluateStatQuery = new PjEvaluateStatQuery();
pjEvaluateStatQuery.setSiteId((Long) siteId);
List<PjEvaluateStatEntity> pjEvaluateStatEntities = this.service.find(pjEvaluateStatQuery, context);
Map<String, String> sectionNameMap = pjEvaluateStatEntities.parallelStream().filter(f -> !ObjectUtils.isEmpty(f.getSectionName())).collect(Collectors.toMap(PjEvaluateStatEntity::getSectionName, PjEvaluateStatEntity::getSectionName, (k1, k2) -> k2));
Map<String, String> hallNameMap = pjEvaluateStatEntities.parallelStream().filter(f -> !ObjectUtils.isEmpty(f.getHallName())).collect(Collectors.toMap(PjEvaluateStatEntity::getHallName, PjEvaluateStatEntity::getHallName, (k1, k2) -> k2));
Map<String, String> windowFromnumMap = pjEvaluateStatEntities.parallelStream().filter(f -> !ObjectUtils.isEmpty(f.getWindowFromnum())).collect(Collectors.toMap(PjEvaluateStatEntity::getWindowFromnum, PjEvaluateStatEntity::getWindowFromnum, (k1, k2) -> k2));
*/
Map<String, String> sectionNameMap = cacheService.hgetAll(RedisKey.KEY_SITE_PJ_SECTIONNAME_CHCHE + siteId);
Map<String, String> hallNameMap = cacheService.hgetAll(RedisKey.KEY_SITE_PJ_HALLNAME_CHCHE + siteId);
Map<String, String> windowFromnumMap = cacheService.hgetAll(RedisKey.KEY_SITE_PJ_WINDOW_CHCHE + siteId);
List<Map<String, String>> m1 = sectionNameMap.entrySet().stream()
.sorted((e1, e2) -> Integer.compare(Integer.parseInt(e2.getValue()), Integer.parseInt(e1.getValue())))
.map(item->new HashMap<String,String>(){{ put(item.getKey(), item.getValue());}}).collect(Collectors.toList());
.map(item -> new HashMap<String, String>() {{
put(item.getKey(), item.getValue());
}}).collect(Collectors.toList());
List<Map<String, String>> m2 = hallNameMap.entrySet().stream()
.sorted((e1, e2) -> Integer.compare(Integer.parseInt(e2.getValue()), Integer.parseInt(e1.getValue())))
.map(item->new HashMap<String,String>(){{ put(item.getKey(), item.getValue());}}).collect(Collectors.toList());
.map(item -> new HashMap<String, String>() {{
put(item.getKey(), item.getValue());
}}).collect(Collectors.toList());
List<Map<String, String>> m3 = windowFromnumMap.entrySet().stream()
.sorted((e1, e2) -> Integer.compare(Integer.parseInt(e2.getValue()), Integer.parseInt(e1.getValue())))
.map(item->new HashMap<String,String>(){{ put(item.getKey(), item.getValue());}}).collect(Collectors.toList());
.map(item -> new HashMap<String, String>() {{
put(item.getKey(), item.getValue());
}}).collect(Collectors.toList());
this.addDict(model, "sectionNameList", m1);
......@@ -101,10 +105,14 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<
@Override
protected void doListBefore(PjEvaluateStatEntity query, Map<String, Object> model, Context context) throws AppException {
if (ObjectUtils.isEmpty(query.getHallName())&&ObjectUtils.isEmpty(query.getHallNameList())&&ObjectUtils.isEmpty(query.getHallNameNotList())) query.setHallNameList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getSectionName())&&ObjectUtils.isEmpty(query.getSectionNameList())&&ObjectUtils.isEmpty(query.getSectionNameNotList())) query.setSectionNameList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getPjOption())&&ObjectUtils.isEmpty(query.getPjOptionList())&&ObjectUtils.isEmpty(query.getPjOptionNotList())) query.setPjOptionList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getWindowFromnum())&&ObjectUtils.isEmpty(query.getWindowFromnumList())&&ObjectUtils.isEmpty(query.getWindowFromnumNotList())) query.setWindowFromnumList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getHallName()) && ObjectUtils.isEmpty(query.getHallNameList()) && ObjectUtils.isEmpty(query.getHallNameNotList()))
query.setHallNameList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getSectionName()) && ObjectUtils.isEmpty(query.getSectionNameList()) && ObjectUtils.isEmpty(query.getSectionNameNotList()))
query.setSectionNameList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getPjOption()) && ObjectUtils.isEmpty(query.getPjOptionList()) && ObjectUtils.isEmpty(query.getPjOptionNotList()))
query.setPjOptionList(Arrays.asList(""));
if (ObjectUtils.isEmpty(query.getWindowFromnum()) && ObjectUtils.isEmpty(query.getWindowFromnumList()) && ObjectUtils.isEmpty(query.getWindowFromnumNotList()))
query.setWindowFromnumList(Arrays.asList(""));
//年月日
//根据查询条件自动添加分组字段
addGroup(query);
......@@ -122,16 +130,16 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<
}
if (!ObjectUtils.isEmpty(query.getSectionName())
||!ObjectUtils.isEmpty(query.getSectionNameList())
||!ObjectUtils.isEmpty(query.getSectionNameNotList())) {
|| !ObjectUtils.isEmpty(query.getSectionNameList())
|| !ObjectUtils.isEmpty(query.getSectionNameNotList())) {
List<String> groupList = query.getGroupList();
if (!groupList.contains("sectionName")) {
groupList.add("sectionName");
}
}
if (!ObjectUtils.isEmpty(query.getHallName())
||!ObjectUtils.isEmpty(query.getHallNameList())
||!ObjectUtils.isEmpty(query.getHallNameNotList())) {
|| !ObjectUtils.isEmpty(query.getHallNameList())
|| !ObjectUtils.isEmpty(query.getHallNameNotList())) {
List<String> groupList = query.getGroupList();
if (!groupList.contains("hallName")) {
groupList.add("hallName");
......@@ -139,8 +147,8 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<
}
if (!ObjectUtils.isEmpty(query.getWindowFromnum())
||!ObjectUtils.isEmpty(query.getWindowFromnumList())
||!ObjectUtils.isEmpty(query.getWindowFromnumNotList())) {
|| !ObjectUtils.isEmpty(query.getWindowFromnumList())
|| !ObjectUtils.isEmpty(query.getWindowFromnumNotList())) {
List<String> groupList = query.getGroupList();
if (!groupList.contains("windowFromnum")) {
groupList.add("windowFromnum");
......@@ -148,8 +156,8 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<
}
if (!ObjectUtils.isEmpty(query.getPjOption())
||!ObjectUtils.isEmpty(query.getPjOptionList())
||!ObjectUtils.isEmpty(query.getPjOptionNotList())) {
|| !ObjectUtils.isEmpty(query.getPjOptionList())
|| !ObjectUtils.isEmpty(query.getPjOptionNotList())) {
List<String> groupList = query.getGroupList();
if (!groupList.contains("pjOption")) {
groupList.add("pjOption");
......@@ -180,13 +188,28 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<
SitePdu sitePdu = new SitePdu();
sitePdu.setSize(-1);
Rest<RespData<List<SitePdu>>> resp = siteFeign.list(sitePdu);
List<SitePdu> sitePduList = resp.getData().getData();
if (resp.getCode() == 1) {
for (SitePdu site : sitePduList) {
stopWatch.start("站点评价统计开始");
AccessStatLogEntity statLogEntity = new AccessStatLogEntity();
statLogEntity.setStatStartTime(new Date());
statLogEntity.setType(AccessTypeEnum.排队机.getValue());
statLogEntity.setCreateUserId(1L);
statLogEntity.setCreateTime(new Date());
statLogEntity.setSiteId(site.getId());
statLogEntity.setSiteCode(site.getSiteCode());
statLogEntity.setSiteName(site.getSiteName());
AccessQuery accessQuery = new AccessQuery();
accessQuery.setSiteId(site.getId());
AccessEntity accessEntity = accessService.selectOne(accessQuery);
statLogEntity.setAccessId(accessEntity.getId());
for (int i = 0; i <= compare.intValue(); i++) {
DateTime curDate = DateUtil.offsetDay(attendStart, i);
log.info("记录日期:{}", curDate.toDateStr());
stopWatch.start("执行本地方法");
if (resp.getCode() == 1) {
List<SitePdu> sitePduList = resp.getData().getData();
sitePduList.stream().forEach(site -> {
PjEvaluateStatEntity sitestatEntity = new PjEvaluateStatEntity();
sitestatEntity.initAttrValue();
sitestatEntity.setSiteId(site.getId());
......@@ -198,18 +221,17 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<
sitestatEntity.setDay(curDate.dayOfMonth());
//设置年月日
pjEvaluateStatService.updateSitePjStat(sitestatEntity, context);
});
}
stopWatch.stop();
log.info("日期:{} 完成,耗时:{}ms", curDate.toDateStr(), stopWatch.getLastTaskTimeMillis());
statLogEntity.setStatEndTime(new Date());
statLogEntity.setDuration(stopWatch.getLastTaskTimeMillis());
accessStatLogService.save(statLogEntity, context);
}
//log.info("日期:{} 完成,耗时:{}ms", curDate.toDateStr(), stopWatch.getLastTaskTimeMillis());
}
}
};
ThreadPool.getInstance().execute(runnable);
model.put("message_info", busiDesc + "成功");
this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception e) {
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.access.dao.ibatis.AccessDaoImpl">
<!-- 字段和属性映射 -->
......@@ -23,23 +23,10 @@
<result property="latitude" column="latitude" />
<result property="longitude" column="longitude" />
<result property="type" column="type" />
<collection property="accessSystemList" column="id" ofType="AccessSystemEntity" javaType="ArrayList" select="getAccessSystemByAccessId"></collection>
</resultMap>
<resultMap type="AccessSystemEntity" id="AccessSystemEntity-Map">
<result property="id" column="id" />
<result property="accessId" column="accessId" />
<result property="systemName" column="system_name" />
<result property="systemCode" column="system_code" />
<result property="enabled" column="enabled" />
<result property="accessTime" column="access_time" />
<result property="sort" column="sort" />
<result property="remark" column="remark" />
<result property="createUserId" column="create_user_id" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="content" column="content" />
</resultMap>
<!-- 表所有列 -->
<sql id="_columns">
<trim suffixOverrides="," suffix="">
......@@ -97,6 +84,12 @@
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('type') or colPickMode == 1 and data.containsKey('type')))">
a.type,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('accessTime') or colPickMode == 1 and data.containsKey('accessTime')))">
a.access_time,
</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>
</trim>
</sql>
<!-- 子表所有列 -->
......@@ -108,18 +101,18 @@
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="AccessEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_access
(area_name,area_code,big_path,tag,sort,remark,create_user_id,create_time,update_time,area_id,site_id,site_code,site_name,icon,latitude,longitude,type)
(area_name,area_code,big_path,tag,sort,remark,create_user_id,create_time,update_time,area_id,site_id,site_code,site_name,icon,latitude,longitude,type,access_time,content)
VALUES
(#{areaName},#{areaCode},#{bigPath},#{tag},#{sort},#{remark},#{createUserId},#{createTime},#{updateTime},#{areaId},#{siteId},#{siteCode},#{siteName},#{icon},#{latitude},#{longitude},#{type})
(#{areaName},#{areaCode},#{bigPath},#{tag},#{sort},#{remark},#{createUserId},#{createTime},#{updateTime},#{areaId},#{siteId},#{siteCode},#{siteName},#{icon},#{latitude},#{longitude},#{type},#{accessTime},#{content})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_access
(area_name,area_code,big_path,tag,sort,remark,create_user_id,create_time,update_time,area_id,site_id,site_code,site_name,icon,latitude,longitude,type)
(area_name,area_code,big_path,tag,sort,remark,create_user_id,create_time,update_time,area_id,site_id,site_code,site_name,icon,latitude,longitude,type,access_time,content)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.areaName},#{item.areaCode},#{item.bigPath},#{item.tag},#{item.sort},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateTime},#{item.areaId},#{item.siteId},#{item.siteCode},#{item.siteName},#{item.icon},#{item.latitude},#{item.longitude},#{item.type})
(#{item.areaName},#{item.areaCode},#{item.bigPath},#{item.tag},#{item.sort},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateTime},#{item.areaId},#{item.siteId},#{item.siteCode},#{item.siteName},#{item.icon},#{item.latitude},#{item.longitude},#{item.type},#{item.accessTime},#{item.content})
</foreach>
</insert>
......@@ -189,6 +182,12 @@
<if test="(colPickMode==0 and data.containsKey('type')) or (colPickMode==1 and !data.containsKey('type'))">
a.type=#{data.type},
</if>
<if test="(colPickMode==0 and data.containsKey('accessTime')) or (colPickMode==1 and !data.containsKey('accessTime'))">
a.access_time=#{data.accessTime},
</if>
<if test="(colPickMode==0 and data.containsKey('content')) or (colPickMode==1 and !data.containsKey('content'))">
a.content=#{data.content},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
......@@ -335,6 +334,20 @@
</if>
</foreach>
</trim>
<trim prefix="access_time=(case" suffix="ELSE access_time end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('accessTime')) or (colPickMode==1 and !item.containsKey('accessTime'))">
when a.id=#{item.id} then #{item.accessTime}
</if>
</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>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
......@@ -853,6 +866,42 @@
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('accessTime')">
<if test="conditionParamRef.accessTime != null ">
${_conditionType_} a.access_time = #{${_conditionParam_}.accessTime}
</if>
<if test="conditionParamRef.accessTime == null">
${_conditionType_} a.access_time is null
</if>
</if>
<if test="conditionParamRef.containsKey('accessTimeStart') and conditionParamRef.accessTimeStart != null and conditionParamRef.accessTimeStart!=''">
${_conditionType_} a.access_time <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.accessTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('accessTimeEnd') and conditionParamRef.accessTimeEnd != null and conditionParamRef.accessTimeEnd!=''">
${_conditionType_} a.access_time <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.accessTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</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') and conditionParamRef.contentList.size() > 0">
${_conditionType_} a.content in
<foreach collection="conditionParamRef.contentList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('contentNotList') and conditionParamRef.contentNotList.size() > 0">
${_conditionType_} a.content not in
<foreach collection="conditionParamRef.contentNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
......@@ -1012,6 +1061,16 @@
<if test='orderCol.type != null and "DESC".equalsIgnoreCase(orderCol.type)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('accessTime')">
a.access_time
<if test='orderCol.accessTime != null and "DESC".equalsIgnoreCase(orderCol.accessTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('content')">
a.content
<if test='orderCol.content != null and "DESC".equalsIgnoreCase(orderCol.content)'>DESC</if>
,
</if>
</trim>
</if>
......
<?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.access.dao.ibatis.AccessStatLogDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="AccessStatLogEntity" id="AccessStatLogEntity-Map">
<id property="id" column="id" />
<result property="accessId" column="access_id" />
<result property="siteId" column="site_id" />
<result property="siteCode" column="site_code" />
<result property="siteName" column="site_name" />
<result property="statStartTime" column="stat_start_time" />
<result property="statEndTime" column="stat_end_time" />
<result property="duration" column="duration" />
<result property="type" column="type" />
<result property="remark" column="remark" />
<result property="createUserId" column="create_user_id" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
</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('accessId') or colPickMode == 1 and data.containsKey('accessId')))">
a.access_id,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteId') or colPickMode == 1 and data.containsKey('siteId')))">
a.site_id,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteCode') or colPickMode == 1 and data.containsKey('siteCode')))">
a.site_code,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteName') or colPickMode == 1 and data.containsKey('siteName')))">
a.site_name,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('statStartTime') or colPickMode == 1 and data.containsKey('statStartTime')))">
a.stat_start_time,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('statEndTime') or colPickMode == 1 and data.containsKey('statEndTime')))">
a.stat_end_time,
</if>
<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('type') or colPickMode == 1 and data.containsKey('type')))">
a.type,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('remark') or colPickMode == 1 and data.containsKey('remark')))">
a.remark,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
a.create_user_id,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
a.create_time,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
a.update_time,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="AccessStatLogEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_access_stat_log
(access_id,site_id,site_code,site_name,stat_start_time,stat_end_time,duration,type,remark,create_user_id,create_time,update_time)
VALUES
(#{accessId},#{siteId},#{siteCode},#{siteName},#{statStartTime},#{statEndTime},#{duration},#{type},#{remark},#{createUserId},#{createTime},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_access_stat_log
(access_id,site_id,site_code,site_name,stat_start_time,stat_end_time,duration,type,remark,create_user_id,create_time,update_time)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.accessId},#{item.siteId},#{item.siteCode},#{item.siteName},#{item.statStartTime},#{item.statEndTime},#{item.duration},#{item.type},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_access_stat_log as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('accessId')) or (colPickMode==1 and !data.containsKey('accessId'))">
a.access_id=#{data.accessId},
</if>
<if test="(colPickMode==0 and data.containsKey('accessIdIncrement')) or (colPickMode==1 and !data.containsKey('accessIdIncrement'))">
a.access_id=ifnull(a.access_id,0) + #{data.accessIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('siteId')) or (colPickMode==1 and !data.containsKey('siteId'))">
a.site_id=#{data.siteId},
</if>
<if test="(colPickMode==0 and data.containsKey('siteIdIncrement')) or (colPickMode==1 and !data.containsKey('siteIdIncrement'))">
a.site_id=ifnull(a.site_id,0) + #{data.siteIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('siteCode')) or (colPickMode==1 and !data.containsKey('siteCode'))">
a.site_code=#{data.siteCode},
</if>
<if test="(colPickMode==0 and data.containsKey('siteName')) or (colPickMode==1 and !data.containsKey('siteName'))">
a.site_name=#{data.siteName},
</if>
<if test="(colPickMode==0 and data.containsKey('statStartTime')) or (colPickMode==1 and !data.containsKey('statStartTime'))">
a.stat_start_time=#{data.statStartTime},
</if>
<if test="(colPickMode==0 and data.containsKey('statEndTime')) or (colPickMode==1 and !data.containsKey('statEndTime'))">
a.stat_end_time=#{data.statEndTime},
</if>
<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('durationIncrement')) or (colPickMode==1 and !data.containsKey('durationIncrement'))">
a.duration=ifnull(a.duration,0) + #{data.durationIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('type')) or (colPickMode==1 and !data.containsKey('type'))">
a.type=#{data.type},
</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('createUserId')) or (colPickMode==1 and !data.containsKey('createUserId'))">
a.create_user_id=#{data.createUserId},
</if>
<if test="(colPickMode==0 and data.containsKey('createUserIdIncrement')) or (colPickMode==1 and !data.containsKey('createUserIdIncrement'))">
a.create_user_id=ifnull(a.create_user_id,0) + #{data.createUserIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
a.create_time=#{data.createTime},
</if>
<if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
a.update_time=#{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_access_stat_log as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="access_id=(case" suffix="ELSE access_id end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('accessId')) or (colPickMode==1 and !item.containsKey('accessId'))">
when a.id=#{item.id} then #{item.accessId}
</when>
<when test="(colPickMode==0 and item.containsKey('accessIdIncrement')) or (colPickMode==1 and !item.containsKey('accessIdIncrement'))">
when a.id=#{item.id} then ifnull(a.access_id,0) + #{item.accessIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="site_id=(case" suffix="ELSE site_id 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.site_id,0) + #{item.siteIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="site_code=(case" suffix="ELSE site_code 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="site_name=(case" suffix="ELSE site_name 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="stat_start_time=(case" suffix="ELSE stat_start_time end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('statStartTime')) or (colPickMode==1 and !item.containsKey('statStartTime'))">
when a.id=#{item.id} then #{item.statStartTime}
</if>
</foreach>
</trim>
<trim prefix="stat_end_time=(case" suffix="ELSE stat_end_time end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('statEndTime')) or (colPickMode==1 and !item.containsKey('statEndTime'))">
when a.id=#{item.id} then #{item.statEndTime}
</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('duration')) or (colPickMode==1 and !item.containsKey('duration'))">
when a.id=#{item.id} then #{item.duration}
</when>
<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="type=(case" suffix="ELSE type end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('type')) or (colPickMode==1 and !item.containsKey('type'))">
when a.id=#{item.id} then #{item.type}
</if>
</foreach>
</trim>
<trim prefix="remark=(case" suffix="ELSE remark end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('remark')) or (colPickMode==1 and !item.containsKey('remark'))">
when a.id=#{item.id} then #{item.remark}
</if>
</foreach>
</trim>
<trim prefix="create_user_id=(case" suffix="ELSE create_user_id 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.create_user_id,0) + #{item.createUserIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="create_time=(case" suffix="ELSE create_time 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="update_time=(case" suffix="ELSE update_time 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="AccessStatLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_access_stat_log as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_access_stat_log as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_access_stat_log where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据主健列表删除一批,针对单一主健有效 -->
<delete id="deleteByKeyList">
delete from mortals_xhx_access_stat_log where id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据对象列表删除一批,针对单一主健有效 -->
<delete id="deleteByEntityList">
delete from mortals_xhx_access_stat_log where id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item.id}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_access_stat_log as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="AccessStatLogEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_access_stat_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_access_stat_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="permissionSql != null and permissionSql != ''">
${permissionSql}
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('idNotList') and conditionParamRef.idNotList.size() > 0">
${_conditionType_} a.id not in
<foreach collection="conditionParamRef.idNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null">
${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart}
</if>
<if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null">
${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
</if>
<if test="conditionParamRef.containsKey('accessId')">
<if test="conditionParamRef.accessId != null ">
${_conditionType_} a.access_id = #{${_conditionParam_}.accessId}
</if>
<if test="conditionParamRef.accessId == null">
${_conditionType_} a.access_id is null
</if>
</if>
<if test="conditionParamRef.containsKey('accessIdList') and conditionParamRef.accessIdList.size() > 0">
${_conditionType_} a.access_id in
<foreach collection="conditionParamRef.accessIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('accessIdNotList') and conditionParamRef.accessIdNotList.size() > 0">
${_conditionType_} a.access_id not in
<foreach collection="conditionParamRef.accessIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('accessIdStart') and conditionParamRef.accessIdStart != null">
${_conditionType_} a.access_id <![CDATA[ >= ]]> #{${_conditionParam_}.accessIdStart}
</if>
<if test="conditionParamRef.containsKey('accessIdEnd') and conditionParamRef.accessIdEnd != null">
${_conditionType_} a.access_id <![CDATA[ <= ]]> #{${_conditionParam_}.accessIdEnd}
</if>
<if test="conditionParamRef.containsKey('siteId')">
<if test="conditionParamRef.siteId != null ">
${_conditionType_} a.site_id = #{${_conditionParam_}.siteId}
</if>
<if test="conditionParamRef.siteId == null">
${_conditionType_} a.site_id is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteIdList') and conditionParamRef.siteIdList.size() > 0">
${_conditionType_} a.site_id in
<foreach collection="conditionParamRef.siteIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteIdNotList') and conditionParamRef.siteIdNotList.size() > 0">
${_conditionType_} a.site_id not in
<foreach collection="conditionParamRef.siteIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteIdStart') and conditionParamRef.siteIdStart != null">
${_conditionType_} a.site_id <![CDATA[ >= ]]> #{${_conditionParam_}.siteIdStart}
</if>
<if test="conditionParamRef.containsKey('siteIdEnd') and conditionParamRef.siteIdEnd != null">
${_conditionType_} a.site_id <![CDATA[ <= ]]> #{${_conditionParam_}.siteIdEnd}
</if>
<if test="conditionParamRef.containsKey('siteCode')">
<if test="conditionParamRef.siteCode != null and conditionParamRef.siteCode != ''">
${_conditionType_} a.site_code like #{${_conditionParam_}.siteCode}
</if>
<if test="conditionParamRef.siteCode == null">
${_conditionType_} a.site_code is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteCodeList') and conditionParamRef.siteCodeList.size() > 0">
${_conditionType_} a.site_code in
<foreach collection="conditionParamRef.siteCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteCodeNotList') and conditionParamRef.siteCodeNotList.size() > 0">
${_conditionType_} a.site_code not in
<foreach collection="conditionParamRef.siteCodeNotList" 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.site_name like #{${_conditionParam_}.siteName}
</if>
<if test="conditionParamRef.siteName == null">
${_conditionType_} a.site_name is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteNameList') and conditionParamRef.siteNameList.size() > 0">
${_conditionType_} a.site_name in
<foreach collection="conditionParamRef.siteNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteNameNotList') and conditionParamRef.siteNameNotList.size() > 0">
${_conditionType_} a.site_name not in
<foreach collection="conditionParamRef.siteNameNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('statStartTime')">
<if test="conditionParamRef.statStartTime != null ">
${_conditionType_} a.stat_start_time = #{${_conditionParam_}.statStartTime}
</if>
<if test="conditionParamRef.statStartTime == null">
${_conditionType_} a.stat_start_time is null
</if>
</if>
<if test="conditionParamRef.containsKey('statStartTimeStart') and conditionParamRef.statStartTimeStart != null and conditionParamRef.statStartTimeStart!=''">
${_conditionType_} a.stat_start_time <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.statStartTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('statStartTimeEnd') and conditionParamRef.statStartTimeEnd != null and conditionParamRef.statStartTimeEnd!=''">
${_conditionType_} a.stat_start_time <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.statStartTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('statEndTime')">
<if test="conditionParamRef.statEndTime != null ">
${_conditionType_} a.stat_end_time = #{${_conditionParam_}.statEndTime}
</if>
<if test="conditionParamRef.statEndTime == null">
${_conditionType_} a.stat_end_time is null
</if>
</if>
<if test="conditionParamRef.containsKey('statEndTimeStart') and conditionParamRef.statEndTimeStart != null and conditionParamRef.statEndTimeStart!=''">
${_conditionType_} a.stat_end_time <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.statEndTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('statEndTimeEnd') and conditionParamRef.statEndTimeEnd != null and conditionParamRef.statEndTimeEnd!=''">
${_conditionType_} a.stat_end_time <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.statEndTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('duration')">
<if test="conditionParamRef.duration != null ">
${_conditionType_} a.duration = #{${_conditionParam_}.duration}
</if>
<if test="conditionParamRef.duration == null">
${_conditionType_} a.duration is null
</if>
</if>
<if test="conditionParamRef.containsKey('durationList') and conditionParamRef.durationList.size() > 0">
${_conditionType_} a.duration in
<foreach collection="conditionParamRef.durationList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('durationNotList') and conditionParamRef.durationNotList.size() > 0">
${_conditionType_} a.duration not in
<foreach collection="conditionParamRef.durationNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('durationStart') and conditionParamRef.durationStart != null">
${_conditionType_} a.duration <![CDATA[ >= ]]> #{${_conditionParam_}.durationStart}
</if>
<if test="conditionParamRef.containsKey('durationEnd') and conditionParamRef.durationEnd != null">
${_conditionType_} a.duration <![CDATA[ <= ]]> #{${_conditionParam_}.durationEnd}
</if>
<if test="conditionParamRef.containsKey('type')">
<if test="conditionParamRef.type != null and conditionParamRef.type != ''">
${_conditionType_} a.type like #{${_conditionParam_}.type}
</if>
<if test="conditionParamRef.type == null">
${_conditionType_} a.type is null
</if>
</if>
<if test="conditionParamRef.containsKey('typeList') and conditionParamRef.typeList.size() > 0">
${_conditionType_} a.type in
<foreach collection="conditionParamRef.typeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('typeNotList') and conditionParamRef.typeNotList.size() > 0">
${_conditionType_} a.type not in
<foreach collection="conditionParamRef.typeNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('remark')">
<if test="conditionParamRef.remark != null and conditionParamRef.remark != ''">
${_conditionType_} a.remark like #{${_conditionParam_}.remark}
</if>
<if test="conditionParamRef.remark == null">
${_conditionType_} a.remark is null
</if>
</if>
<if test="conditionParamRef.containsKey('remarkList') and conditionParamRef.remarkList.size() > 0">
${_conditionType_} a.remark in
<foreach collection="conditionParamRef.remarkList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('remarkNotList') and conditionParamRef.remarkNotList.size() > 0">
${_conditionType_} a.remark not in
<foreach collection="conditionParamRef.remarkNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserId')">
<if test="conditionParamRef.createUserId != null ">
${_conditionType_} a.create_user_id = #{${_conditionParam_}.createUserId}
</if>
<if test="conditionParamRef.createUserId == null">
${_conditionType_} a.create_user_id is null
</if>
</if>
<if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
${_conditionType_} a.create_user_id in
<foreach collection="conditionParamRef.createUserIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserIdNotList') and conditionParamRef.createUserIdNotList.size() > 0">
${_conditionType_} a.create_user_id not in
<foreach collection="conditionParamRef.createUserIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserIdStart') and conditionParamRef.createUserIdStart != null">
${_conditionType_} a.create_user_id <![CDATA[ >= ]]> #{${_conditionParam_}.createUserIdStart}
</if>
<if test="conditionParamRef.containsKey('createUserIdEnd') and conditionParamRef.createUserIdEnd != null">
${_conditionType_} a.create_user_id <![CDATA[ <= ]]> #{${_conditionParam_}.createUserIdEnd}
</if>
<if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null ">
${_conditionType_} a.create_time = #{${_conditionParam_}.createTime}
</if>
<if test="conditionParamRef.createTime == null">
${_conditionType_} a.create_time is null
</if>
</if>
<if test="conditionParamRef.containsKey('createTimeStart') and conditionParamRef.createTimeStart != null and conditionParamRef.createTimeStart!=''">
${_conditionType_} a.create_time <![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.create_time <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('updateTime')">
<if test="conditionParamRef.updateTime != null ">
${_conditionType_} a.update_time = #{${_conditionParam_}.updateTime}
</if>
<if test="conditionParamRef.updateTime == null">
${_conditionType_} a.update_time is null
</if>
</if>
<if test="conditionParamRef.containsKey('updateTimeStart') and conditionParamRef.updateTimeStart != null and conditionParamRef.updateTimeStart!=''">
${_conditionType_} a.update_time <![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.update_time <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
order by
<if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
field(a.id,
<foreach collection="conditionParamRef.idList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('accessIdList') and conditionParamRef.accessIdList.size() > 0">
field(a.accessId,
<foreach collection="conditionParamRef.accessIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('siteIdList') and conditionParamRef.siteIdList.size() > 0">
field(a.siteId,
<foreach collection="conditionParamRef.siteIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('durationList') and conditionParamRef.durationList.size() > 0">
field(a.duration,
<foreach collection="conditionParamRef.durationList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
field(a.createUserId,
<foreach collection="conditionParamRef.createUserIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<trim suffixOverrides="," suffix="">
<foreach collection="orderColList" open="" close="" index="index" item="item" separator=",">
a.${item.colName} ${item.sortKind}
</foreach>
</trim>
</if>
<if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
order by
<if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
field(a.id,
<foreach collection="conditionParamRef.idList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('accessIdList') and conditionParamRef.accessIdList.size() > 0">
field(a.accessId,
<foreach collection="conditionParamRef.accessIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('siteIdList') and conditionParamRef.siteIdList.size() > 0">
field(a.siteId,
<foreach collection="conditionParamRef.siteIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('durationList') and conditionParamRef.durationList.size() > 0">
field(a.duration,
<foreach collection="conditionParamRef.durationList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
field(a.createUserId,
<foreach collection="conditionParamRef.createUserIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<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('accessId')">
a.access_id
<if test='orderCol.accessId != null and "DESC".equalsIgnoreCase(orderCol.accessId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteId')">
a.site_id
<if test='orderCol.siteId != null and "DESC".equalsIgnoreCase(orderCol.siteId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteCode')">
a.site_code
<if test='orderCol.siteCode != null and "DESC".equalsIgnoreCase(orderCol.siteCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteName')">
a.site_name
<if test='orderCol.siteName != null and "DESC".equalsIgnoreCase(orderCol.siteName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('statStartTime')">
a.stat_start_time
<if test='orderCol.statStartTime != null and "DESC".equalsIgnoreCase(orderCol.statStartTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('statEndTime')">
a.stat_end_time
<if test='orderCol.statEndTime != null and "DESC".equalsIgnoreCase(orderCol.statEndTime)'>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('type')">
a.type
<if test='orderCol.type != null and "DESC".equalsIgnoreCase(orderCol.type)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('remark')">
a.remark
<if test='orderCol.remark != null and "DESC".equalsIgnoreCase(orderCol.remark)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createUserId')">
a.create_user_id
<if test='orderCol.createUserId != null and "DESC".equalsIgnoreCase(orderCol.createUserId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createTime')">
a.create_time
<if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('updateTime')">
a.update_time
<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/stat/log/list
Content-Type: application/json
{
"page":1,
"size":10
}
###统计日志更新与保存
POST {{baseUrl}}/access/stat/log/save
Authorization: {{authToken}}
Content-Type: application/json
{
"accessId":"6QOXxd",
"siteId":589,
"siteCode":"hnPF0D",
"siteName":"USMODh",
"statStartTime":"1721923200000",
"statEndTime":"1721923200000",
"duration":0,
"type":"全部",
"remark":"qYJVAJ",
}
> {%
client.global.set("AccessStatLog_id", JSON.parse(response.body).data.id);
%}
###统计日志查看
GET {{baseUrl}}/access/stat/log/info?id=1
###统计日志编辑
GET {{baseUrl}}/access/stat/log/edit?id=1
Accept: application/json
###统计日志删除
GET {{baseUrl}}/access/stat/log/delete?id=1
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