65 changed files with 2668 additions and 52 deletions
@ -0,0 +1,20 @@ |
|||||
|
package com.epmet.dataaggre.dto.epmetuser.result; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* @Description 个人中心-网格员巡查记录-接口入参 |
||||
|
* @Auth sun |
||||
|
*/ |
||||
|
@Data |
||||
|
public class PersonalPatrolListResultDTO implements Serializable { |
||||
|
private static final long serialVersionUID = 7129564173128153335L; |
||||
|
|
||||
|
//巡查总次数;巡查总时长;立项事件数
|
||||
|
private String key; |
||||
|
//key对应值
|
||||
|
private String value; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,41 @@ |
|||||
|
package com.epmet.dto.extract.form; |
||||
|
|
||||
|
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import javax.validation.constraints.NotBlank; |
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* desc: 从业务数据抽取到统计库 dto |
||||
|
* |
||||
|
* @Author zxc |
||||
|
* @DateTime 2020/9/16 6:01 下午 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class BizDataFormDTO implements Serializable { |
||||
|
|
||||
|
|
||||
|
private static final long serialVersionUID = 2860395703825549825L; |
||||
|
|
||||
|
public interface ExtractForm extends CustomerClientShowGroup { |
||||
|
} |
||||
|
|
||||
|
@NotBlank(message = "客户ID不能为空", groups = ExtractForm.class) |
||||
|
private String customerId; |
||||
|
|
||||
|
@NotBlank(message = "dateId不能为空", groups = ExtractForm.class) |
||||
|
private String dateId; |
||||
|
|
||||
|
private String userId; |
||||
|
private String gridId; |
||||
|
|
||||
|
/** |
||||
|
* 开始时间 |
||||
|
*/ |
||||
|
private String startDate; |
||||
|
/** |
||||
|
* 结束时间 |
||||
|
*/ |
||||
|
private String endDate; |
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
package com.epmet.dto.extract.form; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* desc: 工作人员巡查统计参数 |
||||
|
* |
||||
|
* @author LiuJanJun |
||||
|
* @date 2021/6/29 10:19 上午 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class StaffPatrolStatsFormDTO implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = -3639860733213306581L; |
||||
|
private String customerId; |
||||
|
private String dateId; |
||||
|
private String staffId; |
||||
|
private String gridId; |
||||
|
/** |
||||
|
* 角色key |
||||
|
*/ |
||||
|
private String roleKey; |
||||
|
} |
||||
@ -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.dto.user.result; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 政府工作人员表 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2020-04-18 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class CustomerGridStaffDTO implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 客户id |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* 网格id |
||||
|
*/ |
||||
|
private String gridId; |
||||
|
|
||||
|
/** |
||||
|
* 网格所属组织id |
||||
|
*/ |
||||
|
private String agencyId; |
||||
|
|
||||
|
/** |
||||
|
* 网格所属的所有组织id |
||||
|
*/ |
||||
|
private String gridPids; |
||||
|
|
||||
|
/** |
||||
|
* 关联User表的主键Id |
||||
|
*/ |
||||
|
private String userId; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,137 @@ |
|||||
|
/** |
||||
|
* 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.dto.user.result; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 政府工作人员表 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2020-04-18 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class CustomerStaffDTO implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* ID |
||||
|
*/ |
||||
|
private String id; |
||||
|
|
||||
|
/** |
||||
|
* 关联User表的主键Id |
||||
|
*/ |
||||
|
private String userId; |
||||
|
|
||||
|
/** |
||||
|
* 真实姓名 |
||||
|
*/ |
||||
|
private String realName; |
||||
|
|
||||
|
/** |
||||
|
* 性别0.未知,1男,2.女 |
||||
|
*/ |
||||
|
private Integer gender; |
||||
|
|
||||
|
/** |
||||
|
* 邮箱 |
||||
|
*/ |
||||
|
private String email; |
||||
|
|
||||
|
/** |
||||
|
* 手机号-唯一键 |
||||
|
*/ |
||||
|
private String mobile; |
||||
|
|
||||
|
/** |
||||
|
* 地址 |
||||
|
*/ |
||||
|
private String address; |
||||
|
|
||||
|
/** |
||||
|
* 删除标识 |
||||
|
*/ |
||||
|
private Integer delFlag; |
||||
|
|
||||
|
/** |
||||
|
* 乐观锁 |
||||
|
*/ |
||||
|
private Integer revision; |
||||
|
|
||||
|
/** |
||||
|
* 创建人 |
||||
|
*/ |
||||
|
private String createdBy; |
||||
|
|
||||
|
/** |
||||
|
* 创建时间 |
||||
|
*/ |
||||
|
private Date createdTime; |
||||
|
|
||||
|
/** |
||||
|
* 更新人 |
||||
|
*/ |
||||
|
private String updatedBy; |
||||
|
|
||||
|
/** |
||||
|
* 更新时间 |
||||
|
*/ |
||||
|
private Date updatedTime; |
||||
|
|
||||
|
/** |
||||
|
* fulltime专职parttime兼职 |
||||
|
*/ |
||||
|
private String workType; |
||||
|
|
||||
|
/** |
||||
|
* 头像 |
||||
|
*/ |
||||
|
private String headPhoto; |
||||
|
|
||||
|
/** |
||||
|
* inactive未激活,active已激活 |
||||
|
*/ |
||||
|
private String activeFlag; |
||||
|
|
||||
|
/** |
||||
|
* 激活时间 |
||||
|
*/ |
||||
|
private Date activeTime; |
||||
|
|
||||
|
/** |
||||
|
* 未禁用enable,已禁用diabled |
||||
|
*/ |
||||
|
private String enableFlag; |
||||
|
|
||||
|
/** |
||||
|
* 客户id |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* 角色名称 |
||||
|
*/ |
||||
|
private String roleName; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,122 @@ |
|||||
|
/** |
||||
|
* 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.dto.user.result; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 工作人员巡查主记录 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-07 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class StaffPatrolRecordResult implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 主键 |
||||
|
*/ |
||||
|
private String id; |
||||
|
|
||||
|
/** |
||||
|
* 客户Id |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* 网格id |
||||
|
*/ |
||||
|
private String grid; |
||||
|
|
||||
|
/** |
||||
|
* 网格所有上级id |
||||
|
*/ |
||||
|
private String gridPids; |
||||
|
|
||||
|
/** |
||||
|
* 工作人员用户id |
||||
|
*/ |
||||
|
private String staffId; |
||||
|
|
||||
|
/** |
||||
|
* 工作人员所属组织id=网格所属的组织id |
||||
|
*/ |
||||
|
private String agencyId; |
||||
|
|
||||
|
/** |
||||
|
* 巡查开始时间 |
||||
|
*/ |
||||
|
private Date patrolStartTime; |
||||
|
|
||||
|
/** |
||||
|
* 巡查结束时间,前端传入 |
||||
|
*/ |
||||
|
private Date patrolEndTime; |
||||
|
|
||||
|
/** |
||||
|
* 实际结束时间=操作结束巡查的时间 |
||||
|
*/ |
||||
|
private Date actrualEndTime; |
||||
|
|
||||
|
/** |
||||
|
* 本次巡查总耗时,单位秒;结束巡查时写入 |
||||
|
*/ |
||||
|
private Integer totalTime; |
||||
|
|
||||
|
/** |
||||
|
* 正在巡查中:patrolling;结束:end |
||||
|
*/ |
||||
|
private String status; |
||||
|
|
||||
|
/** |
||||
|
* 删除标识 0.未删除 1.已删除 |
||||
|
*/ |
||||
|
private Integer delFlag; |
||||
|
|
||||
|
/** |
||||
|
* 乐观锁 |
||||
|
*/ |
||||
|
private Integer revision; |
||||
|
|
||||
|
/** |
||||
|
* 创建人 |
||||
|
*/ |
||||
|
private String createdBy; |
||||
|
|
||||
|
/** |
||||
|
* 创建时间 |
||||
|
*/ |
||||
|
private Date createdTime; |
||||
|
|
||||
|
/** |
||||
|
* 更新人 |
||||
|
*/ |
||||
|
private String updatedBy; |
||||
|
|
||||
|
/** |
||||
|
* 更新时间 |
||||
|
*/ |
||||
|
private Date updatedTime; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,147 @@ |
|||||
|
/** |
||||
|
* 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.dto.user.result; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* [天]工作人员巡查记录统计 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-29 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class StatsStaffPatrolRecordDailyDTO implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 主键 |
||||
|
*/ |
||||
|
private String id; |
||||
|
|
||||
|
/** |
||||
|
* 客户Id |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* 统计日期 关联日期dim表 |
||||
|
*/ |
||||
|
private String dateId; |
||||
|
|
||||
|
/** |
||||
|
* 周ID |
||||
|
*/ |
||||
|
private String weekId; |
||||
|
|
||||
|
/** |
||||
|
* 月ID |
||||
|
*/ |
||||
|
private String monthId; |
||||
|
|
||||
|
/** |
||||
|
* 季ID |
||||
|
*/ |
||||
|
private String quarterId; |
||||
|
|
||||
|
/** |
||||
|
* 年ID |
||||
|
*/ |
||||
|
private String yearId; |
||||
|
|
||||
|
/** |
||||
|
* 网格id |
||||
|
*/ |
||||
|
private String gridId; |
||||
|
|
||||
|
/** |
||||
|
* 工作人员所属组织id=网格所属的组织id |
||||
|
*/ |
||||
|
private String agencyId; |
||||
|
|
||||
|
/** |
||||
|
* 网格所有上级id |
||||
|
*/ |
||||
|
private String gridPids; |
||||
|
|
||||
|
/** |
||||
|
* 工作人员用户id |
||||
|
*/ |
||||
|
private String staffId; |
||||
|
|
||||
|
/** |
||||
|
* 巡查次数 |
||||
|
*/ |
||||
|
private Integer patrolTotal; |
||||
|
|
||||
|
/** |
||||
|
* 巡查时长 单位:秒 |
||||
|
*/ |
||||
|
private Integer totalTime; |
||||
|
|
||||
|
/** |
||||
|
* 巡查期间直接立项项目数 |
||||
|
*/ |
||||
|
private Integer reportProjectCount; |
||||
|
|
||||
|
/** |
||||
|
* 最新的巡查开始时间 |
||||
|
*/ |
||||
|
private Date latestPatrolTime; |
||||
|
|
||||
|
/** |
||||
|
* 最新的巡查状态 正在巡查中:patrolling;结束:end |
||||
|
*/ |
||||
|
private String latestPatrolStatus; |
||||
|
|
||||
|
/** |
||||
|
* 删除标识 0.未删除 1.已删除 |
||||
|
*/ |
||||
|
private Integer delFlag; |
||||
|
|
||||
|
/** |
||||
|
* 乐观锁 |
||||
|
*/ |
||||
|
private Integer revision; |
||||
|
|
||||
|
/** |
||||
|
* 创建人 |
||||
|
*/ |
||||
|
private String createdBy; |
||||
|
|
||||
|
/** |
||||
|
* 创建时间 |
||||
|
*/ |
||||
|
private Date createdTime; |
||||
|
|
||||
|
/** |
||||
|
* 更新人 |
||||
|
*/ |
||||
|
private String updatedBy; |
||||
|
|
||||
|
/** |
||||
|
* 更新时间 |
||||
|
*/ |
||||
|
private Date updatedTime; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,46 @@ |
|||||
|
package com.epmet.controller; |
||||
|
|
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.dto.extract.form.BizDataFormDTO; |
||||
|
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; |
||||
|
import com.epmet.service.evaluationindex.extract.biz.BizDataStatsService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.RequestBody; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
/** |
||||
|
* @Description 用户统计 |
||||
|
* @ClassName StatsUserController |
||||
|
* @Auth wangc |
||||
|
* @Date 2020-06-23 15:18 |
||||
|
*/ |
||||
|
@RestController |
||||
|
@RequestMapping("bizData/stats") |
||||
|
public class BizDataStatsController { |
||||
|
|
||||
|
@Autowired |
||||
|
private BizDataStatsService bizDataStatsService; |
||||
|
|
||||
|
/** |
||||
|
* @return com.epmet.commons.tools.utils.Result |
||||
|
* @param formDTO |
||||
|
* @description 业务库统计数据 统一入库 |
||||
|
* @Date 2021/3/26 13:27 |
||||
|
**/ |
||||
|
@RequestMapping("daily") |
||||
|
public Result execute(@RequestBody BizDataFormDTO formDTO) { |
||||
|
bizDataStatsService.exeDailyAll(formDTO); |
||||
|
return new Result(); |
||||
|
} /** |
||||
|
* @return com.epmet.commons.tools.utils.Result |
||||
|
* @param formDTO |
||||
|
* @description 工作端数据一期,用户分析:参与用户、注册用户分析 |
||||
|
* @Date 2021/3/26 13:27 |
||||
|
**/ |
||||
|
@RequestMapping("patrol") |
||||
|
public Result execute(@RequestBody StaffPatrolStatsFormDTO formDTO) { |
||||
|
bizDataStatsService.executeStaffPatrolStats(formDTO); |
||||
|
return new Result(); |
||||
|
} |
||||
|
} |
||||
@ -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.dao.org; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.dao.BaseDao; |
||||
|
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; |
||||
|
import com.epmet.dto.user.result.CustomerGridStaffDTO; |
||||
|
import com.epmet.entity.org.CustomerStaffGridEntity; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 客户网格人员关系表 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2020-03-16 |
||||
|
*/ |
||||
|
@Mapper |
||||
|
public interface CustomerStaffGridDao extends BaseDao<CustomerStaffGridEntity> { |
||||
|
|
||||
|
List<CustomerGridStaffDTO> selectGridStaffList(StaffPatrolStatsFormDTO formDTO); |
||||
|
} |
||||
@ -0,0 +1,41 @@ |
|||||
|
/** |
||||
|
* 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.dao.user; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.dao.BaseDao; |
||||
|
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; |
||||
|
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO; |
||||
|
import com.epmet.entity.user.StatsStaffPatrolRecordDailyEntity; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* [天]工作人员巡查记录统计 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-29 |
||||
|
*/ |
||||
|
@Mapper |
||||
|
public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrolRecordDailyEntity> { |
||||
|
|
||||
|
Integer insertBatch(@Param("list") List<StatsStaffPatrolRecordDailyDTO> insertList); |
||||
|
|
||||
|
int delete(StaffPatrolStatsFormDTO formDTO); |
||||
|
} |
||||
@ -0,0 +1,40 @@ |
|||||
|
/** |
||||
|
* 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.entity.org; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
/** |
||||
|
* 客户网格表 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2020-03-16 |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper=false) |
||||
|
@TableName("customer_staff_grid") |
||||
|
public class CustomerStaffGridEntity extends BaseEpmetEntity { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
private String customerId; |
||||
|
private String gridId; |
||||
|
private String userId; |
||||
|
} |
||||
@ -0,0 +1,116 @@ |
|||||
|
/** |
||||
|
* 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.entity.user; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* [天]工作人员巡查记录统计 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-29 |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper=false) |
||||
|
@TableName("stats_staff_patrol_record_daily") |
||||
|
public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 客户Id |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* 统计日期 关联日期dim表 |
||||
|
*/ |
||||
|
private String dateId; |
||||
|
|
||||
|
/** |
||||
|
* 周ID |
||||
|
*/ |
||||
|
private String weekId; |
||||
|
|
||||
|
/** |
||||
|
* 月ID |
||||
|
*/ |
||||
|
private String monthId; |
||||
|
|
||||
|
/** |
||||
|
* 季ID |
||||
|
*/ |
||||
|
private String quarterId; |
||||
|
|
||||
|
/** |
||||
|
* 年ID |
||||
|
*/ |
||||
|
private String yearId; |
||||
|
|
||||
|
/** |
||||
|
* 网格id |
||||
|
*/ |
||||
|
private String gridId; |
||||
|
|
||||
|
/** |
||||
|
* 工作人员所属组织id=网格所属的组织id |
||||
|
*/ |
||||
|
private String agencyId; |
||||
|
|
||||
|
/** |
||||
|
* 网格所有上级id |
||||
|
*/ |
||||
|
private String gridPids; |
||||
|
|
||||
|
/** |
||||
|
* 工作人员用户id |
||||
|
*/ |
||||
|
private String staffId; |
||||
|
|
||||
|
/** |
||||
|
* 巡查次数 |
||||
|
*/ |
||||
|
private Integer patrolTotal; |
||||
|
|
||||
|
/** |
||||
|
* 巡查时长 单位:秒 |
||||
|
*/ |
||||
|
private Integer totalTime; |
||||
|
|
||||
|
/** |
||||
|
* 巡查期间直接立项项目数 |
||||
|
*/ |
||||
|
private Integer reportProjectCount; |
||||
|
|
||||
|
/** |
||||
|
* 最新的巡查开始时间 |
||||
|
*/ |
||||
|
private Date latestPatrolTime; |
||||
|
|
||||
|
/** |
||||
|
* 最新的巡查状态 正在巡查中:patrolling;结束:end |
||||
|
*/ |
||||
|
private String latestPatrolStatus; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,40 @@ |
|||||
|
/** |
||||
|
* 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.service.evaluationindex.extract.biz; |
||||
|
|
||||
|
import com.epmet.dto.extract.form.BizDataFormDTO; |
||||
|
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; |
||||
|
|
||||
|
/** |
||||
|
* [天]工作人员巡查记录统计 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-29 |
||||
|
*/ |
||||
|
public interface BizDataStatsService { |
||||
|
|
||||
|
/** |
||||
|
* desc:抽取所有业务数据到统计库 |
||||
|
* |
||||
|
* @param dataFormDTO |
||||
|
*/ |
||||
|
void exeDailyAll(BizDataFormDTO dataFormDTO); |
||||
|
|
||||
|
void executeStaffPatrolStats(StaffPatrolStatsFormDTO formDTO); |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,300 @@ |
|||||
|
package com.epmet.service.evaluationindex.extract.biz.impl; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.epmet.commons.tools.constant.NumConstant; |
||||
|
import com.epmet.commons.tools.utils.ConvertUtils; |
||||
|
import com.epmet.commons.tools.utils.DateUtils; |
||||
|
import com.epmet.constant.ProjectConstant; |
||||
|
import com.epmet.dto.ProjectDTO; |
||||
|
import com.epmet.dto.extract.form.BizDataFormDTO; |
||||
|
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; |
||||
|
import com.epmet.dto.user.result.CustomerGridStaffDTO; |
||||
|
import com.epmet.dto.user.result.CustomerStaffDTO; |
||||
|
import com.epmet.dto.user.result.StaffPatrolRecordResult; |
||||
|
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO; |
||||
|
import com.epmet.service.evaluationindex.extract.biz.BizDataStatsService; |
||||
|
import com.epmet.service.org.CustomerStaffService; |
||||
|
import com.epmet.service.project.ProjectService; |
||||
|
import com.epmet.service.stats.DimCustomerService; |
||||
|
import com.epmet.service.user.StatsStaffPatrolService; |
||||
|
import com.epmet.service.user.UserService; |
||||
|
import com.epmet.util.DimIdGenerator; |
||||
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.apache.commons.collections4.CollectionUtils; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
import org.jetbrains.annotations.NotNull; |
||||
|
import org.jetbrains.annotations.Nullable; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
import java.util.concurrent.*; |
||||
|
import java.util.stream.Collectors; |
||||
|
|
||||
|
/** |
||||
|
* desc:【天】业务库里的统计 |
||||
|
* |
||||
|
* @author: LiuJanJun |
||||
|
* @date: 2021/6/29 3:08 下午 |
||||
|
* @version: 1.0 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Service |
||||
|
public class BizDataStatsServiceImpl implements BizDataStatsService { |
||||
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
||||
|
.setNameFormat("bizDataStats-pool-%d").build(); |
||||
|
ExecutorService threadPool = new ThreadPoolExecutor(3, 6, |
||||
|
10L, TimeUnit.MINUTES, |
||||
|
new LinkedBlockingQueue<>(500), namedThreadFactory, new ThreadPoolExecutor.CallerRunsPolicy()); |
||||
|
@Autowired |
||||
|
private CustomerStaffService customerStaffService; |
||||
|
@Autowired |
||||
|
private UserService userService; |
||||
|
@Autowired |
||||
|
private ProjectService projectService; |
||||
|
@Autowired |
||||
|
private StatsStaffPatrolService statsStaffPatrolService; |
||||
|
@Autowired |
||||
|
private DimCustomerService dimCustomerService; |
||||
|
|
||||
|
@Override |
||||
|
public void exeDailyAll(BizDataFormDTO dataFormDTO) { |
||||
|
String customerId = dataFormDTO.getCustomerId(); |
||||
|
|
||||
|
List<String> customerIds = new ArrayList<>(); |
||||
|
if (StringUtils.isNotBlank(customerId)) { |
||||
|
//指定某个客户
|
||||
|
customerIds.add(customerId); |
||||
|
} else { |
||||
|
//查询全部客户
|
||||
|
int pageNo = NumConstant.ONE; |
||||
|
int pageSize = NumConstant.ONE_HUNDRED; |
||||
|
customerIds = dimCustomerService.selectCustomerIdPage(pageNo, pageSize); |
||||
|
if (org.springframework.util.CollectionUtils.isEmpty(customerIds)) { |
||||
|
log.error("exeDailyAll 获取客户Id为空"); |
||||
|
return; |
||||
|
} |
||||
|
} |
||||
|
customerIds.forEach(cId -> { |
||||
|
dataFormDTO.setCustomerId(cId); |
||||
|
log.info("exeDailyAll param:{}", JSON.toJSONString(dataFormDTO)); |
||||
|
submitJob(dataFormDTO); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void executeStaffPatrolStats(StaffPatrolStatsFormDTO formDTO) { |
||||
|
//校正参数里的前一天日期的数据
|
||||
|
//获取所有网格员
|
||||
|
List<CustomerGridStaffDTO> allGridMembers = getAllGridMembers(formDTO); |
||||
|
if (CollectionUtils.isEmpty(allGridMembers)){ |
||||
|
log.warn("executeStaffPatrolStats have any gridMembers,param:{}",JSON.toJSONString(formDTO)); |
||||
|
return; |
||||
|
} |
||||
|
String yesterdayStr = getYesterdayString(formDTO); |
||||
|
StaffPatrolStatsFormDTO yesterdayParam = ConvertUtils.sourceToTarget(formDTO, StaffPatrolStatsFormDTO.class); |
||||
|
yesterdayParam.setDateId(yesterdayStr); |
||||
|
reloadStaffPatrolStatsData(yesterdayParam, allGridMembers); |
||||
|
|
||||
|
//初始化参数里日期的数据 如果当前时间在1分钟内 则初始化
|
||||
|
String todayDateDimId = DimIdGenerator.getDateDimId(new Date()); |
||||
|
if (todayDateDimId.equals(formDTO.getDateId())){ |
||||
|
//如果当前时间-1分钟还等于今天 则进行初始化操作 否则执行数据纠正
|
||||
|
String dateDimId = DimIdGenerator.getDateDimId(new Date(System.currentTimeMillis() - 1 * 60 * 1000)); |
||||
|
if (!dateDimId.equals(todayDateDimId)){ |
||||
|
initStaffPatrolTodayData(formDTO, allGridMembers); |
||||
|
}else{ |
||||
|
reloadStaffPatrolStatsData(formDTO, allGridMembers); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
private void reloadStaffPatrolStatsData(StaffPatrolStatsFormDTO formDTO, List<CustomerGridStaffDTO> allGridMembers) { |
||||
|
log.info("reloadStaffPatrolStatsData param:{}",JSON.toJSONString(formDTO)); |
||||
|
//获取昨日的巡查统计记录
|
||||
|
|
||||
|
//遍历网格员重新初始化数据
|
||||
|
List<StatsStaffPatrolRecordDailyDTO> insertList = buildInitPatrolStatsData(formDTO, allGridMembers); |
||||
|
|
||||
|
Map<String, StatsStaffPatrolRecordDailyDTO> yesterdayStatsMap = insertList.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getStaffId(), o -> o, (o1, o2) -> o1)); |
||||
|
//获取昨日的巡查记录
|
||||
|
List<StaffPatrolRecordResult> yesterdayPatrolList = userService.selectStaffPatrolListByDateId(formDTO.getCustomerId(), formDTO.getDateId()); |
||||
|
|
||||
|
//获取昨日的立项项目数
|
||||
|
List<ProjectDTO> yesterdayProjectList = projectService.selectProjectListByDateId(formDTO.getCustomerId(), formDTO.getDateId(), ProjectConstant.PROJECT_ORIGIN_AGENCY); |
||||
|
|
||||
|
//遍历网格员 设置其 巡查次数 巡查时常 上报项目数
|
||||
|
yesterdayPatrolList.forEach(patrolRecord -> { |
||||
|
String key = patrolRecord.getGrid().concat(patrolRecord.getStaffId()); |
||||
|
StatsStaffPatrolRecordDailyDTO patrolRecordDailyDTO = yesterdayStatsMap.get(key); |
||||
|
if (patrolRecordDailyDTO != null) { |
||||
|
long total = (patrolRecord.getPatrolEndTime().getTime() - patrolRecord.getPatrolStartTime().getTime()) / 1000; |
||||
|
if (patrolRecordDailyDTO.getTotalTime() == null) { |
||||
|
patrolRecordDailyDTO.setTotalTime(NumConstant.ZERO); |
||||
|
} |
||||
|
patrolRecordDailyDTO.setTotalTime(patrolRecordDailyDTO.getTotalTime() + (int) total); |
||||
|
if (patrolRecordDailyDTO.getPatrolTotal() == null) { |
||||
|
patrolRecordDailyDTO.setPatrolTotal(NumConstant.ZERO); |
||||
|
} |
||||
|
patrolRecordDailyDTO.setPatrolTotal(patrolRecordDailyDTO.getPatrolTotal() + NumConstant.ONE); |
||||
|
//如果巡查记录时间小于统计里的最新的时间 则更新
|
||||
|
if (patrolRecordDailyDTO.getLatestPatrolTime() == null || patrolRecordDailyDTO.getLatestPatrolTime().getTime() < patrolRecord.getPatrolStartTime().getTime()) { |
||||
|
patrolRecordDailyDTO.setLatestPatrolTime(patrolRecord.getPatrolStartTime()); |
||||
|
patrolRecordDailyDTO.setLatestPatrolStatus(patrolRecord.getStatus()); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
//填充项目数
|
||||
|
yesterdayProjectList.forEach(projectDTO -> { |
||||
|
|
||||
|
yesterdayPatrolList.forEach(patrol -> { |
||||
|
//项目立项时间 在巡查期间时 总数加1
|
||||
|
long projectCreateTime = projectDTO.getCreatedTime().getTime(); |
||||
|
//创建人为网格员 且时间在巡查期间的 则上报的项目数加1
|
||||
|
if (projectDTO.getCreatedBy().equals(patrol.getStaffId()) && projectCreateTime >= patrol.getPatrolStartTime().getTime() && projectCreateTime <= patrol.getPatrolEndTime().getTime()) { |
||||
|
String unqPatrolKey = getUnqPatrolKey(patrol.getGrid(), patrol.getStaffId()); |
||||
|
StatsStaffPatrolRecordDailyDTO recordDailyDTO = yesterdayStatsMap.get(unqPatrolKey); |
||||
|
if (recordDailyDTO == null) { |
||||
|
log.error("have project data but have any patrolRecordDaily,gridId:{},staffId:{}", patrol.getGrid(), patrol.getStaffId()); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
recordDailyDTO.setReportProjectCount(recordDailyDTO.getReportProjectCount() + 1); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList); |
||||
|
log.debug("initStaffPatrolStats insert rows:{}", effectRow); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* desc: 获取key |
||||
|
* |
||||
|
* @param gridId |
||||
|
* @param staffId |
||||
|
* @return java.lang.String |
||||
|
* @author LiuJanJun |
||||
|
* @date 2021/7/2 8:32 上午 |
||||
|
*/ |
||||
|
private String getUnqPatrolKey(String gridId, String staffId) { |
||||
|
return gridId.concat(staffId); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@Nullable |
||||
|
private String getYesterdayString(StaffPatrolStatsFormDTO formDTO) { |
||||
|
Date dateParam = DateUtils.parse(formDTO.getDateId(), DateUtils.DATE_PATTERN_YYYYMMDD); |
||||
|
Date yesterdayDate = DateUtils.addDateDays(dateParam, -1); |
||||
|
return DateUtils.format(yesterdayDate, DateUtils.DATE_PATTERN_YYYYMMDD); |
||||
|
} |
||||
|
|
||||
|
private void initStaffPatrolTodayData(StaffPatrolStatsFormDTO formDTO, List<CustomerGridStaffDTO> allGridMembers) { |
||||
|
log.info("initStaffPatrolTodayData param:{}",JSON.toJSONString(formDTO)); |
||||
|
List<StatsStaffPatrolRecordDailyDTO> insertList = buildInitPatrolStatsData(formDTO, allGridMembers); |
||||
|
Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList); |
||||
|
log.debug("initStaffPatrolStats insert rows:{}", effectRow); |
||||
|
} |
||||
|
|
||||
|
@NotNull |
||||
|
private List<StatsStaffPatrolRecordDailyDTO> buildInitPatrolStatsData(StaffPatrolStatsFormDTO formDTO, List<CustomerGridStaffDTO> allGridMembers) { |
||||
|
List<StatsStaffPatrolRecordDailyDTO> lastStaffPatrolList = userService.selectLastStaffPatrolList(formDTO); |
||||
|
Map<String, StatsStaffPatrolRecordDailyDTO> lastPatrolMap = lastStaffPatrolList.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getStaffId(), o -> o, (o1, o2) -> o1)); |
||||
|
//构建数据 插入
|
||||
|
List<StatsStaffPatrolRecordDailyDTO> insertList = new ArrayList<>(); |
||||
|
Date date = DateUtils.parse(formDTO.getDateId(), DateUtils.DATE_PATTERN_YYYYMMDD); |
||||
|
DimIdGenerator.DimIdBean dimIdBean = DimIdGenerator.getDimIdBean(date); |
||||
|
allGridMembers.forEach(gridMember -> { |
||||
|
StatsStaffPatrolRecordDailyDTO record = new StatsStaffPatrolRecordDailyDTO(); |
||||
|
record.setCustomerId(gridMember.getCustomerId()); |
||||
|
record.setGridId(gridMember.getGridId()); |
||||
|
record.setAgencyId(gridMember.getAgencyId()); |
||||
|
record.setGridPids(gridMember.getGridPids()); |
||||
|
record.setStaffId(gridMember.getUserId()); |
||||
|
record.setDateId(dimIdBean.getDateId()); |
||||
|
record.setWeekId(dimIdBean.getWeekId()); |
||||
|
record.setQuarterId(dimIdBean.getQuarterId()); |
||||
|
record.setYearId(dimIdBean.getYearId()); |
||||
|
record.setMonthId(dimIdBean.getMonthId()); |
||||
|
StatsStaffPatrolRecordDailyDTO recordDailyDTO = lastPatrolMap.get(gridMember.getGridId().concat(gridMember.getUserId())); |
||||
|
|
||||
|
record.setTotalTime(NumConstant.ZERO); |
||||
|
record.setPatrolTotal(NumConstant.ZERO); |
||||
|
record.setLatestPatrolStatus("end"); |
||||
|
record.setReportProjectCount(NumConstant.ZERO); |
||||
|
//最后巡查时间
|
||||
|
record.setLatestPatrolTime(null); |
||||
|
if (recordDailyDTO != null) { |
||||
|
record.setLatestPatrolStatus(recordDailyDTO.getLatestPatrolStatus()); |
||||
|
record.setLatestPatrolTime(recordDailyDTO.getLatestPatrolTime()); |
||||
|
} |
||||
|
|
||||
|
insertList.add(record); |
||||
|
|
||||
|
}); |
||||
|
return insertList; |
||||
|
} |
||||
|
|
||||
|
private List<CustomerGridStaffDTO> getAllGridMembers(StaffPatrolStatsFormDTO formDTO) { |
||||
|
//获取所有的网格员
|
||||
|
//1.获取所有网格用户
|
||||
|
List<CustomerGridStaffDTO> allStaffList = customerStaffService.selectStaffGridList(formDTO); |
||||
|
if (CollectionUtils.isEmpty(allStaffList)) { |
||||
|
log.warn("reloadStaffPatrolStats customerId:{} have any staff,param:{}", formDTO.getCustomerId(), JSON.toJSONString(formDTO)); |
||||
|
return allStaffList; |
||||
|
} |
||||
|
//获取所有含有网格员角色的用户
|
||||
|
List<CustomerStaffDTO> gridMemberList = userService.selectUserListByRoleKey(formDTO); |
||||
|
if (CollectionUtils.isEmpty(gridMemberList)) { |
||||
|
log.warn("reloadStaffPatrolStats customerId:{} have any gridMembers,param:{}", formDTO.getCustomerId(), JSON.toJSONString(formDTO)); |
||||
|
return allStaffList; |
||||
|
} |
||||
|
List<CustomerGridStaffDTO> insertList = new ArrayList<>(); |
||||
|
|
||||
|
allStaffList.forEach(gridStaff -> gridMemberList.forEach(gridMember -> { |
||||
|
if (gridStaff.getUserId().equals(gridMember.getUserId())) { |
||||
|
insertList.add(gridStaff); |
||||
|
} |
||||
|
})); |
||||
|
log.debug("getAllGridMembers result:{},param:{}", JSON.toJSONString(insertList), JSON.toJSONString(formDTO)); |
||||
|
return insertList; |
||||
|
} |
||||
|
|
||||
|
private void submitJob(BizDataFormDTO param) { |
||||
|
if (StringUtils.isBlank(param.getDateId()) && (StringUtils.isBlank(param.getStartDate()) && StringUtils.isBlank(param.getEndDate()))) { |
||||
|
//如果没有设置开始日期、结束日期,默认查询今天
|
||||
|
param.setDateId(DimIdGenerator.getDateDimId(new Date())); |
||||
|
} |
||||
|
StaffPatrolStatsFormDTO formDTO = ConvertUtils.sourceToTarget(param, StaffPatrolStatsFormDTO.class); |
||||
|
boolean isRange = StringUtils.isBlank(formDTO.getDateId()); |
||||
|
List<String> daysBetween = null; |
||||
|
if (isRange) { |
||||
|
daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate()); |
||||
|
} |
||||
|
List<String> finalDaysBetween = daysBetween; |
||||
|
threadPool.submit(() -> { |
||||
|
if (!isRange) { |
||||
|
try { |
||||
|
//初始化form里的今天的数据 并纠正昨日的数据
|
||||
|
this.executeStaffPatrolStats(formDTO); |
||||
|
} catch (Exception e) { |
||||
|
log.error("【网格员巡查数据统计】发生异常,参数:" + JSON.toJSONString(formDTO), e); |
||||
|
} |
||||
|
} else { |
||||
|
try { |
||||
|
for (String dateDimId : finalDaysBetween) { |
||||
|
formDTO.setDateId(dateDimId); |
||||
|
this.executeStaffPatrolStats(formDTO); |
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
log.error("【网格员巡查数据统计】发生异常,参数:" + JSON.toJSONString(param), e); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,22 @@ |
|||||
|
package com.epmet.service.org; |
||||
|
|
||||
|
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; |
||||
|
import com.epmet.dto.user.result.CustomerGridStaffDTO; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author liujianjun |
||||
|
*/ |
||||
|
public interface CustomerStaffService { |
||||
|
|
||||
|
/** |
||||
|
* desc: 条件获取 网格下的所有人 |
||||
|
* |
||||
|
* @param formDTO |
||||
|
* @return java.util.List<com.epmet.dto.org.GridInfoDTO> |
||||
|
* @author LiuJanJun |
||||
|
* @date 2021/6/29 3:13 下午 |
||||
|
*/ |
||||
|
List<CustomerGridStaffDTO> selectStaffGridList(StaffPatrolStatsFormDTO formDTO); |
||||
|
} |
||||
@ -0,0 +1,39 @@ |
|||||
|
package com.epmet.service.org.impl; |
||||
|
|
||||
|
import com.epmet.commons.dynamic.datasource.annotation.DataSource; |
||||
|
import com.epmet.constant.DataSourceConstant; |
||||
|
import com.epmet.dao.org.CustomerStaffGridDao; |
||||
|
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; |
||||
|
import com.epmet.dto.user.result.CustomerGridStaffDTO; |
||||
|
import com.epmet.service.org.CustomerStaffService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* desc: |
||||
|
* |
||||
|
* @author: LiuJanJun |
||||
|
* @date: 2021/6/29 3:14 下午 |
||||
|
* @version: 1.0 |
||||
|
*/ |
||||
|
@Service |
||||
|
@DataSource(DataSourceConstant.GOV_ORG) |
||||
|
public class CustomerStaffServiceImpl implements CustomerStaffService { |
||||
|
@Autowired |
||||
|
private CustomerStaffGridDao customerStaffGridDao; |
||||
|
|
||||
|
/** |
||||
|
* desc: 条件获取 网格下的所有人 |
||||
|
* |
||||
|
* @param formDTO |
||||
|
* @return java.util.List<com.epmet.dto.org.GridInfoDTO> |
||||
|
* @author LiuJanJun |
||||
|
* @date 2021/6/29 3:13 下午 |
||||
|
*/ |
||||
|
@Override |
||||
|
public List<CustomerGridStaffDTO> selectStaffGridList(StaffPatrolStatsFormDTO formDTO) { |
||||
|
return customerStaffGridDao.selectGridStaffList(formDTO); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,16 @@ |
|||||
|
package com.epmet.service.user; |
||||
|
|
||||
|
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; |
||||
|
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author liujianjun |
||||
|
*/ |
||||
|
public interface StatsStaffPatrolService { |
||||
|
|
||||
|
Integer delAndInsertBatch(StaffPatrolStatsFormDTO formDTO, List<StatsStaffPatrolRecordDailyDTO> insertList); |
||||
|
|
||||
|
List<StatsStaffPatrolRecordDailyDTO> selectData(String customerId, String yesterdayStr); |
||||
|
} |
||||
@ -0,0 +1,48 @@ |
|||||
|
package com.epmet.service.user.impl; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
|
import com.epmet.commons.dynamic.datasource.annotation.DataSource; |
||||
|
import com.epmet.commons.tools.utils.ConvertUtils; |
||||
|
import com.epmet.constant.DataSourceConstant; |
||||
|
import com.epmet.dao.user.StatsStaffPatrolRecordDailyDao; |
||||
|
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; |
||||
|
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO; |
||||
|
import com.epmet.entity.user.StatsStaffPatrolRecordDailyEntity; |
||||
|
import com.epmet.service.user.StatsStaffPatrolService; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* desc: |
||||
|
* |
||||
|
* @author: LiuJanJun |
||||
|
* @date: 2021/6/30 8:33 上午 |
||||
|
* @version: 1.0 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@DataSource(DataSourceConstant.EPMET_USER) |
||||
|
@Service |
||||
|
public class StatsStaffPatrolServiceImpl implements StatsStaffPatrolService { |
||||
|
@Autowired |
||||
|
private StatsStaffPatrolRecordDailyDao statsStaffPatrolRecordDailyDao; |
||||
|
|
||||
|
@Override |
||||
|
public Integer delAndInsertBatch(StaffPatrolStatsFormDTO formDTO, List<StatsStaffPatrolRecordDailyDTO> insertList) { |
||||
|
int delete = statsStaffPatrolRecordDailyDao.delete(formDTO); |
||||
|
log.debug("delAndInsertBatch delete:{},param:{}", delete, JSON.toJSONString(formDTO)); |
||||
|
return statsStaffPatrolRecordDailyDao.insertBatch(insertList); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public List<StatsStaffPatrolRecordDailyDTO> selectData(String customerId, String yesterdayStr) { |
||||
|
LambdaQueryWrapper<StatsStaffPatrolRecordDailyEntity> queryWrapper = new LambdaQueryWrapper<>(); |
||||
|
queryWrapper.eq(StatsStaffPatrolRecordDailyEntity::getCustomerId, customerId) |
||||
|
.eq(StatsStaffPatrolRecordDailyEntity::getDateId, yesterdayStr); |
||||
|
List<StatsStaffPatrolRecordDailyEntity> list = statsStaffPatrolRecordDailyDao.selectList(queryWrapper); |
||||
|
return ConvertUtils.sourceToTarget(list, StatsStaffPatrolRecordDailyDTO.class); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,31 @@ |
|||||
|
<?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.dao.org.CustomerStaffGridDao"> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<!--排除掉pid为空的人--> |
||||
|
<select id="selectGridStaffList" resultType="com.epmet.dto.user.result.CustomerGridStaffDTO"> |
||||
|
SELECT * FROM ( |
||||
|
SELECT |
||||
|
sg.customer_id, |
||||
|
sg.grid_id, |
||||
|
sg.user_id, |
||||
|
grid.PID agencyId, |
||||
|
grid.PIDS gridPids |
||||
|
FROM |
||||
|
customer_staff_grid sg |
||||
|
LEFT JOIN customer_grid grid ON grid.id = sg.grid_id |
||||
|
WHERE |
||||
|
sg.del_flag = '0' |
||||
|
|
||||
|
<if test="customerId != null and customerId != ''"> |
||||
|
AND sg.customer_id = #{customerId} |
||||
|
</if> |
||||
|
<if test="gridId != null and gridId != ''"> |
||||
|
AND sg.GRID_ID = #{gridId} |
||||
|
</if> |
||||
|
) t WHERE t.agencyId IS NOT NULL |
||||
|
</select> |
||||
|
</mapper> |
||||
@ -0,0 +1,69 @@ |
|||||
|
<?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.dao.user.StatsStaffPatrolRecordDailyDao"> |
||||
|
<insert id="insertBatch"> |
||||
|
insert into stats_staff_patrol_record_daily |
||||
|
( |
||||
|
ID, |
||||
|
CUSTOMER_ID, |
||||
|
DATE_ID, |
||||
|
WEEK_ID, |
||||
|
MONTH_ID, |
||||
|
YEAR_ID, |
||||
|
QUARTER_ID, |
||||
|
GRID_ID, |
||||
|
AGENCY_ID, |
||||
|
GRID_PIDS, |
||||
|
STAFF_ID, |
||||
|
PATROL_TOTAL, |
||||
|
TOTAL_TIME, |
||||
|
REPORT_PROJECT_COUNT, |
||||
|
LATEST_PATROL_TIME, |
||||
|
LATEST_PATROL_STATUS, |
||||
|
DEL_FLAG, |
||||
|
REVISION, |
||||
|
CREATED_BY, |
||||
|
CREATED_TIME, |
||||
|
UPDATED_BY, |
||||
|
UPDATED_TIME |
||||
|
) values |
||||
|
<foreach collection="list" item="item" separator=","> |
||||
|
( |
||||
|
(SELECT REPLACE(UUID(), '-', '') AS id), |
||||
|
#{item.customerId}, |
||||
|
#{item.dateId}, |
||||
|
#{item.weekId}, |
||||
|
#{item.monthId}, |
||||
|
#{item.yearId}, |
||||
|
#{item.quarterId}, |
||||
|
#{item.gridId}, |
||||
|
#{item.agencyId}, |
||||
|
#{item.gridPids}, |
||||
|
#{item.staffId}, |
||||
|
#{item.patrolTotal}, |
||||
|
#{item.totalTime}, |
||||
|
#{item.reportProjectCount}, |
||||
|
#{item.latestPatrolTime}, |
||||
|
#{item.latestPatrolStatus}, |
||||
|
'0', |
||||
|
0, |
||||
|
'APP_USER', |
||||
|
now(), |
||||
|
'APP_USER', |
||||
|
now() |
||||
|
) |
||||
|
</foreach> |
||||
|
</insert> |
||||
|
<delete id="delete"> |
||||
|
DELETE FROM stats_staff_patrol_record_daily |
||||
|
WHERE CUSTOMER_ID = #{customerId} |
||||
|
AND DATE_ID = #{dateId} |
||||
|
<if test="gridId != null and gridId != ''"> |
||||
|
AND GRID_ID = #{gridId} |
||||
|
</if> |
||||
|
<if test="staffId != null and staffId != ''"> |
||||
|
AND STAFF_ID = #{staffId} |
||||
|
</if> |
||||
|
</delete> |
||||
|
</mapper> |
||||
@ -0,0 +1,10 @@ |
|||||
|
package com.epmet.service; |
||||
|
|
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.dto.extract.form.BizDataFormDTO; |
||||
|
|
||||
|
public interface BizDataStatsService { |
||||
|
|
||||
|
Result exeStatsDaily(BizDataFormDTO formDTO); |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
package com.epmet.service.impl; |
||||
|
|
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.dto.extract.form.BizDataFormDTO; |
||||
|
import com.epmet.feign.DataStatisticalOpenFeignClient; |
||||
|
import com.epmet.service.BizDataStatsService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
/** |
||||
|
* desc:业务库 数据统计服务实现 |
||||
|
* |
||||
|
* @author: LiuJanJun |
||||
|
* @date: 2021/7/2 2:58 下午 |
||||
|
* @version: 1.0 |
||||
|
*/ |
||||
|
@Service |
||||
|
public class BizDataStatsServiceImpl implements BizDataStatsService { |
||||
|
@Autowired |
||||
|
private DataStatisticalOpenFeignClient feignClient; |
||||
|
@Override |
||||
|
public Result exeStatsDaily(BizDataFormDTO formDTO) { |
||||
|
return feignClient.exeStatsDaily(formDTO); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,38 @@ |
|||||
|
package com.epmet.task; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.dto.extract.form.BizDataFormDTO; |
||||
|
import com.epmet.service.BizDataStatsService; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
/** |
||||
|
* @author zhaoqifeng |
||||
|
* @dscription 业务数据统计 【日】统一入库 |
||||
|
* @date 2020/6/23 14:36 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Component("bizDataStatsDailyTask") |
||||
|
public class BizDataStatsDailyTask implements ITask { |
||||
|
|
||||
|
@Autowired |
||||
|
private BizDataStatsService bizDataStatsService; |
||||
|
|
||||
|
@Override |
||||
|
public void run(String params) { |
||||
|
log.debug("bizDataStatsDailyTask定时任务正在执行,参数为:{}", params); |
||||
|
BizDataFormDTO formDTO = new BizDataFormDTO(); |
||||
|
if (StringUtils.isNotBlank(params)) { |
||||
|
formDTO = JSON.parseObject(params, BizDataFormDTO.class); |
||||
|
} |
||||
|
Result result = bizDataStatsService.exeStatsDaily(formDTO); |
||||
|
if (result.success()){ |
||||
|
log.debug("bizDataStatsDailyTask定时任务正在执行定时任务执行成功"); |
||||
|
}else { |
||||
|
log.debug("bizDataStatsDailyTask定时任务正在执行定时任务执行失败:" + result.getMsg()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,29 @@ |
|||||
|
package com.epmet.dto.form; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @Author zxc |
||||
|
* @DateTime 2021/7/1 10:10 上午 |
||||
|
* @DESC |
||||
|
*/ |
||||
|
@Data |
||||
|
public class PatrolProjectFormDTO implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = 7244072033926913678L; |
||||
|
|
||||
|
private String userId; |
||||
|
|
||||
|
/** |
||||
|
* 巡查开始时间 |
||||
|
*/ |
||||
|
private String patrolStartTime; |
||||
|
|
||||
|
/** |
||||
|
* 巡查结束时间 |
||||
|
*/ |
||||
|
private String patrolEndTime; |
||||
|
} |
||||
@ -0,0 +1,146 @@ |
|||||
|
/** |
||||
|
* 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.dto; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Date; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* [天]工作人员巡查记录统计 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-30 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class StatsStaffPatrolRecordDailyDTO implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 主键 |
||||
|
*/ |
||||
|
private String id; |
||||
|
|
||||
|
/** |
||||
|
* 客户Id |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* 统计日期 关联日期dim表 |
||||
|
*/ |
||||
|
private String dateId; |
||||
|
|
||||
|
/** |
||||
|
* 周ID |
||||
|
*/ |
||||
|
private String weekId; |
||||
|
|
||||
|
/** |
||||
|
* 月ID |
||||
|
*/ |
||||
|
private String monthId; |
||||
|
|
||||
|
/** |
||||
|
* 季ID |
||||
|
*/ |
||||
|
private String quarterId; |
||||
|
|
||||
|
/** |
||||
|
* 年ID |
||||
|
*/ |
||||
|
private String yearId; |
||||
|
|
||||
|
/** |
||||
|
* 网格id |
||||
|
*/ |
||||
|
private String gridId; |
||||
|
|
||||
|
/** |
||||
|
* 工作人员所属组织id=网格所属的组织id |
||||
|
*/ |
||||
|
private String agencyId; |
||||
|
|
||||
|
/** |
||||
|
* 网格所有上级id |
||||
|
*/ |
||||
|
private String gridPids; |
||||
|
|
||||
|
/** |
||||
|
* 工作人员用户id |
||||
|
*/ |
||||
|
private String staffId; |
||||
|
|
||||
|
/** |
||||
|
* 巡查次数 |
||||
|
*/ |
||||
|
private Integer patrolTotal; |
||||
|
|
||||
|
/** |
||||
|
* 巡查时长 单位:秒 |
||||
|
*/ |
||||
|
private Integer totalTime; |
||||
|
|
||||
|
/** |
||||
|
* 巡查期间直接立项项目数 |
||||
|
*/ |
||||
|
private Integer reportProjectCount; |
||||
|
|
||||
|
/** |
||||
|
* 最新的巡查开始时间 |
||||
|
*/ |
||||
|
private Date latestPatrolTime; |
||||
|
|
||||
|
/** |
||||
|
* 最新的巡查状态 正在巡查中:patrolling;结束:end |
||||
|
*/ |
||||
|
private String latestPatrolStatus; |
||||
|
|
||||
|
/** |
||||
|
* 删除标识 0.未删除 1.已删除 |
||||
|
*/ |
||||
|
private Integer delFlag; |
||||
|
|
||||
|
/** |
||||
|
* 乐观锁 |
||||
|
*/ |
||||
|
private Integer revision; |
||||
|
|
||||
|
/** |
||||
|
* 创建人 |
||||
|
*/ |
||||
|
private String createdBy; |
||||
|
|
||||
|
/** |
||||
|
* 创建时间 |
||||
|
*/ |
||||
|
private Date createdTime; |
||||
|
|
||||
|
/** |
||||
|
* 更新人 |
||||
|
*/ |
||||
|
private String updatedBy; |
||||
|
|
||||
|
/** |
||||
|
* 更新时间 |
||||
|
*/ |
||||
|
private Date updatedTime; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,32 @@ |
|||||
|
package com.epmet.controller; |
||||
|
|
||||
|
import com.epmet.commons.tools.page.PageData; |
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.commons.tools.validator.AssertUtils; |
||||
|
import com.epmet.commons.tools.validator.ValidatorUtils; |
||||
|
import com.epmet.commons.tools.validator.group.AddGroup; |
||||
|
import com.epmet.commons.tools.validator.group.UpdateGroup; |
||||
|
import com.epmet.commons.tools.validator.group.DefaultGroup; |
||||
|
import com.epmet.dto.StatsStaffPatrolRecordDailyDTO; |
||||
|
import com.epmet.service.StatsStaffPatrolRecordDailyService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
import java.util.Map; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* [天]工作人员巡查记录统计 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-30 |
||||
|
*/ |
||||
|
@RestController |
||||
|
@RequestMapping("statsstaffpatrolrecorddaily") |
||||
|
public class StatsStaffPatrolRecordDailyController { |
||||
|
|
||||
|
@Autowired |
||||
|
private StatsStaffPatrolRecordDailyService statsStaffPatrolRecordDailyService; |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,64 @@ |
|||||
|
/** |
||||
|
* 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.dao; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.dao.BaseDao; |
||||
|
import com.epmet.entity.StatsStaffPatrolRecordDailyEntity; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* [天]工作人员巡查记录统计 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-30 |
||||
|
*/ |
||||
|
@Mapper |
||||
|
public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrolRecordDailyEntity> { |
||||
|
|
||||
|
/** |
||||
|
* @Description 校验今天某人是不是有数据 |
||||
|
* @Param staffId |
||||
|
* @Param dateId |
||||
|
* @author zxc |
||||
|
* @date 2021/6/30 2:41 下午 |
||||
|
*/ |
||||
|
String checkStatsCount(@Param("staffId")String staffId, @Param("dateId")String dateId,@Param("gridId")String gridId); |
||||
|
|
||||
|
/** |
||||
|
* @Description 更新最近巡查时间和巡查状态 |
||||
|
* @Param id |
||||
|
* @Param patrolStartTime 最近巡查时间 |
||||
|
* @author zxc |
||||
|
* @date 2021/7/1 9:15 上午 |
||||
|
*/ |
||||
|
void updateStatsRecord(@Param("id")String id,@Param("patrolStartTime") Date patrolStartTime); |
||||
|
|
||||
|
/** |
||||
|
* @Description 巡查关闭时更新 |
||||
|
* @Param userId |
||||
|
* @Param patrolStartTime |
||||
|
* @author zxc |
||||
|
* @date 2021/7/1 10:36 上午 |
||||
|
*/ |
||||
|
void updateStatsRecordEnd(@Param("userId")String userId,@Param("totalTime") Integer totalTime, |
||||
|
@Param("projectCount")Integer projectCount,@Param("dateId")String dateId,@Param("gridId")String gridId); |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,116 @@ |
|||||
|
/** |
||||
|
* 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.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* [天]工作人员巡查记录统计 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-30 |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper=false) |
||||
|
@TableName("stats_staff_patrol_record_daily") |
||||
|
public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 客户Id |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* 统计日期 关联日期dim表 |
||||
|
*/ |
||||
|
private String dateId; |
||||
|
|
||||
|
/** |
||||
|
* 周ID |
||||
|
*/ |
||||
|
private String weekId; |
||||
|
|
||||
|
/** |
||||
|
* 月ID |
||||
|
*/ |
||||
|
private String monthId; |
||||
|
|
||||
|
/** |
||||
|
* 季ID |
||||
|
*/ |
||||
|
private String quarterId; |
||||
|
|
||||
|
/** |
||||
|
* 年ID |
||||
|
*/ |
||||
|
private String yearId; |
||||
|
|
||||
|
/** |
||||
|
* 网格id |
||||
|
*/ |
||||
|
private String gridId; |
||||
|
|
||||
|
/** |
||||
|
* 工作人员所属组织id=网格所属的组织id |
||||
|
*/ |
||||
|
private String agencyId; |
||||
|
|
||||
|
/** |
||||
|
* 网格所有上级id |
||||
|
*/ |
||||
|
private String gridPids; |
||||
|
|
||||
|
/** |
||||
|
* 工作人员用户id |
||||
|
*/ |
||||
|
private String staffId; |
||||
|
|
||||
|
/** |
||||
|
* 巡查次数 |
||||
|
*/ |
||||
|
private Integer patrolTotal; |
||||
|
|
||||
|
/** |
||||
|
* 巡查时长 单位:秒 |
||||
|
*/ |
||||
|
private Integer totalTime; |
||||
|
|
||||
|
/** |
||||
|
* 巡查期间直接立项项目数 |
||||
|
*/ |
||||
|
private Integer reportProjectCount; |
||||
|
|
||||
|
/** |
||||
|
* 最新的巡查开始时间 |
||||
|
*/ |
||||
|
private Date latestPatrolTime; |
||||
|
|
||||
|
/** |
||||
|
* 最新的巡查状态 正在巡查中:patrolling;结束:end |
||||
|
*/ |
||||
|
private String latestPatrolStatus; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,15 @@ |
|||||
|
package com.epmet.service; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.service.BaseService; |
||||
|
import com.epmet.entity.StatsStaffPatrolRecordDailyEntity; |
||||
|
|
||||
|
/** |
||||
|
* [天]工作人员巡查记录统计 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-30 |
||||
|
*/ |
||||
|
public interface StatsStaffPatrolRecordDailyService extends BaseService<StatsStaffPatrolRecordDailyEntity> { |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,32 @@ |
|||||
|
package com.epmet.service.impl; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
|
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; |
||||
|
import com.epmet.commons.tools.page.PageData; |
||||
|
import com.epmet.commons.tools.utils.ConvertUtils; |
||||
|
import com.epmet.commons.tools.constant.FieldConstant; |
||||
|
import com.epmet.dao.StatsStaffPatrolRecordDailyDao; |
||||
|
import com.epmet.dto.StatsStaffPatrolRecordDailyDTO; |
||||
|
import com.epmet.entity.StatsStaffPatrolRecordDailyEntity; |
||||
|
import com.epmet.service.StatsStaffPatrolRecordDailyService; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
|
||||
|
import java.util.Arrays; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* [天]工作人员巡查记录统计 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2021-06-30 |
||||
|
*/ |
||||
|
@Service |
||||
|
@Slf4j |
||||
|
public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl<StatsStaffPatrolRecordDailyDao, StatsStaffPatrolRecordDailyEntity> implements StatsStaffPatrolRecordDailyService { |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,91 @@ |
|||||
|
package com.epmet.util; |
||||
|
|
||||
|
import com.epmet.commons.tools.utils.DateUtils; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.Calendar; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
public class DimIdGenerator { |
||||
|
|
||||
|
/** |
||||
|
* 生成日期维度ID |
||||
|
* @param targetDate |
||||
|
* @return |
||||
|
*/ |
||||
|
public static String getDateDimId(Date targetDate) { |
||||
|
return DateUtils.format(targetDate, DateUtils.DATE_PATTERN_YYYYMMDD); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取月维度ID |
||||
|
* @param date |
||||
|
* @return |
||||
|
*/ |
||||
|
public static String getMonthDimId(Date date) { |
||||
|
return DateUtils.format(date, DateUtils.DATE_PATTERN_YYYYMM); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取周维度ID ,每周的星期一为 周的开始 |
||||
|
* @param date |
||||
|
* @return |
||||
|
*/ |
||||
|
public static String getWeekDimId(Date date) { |
||||
|
String yyyy = DateUtils.format(date, DateUtils.DATE_PATTERN_YYYY); |
||||
|
Calendar calendar = Calendar.getInstance(); |
||||
|
calendar.setFirstDayOfWeek(Calendar.MONDAY); |
||||
|
calendar.setTime(date); |
||||
|
return yyyy.concat("W").concat(calendar.get(Calendar.WEEK_OF_YEAR)+""); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取季度维度ID |
||||
|
* @param date |
||||
|
* @return |
||||
|
*/ |
||||
|
public static String getQuarterDimId(Date date) { |
||||
|
String yyyy = DateUtils.format(date, DateUtils.DATE_PATTERN_YYYY); |
||||
|
return yyyy.concat("Q").concat(DateUtils.getQuarterIndex(date) + ""); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取年维度ID |
||||
|
* @param date |
||||
|
* @return |
||||
|
*/ |
||||
|
public static String getYearDimId(Date date) { |
||||
|
return DateUtils.format(date, DateUtils.DATE_PATTERN_YYYY); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取封装了所有ID的对象 |
||||
|
* @return |
||||
|
*/ |
||||
|
public static DimIdBean getDimIdBean(Date date) { |
||||
|
DimIdBean dimIdBean = new DimIdBean(); |
||||
|
dimIdBean.setDateId(getDateDimId(date)); |
||||
|
dimIdBean.setMonthId(getMonthDimId(date)); |
||||
|
dimIdBean.setWeekId(getWeekDimId(date)); |
||||
|
dimIdBean.setQuarterId(getQuarterDimId(date)); |
||||
|
dimIdBean.setYearId(getYearDimId(date)); |
||||
|
return dimIdBean; |
||||
|
} |
||||
|
|
||||
|
public static void main(String[] args) { |
||||
|
DimIdBean dimIdBean = getDimIdBean(DateUtils.stringToDate("2020-06-14",DateUtils.DATE_PATTERN)); |
||||
|
System.out.println(dimIdBean); |
||||
|
} |
||||
|
|
||||
|
@Data |
||||
|
public static class DimIdBean { |
||||
|
private String dateId; |
||||
|
private String monthId; |
||||
|
private String quarterId; |
||||
|
private String yearId; |
||||
|
private String weekId; |
||||
|
|
||||
|
public DimIdBean() { |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,26 @@ |
|||||
|
CREATE TABLE `stats_staff_patrol_record_daily` ( |
||||
|
`ID` varchar(64) NOT NULL COMMENT '主键', |
||||
|
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户Id', |
||||
|
`DATE_ID` varchar(32) NOT NULL COMMENT '统计日期 关联日期dim表', |
||||
|
`WEEK_ID` varchar(32) NOT NULL COMMENT '周ID', |
||||
|
`MONTH_ID` varchar(32) NOT NULL COMMENT '月ID', |
||||
|
`QUARTER_ID` varchar(32) NOT NULL COMMENT '季ID', |
||||
|
`YEAR_ID` varchar(32) NOT NULL COMMENT '年ID', |
||||
|
`GRID_ID` varchar(64) NOT NULL COMMENT '网格id', |
||||
|
`AGENCY_ID` varchar(64) DEFAULT NULL COMMENT '工作人员所属组织id=网格所属的组织id', |
||||
|
`GRID_PIDS` varchar(512) DEFAULT NULL COMMENT '网格所有上级id', |
||||
|
`STAFF_ID` varchar(64) DEFAULT NULL COMMENT '工作人员用户id', |
||||
|
`PATROL_TOTAL` int(11) DEFAULT NULL COMMENT '巡查次数', |
||||
|
`TOTAL_TIME` int(11) DEFAULT NULL COMMENT '巡查时长 单位:秒', |
||||
|
`REPORT_PROJECT_COUNT` int(11) DEFAULT NULL COMMENT '巡查期间直接立项项目数', |
||||
|
`LATEST_PATROL_TIME` datetime DEFAULT NULL COMMENT '最新的巡查开始时间', |
||||
|
`LATEST_PATROL_STATUS` varchar(32) DEFAULT NULL COMMENT '最新的巡查状态 正在巡查中:patrolling;结束:end', |
||||
|
`DEL_FLAG` int(11) 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`), |
||||
|
UNIQUE KEY `unx_staff` (`DATE_ID`,`GRID_ID`,`STAFF_ID`) USING BTREE |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[天]工作人员巡查记录统计'; |
||||
@ -0,0 +1,3 @@ |
|||||
|
ALTER TABLE `epmet_user`.`stats_staff_patrol_record_daily` |
||||
|
DROP INDEX `unx_staff`, |
||||
|
ADD UNIQUE INDEX `unx_staff`(`DATE_ID`, `STAFF_ID`, `GRID_ID`) USING BTREE; |
||||
@ -0,0 +1,43 @@ |
|||||
|
<?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.dao.StatsStaffPatrolRecordDailyDao"> |
||||
|
|
||||
|
<!-- 更新最近巡查时间和巡查状态 --> |
||||
|
<update id="updateStatsRecord"> |
||||
|
update stats_staff_patrol_record_daily |
||||
|
set LATEST_PATROL_TIME = #{patrolStartTime}, |
||||
|
LATEST_PATROL_STATUS = 'patrolling', |
||||
|
UPDATED_TIME = NOW() |
||||
|
where DEL_FLAG = 0 |
||||
|
and ID = #{id} |
||||
|
</update> |
||||
|
|
||||
|
<!-- 巡查关闭时更新 --> |
||||
|
<update id="updateStatsRecordEnd"> |
||||
|
update stats_staff_patrol_record_daily |
||||
|
SET TOTAL_TIME = (TOTAL_TIME + #{totalTime}), |
||||
|
PATROL_TOTAL = (PATROL_TOTAL + 1), |
||||
|
REPORT_PROJECT_COUNT = (REPORT_PROJECT_COUNT + #{projectCount}), |
||||
|
LATEST_PATROL_STATUS = 'end', |
||||
|
UPDATED_TIME = NOW() |
||||
|
WHERE DEL_FLAG = 0 |
||||
|
AND STAFF_ID = #{userId} |
||||
|
AND DATE_ID = #{dateId} |
||||
|
AND GRID_ID = #{gridId} |
||||
|
</update> |
||||
|
|
||||
|
<!-- 校验今天某人是不是有数据 --> |
||||
|
<select id="checkStatsCount" resultType="java.lang.String"> |
||||
|
SELECT |
||||
|
ID |
||||
|
FROM |
||||
|
stats_staff_patrol_record_daily |
||||
|
WHERE |
||||
|
DEL_FLAG = 0 |
||||
|
AND DATE_ID = #{dateId} |
||||
|
AND STAFF_ID = #{staffId} |
||||
|
AND GRID_ID = #{gridId} |
||||
|
</select> |
||||
|
|
||||
|
</mapper> |
||||
Loading…
Reference in new issue