21 changed files with 451 additions and 50 deletions
Binary file not shown.
Binary file not shown.
@ -0,0 +1,33 @@ |
|||||
|
/** |
||||
|
* Copyright 2018 人人开源 https://www.renren.io
|
||||
|
* <p> |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* <p> |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* <p> |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
*/ |
||||
|
|
||||
|
package com.epmet.opendata.dao; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.dao.BaseDao; |
||||
|
import com.epmet.opendata.entity.GriderOnlineNumEntity; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
/** |
||||
|
* 在线网格员人数 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-10-14 |
||||
|
*/ |
||||
|
@Mapper |
||||
|
public interface GriderOnlineNumDao extends BaseDao<GriderOnlineNumEntity> { |
||||
|
|
||||
|
} |
@ -0,0 +1,61 @@ |
|||||
|
/** |
||||
|
* Copyright 2018 人人开源 https://www.renren.io
|
||||
|
* <p> |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* <p> |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* <p> |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
*/ |
||||
|
|
||||
|
package com.epmet.opendata.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* 用户巡查主记录 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-10-14 |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper=false) |
||||
|
@TableName("grider_online_num") |
||||
|
public class GriderOnlineNumEntity extends BaseEpmetEntity { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 客户Id |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
|
||||
|
private String qxGridId; |
||||
|
|
||||
|
/** |
||||
|
* 推送时间 |
||||
|
*/ |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
||||
|
private Date pushTime; |
||||
|
|
||||
|
/** |
||||
|
* 在线数 |
||||
|
*/ |
||||
|
private Integer onlineNum; |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
/** |
||||
|
* Copyright 2018 人人开源 https://www.renren.io
|
||||
|
* <p> |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* <p> |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* <p> |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
*/ |
||||
|
|
||||
|
package com.epmet.opendata.service; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.service.BaseService; |
||||
|
import com.epmet.opendata.entity.GriderOnlineNumEntity; |
||||
|
|
||||
|
/** |
||||
|
* 用户巡查主记录 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-10-14 |
||||
|
*/ |
||||
|
public interface GriderOnlineNumService extends BaseService<GriderOnlineNumEntity> { |
||||
|
|
||||
|
/** |
||||
|
* desc:插入巡查中的网格员数据 |
||||
|
* @return boolean |
||||
|
*/ |
||||
|
Boolean insertData(String agencyId); |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,69 @@ |
|||||
|
/** |
||||
|
* Copyright 2018 人人开源 https://www.renren.io
|
||||
|
* <p> |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* <p> |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* <p> |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
*/ |
||||
|
|
||||
|
package com.epmet.opendata.service.impl; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; |
||||
|
import com.epmet.commons.tools.constant.NumConstant; |
||||
|
import com.epmet.commons.tools.constant.StrConstant; |
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.dto.form.PatrolCountFormDTO; |
||||
|
import com.epmet.dto.result.PatrolCountResultDTO; |
||||
|
import com.epmet.feign.EpmetUserOpenFeignClient; |
||||
|
import com.epmet.opendata.dao.GriderOnlineNumDao; |
||||
|
import com.epmet.opendata.entity.GriderOnlineNumEntity; |
||||
|
import com.epmet.opendata.service.GriderOnlineNumService; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 用户巡查主记录 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-10-14 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Service |
||||
|
public class GriderOnlineNumServiceImpl extends BaseServiceImpl<GriderOnlineNumDao, GriderOnlineNumEntity> implements GriderOnlineNumService { |
||||
|
@Autowired |
||||
|
private EpmetUserOpenFeignClient epmetUserOpenFeignClient; |
||||
|
@Override |
||||
|
public Boolean insertData(String agencyId) { |
||||
|
PatrolCountFormDTO param = new PatrolCountFormDTO(); |
||||
|
param.setAgencyId(agencyId); |
||||
|
Result<PatrolCountResultDTO> patrolCountResult = epmetUserOpenFeignClient.patrolCount(param); |
||||
|
|
||||
|
log.debug("insertData patrolCountResult return:{}", JSON.toJSONString(patrolCountResult)); |
||||
|
if (patrolCountResult == null || !patrolCountResult.success()) { |
||||
|
log.warn("insertData patrolCount fail,return null"); |
||||
|
return false; |
||||
|
} |
||||
|
PatrolCountResultDTO data = patrolCountResult.getData(); |
||||
|
int count = data.getPatrollingCount() == null ? NumConstant.ZERO : data.getPatrollingCount(); |
||||
|
GriderOnlineNumEntity entity = new GriderOnlineNumEntity(); |
||||
|
entity.setCustomerId(StrConstant.PY_CUSTOMER); |
||||
|
entity.setPushTime(new Date()); |
||||
|
entity.setOnlineNum(count); |
||||
|
baseDao.insert(entity); |
||||
|
return true; |
||||
|
} |
||||
|
} |
@ -0,0 +1,71 @@ |
|||||
|
package com.epmet.opendata.task; |
||||
|
|
||||
|
import com.epmet.commons.tools.constant.NumConstant; |
||||
|
import com.epmet.commons.tools.constant.StrConstant; |
||||
|
import com.epmet.commons.tools.distributedlock.DistributedLock; |
||||
|
import com.epmet.commons.tools.redis.RedisKeys; |
||||
|
import com.epmet.commons.tools.utils.DateUtils; |
||||
|
import com.epmet.opendata.service.GriderOnlineNumService; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.redisson.api.RLock; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.scheduling.annotation.Scheduled; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* desc: |
||||
|
* |
||||
|
* @author: LiuJanJun |
||||
|
* @date: 2022/4/12 4:21 下午 |
||||
|
* @version: 1.0 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Component |
||||
|
public class ExtractBizDataToOpenData { |
||||
|
|
||||
|
@Autowired |
||||
|
private DistributedLock distributedLock; |
||||
|
|
||||
|
@Autowired |
||||
|
private GriderOnlineNumService griderOnlineNumService; |
||||
|
|
||||
|
@Scheduled(cron = "0 30 */2 * * *") |
||||
|
//@Scheduled(cron = "0/15 * * * * *")
|
||||
|
public void extractGridMemberPatrollingCount() { |
||||
|
String currentTime = DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN); |
||||
|
log.info("extractGridMemberPatrollingCount start,date:{}", currentTime); |
||||
|
RLock rLock = null; |
||||
|
try { |
||||
|
rLock = distributedLock.tryLock(RedisKeys.getLockByMethodName("extractGridMemberPatrollingCount")); |
||||
|
if (rLock == null || !rLock.isLocked()) { |
||||
|
log.warn("tryLock method extractGridMemberPatrollingCount fail"); |
||||
|
return; |
||||
|
} |
||||
|
boolean patrolCountResult; |
||||
|
int retryTime = NumConstant.THREE; |
||||
|
do { |
||||
|
//StrConstant.PY_ROOT_AGENCY
|
||||
|
patrolCountResult = griderOnlineNumService.insertData(StrConstant.PY_ROOT_AGENCY); |
||||
|
if (!patrolCountResult) { |
||||
|
break; |
||||
|
} |
||||
|
//如果 重试次数为1了 就让歇个 5分钟
|
||||
|
if (retryTime == 1) { |
||||
|
Thread.sleep(NumConstant.FIVE * NumConstant.SIXTY * NumConstant.ONE_THOUSAND); |
||||
|
} |
||||
|
} while (retryTime-- > 0); |
||||
|
if (!patrolCountResult) { |
||||
|
log.error("插入网格员在线人数失败,请检查原因,时间:{}", currentTime); |
||||
|
} |
||||
|
|
||||
|
} catch (Exception e) { |
||||
|
log.warn("tryLock method extractGridMemberPatrollingCount fail"); |
||||
|
} finally { |
||||
|
distributedLock.unLock(rLock); |
||||
|
} |
||||
|
log.info("extractGridMemberPatrollingCount end"); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,13 @@ |
|||||
|
CREATE TABLE `grider_online_num` ( |
||||
|
`ID` varchar(64) NOT NULL COMMENT '主键', |
||||
|
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户Id', |
||||
|
`ONLINE_NUM` int(11) NOT NULL COMMENT '在线人数', |
||||
|
`PUSH_TIME` datetime NOT NULL COMMENT '推送时间', |
||||
|
`DEL_FLAG` bigint(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0.未删除 1.已删除', |
||||
|
`REVISION` int(11) NOT NULL COMMENT '乐观锁', |
||||
|
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人', |
||||
|
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间', |
||||
|
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人', |
||||
|
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', |
||||
|
PRIMARY KEY (`ID`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='网格员在线人数'; |
@ -0,0 +1,6 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
|
||||
|
<mapper namespace="com.epmet.opendata.dao.GriderOnlineNumDao"> |
||||
|
|
||||
|
</mapper> |
@ -1,2 +1,6 @@ |
|||||
alter table ic_resi_member add COLUMN DOMICILE_PLACE VARCHAR(128) comment '户籍所在地' AFTER YMJZ; |
alter table ic_resi_member add COLUMN DOMICILE_PLACE VARCHAR(128) comment '户籍所在地' AFTER YMJZ; |
||||
alter table ic_resi_member add COLUMN WORK_PLACE VARCHAR(128) comment '单位或学校' AFTER DOMICILE_PLACE; |
alter table ic_resi_member add COLUMN WORK_PLACE VARCHAR(128) comment '单位或学校' AFTER DOMICILE_PLACE; |
||||
|
|
||||
|
-- 居民信息表添加租户列 |
||||
|
alter table ic_resi_user add column IS_TENANT char(1) comment '是否租户【是:1 否:0】' after IS_SPECIAL; |
||||
|
update ic_resi_user set ic_resi_user.IS_TENANT='0' where ic_resi_user.IS_TENANT is null or ic_resi_user.IS_TENANT=''; |
Loading…
Reference in new issue