|
|
@ -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; |
|
|
|
} |
|
|
|
} |