Browse Source

1.按日维度初始化完成

master
wxz 5 years ago
parent
commit
297a136e84
  1. 57
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  2. 8
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/constant/DatePatternConstant.java
  3. 12
      epmet-module/data-statistical/data-statistical-server/pom.xml
  4. 27
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DimDateController.java
  5. 7
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/DimDateDao.java
  6. 3
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/DimDateService.java
  7. 74
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimDateServiceImpl.java
  8. 15
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DimDateDao.xml

57
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java

@ -16,6 +16,7 @@ import org.joda.time.format.DateTimeFormatter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
@ -34,6 +35,13 @@ public class DateUtils {
/** 时间格式(yyyy-MM-dd HH:mm) */
public final static String DATE_TIME_PATTERN_END_WITH_MINUTE = "yyyy-MM-dd HH:mm";
public static final String DATE_PATTERN_YYYYMMDD = "yyyyMMdd";
public static final String DATE_NAME_PATTERN = "yyyy年MM月dd日";
public static final String DATE_PATTERN_YYYY = "yyyy";
public static final String WEEK_TYPE_ENGLISH = "english";
public static final String WEEK_TYPE_CHINESE = "chinese";
/**
* 日期格式化 日期格式为yyyy-MM-dd
* @param date 日期
@ -184,4 +192,53 @@ public class DateUtils {
DateTime dateTime = new DateTime(date);
return dateTime.plusYears(years).toDate();
}
/**
* 获取星期几例如星期一
* @param date
* @return
*/
public static String getWeekNameOfWeek(Date date, String type) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
String[] chineseWeekDayName = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
String[] englishWeekDayName = { "Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" };
String weekDayName;
switch (type) {
case WEEK_TYPE_ENGLISH:
weekDayName = englishWeekDayName[dayOfWeek - 1];
break;
case WEEK_TYPE_CHINESE:
weekDayName = chineseWeekDayName[dayOfWeek - 1];
break;
default:
weekDayName = "";
}
return weekDayName;
}
//public static String getEnglishWeekName(Date date) {
// new SimpleDateFormat("E");
//}
/**
* 获取属于一年的第几周
* @param date
* @return
*/
public static int getWeekOfYear(Date date) {
DateTime dateTime = new DateTime(date);
return dateTime.getWeekOfWeekyear();
}
public static void main(String[] args) {
//int weekOfYear = getWeekOfYear(new Date());
String e = DateUtils.format(new Date(), "E");
System.out.println(e);
}
}

8
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/constant/DatePatternConstant.java

@ -0,0 +1,8 @@
package com.epmet.constant;
/**
* 日期格式常量
*/
public interface DatePatternConstant {
}

12
epmet-module/data-statistical/data-statistical-server/pom.xml

