فهرست منبع

首页经营数据新增柱状图

zouxuan 3 سال پیش
والد
کامیت
5ad5a055d9

+ 6 - 14
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/IndexBaseDto.java

@@ -6,9 +6,9 @@ import com.ym.mec.common.constant.CommonConstants;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
 
 /**
  * @Author Joburgess
@@ -26,22 +26,14 @@ public class IndexBaseDto {
 
     private List<IndexBaseMonthData> indexMonthDataDetail;
 
-    private Map<Integer,BigDecimal> organIndexMonthData;
+    private List<IndexBaseMonthData> organIndexMonthData;
 
-    public Map<Integer,BigDecimal> getOrganIndexMonthData() {
+    public List<IndexBaseMonthData> getOrganIndexMonthData() {
         return organIndexMonthData;
     }
 
     public void setOrganIndexMonthData(List<IndexBaseMonthData> organIndexMonthData) {
-        Map<Integer,BigDecimal> organData = new HashMap<>(20);
-        if (!CollectionUtils.isEmpty(organIndexMonthData)){
-            List<IndexBaseMonthData> collect = organIndexMonthData.stream().filter(e -> e.getOrganId() != null && e.getOrganId() != 0).collect(Collectors.toList());
-            if(!CollectionUtils.isEmpty(collect)){
-                Map<Integer, List<IndexBaseMonthData>> listMap = collect.stream().collect(Collectors.groupingBy(IndexBaseMonthData::getOrganId));
-                listMap.keySet().stream().forEach(organId->organData.put(organId,listMap.get(organId).stream().map(e->e.getPercent()).reduce(BigDecimal.ZERO,BigDecimal::add)));
-            }
-        }
-        this.organIndexMonthData = organData;
+        this.organIndexMonthData = organIndexMonthData;
     }
 
     public List<IndexBaseMonthData> getIndexMonthDataDetail() {

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/IndexBaseMonthData.java

@@ -24,6 +24,8 @@ public class IndexBaseMonthData extends BaseEntity {
 	
 	/** 分部编号 */
 	private Integer organId;
+
+	private String organName;
 	
 	/** 总数量 */
 	private BigDecimal totalNum = BigDecimal.ZERO;
@@ -44,6 +46,14 @@ public class IndexBaseMonthData extends BaseEntity {
 
 	private Date updateTime;
 
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
 	public String getOrderType() {
 		return orderType;
 	}
@@ -63,6 +73,12 @@ public class IndexBaseMonthData extends BaseEntity {
 	public IndexBaseMonthData() {
 	}
 
+	public IndexBaseMonthData(Integer organId, String organName, BigDecimal percent) {
+		this.organId = organId;
+		this.organName = organName;
+		this.percent = percent;
+	}
+
 	public IndexBaseMonthData(Date month, Integer organId, Integer tenantId) {
 		this.month = month;
 		this.organId = organId;

+ 18 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -29,6 +29,7 @@ import java.time.DayOfWeek;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static com.ym.mec.biz.dal.enums.IndexDataType.*;
@@ -299,7 +300,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 					VIP_AMOUNT.equals(typeDateMapEntry.getKey()) ||
 					PRACTICE_AMOUNT.equals(typeDateMapEntry.getKey()) ||
 					OTHER_AMOUNT.equals(typeDateMapEntry.getKey())){
-				indexBaseData.setOrganIndexMonthData(value);
+				indexBaseData.setOrganIndexMonthData(this.getOrganIndexMonthData(value));
 				indexBaseData.setPercent(value.stream().map(IndexBaseMonthData::getPercent).reduce(BigDecimal.ZERO, BigDecimal::add));
 			}
 			if(IndexDataType.VIP_GROUP_COURSE.equals(typeDateMapEntry.getKey()) || VIP_GROUP_ONLINE_COURSE.equals(typeDateMapEntry.getKey()) ||
@@ -325,6 +326,22 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		return result;
 	}
 
+	public List<IndexBaseMonthData> getOrganIndexMonthData(List<IndexBaseMonthData> organIndexMonthData) {
+		if (!CollectionUtils.isEmpty(organIndexMonthData)){
+			List<IndexBaseMonthData> collect = organIndexMonthData.stream().filter(e -> e.getOrganId() != null && e.getOrganId() != 0).collect(Collectors.toList());
+			if(!CollectionUtils.isEmpty(collect)){
+				Map<Integer, List<IndexBaseMonthData>> listMap = collect.stream().collect(Collectors.groupingBy(IndexBaseMonthData::getOrganId));
+				Set<Integer> organIds = listMap.keySet();
+				Map<Integer, String> organMap = organizationService.getMap("organization", "id_", "name_",
+						organIds, TenantContextHolder.getTenantId(), Integer.class, String.class);
+				Function<Integer,IndexBaseMonthData> fun = (organId) -> new IndexBaseMonthData(organId,organMap.get(organId),
+						listMap.get(organId).stream().map(e->e.getPercent()).reduce(BigDecimal.ZERO,BigDecimal::add));
+				return organIds.stream().map(fun::apply).collect(Collectors.toList());
+			}
+		}
+		return new ArrayList<>();
+	}
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void indexBaseDataTask(Integer tenantId, String dayStr, Set<IndexDataType> dataTypes) {