Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 4 years ago
parent
commit
3489a41b71

+ 7 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/IndexBaseDto.java

@@ -72,9 +72,13 @@ public class IndexBaseDto {
         this.indexMonthData = indexMonthData;
         if(!CollectionUtils.isEmpty(indexMonthData)){
             BigDecimal total = indexMonthData.stream().map(IndexBaseMonthData::getTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
-            if(IndexDataType.ACTIVATION_RATE.equals(dataType)){
-                BigDecimal activateNum = indexMonthData.stream().map(IndexBaseMonthData::getActivateNum).reduce(BigDecimal.ZERO, BigDecimal::add);
-                this.percent = activateNum.divide(total, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN);
+            if(IndexDataType.ACTIVATION_RATE.equals(dataType)||IndexDataType.HOMEWORK_CREATE_RATE.equals(dataType)||IndexDataType.HOMEWORK_SUBMIT_RATE.equals(dataType)||IndexDataType.HOMEWORK_COMMENT_RATE.equals(dataType)){
+                if(total.compareTo(BigDecimal.ZERO)==0){
+                    this.percent = BigDecimal.ZERO;
+                }else{
+                    BigDecimal activateNum = indexMonthData.stream().map(IndexBaseMonthData::getActivateNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    this.percent = activateNum.divide(total, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN);
+                }
             }else{
                 this.percent = total;
             }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/IndexBaseMonthDataService.java

@@ -9,7 +9,7 @@ import com.ym.mec.common.service.BaseService;
 
 public interface IndexBaseMonthDataService extends BaseService<Long, IndexBaseMonthData> {
 
-    List<IndexBaseDto> getIndexBaseData(String dataType, String organIds, String startMonth, String endMonth);
+    List<IndexBaseDto> getIndexBaseData(String dataType, String organIds, Integer year);
 
     Map<String, List<IndexBaseDto>> indexBaseDataTask(String month);
 

+ 13 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -46,15 +46,19 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 	}
 
 	@Override
-	public List<IndexBaseDto> getIndexBaseData(String dataTypesStr, String organIdsStr, String startMonth, String endMonth) {
+	public List<IndexBaseDto> getIndexBaseData(String dataTypesStr, String organIdsStr, Integer year) {
 		List<IndexBaseDto> result = new ArrayList<>();
 
-		LocalDate nowDateTime = LocalDate.now();
-		nowDateTime.withDayOfMonth(1);
-		if(StringUtils.isBlank(startMonth)){
-			startMonth = nowDateTime.getYear() + "-01";
-			endMonth = null;
+		DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM");
+		LocalDate startDate = LocalDate.now();
+		if(Objects.nonNull(year)){
+			startDate = startDate.withYear(year);
 		}
+		startDate = startDate.withMonth(1);
+		startDate = startDate.withDayOfMonth(1);
+
+		LocalDate endDate = startDate.withMonth(12);
+
 		Set<Integer> organIds = null;
 		if(StringUtils.isNotBlank(organIdsStr)){
 			organIds = Arrays.stream(organIdsStr.split(",")).map(Integer::new).collect(Collectors.toSet());
@@ -64,18 +68,16 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			dataTypes = Arrays.stream(dataTypesStr.split(",")).collect(Collectors.toSet());
 		}
 
-		List<IndexBaseMonthData> indexBaseDatas = indexBaseMonthDataDao.getIndexBaseData(organIds, dataTypes, startMonth, endMonth);
+		List<IndexBaseMonthData> indexBaseDatas = indexBaseMonthDataDao.getIndexBaseData(organIds, dataTypes, df.format(startDate), df.format(endDate));
 		if(CollectionUtils.isEmpty(indexBaseDatas)){
 			return result;
 		}
 
-		LocalDate startMonthDate = LocalDate.parse(startMonth + "-01", DateUtil.dateFormatter);
-
 		Map<IndexDataType, List<IndexBaseMonthData>> typeDateMap = indexBaseDatas.stream().collect(Collectors.groupingBy(IndexBaseMonthData::getDataType));
 		for (Map.Entry<IndexDataType, List<IndexBaseMonthData>> typeDateMapEntry : typeDateMap.entrySet()) {
 			Set<String> hasMonths = typeDateMapEntry.getValue().stream().map(d -> DateUtil.dateToString(d.getMonth(), "yyyy-MM-dd")).collect(Collectors.toSet());
-			LocalDate currentMonthDate = startMonthDate;
-			while (currentMonthDate.compareTo(nowDateTime)<=0){
+			LocalDate currentMonthDate = startDate;
+			while (currentMonthDate.compareTo(endDate)<=0){
 				if(hasMonths.contains(currentMonthDate.toString())){
 					currentMonthDate = currentMonthDate.plusMonths(1);
 					continue;

+ 6 - 4
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -141,7 +141,7 @@
 	<select id="getStudentSignUpData" resultMap="IndexBaseMonthData">
 		SELECT
 			organ_id_,
-			CONCAT(DATE_FORMAT(NOW(), '%Y-%m'), '-01') month_,
+			CONCAT(#{month}, '-01') month_,
 			COUNT( id_ ) total_num_,
 			COUNT(CASE WHEN password_ IS NOT NULL THEN id_ ELSE NULL END) activate_num_,
 			TRUNCATE(COUNT(CASE WHEN password_ IS NOT NULL THEN id_ ELSE NULL END)/COUNT( id_ )*100, 2) percent_
@@ -150,7 +150,8 @@
 			del_flag_=0
 		  	AND organ_id_ IS NOT NULL
 			AND user_type_ LIKE '%STUDENT%'
-			AND YEAR(create_time_)=YEAR(NOW())
+			AND YEAR(create_time_)=YEAR(CONCAT(#{month}, '-01'))
+			AND MONTH(create_time_)&lt;=MONTH(CONCAT(#{month}, '-01'))
 		GROUP BY organ_id_
 		ORDER BY organ_id_;
 	</select>
@@ -158,7 +159,7 @@
 	<select id="getHomeworkData" resultMap="IndexBaseMonthData">
 		SELECT
 			su.organ_id_,
-			CONCAT(DATE_FORMAT(NOW(), '%Y-%m'), '-01') month_,
+			CONCAT(#{month}, '-01') month_,
 			<choose>
 				<when test="type == 'submit'">
 					SUM(sees.expect_exercises_num_) total_num_,
@@ -180,7 +181,8 @@
 		LEFT JOIN sys_user su ON sees.student_id_=su.id_
 		WHERE su.del_flag_=0
 			AND su.organ_id_ IS NOT NULL
-			AND YEAR(sees.monday_)=YEAR(NOW())
+			AND YEAR(sees.monday_)=YEAR(CONCAT(#{month}, '-01'))
+			AND MONTH(sees.monday_)&lt;=MONTH(CONCAT(#{month}, '-01'))
 		GROUP BY su.organ_id_
 		ORDER BY su.organ_id_
 	</select>

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/IndexController.java

@@ -116,7 +116,7 @@ public class IndexController extends BaseController {
 	}
 
 	@GetMapping("/newIndex")
-	public HttpResponseResult newIndex(String dataTypes, String organIds, String startMonth, String endMonth){
+	public HttpResponseResult newIndex(String dataTypes, String organIds, Integer year){
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (sysUser == null) {
 			return failed("用户信息获取失败");
@@ -134,6 +134,6 @@ public class IndexController extends BaseController {
 				}
 			}
 		}
-		return succeed(indexService.getIndexBaseData(dataTypes , organIds, startMonth, endMonth));
+		return succeed(indexService.getIndexBaseData(dataTypes , organIds, year));
 	}
 }