@ -99,33 +99,33 @@
<!-- 数据库配置-->
<datasource.druid.stats.url>
<![CDATA[jdbc:mysql://192.168.1.130:3306/epmet_data_statistical?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
<![CDATA[jdbc:mysql://118.190.150.119:47306/epmet_data_statistical?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.stats.url>
<datasource.druid.stats.username>epmet_data_statistical_user</datasource.druid.stats.username>
<datasource.druid.stats.password>EpmEt-db-UsEr</datasource.druid.stats.password>
<datasource.druid.org.url>
<![CDATA[jdbc:mysql://192.168.1.130:3306/epmet_gov_org?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
<![CDATA[jdbc:mysql://118.190.150.119:47306/epmet_gov_org?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.org.url>
<datasource.druid.org.username>epmet_gov_org_user</datasource.druid.org.username>
<datasource.druid.org.password>EpmEt-db-UsEr</datasource.druid.org.password>
<datasource.druid.issue.url>
<![CDATA[jdbc:mysql://192.168.1.130:3306/epmet_gov_issue?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
<![CDATA[jdbc:mysql://118.190.150.119:47306/epmet_gov_issue?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.issue.url>
<datasource.druid.issue.username>epmet_gov_issue_user</datasource.druid.issue.username>
<datasource.druid.issue.password>EpmEt-db-UsEr</datasource.druid.issue.password>
<datasource.druid.project.url>
<![CDATA[jdbc:mysql://192.168.1.130:3306/epmet_gov_project?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
<![CDATA[jdbc:mysql://118.190.150.119:47306/epmet_gov_project?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.project.url>
<datasource.druid.project.username>epmet_gov_project_user</datasource.druid.project.username>
<datasource.druid.project.password>EpmEt-db-UsEr</datasource.druid.project.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.host>192.168.1.130</spring.redis.host>
<spring.redis.port>6379</spring.redis.port>
<spring.redis.host>118.190.150.119</spring.redis.host>
<spring.redis.port>47379</spring.redis.port>
<spring.redis.password>123456</spring.redis.password>
<!-- nacos -->
<nacos.register-enabled>false</nacos.register-enabled>

27
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DimDateController.java

@ -0,0 +1,27 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.service.stats.DimDateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("dim")
public class DimDateController {
@Autowired
private DimDateService dimDateService;
/**
* 初始化按日维度
* @return
*/
@PostMapping("/date/init")
public Result initDim() {
dimDateService.initDimDate();
return new Result();
}
}

7
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/DimDateDao.java

@ -40,4 +40,11 @@ public interface DimDateDao extends BaseDao<DimDateEntity> {
* @Description 根据创建时间查询日维度信息
**/
List<DimDateDTO> selectDimDate(DimDateDTO dto);
/**
* 最新的按日维度
*/
DimDateDTO getLatestDimDate();
int insertOne(DimDateEntity dimDateEntity);
}

3
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/DimDateService.java

@ -100,4 +100,7 @@ public interface DimDateService extends BaseService<DimDateEntity> {
* @Description 根据创建时间查询日维度信息
**/
List<DimDateDTO> getDimDate(DimDateDTO dto);
void initDimDate();
}

74
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimDateServiceImpl.java

@ -23,6 +23,8 @@ 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.commons.tools.utils.DateUtils;
import com.epmet.constant.DatePatternConstant;
import com.epmet.dao.stats.DimDateDao;
import com.epmet.dto.stats.DimDateDTO;
import com.epmet.entity.stats.DimDateEntity;
@ -32,9 +34,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.time.LocalDateTime;
import java.util.*;
/**
* 日期维度表
@ -45,7 +46,6 @@ import java.util.Map;
@Service
public class DimDateServiceImpl extends BaseServiceImpl<DimDateDao, DimDateEntity> implements DimDateService {
@Override
public PageData<DimDateDTO> page(Map<String, Object> params) {
IPage<DimDateEntity> page = baseDao.selectPage(
@ -109,4 +109,70 @@ public class DimDateServiceImpl extends BaseServiceImpl<DimDateDao, DimDateEntit
return baseDao.selectDimDate(dto);
}
@Override
public void initDimDate() {
DimDateDTO latestDimDateDto = baseDao.getLatestDimDate();
Date targetDate = DateUtils.addDateDays(DateUtils.parse(
DateUtils.format(new Date(), DateUtils.DATE_PATTERN_YYYYMMDD),
DateUtils.DATE_PATTERN_YYYYMMDD), -1);
Date lastDimDate;
if (latestDimDateDto == null) {
// 没有维度数据
initDimDate(targetDate);
} else if(targetDate.after(lastDimDate = DateUtils.parse(latestDimDateDto.getId(), DateUtils.DATE_PATTERN_YYYYMMDD))) {
// 有维度数据,并且当前日期大于最大按日维度数据的id,需要连续生成至少一天的维度数据(补缺)
initDimDate(lastDimDate, targetDate);
}
}
/**
* 连续初始化
* @param lastDimDate
* @param targetDate
*/
private void initDimDate(Date lastDimDate, Date targetDate) {
while (lastDimDate.before(targetDate)) {
lastDimDate = DateUtils.addDateDays(lastDimDate, 1);
initDimDate(lastDimDate);
}
}
/**
* 初始化单日
* @param targetDate
*/
public void initDimDate(Date targetDate) {
DimDateEntity dimDateEntity = generateDimDate(targetDate);
int c = baseDao.insertOne(dimDateEntity);
}
public DimDateEntity generateDimDate(Date targetDate) {
Date now = new Date();
// 日期字符串
String id = DateUtils.format(targetDate, DateUtils.DATE_PATTERN_YYYYMMDD);
// 日期名称字符串
String dateNameStr = DateUtils.format(targetDate, DateUtils.DATE_NAME_PATTERN);
// 星期几
String chineseWeekName = DateUtils.getWeekNameOfWeek(targetDate, DateUtils.WEEK_TYPE_CHINESE);
String englishWeekName = DateUtils.getWeekNameOfWeek(targetDate, DateUtils.WEEK_TYPE_ENGLISH);
// 一年的第几周
String weekId = DateUtils.format(targetDate, DateUtils.DATE_PATTERN_YYYY).concat("W").concat(String.valueOf(DateUtils.getWeekOfYear(targetDate)));
DimDateEntity dimDateEntity = new DimDateEntity();
dimDateEntity.setId(id);
dimDateEntity.setDateName(dateNameStr);
dimDateEntity.setDayOfWeek(englishWeekName);
dimDateEntity.setDayOfWeekName(chineseWeekName);
dimDateEntity.setWeekId(weekId);
dimDateEntity.setDelFlag("0");
dimDateEntity.setCreatedBy("APP_USER");
dimDateEntity.setCreatedTime(now);
dimDateEntity.setRevision(0);
dimDateEntity.setUpdatedBy("APP_USER");
dimDateEntity.setUpdatedTime(now);
return dimDateEntity;
}
}

15
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DimDateDao.xml

@ -16,4 +16,19 @@
ORDER BY created_time DESC
</select>
<!--最新的按日维度-->
<select id="getLatestDimDate" resultType="com.epmet.dto.stats.DimDateDTO">
SELECT *
FROM dim_date
WHERE DEL_FLAG = 0
ORDER BY ID DESC
LIMIT 1
</select>
<insert id="insertOne" parameterType="com.epmet.entity.stats.DimDateEntity">
INSERT INTO dim_date
(ID, DATE_NAME, DAY_OF_WEEK, DAY_OF_WEEK_NAME, WEEK_ID, DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME)
VALUES
(#{id}, #{dateName}, #{dayOfWeek}, #{dayOfWeekName}, #{weekId}, #{delFlag}, #{revision}, #{createdBy}, #{createdTime}, #{updatedBy}, #{updatedTime})
</insert>
</mapper>
Loading…
Cancel
Save