Commit e4f17a5a authored by yht15023815643's avatar yht15023815643

Merge branch 'dev20230707' of http://192.168.60.201/root/dsk-operate-sys into dev20230707

parents df6fca02 9a49095a
...@@ -48,6 +48,14 @@ public class BusinessOverviewController extends BaseController { ...@@ -48,6 +48,14 @@ public class BusinessOverviewController extends BaseController {
return AjaxResult.success(baseService.typeAnalyze(new BusinessSearchDto(SecurityUtils.getUserId(), status))); return AjaxResult.success(baseService.typeAnalyze(new BusinessSearchDto(SecurityUtils.getUserId(), status)));
} }
/**
* 项目类别分析
*/
@GetMapping("/category/analyze/{status}")
public AjaxResult categoryAnalyze(@PathVariable Integer status) {
return AjaxResult.success(baseService.categoryAnalyze(new BusinessSearchDto(SecurityUtils.getUserId(), status)));
}
/** /**
* 公招项目地区统计 * 公招项目地区统计
* *
......
import request from "@/utils/request"; import request from "@/utils/request";
// 集团中标统计
export function countByCompany(data) {
return request({
url: '/index/countByCompany',
method: 'post',
data: data
})
}
// 企业中标排行榜 // 企业中标排行榜
export function bidRank(data) { export function bidRank(data) {
return request({ return request({
......
...@@ -88,6 +88,34 @@ export const constantRoutes = [ ...@@ -88,6 +88,34 @@ export const constantRoutes = [
} }
] ]
}, },
// {
// path: '',
// component: Layout,
// hidden: true,
// redirect: 'economies',
// children: [
// {
// path: '/macro/economies',
// component: () => import('@/views/macro/economies'),
// name: 'Economies',
// meta: { title: '区域经济', icon: 'macro' }
// }
// ]
// },
{
path: '',
component: Layout,
hidden: true,
redirect: 'urban',
children: [
{
path: '/macro/urban',
component: () => import('@/views/macro/urban'),
name: 'Urban',
meta: { title: '城投平台', icon: 'macro' }
}
]
},
{ {
path: '/user', path: '/user',
component: Layout, component: Layout,
......
<template>
<div>
<el-dialog
class="popups"
:visible.sync="dialogVisible"
width="534px"
:close-on-click-modal="false"
@close="resetForm('ruleForm')"
>
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>添加客户</span>
</div>
<el-form class="popform j" :model="queryParam" :rules="rules" ref="ruleForm" label-width="130px">
<el-form-item label="企业名称:" class="row" prop="companyName">
<el-input type="text" placeholder="请输入" v-model="queryParam.companyName" @input="getCompany(1)"></el-input>
<div class="resultlist infinite-list" v-if="showlist" id="box" v-infinite-scroll="load" style="overflow:auto">
<div class="infinite-list-item" v-for="(item,index) in companData" @click="selCompany(item)"><span v-html="item.name" :key="companypage"></span></div>
</div>
</el-form-item>
<el-form-item label="客户等级:" class="row">
<el-select placeholder="请选择" v-model="queryParam.customerLevel">
<el-option v-for="(item,index) in customerLevel" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</el-form-item>
<el-form-item label="法定代表人:" class="row">
<el-input type="text" placeholder="请输入" v-model="queryParam.legalPerson"></el-input>
</el-form-item>
<el-form-item label="注册资本(万):" class="row">
<el-input type="text" placeholder="请输入" v-model="queryParam.registerCapital" @input='number'></el-input>
</el-form-item>
<el-form-item label="企业注册地:" class="row">
<el-cascader :props="props" @change="getAddr($event)" ref="address" v-model="queryParam.address" :options="addressList" clearable></el-cascader>
</el-form-item>
<el-form-item label="统一社会信用代码:" class="row">
<el-input type="text" placeholder="请输入" v-model="queryParam.creditCode"></el-input>
</el-form-item>
<div class="popbot">
<div class="wordprimary" @click="toct">前往城投平台寻找客户线索></div>
<div class="btn btn_cancel h32" @click="resetForm('ruleForm')">返回</div>
<div class="btn btn_primary h32" @click="submitForm('ruleForm')">添加</div>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import { getDictType, getEnterprise } from '@/api/main'
import { addCustomer, getCustomerList, importData } from '@/api/custom/custom'
import prvinceTree from '@/assets/json/provinceTree'
export default {
name: '',
components: {
},
props: {
data:{}
},
data() {
return {
props:{ checkStrictly: true, expandTrigger: 'hover' },
dialogVisible: this.data.open,
//添加客户
queryParam:{
companyId:'',//jsk企业id
companyName:'',//客户名称(企业名称
customerLevel:'',//客户等级
legalPerson:'',//法定代表人
registerCapital:'',//注册资本
registerAddress:'',//企业注册地址
creditCode:'',//社会统一信用代码
address:'',//选择的地址
provinceId:'',
cityId:'',
districtId:'',
},
rules:{
companyName:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },]
},
showlist:false,
customerLevel:[]
}
},
created() {
this.prvinceTree()
this.getDictType()
console.log(this.dialogVisible)
console.log('1111111111')
},
computed: {},
methods:{
async prvinceTree() {
this.addressList = prvinceTree;
this.getadd(this.addressList)
},
getDictType(){
//获取客户等级
getDictType('customer_level_type').then(result=>{
this.customerLevel = result.code == 200 ? result.data:[]
})
},
open() {
// this.dialogVisible = true;
},
resetForm(formName) {
this.queryParam = {
companyId:'',//jsk企业id
companyName:'',//客户名称(企业名称
customerLevel:'',//客户等级
legalPerson:'',//法定代表人
registerCapital:'',//注册资本
registerAddress:'',//企业注册地址
creditCode:'',//社会统一信用代码
address:'',//选择的地址
provinceId:'',
cityId:'',
districtId:'',
},
this.dialogVisible = false
this.showlist = false
},
getAddr(obj){
if(obj.length == 0){
this.queryParam.provinceId = ''
this.queryParam.cityId = ''
this.queryParam.districtId = ''
return false
}
let labelString = this.$refs.address.getCheckedNodes()[0].pathLabels.join("-");
this.queryParam.registerAddress = labelString
this.queryParam.provinceId = obj[0]
this.queryParam.cityId = obj.length>=1 ? obj[1]:''
this.queryParam.districtId = obj.length>=2 ? obj[2]:''
},
//获取建设库客户
getCompany(value){
this.queryParam.companyId = null
if(value == 1){
this.companData = []
this.companypage = 1
}
if (this.queryParam.companyName.length>=2){
let param = {
keyword:this.queryParam.companyName,
page:{
limit:20,
page:this.companypage
}
}
getEnterprise(JSON.stringify(param)).then(result=>{
if(result.code != 200){
return false
}
if(result.data.list != null && result.data.list.length>0){
this.isscroll = true
if (this.companData.length===0) {
this.companData = result.data.list
} else {
let arr2 = result.data.list
arr2.unshift(2, 0);
Array.prototype.splice.apply(this.companData, arr2);
}
if(this.companData.length===0) {
this.showlist = false
}else{
this.showlist = true
}
this.companypage += 1
}else{
this.isscroll = false
}
})
}
},
load(){
if(this.isscroll){
this.getCompany(2)
}
},
selCompany(item){
this.queryParam.companyId = item.jskEid
this.queryParam.companyName = item.name.replace(/<[^>]+>/g, '')
this.queryParam.legalPerson = item.legalPerson
let registeredCapitalStr = ""
if(item.registeredCapitalStr == "0" || item.registeredCapitalStr == 0){
registeredCapitalStr = ''
}else{
registeredCapitalStr = item.registeredCapitalStr
}
this.queryParam.registerCapital = registeredCapitalStr
this.queryParam.creditCode = item.creditCode
this.queryParam.provinceId = item.provinceId
this.queryParam.cityId = item.cityId
this.queryParam.districtId = item.cityId
let list = []
if(item.provinceId != null && item.provinceId != "")
list.push(item.provinceId)
if(item.cityId != null && item.cityId != "")
list.push(item.cityId)
if(item.districtId != null && item.districtId != "")
list.push(item.districtId)
this.$nextTick(()=>{
this.queryParam.address = list
let _this = this
setTimeout(function() {
if(_this.$refs.address){
_this.queryParam.registerAddress = _this.$refs.address.getCheckedNodes()[0].pathLabels.join("-")
}
},1000)
})
this.showlist = false
},
//添加客户
submitForm(formName) {
// if(this.queryParam.companyId=="" || this.queryParam.companyId == null){
// this.$message.error({message:'请选择企业!',showClose:true})
//
// return;
// }
this.$refs[formName].validate((valid) => {
if (valid) {
addCustomer(this.queryParam).then(result=>{
if(result.code == 200){
this.$message.success('添加成功!')
this.dialogVisible = false
this.resetForm('ruleForm')
}else{
this.$message.error(result.msg)
}
})
} else {
}
});
},
toct(){
this.$router.push({path:'/macro/urban'})
},
//输入数字
number(value){
if(value == '')
this.queryParam.registerCapital = value
else
this.queryParam.registerCapital = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
},
//处理注册地数据
getadd(row) {
this.addrcallback(row,this.getadd)
},
addrcallback(row,callback){
if(row){
row.forEach(item => {
item.value = item.id
callback && callback(item.children)
})
}
},
},
}
</script>
<style scoped>
</style>
...@@ -366,6 +366,9 @@ ...@@ -366,6 +366,9 @@
} }
}, },
created() { created() {
if(this.$route.query.key){
this.searchParam.companyName=this.$route.query.key;
}
if(this.$route.query.type === '1'){ if(this.$route.query.type === '1'){
this.searchParam.companyNatures=['国有企业'] this.searchParam.companyNatures=['国有企业']
} }
......
...@@ -39,11 +39,11 @@ ...@@ -39,11 +39,11 @@
<el-col :span="6"> <el-col :span="6">
<div class="search"> <div class="search">
<div class="head_title">快速查找</div> <div class="head_title">快速查找</div>
<el-input placeholder="输入企业名称查询"> <el-input placeholder="输入企业名称查询" v-model="key">
<i slot="prefix" class="el-icon-search"></i> <i slot="prefix" class="el-icon-search"></i>
<el-button slot="append">搜索</el-button> <el-button slot="append" @click="handleSearch">搜索</el-button>
</el-input> </el-input>
<div class="search_btn"><i class="el-icon-plus"></i>新建项目</div> <div class="search_btn" @click="handleAdd"><i class="el-icon-plus"></i>新建项目</div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -175,6 +175,7 @@ ...@@ -175,6 +175,7 @@
</div> </div>
</div> </div>
</div> </div>
<AddCustom :data="data" v-if="data.open"></AddCustom>
</div> </div>
</template> </template>
...@@ -183,13 +184,17 @@ ...@@ -183,13 +184,17 @@
import * as echarts from 'echarts' import * as echarts from 'echarts'
import {encodeStr} from "@/assets/js/common" import {encodeStr} from "@/assets/js/common"
import { statistics, cooperationTop, creditLevel,getFollowList } from '@/api/custom/custom' import { statistics, cooperationTop, creditLevel,getFollowList } from '@/api/custom/custom'
import AddCustom from '../component/addCustom'
export default { export default {
name: 'Overview', name: 'Overview',
components: {
AddCustom
},
data() { data() {
return { return {
encodeStr, encodeStr,
activeName:'first', activeName:'first',
key:'',
statistics:{}, statistics:{},
hzqkList:[], hzqkList:[],
creditLevel:[], creditLevel:[],
...@@ -209,6 +214,9 @@ ...@@ -209,6 +214,9 @@
params:{ params:{
startTime:'', startTime:'',
endTime:'' endTime:''
},
data:{
open:false
} }
} }
}, },
...@@ -234,7 +242,6 @@ ...@@ -234,7 +242,6 @@
methods: { methods: {
getData(){ getData(){
statistics().then(res=>{ statistics().then(res=>{
console.log(res.data)
this.statistics=res.data; this.statistics=res.data;
}) })
cooperationTop().then(res=>{ cooperationTop().then(res=>{
...@@ -246,7 +253,9 @@ ...@@ -246,7 +253,9 @@
list.push(res.data[i]) list.push(res.data[i])
} }
} }
if(list.length > 0){
this.initChart(list) this.initChart(list)
}
}) })
creditLevel().then(res=>{ creditLevel().then(res=>{
for(let i=0; i<res.data.length; i++){ for(let i=0; i<res.data.length; i++){
...@@ -286,6 +295,7 @@ ...@@ -286,6 +295,7 @@
}, 10) }, 10)
}, },
initChart(data){ initChart(data){
//业主单位合作情况 //业主单位合作情况
this.option = { this.option = {
legend: { legend: {
...@@ -507,6 +517,17 @@ ...@@ -507,6 +517,17 @@
this.getFollowList() this.getFollowList()
} }
}, },
handleSearch(){
this.$router.push({
path: '/custom/customList',
query:{
key:this.key
}
})
},
handleAdd(){
this.data.open=true
},
} }
} }
</script> </script>
...@@ -626,6 +647,7 @@ ...@@ -626,6 +647,7 @@
color:#FFFFFF; color:#FFFFFF;
font-size: 14px; font-size: 14px;
margin-top: 12px; margin-top: 12px;
cursor: pointer;
i{ i{
margin-right: 12px; margin-right: 12px;
} }
......
...@@ -57,7 +57,8 @@ ...@@ -57,7 +57,8 @@
<span class="common-title">集团中标统计</span> <span class="common-title">集团中标统计</span>
</div> </div>
</div> </div>
<el-row> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<el-row v-if="!isSkeleton">
<el-col :span="14"> <el-col :span="14">
<div id="zbtj-echarts" style="height: 300px;"></div> <div id="zbtj-echarts" style="height: 300px;"></div>
</el-col> </el-col>
...@@ -65,12 +66,12 @@ ...@@ -65,12 +66,12 @@
<div class="search"> <div class="search">
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small"> <el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="address"> <el-form-item prop="address">
<el-select v-model="queryParams.address" placeholder="项目地区" style="width: 150px;"> <el-select v-model="queryParams.address" @change="changeSelect1" clearable placeholder="项目地区" style="width: 150px;">
<el-option v-for="(item,index) in addressList" :key="index" :label="item.label" :value="item.value"></el-option> <el-option v-for="(item,index) in addressList" :key="index" :label="item.label" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="type"> <el-form-item prop="type">
<el-select v-model="queryParams.type" multiple collapse-tags clearable placeholder="项目类型" :class="queryParams.type.length > 1 ? 'selectTag' : ''" style="width: 170px;"> <el-select v-model="queryParams.type" @change="changeSelect1" multiple collapse-tags clearable placeholder="项目类型" :class="queryParams.type.length > 1 ? 'selectTag' : ''" style="width: 170px;">
<el-option v-for="(item,index) in projectType" :key="index" :label="item" :value="item"></el-option> <el-option v-for="(item,index) in projectType" :key="index" :label="item" :value="item"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -79,21 +80,25 @@ ...@@ -79,21 +80,25 @@
:timeList="timeList" :timeList="timeList"
v-model="queryParams.time" v-model="queryParams.time"
placeholder="中标日期" placeholder="中标日期"
@handle-search="changeSelect"/> @handle-search="changeSelect1"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="box-right"> <div class="box-right">
<el-table <el-table
:data="jtList" :data="jtzbList"
border border
max-height="250" max-height="250"
fit fit
highlight-current-row highlight-current-row
> >
<el-table-column prop="name" label="集团名称" width="120"/> <el-table-column prop="combineName" label="集团名称">
<el-table-column prop="count" label="中标数量(个)" align="right" sortable/> <template slot-scope="scope">
<el-table-column prop="amount" label="中标金额(万元)" align="right" sortable/> <router-link :to="`/groupAccount/${scope.row.combineId}?name=${scope.row.combineName}`" tag="a" class="a-link">{{scope.row.combineName}}</router-link>
</template>
</el-table-column>
<el-table-column prop="count" label="中标数量(个)" align="right" sortable width="150"/>
<el-table-column prop="money" label="中标金额(万元)" align="right" sortable/>
</el-table> </el-table>
</div> </div>
</el-col> </el-col>
...@@ -117,15 +122,15 @@ ...@@ -117,15 +122,15 @@
:moneyList="moneyList" :moneyList="moneyList"
v-model="queryParams1.money" v-model="queryParams1.money"
placeholder="中标金额" placeholder="中标金额"
@handle-search="changeSelect" /> @handle-search="changeSelect2" />
</el-form-item> </el-form-item>
<el-form-item prop="address"> <el-form-item prop="address">
<el-select v-model="queryParams1.address" placeholder="项目地区" style="width: 150px;"> <el-select v-model="queryParams1.address" @change="changeSelect2" clearable placeholder="项目地区" style="width: 150px;">
<el-option v-for="(item,index) in addressList" :key="index" :label="item.label" :value="item.value"></el-option> <el-option v-for="(item,index) in addressList" :key="index" :label="item.label" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="type"> <el-form-item prop="type">
<el-select v-model="queryParams1.type" multiple collapse-tags clearable placeholder="项目类型" :class="queryParams1.type.length > 1 ? 'selectTag' : ''" style="width: 170px;"> <el-select v-model="queryParams1.type" multiple collapse-tags @change="changeSelect2" clearable placeholder="项目类型" :class="queryParams1.type.length > 1 ? 'selectTag' : ''" style="width: 170px;">
<el-option v-for="(item,index) in projectType" :key="index" :label="item" :value="item"></el-option> <el-option v-for="(item,index) in projectType" :key="index" :label="item" :value="item"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -134,21 +139,26 @@ ...@@ -134,21 +139,26 @@
:timeList="timeList" :timeList="timeList"
v-model="queryParams1.time" v-model="queryParams1.time"
placeholder="中标日期" placeholder="中标日期"
@handle-search="changeSelect"/> @handle-search="changeSelect2"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="box-right"> <div class="box-right">
<el-table <el-table
:data="jtList" :data="dxmbList"
border border
max-height="400" max-height="400"
fit fit
highlight-current-row highlight-current-row
> >
<el-table-column prop="name" label="企业名称" width="120"/> <el-table-column prop="companyName" label="企业名称">
<el-table-column prop="count" label="中标数量(个)" align="right" sortable/> <template slot-scope="scope">
<el-table-column prop="amount" label="中标金额(万元)" align="right" sortable/> <router-link v-if="scope.row.companyId" :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link companyName" v-html="scope.row.companyName" ></router-link>
<span v-else>{{scope.row.companyName}}</span>
</template>
</el-table-column>
<el-table-column prop="count" label="中标数量(个)" align="right" sortable width="150"/>
<el-table-column prop="money" label="中标金额(万元)" align="right" sortable/>
</el-table> </el-table>
</div> </div>
</el-col> </el-col>
...@@ -160,15 +170,15 @@ ...@@ -160,15 +170,15 @@
<skeleton v-if="zxzbIsSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="zxzbIsSkeleton" style="padding: 16px"></skeleton>
<div class="list" v-if="!zxzbIsSkeleton"> <div class="list" v-if="!zxzbIsSkeleton">
<div class="item" v-for="(item,index) in projectList" :key="index"> <div class="item" v-for="(item,index) in projectList" :key="index">
<p class="list-title"><router-link :to="`/biddetail/${item.id}`" tag="a" class="a-link" v-if="item.id" v-html="item.projectName"></router-link></p> <p class="list-title"><router-link :to="`/biddetail/${item.id}`" tag="a" class="a-link" v-if="item.pid" v-html="item.projectName"></router-link></p>
<div class="list-content"> <div class="list-content">
<p class="list-content-text"> <p class="list-content-text">
<span>中标企业:</span> <span>中标企业:</span>
<span>{{item.companyName || '--'}}</span> <span>{{item.ename || '--'}}</span>
</p> </p>
<p class="list-content-text"> <p class="list-content-text">
<span>中标金额:</span> <span>中标金额:</span>
<span>{{item.amount}}万元</span> <span>{{item.winBidAmount}}万元</span>
</p> </p>
<p class="list-content-text"> <p class="list-content-text">
<span>中标日期:</span> <span>中标日期:</span>
...@@ -176,7 +186,7 @@ ...@@ -176,7 +186,7 @@
</p> </p>
<p class="list-content-text"> <p class="list-content-text">
<span>招标人:</span> <span>招标人:</span>
<span>{{item.projectUnit || '--'}}</span> <span>{{item.buildCorpName || '--'}}</span>
</p> </p>
</div> </div>
</div> </div>
...@@ -189,19 +199,19 @@ ...@@ -189,19 +199,19 @@
<skeleton v-if="zhaobiaoIsSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="zhaobiaoIsSkeleton" style="padding: 16px"></skeleton>
<div v-if="!zhaobiaoIsSkeleton" class="list"> <div v-if="!zhaobiaoIsSkeleton" class="list">
<div class="item" v-for="(item,index) in zbList" :key="index"> <div class="item" v-for="(item,index) in zbList" :key="index">
<p class="list-title"><router-link :to="`/biddetail/${item.bid}`" tag="a" class="a-link" v-if="item.bid" v-html="item.projectName"></router-link></p> <p class="list-title"><router-link :to="`/biddetail/${item.id}`" tag="a" class="a-link" v-if="item.id" v-html="item.projectName"></router-link></p>
<div class="list-content"> <div class="list-content">
<p class="list-content-text"> <p class="list-content-text">
<span>总投资:</span> <span>总投资:</span>
<span>{{item.projectAmount}}万元</span> <span>{{item.bidMoney}}万元</span>
</p> </p>
<p class="list-content-text"> <p class="list-content-text">
<span>招标人:</span> <span>招标人:</span>
<span>{{item.tenderee || '--'}}</span> <span>{{item.companyName || '--'}}</span>
</p> </p>
<p class="list-content-text"> <p class="list-content-text">
<span>发布日期:</span> <span>发布日期:</span>
<span>{{item.issueTime || '--'}}</span> <span>{{item.punishDate || '--'}}</span>
</p> </p>
</div> </div>
</div> </div>
...@@ -221,7 +231,7 @@ ...@@ -221,7 +231,7 @@
@handle-search="changeSelect3" /> @handle-search="changeSelect3" />
</el-form-item> </el-form-item>
<el-form-item prop="provinceId"> <el-form-item prop="provinceId">
<el-select v-model="queryParams2.provinceId" @change="changeSelect3" placeholder="项目地区" style="width: 150px;"> <el-select v-model="queryParams2.provinceId" @change="changeSelect3" clearable placeholder="项目地区" style="width: 150px;">
<el-option v-for="(item,index) in addressList" :key="index" :label="item.label" :value="item.id"></el-option> <el-option v-for="(item,index) in addressList" :key="index" :label="item.label" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -439,12 +449,13 @@ ...@@ -439,12 +449,13 @@
<script> <script>
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import {encodeStr} from "@/assets/js/common.js"
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion'
import "@/assets/styles/public.css"; import "@/assets/styles/public.css";
import CustomTimeSelect from './component/CustomTimeSelect' import CustomTimeSelect from './component/CustomTimeSelect'
import CustomMoneySelect from './component/CustomMoneySelect' import CustomMoneySelect from './component/CustomMoneySelect'
import skeleton from './component/skeleton' import skeleton from './component/skeleton'
import { bidRank,bigWinningBidsPage,bigBidPage } from '@/api/index' import { countByCompany,bidRank,bigWinningBidsPage,bigBidPage } from '@/api/index'
import api from '@/api/radar/radar.js'; import api from '@/api/radar/radar.js';
export default { export default {
name: "Index", name: "Index",
...@@ -453,6 +464,7 @@ export default { ...@@ -453,6 +464,7 @@ export default {
}, },
data() { data() {
return { return {
encodeStr,
// 版本号 // 版本号
version: "3.8.5", version: "3.8.5",
gjjlData:[ gjjlData:[
...@@ -620,72 +632,20 @@ export default { ...@@ -620,72 +632,20 @@ export default {
main:'发布招标公告 重庆轨道交通环线鹅公岩轨道专用桥增设防船撞设施项目,项目地区是重庆市-江北区,项目类型为工程建设。' main:'发布招标公告 重庆轨道交通环线鹅公岩轨道专用桥增设防船撞设施项目,项目地区是重庆市-江北区,项目类型为工程建设。'
}, },
], ],
jtList:[ jtzbList:[],
{ dxmbList:[],
name:'中交集团',
count:'24534',
amount:'23011'
},
{
name:'中建集团',
count:'11534',
amount:'22331'
},
{
name:'中冶集团',
count:'15534',
amount:'20231'
},
{
name:'中国铁路',
count:'6534',
amount:'11231'
},
{
name:'中国水利',
count:'9534',
amount:'4231'
},
{
name:'中建集团',
count:'14534',
amount:'23231'
},
{
name:'中建集团',
count:'24534',
amount:'15231'
},
{
name:'中国水利',
count:'2334',
amount:'5231'
},
{
name:'中建集团',
count:'2534',
amount:'8231'
},
{
name:'中交集团',
count:'2334',
amount:'9231'
},
],
addressList:[], addressList:[],
projectType:[], //项目类型 projectType:[], //项目类型
queryParams:{ queryParams:{
address:'', address:'',
type:[], type:[],
time:'', time:'',
money:'',
}, },
queryParams1:{ queryParams1:{
address:'', address:'',
type:[], type:[],
money:'', money:'',
time:'', time:'',
sort:1
}, },
queryParams2:{ queryParams2:{
provinceId:'', provinceId:'',
...@@ -702,6 +662,7 @@ export default { ...@@ -702,6 +662,7 @@ export default {
zbList:[], zbList:[],
totalCount:0, totalCount:0,
zbTableTotal:0, zbTableTotal:0,
isSkeleton:true,
zxzbIsSkeleton:true, zxzbIsSkeleton:true,
zhaobiaoIsSkeleton:true, zhaobiaoIsSkeleton:true,
}; };
...@@ -709,14 +670,12 @@ export default { ...@@ -709,14 +670,12 @@ export default {
created() { created() {
this.searchDic() this.searchDic()
this.dataRegion() this.dataRegion()
this.getWinningBidsRanking() this.$nextTick(() => {
this.getCountByCompany()
this.getBidRank()
this.getBigWinningBidsPage() this.getBigWinningBidsPage()
if(this.user === 1){ this.getBigBidPage()
this.$nextTick(()=>{
this.initChart(this.jtList)
this.initChart1()
}) })
}
}, },
methods: { methods: {
//项目类型 //项目类型
...@@ -725,69 +684,116 @@ export default { ...@@ -725,69 +684,116 @@ export default {
this.projectType = res.projectType; this.projectType = res.projectType;
}).catch(error=>{}); }).catch(error=>{});
}, },
getWinningBidsRanking(){ getCountByCompany(){
let params=this.queryParams; let params={};
if(params.time){ if(this.queryParams.time.length > 1){
params.startDate=params.time[0] params.startDate=this.queryParams.time[0]
params.endDate=params.time[1] params.endDate=this.queryParams.time[1]
}
if(this.queryParams.type.length > 1){
params.type=this.queryParams.type.join()
}
if(this.queryParams.address){
params.provinceId=this.queryParams.address
}
countByCompany(params).then(res=>{
this.isSkeleton=false;
if(res.code == 200){
this.jtzbList=res.data;
// if()
this.initChart(this.jtzbList)
}
})
},
getBidRank(){
let params={};
if(this.queryParams1.time.length > 1){
params.startDate=this.queryParams1.time[0]
params.endDate=this.queryParams1.time[1]
}
if(this.queryParams1.type.length > 1){
params.type=this.queryParams1.type.join()
}
if(this.queryParams1.address){
params.provinceId=this.queryParams1.address
}
if(this.queryParams1.money){
if(this.queryParams1.money.length > 1){
params.endMoney=this.queryParams1.money[1]
}else {
params.startMoney=this.queryParams1.money[0]
}
} }
delete params.time
delete params.amount
console.log(params)
bidRank(params).then(res=>{ bidRank(params).then(res=>{
console.log(res.rows) if(res.code == 200){
// this.zxzbIsSkeleton=false; this.dxmbList=res.data;
// if(res.code == 200){ if(this.dxmbList.length > 0){
// this.projectList=res.rows; this.initChart1(this.dxmbList)
// this.totalCount=res.total; }
// } }
}) })
}, },
getBigWinningBidsPage(){ getBigWinningBidsPage(){
let params=this.queryParams2; let params={};
if(params.amount){ let recentlyBidQueryDto={};
if(params.amount.length > 1){ params.pageNum=this.queryParams2.pageNum;
params.amountEnd=params.amount[1] params.pageSize=this.queryParams2.pageSize;
if(this.amount){
if(this.amount.length > 1){
recentlyBidQueryDto.endMoney=this.amount[1]
}else { }else {
params.amountStart=params.amount[0] recentlyBidQueryDto.startMoney=this.amount[0]
} }
} }
if(params.time){ if(this.queryParams2.time){
params.timeStart=params.time[0] recentlyBidQueryDto.startTenderTime=this.queryParams2.time[0]
params.timeEnd=params.time[1] recentlyBidQueryDto.endTenderTime=this.queryParams2.time[1]
} }
delete params.time if(this.queryParams2.provinceId){
delete params.amount recentlyBidQueryDto.province=this.queryParams2.provinceId
}
if(this.queryParams2.projects){
recentlyBidQueryDto.projectTypeNew=this.queryParams2.projects.join()
}
params.recentlyBidQueryDto=recentlyBidQueryDto
this.zxzbIsSkeleton=true this.zxzbIsSkeleton=true
bigWinningBidsPage(params).then(res=>{ bigWinningBidsPage(params).then(res=>{
this.zxzbIsSkeleton=false; this.zxzbIsSkeleton=false;
if(res.code == 200){ if(res.code == 200){
this.projectList=res.rows; this.projectList=res.data.list;
this.totalCount=res.total; this.totalCount=res.data.total;
} }
}) })
}, },
getBigBidPage(){ getBigBidPage(){
let params=this.queryParams2; let params={};
if(params.amount){ let jskBidQueryDto={};
if(params.amount.length > 1){ params.pageNum=this.queryParams2.pageNum;
params.amountEnd=params.amount[1] params.pageSize=this.queryParams2.pageSize;
if(this.amount){
if(this.amount.length > 1){
jskBidQueryDto.endBidMoney=this.amount[1]
}else { }else {
params.amountStart=params.amount[0] jskBidQueryDto.startBidMoney=this.amount[0]
}
} }
if(this.queryParams2.time){
jskBidQueryDto.startPunishDate=this.queryParams2.time[0]
jskBidQueryDto.endPunishDate=this.queryParams2.time[1]
} }
if(params.time){ if(this.queryParams2.provinceId){
params.timeStart=params.time[0] jskBidQueryDto.province=this.queryParams2.provinceId
params.timeEnd=params.time[1]
} }
delete params.time if(this.queryParams2.projects){
delete params.amount jskBidQueryDto.projectType=this.queryParams2.projects.join()
}
params.jskBidQueryDto=jskBidQueryDto
this.zhaobiaoIsSkeleton=true this.zhaobiaoIsSkeleton=true
bigBidPage(params).then(res=>{ bigBidPage(params).then(res=>{
this.zhaobiaoIsSkeleton=false this.zhaobiaoIsSkeleton=false
if(res.code == 200){ if(res.code == 200){
this.zbList=res.rows; this.zbList=res.data.list;
this.zbTableTotal=res.total; this.zbTableTotal=res.data.total;
} }
}) })
}, },
...@@ -809,7 +815,11 @@ export default { ...@@ -809,7 +815,11 @@ export default {
} }
this.addressList = str; this.addressList = str;
}, },
initChart(data) { initChart(list) {
let data=[]
for(var i=0;i<10;i++){
data.push(list[i])
}
this.$nextTick(()=>{ this.$nextTick(()=>{
let myChart = echarts.init(document.getElementById("zbtj-echarts")) let myChart = echarts.init(document.getElementById("zbtj-echarts"))
let option ={ let option ={
...@@ -829,7 +839,7 @@ export default { ...@@ -829,7 +839,7 @@ export default {
axisPointer: { axisPointer: {
type: 'shadow' type: 'shadow'
}, },
data: data.map(item => item.name), data: data.map(item => item.combineName),
}, },
yAxis: [ yAxis: [
{ {
...@@ -840,7 +850,7 @@ export default { ...@@ -840,7 +850,7 @@ export default {
name: '单位:个', name: '单位:个',
nameLocation: 'start', nameLocation: 'start',
nameTextStyle: { nameTextStyle: {
padding: [0, 0, 0, -60], // 四个数字分别为上右下左与原位置距离 padding: [0, 20, 0, -60], // 四个数字分别为上右下左与原位置距离
color: '#666666', color: '#666666',
} }
}, },
...@@ -852,7 +862,7 @@ export default { ...@@ -852,7 +862,7 @@ export default {
name: '单位:万元', name: '单位:万元',
nameLocation: 'start', nameLocation: 'start',
nameTextStyle: { nameTextStyle: {
padding: [0, 0, 0, 72], // 四个数字分别为上右下左与原位置距离 padding: [0, 0, 0, 100], // 四个数字分别为上右下左与原位置距离
color: '#666666', color: '#666666',
}, },
splitLine: { splitLine: {
...@@ -885,7 +895,7 @@ export default { ...@@ -885,7 +895,7 @@ export default {
itemStyle: { itemStyle: {
color: '#14C9C9' color: '#14C9C9'
}, },
data:data.map(item => item.amount), data:data.map(item => item.money),
}, },
{ {
name:'中标总数(个)', name:'中标总数(个)',
...@@ -917,7 +927,16 @@ export default { ...@@ -917,7 +927,16 @@ export default {
}); });
}) })
}, },
initChart1(){ initChart1(list){
let data=[]
if(list.length > 10){
for(var i=0;i<10;i++){
data.push(list[i])
}
}else {
data=list;
}
var rankPic = [ var rankPic = [
require('@/assets/images/index/1.png'), require('@/assets/images/index/1.png'),
require('@/assets/images/index/2.png'), require('@/assets/images/index/2.png'),
...@@ -930,11 +949,11 @@ export default { ...@@ -930,11 +949,11 @@ export default {
require('@/assets/images/index/9.png'), require('@/assets/images/index/9.png'),
require('@/assets/images/index/10.png'), require('@/assets/images/index/10.png'),
] ]
this.$nextTick(()=>{
let myChart = echarts.init(document.getElementById("zbph-echarts")) let myChart = echarts.init(document.getElementById("zbph-echarts"))
let option ={ let option ={
legend: { legend: {
show: true, show: false,
x:'right', x:'right',
y:'top', y:'top',
padding:[10,0,10,0], padding:[10,0,10,0],
...@@ -947,7 +966,7 @@ export default { ...@@ -947,7 +966,7 @@ export default {
yAxis: { yAxis: {
type: 'category', type: 'category',
inverse: true, // 反向坐标 inverse: true, // 反向坐标
data: this.pmData.map(item => item.name), data: data.map(item => item.companyName),
axisLine: { axisLine: {
show: false, show: false,
}, },
...@@ -957,11 +976,11 @@ export default { ...@@ -957,11 +976,11 @@ export default {
axisPointer: { axisPointer: {
label: { label: {
show: true, show: true,
margin: 30 // margin: 30
} }
}, },
axisLabel: { axisLabel: {
margin: 200, margin: 220,
textStyle: { textStyle: {
align: 'left', align: 'left',
}, },
...@@ -1071,11 +1090,10 @@ export default { ...@@ -1071,11 +1090,10 @@ export default {
color: '#fff', color: '#fff',
}, },
}, },
series: [ series: {
{
// realtimeSort: true, // realtimeSort: true,
name:'已完成产值', name:'中标金额(万元)',
data: this.pmData.map(item => item.value), data: data.map(item => item.money),
barGap: 0, barGap: 0,
type: 'bar', type: 'bar',
itemStyle:{ itemStyle:{
...@@ -1084,23 +1102,13 @@ export default { ...@@ -1084,23 +1102,13 @@ export default {
}, },
barWidth: 8, barWidth: 8,
}, },
{
name:'目标产值',
data: this.pmData.map(item => item.value1),
barGap: 0,
type: 'bar',
itemStyle:{
color: '#92C9FF',
barBorderRadius:[0, 20, 20, 0]
},
barWidth: 8,
},
],
} }
myChart.setOption(option); myChart.setOption(option);
window.addEventListener("resize", function () { window.addEventListener("resize", function () {
myChart.resize();//图表跟随页面大小变化宽度 myChart.resize();//图表跟随页面大小变化宽度
}); });
})
}, },
handleClickTab(){ handleClickTab(){
this.queryParams2.pageNum=1; this.queryParams2.pageNum=1;
...@@ -1116,15 +1124,16 @@ export default { ...@@ -1116,15 +1124,16 @@ export default {
this.user = this.user === 1 ? 2 : 1; this.user = this.user === 1 ? 2 : 1;
if(this.user === 1){ if(this.user === 1){
this.$nextTick(()=>{ this.$nextTick(()=>{
this.initChart(this.jtList) this.initChart(this.jtzbList)
this.initChart1() this.initChart1(this.dxmbList)
}) })
} }
}, },
changeSelect(){ changeSelect1(){
console.log(this.queryParams) this.getCountByCompany()
this.getWinningBidsRanking() },
// this.$emit('handle-search') changeSelect2(){
this.getBidRank()
}, },
changeSelect3(){ changeSelect3(){
this.queryParams2.pageNum = 1 this.queryParams2.pageNum = 1
......
...@@ -5,7 +5,11 @@ ...@@ -5,7 +5,11 @@
<span class="province">{{province}}</span> <span class="province">{{province}}</span>
<span class="icon"> <span class="icon">
<i class="el-icon-location"></i>切换 <i class="el-icon-location"></i>切换
<el-cascader ref="address" class="cascader-region" popper-class='cascader-region-addd' <el-select v-if="key =='5'" v-model="address" class="cascader-region" @change="addressListbtn1">
<el-option v-for="(item,index) in addressList" :key="index" :label="item.label" :value="item.id"></el-option>
</el-select>
<el-cascader v-else ref="address" class="cascader-region" popper-class='cascader-region-addd'
@change="addressListbtn" v-model="address" :options="addressList" :props="props" collapse-tags></el-cascader> @change="addressListbtn" v-model="address" :options="addressList" :props="props" collapse-tags></el-cascader>
</span> </span>
</div> </div>
...@@ -17,7 +21,7 @@ ...@@ -17,7 +21,7 @@
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion'
export default { export default {
name:'region', name:'region',
props:['province','dataQuery'], props:['province','dataQuery','type'],
data(){ data(){
return { return {
props: { props: {
...@@ -28,7 +32,8 @@ ...@@ -28,7 +32,8 @@
addressList: [], addressList: [],
address:'', address:'',
provinceId:[], provinceId:[],
location:'' location:'',
key:'',
} }
}, },
watch: { watch: {
...@@ -39,10 +44,12 @@ ...@@ -39,10 +44,12 @@
created(){ created(){
this.dataRegion() this.dataRegion()
this.location=this.province this.location=this.province
this.key=this.type;
}, },
methods:{ methods:{
addressListbtn() { addressListbtn() {
let nodesObj = this.$refs.address.getCheckedNodes()[0]; let nodesObj = this.$refs.address.getCheckedNodes()[0];
this.location=nodesObj.pathLabels[nodesObj.pathLabels.length-1]; this.location=nodesObj.pathLabels[nodesObj.pathLabels.length-1];
this.provinceId=nodesObj.path; this.provinceId=nodesObj.path;
let data={} let data={}
...@@ -52,6 +59,18 @@ ...@@ -52,6 +59,18 @@
this.$parent.addressListbtn(data) this.$parent.addressListbtn(data)
localStorage.setItem('location', true) localStorage.setItem('location', true)
}, },
addressListbtn1() {
let obj = this.addressList.find((option) => option.id === this.address);
this.location=obj.label;
this.provinceId=[obj.id];
let data={}
data.province=this.location
data.provinceId=this.provinceId
data.provinces=[this.location]
console.log(data,"|||||||")
this.$parent.addressListbtn(data)
localStorage.setItem('location', true)
},
//地区 //地区
async dataRegion() { async dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, { // await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
......
...@@ -732,16 +732,6 @@ export default { ...@@ -732,16 +732,6 @@ export default {
this.$parent.handleClick('second', data); this.$parent.handleClick('second', data);
break; break;
case 2: case 2:
// this.$router.push({
// path: '/macro/urban',
// query:{
// provinceId:this.dataQuery.provinceId,
// province:this.dataQuery.province,
// }
// })
console.log(this.dataQuery.provinceId)
console.log(this.dataQuery.province)
// return
this.$router.push({name: 'Urban', this.$router.push({name: 'Urban',
params: { params: {
provinceId: this.dataQuery.provinceId, provinceId: this.dataQuery.provinceId,
......
...@@ -76,7 +76,13 @@ export default { ...@@ -76,7 +76,13 @@ export default {
if(Array.isArray(this.dataQuery.provinceId)){ if(Array.isArray(this.dataQuery.provinceId)){
this.provinceId=this.dataQuery.provinceId this.provinceId=this.dataQuery.provinceId
}else { }else {
this.provinceId.push(this.dataQuery.provinceId) if(this.dataQuery.cityId){
this.provinceId=[this.dataQuery.provinceId,this.dataQuery.cityId,this.dataQuery.areaId]
}else if(this.dataQuery.cityId){
this.provinceId=[this.dataQuery.provinceId,this.dataQuery.cityId]
}else {
this.provinceId=[this.dataQuery.provinceId]
}
} }
}else { }else {
location({}).then(res => { location({}).then(res => {
......
<template> <template>
<div class="app-container enterprises"> <div class="app-container enterprises">
<Region v-if="province" :province="province" :dataQuery="dataQuery" @addressListbtn="addressListbtn"></Region> <Region v-if="province" :province="province" :dataQuery="dataQuery" @addressListbtn="addressListbtn" :type="5"></Region>
<div class="flex-box eco-header"> <div class="flex-box eco-header">
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="本地企业" name="first"></el-tab-pane> <el-tab-pane label="本地企业" name="first"></el-tab-pane>
...@@ -291,17 +291,8 @@ export default { ...@@ -291,17 +291,8 @@ export default {
this.dataQuery.province=data.provinces; this.dataQuery.province=data.provinces;
let params={} let params={}
if(data){ if(data){
if(this.provinceId.length > 0){ params.provinceId=this.provinceId
params.provinceId=this.provinceId[0]
} }
if(this.provinceId.length > 1){
params.cityId=this.provinceId[1]
}
if(this.provinceId.length > 2){
params.areaId=this.provinceId[2]
}
}
this.querySubmit() this.querySubmit()
location(params).then(res => { location(params).then(res => {
console.log(res.data) console.log(res.data)
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
</el-table-column> </el-table-column>
<el-table-column label="地区" min-width="150" align="left" fixed> <el-table-column label="地区" min-width="150" align="left" fixed>
<template slot-scope="scope"> <template slot-scope="scope">
<router-link :to="{path:'/macro/economies',query:{id:scope.row.id,provinceId:scope.row.provinceId,province:scope.row.province}}" tag="a" class="a-link">{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}</router-link> <span @click="clickTo(scope.row)">{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="年度明细" prop="id" width="90" align="center" fixed> <el-table-column label="年度明细" prop="id" width="90" align="center" fixed>
...@@ -324,6 +324,26 @@ ...@@ -324,6 +324,26 @@
message: '功能正在开发中', message: '功能正在开发中',
type: 'warning' type: 'warning'
}); });
},
clickTo(item){
let params={
id:item.id,
province:item.area ? item.area : item.city ? item.city : item.province,
}
if(item.areaId){
params.provinceId=item.provinceId
params.cityId=item.cityId
params.areaId=item.areaId
}else if(item.cityId !=0){
params.provinceId=item.provinceId
params.cityId=item.cityId
}else {
params.provinceId=item.provinceId
}
this.$router.push({
path: '/macro/economies',
query:params
})
} }
} }
} }
......
...@@ -217,9 +217,9 @@ ...@@ -217,9 +217,9 @@
<el-table-column prop="econData002" label="有息债务/总负债(%)" :formatter="formatStatus" width="160" align="right"/> <el-table-column prop="econData002" label="有息债务/总负债(%)" :formatter="formatStatus" width="160" align="right"/>
<el-table-column prop="tdr" label="资产负债率(%)" :formatter="formatStatus" width="140" align="right"/> <el-table-column prop="tdr" label="资产负债率(%)" :formatter="formatStatus" width="140" align="right"/>
<el-table-column prop="ofcb" label="综合融资成本(%)" :formatter="formatStatus" width="150" align="right"/> <el-table-column prop="ofcb" label="综合融资成本(%)" :formatter="formatStatus" width="150" align="right"/>
<el-table-column prop="cashRatio" label="现金比率" :formatter="formatStatus" width="110" align="right"/> <el-table-column prop="cashRatio" label="现金比率(%)" :formatter="formatStatus" width="110" align="right"/>
<el-table-column prop="cashFlowRatio" label="现金流量比率" :formatter="formatStatus" width="120" align="right"/> <el-table-column prop="cashFlowRatio" label="现金流量比率(%)" :formatter="formatStatus" width="120" align="right"/>
<el-table-column prop="cashDebtRatio" label="现金到期债务比" :formatter="formatStatus" width="120" align="right"/> <el-table-column prop="cashDebtRatio" label="现金到期债务比(%)" :formatter="formatStatus" width="120" align="right"/>
<el-table-column prop="creditBalance" label="授信余额(亿元)" :formatter="formatStatus" width="130" align="right"/> <el-table-column prop="creditBalance" label="授信余额(亿元)" :formatter="formatStatus" width="130" align="right"/>
<el-table-column prop="econData003" label="授信余额/全部债务(%)" :formatter="formatStatus" width="160" align="right"/> <el-table-column prop="econData003" label="授信余额/全部债务(%)" :formatter="formatStatus" width="160" align="right"/>
<el-table-column prop="ebitdaIcr" label="EBITDA保障倍数" :formatter="formatStatus" width="150" align="right"/> <el-table-column prop="ebitdaIcr" label="EBITDA保障倍数" :formatter="formatStatus" width="150" align="right"/>
......
...@@ -16,6 +16,10 @@ public class BusinessAnalyzeVo implements Serializable { ...@@ -16,6 +16,10 @@ public class BusinessAnalyzeVo implements Serializable {
* 项目类型 * 项目类型
*/ */
private String projectType; private String projectType;
/**
* 项目类别
*/
private String projectCategory;
/** /**
* 资金来源 * 资金来源
*/ */
......
...@@ -84,12 +84,22 @@ public class EnterpriseBussinessService { ...@@ -84,12 +84,22 @@ public class EnterpriseBussinessService {
dataMap.put("sourceList", null); dataMap.put("sourceList", null);
String source = MapUtils.getString(dataMap, "source"); String source = MapUtils.getString(dataMap, "source");
if (ObjectUtil.isNotEmpty(source)) { if (ObjectUtil.isNotEmpty(source)) {
List<EnterpriseBussinessVo> enterpriseSource = new ArrayList<>();
List<EnterpriseBussinessVo> enterpriseBussinessVoList = JSONUtil.toList(source, EnterpriseBussinessVo.class); List<EnterpriseBussinessVo> enterpriseBussinessVoList = JSONUtil.toList(source, EnterpriseBussinessVo.class);
if (ObjectUtil.isNotEmpty(enterpriseBussinessVoList.get(0))) { if (ObjectUtil.isNotEmpty(enterpriseBussinessVoList.get(0))) {
EnterpriseBussinessVo vo = enterpriseBussinessVoList.get(0); EnterpriseBussinessVo vo = enterpriseBussinessVoList.get(0);
dataMap.put("sourceId", vo.getSource_id()); dataMap.put("sourceId", vo.getSource_id());
dataMap.put("sourceType", vo.getSource_type()); dataMap.put("sourceType", vo.getSource_type());
dataMap.put("sourceList", enterpriseBussinessVoList); dataMap.put("sourceList", enterpriseBussinessVoList);
if (ObjectUtil.isNotEmpty(body.getSources())) {
for (EnterpriseBussinessVo bussinessVo : enterpriseBussinessVoList) {
String source_type = bussinessVo.getSource_type();
if (body.getSources().contains(source_type)) {
enterpriseSource.add(bussinessVo);
}
}
dataMap.put("sourceList", enterpriseSource);
}
} }
} }
} }
...@@ -173,12 +183,22 @@ public class EnterpriseBussinessService { ...@@ -173,12 +183,22 @@ public class EnterpriseBussinessService {
dataMap.put("sourceType", null); dataMap.put("sourceType", null);
String source = MapUtils.getString(dataMap, "source"); String source = MapUtils.getString(dataMap, "source");
if (ObjectUtil.isNotEmpty(source)) { if (ObjectUtil.isNotEmpty(source)) {
List<EnterpriseBussinessVo> enterpriseSource = new ArrayList<>();
List<EnterpriseBussinessVo> enterpriseBussinessVoList = JSONUtil.toList(source, EnterpriseBussinessVo.class); List<EnterpriseBussinessVo> enterpriseBussinessVoList = JSONUtil.toList(source, EnterpriseBussinessVo.class);
if (ObjectUtil.isNotEmpty(enterpriseBussinessVoList.get(0))) { if (ObjectUtil.isNotEmpty(enterpriseBussinessVoList.get(0))) {
EnterpriseBussinessVo vo = enterpriseBussinessVoList.get(0); EnterpriseBussinessVo vo = enterpriseBussinessVoList.get(0);
dataMap.put("sourceId", vo.getSource_id()); dataMap.put("sourceId", vo.getSource_id());
dataMap.put("sourceType", vo.getSource_type()); dataMap.put("sourceType", vo.getSource_type());
dataMap.put("sourceList", enterpriseBussinessVoList); dataMap.put("sourceList", enterpriseBussinessVoList);
if (ObjectUtil.isNotEmpty(body.getSources())) {
for (EnterpriseBussinessVo bussinessVo : enterpriseBussinessVoList) {
String source_type = bussinessVo.getSource_type();
if (body.getSources().contains(source_type)) {
enterpriseSource.add(bussinessVo);
}
}
dataMap.put("sourceList", enterpriseSource);
}
} }
} }
} }
......
...@@ -289,22 +289,22 @@ public class EnterpriseService { ...@@ -289,22 +289,22 @@ public class EnterpriseService {
List<CustomerStatusListVo> claimStatusList = iCustomerService.selectStatusListByCompanyName(companyNames); List<CustomerStatusListVo> claimStatusList = iCustomerService.selectStatusListByCompanyName(companyNames);
Map<String, Object> bondCreditRatingBatchMap = new HashMap<>(1); // Map<String, Object> bondCreditRatingBatchMap = new HashMap<>(1);
bondCreditRatingBatchMap.put("cIds", cIds); // bondCreditRatingBatchMap.put("cIds", cIds);
Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/enterprise/bondCreditRatingBatch", bondCreditRatingBatchMap); // Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/enterprise/bondCreditRatingBatch", bondCreditRatingBatchMap);
Integer codeRating = MapUtils.getInteger(bondCreditRatingMap, "code", 300); // Integer codeRating = MapUtils.getInteger(bondCreditRatingMap, "code", 300);
ArrayList<Map<String, Object>> objArrayList = new ArrayList(1); // ArrayList<Map<String, Object>> objArrayList = new ArrayList(1);
if (codeRating.equals(HttpStatus.OK.value())) { // if (codeRating.equals(HttpStatus.OK.value())) {
Object object = bondCreditRatingMap.get("data"); // Object object = bondCreditRatingMap.get("data");
if (ObjectUtil.isNotEmpty(object)) { // if (ObjectUtil.isNotEmpty(object)) {
objArrayList = (ArrayList) object; // objArrayList = (ArrayList) object;
} // }
} // }
//按照城投企业id合并两个list //按照城投企业id合并两个list
for (Object companyObj : list) { for (Object companyObj : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj); Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
companyMap.put("bratingSubjectLevel", null); // companyMap.put("bratingSubjectLevel", null);
String uipId = MapUtils.getString(companyMap, "uipId"); String uipId = MapUtils.getString(companyMap, "uipId");
String companyName = MapUtils.getString(companyMap, "companyName", ""); String companyName = MapUtils.getString(companyMap, "companyName", "");
if (ObjectUtil.isNotEmpty(companyName) && ObjectUtil.isNotEmpty(body.getKeys())) { if (ObjectUtil.isNotEmpty(companyName) && ObjectUtil.isNotEmpty(body.getKeys())) {
...@@ -354,12 +354,12 @@ public class EnterpriseService { ...@@ -354,12 +354,12 @@ public class EnterpriseService {
companyMap.put("claimStatus", vo.getStatus()); companyMap.put("claimStatus", vo.getStatus());
} }
} }
for (Map<String, Object> m : objArrayList) { // for (Map<String, Object> m : objArrayList) {
Long companyIdCredit = MapUtils.getLong(m, "companyId", 0L); // Long companyIdCredit = MapUtils.getLong(m, "companyId", 0L);
if (companyIdCredit.equals(companyId)) { // if (companyIdCredit.equals(companyId)) {
companyMap.put("bratingSubjectLevel", m.get("bratingSubjectLevel")); // companyMap.put("bratingSubjectLevel", m.get("bratingSubjectLevel"));
} // }
} // }
} }
return new TableDataInfo(list, MapUtils.getInteger(data, "totalCount", 0)); return new TableDataInfo(list, MapUtils.getInteger(data, "totalCount", 0));
......
...@@ -116,4 +116,6 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo> { ...@@ -116,4 +116,6 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo> {
List<BusinessAnalyzeVo> selectTypeAnalyze(BusinessSearchDto dto); List<BusinessAnalyzeVo> selectTypeAnalyze(BusinessSearchDto dto);
List<BusinessAnalyzeVo> selectCategoryAnalyze(BusinessSearchDto dto);
} }
...@@ -20,6 +20,8 @@ public interface IBusinessOverviewService { ...@@ -20,6 +20,8 @@ public interface IBusinessOverviewService {
List<BusinessAnalyzeVo> typeAnalyze(BusinessSearchDto dto); List<BusinessAnalyzeVo> typeAnalyze(BusinessSearchDto dto);
List<BusinessAnalyzeVo> categoryAnalyze(BusinessSearchDto dto);
AjaxResult countGroupByProvince(JSONObject object); AjaxResult countGroupByProvince(JSONObject object);
AjaxResult rangByMoney(JSONObject object); AjaxResult rangByMoney(JSONObject object);
......
...@@ -60,6 +60,12 @@ public class BusinessOverviewServiceImpl implements IBusinessOverviewService { ...@@ -60,6 +60,12 @@ public class BusinessOverviewServiceImpl implements IBusinessOverviewService {
return businessInfoMapper.selectTypeAnalyze(dto); return businessInfoMapper.selectTypeAnalyze(dto);
} }
@Override
@DataScope(userAlias = "u",deptAlias = "d")
public List<BusinessAnalyzeVo> categoryAnalyze(BusinessSearchDto dto) {
return businessInfoMapper.selectCategoryAnalyze(dto);
}
@Override @Override
public AjaxResult countGroupByProvince(JSONObject object) { public AjaxResult countGroupByProvince(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/project/countGroupByProvince", object); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/project/countGroupByProvince", object);
......
...@@ -62,17 +62,17 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo ...@@ -62,17 +62,17 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo
} }
List<CustomerStatusListVo> customerStatusListVos = iCustomerService.selectStatusListByCompanyName(companyNames); List<CustomerStatusListVo> customerStatusListVos = iCustomerService.selectStatusListByCompanyName(companyNames);
Map<String, Object> bondCreditRatingBatchMap = new HashMap<>(1); // Map<String, Object> bondCreditRatingBatchMap = new HashMap<>(1);
bondCreditRatingBatchMap.put("cIds", cIds); // bondCreditRatingBatchMap.put("cIds", cIds);
Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/operate/enterprise/bondCreditRatingBatch", bondCreditRatingBatchMap); // Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/operate/enterprise/bondCreditRatingBatch", bondCreditRatingBatchMap);
Integer codeRating = MapUtils.getInteger(bondCreditRatingMap, "code", 300); // Integer codeRating = MapUtils.getInteger(bondCreditRatingMap, "code", 300);
ArrayList<Map<String, Object>> objArrayList = new ArrayList(1); // ArrayList<Map<String, Object>> objArrayList = new ArrayList(1);
if (codeRating.equals(HttpStatus.OK.value())) { // if (codeRating.equals(HttpStatus.OK.value())) {
Object object = bondCreditRatingMap.get("data"); // Object object = bondCreditRatingMap.get("data");
if (ObjectUtil.isNotEmpty(object)) { // if (ObjectUtil.isNotEmpty(object)) {
objArrayList = (ArrayList)object; // objArrayList = (ArrayList)object;
} // }
} // }
//按照城投企业id合并两个list //按照城投企业id合并两个list
//按照城投企业id合并两个list //按照城投企业id合并两个list
...@@ -86,27 +86,27 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo ...@@ -86,27 +86,27 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo
companyName = companyName.replaceAll("</font>",""); companyName = companyName.replaceAll("</font>","");
} }
companyMap.put("claimStatus", null); companyMap.put("claimStatus", null);
companyMap.put("bratingSubjectLevel", null); // companyMap.put("bratingSubjectLevel", null);
for (CustomerStatusListVo vo : customerStatusListVos) { for (CustomerStatusListVo vo : customerStatusListVos) {
if (companyName.equals(vo.getCompanyName())) { if (companyName.equals(vo.getCompanyName())) {
companyMap.put("claimStatus", vo.getStatus()); companyMap.put("claimStatus", vo.getStatus());
} }
} }
// 去除重复的数据 // 去除重复的数据
Set<UrbanInvestmentPlatformSubjectLevelDto> subjectLevelDtoSet = new HashSet<>(); // Set<UrbanInvestmentPlatformSubjectLevelDto> subjectLevelDtoSet = new HashSet<>();
for (Map<String, Object> m : objArrayList) { // for (Map<String, Object> m : objArrayList) {
UrbanInvestmentPlatformSubjectLevelDto dto = new UrbanInvestmentPlatformSubjectLevelDto(); // UrbanInvestmentPlatformSubjectLevelDto dto = new UrbanInvestmentPlatformSubjectLevelDto();
Long companyIdCredit = MapUtils.getLong(m, "companyId", 0L); // Long companyIdCredit = MapUtils.getLong(m, "companyId", 0L);
String rate = MapUtils.getString(m, "bratingSubjectLevel"); // String rate = MapUtils.getString(m, "bratingSubjectLevel");
dto.setCompanyId(companyIdCredit); // dto.setCompanyId(companyIdCredit);
dto.setBratingSubjectLevel(rate); // dto.setBratingSubjectLevel(rate);
subjectLevelDtoSet.add(dto); // subjectLevelDtoSet.add(dto);
} // }
for (UrbanInvestmentPlatformSubjectLevelDto dto : subjectLevelDtoSet) { // for (UrbanInvestmentPlatformSubjectLevelDto dto : subjectLevelDtoSet) {
if (dto.getCompanyId().equals(companyId)) { // if (dto.getCompanyId().equals(companyId)) {
companyMap.put("bratingSubjectLevel", dto.getBratingSubjectLevel()); // companyMap.put("bratingSubjectLevel", dto.getBratingSubjectLevel());
} // }
} // }
} }
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
......
...@@ -401,6 +401,17 @@ ...@@ -401,6 +401,17 @@
bi.project_type,count(bi.id) businessCount, ROUND(sum(bi.investment_amount), 4) totalAmount bi.project_type,count(bi.id) businessCount, ROUND(sum(bi.investment_amount), 4) totalAmount
<include refid="businessSearchSql"/> <include refid="businessSearchSql"/>
group by bi.project_type group by bi.project_type
<if test="status != null and status == 0 "> order by businessCount desc </if>
<if test="status != null and status == 2 "> order by totalAmount desc </if>
</select>
<select id="selectCategoryAnalyze" resultType="com.dsk.system.domain.business.vo.BusinessAnalyzeVo">
select
bi.project_category,count(bi.id) businessCount, ROUND(sum(bi.investment_amount), 4) totalAmount
<include refid="businessSearchSql"/>
group by bi.project_category
<if test="status != null and status == 0 "> order by businessCount desc </if>
<if test="status != null and status == 2 "> order by totalAmount desc </if>
</select> </select>
</mapper> </mapper>
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