Commit d50433f3 authored by danfuman's avatar danfuman

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

parents 12c742b0 3c18fc55
......@@ -48,6 +48,14 @@ public class BusinessOverviewController extends BaseController {
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)));
}
/**
* 公招项目地区统计
*
......
......@@ -26,6 +26,12 @@ public class EnterpriseBussinessClientProjectPageBody extends BasePage {
@NotNull(message = "企业id不能为空")
private Integer companyId;
/**
* 客户企业
*/
@NotNull(message = "企业不能为空")
private String companyName;
/**
* 查询关键字
*/
......@@ -33,7 +39,7 @@ public class EnterpriseBussinessClientProjectPageBody extends BasePage {
public boolean isVaildCid() {
return 0 == cid || 0 == companyId;
return 0 == cid;
}
/**
......
......@@ -26,6 +26,12 @@ public class EnterpriseBussinessSupplierProjectPageBody extends BasePage {
@NotNull(message = "企业id不能为空")
private Integer companyId;
/**
* 供应商企业
*/
@NotNull(message = "企业不能为空")
private Integer companyName;
/**
* 查询关键字
*/
......@@ -33,7 +39,7 @@ public class EnterpriseBussinessSupplierProjectPageBody extends BasePage {
public boolean isVaildCid() {
return 0 == cid || 0 == companyId;
return 0 == cid;
}
......
......@@ -88,3 +88,11 @@ export function getSelect(data) {
data: data
})
}
// 数据来源链接
export function bidWinMergeDetail(data) {
return request({
url: '/enterpriseBussiness/bidWinMergeDetail',
method: 'post',
data: data
})
}
......@@ -231,7 +231,7 @@ export function getStatistics(param) {
//储备项目统计
export function getCount(param) {
return request({
url: '/business/overview/type/analyze/'+param,
url: '/business/overview/category/analyze/'+param,
method: 'get',
params:param,
})
......
......@@ -45,7 +45,7 @@
<!-- 输入框 -->
<template v-if="form.type==3">
<div class="cooperate-name" :id="'detailFocus'+i">
<el-input clearable @focus="clickFocus('detailFocus'+i)" @blur="clickFocus('detailFocus'+i)" v-model="form.value" :placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input>
<el-input clearable @clear="changeSelect" @focus="clickFocus('detailFocus'+i)" @blur="clickFocus('detailFocus'+i)" v-model="form.value" :placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input>
<span @click="changeSelect">搜索</span>
</div>
</template>
......
......@@ -31,7 +31,7 @@
</template>
<script>
import { financial } from '@/api/detail/party-a/financial'
export default {
name: 'Sidebar',
props: {
......@@ -284,14 +284,18 @@ export default {
}
},
methods: {
financial(id){
financial({cid:String(id)}).then(res=>{
if(res.code==200&&!res.data){
this.sideRoute[1].disabled = true
}
})
},
handleOpen(key, keyPath) {
},
handleItem(item){
if(item.title=='企业速览'){
item.pathName = 'overview'
}
console.log(item)
this.sideRoute = this.defaultRoute
this.$emit("currentPath", item)
},
handleSearch(flag){
......
......@@ -31,7 +31,7 @@
:min-width="item.minWidth"
:align="item.align?item.align:'left'"
:fixed="item.fixed"
:sortable="item.sortable ? 'custom' : false"
:sortable="item.sortable ?item.sortable=='custom'? 'custom':true : false"
:resizable="false">
<template v-if="item.children&&item.children.length">
<el-table-column
......
......@@ -26,6 +26,7 @@
<template slot="sourceType" slot-scope="scope">
<div class="flex-box">
<div class="a-link" @click="linkTo(scope)" v-if="scope.row.sourceId&&scope.row.sourceType=='中标业绩'" v-html="scope.row.sourceType" style="cursor: pointer"></div>
<span v-else-if="scope.row.sourceId" @click="linkTo1(scope)" class="a-link" style="cursor: pointer" v-html="scope.row.sourceType"></span>
<span v-else v-html="scope.row.sourceType || '--'"></span>
</div>
</template>
......@@ -36,7 +37,7 @@
<script>
import mixin from '../../mixins/mixin'
import {clientProjectPage,getSelect} from '@/api/detail/party-a/dealings'
import {clientProjectPage,getSelect,bidWinMergeDetail} from '@/api/detail/party-a/dealings'
import HeadDetailForm from "../../component/HeadDetailForm"
export default {
......@@ -55,19 +56,20 @@ export default {
queryParams: {
cid: this.companyId,
companyId: this.data.companyId,
companyName: this.data.companyName,
pageNum: 1,
pageSize: 20
},
formData: [
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []},
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []},
{ type: 6, fieldName: 'money', value: '', placeholder: '合同金额', startMoney: 'amountMin', endMoney: 'amountMax' },
{ type: 6, fieldName: 'money', value: '', placeholder: '合同金额', startMoney: 'amountStart', endMoney: 'amountEnd' },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目/工程名称查询', options: []},
],
forData: [
{label: '项目名称', prop: 'projectName', fixed: true},
{label: '公布时间', prop: 'time', width: '100'},
{label: '本次合同金额(万元)', prop: 'amount', width: '160'},
{label: '公布时间', prop: 'time', width: '120',sortable:true},
{label: '本次合同金额(万元)', prop: 'amount', width: '180',sortable:true},
{label: '项目类型', prop: 'projectTtype', width: '130'},
{label: '数据来源', prop: 'sourceType', width: '90', slot: true}
],
......@@ -124,6 +126,13 @@ export default {
this.drawer = false
this.$router.push(`/biddetail/${scope.row.sourceId}`)
},
linkTo1(scope){
bidWinMergeDetail({sourceId:scope.row.sourceId}).then(res=>{
if(res.data&&res.data.sourceUrl){
window.open(res.data.sourceUrl, "_blank")
}
})
},
cancel() {
this.$emit('cancel')
}
......
......@@ -26,6 +26,7 @@
<template slot="sourceType" slot-scope="scope">
<div class="flex-box">
<div class="a-link" @click="linkTo(scope)" v-if="scope.row.sourceId&&scope.row.sourceType=='中标业绩'" v-html="scope.row.sourceType" style="cursor: pointer"></div>
<span v-else-if="scope.row.sourceId" @click="linkTo1(scope)" class="a-link" style="cursor: pointer" v-html="scope.row.sourceType"></span>
<span v-else v-html="scope.row.sourceType || '--'"></span>
</div>
</template>
......@@ -36,7 +37,7 @@
<script>
import mixin from '../../mixins/mixin'
import { supplierProjectPage,getSelect } from '@/api/detail/party-a/dealings'
import { supplierProjectPage,getSelect,bidWinMergeDetail } from '@/api/detail/party-a/dealings'
import HeadDetailForm from "../../component/HeadDetailForm"
export default {
......@@ -54,6 +55,7 @@ export default {
drawer: false,
queryParams: {
companyId: this.data.companyId,
companyName: this.data.companyName,
cid: this.companyId,
pageNum: 1,
pageSize: 20
......@@ -61,13 +63,13 @@ export default {
formData: [
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []},
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []},
{ type: 6, fieldName: 'money', value: '', placeholder: '合同金额', startMoney: 'amountMin', endMoney: 'amountMax' },
{ type: 6, fieldName: 'money', value: '', placeholder: '合同金额', startMoney: 'amountStart', endMoney: 'amountEnd' },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: [], width: 260},
],
forData: [
{label: '项目名称', prop: 'projectName', fixed: true},
{label: '公布时间', prop: 'time', width: '100'},
{label: '本次合同金额(万元)', prop: 'amount', width: '160'},
{label: '公布时间', prop: 'time', width: '120',sortable:true},
{label: '本次合同金额(万元)', prop: 'amount', width: '180',sortable:true},
{label: '项目类型', prop: 'projectType', width: '130'},
{label: '数据来源', prop: 'sourceType', width: '90', slot: true}
],
......@@ -124,6 +126,13 @@ export default {
this.drawer = false
this.$router.push(`/biddetail/${scope.row.sourceId}`)
},
linkTo1(scope){
bidWinMergeDetail({sourceId:scope.row.sourceId}).then(res=>{
if(res.data&&res.data.sourceUrl){
window.open(res.data.sourceUrl, "_blank")
}
})
},
cancel() {
this.$emit('cancel')
}
......
......@@ -22,7 +22,7 @@
@sort-change="sortChange"
>
<template slot="companyName" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.projectUnitId)}`:`/company/${encodeStr(scope.row.projectUnitId)}`" tag="a" class="a-link" v-if="scope.row.projectUnitId&&scope.row.companyName" v-html="scope.row.companyName"></router-link>
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div>
</template>
<!-- <template slot="projectAllName" slot-scope="scope">
......
......@@ -242,6 +242,7 @@ export default {
this.getStatistic();
this.handleQuery();
this.association(this.$route.query.customerId)
this.$refs.sidebar.financial(data);
}
},
async getStatistic(){
......
......@@ -59,7 +59,11 @@
</el-table-column>
<el-table-column prop="investStartDate" label="成立日期"></el-table-column>
<el-table-column prop="stockPercentage" label="股权占比"></el-table-column>
<el-table-column prop="shouldCapi" label="认缴出资额(万元)"></el-table-column>
<el-table-column prop="shouldCapi" label="认缴出资额(万元)">
<template slot-scope="scope">
<span>{{scope.row.shouldCapi>0?scope.row.shouldCapi:'--'}}</span>
</template>
</el-table-column>
</el-table>
<no-data v-if="activeName=='second'&&shipData.length<1"/>
<el-table :data="affiliatesData" border style="width: 100%" v-show="activeName=='third'">
......
......@@ -809,6 +809,10 @@
label: '不限'
},
{
value: '2022',
label: '2022A级纳税人'
},
{
value: '2021',
label: '2021A级纳税人'
......
......@@ -129,7 +129,7 @@
style="width: 100%"
>
<el-table-column
prop="projectType"
prop="projectCategory"
label="项目类型"></el-table-column>
<el-table-column
prop="businessCount"
......@@ -183,7 +183,7 @@
style="width: 100%"
>
<el-table-column
prop="projectType"
prop="projectCategory"
label="项目类型"></el-table-column>
<el-table-column
prop="businessCount"
......@@ -517,7 +517,7 @@ export default {
let barData1 = [],xAxisData1 = [],lineData1=[];
this.viewData1.length>0&&this.viewData1.map(item=>{
barData1.push(item.businessCount)
xAxisData1.push(item.projectType)
xAxisData1.push(item.projectCategory)
lineData1.push(item.totalAmount)
})
let option1 = {
......@@ -642,7 +642,7 @@ export default {
let barData1 = [],xAxisData1 = [],lineData1=[];
this.viewData3.length>0&&this.viewData3.map(item=>{
barData1.push(item.businessCount)
xAxisData1.push(item.projectType)
xAxisData1.push(item.projectCategory)
lineData1.push(item.totalAmount)
})
let option3 = {
......
......@@ -97,7 +97,7 @@
<label class="label">土地级别</label>
<span>{{textList.landLevel||"--"}}</span>
<label class="label">成交价格(万元)</label>
<span>{{textList.transactionPrice||"--"}}</span>
<span>{{textList.transactionPrice>0?textList.transactionPrice:'--'}}</span>
</p>
<p>
<label class="label">土地使用权人</label>
......
......@@ -16,6 +16,10 @@ public class BusinessAnalyzeVo implements Serializable {
* 项目类型
*/
private String projectType;
/**
* 项目类别
*/
private String projectCategory;
/**
* 资金来源
*/
......
......@@ -84,12 +84,22 @@ public class EnterpriseBussinessService {
dataMap.put("sourceList", null);
String source = MapUtils.getString(dataMap, "source");
if (ObjectUtil.isNotEmpty(source)) {
List<EnterpriseBussinessVo> enterpriseSource = new ArrayList<>();
List<EnterpriseBussinessVo> enterpriseBussinessVoList = JSONUtil.toList(source, EnterpriseBussinessVo.class);
if (ObjectUtil.isNotEmpty(enterpriseBussinessVoList.get(0))) {
EnterpriseBussinessVo vo = enterpriseBussinessVoList.get(0);
dataMap.put("sourceId", vo.getSource_id());
dataMap.put("sourceType", vo.getSource_type());
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 {
dataMap.put("sourceType", null);
String source = MapUtils.getString(dataMap, "source");
if (ObjectUtil.isNotEmpty(source)) {
List<EnterpriseBussinessVo> enterpriseSource = new ArrayList<>();
List<EnterpriseBussinessVo> enterpriseBussinessVoList = JSONUtil.toList(source, EnterpriseBussinessVo.class);
if (ObjectUtil.isNotEmpty(enterpriseBussinessVoList.get(0))) {
EnterpriseBussinessVo vo = enterpriseBussinessVoList.get(0);
dataMap.put("sourceId", vo.getSource_id());
dataMap.put("sourceType", vo.getSource_type());
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);
}
}
}
}
......
......@@ -116,4 +116,6 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo> {
List<BusinessAnalyzeVo> selectTypeAnalyze(BusinessSearchDto dto);
List<BusinessAnalyzeVo> selectCategoryAnalyze(BusinessSearchDto dto);
}
......@@ -20,6 +20,8 @@ public interface IBusinessOverviewService {
List<BusinessAnalyzeVo> typeAnalyze(BusinessSearchDto dto);
List<BusinessAnalyzeVo> categoryAnalyze(BusinessSearchDto dto);
AjaxResult countGroupByProvince(JSONObject object);
AjaxResult rangByMoney(JSONObject object);
......
......@@ -60,6 +60,12 @@ public class BusinessOverviewServiceImpl implements IBusinessOverviewService {
return businessInfoMapper.selectTypeAnalyze(dto);
}
@Override
@DataScope(userAlias = "u",deptAlias = "d")
public List<BusinessAnalyzeVo> categoryAnalyze(BusinessSearchDto dto) {
return businessInfoMapper.selectCategoryAnalyze(dto);
}
@Override
public AjaxResult countGroupByProvince(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/project/countGroupByProvince", object);
......
......@@ -401,6 +401,17 @@
bi.project_type,count(bi.id) businessCount, ROUND(sum(bi.investment_amount), 4) totalAmount
<include refid="businessSearchSql"/>
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>
</mapper>
......@@ -123,13 +123,16 @@
</select>
<select id="selectCreditLevelGroup" resultType="java.util.Map">
select ct.* from (
select
ct.credit_level creditLevel, count(ct.credit_level) customerCount
ct.credit_level creditLevel, count(ct.customer_id) customerCount
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId}
where ctu.user_id = #{userId} and ct.credit_level is not null
group by ct.credit_level
order by ct.credit_level desc
) ct
left join sys_dict_data sdd on (sdd.dict_label = ct.creditLevel and sdd.dict_type = 'credit_level_type')
order by sdd.dict_sort asc
</select>
</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