springmvc实现数据分析,采用echarts图形分析,统计种类以及数量。
先来几张效果图片先:
- springmvc配置文件说明可参考可问度娘
后端代码:
实体类:(设计是为多系统设计,故软件idsyssoftid;//软件功能号IASFuncID可忽略;)
package com.hxp.model;
import java.util.Date;
/**
* 资产申购实体
* @author HuangXiaoPeng
*
*/
public class AssetBuy {
private Integer id;//id
private Date applyTime;//申请时间
private String bassetName;//物品名称
private String bassetModel;//规格型号
private Integer bassetAmount;//数量
private Double bassetPrice;//单价
private Double bassetSumprice;//总额
private Integer unitId;//计量单位id
private String unitName;//计量单位名称
private String bassetDetail;//申购详情配置
private String applyContent;//申请说明
private Integer state;//状态(1待批,2作废,3待报,4待评价,5验收)
private String REPORTER;//操作者
private String REPORTERName;//申请者名称
private Date updateTime;//更新时间
private String syssoftid;//软件id
private String IASFuncID;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Date getApplyTime() {
return applyTime;
}
public void setApplyTime(Date applyTime) {
this.applyTime = applyTime;
}
public String getBassetName() {
return bassetName;
}
public void setBassetName(String bassetName) {
this.bassetName = bassetName;
}
public String getBassetModel() {
return bassetModel;
}
public void setBassetModel(String bassetModel) {
this.bassetModel = bassetModel;
}
public Integer getBassetAmount() {
return bassetAmount;
}
public void setBassetAmount(Integer bassetAmount) {
this.bassetAmount = bassetAmount;
}
public Double getBassetPrice() {
return bassetPrice;
}
public void setBassetPrice(Double bassetPrice) {
this.bassetPrice = bassetPrice;
}
public Double getBassetSumprice() {
return bassetSumprice;
}
public void setBassetSumprice(Double bassetSumprice) {
this.bassetSumprice = bassetSumprice;
}
public Integer getUnitId() {
return unitId;
}
public void setUnitId(Integer unitId) {
this.unitId = unitId;
}
public String getUnitName() {
return unitName;
}
public void setUnitName(String unitName) {
this.unitName = unitName;
}
public String getBassetDetail() {
return bassetDetail;
}
public void setBassetDetail(String bassetDetail) {
this.bassetDetail = bassetDetail;
}
public String getApplyContent() {
return applyContent;
}
public void setApplyContent(String applyContent) {
this.applyContent = applyContent;
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
public String getREPORTER() {
return REPORTER;
}
public void setREPORTER(String rEPORTER) {
REPORTER = rEPORTER;
}
public String getREPORTERName() {
return REPORTERName;
}
public void setREPORTERName(String rEPORTERName) {
REPORTERName = rEPORTERName;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getSyssoftid() {
return syssoftid;
}
public void setSyssoftid(String syssoftid) {
this.syssoftid = syssoftid;
}
public String getIASFuncID() {
return IASFuncID;
}
public void setIASFuncID(String iASFuncID) {
IASFuncID = iASFuncID;
}
}
接口
package com.hxp.dao;
import java.util.List;
import com.hxp.model.AssetBuy;
import com.hxp.model.PageBean;
/**
* 资产申购事务接口
* @author HuangXiaoPeng
*
*/
public interface AssetBuyDao {
public List<AssetBuy> findDataBySoftId(String softId);//通过软件id查询申购表单的的统计数据,统计数据为种类和该种类的申购数量。状态在(4)
public List<AssetBuy> findAllSuccessData(PageBean pageBean,String softId,AssetBuy s_assetBuy);//根据软件id查询申购列表,状态在状态在(2,4)的数据
public List<String> findYearBySoftId(String softId);//通过软件id查询,状态为4的申购单中的年份列表
public List<String> findBassetNameBySoftId(String softId);//通过软件id查询,状态为4的申购单中的物品名称组合
public List<AssetBuy> findDataByYearAndSoftId(String year,String softid);//通过软件id查询,状态为4的申购单中的物品,并且返回名称和数量数据
}
接口实现
package com.hxp.dao.Impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.stereotype.Repository;
import com.hxp.dao.AssetBuyDao;
import com.hxp.model.AssetBuy;
import com.hxp.model.PageBean;
import com.hxp.util.DateUtil;
import com.hxp.util.StringUtil;
/**
* 资产申购事务实现接口
*
* @author HuangXiaoPeng
*
*/
@Repository("assetBuyDao")
public class AssetBuyDaoImpl implements AssetBuyDao {
@Resource
private JdbcTemplate jdbcTemplate;
@Override
public List<AssetBuy> findDataBySoftId(String softId) {
StringBuffer sb = new StringBuffer(
"select bassetName,sum(bassetAmount) as bassetAmount,unitName from t_assetbuy t1,t_assetunit t2 where t1.unitId=t2.id and t1.State=4 and t1.SYSSOFTID=? group by bassetName order by bassetAmount");
final List<AssetBuy> assetBuyList = new ArrayList<AssetBuy>();
jdbcTemplate.query(sb.toString(), new Object[] { softId },
new RowCallbackHandler() {
@Override
public void processRow(ResultSet rs) throws SQLException {
AssetBuy assetBuy = new AssetBuy();
assetBuy.setBassetName(rs.getString("bassetName"));// 名称
assetBuy.setBassetAmount(rs.getInt("bassetAmount"));// 数量
assetBuy.setUnitName(rs.getString("unitName"));// 计量单位
assetBuyList.add(assetBuy);
}
});
return assetBuyList;
}
@Override
public List<AssetBuy> findAllSuccessData(PageBean pageBean, String softId,
AssetBuy s_assetBuy) {
StringBuffer sb = new StringBuffer(
"select * from t_assetbuy t1,t_assetunit t2 where t1.unitId=t2.id");
if (StringUtil.isEmpty(softId)) {
sb.append(" and t1.State=6");// 状态设置为无效
} else {
sb.append(" and t1.State in (2,4)");// 状态设置为无效
sb.append(" and t1.SYSSOFTID=" + softId);
if (s_assetBuy != null) {
if (StringUtil.isNotEmpty(s_assetBuy.getBassetName())) {
sb.append(" and t1.bassetName like '%"
+ s_assetBuy.getBassetName() + "%'");
}
if (StringUtil.isNotEmpty(s_assetBuy.getREPORTER())) {
sb.append(" and t1.REPORTER like '%"
+ s_assetBuy.getREPORTER() + "%'");
}
if (StringUtil.isNotEmpty(s_assetBuy.getBassetDetail())) {
sb.append(" and t1.bassetDetail like '%"
+ s_assetBuy.getBassetDetail() + "%'");
}
}
}
sb.append(" order by bassetAmount");
if (pageBean != null) {
sb.append(" limit " + pageBean.getStart() +