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