Commit 57d67ef9 authored by 胡斌's avatar 胡斌

过滤规则维护

parent 0f1934ea
......@@ -29,7 +29,6 @@ public class Kpi implements Serializable{
@ManyToMany(mappedBy = "kpiList", fetch = FetchType.LAZY)
private Set<HWarningRule> hWarningRuleSet;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="KpiSequence")
@SequenceGenerator(name = "KpiSequence", sequenceName = "dim_kpi_info_t_seq", allocationSize=1)
......
......@@ -22,6 +22,9 @@ public interface BusinessDao extends JpaSpecificationExecutor<Business>,
List<Business> findByBusinessIdIn(List<Long> businessIds);
@Query("from Business business where business.isActive = 'Y' and business.businessId >= 0 order by business.businessId")
List<Business> findAllBusiness();
//加入isActive=N || add by August 2014-3-27
@Query("select business.businessId, business.businessName from Business business where business.isActive = 'Y' and business.businessId >= 0 order by business.businessId")
List<Object[]> findAllBusinessIdAndBusinessName();
......
......@@ -5,6 +5,8 @@ import org.springframework.data.repository.PagingAndSortingRepository;
import com.hp.cmsz.entity.FilterRule;
import java.util.List;
/**
*
* @author Liu Na
......@@ -14,5 +16,7 @@ import com.hp.cmsz.entity.FilterRule;
public interface FilterRuleDao extends JpaSpecificationExecutor<FilterRule>,
PagingAndSortingRepository<FilterRule, Long>{
List<FilterRule> findAllBywarningFilteringRuleId(Long id);
List<FilterRule> findAllByProvinceIdInAndKpiIdInAndIfRepeatIn(List<Long> province,List<Long> kpi,List<String> repeat);
}
......@@ -31,6 +31,9 @@ public interface KpiDao extends JpaSpecificationExecutor<Kpi>,PagingAndSortingRe
List<Kpi> findAllByIsActive(String active);
@Query("from Kpi kpi where kpi.kpiId >=0 and kpi.businessId in :businessIdList and kpi.isActive = 'Y'")
List<Kpi> findByBusinessIds(@Param("businessIdList") List<Long> businessIdList);
@Query("select kpi.kpiId, kpi.kpiName from Kpi kpi where kpi.kpiId >=0")
List<Object[]> findAllKpiIdAndKpiName();
......
package com.hp.cmsz.web.analysissupport;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
......@@ -7,12 +12,16 @@ import com.google.gson.Gson;
import com.hp.cmsz.entity.*;
import com.hp.cmsz.repository.*;
import com.hp.cmsz.service.BusinessService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.hp.cmsz.web.PageURLController;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
/**
* 数据质量核查中的过滤规则查询结果控制类
......@@ -84,9 +93,83 @@ public class FilterRuleResultController {
model.put("kpiList", kpiList);
model.put("businessList", businessList);
model.put("dataTypeList", dataTypeList);
model.put("dataSourceList", dataSourceList);
model.put("datasourceList", dataSourceList);
model.put("filterRuleViewList", gson.toJson(FilterRuleList));
return PageURLController.FilterResult;
}
@RequestMapping(value = "queryRule")
@ResponseBody
public List<FilterRule> queryRule(
String provinceArr,
String businessArr,
String isRepeat,
String ruleId,HttpServletResponse response){
List<FilterRule> filterRuleList = null;
if(StringUtils.isNotEmpty(ruleId)){
filterRuleList = filterRuleDao.findAllBywarningFilteringRuleId(Long.parseLong(ruleId));
}else{
List<Long> kpi = new ArrayList<Long>();
List<Long> provinceList = new ArrayList<Long>();
List<String> isRepeatList = new ArrayList<String>();
if(businessArr.contains(",")){
String [] tmp = businessArr.split(",");
List<Long> businessList = new ArrayList<Long>();
for (String s : tmp) {
businessList.add(Long.parseLong(s));
}
List<Kpi> kpiList = kpiDao.findByBusinessIds(businessList);
for (Kpi s : kpiList) {
kpi.add(s.getKpiId());
}
}else{
if(StringUtils.isNotEmpty(businessArr)){
List<Long> businessList = new ArrayList<Long>();
businessList.add(Long.parseLong(businessArr));
List<Kpi> kpiList = kpiDao.findByBusinessIds(businessList);
for (Kpi s : kpiList) {
kpi.add(s.getKpiId());
}
}
}
if(provinceArr.contains(",")){
String [] tmp = provinceArr.split(",");
for (String s : tmp) {
provinceList.add(Long.parseLong(s));
}
}else{
if(StringUtils.isNotEmpty(provinceArr)){
provinceList.add(Long.parseLong(provinceArr));
}
}
if(isRepeatList.contains(",")){
String [] tmp = isRepeat.split(",");
isRepeatList.addAll(Arrays.asList(tmp));
}else{
isRepeatList.add(isRepeat);
}
filterRuleList = filterRuleDao.findAllByProvinceIdInAndKpiIdInAndIfRepeatIn(provinceList,kpi,isRepeatList);
// Timestamp time1 = Timestamp.valueOf(startTime);
// Timestamp time2 = Timestamp.valueOf(endTime);
}
return filterRuleList;
}
}
......@@ -8,6 +8,8 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hp.cmsz.entity.Kpi;
import com.hp.cmsz.repository.KpiDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
......@@ -41,6 +43,10 @@ public class FailureStatisticsCriteriaController{
private BusinessDao businessDao;
@Autowired
private ProvinceDao provinceDao;
@Autowired
private KpiDao kpiDao;
@RequestMapping(value = "/datasource_select/{datasourceIds}/*", method = RequestMethod.GET)
@ResponseBody
......@@ -132,7 +138,22 @@ public class FailureStatisticsCriteriaController{
}
}
@RequestMapping(value = "/business_select/{businessIds}/*", method = RequestMethod.GET)
@ResponseBody
public void business_select(@PathVariable("businessIds") String businessIds,HttpServletResponse response,HttpServletRequest request) {
// (指标太多,无法展示,未编写)
}
@RequestMapping(value = "/province_select/{providerId}/*", method = RequestMethod.GET)
@ResponseBody
public void province_select(@PathVariable("providerId") String providerId,HttpServletResponse response,HttpServletRequest request) {
......
......@@ -145,8 +145,6 @@ function statsDataSourceReset(){
statsDatasourceChange();
}
</script>
<%--------------------------------------------------渠道JS代码块 --------------------------------------------------%>
<script type="text/javascript">
$("#allChannelStats").click(function(){
......@@ -238,7 +236,6 @@ function getStatsChannelCheckedTitles(){
return statsChannelTitles;
}
</script>
<%--------------------------------------------------业务JS代码块 --------------------------------------------------%>
<script type="text/javascript">
$("#allBusinessStats").click(function(){
......@@ -353,7 +350,7 @@ function statsDatasourceChange(){
});
}
<%--------------------------------------------------渠道数据来源变化--------------------------------------------------%>
<%--------------------------------------------------渠道变化--------------------------------------------------%>
function statsChannelChange(){
var timestamp = Date.parse(new Date());
......@@ -395,4 +392,5 @@ function statsChannelChange(){
}
});
}
</script>
\ No newline at end of file
......@@ -37,16 +37,34 @@
<label id="statsBusiness" for="">业务</label>
<div class="checkbox-inline"><label> <input type="checkbox" name="allBusinessStats" id="allBusinessStats" checked> 全选 </label></div>
<div id="businessSelectAreaStats">
<c:forEach items="${businessList}" varStatus="index" step="2">
<c:forEach items="${businessList}" var="business">
<div class="checkbox-inline">
<label>
<input type="checkbox" class="businessStats" title="${businessList[index.index+1]}" value="${businessList[index.index]}" checked>${businessList[index.index+1]}
<input type="checkbox" class="businessStats" title="${business.businessName}" value="${business.businessId}" checked>${business.businessName}
</label>
</div>
</c:forEach>
</div>
</div>
<%--------------------------------------------------指标筛选项(指标太多,无法展示,未编写)---- --------------------------------------------------%>
<div id="StatsBusiness" class="slide-menu-option" style="display: none">
<label id="statsKpi" for="">指标</label>
<div class="checkbox-inline"><label> <input type="checkbox" name="allKpi" id="allKpiStats" checked> 全选 </label></div>
<div id="kpiSelectAreaStats">
<c:forEach items="${kpiList}" var="kpi">
<div class="checkbox-inline">
<label>
<input type="checkbox" class="kpiStats" title="${kpi.kpiName}" value="${kpi.kpiId}" checked>${kpi.kpiName}
</label>
</div>
</c:forEach>
</div>
</div>
<%--------------------------------------------------数据来源JS代码块 --------------------------------------------------%>
<script type="text/javascript">
$("#allDataSourceStats").click(function(){
......@@ -145,8 +163,6 @@
statsDatasourceChange();
}
</script>
<%--------------------------------------------------渠道JS代码块 --------------------------------------------------%>
<script type="text/javascript">
$("#allChannelStats").click(function(){
......@@ -238,15 +254,16 @@
return statsChannelTitles;
}
</script>
<%--------------------------------------------------业务JS代码块 --------------------------------------------------%>
<script type="text/javascript">
$("#allBusinessStats").click(function(){
if($("#allBusinessStats").attr("checked") == "checked"){//全选
$(".businessStats").attr("checked","checked");
// statsBusinessChange()
}else{//不全选
$(".businessStats").attr("checked",false);
$(".businessStats").attr("disabled",false);
// statsBusinessChange()
}
});
......@@ -256,6 +273,7 @@
if($(this).attr("checked") == null||$(this).attr("checked") == false){ clickFlag=false; }
});
$("#allBusinessStats").attr("checked",clickFlag);
// statsBusinessChange()
});
//返回结果为一个数组,数组中包含选中的渠道类型
......@@ -304,6 +322,71 @@
return statsBusinessTitles;
}
</script>
<%--------------------------------------------------指标JS代码块(指标太多,无法展示,未编写) --------------------------------------------------%>
<script type="text/javascript">
$("#allKpiStats").click(function(){
if($("#allKpiStats").attr("checked") == "checked"){//全选
$(".kpiStats").attr("checked","checked");
}else{//不全选
$(".kpiStats").attr("checked",false);
$(".kpiStats").attr("disabled",false);
}
});
$(".kpiStats").click(function(){
var clickFlag=true;//是否全部选中
$(".kpiStats").each(function(){
if($(this).attr("checked") == null||$(this).attr("checked") == false){ clickFlag=false; }
});
$("#allKpiStats").attr("checked",clickFlag);
});
//返回结果为一个数组,数组中包含选中的渠道类型
function getStatsKpiCheckedValues(){
var statsKpiArray=new Array();
var i=0;
$(".businessStats:checked").each(function(){
statsKpiArray[i]=$(this).val();
i++;
});
//if($("#allBusinessStats").attr("checked") == "checked"&&statsBusinessArray.length>0){statsBusinessArray[0]+=",-1";}
return statsKpiArray;
}
//返回结果为逗号分隔的ID字串
function getStatsKpiCheckedValuesString(){
var statsKpiStr="";
var statsKpiArray=getStatsBusinessCheckedValues();
for(var i=0;i<statsKpiArray.length;i++){
if(i==statsKpiArray.length-1){
statsKpiStr+=statsKpiArray[i];
}else{
statsKpiStr+=statsKpiArray[i]+",";
}
}
//if($("#allBusinessStats").attr("checked") == "checked"&&statsBusinessStr.length>0){statsBusinessStr+=",-1";}
return statsKpiStr;
}
////返回结果为逗号分隔的业务title
function getStatsKpiCheckedTitlesString(){
var statsKpiArray=new Array();
var i=0;
$(".KpiStats:checked").each(function(){
statsKpiArray[i]=$(this).attr("title");
i++;
});
var statsKpiTitles="";
for(var i=0;i<statsKpiArray.length;i++){
if(i==statsKpiArray.length-1){
statsKpiTitles+=statsKpiArray[i];
}else{
statsKpiTitles+=statsKpiArray[i]+" ";
}
}
return statsKpiTitles;
}
</script>
<%--------------------------------------------------数据来源变化--------------------------------------------------%>
<script type="text/javascript">
......@@ -352,9 +435,7 @@
});
}
<%--------------------------------------------------渠道数据来源变化--------------------------------------------------%>
<%--------------------------------------------------渠道数据来源变化--------------------------------------------------%>
function statsChannelChange(){
var timestamp = Date.parse(new Date());
var dataSourceIds = getStatsDataSourceCheckedValuesString();
......@@ -395,4 +476,47 @@
}
});
}
<%--------------------------------------------------业务变化(指标太多,无法展示,未编写)--------------------------------------------------%>
function statsBusinessChange(){
var timestamp = Date.parse(new Date());
var businessIds = getStatsBusinessCheckedValuesString();
if(businessIds==""){businessIds="0";}
$.ajax({
type : 'GET',
contentType : 'application/json',
url: '${ctx}/MonitorOperation/FailureStatisticsCriteria/business_select/'+businessIds+'/'+timestamp,
dataType : 'text',
beforeSend: function(data) {},
success: function(data) {
/*for(var i=0;i<data.length;i++){
if(data[i]=='\"'){
data=data.replace('\"','\'');
}
}
data=eval("("+data+")");//获取从后台返回的数据,通常是Json格式
if(data == null || data == ""){
$("#businessSelectAreaStats").empty();
}else{
$("#allBusinessStats").attr("checked",true);
$("#businessSelectAreaStats").show();
$("#businessSelectAreaStats").empty();
for(var t=0;t<data.length;t=t+2){
$("#businessSelectAreaStats").append('<div class="checkbox-inline"><label><input type="checkbox" name="businessStats" class="businessStats" title="'+data[t+1]+'" value="'+data[t]+'" checked>'+data[t+1]+'</label></div>');
}
}
$(".businessStats").click(function(){
var clickFlag=true;//是否全部选中
$(".businessStats").each(function(){
if($(this).attr("checked") == null||$(this).attr("checked") == false){ clickFlag=false; }
});
$("#allBusinessStats").attr("checked",clickFlag);
});*/
console.log(data)
}
});
}
</script>
\ No newline at end of file
......@@ -110,7 +110,7 @@
</tr>
<tr><td>过滤原因(<font color="red">必填</font>):</td><td><input type='text' name='filterReason' id='filterReason' class="form-control" style="display: inline;"/></td></tr>
<tr><td></td><td><button type="button" id="ruleSubmit" class="btn btn-primary">确定</button>
<button type="reset" class="btn btn-warning" id="ruleBack">返回</button>
<button type="reset" class="btn btn-warning" id="ruleBack" >返回</button>
</td></tr>
</table>
</form>
......@@ -122,6 +122,9 @@
</div>
</div>
<script type="text/javascript">
$("#ruleBack").click(function(){
location.href="${ctx}/AnalysisSupport/FilterRuleResult";
});
$(".period").hide();
$(".ifRepeate").change(function (){
var selectValue = $("input:radio[name='ifRepeate']:checked").val();
......
......@@ -40,39 +40,24 @@
<div class="slideMenu" id="cbp-spmenu-s2" style="">
<div class="form">
<%--<div id="timeStats" class="slide-menu-option">--%>
<%--<label>时间范围:</label><br/>--%>
<%--<input class="Wdate" type="text" value="" id="filterStartTime" name="filterStartTime" onfocus="WdatePicker()" />----%>
<%--<input id="filterEndTime" name="filterEndTime" class="Wdate" type="text" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'filterStartTime\')}'})">--%>
<%--</div>--%>
<tags:ProvinceTag />
<div class="slide-menu-option">
<label for="">数据来源</label>
<c:forEach var="list" items="${dataSourceList}">
<div class="checkbox-inline"><label><input type="checkbox" name="dataSource" class="dataSource" title="${list.dataSourceName}" value="${list.dataSourceId }" onchange="showBusiness()" checked >${list.dataSourceName}</label></div>
</c:forEach>
<tags:dataSource_channel_business_kpi />
<div id="isRepeat" class="slide-menu-option">
<label>是否重复:</label>
<select id="isRepeatSelect">
<option value="1"></option>
<option value="0"></option>
</select>
</div>
<div class="slide-menu-option">
<label for="">渠道</label>
<c:forEach var="list" items="${channelList}">
<div class="checkbox-inline"><label><input type="checkbox" name="channel" class="channel" title="${list.channelName}" value="${list.channelId }" onchange="showBusiness()" checked >${list.channelName}</label></div>
</c:forEach>
<div id="fromRuleIdDiv" class="slide-menu-option">
<label>规则ID:</label>
<input type="text" id="fromRuleId">
</div>
<div class="slide-menu-option">
<label for="">业务</label>
<div class="checkbox-inline"><label><input type="checkbox" id="allBusiness" name="allBusiness" checked >全选</label></div>
<div id="businessCheckboxs">
<%--<c:forEach var="list" items="${businessList}">--%>
<%--<div class="checkbox-inline"><label><input type="checkbox" name="business" class="business" title="${list.businessName}" value="${list.businessId }" checked >${list.businessName}</label></div>--%>
<%--</c:forEach>--%>
</div>
</div>
<div class="slide-menu-option">
<label for="">指标</label>
<div class="checkbox-inline"><label><input type="checkbox" id="allKpi" name="allKpi" checked >全选</label></div>
<div id="kpiCheckboxs">
<%--<c:forEach var="list" items="${kpiList}">--%>
<%--<div class="checkbox-inline" id="" style="display: none"><label><input type="checkbox" name="kpi" class="kpi" title="${list.kpiName}" value="${list.kpiId }" checked >${list.kpiName}</label></div>--%>
<%--</c:forEach>--%>
</div>
</div>
<button id="submit" class="btn btn-primary" >提交</button>
<button id="disable" class="btn btn-warning">重置</button>
</div>
......@@ -149,114 +134,55 @@
dataSourceList.push({dataSourceName:'${list.dataSourceName}', dataSourceId:'${list.dataSourceId}'});
</c:forEach>
filterResultDetailTable();
$('#allBusiness').change(function () {
if($(this).context.checked){
showBusiness();
showKpi();
}else{
$("[name='business']:checked").each(function () {
$(this).removeAttr('checked')
});
showKpi();
}
});
function showBusiness() {
$('#businessCheckboxs').empty();
var selectedDatasource = [];
$("[name='dataSource']:checked").each(function () {
selectedDatasource.push($(this).val())
});
var selectedChannel = [];
$("[name='channel']:checked").each(function () {
selectedChannel.push($(this).val())
});
var channelDataSource = [];
for(var i=0;i<selectedDatasource.length;i++){
for(var j=0;j<selectedChannel.length;j++){
for(var k=0;k<channelDataSourceMapList.length;k++){
if(channelDataSourceMapList[k].channelId ===selectedChannel[j] && channelDataSourceMapList[k].dataSourceId===selectedDatasource[i]){
channelDataSource.push(channelDataSourceMapList[k].channelDataSourceMapId)
}
}
}
}
channelDataSource.forEach(function (t) {
for(var k=0;k<businessList.length;k++){
if(businessList[k].channelDataSourceMapId === t){
var context = '<div class="checkbox-inline"><label><input type="checkbox" name="business" class="business" title="'+businessList[k].businessName+'" value="'+businessList[k].businessId+'" onchange="showKpi()" checked >'+businessList[k].businessName+'</label></div>'
$('#businessCheckboxs').append(context)
}
}
});
showKpi();
}
function showKpi(){
$('#kpiCheckboxs').empty();
var selectedBusiness = [];
$("[name='business']:checked").each(function () {
selectedBusiness.push($(this).val())
});
selectedBusiness.forEach(function (t) {
for(var k=0;k<kpiList.length;k++){
if(kpiList[k].businessId === t){
var context = '<div class="checkbox-inline"><label><input type="checkbox" name="kpi" class="kpi" title="'+kpiList[k].kpiName+'" value="'+kpiList[k].kpiId+'" onchange="test()" checked >'+kpiList[k].kpiName+'</label></div>'
$('#kpiCheckboxs').append(context)
}
}
})
}
$("#businessSelectAreaStats").hide();
$("#kpiSelectAreaStats").hide();
$('#submit').click(function(){
var provinceArr ="";
$("[name='province']:checked").each(function () {
provinceArr+=$(this).val()+","
});
provinceArr = provinceArr.substring(0,provinceArr.length-1);
var selectedDatasource=[];
$("[name='dataSource']:checked").each(function () {
selectedDatasource.push($(this).val())
});
var selectedChannel = [];
$("[name='channel']:checked").each(function () {
selectedChannel.push($(this).val())
});
var channelDataSource = [];
for(var i=0;i<selectedDatasource.length;i++){
for(var j=0;j<selectedChannel.length;j++){
for(var k=0;k<channelDataSourceMapList.length;k++){
if(channelDataSourceMapList[k].channelId ===selectedChannel[j] && channelDataSourceMapList[k].dataSourceId===selectedDatasource[i]){
channelDataSource.push(channelDataSourceMapList[k].channelDataSourceMapId)
}
}
console.log(provinceArr)
var businessArr = getStatsBusinessCheckedValuesString();
// var startTime = $('#filterStartTime').val();
// var endTime = $('#filterEndTime').val();
var isRepeat = $('#isRepeatSelect').val();
var ruleId = $('#fromRuleId').val();
if(ruleId ==""){
// if(startTime=="" || endTime==""){
// alert("请选择起止时间")
// return
// }
}
var url= "${ctx}/AnalysisSupport/FilterRuleResult/queryRule?" +
"provinceArr="+provinceArr+
"&businessArr="+businessArr+
// "&startTime="+startTime +
// "&endtTime="+startTime +
"&ruleId="+ruleId+
"&isRepeat="+isRepeat;
$.ajax({
url:url,
cache: true,
type : "GET",
async: false,
dataType : "json",
success: function(data){
$("#filterRuleView").val(JSON.stringify(data));
filterResultDetailTable();
ruleId="";
$("fromRuleId").val("")
$("#updateRule").attr("disabled", true);
toggleMenu('slidePushMenus2');//隐藏筛选项
}
}
})
if($('#allBusiness').checked){
var business="";
channelDataSource.forEach(function (t) {
for(var k=0;k<businessList.length;k++){
if(businessList[k].channelDataSourceMapId === t){
business+=businessList[k].businessName+","
}
}
});
}else{
business="";
$("[name='business']:checked").each(function () {
business+=$(this).val()+","
});
}
});
......
......@@ -138,7 +138,7 @@ function filterResultDetailTable(){
header[9] = ["过滤周期","frequency","7%","15"];
header[10] = ["过滤原因","filteringReason","7%","15"];
window.pagging = new table_pagging({limit:12,tableId:'filterResultTable',header:header});
pagging.pagging(jsonData,provinceArr);
pagging.pagging(jsonData);
}
var table_pagging = function() {
this.init.apply(this, arguments);
......@@ -203,7 +203,7 @@ table_pagging.prototype = {
},
pagging : function(objectJson) {
console.log(objectJson)
this.objectlist = eval('(' + objectJson + ')');
if (this.start + this.limit >= this.objectlist.length) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment