30 changed files with 553 additions and 35 deletions
@ -0,0 +1,23 @@ |
|||||
|
package com.qs.serve.common.config.properties; |
||||
|
|
||||
|
import lombok.Getter; |
||||
|
import lombok.Setter; |
||||
|
import org.springframework.boot.context.properties.ConfigurationProperties; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
/** |
||||
|
* @Author: YenHex |
||||
|
* @Date: 2021/3/3 |
||||
|
* @Version: 1.0 |
||||
|
**/ |
||||
|
@Getter |
||||
|
@Setter |
||||
|
@Component |
||||
|
@ConfigurationProperties(prefix = "project") |
||||
|
public class ProjectProperties { |
||||
|
|
||||
|
private String hostUrl; |
||||
|
|
||||
|
private String webUrl; |
||||
|
|
||||
|
} |
@ -0,0 +1,19 @@ |
|||||
|
package com.qs.serve.common.model.chart; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @author YenHex |
||||
|
* @since 2023/6/7 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class BiCommonCounter { |
||||
|
|
||||
|
/** |
||||
|
* 横轴下标的ID |
||||
|
*/ |
||||
|
private String label; |
||||
|
|
||||
|
private Long counts; |
||||
|
|
||||
|
} |
@ -0,0 +1,15 @@ |
|||||
|
package com.qs.serve.common.model.chart; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @author YenHex |
||||
|
* @since 2023/6/7 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class BiMonthCounter { |
||||
|
|
||||
|
private String months; |
||||
|
private Long counts; |
||||
|
|
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
package com.qs.serve.common.model.chart; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author YenHex |
||||
|
* @since 2023/6/7 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class ChartAxisColumn { |
||||
|
|
||||
|
/** 列Id */ |
||||
|
String columnId; |
||||
|
|
||||
|
/** 列名 */ |
||||
|
String columnName; |
||||
|
|
||||
|
/** 系列坐标值合计 */ |
||||
|
Double total; |
||||
|
|
||||
|
public static List<ChartAxisColumn> buildMonthsOfYear(){ |
||||
|
List<ChartAxisColumn> axisColumnList = new ArrayList<>(); |
||||
|
for (long i = 1; i < 13; i++) { |
||||
|
ChartAxisColumn axisColumn = new ChartAxisColumn(); |
||||
|
if(i>9){ |
||||
|
axisColumn.setColumnId(i+""); |
||||
|
}else { |
||||
|
axisColumn.setColumnId("0"+i); |
||||
|
} |
||||
|
axisColumn.setColumnName(i+"月"); |
||||
|
axisColumnList.add(axisColumn); |
||||
|
} |
||||
|
return axisColumnList; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,148 @@ |
|||||
|
package com.qs.serve.common.model.chart; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* @author YenHex |
||||
|
* @since 2023/6/7 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class ChartDataVo { |
||||
|
|
||||
|
/** |
||||
|
* 列(饼状图的主要参数) |
||||
|
*/ |
||||
|
List<ChartAxisColumn> axisColumnList; |
||||
|
|
||||
|
/** |
||||
|
* 系列 |
||||
|
*/ |
||||
|
List<ChartSeriesItem> seriesItemList; |
||||
|
|
||||
|
/** |
||||
|
* 分组 |
||||
|
*/ |
||||
|
List<ChartGroupItem> groupItemList; |
||||
|
|
||||
|
|
||||
|
public void initAxisColumnTotal(){ |
||||
|
for (int i = 0; i < axisColumnList.size(); i++) { |
||||
|
ChartAxisColumn axisColumn = axisColumnList.get(i); |
||||
|
BigDecimal total = BigDecimal.ZERO; |
||||
|
if(seriesItemList!=null&&seriesItemList.size()>0){ |
||||
|
for (ChartSeriesItem seriesItem : seriesItemList) { |
||||
|
double value = seriesItem.getValues().get(i); |
||||
|
total = total.add(new BigDecimal(value+"")); |
||||
|
} |
||||
|
} |
||||
|
axisColumn.setTotal(total.doubleValue()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public static ChartDataVo buildStateChartData(List<BiCommonCounter> stateCounterList, Map<String,String> stateMap){ |
||||
|
ChartDataVo chartDataVo = new ChartDataVo(); |
||||
|
List<ChartAxisColumn> axisColumnList = new ArrayList<>(); |
||||
|
List<ChartSeriesItem> seriesItemList = new ArrayList<>(); |
||||
|
List<ChartGroupItem> groupItemList = new ArrayList<>(); |
||||
|
ChartGroupItem groupItem = new ChartGroupItem(); |
||||
|
groupItem.setGroupId(100L); |
||||
|
groupItem.setGroupName("默认"); |
||||
|
groupItemList.add(groupItem); |
||||
|
for (String stateNum : stateMap.keySet()) { |
||||
|
String label = stateMap.get(stateNum); |
||||
|
ChartAxisColumn axisColumn = new ChartAxisColumn(); |
||||
|
axisColumn.setColumnId(stateNum); |
||||
|
axisColumn.setColumnName(label); |
||||
|
axisColumnList.add(axisColumn); |
||||
|
} |
||||
|
List<Double> values = new ArrayList<>(); |
||||
|
for (ChartAxisColumn chartAxisColumn : axisColumnList) { |
||||
|
Double currVal = 0.0; |
||||
|
for (BiCommonCounter counter : stateCounterList) { |
||||
|
if(chartAxisColumn.getColumnId().equals(counter.getLabel())){ |
||||
|
currVal = counter.getCounts().doubleValue(); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
values.add(currVal); |
||||
|
} |
||||
|
ChartSeriesItem seriesItem = new ChartSeriesItem(); |
||||
|
seriesItem.setGroupId(groupItem.getGroupId()); |
||||
|
seriesItem.setGroupName(groupItem.getGroupName()); |
||||
|
seriesItem.setValues(values); |
||||
|
seriesItemList.add(seriesItem); |
||||
|
//更新total
|
||||
|
chartDataVo.setAxisColumnList(axisColumnList); |
||||
|
chartDataVo.setGroupItemList(groupItemList); |
||||
|
chartDataVo.setSeriesItemList(seriesItemList); |
||||
|
chartDataVo.initAxisColumnTotal(); |
||||
|
return chartDataVo; |
||||
|
} |
||||
|
|
||||
|
public void tes(){ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
public void buildStateMap(Map<String,String> stateMap){ |
||||
|
init(); |
||||
|
for (String stateNum : stateMap.keySet()) { |
||||
|
String label = stateMap.get(stateNum); |
||||
|
ChartAxisColumn axisColumn = new ChartAxisColumn(); |
||||
|
axisColumn.setColumnId(stateNum); |
||||
|
axisColumn.setColumnName(label); |
||||
|
this.axisColumnList.add(axisColumn); |
||||
|
} |
||||
|
} |
||||
|
public void buildStateMapOfMonths(){ |
||||
|
init(); |
||||
|
this.axisColumnList = ChartAxisColumn.buildMonthsOfYear(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 先调用buildStateMap |
||||
|
* @param groupId |
||||
|
* @param groupName |
||||
|
* @param stateCounterList |
||||
|
*/ |
||||
|
public void addData(Long groupId,String groupName,List<BiCommonCounter> stateCounterList){ |
||||
|
ChartGroupItem groupItem = new ChartGroupItem(); |
||||
|
groupItem.setGroupId(groupId); |
||||
|
groupItem.setGroupName(groupName); |
||||
|
groupItemList.add(groupItem); |
||||
|
List<Double> values = new ArrayList<>(); |
||||
|
for (ChartAxisColumn chartAxisColumn : axisColumnList) { |
||||
|
Double currVal = 0.0; |
||||
|
for (BiCommonCounter counter : stateCounterList) { |
||||
|
if(chartAxisColumn.getColumnId().equals(counter.getLabel())){ |
||||
|
currVal = counter.getCounts().doubleValue(); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
values.add(currVal); |
||||
|
} |
||||
|
ChartSeriesItem seriesItem = new ChartSeriesItem(); |
||||
|
seriesItem.setGroupId(groupItem.getGroupId()); |
||||
|
seriesItem.setGroupName(groupItem.getGroupName()); |
||||
|
seriesItem.setValues(values); |
||||
|
seriesItemList.add(seriesItem); |
||||
|
this.initAxisColumnTotal(); |
||||
|
} |
||||
|
|
||||
|
private void init(){ |
||||
|
if(axisColumnList==null){ |
||||
|
axisColumnList = new ArrayList<>(); |
||||
|
} |
||||
|
if(seriesItemList==null){ |
||||
|
seriesItemList = new ArrayList<>(); |
||||
|
} |
||||
|
if(groupItemList==null){ |
||||
|
groupItemList = new ArrayList<>(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,18 @@ |
|||||
|
package com.qs.serve.common.model.chart; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @author YenHex |
||||
|
* @since 2023/6/7 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class ChartGroupItem { |
||||
|
|
||||
|
/** 组id */ |
||||
|
private Long groupId; |
||||
|
|
||||
|
/** 组名 */ |
||||
|
private String groupName; |
||||
|
|
||||
|
} |
@ -0,0 +1,26 @@ |
|||||
|
package com.qs.serve.common.model.chart; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author YenHex |
||||
|
* @since 2023/6/7 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class ChartSeriesItem { |
||||
|
|
||||
|
|
||||
|
/** 组id */ |
||||
|
Long groupId; |
||||
|
|
||||
|
/** 组名 */ |
||||
|
String groupName; |
||||
|
|
||||
|
/** |
||||
|
* 值列表(列对应axisColumns) |
||||
|
*/ |
||||
|
List<Double> values; |
||||
|
|
||||
|
} |
@ -0,0 +1,75 @@ |
|||||
|
package com.qs.serve.common.model.chart; |
||||
|
|
||||
|
import com.qs.serve.common.util.JsonUtil; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
import java.util.Random; |
||||
|
|
||||
|
/** |
||||
|
* @author YenHex |
||||
|
* @since 2023/2/17 |
||||
|
*/ |
||||
|
public class PrintChart { |
||||
|
|
||||
|
|
||||
|
public static void main(String[] args) { |
||||
|
|
||||
|
//eg. 统计最近5年入学人数,并区分男女数量
|
||||
|
ChartDataVo chartDataVo = new ChartDataVo(); |
||||
|
|
||||
|
List<ChartAxisColumn> axisColumnList = new ArrayList<>(); |
||||
|
List<ChartSeriesItem> seriesItemList = new ArrayList<>(); |
||||
|
List<ChartGroupItem> groupItemList = new ArrayList<>(); |
||||
|
|
||||
|
ChartGroupItem groupItem = new ChartGroupItem(); |
||||
|
groupItem.setGroupId(100L); |
||||
|
groupItem.setGroupName("男学生"); |
||||
|
groupItemList.add(groupItem); |
||||
|
|
||||
|
ChartGroupItem groupItem2 = new ChartGroupItem(); |
||||
|
groupItem2.setGroupId(200L); |
||||
|
groupItem2.setGroupName("女学生"); |
||||
|
groupItemList.add(groupItem2); |
||||
|
|
||||
|
for (long i = 1; i <= 5; i++) { |
||||
|
ChartAxisColumn axisColumn = new ChartAxisColumn(); |
||||
|
axisColumn.setColumnId(i+""); |
||||
|
axisColumn.setColumnName("202"+i+"年"); |
||||
|
axisColumnList.add(axisColumn); |
||||
|
} |
||||
|
|
||||
|
Random random = new Random(); |
||||
|
for (ChartGroupItem chartGroupItem : groupItemList) { |
||||
|
ChartSeriesItem seriesItem = new ChartSeriesItem(); |
||||
|
seriesItem.setGroupId(chartGroupItem.getGroupId()); |
||||
|
seriesItem.setGroupName(chartGroupItem.getGroupName()); |
||||
|
List<Double> values = new ArrayList<>(); |
||||
|
for (int i = 0; i < axisColumnList.size(); i++) { |
||||
|
double result = random.nextInt(1000)+3000; |
||||
|
values.add(result); |
||||
|
} |
||||
|
seriesItem.setValues(values); |
||||
|
seriesItemList.add(seriesItem); |
||||
|
} |
||||
|
//更新total
|
||||
|
for (int i = 0; i < axisColumnList.size(); i++) { |
||||
|
ChartAxisColumn axisColumn = axisColumnList.get(i); |
||||
|
BigDecimal total = BigDecimal.ZERO; |
||||
|
for (ChartSeriesItem seriesItem : seriesItemList) { |
||||
|
double value = seriesItem.getValues().get(i); |
||||
|
total = total.add(new BigDecimal(value+"")); |
||||
|
} |
||||
|
axisColumn.setTotal(total.doubleValue()); |
||||
|
} |
||||
|
chartDataVo.setAxisColumnList(axisColumnList); |
||||
|
chartDataVo.setGroupItemList(groupItemList); |
||||
|
chartDataVo.setSeriesItemList(seriesItemList); |
||||
|
String v = JsonUtil.objectToJson(chartDataVo); |
||||
|
System.out.println(v); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,19 @@ |
|||||
|
package com.qs.serve.common.util; |
||||
|
|
||||
|
import lombok.experimental.UtilityClass; |
||||
|
|
||||
|
/** |
||||
|
* @author YenHex |
||||
|
* @since 2023/6/8 |
||||
|
*/ |
||||
|
@UtilityClass |
||||
|
public class JumpToUtil { |
||||
|
|
||||
|
public static String getUrl(String host, String templateCode, String key) { |
||||
|
return host+ "/portal/syKeyLogin?" + |
||||
|
"templateCode="+templateCode+ |
||||
|
"&key="+key+ |
||||
|
"&syId="; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,27 @@ |
|||||
|
package com.qs.serve.controller.dto; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @author YenHex |
||||
|
* @since 2023/6/8 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class SyLoginParam { |
||||
|
|
||||
|
/** |
||||
|
* 模板编码 |
||||
|
*/ |
||||
|
private String templateCode; |
||||
|
|
||||
|
/** |
||||
|
* 表单data的exsp5字段值 |
||||
|
*/ |
||||
|
private String key; |
||||
|
|
||||
|
/** |
||||
|
* 致远员工id |
||||
|
*/ |
||||
|
private String syId; |
||||
|
|
||||
|
} |
Loading…
Reference in new issue