Browse Source

Merge remote-tracking branch 'origin/dev_patrol_stats' into develop

dev_shibei_match
zxc 4 years ago
parent
commit
981f80d6a3
  1. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java
  2. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java
  3. 2
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml
  4. 23
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StatsStaffPatrolRecordDailyDao.java
  5. 89
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java
  6. 91
      epmet-user/epmet-user-server/src/main/java/com/epmet/util/DimIdGenerator.java
  7. 27
      epmet-user/epmet-user-server/src/main/resources/mapper/StatsStaffPatrolRecordDailyDao.xml

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java

@ -68,6 +68,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService {
gridStaff.setTotalTime(NumConstant.ZERO); gridStaff.setTotalTime(NumConstant.ZERO);
gridStaff.setPatrolTotal(NumConstant.ZERO); gridStaff.setPatrolTotal(NumConstant.ZERO);
gridStaff.setLatestPatrolStatus("end"); gridStaff.setLatestPatrolStatus("end");
gridStaff.setReportProjectCount(NumConstant.ZERO);
//最后巡查时间 //最后巡查时间
gridStaff.setLatestPatrolTime(null); gridStaff.setLatestPatrolTime(null);
if (recordDailyDTO != null) { if (recordDailyDTO != null) {

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java

@ -26,7 +26,6 @@ public class StatsStaffPatrolServiceImpl implements StatsStaffPatrolService {
@Override @Override
public Integer insertBatch(List<StatsStaffPatrolRecordDailyDTO> insertList) { public Integer insertBatch(List<StatsStaffPatrolRecordDailyDTO> insertList) {
System.out.println("=====:"+JSON.toJSONString(insertList));
return statsStaffPatrolRecordDailyDao.insertBatch(insertList); return statsStaffPatrolRecordDailyDao.insertBatch(insertList);
} }
} }

2
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml

@ -591,7 +591,7 @@
t.PATROL_START_TIME latestPatrolTime, t.PATROL_START_TIME latestPatrolTime,
t.STATUS latestPatrolStatus t.STATUS latestPatrolStatus
FROM FROM
( SELECT GRID, STAFF_ID, max( CREATED_TIME ) AS CREATED_TIME FROM staff_patrol_record GROUP BY GRID, STAFF_ID ) a ( SELECT DEL_FLAG,CUSTOMER_ID,GRID, STAFF_ID, max( CREATED_TIME ) AS CREATED_TIME FROM staff_patrol_record GROUP BY GRID, STAFF_ID ) a
LEFT JOIN staff_patrol_record t ON t.GRID = a.GRID LEFT JOIN staff_patrol_record t ON t.GRID = a.GRID
AND t.STAFF_ID = a.STAFF_ID AND t.STAFF_ID = a.STAFF_ID
AND t.CREATED_TIME = a.CREATED_TIME AND t.CREATED_TIME = a.CREATED_TIME

23
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StatsStaffPatrolRecordDailyDao.java

@ -22,6 +22,8 @@ import com.epmet.entity.StatsStaffPatrolRecordDailyEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Date;
/** /**
* []工作人员巡查记录统计 * []工作人员巡查记录统计
* *
@ -38,6 +40,25 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrol
* @author zxc * @author zxc
* @date 2021/6/30 2:41 下午 * @date 2021/6/30 2:41 下午
*/ */
Integer checkStatsCount(@Param("staffId")String staffId, @Param("dateId")String dateId); String checkStatsCount(@Param("staffId")String staffId, @Param("dateId")String dateId);
/**
* @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);
} }

89
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java

@ -15,15 +15,19 @@ import com.epmet.constant.PatrolConstant;
import com.epmet.dao.CustomerStaffDao; import com.epmet.dao.CustomerStaffDao;
import com.epmet.dao.StaffPatrolDetailDao; import com.epmet.dao.StaffPatrolDetailDao;
import com.epmet.dao.StaffPatrolRecordDao; import com.epmet.dao.StaffPatrolRecordDao;
import com.epmet.dao.StatsStaffPatrolRecordDailyDao;
import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.StaffPatrolDetailDTO; import com.epmet.dto.StaffPatrolDetailDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.entity.StaffPatrolDetailEntity; import com.epmet.entity.StaffPatrolDetailEntity;
import com.epmet.entity.StaffPatrolRecordEntity; import com.epmet.entity.StaffPatrolRecordEntity;
import com.epmet.entity.StatsStaffPatrolRecordDailyEntity;
import com.epmet.feign.GovOrgFeignClient; import com.epmet.feign.GovOrgFeignClient;
import com.epmet.feign.GovProjectOpenFeignClient;
import com.epmet.service.StaffPatrolDetailService; import com.epmet.service.StaffPatrolDetailService;
import com.epmet.service.StaffPatrolRecordService; import com.epmet.service.StaffPatrolRecordService;
import com.epmet.util.DimIdGenerator;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -61,6 +65,12 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl<StaffPatrolRec
@Autowired @Autowired
private StaffPatrolDetailDao staffPatrolDetailDao; private StaffPatrolDetailDao staffPatrolDetailDao;
@Autowired
private StatsStaffPatrolRecordDailyDao statsStaffPatrolRecordDailyDao;
@Autowired
private GovProjectOpenFeignClient govProjectOpenFeignClient;
/** /**
* 巡查界面初始化 * 巡查界面初始化
@ -151,7 +161,9 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl<StaffPatrolRec
record.setGridPids(grid.getPids()); record.setGridPids(grid.getPids());
record.setGrid(formDTO.getGridId()); record.setGrid(formDTO.getGridId());
record.setStaffId(tokenDto.getUserId()); record.setStaffId(tokenDto.getUserId());
record.setPatrolStartTime(new Date()); // 方便更新 巡查统计表使用
Date patrolStartTime = new Date();
record.setPatrolStartTime(patrolStartTime);
record.setStatus(PatrolConstant.PATROLLING); record.setStatus(PatrolConstant.PATROLLING);
insert(record); insert(record);
@ -169,9 +181,51 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl<StaffPatrolRec
StartPatrolResultDTO result = new StartPatrolResultDTO(); StartPatrolResultDTO result = new StartPatrolResultDTO();
result.setStaffPatrolRecId(record.getId()); result.setStaffPatrolRecId(record.getId());
result.setCarmDown(NumConstant.THIRTY); result.setCarmDown(NumConstant.THIRTY);
// 添加巡查统计表逻辑
statsPatrolUpdateStart(tokenDto.getUserId(),patrolStartTime,grid);
return result; return result;
} }
/**
* @Description 开始巡查时添加巡查统计表逻辑 更新巡查状态最近巡查时间
* @Param userId
* @Param patrolStartTime
* @Param grid
* @author zxc
* @date 2021/7/1 9:22 上午
*/
@Transactional(rollbackFor = Exception.class)
public void statsPatrolUpdateStart(String userId,Date patrolStartTime,CustomerGridDTO grid){
// 巡查统计表更新数据
//1.校验是否有今天此人数据
String statsId = statsStaffPatrolRecordDailyDao.checkStatsCount(userId, DateUtils.getBeforeNDay(NumConstant.ZERO));
if (StringUtils.isEmpty(statsId)){
DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(new Date());
// 不存在就插入新纪录
StatsStaffPatrolRecordDailyEntity entity = new StatsStaffPatrolRecordDailyEntity();
entity.setCustomerId(grid.getCustomerId());
entity.setDateId(dimId.getDateId());
entity.setWeekId(dimId.getWeekId());
entity.setMonthId(dimId.getMonthId());
entity.setQuarterId(dimId.getQuarterId());
entity.setYearId(dimId.getYearId());
entity.setGridId(grid.getId());
entity.setAgencyId(grid.getPid());
entity.setGridPids(grid.getPids());
entity.setStaffId(userId);
// 结束巡查时在+1
entity.setPatrolTotal(NumConstant.ZERO);
entity.setTotalTime(NumConstant.ZERO);
entity.setReportProjectCount(NumConstant.ZERO);
entity.setLatestPatrolTime(patrolStartTime);
entity.setLatestPatrolStatus(PatrolConstant.PATROLLING);
statsStaffPatrolRecordDailyDao.insert(entity);
}else {
// 存在记录,直接更新
statsStaffPatrolRecordDailyDao.updateStatsRecord(statsId,patrolStartTime);
}
}
/** /**
* 结束巡查 * 结束巡查
* *
@ -200,8 +254,11 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl<StaffPatrolRec
} }
record.setActrualEndTime(new Date()); record.setActrualEndTime(new Date());
record.setUpdatedTime(null); record.setUpdatedTime(null);
record.setPatrolEndTime(DateUtils.parse(formDTO.getPatrolEndTime(), DateUtils.DATE_TIME_PATTERN)); // 方便巡查统计表使用
record.setTotalTime(DateUtils.calculateSecond(record.getPatrolStartTime(), record.getPatrolEndTime())); Date patrolEndTime = DateUtils.parse(formDTO.getPatrolEndTime(), DateUtils.DATE_TIME_PATTERN);
record.setPatrolEndTime(patrolEndTime);
Integer totalTime = DateUtils.calculateSecond(record.getPatrolStartTime(), record.getPatrolEndTime());
record.setTotalTime(totalTime);
record.setStatus(PatrolConstant.END); record.setStatus(PatrolConstant.END);
baseDao.updateById(record); baseDao.updateById(record);
//保存记录明细 //保存记录明细
@ -214,6 +271,32 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl<StaffPatrolRec
detailEntity.setLongitude(formDTO.getLongitude()); detailEntity.setLongitude(formDTO.getLongitude());
detailEntity.setSpeed(formDTO.getSpeed()); detailEntity.setSpeed(formDTO.getSpeed());
staffPatrolDetailService.insert(detailEntity); staffPatrolDetailService.insert(detailEntity);
// 添加巡查统计表逻辑
statsPatrolUpdateEnd(tokenDto.getUserId(),totalTime,patrolEndTime,record.getPatrolStartTime());
}
/**
* @Description 巡查结束时添加巡查统计表逻辑
* @Param userId
* @Param totalTime
* @Param patrolStartTime
* @Param patrolEndTime
* @author zxc
* @date 2021/7/1 10:50 上午
*/
@Transactional(rollbackFor = Exception.class)
public void statsPatrolUpdateEnd(String userId, Integer totalTime, Date patrolStartTime, Date patrolEndTime){
String dateId = DateUtils.getBeforeNDay(NumConstant.ZERO);
PatrolProjectFormDTO formDTO = new PatrolProjectFormDTO();
formDTO.setUserId(userId);
formDTO.setPatrolStartTime(patrolStartTime);
formDTO.setPatrolEndTime(patrolEndTime);
Result<Integer> patrolProject = govProjectOpenFeignClient.selectPatrolProject(formDTO);
if (!patrolProject.success()){
throw new RenException("查询巡查期间立项数失败【"+patrolProject.getInternalMsg()+"】");
}
Integer data = patrolProject.getData();
statsStaffPatrolRecordDailyDao.updateStatsRecordEnd(userId,totalTime,data,dateId);
} }
/** /**

91
epmet-user/epmet-user-server/src/main/java/com/epmet/util/DimIdGenerator.java

@ -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() {
}
}
}

27
epmet-user/epmet-user-server/src/main/resources/mapper/StatsStaffPatrolRecordDailyDao.xml

@ -3,10 +3,33 @@
<mapper namespace="com.epmet.dao.StatsStaffPatrolRecordDailyDao"> <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}
</update>
<!-- 校验今天某人是不是有数据 --> <!-- 校验今天某人是不是有数据 -->
<select id="checkStatsCount" resultType="java.lang.Integer"> <select id="checkStatsCount" resultType="java.lang.String">
SELECT SELECT
COUNT(1) ID
FROM FROM
stats_staff_patrol_record_daily stats_staff_patrol_record_daily
WHERE WHERE

Loading…
Cancel
Save