Commit c7500d25 authored by danfuman's avatar danfuman

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

parents 7ed7865d dd3840a0
package com.dsk.web.controller.dsk;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.dsk.dto.JskCombineSearchDto;
import com.dsk.system.dskService.JskCombineInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 集团户相关信息
* @author lcl
* @create 2023/8/7
*/
@Slf4j
@RestController
@RequestMapping(value = "/combine/info")
public class JskCombineInfoController extends BaseController {
@Autowired
private JskCombineInfoService baseService;
/**
* 集团成员列表
*/
@GetMapping("/memberList")
public TableDataInfo memberList(JskCombineSearchDto dto) throws Exception {
return baseService.memberList(dto);
}
/**
* 分组成员数量
*/
@GetMapping("/group/memberCount")
public R groupMemberCount(JskCombineSearchDto dto) {
return baseService.groupMemberCount(dto);
}
/**
* 集团业绩列表
*/
@GetMapping("/businessList")
public TableDataInfo businessList(JskCombineSearchDto dto) throws Exception {
return baseService.businessList(dto);
}
}
......@@ -55,8 +55,6 @@ public class MarketAnalysisController extends BaseController {
return marketAnalysisService.certGroupByMajorProvinceLevel();
}
/*
* 产业结构-按年份选择 各个项目类型项目总数
*/
......@@ -72,6 +70,14 @@ public class MarketAnalysisController extends BaseController {
return marketAnalysisService.bidMoneyGroupByProjectType(object);
}
//-----------------------------------中标----------------------------------
//全攻中标项目统计
@RequestMapping("/countBidByType")
public AjaxResult countBidByType(@RequestBody JSONObject object) {
return marketAnalysisService.countBidByType( object);
}
/*
* 全国各地区中标统计TOP10
*/
......@@ -80,7 +86,32 @@ public class MarketAnalysisController extends BaseController {
return marketAnalysisService.countBidGroupByProvince(object);
}
//全国中标金额分析
@RequestMapping("/rangeBidMoney")
public AjaxResult rangeBidMoney(@RequestBody JSONObject object) {
return marketAnalysisService.rangeBidMoney( object);
}
//全国中标趋势分析
@RequestMapping("/rangeBidFiveYears")
public AjaxResult rangeBidFiveYears() {
return marketAnalysisService.rangeBidFiveYears();
}
//全国中标下浮率分析
@RequestMapping("/lowerRateByYear")
public AjaxResult lowerRateByYear(@RequestBody JSONObject object) {
return marketAnalysisService.lowerRateByYear( object);
}
//全国中标业绩项目类型下浮率
@RequestMapping("/lowerRangeTenderType")
public AjaxResult lowerRangeTenderType(@RequestBody JSONObject object) {
return marketAnalysisService.lowerRangeTenderType( object);
}
//-----------------------------------土地----------------------------------
//央企数字化经营系统 土地交易
@RequestMapping("/countLandMarketByType")
public AjaxResult countLandMarketByType(@RequestBody JSONObject object){
......@@ -99,6 +130,10 @@ public class MarketAnalysisController extends BaseController {
return marketAnalysisService.countLandMarketByYear();
}
//-----------------------------------招标----------------------------------
//央企数字化经营系统 全国公招项目统计
@RequestMapping("/countNewsBidByYear")
public AjaxResult countNewsBidByYear(){
......
......@@ -206,6 +206,7 @@
class="popups"
:visible.sync="dialogVisible"
width="534px"
:close-on-click-modal="false"
@close="resetForm('ruleForm')"
>
<div class="poptitle">
......@@ -214,9 +215,9 @@
</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"></el-input>
<div class="resultlist" v-if="showlist" id="box">
<div v-for="(item,index) in companData" @click="selCompany(item)"><span v-html="item.name"></span></div>
<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">
......@@ -310,6 +311,8 @@
showlist:false,
keys:1,
isSkeleton:true,
companypage:1,
isscroll:false,
}
},
created() {
......@@ -428,22 +431,48 @@
//获取建设库客户
getCompany(value){
this.queryParam.companyId = null
if (value.length>=2){
if(value == 1){
this.companData = []
this.companypage = 1
}
if (this.queryParam.companyName.length>=2){
let param = {
keyword:value,
keyword:this.queryParam.companyName,
page:{
limit:20,
page:1
page:this.companypage
}
}
getEnterprise(JSON.stringify(param)).then(result=>{
if(result.code != 200)
return
this.showlist = true
this.companData = result.data.list
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, '')
......
......@@ -3,6 +3,7 @@
class="popups"
width="534px"
:visible.sync="isshow"
:close-on-click-modal="false"
@close="resetForm('ruleForm')"
>
<div @click = 'handleALL'>
......
......@@ -313,7 +313,7 @@
return false
editXMNR(param).then(result=>{
if(result.code == 200){
this.$message.success('修改成功!')
// this.$message.success('修改成功!')
if(param.investmentAmount){//修改项目阶段
this.$emit('Refrehmoney')
}
......
......@@ -276,7 +276,7 @@
editXMNR(JSON.stringify(params)).then(res=>{
if (res.code == 200){
if(!param.projectStage){
this.$message.success('修改成功!')
// this.$message.success('修改成功!')
}
}else{
this.$message.error(res.msg)
......@@ -314,7 +314,7 @@
}
addLabel(JSON.stringify(param)).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
// this.$message.success('修改成功!')
this.tipsvalue = ""
this.getXMSL()
}else{
......@@ -330,7 +330,7 @@
}
removeLabel(JSON.stringify(param)).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
// this.$message.success('修改成功!')
this.getXMSL()
}else{
this.$message.error(res.msg)
......
......@@ -287,7 +287,7 @@
}
editXMNR(JSON.stringify(params)).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
// this.$message.success('修改成功!')
if(this.nowedit == 1){
let _this = this
setTimeout(function() {
......
......@@ -113,7 +113,7 @@
<ul class="bottomlist-content" v-if="!isSkeleton&&tableData.length>0">
<li class="bottomlist-list" v-for="item in tableData">
<p class="list-titel">
<router-link :to="'/radar/debtProject/details/'+ item.uuid" tag="a" class="list-titel-a" v-html="item.projectName" ></router-link>
<router-link :to="'/radar/debtProject/details/'+ item.id" tag="a" class="list-titel-a" v-html="item.projectName" ></router-link>
</p>
<div class="content-label" v-if="item.domicile">
......
<template>
<div class="app-container qyzx-details">
<div class="content main1">
<div class="title">
<img src="@/assets/images/financing/head_icon.png" />
<span>{{textList.projectName}}</span>
<div class="content main1">
<div class="cont-title"><img src="@/assets/images/financing/head_icon.png" />{{details.projectName}}</div>
<p>{{details.projectScale}}</p>
</div>
<div class="content main2">
<div class="common-title">项目筹资</div>
<div class="main2-box">
<div class="list">
<div class="item color1">
<div class="item-left">
<h4>{{details.projectTotalInvestment || '-'}}<span>{{details.projectTotalInvestment ? '亿' : ''}}</span></h4>
<p>项目总投资额</p>
</div>
<img class="img" src="@/assets/images/financing/icon1.png" />
</div>
<p>{{textList.projectScale}}</p>
</div>
<div class="content main2">
<div class="common-title">项目筹资</div>
<div class="main2-box">
<div class="list">
<div class="item color1">
<div class="item-left">
<h4 v-if="textList.projectTotalInvestment">{{textList.projectTotalInvestment}}<span>亿元</span></h4>
<h4 v-else>
--
</h4>
<p>项目总投资额</p>
</div>
<img class="img" src="@/assets/images/financing/icon1.png" />
</div>
<div class="item color2">
<div class="item-left">
<h4 v-if="textList.projectCapital">{{textList.projectCapital}}<span>亿元</span></h4>
<h4 v-else>
--
</h4>
<p>项目资本金</p>
</div>
<img class="img" src="@/assets/images/financing/icon2.png" />
</div>
<div class="item color3">
<div class="item-left">
<h4 v-if="textList.econData_013">{{textList.econData_013}}<span>亿元</span></h4>
<h4 v-else>
--
</h4>
<p>专项债融资</p>
</div>
<img class="img" src="@/assets/images/financing/icon3.png" />
</div>
<div class="item color4">
<div class="item-left">
<h4 v-if="textList.specialBondCapital">{{textList.specialBondCapital}}<span>亿元</span></h4>
<h4 v-else>
--
</h4>
<p>专项债用作资本金</p>
</div>
<img class="img" src="@/assets/images/financing/icon4.png" />
</div>
</div>
<div class="list">
<div class="item color4">
<div class="item-left">
<h4 v-if="textList.otherFunds">{{textList.otherFunds}}<span>亿元</span></h4>
<h4 v-else>
--
</h4>
<p>其他资金</p>
</div>
<img class="img" src="@/assets/images/financing/icon5.png" />
</div>
<div class="item color3">
<div class="item-left">
<h4 v-if="textList.specialBondIssue_number">{{textList.specialBondIssue_number}}<span>亿元/ 10只</span></h4>
<h4 v-else>
--
</h4>
<p>专项债融资额/专项债只数</p>
</div>
<img class="img" src="@/assets/images/financing/icon6.png" />
</div>
<div class="item color4">
<div class="item-left">
<h4 v-if="textList.otherFinancing">{{textList.otherFinancing}}<span>亿元</span></h4>
<h4 v-else>
--
</h4>
<p>其他融资</p>
</div>
<img class="img" src="@/assets/images/financing/icon7.png" />
</div>
<div class="item color2">
<div class="item-left">
<h4 v-if="textList.govSupportFunds">{{textList.govSupportFunds}}<span>亿元</span></h4>
<h4 v-else>
--
</h4>
<p>政府安排资金</p>
</div>
<img class="img" src="@/assets/images/financing/icon8.png" />
</div>
</div>
<div class="item color2">
<div class="item-left">
<h4>{{details.projectCapital || '-'}}<span>{{details.projectCapital ? '亿' : ''}}</span></h4>
<p>项目资本金</p>
</div>
<img class="img" src="@/assets/images/financing/icon2.png" />
</div>
</div>
<div class="content main3">
<div class="common-title">项目保障</div>
<div class="main3-box">
<p>
<label class="label">项目总收益/项目总债务融资本息(覆盖倍数)</label>
<span v-if="textList.econData_007">{{textList.econData_007}}</span>
<span v-else>--</span>
</p>
<p>
<label class="label">项目总收益/项目总地方债券融资本息</label>
<span v-if="textList.econData_008">{{textList.econData_008}}</span>
<span v-else>--</span>
</p>
<p>
<label class="label">项目总收益/项目总投资</label>
<span v-if="textList.econData_009">{{textList.econData_009}}</span>
<span v-else>--</span>
</p>
<p>
<label class="label">项目总收益/项目总地方债券融资本金</label>
<span v-if="textList.econData_010">{{textList.econData_010}}</span>
<span v-else>--</span>
</p>
<p>
<label class="label">项目总收益/项目总债务融资本金</label>
<span v-if="textList.econData_011">{{textList.econData_011}}</span>
<span v-else>--</span>
</p>
<p>
<label class="label">项目预测总收益</label>
<span v-if="textList.projectForecastTotalRevenue">{{textList.projectForecastTotalRevenue}}亿元</span>
<span v-else>--</span>
</p>
<div class="item color3">
<div class="item-left">
<h4>{{details.specialBondFinancing || '-'}}<span>{{details.specialBondFinancing ? '亿' : ''}}</span></h4>
<p>专项债融资</p>
</div>
<img class="img" src="@/assets/images/financing/icon3.png" />
</div>
</div>
<div class="content main4">
<div class="common-title">项目当事人</div>
<div class="main4-box">
<label class="label">项目主体</label>
<span>
<router-link v-if="textList.projectEntity" :to="textList.projectEntityUipId?'/enterprise/' + encodeStr(textList.projectEntityId) :'/company/' + encodeStr(textList.projectEntityId) " tag="a" class="list-titel-a blue" v-html="textList.projectEntity"></router-link>
<template v-else>--</template>
</span>
<label class="label">主管部门</label>
<span>{{textList.chargeDepartment||'--'}}</span>
<label class="label">实施单位</label>
<span>
<router-link v-if="textList.piu" :to="textList.piuUipId?'/enterprise/' +encodeStr(textList.piuId):'/company/' + encodeStr(textList.piuId) " tag="a" class="list-titel-a blue" v-html="textList.piu"></router-link>
<template v-else>--</template>
</span>
<div class="item color4">
<div class="item-left">
<h4>{{details.specialBondCapital || '-'}}<span>{{details.specialBondCapital ? '亿' : ''}}</span></h4>
<p>专项债用作资本金</p>
</div>
<img class="img" src="@/assets/images/financing/icon4.png" />
</div>
</div>
<div class="content main5">
<div class="common-title">专项债</div>
<div class="table-item">
<el-table :data="tableData" element-loading-text="Loading" border fit highlight-current-row>
<el-table-column prop="name" label="债券简称">
<template slot-scope="scope">
{{ scope.row.bondAbbreviation}}
</template>
</el-table-column>
<el-table-column prop="tenderDate" label="招标日期" width="220" />
<el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" />
<el-table-column prop="isUsedProjectScale" label="用于项目规模(亿)" width="260" />
<el-table-column label="是否资本金" width="200">
<template slot-scope="scope">
<span v-if="scope.row.isUsedCapital==1"></span>
<span v-else-if="scope.row.isUsedCapital==2"></span>
<span v-else>--</span>
</template>
</el-table-column>
</el-table>
<div class="pagination clearfix" v-show="total>0">
<el-pagination background :page-size="pageSize" :current-page="pageNum"
@current-change="handleCurrentChange" layout="prev, pager, next" :total="total">
</el-pagination>
</div>
</div>
<div class="list">
<div class="item color4">
<div class="item-left">
<h4>{{details.otherFunds || '-'}}<span>{{details.otherFunds ? '亿' : ''}}</span></h4>
<p>其他资金</p>
</div>
<img class="img" src="@/assets/images/financing/icon5.png" />
</div>
<div class="item color3">
<div class="item-left">
<h4>{{details.specialBondFinancingAmount || '-'}}<span>{{details.specialBondFinancingAmount ? '亿' : ''}} / {{details.specialBondIssueNumber || '-'}}{{details.specialBondIssueNumber ? '只' : ''}}</span></h4>
<p>专项债融资额/专项债只数</p>
</div>
<img class="img" src="@/assets/images/financing/icon6.png" />
</div>
<div class="item color4">
<div class="item-left">
<h4>{{details.otherFinancing || '-'}}<span>{{details.otherFinancing ? '亿' : ''}}</span></h4>
<p>其他融资</p>
</div>
<img class="img" src="@/assets/images/financing/icon7.png" />
</div>
<div class="item color2">
<div class="item-left">
<h4>{{details.govSupportFunds || '-'}}<span>{{details.govSupportFunds ? '亿' : ''}}</span></h4>
<p>政府安排资金</p>
</div>
<img class="img" src="@/assets/images/financing/icon8.png" />
</div>
</div>
</div>
</div>
<div class="content main3">
<div class="common-title">项目保障</div>
<div class="main3-box">
<p>
<label class="label">项目总收益/项目总债务融资本息(覆盖倍数)</label>
<span>{{details.econData007 || '-'}}{{details.econData007 ? '倍' : ''}}</span>
</p>
<p>
<label class="label">项目总收益/项目总地方债券融资本息</label>
<span>{{details.econData008 || '-'}}{{details.econData008 ? '倍' : ''}}</span>
</p>
<p>
<label class="label">项目总收益/项目总投资</label>
<span>{{details.econData009 || '-'}}{{details.econData009 ? '倍' : ''}}</span>
</p>
<p>
<label class="label">项目总收益/项目总地方债券融资本金</label>
<span>{{details.econData010 || '-'}}{{details.econData010 ? '倍' : ''}}</span>
</p>
<p>
<label class="label">项目总收益/项目总债务融资本金</label>
<span>{{details.econData011 || '-'}}{{details.econData011 ? '倍' : ''}}</span>
</p>
<p>
<label class="label">项目预测总收益</label>
<span>{{details.projectForecastTotalRevenue || '-'}}{{details.projectForecastTotalRevenue ? '亿' : ''}}</span>
</p>
</div>
</div>
<div class="content main4">
<div class="common-title">项目当事人</div>
<div class="main4-box">
<label class="label">项目主体</label>
<span>{{details.projectEntity || '-'}}</span>
<label class="label">主管部门</label>
<span>{{details.chargeDepartment || '-'}}</span>
<label class="label">实施单位</label>
<span>{{details.piu || '-'}}</span>
</div>
</div>
<div class="content main5">
<div class="common-title">专项债</div>
<div class="table-item">
<el-table
:data="tableData"
element-loading-text="Loading"
border
fit
highlight-current-row
>
<el-table-column prop="bondAbbreviation" label="债券简称">
<!--<template slot-scope="scope">-->
<!--<router-link :to="'/macro/financing/details/'+ scope.row.id" tag="a" class="a-link">{{ scope.row.bondAbbreviation}}</router-link>-->
<!--</template>-->
</el-table-column>
<el-table-column label="招标日期" width="220">
<template slot-scope="scope">
{{formatDate(scope.row.tenderDate)}}
</template>
</el-table-column>
<el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" :formatter="formatStatus"/>
<el-table-column prop="isUsedProjectScale" label="用于项目规模(亿)" width="260" :formatter="formatStatus"/>
<el-table-column prop="isUsedCapital" label="是否资本金" width="200" :formatter="formatStatus"/>
</el-table>
</div>
</div>
</div>
</template>
<script>
import {
encodeStr
} from "@/assets/js/common.js"
import api from '@/api/radar/radar.js';
export default {
name: 'debtProjectDetails',
data() {
return {
encodeStr,
id: '',
tableData: [],
"pageNum": 1,
"pageSize": 10,
total: 0,
textList: {}
}
},
created() {
this.id = this.$route.params.id;
this.specialDebtPage();
this.specialDebtProjectDetail();
},
methods: {
specialDebtProjectDetail() {
api.specialDebtProjectDetail({
id: this.id
}).then(res => {
// console.log(res);
this.textList = res.data;
console.log(this.textList);
}).catch(error => {
});
},
handleCurrentChange(pageNum) {
this.pageNum = pageNum;
this.search(pageNum, this.pageSize);
},
specialDebtPage(pageNum, pageSize) {
if (!pageNum) {
this.pageNum = 1;
}
if (!pageSize) {
this.pageSize = 20;
}
var data = {
id: this.id,
pageNum: this.pageNum,
pageSize: this.pageSize
}
api.specialDebtPage(data).then(res => {
// console.log(res);
this.tableData = res.rows;
this.total = res.total;
console.log(this.tableData);
}).catch(error => {
});
}
}
</template>
<script>
import { details,bondPage } from '@/api/macro/macro'
export default {
name: 'debtProjectDetails',
data() {
return {
id:'',
tableData:[],
details:{},
tableLoading: false,
pageIndex: 1,
pageSize: 10,
tableDataTotal: 1,
}
},
created() {
this.id=this.$route.params.id;
this.getDetails()
},
methods: {
getDetails(){
details({id:this.id}).then(res => {
this.details=res.data;
this.getData()
})
},
getData(){
// const params = { pageNum: this.pageIndex, pageSize: this.pageSize,specialBondUuid:'2e59fca0-21a6-47db-975d-5481e1c52f45_74'}
const params = { pageNum: this.pageIndex, pageSize: this.pageSize,specialBondUuid:this.details.specialBondUuid}
bondPage(params).then(res => {
this.tableData=res.data.list;
this.tableDataTotal=res.data.totalCount;
})
},
formatDate(cellValue) {
if (cellValue == null || cellValue == "") return "";
var date = new Date(cellValue)
var year = date.getFullYear()
var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
// var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
// var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
// var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
// return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
return year + '-' + month + '-' + day
},
formatStatus: function(row, column, cellValue) {
return cellValue? cellValue : '-'
},
}
</script>
<style lang="scss" scoped>
.app-container {
padding: 0;
}
</script>
<style lang="scss" scoped>
.app-container{
padding: 0;
}
.qyzx-details {
.tab {
font-size: 12px;
color: #A1A1A1;
span {
color: #232323;
}
.qyzx-details{
.tab{
font-size: 12px;
color:#A1A1A1;
span{
color:#232323;
}
.content {
margin-top: 16px;
background: #FFFFFF;
padding: 16px;
border-radius: 4px;
}
.content{
margin-top: 16px;
background: #FFFFFF;
padding: 16px;
border-radius: 4px;
}
.common-title{
margin-bottom: 8px;
}
.main1{
.cont-title{
color: #232323;
font-size: 16px;
line-height: 28px;
font-weight: bold;
margin-bottom: 8px;
text-align: left;
img{
width: 28px;
height: 28px;
// margin-bottom: -9px;
margin-right: 17px;
}
}
.common-title {
margin-bottom: 8px;
p{
color: #3D3D3D;
font-size: 14px;
margin: 0;
}
.main1 {
.title {
display: inline-flex;
color: #232323;
font-size: 16px;
line-height: 28px;
font-weight: bold;
margin-bottom: 8px;
text-align: left;
padding: 0px;
border: none;
img {
width: 28px;
height: 28px;
margin-bottom: -9px;
margin-right: 17px;
}
}
p {
color: #3D3D3D;
font-size: 14px;
margin: 0;
}
}
.main2{
.list{
display: flex;
margin: 16px 0;
}
.main2 {
.list {
display: flex;
margin: 16px 0;
}
.item {
width: 24.5%;
margin-right: 16px;
height: 100px;
display: flex;
justify-content: space-between;
border-radius: 8px;
.item-left {
margin-left: 16px;
margin-top: 24px;
h4 {
color: #232323;
font-size: 22px;
line-height: 22px;
font-weight: bold;
margin: 0;
span {
font-weight: 400;
margin-left: 4px;
font-size: 18px;
}
}
p {
margin: 0;
color: #3D3D3D;
font-size: 14px;
padding-top: 8px;
}
}
.img {
width: 56px;
height: 56px;
margin-top: 22px;
margin-right: 12px;
}
}
.color1 {
background: rgba(246, 190, 59, 0.08);
border: 1px solid rgba(246, 190, 59, 0.2);
}
.color2 {
background: rgba(148, 216, 196, 0.102);
border: 1px solid rgba(73, 187, 154, 0.1);
.item{
width: 24.5%;
margin-right: 16px;
height: 100px;
display: flex;
justify-content: space-between;
border-radius: 8px;
.item-left{
margin-left: 16px;
margin-top: 24px;
h4{
color: #232323;
font-size: 22px;
line-height: 22px;
font-weight: bold;
margin: 0;
span{
font-weight: 400;
margin-left: 4px;
font-size: 18px;
}
}
.color3 {
background: rgba(57, 100, 199, 0.06);
border: 1px solid rgba(57, 100, 199, 0.1);
}
.color4 {
background: rgba(0, 129, 255, 0.04);
border: 1px solid rgba(0, 129, 255, 0.1);
p{
margin: 0;
color: #3D3D3D;
font-size: 14px;
padding-top: 8px;
}
}
.img{
width: 56px;
height: 56px;
margin-top: 22px;
margin-right: 12px;
}
}
.main3 {
.main3-box {
margin-top: 22px;
p {
margin: 0;
display: inline-flex;
width: 50%;
border-top: 1px solid #E6E9F0;
border-left: 1px solid #E6E9F0;
}
p:nth-child(2n) {
border-right: 1px solid #E6E9F0;
}
p:nth-child(5) {
border-bottom: 1px solid #E6E9F0;
}
p:last-child {
border-bottom: 1px solid #E6E9F0;
}
.label {
width: 60%;
background: #F0F3FA;
display: inline-block;
height: 40px;
font-weight: 400;
border-right: 1px solid #E6E9F0;
line-height: 40px;
font-size: 12px;
color: rgba(35, 35, 35, 0.8);
padding-left: 12px;
}
span {
width: 40%;
display: inline-block;
height: 40px;
line-height: 40px;
padding-left: 12px;
font-size: 12px;
}
}
.color1{
background: rgba(246,190,59,0.08);
border: 1px solid rgba(246,190,59,0.2);
}
.main4 {
.main4-box {
margin-top: 22px;
display: flex;
.label {
width: 14%;
background: #F0F3FA;
border: 1px solid #E6E9F0;
display: inline-block;
height: 40px;
line-height: 40px;
font-size: 12px;
color: rgba(35, 35, 35, 0.8);
padding-left: 12px;
}
span {
width: 19%;
display: inline-block;
height: 40px;
line-height: 40px;
border-top: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0;
padding-left: 12px;
font-size: 12px;
.blue{
color: #0081FF;
}
}
span:last-child {
width: 20%;
border-right: 1px solid #E6E9F0;
}
}
.color2{
background: rgba(148,216,196,0.102);
border: 1px solid rgba(73,187,154,0.1);
}
.main5 {
.table-item {
margin-top: 22px;
.pagination {
padding: 14px;
.el-pagination {
float: right;
}
}
}
.color3{
background: rgba(57,100,199,0.06);
border: 1px solid rgba(57,100,199,0.1);
}
.color4{
background: rgba(0,129,255,0.04);
border: 1px solid rgba(0,129,255,0.1);
}
}
.main3{
.main3-box{
margin-top: 22px;
p{
margin: 0;
display: inline-block;
width: 50%;
border-top: 1px solid #E6E9F0;
border-left: 1px solid #E6E9F0;
}
p:nth-child(2n){
border-right: 1px solid #E6E9F0;
}
p:nth-child(5){
border-bottom: 1px solid #E6E9F0;
}
p:last-child{
border-bottom: 1px solid #E6E9F0;
}
.label{
width: 60%;
background: #F0F3FA;
display: inline-block;
height: 40px;
font-weight: 400;
border-right: 1px solid #E6E9F0;
line-height: 40px;
font-size: 12px;
color: rgba(35,35,35,0.8);
padding-left: 12px;
}
span{
width: 40%;
display: inline-block;
height: 40px;
line-height: 40px;
padding-left: 12px;
font-size: 12px;
}
}
}
.main4{
.main4-box{
margin-top: 22px;
.label{
width: 14%;
background: #F0F3FA;
border: 1px solid #E6E9F0;
display: inline-block;
height: 40px;
line-height: 40px;
font-size: 12px;
color: rgba(35,35,35,0.8);
padding-left: 12px;
}
span{
width: 19%;
display: inline-block;
height: 40px;
line-height: 40px;
border-top: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0;
padding-left: 12px;
font-size: 12px;
}
span:last-child{
width: 20%;
border-right: 1px solid #E6E9F0;
}
}
}
.main5{
.table-item{
margin-top: 22px;
}
}
}
</style>
\ No newline at end of file
</style>
\ No newline at end of file
......@@ -196,4 +196,4 @@ export default {
}
}
};
</script>
\ No newline at end of file
</script>
......@@ -667,4 +667,4 @@ export default {
}
}
};
</script>
\ No newline at end of file
</script>
package com.dsk.system.domain.dsk.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 集团户相关查询条件实体类
*
* @author lcl
* @create 2023/8/7
*/
@Data
public class JskCombineSearchDto implements Serializable {
/**
* 集团id
*/
@NotNull(message = "集团id不能为空!")
private String combineId;
/**
* 筛选参数
*/
private String searchValue;
/**
* 集团层级
*/
private String combineMemberLevel;
/**
* 省id
*/
private List<Integer> provinceIds;
/**
* 市id
*/
private List<Integer> cityIds;
/**
* 区id
*/
private List<Integer> districtIds;
/**
* 最大金额
*/
private Integer maxAmount;
/**
* 最小金额
*/
private Integer minAmount;
/**
* 业务类型
*/
private String businessType;
/**
* 科技型企业类型
*/
private List<String> companyTypes;
/**
* 企业类型
*/
private String companyType;
/**
* 最大持股比例
*/
private Double maxStockPercent;
/**
* 最小持股比例
*/
private Double minStockPercent;
/**
* 中标时间(开始)
*/
private Date startBidTime;
/**
* 中标时间(结束)
*/
private Date endBidTime;
/**
* 业绩类型
*/
private List<String> boundTypes;
/**
* 项目类型
*/
private List<String> projectTypes;
/**
* 页码
*/
private Integer pageNum;
/**
* 每页条数
*/
private Integer pageSize;
}
......@@ -415,22 +415,34 @@ public class EnterpriseService {
if (!ObjectUtils.isEmpty(map.get("data"))) {
result.put("companyId", MapUtil.getInt(BeanUtil.beanToMap(map.get("data")), "jskEid"));
}
if (!ObjectUtil.isEmpty(result.get("companyId"))) {
R res = this.getUipIdByCid(Collections.singletonList(MapUtils.getInteger(result,"companyId")));
result.put("uipId", this.getUipIdByCompanyNameOrCompanyId(companyName, MapUtils.getInteger(result, "companyId")));
} catch (Exception e) {
log.debug("获取企业id错误!error:{}", e.getMessage());
}
return result;
}
//企业uipId
public String getUipIdByCompanyNameOrCompanyId(String companyName, Integer companyId) {
try {
String uipId = null;
if (!ObjectUtil.isEmpty(companyId)) {
R res = this.getUipIdByCid(Collections.singletonList(companyId));
if (!ObjectUtils.isEmpty(res.getData())) {
List<Map<String, Object>> data = (List<Map<String, Object>>) res.getData();
result.put("uipId", MapUtil.getStr(BeanUtil.beanToMap(data.get((0))), "uipId"));
uipId = MapUtil.getStr(BeanUtil.beanToMap(data.get((0))), "uipId");
}
}
if (ObjectUtil.isEmpty(result.get("uipId"))) {
if (ObjectUtil.isEmpty(uipId)) {
R res = this.getUipId(companyName);
if (!ObjectUtils.isEmpty(res.getData())) {
result.put("uipId", MapUtil.getStr(BeanUtil.beanToMap(res.getData()), "uipId"));
uipId = MapUtil.getStr(BeanUtil.beanToMap(res.getData()), "uipId");
}
}
return uipId;
} catch (Exception e) {
log.debug("获取企业id错误!error:{}", e.getMessage());
log.debug("获取企业uipId错误!error:{}", e.getMessage());
}
return result;
return null;
}
}
package com.dsk.system.dskService;
import cn.hutool.core.bean.BeanException;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.system.domain.dsk.dto.JskCombineSearchDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.apache.ibatis.util.MapUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.List;
import java.util.Map;
/**
* @author lcl
* @create 2023/8/7
*/
@Slf4j
@Service
public class JskCombineInfoService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
private EnterpriseService enterpriseService;
public TableDataInfo memberList(JskCombineSearchDto dto) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/combine/memberList", BeanUtil.beanToMap(dto, false, false));
return dskOpenApiUtil.responsePage(map);
}
public R groupMemberCount(JskCombineSearchDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/combine/group/memberCount", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, R.class);
}
public TableDataInfo businessList(JskCombineSearchDto dto) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/combine/businessList", BeanUtil.beanToMap(dto, false, false));
if (!ObjectUtils.isEmpty(map.get("data"))) {
Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
if (!ObjectUtils.isEmpty(data.get("list"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) data.get("list");
list.parallelStream().forEach(res -> {
Integer companyId = MapUtils.getInteger(res, "companyId");
String companyName = MapUtils.getString(res, "companyName");
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
Integer projectUnitId = MapUtils.getInteger(res, "projectUnitId");
String projectUnit = MapUtils.getString(res, "projectUnit");
res.put("projectUnitUipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(projectUnit, projectUnitId));
});
}
}
return dskOpenApiUtil.responsePage(map);
}
}
......@@ -80,13 +80,38 @@ public class MarketAnalysisService {
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult countLandMarketByType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countLandMarketByType", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult countBidGroupByProvince(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countBidGroupByProvince", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult countLandMarketByType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countLandMarketByType", object);
public AjaxResult countBidByType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countBidByType", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult rangeBidMoney(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/rangeBidMoney", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult rangeBidFiveYears() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/rangeBidFiveYears", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult lowerRateByYear(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/lowerRateByYear", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult lowerRangeTenderType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/lowerRangeTenderType", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
......@@ -148,7 +148,9 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
BusinessLikeProjectNameListVo vo = new BusinessLikeProjectNameListVo();
vo.setProjectName(StringUtils.markInRed(MapUtil.getStr(map, "projectName"), dto.getProjectName()));
vo.setCompanyName(MapUtil.getStr(map, "tenderee"));
vo.setInvestmentAmount(Double.parseDouble(MapUtil.getStr(map, "projectContractAmount")));
if (null!=map.get("projectContractAmount")&&ObjectUtil.isNotEmpty(map.get("projectContractAmount"))){
vo.setInvestmentAmount(MapUtil.getDouble(map, "projectContractAmount"));
}
vo.setProjectType(MapUtil.getStr(map, "projectType"));
vo.setProjectCategory(MapUtil.getStr(map, "projectPurposes"));
vos.add(vo);
......@@ -156,7 +158,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
}
}
} catch (Exception e) {
log.error("模糊查询项目名称调用失败!");
log.error("模糊查询项目名称调用失败!",e);
}
return vos;
......
......@@ -83,25 +83,7 @@ public class CustomerServiceImpl implements ICustomerService {
@Transactional(rollbackFor = Exception.class)
public boolean add(Customer customer) {
dealWithcustomerData(customer);
if (ObjectUtils.isEmpty(customer.getUipId())) {
try {
List<Integer> list = new ArrayList<>();
list.add(customer.getCompanyId());
R res = enterpriseService.getUipIdByCid(list);
if (!ObjectUtils.isEmpty(res.getData())) {
List<Map<String, Object>> data = (List<Map<String, Object>>) res.getData();
customer.setUipId(MapUtil.getStr(BeanUtil.beanToMap(data.get((0))), "uipId"));
}
if (ObjectUtils.isEmpty(customer.getUipId())) {
res = enterpriseService.getUipId(customer.getCompanyName());
if (!ObjectUtils.isEmpty(res.getData())) {
customer.setUipId(MapUtil.getStr(BeanUtil.beanToMap(res.getData()), "uipId"));
}
}
} catch (Exception e) {
log.error("获取城投平台企业id错误!error:{}", e.getMessage());
}
}
customer.setUipId(enterpriseService.getUipIdByCompanyNameOrCompanyId(customer.getCompanyName(), customer.getCompanyId()));
Long userId = SecurityUtils.getUserId();
customer.setCreateId(userId);
customer.setUpdateId(userId);
......
......@@ -40,29 +40,25 @@ public class EconomicServiceImpl implements EconomicService {
*/
private static final Integer TYPE = 1;
/**
* 默认排序
*/
private static final String FIELD = "gdp";
private static final String ORDER = "desc";
@Override
public AjaxResult nationalPage(OpRegionalEconomicDataV1PageDto dto) {
if (ObjectUtil.isEmpty(dto.getYear())) {
dto.setYear(DateUtils.getYear() - 1);
}
String redisKey = CacheConstants.DATA_ECONOMIC + dto.getYear() + dto.getProvinceIds() + dto.getCityIds() + dto.getAreaIds();
Map<String, Object> cacheMap = redisCache.getCacheObject(redisKey);
if (ObjectUtil.isNotEmpty(cacheMap)) {
return BeanUtil.toBean(cacheMap, AjaxResult.class);
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/national/nationalPage", BeanUtil.beanToMap(dto, false, false));
Integer code = MapUtils.getInteger(map, "code", 300);
if (!code.equals(HttpStatus.OK.value())) {
throw new RuntimeException();
}
Map data = MapUtils.getMap(map, "data", null);
List<Object> list = CommonUtils.assertAsArray(MapUtils.getObject(data, "list", ""));
if (ObjectUtil.isNotEmpty(list) && TYPE.equals(dto.getType())) {
if (ObjectUtil.isEmpty(dto.getProvinceIds()) && ObjectUtil.isEmpty(dto.getCityIds()) && ObjectUtil.isEmpty(dto.getAreaIds())) {
redisCache.setCacheObject(redisKey, map);
}
}
return BeanUtil.toBean(map, AjaxResult.class);
}
......
......@@ -73,7 +73,7 @@ public class RegionalEnterprisesServiceImpl implements RegionalEnterprisesServic
List<Map<String, Object>> companyNameList = (List<Map<String, Object>>)MapUtils.getObject(topSupplierMap, "data", null);
for (Map<String, Object> comMap : companyNameList) {
Integer id = MapUtils.getInteger(comMap, "id", 0);
if (id.equals(topCustomerId)) {
if (id.equals(topSupplierId)) {
String companyName = MapUtils.getString(comMap, "companyName", null);
companyMap.put("topSupplier", companyName);
}
......
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