diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java index c2988b67f9..6ce1d2a810 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java @@ -664,15 +664,6 @@ public class DateUtils { return result; } - public static void main(String[] args) { - Date today=new Date(); - Date yesterDay=DateUtils.parse("2020-07-28 15:33:00","yyyy-MM-dd HH:mm:ss"); - Date tomorrow=DateUtils.parse("2020-07-30 15:33:00","yyyy-MM-dd HH:mm:ss"); - System.out.println(comparteDate(today,today)); - System.out.println(comparteDate(yesterDay,today)); - System.out.println(comparteDate(tomorrow,today)); - } - public static String getYearId(String monthId) { if (StringUtils.isNotBlank(monthId) && monthId.length() > 4) { return monthId.substring(NumConstant.ZERO, NumConstant.FOUR); @@ -874,4 +865,138 @@ public class DateUtils { return DateUtils.format(date,dateType); } + /** + * 获取指定日期的 所在周的第一天和和最后一天 + * @param dataStr + * @return + * @throws ParseException + */ + public static String getLastOfWeek(String dataStr) throws ParseException { + Calendar cal = Calendar.getInstance(); + if (StringUtils.isNotBlank(dataStr)){ + cal.setTime(new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).parse(dataStr)); + } + + int d = 0; + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + d = -6; + } else { + d = 2 - cal.get(Calendar.DAY_OF_WEEK); + } + cal.add(Calendar.DAY_OF_WEEK, d); + // 所在周开始日期 + String data1 = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(cal.getTime()); + cal.add(Calendar.DAY_OF_WEEK, 6); + // 所在周结束日期 + String data2 = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(cal.getTime()); + return data1 + "-" + data2; + + } + + /** + * 获取指定日期的 所在周的第一天和和最后一天 + * @param dataStr + * @return + * @throws ParseException + */ + public static String getFirstOfWeek(String dataStr) throws ParseException { + Calendar cal = Calendar.getInstance(); + if (StringUtils.isNotBlank(dataStr)){ + cal.setTime(new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).parse(dataStr)); + } + + int d = 0; + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + d = -6; + } else { + d = 2 - cal.get(Calendar.DAY_OF_WEEK); + } + cal.add(Calendar.DAY_OF_WEEK, d); + // 所在周开始日期 + String data1 = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(cal.getTime()); + cal.add(Calendar.DAY_OF_WEEK, 6); + // 所在周结束日期 + String data2 = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(cal.getTime()); + return data1 + "-" + data2; + + } + + + /** + * 获取本周的第一天 + * @return String + * **/ + public static String getWeekStart(String dateId){ + Calendar cal=Calendar.getInstance(); + if (StringUtils.isNotBlank(dateId)){ + cal.setTime(DateUtils.parseDate(dateId,DateUtils.DATE_PATTERN_YYYYMMDD)); + } + int d = 0; + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + d = -6; + } else { + d = 2 - cal.get(Calendar.DAY_OF_WEEK); + } + cal.add(Calendar.DAY_OF_WEEK, d); + Date time=cal.getTime(); + return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(time); + } + /** + * 获取本周的最后一天 + * @return String + * **/ + public static String getWeekEnd(String dateId){ + Calendar cal=Calendar.getInstance(); + if (StringUtils.isNotBlank(dateId)){ + cal.setTime(DateUtils.parseDate(dateId,DateUtils.DATE_PATTERN_YYYYMMDD)); + } + int d = 0; + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + d = -6; + } else { + d = 2 - cal.get(Calendar.DAY_OF_WEEK); + } + cal.add(Calendar.DAY_OF_WEEK, d); + cal.add(Calendar.DAY_OF_WEEK, 6); + Date time=cal.getTime(); + return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(time); + } + + /** + * 获取本月开始日期 + * @return String + * **/ + public static String getMonthStart(){ + Calendar cal=Calendar.getInstance(); + cal.add(Calendar.MONTH, 0); + cal.set(Calendar.DAY_OF_MONTH, 1); + Date time=cal.getTime(); + return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMM).format(time); + } + /** + * 获取本月最后一天 + * @return String + * **/ + public static String getMonthEnd(){ + Calendar cal=Calendar.getInstance(); + cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); + Date time=cal.getTime(); + return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMM).format(time); + } + + public static void main(String[] args) throws ParseException { + String first = DateUtils.getFirstOfWeek("20210801"); + System.out.println(first); + String fLastOfWeek = DateUtils.getLastOfWeek("20210801"); + System.out.println(fLastOfWeek); + + System.out.println(DateUtils.getWeekStart("20210801")); + System.out.println(DateUtils.getWeekEnd("20210801")); + + Date dateIdDate = DateUtils.parse("20210801", DateUtils.DATE_PATTERN_YYYYMMDD); + String format = DateUtils.format(DateUtils.getMonthStart(dateIdDate), DateUtils.DATE_PATTERN_YYYYMMDD); + System.out.println(format); + format = DateUtils.format(DateUtils.getMonthEnd(dateIdDate), DateUtils.DATE_PATTERN_YYYYMMDD); + System.out.println(format); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/BaseDataFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/BaseDataFormDTO.java new file mode 100644 index 0000000000..d2513cf19d --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/BaseDataFormDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dataaggre.dto.datastats.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 基础参数实体类 + * @Auth sun + */ +@Data +public class BaseDataFormDTO implements Serializable { + + private static final long serialVersionUID = 6766797386944333123L; + /** + * 组织Id + */ + @NotBlank(message = "组织ID不能为空",groups = {BaseDataFormDTO.BaseData.class,BaseDataFormDTO.WorkFact.class}) + private String agencyId; + @NotBlank(message = "组织级别不能为空",groups = BaseDataFormDTO.WorkFact.class) + private String agencyLevel; + private String type; + /** + * 日维度Id + */ + private String dateId; + private String startDateId; + private String endDateId; + public interface BaseData extends CustomerClientShowGroup{} + public interface WorkFact extends CustomerClientShowGroup{} + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/WorkFactResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/WorkFactResultDTO.java new file mode 100644 index 0000000000..01d72bb538 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/WorkFactResultDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * desc: + * + * @author: LiuJanJun + * @date: 2021/8/5 4:51 下午 + * @version: 1.0 + */ +@Data +public class WorkFactResultDTO implements Serializable { + private static final long serialVersionUID = -8149310637601355664L; + private double topicToIssueTotal; + private double issueToProjectTotal; + private double closedProjectTotal; + private double patrolTotal; + private String patrolTotalTime; + private String orgId; + private String orgName; +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/pub/PubController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/pub/PubController.java index 60bb5474c8..f78ac2226c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/pub/PubController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/pub/PubController.java @@ -2,9 +2,9 @@ package com.epmet.dataaggre.controller.pub; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.dataaggre.dto.app.form.AppFootBarFormDTO; -import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; +import com.epmet.dataaggre.dto.datastats.form.BaseDataFormDTO; import com.epmet.dataaggre.dto.datastats.result.BaseStatsDataResultDTO; +import com.epmet.dataaggre.dto.datastats.result.WorkFactResultDTO; import com.epmet.dataaggre.service.datastats.DataStatsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -33,9 +33,22 @@ public class PubController { * @date 2021/7/27 18:59 */ @PostMapping("baseDataAgg") - public Result getBaseStatsData(@RequestBody AgenctBasicDataFormDTO formDTO){ - ValidatorUtils.validateEntity(formDTO,AppFootBarFormDTO.AddUserInternalGroup.class); - BaseStatsDataResultDTO resultDTO=dataStatsService.getBaseStatsData(formDTO); - return new Result().ok(resultDTO); + public Result getBaseStatsData(@RequestBody BaseDataFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,BaseDataFormDTO.BaseData.class); + return new Result().ok(dataStatsService.getBaseStatsData(formDTO)); + } + + /** + * 查询下级工作实况 + * + * @param formDTO + * @return com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO + * @author yinzuomei + * @date 2021/7/27 18:59 + */ + @PostMapping("subWorkFact") + public Result getSubWorkFact(@RequestBody BaseDataFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,BaseDataFormDTO.WorkFact.class); + return new Result().ok(dataStatsService.getSubWorkFact(formDTO)); } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java index 2fb47aab0d..e7d15e95f5 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java @@ -182,6 +182,7 @@ public interface DataStatsService { */ GridMemberDataAnalysisResultDTO getGridMemberIssueProjectStats(String staffId); - BaseStatsDataResultDTO getBaseStatsData(AgenctBasicDataFormDTO formDTO); + BaseStatsDataResultDTO getBaseStatsData(BaseDataFormDTO formDTO); + WorkFactResultDTO getSubWorkFact(BaseDataFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java index 32848cc717..5699c0d8fd 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java @@ -1427,7 +1427,7 @@ public class DataStatsServiceImpl implements DataStatsService { } @Override - public BaseStatsDataResultDTO getBaseStatsData(AgenctBasicDataFormDTO formDTO) { + public BaseStatsDataResultDTO getBaseStatsData(BaseDataFormDTO formDTO) { //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { Date yesterday = DateUtils.addDateDays(new Date(), -1); @@ -1468,6 +1468,43 @@ public class DataStatsServiceImpl implements DataStatsService { return result; } + @Override + public WorkFactResultDTO getSubWorkFact(BaseDataFormDTO formDTO) { + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + if (StringUtils.isBlank(formDTO.getType())){ + formDTO.setType("yesterday"); + } + if (StringUtils.isBlank(formDTO.getDateId())) { + Date yesterday = DateUtils.addDateDays(new Date(), -1); + SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setDateId(format.format(yesterday)); + } + String startDate,endDate; + Date dateIdDate = DateUtils.parse(formDTO.getDateId(), DateUtils.DATE_PATTERN_YYYYMMDD); + boolean isYesterday = DateUtils.getBeforeNDay(1,DateUtils.DATE_PATTERN_YYYYMMDD).equals(formDTO.getDateId()); + switch (formDTO.getType()){ + case "yesterday": + startDate = DateUtils.getBeforeNDay(NumConstant.ONE); + endDate = startDate; + break; + case "thisWeek": + startDate = DateUtils.getWeekStart(formDTO.getDateId()); + if (!isYesterday){ + endDate = DateUtils.getWeekEnd(formDTO.getDateId()); + } + break; + case "thisMonth": + startDate = DateUtils.format(DateUtils.getMonthStart(dateIdDate),DateUtils.DATE_PATTERN_YYYYMMDD); + if (!isYesterday) { + endDate = DateUtils.format(DateUtils.getMonthEnd(dateIdDate), DateUtils.DATE_PATTERN_YYYYMMDD); + } + } + + + + return null; + } + private String getPercentage(Integer countInt, Integer totalInt) { if (NumConstant.ZERO == totalInt) { return "0%";