Commit 81d84804 authored by MyName's avatar MyName
parents 79d43c33 5d0fd7eb
package com.dsk.web.controller.customer; package com.dsk.web.controller.customer;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.http.HttpException;
import com.dsk.common.annotation.Log;
import com.dsk.common.annotation.RepeatSubmit; import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.core.controller.BaseController; import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.SysRole;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.system.domain.customer.Customer; import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto; import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 客户相关 * 客户相关
...@@ -24,13 +40,15 @@ public class CustomerController extends BaseController { ...@@ -24,13 +40,15 @@ public class CustomerController extends BaseController {
@Autowired @Autowired
private ICustomerService baseService; private ICustomerService baseService;
@Autowired
private BusinessOpportunityRadarService opportunityRadarService;
/** /**
* 查询客户列表 * 查询客户列表
*/ */
@PreAuthorize("@ss.hasPermi('customer:list')") @PreAuthorize("@ss.hasPermi('customer:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo selectPageList(CustomerSearchDto dto){ public TableDataInfo selectPageList(CustomerSearchDto dto) {
startPage(); startPage();
return getDataTable(baseService.selectList(dto)); return getDataTable(baseService.selectList(dto));
} }
...@@ -40,7 +58,7 @@ public class CustomerController extends BaseController { ...@@ -40,7 +58,7 @@ public class CustomerController extends BaseController {
*/ */
@PreAuthorize("@ss.hasPermi('customer:info')") @PreAuthorize("@ss.hasPermi('customer:info')")
@GetMapping("/{customerId}") @GetMapping("/{customerId}")
public AjaxResult info(@PathVariable("customerId") String customerId){ public AjaxResult info(@PathVariable("customerId") String customerId) {
return AjaxResult.success(baseService.info(customerId)); return AjaxResult.success(baseService.info(customerId));
} }
...@@ -50,7 +68,7 @@ public class CustomerController extends BaseController { ...@@ -50,7 +68,7 @@ public class CustomerController extends BaseController {
@PreAuthorize("@ss.hasPermi('customer:add')") @PreAuthorize("@ss.hasPermi('customer:add')")
@PostMapping() @PostMapping()
@RepeatSubmit @RepeatSubmit
public AjaxResult add(@RequestBody Customer customer){ public AjaxResult add(@RequestBody Customer customer) {
return AjaxResult.success(baseService.add(customer)); return AjaxResult.success(baseService.add(customer));
} }
...@@ -60,7 +78,7 @@ public class CustomerController extends BaseController { ...@@ -60,7 +78,7 @@ public class CustomerController extends BaseController {
@PreAuthorize("@ss.hasPermi('customer:edit')") @PreAuthorize("@ss.hasPermi('customer:edit')")
@PutMapping() @PutMapping()
@RepeatSubmit @RepeatSubmit
public AjaxResult edit(@RequestBody Customer customer){ public AjaxResult edit(@RequestBody Customer customer) {
return AjaxResult.success(baseService.edit(customer)); return AjaxResult.success(baseService.edit(customer));
} }
...@@ -68,7 +86,7 @@ public class CustomerController extends BaseController { ...@@ -68,7 +86,7 @@ public class CustomerController extends BaseController {
* 获取个人客户列表 * 获取个人客户列表
*/ */
@GetMapping("/user/list") @GetMapping("/user/list")
public AjaxResult userList(){ public AjaxResult userList() {
return AjaxResult.success(baseService.selectUserList()); return AjaxResult.success(baseService.selectUserList());
} }
...@@ -77,9 +95,42 @@ public class CustomerController extends BaseController { ...@@ -77,9 +95,42 @@ public class CustomerController extends BaseController {
*/ */
// @PreAuthorize("@ss.hasPermi('customer:business:list')") // @PreAuthorize("@ss.hasPermi('customer:business:list')")
@GetMapping("/business/list") @GetMapping("/business/list")
public TableDataInfo businessList(CustomerBusinessSearchDto dto){ public TableDataInfo businessList(CustomerBusinessSearchDto dto) {
startPage(); startPage();
return getDataTable(baseService.selectBusinessList(dto)); return getDataTable(baseService.selectBusinessList(dto));
} }
@Log(title = "客户数据导入", businessType = BusinessType.IMPORT)
//@PreAuthorize("@ss.hasPermi('customer:importData')")
@PostMapping("/importData")
public AjaxResult importData(@RequestPart("file") MultipartFile file) throws Exception {
List<Customer> customerList = new ExcelUtil<>(Customer.class).importExcel(file.getInputStream(), 2);
List<String> resultList = new ArrayList<>();
for (Customer customer : customerList) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) {
continue;
}
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
if(ObjectUtils.isEmpty(map)){
throw new HttpException("远程调用匹配接口失败!");
}
Map<String, Object> obj = BeanUtil.beanToMap(map.get("data"));
if(!ObjectUtils.isEmpty(obj)){
customer.setCompanyId(MapUtil.getInt(obj,"jskEid"));
customer.setLegalPerson(MapUtil.getStr(obj,"legalPerson"));
customer.setRegisterCapital(MapUtil.getStr(obj,"registeredCapital"));
customer.setProvinceId(MapUtil.getInt(obj,"provinceId"));
customer.setCityId(MapUtil.getInt(obj,"cityId"));
customer.setDistrictId(MapUtil.getInt(obj,"districtId"));
customer.setRegisterAddress(MapUtil.getStr(obj,"domicile"));
customer.setCreditCode(MapUtil.getStr(obj,"creditCode"));
}
baseService.add(customer);
} catch (Exception e) {
resultList.add(customer.getCompanyName().concat(":").concat(e.getMessage()));
}
}
return AjaxResult.success(resultList);
}
} }
...@@ -58,4 +58,20 @@ public class BusinessOpportunityRadarController { ...@@ -58,4 +58,20 @@ public class BusinessOpportunityRadarController {
return opportunityRadarService.jskBidNewsPage(compose); return opportunityRadarService.jskBidNewsPage(compose);
} }
/*
* 专项债查询
*/
@RequestMapping("/bondProjectPage")
public AjaxResult bondProjectPage(@RequestBody ComposeQueryDto compose) {
return opportunityRadarService.bondProjectPage(compose);
}
/*
* 投标计划查询
*/
@RequestMapping("/jskBidPlanPage")
public AjaxResult jskBidPlanPage(@RequestBody ComposeQueryDto compose) {
return opportunityRadarService.jskBidPlanPage(compose);
}
} }
...@@ -3,15 +3,13 @@ package com.dsk.web.controller.search.controller; ...@@ -3,15 +3,13 @@ package com.dsk.web.controller.search.controller;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService; import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
/** /**
* 模糊查企业 * 查企业
* @author Administrator * @author Administrator
* *
*/ */
...@@ -24,11 +22,18 @@ public class CompanySearchController { ...@@ -24,11 +22,18 @@ public class CompanySearchController {
BusinessOpportunityRadarService opportunityRadarService; BusinessOpportunityRadarService opportunityRadarService;
/* /*
* 土地交易 * 模糊查询企业名称
*/ */
@RequestMapping("/index") @RequestMapping("/index")
public AjaxResult landMarketPage(@RequestBody ComposeQueryDto compose) { public AjaxResult landMarketPage(@RequestBody ComposeQueryDto compose) {
return opportunityRadarService.enterprisePage(compose); return opportunityRadarService.enterprisePage(compose);
} }
/*
* 完全匹配企业名称
*/
@GetMapping("/findByName/{keyword}")
public AjaxResult findByName(@PathVariable String keyword) {
return opportunityRadarService.enterpriseByName(keyword);
}
} }
package com.dsk.web.controller.search.macroMarket; package com.dsk.web.controller.search.macroMarket;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.system.domain.OpRegionalEconomicDataV1;
import com.dsk.system.service.EconomicService; import com.dsk.system.service.EconomicService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/** /**
* @ClassName EconomicController * @ClassName EconomicController
...@@ -28,8 +35,84 @@ public class EconomicController { ...@@ -28,8 +35,84 @@ public class EconomicController {
*@Author: Dgm *@Author: Dgm
*@date: 2023/5/18 10:29 *@date: 2023/5/18 10:29
*/ */
@GetMapping("/nationalPage") @PostMapping("/national/list")
public AjaxResult areaGroupByProvince() { public AjaxResult nationalList(@RequestBody OpRegionalEconomicDataV1Dto dto) {
return economicService.nationalPage(); // return economicService.nationalList(dto);
return new AjaxResult(HttpStatus.OK.value(), "", new OpRegionalEconomicDataV1());
}
/***
*@Description: 全国经济大全详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@GetMapping("/details/{id}")
public AjaxResult details(@PathVariable("id") Integer id) {
// return economicService.details(id);
return new AjaxResult(HttpStatus.OK.value(), "", new OpRegionalEconomicDataV1());
}
/***
*@Description: 地区经济-统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/statistics/regional")
public AjaxResult statisticsRegional(@RequestBody OpRegionalEconomicDataV1Dto dto) {
// return economicService.regional(dto);
Map<String, Object> map = BeanUtil.beanToMap(new OpRegionalEconomicDataV1(), false, false);
// 下属辖区
map.put("subordinateJurisdiction", 38);
// 城投平台
map.put("urbanInvestmentPlatform", 365);
// 城投平台授信余额
map.put("creditBalance", 666.66);
// 城投平台营收账款
map.put("accountsReceivable", 888.88);
return new AjaxResult(HttpStatus.OK.value(), "", map);
}
/***
*@Description: 地区经济-主要指标列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/list")
public AjaxResult regionalList(@RequestBody OpRegionalEconomicDataV1Dto dto) {
// return economicService.regionalList(dto);
List<OpRegionalEconomicDataV1> opRegionalEconomicDataV1List= new ArrayList<>(5);
OpRegionalEconomicDataV1 dataV1 = new OpRegionalEconomicDataV1();
dataV1.setProvince("重庆");
dataV1.setYear(2022);
OpRegionalEconomicDataV1 dataV2 = new OpRegionalEconomicDataV1();
dataV2.setProvince("重庆");
dataV2.setYear(2021);
OpRegionalEconomicDataV1 dataV3 = new OpRegionalEconomicDataV1();
dataV3.setProvince("重庆");
dataV3.setYear(2020);
OpRegionalEconomicDataV1 dataV4 = new OpRegionalEconomicDataV1();
dataV4.setProvince("重庆");
dataV4.setYear(2019);
OpRegionalEconomicDataV1 dataV5 = new OpRegionalEconomicDataV1();
dataV5.setProvince("重庆");
dataV5.setYear(2018);
opRegionalEconomicDataV1List.add(dataV1);
opRegionalEconomicDataV1List.add(dataV2);
opRegionalEconomicDataV1List.add(dataV3);
opRegionalEconomicDataV1List.add(dataV4);
opRegionalEconomicDataV1List.add(dataV5);
return new AjaxResult(HttpStatus.OK.value(), "", opRegionalEconomicDataV1List);
} }
} }
package com.dsk.web.controller.search.macroMarket;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.system.service.RegionalEnterprisesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName RegionalEnterprisesController
* @Description 区域企业
* @Author Dgm
* @Date 2023/5/24 16:20
* @Version
*/
@RestController
@RequestMapping(value="/enterprises")
public class RegionalEnterprisesController {
@Autowired
private RegionalEnterprisesService regionalEnterprisesService;
@PostMapping("regional/page")
public AjaxResult page(@RequestBody ComposeQueryDto compose) {
return regionalEnterprisesService.page(compose);
}
}
package com.dsk.web.controller.search.macroMarket;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.SpecialPurposeBondsDto;
import com.dsk.system.domain.SpecialBondInformationV1;
import com.dsk.system.domain.SpecialBondProjectsV1;
import com.dsk.system.service.SpecialPurposeBondsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @ClassName SpecialPurposeBondsController
* @Description 专项债项目
* @Author Dgm
* @Date 2023/5/18 10:09
* @Version 1.0.0
*/
@RestController
@RequestMapping(value ="/specialPurposeBonds")
public class SpecialPurposeBondsController {
@Autowired
private SpecialPurposeBondsService specialPurposeBondsService;
/***
*@Description: 专项债项目分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/projects/page")
public AjaxResult page() {
// return specialPurposeBondsService.page();
Map<String, Object> map = BeanUtil.beanToMap(new SpecialBondProjectsV1(), false, false);
return new AjaxResult(HttpStatus.OK.value(), "", map);
}
/***
*@Description: 专项债项目详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@GetMapping("/details/{id}")
public AjaxResult details(@PathVariable("id") String id) {
return specialPurposeBondsService.details(id);
}
/***
*@Description: 专项债-项目类别统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/bond/statistics")
public AjaxResult bondStatistics(@RequestBody SpecialPurposeBondsDto dto) {
// return specialPurposeBondsService.bondStatistics();
Map<String, Object> map = BeanUtil.beanToMap(new SpecialPurposeBondsDto(), false, false);
List<SpecialPurposeBondsDto> list = new ArrayList<>(4);
SpecialPurposeBondsDto one = new SpecialPurposeBondsDto();
one.setCount(3);
one.setProportion(55.55);
SpecialPurposeBondsDto two = new SpecialPurposeBondsDto();
two.setCount(8);
two.setProportion(0.12);
SpecialPurposeBondsDto three = new SpecialPurposeBondsDto();
three.setCount(1);
three.setProportion(33.33);
SpecialPurposeBondsDto four = new SpecialPurposeBondsDto();
four.setCount(5);
four.setProportion(11.11);
list.add(one);
list.add(two);
list.add(three);
list.add(four);
switch (dto.getField()) {
case "count": list = sortedCount(list, dto);
break;
case "totalInvestment": list = sortedTotalInvestment(list, dto);
break;
case "proportion": list = sortedProportion(list, dto);
break;
default:
break;
}
return new AjaxResult(HttpStatus.OK.value(), "", list);
}
/***
*@Description: 专项债分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/bond/page")
public AjaxResult bondPage() {
// return specialPurposeBondsService.bondPage();
Map<String, Object> map = BeanUtil.beanToMap(new SpecialBondInformationV1(), false, false);
return new AjaxResult(HttpStatus.OK.value(), "", map);
}
/***
*@Description: 项目数量
*@Param:
*@return: void
*@Author: Dgm
*@date: 2023/5/25 11:26
*/
public List<SpecialPurposeBondsDto> sortedCount(List<SpecialPurposeBondsDto> list, SpecialPurposeBondsDto dto) {
if ("desc".equals(dto.getOrder())) {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getCount).reversed()).collect(Collectors.toList());
} else {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getCount)).collect(Collectors.toList());
}
return list;
}
/***
*@Description: 金额
*@Param:
*@return: void
*@Author: Dgm
*@date: 2023/5/25 11:26
*/
public List<SpecialPurposeBondsDto> sortedTotalInvestment(List<SpecialPurposeBondsDto> list, SpecialPurposeBondsDto dto) {
if ("desc".equals(dto.getOrder())) {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getTotalInvestment).reversed()).collect(Collectors.toList());
} else {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getTotalInvestment)).collect(Collectors.toList());
}
return list;
}
/***
*@Description: 比例
*@Param:
*@return: void
*@Author: Dgm
*@date: 2023/5/25 11:26
*/
public List<SpecialPurposeBondsDto> sortedProportion(List<SpecialPurposeBondsDto> list, SpecialPurposeBondsDto dto) {
if ("desc".equals(dto.getOrder())) {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getProportion).reversed()).collect(Collectors.toList());
} else {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getProportion)).collect(Collectors.toList());
}
return list;
}
}
package com.dsk.web.controller.search.macroMarket;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.UrbanInvestmentPlatformDto;
import com.dsk.system.domain.OpUipFinancialData;
import com.dsk.system.service.UrbanInvestmentPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @ClassName UrbanInvestmentPlatformController
* @Description 城投平台
* @Author Dgm
* @Date 2023/5/18 10:09
* @Version 1.0.0
*/
@RestController
@RequestMapping(value ="/urbanInvestment")
public class UrbanInvestmentPlatformController {
@Autowired
private UrbanInvestmentPlatformService urbanInvestmentPlatformService;
/***
*@Description: 城投平台分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/page")
public AjaxResult page(@RequestBody UrbanInvestmentPlatformDto dto) {
// return urbanInvestmentPlatformService.page();
Map<String, Object> map = BeanUtil.beanToMap(new OpUipFinancialData(), false, false);
// 招标
map.put("biddingAnnouncement", 11);
// 供应商
map.put("supplier", 33);
// 土地
map.put("landInfo", 66);
return new AjaxResult(HttpStatus.OK.value(), "", map);
}
/***
*@Description: 城投平台详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/details/{id}")
public AjaxResult details(@PathVariable("id") String id) {
return urbanInvestmentPlatformService.details(id);
}
}
...@@ -19,4 +19,10 @@ public interface BusinessOpportunityRadarService { ...@@ -19,4 +19,10 @@ public interface BusinessOpportunityRadarService {
AjaxResult establishmentPage(ComposeQueryDto compose); AjaxResult establishmentPage(ComposeQueryDto compose);
AjaxResult enterprisePage(ComposeQueryDto compose); AjaxResult enterprisePage(ComposeQueryDto compose);
AjaxResult enterpriseByName(String keyword);
AjaxResult bondProjectPage(ComposeQueryDto compose);
AjaxResult jskBidPlanPage(ComposeQueryDto compose);
} }
...@@ -10,6 +10,7 @@ import com.dsk.web.controller.search.service.MarketAnalysisService; ...@@ -10,6 +10,7 @@ import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** /**
...@@ -51,7 +52,27 @@ public class BusinessOpportunityRadarServiceImpl implements BusinessOpportunityR ...@@ -51,7 +52,27 @@ public class BusinessOpportunityRadarServiceImpl implements BusinessOpportunityR
@Override @Override
public AjaxResult enterprisePage(ComposeQueryDto compose) { public AjaxResult enterprisePage(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/nationzj/enterprice/index", BeanUtil.beanToMap(compose, false, false)); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult enterpriseByName(String keyword){
Map<String,Object> params = new HashMap<>();
params.put("keyword",keyword);
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/findByName", params);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult bondProjectPage(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/nationzj/bondProject/page", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult jskBidPlanPage(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/nationzj/jskBidPlan/page", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
} }
...@@ -58,6 +58,10 @@ public class ComposeQueryDto { ...@@ -58,6 +58,10 @@ public class ComposeQueryDto {
JskBidCandidateDto jskBidCandidateDto; JskBidCandidateDto jskBidCandidateDto;
//中标公示 //中标公示
JskBidWinListDto jskBidWinListDto; JskBidWinListDto jskBidWinListDto;
//专项债项目
SpecialBondProjectDto specialBondProjectDto;
//投标计划
JskBidPlanDto jskBidPlanDto;
String achievementQueryType; String achievementQueryType;
......
package com.dsk.common.dtos;
import lombok.Data;
/**
* 组合查询参数
* @author Administrator
*
*/
@Data
public class JskBidPlanDto {
String id;
String uuid;
String title;
String projectName;
String projectNumber;
//招标人
String tenderee;
String tendereeId;
String projectScale;
String province;
String city;
String area;
String domicile;
//标的物类型
String objectType;
//项目类型
String projectType;
//招标方式
String tenderWay;
//合同预估金额
Double planTenderAmount;
Double startPlanTenderAmount;
Double endPlanTenderAmount;
//资金来源
String projecetCapitalSource;
//发布时间
String issueTime;
//来源网站
String sourceName;
/**
* 修改时间
*/
String updateTime;
}
package com.dsk.common.dtos;
import lombok.Data;
import org.springframework.boot.context.event.SpringApplicationEvent;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataV1Dto {
/**
* 年份
*/
private Integer year;
/**
* 省
*/
private Integer provinceId;
/**
* 市
*/
private Integer cityId;
/**
* 区
*/
private Integer areaId;
/**
* 全国宏观经济:1 / 辖区经济:2 / 地区对比:3
*/
private Integer type;
}
package com.dsk.common.dtos;
import lombok.Data;
/**
* 组合查询参数
* @author Administrator
*
*/
@Data
public class SpecialBondProjectDto {
Long id;
String uuid;
String projectName;
String projectType;
//项目总投资
String projectTotalInvestment;
//项目资本金
String projectCapital;
//专项债金额
String specialCapital;
//项目主体
String projectEntity;
//项目主体id
Long projectEntityId;
//主管部门
String chargeDepartment;
//实施单位
String piu;
Long piuId;
String domicile;
String province;
String city;
String area;
}
package com.dsk.common.dtos;
import lombok.Data;
/**
* @ClassName SpecialPurposeBonds
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class SpecialPurposeBondsDto {
/**
* 项目类型
*/
private String projectType;
/**
* 项目个数
*/
private Integer count;
/**
* 投资金额
*/
private Double totalInvestment;
/**
* 比例(%)
*/
private Double proportion;
/**
* 排序字段
*/
private String field;
/**
* 排序 (降序desc 升序asc)
*/
private String order;
}
package com.dsk.common.dtos;
import com.dsk.common.core.domain.model.BasePage;
import lombok.Data;
/**
* @ClassName UrbanInvestmentPlatformDto
* @Description 城投平台参数对象
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class UrbanInvestmentPlatformDto extends BasePage {
/**
* 行政级别
*/
private String uipExecutiveLevel;
/**
* 城投业务类型
*/
private String uipBusinessType;
/**
* 主体评级
*/
private String bratingSubjectLevel;
/**
* 股东背景
*/
private String shareholderBg;
/**
* 股权关系
*/
private String equityRelationship;
/**
* 平台重要性
*/
private String platformImportance;
/**
* 所属开发区
*/
private String developmentZone;
/**
* 省
*/
private Integer provinceId;
/**
* 市
*/
private Integer cityId;
/**
* 区
*/
private Integer areaId;
}
This diff is collapsed.
import request from '@/utils/request'
// 获取客户决策链条列表
export function getList(data) {
return request({
url: '/customer/decision/chain/list',
method: 'get',
params: data
})
}
// 添加客户决策链条
export function addChain(data) {
return request({
url: '/customer/decision/chain',
method: 'post',
data:data
})
}
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
* {
padding: 0;
margin: 0;
}
div,
dl,
dt,
dd,
form,
h1,
h2,
h3,
h4,
h5,
h6,
img,
ol,
ul,
li,
table,
th,
td,
p,
span,
a {
border: 0;
}
img,
input {
border: none;
vertical-align: middle;
background: none;
outline: none;
}
html {
height: 100%;
box-sizing: border-box;
}
body {
height: 100%;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
}
ul,
ol {
list-style-type: none;
}
th,
td,
input {
font-size: 12px;
}
h3 {
font-size: 14px;
}
s,
i,
em {
font-style: normal;
text-decoration: none;
}
button {
border: none;
cursor: pointer;
font-size: 12px;
background-color: transparent;
}
select {
border-width: 1px;
_zoom: 1;
border-style: solid;
padding-top: 2px;
font-size: 12px;
}
.clear {
clear: both;
font-size: 1px;
height: 0;
visibility: hidden;
line-height: 0;
}
.clearfix:after {
content: "";
display: block;
clear: both;
}
.clearfix {
zoom: 1;
}
.float_left {
float: left;
}
.float_right {
float: right;
}
.el-input {
width: 100%;
}
.el-input .el-input__inner {
width: 100%;
height: 34px;
line-height: 34px;
background: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 2px;
box-sizing: border-box;
}
.el-input__icon {
line-height: 34px;
}
.el-dropdown-link .el-input {
width: 100%;
}
.el-dropdown-link .el-input__inner {
width: 100%;
}
.el-input--suffix .el-input__inner {
padding-right: 15px;
}
.el-select .el-input.is-focus .el-input__inner,
.el-input.is-active .el-input__inner,
.el-input__inner:focus,
.el-select .el-input__inner:focus,
.el-range-editor.is-active:focus-within {
border-color: #3181fa;
}
.el-popper[x-placement^=top] {
margin-bottom: 12px;
}
.el-select-dropdown .popper__arrow {
display: none;
}
.el-popper .popper__arrow {
display: none;
}
.select-popper {
text-align: center;
display: inline-block;
position: relative;
color: #333333;
font-size: 14px;
cursor: pointer;
margin-right: 24px;
}
.select-popper .select-popper-img {
width: 24px;
height: 12px;
position: absolute;
top: -10px;
right: 2px;
}
.select-popper .el-select__tags,
.select-popper .el-cascader__tags,
.select-popper .el-input__suffix {
display: none;
}
.select-popper:hover {
color: #0381fa;
}
.select-popper-active {
color: #0381fa;
}
.select-popper-title {
padding: 4px 6px;
}
.select-popper-title .colorhover {
color: #0381fa;
}
.select-popper::-webkit-scrollbar-thumb {
background-color: #a1a3a9;
border-radius: 6px;
}
.select-popper::-webkit-scrollbar {
width: 6px;
height: 6px;
}
.select-popper::-webkit-scrollbar-track {
background: #fff;
}
.select-popper::-webkit-scrollbar-corner {
background: #fff;
}
.select-popper .el-select {
width: 100%;
}
.cascader-region {
position: absolute;
left: 0;
top: 0px;
opacity: 0;
line-height: 16px;
}
.cascader-region .el-input {
width: 100%;
line-height: 16px;
}
.cascader-region .el-input .el-input__inner {
width: 100%;
height: 16px !important;
}
.content_item .select-caret {
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
line-height: 16px;
font-weight: 400;
color: #333333;
cursor: pointer;
position: relative;
}
.content_item .select-popper:hover .select-caret {
color: #0074E5;
}
.content_item .select-caret:focus {
border: none;
outline: none;
}
.content_item .geduan{
width: 100%;
height: 0px;
opacity: 1;
border: 1px solid #EFEFEF;
margin: 16px 0px;
}
.content_item .search-new {
width: 100%;
padding-bottom: 16px;
}
.content_item .search-new span:last-child {
display: inline-block;
width: 80px;
text-align: center;
color: #5B5B5B;
line-height: 32px;
cursor: pointer;
border-radius: 2px 2px 2px 2px;
border: 1px solid #D4D4D4;
opacity: 1;
}
.content_item .search-new span:first-child {
margin-right: 12px;
display: inline-block;
width: 80px;
text-align: center;
cursor: pointer;
background: #0089ff;
color: #fff;
line-height: 34px;
border-radius: 2px 2px 2px 2px;
opacity: 1;
}
.content_item .search-new span:first-child:hover {
background: #0080FF;
}
.content_item .search-new span:last-child:hover {
background: #f5faff;
color: #0081FF;
border-color: #0081FF;
}
* {
padding: 0;
margin: 0;
}
div,
dl,
dt,
dd,
form,
h1,
h2,
h3,
h4,
h5,
h6,
img,
ol,
ul,
li,
table,
th,
td,
p,
span,
a {
border: 0;
}
img,
input {
border: none;
vertical-align: middle;
background: none;
outline: none;
}
html {
height: 100%;
box-sizing: border-box;
}
body {
height: 100%;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
}
ul,
ol {
list-style-type: none;
}
th,
td,
input {
font-size: 12px;
}
h3 {
font-size: 14px;
}
s,
i,
em {
font-style: normal;
text-decoration: none;
}
button {
border: none;
cursor: pointer;
font-size: 12px;
background-color: transparent;
}
select {
border-width: 1px;
_zoom: 1;
border-style: solid;
padding-top: 2px;
font-size: 12px;
}
.clear {
clear: both;
font-size: 1px;
height: 0;
visibility: hidden;
line-height: 0;
}
.clearfix:after {
content: "";
display: block;
clear: both;
}
.clearfix {
zoom: 1;
}
.float_left {
float: left;
}
.float_right {
float: right;
}
...@@ -37,12 +37,12 @@ export default { ...@@ -37,12 +37,12 @@ export default {
searchText: '', searchText: '',
sideRoute: [ sideRoute: [
{title: '企业概要', pathName: '', children: [ {title: '企业概要', pathName: '', children: [
{title: '企业速览', pathName: ''}, {title: '企业速览', pathName: 'overview'},
{title: '工商信息', pathName: ''}, {title: '工商信息', pathName: 'businfo'},
{title: '股东信息', pathName: ''}, {title: '股东信息', pathName: 'holderinfo'},
{title: '高管信息', pathName: ''}, {title: '高管信息', pathName: 'execuinfo'},
{title: '对外投资', pathName: ''}, {title: '对外投资', pathName: 'overseas'},
{title: '分支机构', pathName: ''} {title: '分支机构', pathName: 'branch'}
]}, ]},
{title: '财务简析', pathName: 'financial'}, {title: '财务简析', pathName: 'financial'},
{title: '项目商机', pathName: '', children: [ {title: '项目商机', pathName: '', children: [
...@@ -77,10 +77,10 @@ export default { ...@@ -77,10 +77,10 @@ export default {
{title: '信用中国', pathName: ''} {title: '信用中国', pathName: ''}
]}, ]},
{title: '商务信息', pathName: 'business'}, {title: '商务信息', pathName: 'business'},
{title: '招标偏好', pathName: ''}, {title: '招标偏好', pathName: 'preference'},
{title: '合作情况', pathName: ''}, {title: '合作情况', pathName: 'cooperate'},
{title: '决策链条', pathName: ''}, {title: '决策链条', pathName: 'decisionMaking'},
{title: '跟进记录', pathName: ''} {title: '跟进记录', pathName: 'gjjl'}
] ]
} }
}, },
...@@ -112,62 +112,66 @@ export default { ...@@ -112,62 +112,66 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ #app{
width: 144px; .detail-container{
min-height: calc(100vh - 170px); width: 144px;
padding-bottom: 20px; min-height: calc(100vh - 170px);
background: #FFFFFF; padding-bottom: 20px;
.side-input{ background: #FFFFFF;
width: 128px; .side-input{
margin-top: 16px; width: 128px;
margin-left: 8px; margin-top: 16px;
border: 0; margin-left: 8px;
::v-deep .el-input__inner{
height: 32px;
background: #F3F3F4;
border-radius: 20px;
border: 0; border: 0;
&::placeholder { ::v-deep .el-input__inner{
color: #3D3D3D; height: 32px;
background: #F3F3F4;
border-radius: 20px;
border: 0;
&::placeholder {
color: #3D3D3D;
}
} }
} .el-icon-search{
.el-icon-search{ color: #0081FF;
color: #0081FF; cursor: pointer;
cursor: pointer;
}
}
.detail-menu{
margin-top: 20px;
border-right: 0;
::v-deep .el-menu-item, ::v-deep .el-submenu__title{
height: 30px;
line-height: 30px;
font-size: 14px;
color: #232323;
&:hover, &:focus{
background: linear-gradient(91deg, rgba(0,129,255,0.1) 0%, rgba(0,129,255,0) 100%);;
} }
.el-submenu__icon-arrow{ }
.detail-menu{
margin-top: 20px;
border-right: 0;
::v-deep .el-menu-item, ::v-deep .el-submenu__title{
height: 30px;
line-height: 30px;
font-size: 14px;
color: #232323; color: #232323;
right: 48px; padding: 0 0 0 16px !important;
margin-top: -5px; text-align: initial !important;
&:hover, &:focus, &.is-active{
background: linear-gradient(91deg, rgba(0,129,255,0.1) 0%, rgba(0,129,255,0) 100%);;
}
.el-submenu__icon-arrow{
color: #232323;
right: 48px;
margin-top: -5px;
}
} }
} ::v-deep .el-submenu .el-menu-item{
::v-deep .el-submenu .el-menu-item{ font-size: 12px;
font-size: 12px; color: rgba(35,35,35,0.8);
color: rgba(35,35,35,0.8); padding: 0 0 0 27px !important;
padding: 0 0 0 27px !important; min-width: 144px !important;
min-width: 144px !important; position: relative;
position: relative; &:before {
&:before { content: "";
content: ""; position: absolute;
position: absolute; top: 14px;
top: 14px; left: 21px;
left: 21px; width: 2px;
width: 2px; height: 2px;
height: 2px; background: rgba(35,35,35,0.8);
background: rgba(35,35,35,0.8); border-radius: 50%;
border-radius: 50%; }
} }
} }
} }
......
This diff is collapsed.
<template>
<div class="decisionMaking">
<template v-if="ifEmpty">
<div class="flex-box query-box">
<div class="flex-box query-params"></div>
<div class="flex-box query-add">
<el-button type="primary" icon="el-icon-plus" @click="opennew">新增决策链条</el-button>
</div>
</div>
<div class="table-item">
<el-table
v-loading="tableLoading"
:data="tableData"
element-loading-text="Loading"
border
fit
highlight-current-row
>
<el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="姓名" prop="enterpriseName" min-width="70" align="left" />
<el-table-column label="角色" prop="level" min-width="70" align="left" />
<el-table-column label="公司/机关" prop="legalPerson" min-width="70" align="left" />
<el-table-column label="职位" prop="capital" min-width="115" align="left" />
<el-table-column label="联系方式" prop="capital" min-width="115" align="left" />
<el-table-column label="内部维护人" prop="capital" min-width="115" align="left" />
<el-table-column label="备注" prop="capital" min-width="115" align="left" />
</el-table>
</div>
<div class="pagination-box">
<el-pagination background :current-page="queryParams.pageNum" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</template>
<template v-else>
<div class="cooperate_empty">
<img src="@/assets/images/project/empty.png"/>
<div class="empty-t">暂无客户联系人数据</div>
<div class="empty-d">抱歉,你还未添加客户联系人,快去添加吧</div>
<el-button type="primary" class="empty-b" @click="opennew">添加联系人</el-button>
</div>
</template>
<!-- 弹窗添加联系人 -->
<el-dialog
class="popups"
:visible.sync="dialogVisible"
width="464px">
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>重庆市轨道交通3号线二期工程4标段施工总承包</span>
</div>
<div class="popform">
<div class="row">
<span class="left">联系人姓名:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系人角色:</span>
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
</div>
<div class="row">
<span class="left">联系人职位:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系人公司/机关:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">内部维护人:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系方式:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">保存</div>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import {
getList,
addChain
} from '@/api/decisionMaking/decisionMaking'
export default {
name: 'DecisionMaking',
components: {
},
data() {
return {
ifEmpty:true,
queryParams:{
customerId:null,
pageNum:1,
pageSize:10,
},
stageOptions:[],
statusOptions:[],
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
//弹窗
dialogVisible: false,
}
},
created() {
this.list();
},
computed: {
},
methods: {
list(){
getList(this.queryParams).then((res) => {
console.log(res)
})
},
resetQuery() {
},
//分页
handleCurrentChange(e){
},
handleSizeChange(e){
},
cancel(){
this.dialogVisible = false
},
//打开新建窗口
opennew(){
this.dialogVisible = true
},
}
}
</script>
<style lang="scss" scoped>
.decisionMaking{
background: #ffffff;
border-radius: 4px;
padding: 16px;
input{
border: 1px solid #EFEFEF;
}
::v-deep .el-form-item{
margin-right: 8px !important;
}
.cooperate-name{
::v-deep .el-form-item__content{
display: flex;
span{
width: 60px;
height: 32px;
background: #F5F5F5;
text-align: center;
color: #0081FF;
border: 1px solid #EFEFEF;
border-left: 0;
cursor: pointer;
}
}
::v-deep .el-input__inner{
border-right: 0;
border-radius: 2px 0 2px 0;
}
}
.query-add{
button{
width: 124px;
line-height: 32px;
height: 32px;
background: #0081FF;
border-radius: 2px 2px 2px 2px;
padding: 0;
color: #ffffff;
span{
color: #ffff;
margin-left: 4px;
}
}
}
.cooperate_empty{
text-align: center;
height: calc(100vh - 170px);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
img{
width: 108px;
height: 108px;
border-radius: 50%;
margin-bottom: 24px;
}
.empty-t{
font-size: 16px;
color: #333333;
margin-bottom: 8px;
}
.empty-d{
font-size: 14px;
font-weight: 400;
color: #999999;
margin-bottom: 24px;
}
.empty-b{
width: 116px;
height: 36px;
background: #0081FF;
border-radius: 4px;
padding: 0;
}
}
.table-item{
margin-top: 10px;
}
// 弹窗
.popups{
.poptitle {
line-height: 48px;
border-bottom: 1px solid #E1E1E1;
height: 48px;
position: absolute;
top: 0;
left: 0;
width: 100%;
img {
width: 17px;
margin: 16px;
float: left;
}
span {
font-weight: bold;
font-size: 16px;
color: #232323;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
width: 385px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.popform {
padding-top: 24px;
.row {
padding-bottom: 16px;
.left {
width: 137px;
display: inline-block;
text-align: right;
opacity: 0.8;
}
::v-deep .el-input {
display: inline-block;
width: 240px;
}
}
.popbot {
text-align: right;
padding-top: 8px;
}
}
}
}
</style>
...@@ -7,8 +7,22 @@ ...@@ -7,8 +7,22 @@
</div> </div>
<div class="part-right"> <div class="part-right">
<div id="partBox"> <div id="partBox">
<Overview v-if="currentPath.pathName=='overview'" />
<Businfo v-if="currentPath.pathName=='businfo'" />
<Holderinfo v-if="currentPath.pathName=='holderinfo'" />
<Execuinfo v-if="currentPath.pathName=='execuinfo'" />
<Overseas v-if="currentPath.pathName=='overseas'" />
<Branch v-if="currentPath.pathName=='branch'" />
<Financial v-if="currentPath.pathName=='financial'" /> <Financial v-if="currentPath.pathName=='financial'" />
<Business v-if="currentPath.pathName=='business'" /> <Business v-if="currentPath.pathName=='business'" />
<!-- 招标偏好 -->
<Preference v-if="currentPath.pathName=='preference'" />
<!-- 合作情况 -->
<Cooperate v-if="currentPath.pathName=='cooperate'" />
<!-- 决策链条 -->
<DecisionMaking v-if="currentPath.pathName=='decisionMaking'" />
<!-- 跟进记录 -->
<Gjjl v-if="currentPath.pathName=='gjjl'" />
</div> </div>
</div> </div>
</div> </div>
...@@ -19,20 +33,40 @@ ...@@ -19,20 +33,40 @@
import elementResizeDetectorMaker from "element-resize-detector" import elementResizeDetectorMaker from "element-resize-detector"
import Header from "./component/Header" import Header from "./component/Header"
import SideBar from "./component/Sidebar" import SideBar from "./component/Sidebar"
import Financial from "./financial" import Overview from "./overview/overview" //企业概览-企业速览
import Business from "./business" import Businfo from "./overview/businfo" //企业概览-工商信息
import Holderinfo from "./overview/holderinfo" //企业概览-股东信息
import Execuinfo from "./overview/execuinfo" //企业概览-高管信息
import Overseas from "./overview/overseas" //企业概览-对外投资
import Branch from "./overview/branch" //企业概览-分支机构
import Financial from "./financial" //财务简析
import Business from "./business" //商务信息
import Preference from "./preference" //招标偏好
import Cooperate from "./cooperate" //合作情况
import DecisionMaking from "./decisionMaking" //决策链条
import Gjjl from "../../project/projectList/component/gjjl" //跟进记录
export default { export default {
name: 'PartyA', name: 'PartyA',
components: { components: {
Header, Header,
SideBar, SideBar,
Overview,
Businfo,
Holderinfo,
Execuinfo,
Overseas,
Branch,
Financial, Financial,
Business Business,
Preference,
Cooperate,
DecisionMaking,
Gjjl
}, },
data() { data() {
return { return {
currentPath: { currentPath: {
pathName: 'financial' //默认展示页 pathName: 'overview' //默认展示页
}, },
partBoxHeight: null partBoxHeight: null
} }
......
<template>
<div class="app-container part-container">
企业速览
</div>
</template>
<script>
export default {
name: 'Overview',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
}
</style>
<template>
<div class="app-container part-container">
企业速览
</div>
</template>
<script>
export default {
name: 'Overview',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
}
</style>
<template>
<div class="app-container operations-container">
<div class="common-title">公司经营</div>
<div class="part-swiper">
<div class="swiper-containers">
<ul class="swiper-wrapper">
<li class="swiper-slide" v-for="(item, index) in operList" :key="index">
<div class="swiper-div">
<div class="operations-title">{{item.range}}-<span>{{item.year}}</span></div>
<div class="flex-box text-cl1 operations-info">
{{item.name}}
<span><img src="@/assets/images/detail/overview/oper_source.png">{{item.name}}</span>
</div>
</div>
</li>
</ul>
</div>
<div class="swiper-button-prev" slot="button-prev" style="left: 0;"><i class="el-icon-arrow-left"></i></div>
<div class="swiper-button-next" slot="button-next" style="right: 0"><i class="el-icon-arrow-right"></i></div>
</div>
<div class="flex-box operations-list">
<div class="list-item" v-for="(item, index) in gsjyList" :key="index">
<div class="flex-box list-item-all"><img :src="item.ico">{{item.name}}</div>
<div class="list-item-amount">{{item.amount}}</div>
</div>
</div>
</div>
</template>
<script>
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import "@/assets/lib/swiper/swiper-bundle.css"
export default {
name: 'Overview',
data() {
return {
operList: [
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'}
],
gsjyList: [
{ name: '总资产', ico: require('@/assets/images/detail/overview/gsjy_ico1.png'), amount: '1699.7'},
{ name: '净资产', ico: require('@/assets/images/detail/overview/gsjy_ico2.png'), amount: '1699.7'},
{ name: '授信余额', ico: require('@/assets/images/detail/overview/gsjy_ico3.png'), amount: '1699.7'},
{ name: '营业收入', ico: require('@/assets/images/detail/overview/gsjy_ico4.png'), amount: '1699.7'},
{ name: '总负债', ico: require('@/assets/images/detail/overview/gsjy_ico5.png'), amount: '1699.7'}
],
}
},
created() {
},
mounted() {
this.companySwiper()
},
methods: {
companySwiper(){
new Swiper('.swiper-containers', {
slidesPerView: 4,
// 设置点击箭头
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
}
})
}
}
}
</script>
<style lang="scss" scoped>
.operations-container{
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
.part-swiper{
position: relative;
margin-top: 16px;
.swiper-containers{
width: calc(100% - 38px);
height: 96px;
margin-top: 8px;
margin-left: 25px;
overflow: hidden;
.swiper-slide{
.swiper-div{
width: calc(100% - 12px);
height: 96px;
background: url("~@/assets/images/detail/overview/swiper_bg.png") no-repeat;
background-size: 100% 100%;
.operations-title{
margin-right: 22px;
font-weight: bold;
font-size: 20px;
color: #0081FF;
padding: 24px 16px 0 16px;
span{
font-size: 16px;
}
}
.operations-info{
padding: 14px 16px 10px 16px;
justify-content: space-between;
font-size: 14px;
color: #416587;
span{
font-size: 12px;
img{
width: 10px;
height: 10px;
margin-right: 3px;
}
}
}
}
}
}
.swiper-button-prev, .swiper-button-next{
width: 16px;
height: 96px;
background: #F0F5FC;
top: 0;
margin-top: 0;
&.swiper-button-disabled{
opacity: 1;
color:#AAAAAA;
background: #F5F5F5;
}
i{
color: #AAAAAA;
}
&:hover i{
color:#667199;
}
&:after{
content: "";
}
}
}
.operations-list{
flex-wrap: wrap;
justify-content: space-between;
.list-item{
width: calc(20% - 12px);
height: 88px;
padding: 18px;
margin-top: 14px;
font-size: 14px;
color: #232323;
border: 1px solid #E2E7EE;
text-align: center;
.list-item-all{
justify-content: center;
img{
width: 24px;
height: 24px;
margin-right: 4px;
}
}
.list-item-amount{
padding-top: 6px;
font-weight: bold;
}
}
}
}
</style>
<template>
<div class="app-container part-container">
企业速览
</div>
</template>
<script>
export default {
name: 'Overview',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
}
</style>
<template>
<div class="app-container part-container">
企业速览
</div>
</template>
<script>
export default {
name: 'Overview',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
}
</style>
<template>
<div class="app-container part-container">
企业速览
</div>
</template>
<script>
export default {
name: 'Overview',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
}
</style>
<template>
<div class="app-container part-container">
企业速览
<div class="gsjy">
<Operations />
</div>
</div>
</template>
<script>
import Operations from "./component/operations";
export default {
name: 'Overview',
components: {
Operations
},
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
.gsjy{
margin-top: 12px;
}
}
</style>
<template>
<div class="preference">
<div class="preference-item">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">商务条件特点</span>
</div>
</div>
<div class="query-params">
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item>
<el-input v-model="queryParams.key"
type="textarea"
:autosize="{ minRows: 8, maxRows: 8}"
maxlength="500"
show-word-limit
placeholder="请输入商务条件特点">
</el-input>
</el-form-item>
</el-form>
</div>
</div>
<div class="preference-item">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">决策链条</span>
</div>
</div>
<div class="query-params">
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item>
<el-input v-model="queryParams.key"
type="textarea"
:autosize="{ minRows: 8, maxRows: 8}"
maxlength="500"
show-word-limit
placeholder="请输入决策链条">
</el-input>
</el-form-item>
</el-form>
</div>
</div>
<div class="preference-item">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">招投标流程特点</span>
</div>
</div>
<div class="query-params">
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item>
<el-input v-model="queryParams.key"
type="textarea"
:autosize="{ minRows: 8, maxRows: 8}"
maxlength="500"
show-word-limit
placeholder="请输入招投标流程特点">
</el-input>
</el-form-item>
</el-form>
</div>
</div>
<div class="preference-item">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">履约阶段特点</span>
</div>
</div>
<div class="query-params">
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item>
<el-input v-model="queryParams.key"
type="textarea"
:autosize="{ minRows: 8, maxRows: 8}"
maxlength="500"
show-word-limit
placeholder="请输入履约阶段特点">
</el-input>
</el-form-item>
</el-form>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Preference',
components: {
},
data() {
return {
queryParams:{
}
}
},
created() {
},
computed: {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.preference{
background: #ffffff;
border-radius: 4px;
padding: 16px;
.query-params{
margin-top:20px;
::v-deep .el-form-item{
width: 100%;
}
::v-deep .el-form-item__content{
width: 80%;
}
}
}
</style>
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
</template> </template>
<script> <script>
import debtProject from "./components/debtProject/index.vue"; import debtProject from "./components/debtProject/index.vue";
import "@/assets/styles/public.css";
export default { export default {
name: 'radar', name: 'radar',
components: { debtProject }, components: { debtProject },
...@@ -87,7 +88,7 @@ ...@@ -87,7 +88,7 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "~@/assets/styles/public.scss";
.app-container { .app-container {
margin: 12px 24px; margin: 12px 24px;
padding: 0; padding: 0;
...@@ -116,7 +117,7 @@ ...@@ -116,7 +117,7 @@
.app-container .combined-title .title-right { .app-container .combined-title .title-right {
display: flex; display: flex;
width: 1044px; width: 100%;
position: relative; position: relative;
height: 40px; height: 40px;
} }
...@@ -150,7 +151,7 @@ ...@@ -150,7 +151,7 @@
height: 1px; height: 1px;
background-color: #EEEEEE; background-color: #EEEEEE;
position: absolute; position: absolute;
bottom: 0px; bottom: -1px;
left: 0; left: 0;
z-index: 1; z-index: 1;
} }
...@@ -168,7 +169,7 @@ ...@@ -168,7 +169,7 @@
.tab div { .tab div {
cursor: pointer; cursor: pointer;
color: #666666; color: #666666;
font-size: 14px; font-size: 16px;
text-align: center; text-align: center;
margin-right: 32px; margin-right: 32px;
line-height: 40px; line-height: 40px;
......
package com.dsk.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 区域经济数据表
* </p>
*
* @author xzr
* @since 2023-05-19
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class OpRegionalEconomicDataV1 implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 年份
*/
private Integer year;
/**
* 省
*/
private String province;
/**
* 市
*/
private String city;
/**
* 区
*/
private String area;
/**
* GDP(亿元)
*/
private Double gdp;
/**
* GDP增长值
*/
private Double gdpAddValue;
/**
* GDP增速(%)
*/
private Double gdpGrowth;
/**
* 人均GDP(元)
*/
private Double gdpPerCapita;
/**
* 第一产业增加值(亿元)
*/
private Double piAddValue;
/**
* 第二产业增加值(亿元)
*/
private Double siAddValue;
/**
* 第三产业增加值(亿元)
*/
private Double tiAddValue;
/**
* 人口(万人)
*/
private Double population;
/**
* 人口增长率(%)
*/
private Double populationGrowthRate;
/**
* 人口增加值
*/
private String populationAddValue;
/**
* 工业增加值(亿元)
*/
private Double industryAddValue;
/**
* 工业总产值(亿元)
*/
private Double industryTotalValue;
/**
* 固定资产投资(亿元)
*/
private Double fixedInvestment;
/**
* 房地产开发投资(亿元)
*/
private Double realEstateInvestment;
/**
* 进出口总额(亿美元)
*/
private Double eximTotalValue;
/**
* 社会消费品零售总额(亿元)
*/
private Double trscg;
/**
* 城镇居民人均可支配收入(元)
*/
private Double urbanPcdi;
/**
* 一般公共预算收入(亿元)
*/
private Double gbr;
/**
* 一般公共预算收入增速(%)
*/
private Double gbrGrowth;
/**
* 税收收入(亿元)
*/
private Double taxIncome;
/**
* 转移性收入(亿元)
*/
private Double transferIncome;
/**
* 上级补助收入(亿元)
*/
private Double superiorSubsidyIncome;
/**
* 一般公共预算支出(亿元)
*/
private Double gbe;
/**
* 政府性基金收入(亿元)
*/
private Double govFundIncome;
/**
* 土地出让收入(亿元)
*/
private Double landTransferIncome;
/**
* 政府性基金支出(亿元)
*/
private Double govFundExpenditure;
/**
* 国有资本经营收入(亿元)
*/
private Double soecoi;
/**
* 国有资本经营支出(亿元)
*/
private Double soecoe;
/**
* 地方政府债务余额(亿元)
*/
private Double govDebtBalance;
/**
* 一般债余额(亿元)
*/
private Double generalDebtBalance;
/**
* 专项债余额(亿元)
*/
private Double specialDebtBalance;
/**
* 地方政府债务限额(亿元)
*/
private Double govDebtLimit;
/**
* 城投平台有息债务(亿元)
*/
private Double uipInterestBearingDebt;
/**
* 财政自给率(%)
*/
private Double fiscalSelfSufficiencyRate;
/**
* 负债率(%)政府负债率(%)
*/
private Double govDebtToGdpRate;
/**
* 负债率(宽口径)(%)政府负债率(宽口径)(%)
*/
private Double govDebtToGdpRateWild;
/**
* 债务率(%)政府债务率(%)
*/
private Double govDebtRate;
/**
* 债务率(宽口径)(%)政府债务率(宽口径)(%)
*/
private Double govDebtRateWild;
/**
* 状态码
*/
private Integer isDeal;
/**
* 状态码2
*/
private Integer isStatua;
/**
* 全字段生成md5
*/
private String md5;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
}
package com.dsk.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 城投平台财务数据表
* </p>
*
* @author xzr
* @since 2023-05-19
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class OpUipFinancialData implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 企业名称
*/
private String companyName;
/**
* 企业id
*/
private Long companyId;
/**
* 省
*/
private String province;
/**
* 省id
*/
private Integer provinceId;
/**
* 市
*/
private String city;
/**
* 市id
*/
private Integer cityId;
/**
* 区
*/
private String area;
/**
* 区id
*/
private Integer areaId;
/**
* 最新报告期
*/
private Date latestReportPeriod;
/**
* 最新评级
*/
private String bratingSubjectLevel;
/**
* 股东背景
*/
private String shareholderBg;
/**
* 实际控制人
*/
private String actualController;
/**
* 股权关系
*/
private String equityRelationship;
/**
* 行政级别
*/
private String uipExecutiveLevel;
/**
* 平台重要性
*/
private String platformImportance;
/**
* 债券余额(亿元)
*/
private Double bondBalance;
/**
* 所属开发区
*/
private String developmentZone;
/**
* 城投业务类型
*/
private String uipBusinessType;
/**
* 总资产(亿元)
*/
private Double totalAssets;
/**
* 归母净资产(亿元)
*/
private Double belongNetAssets;
/**
* 货币资金(亿元)
*/
private Double monetaryFunds;
/**
* 土地资产(亿元)
*/
private Double landAssets;
/**
* 受限资产(亿元)
*/
private Double restrictedAssets;
/**
* 应收账款(亿元)
*/
private Double accountsReceivable;
/**
* 其他应收款(亿元)
*/
private Double otherReceivable;
/**
* 公益性&准公益性主营占比(%)
*/
private Double econData001;
/**
* 应收账款来自政府占比(%)
*/
private Double receivableFromGovRatio;
/**
* 政府补助(亿元)
*/
private Double govSubsidy;
/**
* 专项应付款(亿元)
*/
private Double specialPayable;
/**
* 营业收入(亿元)
*/
private Double operatingIncome;
/**
* 归母净利润(亿元)
*/
private Double belongNetProfit;
/**
* 净资产收益率(%)
*/
private Double roe;
/**
* 经营现金流量净额(亿元)
*/
private Double netOperatingCashFlow;
/**
* 筹资现金流量净额(亿元)
*/
private Double netFinancingCashFlow;
/**
* 投资现金流量净额(亿元)
*/
private Double netInvestmentCashFlow;
/**
* 总负债(亿元)
*/
private Double totalLiabilities;
/**
* 城投平台有息债务(亿元)
*/
private Double uipInterestBearingDebt;
/**
* 有息债务/总负债(%)
*/
private Double econData002;
/**
* 资产负债率(%)
*/
private Double tdr;
/**
* 综合融资成本(%)
*/
private Double ofcb;
/**
* 现金比率
*/
private Double cashRatio;
/**
* 现金流量比率
*/
private Double cashFlowRatio;
/**
* 现金到期债务比
*/
private Double cashDebtRatio;
/**
* 授信余额(亿元)
*/
private Double creditBalance;
/**
* 授信余额/全部债务(%)
*/
private Double econData003;
/**
* EBITDA利息保障倍数
*/
private String ebitdaIcr;
/**
* 私募债余额占比(%)
*/
private Double ppnBalanceProp;
/**
* 一年内到期债券占比(%)
*/
private Double econData004;
/**
* 债券余额/有息债务(%)
*/
private Double econData005;
/**
* 借款(亿元)
*/
private Double loan;
/**
* 借款/有息债务(%)
*/
private Double econData006;
/**
* 非标余额(亿元)
*/
private Double nonStandardBalance;
/**
* 非标余额/有息债务(%)
*/
private Double nonStandardRatio;
/**
* 对外担保金额(亿元)
*/
private Double guaranteeAmount;
/**
* 对外担保比例(%)
*/
private Double guaranteeRatio;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 状态码1
*/
private Integer isDeal;
/**
* 状态码2
*/
private Integer isStatus;
/**
* 备用状态码1
*/
private Integer state1;
/**
* 备用状态2
*/
private Integer state2;
}
package com.dsk.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 专项债债券信息表
* </p>
*
* @author xzr
* @since 2023-05-19
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SpecialBondInformationV1 implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 项目表uuid
*/
@TableId(value = "project_uuid", type = IdType.ID_WORKER_STR)
private String projectUuid;
/**
* 专项债项目唯一标识
*/
private String specialBondUuid;
/**
* 债券名称
*/
private String bondName;
/**
* 债券简称
*/
private String bondAbbreviation;
/**
* 招标日期
*/
private Date tenderDate;
/**
* 债券发行规模
*/
private String actualBondIssueScale;
/**
* 专项债用于项目规模(亿)
*/
private String isUsedProjectScale;
/**
* 是否用资本金
*/
private String isUsedCapital;
/**
* 债券评级
*/
private String bondLevel;
/**
* 信用评级机构
*/
private String creditRatingAgency;
/**
* 债券期限
*/
private String actualBondDuration;
/**
* 发行利率
*/
private String bondIssueRate;
/**
* 发债主体
*/
private String ratingSubject;
/**
* 评级报告url(七牛云)
*/
private String ratingReportUrl;
}
package com.dsk.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
* 专项债项目表
* </p>
*
* @author xzr
* @since 2023-05-19
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SpecialBondProjectsV1 implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 专项债券唯一标识
*/
private String specialBondUuid;
/**
* 项目名称
*/
private String projectName;
/**
* 省
*/
private String province;
/**
* 省id
*/
private Integer provinceId;
/**
* 市
*/
private String city;
/**
* 市id
*/
private Integer cityId;
/**
* 区
*/
private String area;
/**
* 区id
*/
private Integer areaId;
/**
* 专项债项目类型
*/
private String specialBondProjectType;
/**
* 建设规模
*/
private String projectScale;
/**
* 偿债资金来源
*/
private String sourceOfRepayment;
/**
* 项目主体
*/
private String projectEntity;
/**
* 项目主体id
*/
private Long projectEntityId;
/**
* 主管部门
*/
private String chargeDepartment;
/**
* 实施单位
*/
private String piu;
/**
* 实施单位id
*/
private Long piuId;
/**
* 项目总投资
*/
private String projectTotalInvestment;
/**
* 项目资本金
*/
private String projectCapital;
/**
* 专项债融资
*/
private String specialBondFinancing;
/**
* 专项债用作资本金
*/
private String specialCapital;
/**
* 其他资金
*/
private String otherFunds;
/**
* 专项债融资额
*/
private String specialBondFinancingAmount;
/**
* 专项债只数
*/
private String specialBondIssueNumber;
/**
* 其他融资
*/
private String otherFinancing;
/**
* 政府安排资金
*/
private String govSupportFunds;
/**
* 项目总收益/项目总债务融资本息(覆盖倍数)
*/
private String econData007;
/**
* 项目总收益/项目总地方债券融资本息
*/
private String econData008;
/**
* 项目总收益/项目总投资
*/
private String econData009;
/**
* 项目总收益/项目总地方债券融资本金
*/
private String econData010;
/**
* 项目总收益/项目总债务融资本金
*/
private String econData011;
/**
* 项目预测总收益(亿)
*/
private String projectForecastTotalRevenue;
}
package com.dsk.system.domain.customer; package com.dsk.system.domain.customer;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.dsk.common.annotation.Excel;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.springframework.context.annotation.Import;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
...@@ -30,6 +32,7 @@ public class Customer implements Serializable { ...@@ -30,6 +32,7 @@ public class Customer implements Serializable {
/** /**
* 客户名称(企业名称) * 客户名称(企业名称)
*/ */
@Excel(name = "企业名称")
private String companyName; private String companyName;
/** /**
* 法定代表人 * 法定代表人
...@@ -39,6 +42,22 @@ public class Customer implements Serializable { ...@@ -39,6 +42,22 @@ public class Customer implements Serializable {
* 注册资本 * 注册资本
*/ */
private String registerCapital; private String registerCapital;
/**
* 省id
*/
private Integer provinceId;
/**
* 市id
*/
private Integer cityId;
/**
* 区县id
*/
private Integer districtId;
/**
* 注册地址
*/
private String registerAddress;
/** /**
* 社会统一信用代码 * 社会统一信用代码
*/ */
...@@ -52,9 +71,13 @@ public class Customer implements Serializable { ...@@ -52,9 +71,13 @@ public class Customer implements Serializable {
*/ */
private String companyLevel; private String companyLevel;
/** /**
* 信用等级(credit_level_type) * 企业主体评级(credit_level_type)
*/ */
private String creditLevel; private String creditLevel;
/**
* 客户等级(customer_level_type)
*/
private String customerLevel;
/** /**
* 上级公司(控股单位) * 上级公司(控股单位)
*/ */
......
...@@ -38,7 +38,7 @@ public class CustomerUser implements Serializable { ...@@ -38,7 +38,7 @@ public class CustomerUser implements Serializable {
* 创建时间 * 创建时间
*/ */
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
private Date careteTime; private Date createTime;
/** /**
* 修改时间 * 修改时间
*/ */
......
...@@ -38,6 +38,10 @@ public class CustomerListVo { ...@@ -38,6 +38,10 @@ public class CustomerListVo {
* 注册资本(字符串) * 注册资本(字符串)
*/ */
private String registerCapital; private String registerCapital;
/**
* 注册地址
*/
private String registerAddress;
/** /**
* 社会统一信用代码 * 社会统一信用代码
*/ */
...@@ -51,9 +55,13 @@ public class CustomerListVo { ...@@ -51,9 +55,13 @@ public class CustomerListVo {
*/ */
private String companyLevel; private String companyLevel;
/** /**
* 信用等 * 企业主体评
*/ */
private String creditLevel; private String creditLevel;
/**
* 客户等级
*/
private String customerLevel;
/** /**
* 上级公司 * 上级公司
*/ */
......
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.OpRegionalEconomicDataV1;
/**
* <p>
* 区域经济数据表 Mapper 接口
* </p>
*
* @author xzr
* @since 2023-05-19
*/
public interface OpRegionalEconomicDataV1Mapper extends BaseMapper<OpRegionalEconomicDataV1> {
}
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.OpUipFinancialData;
/**
* <p>
* 城投平台财务数据表 Mapper 接口
* </p>
*
* @author xzr
* @since 2023-05-19
*/
public interface OpUipFinancialDataMapper extends BaseMapper<OpUipFinancialData> {
}
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.SpecialBondInformationV1;
/**
* <p>
* 专项债债券信息表 Mapper 接口
* </p>
*
* @author xzr
* @since 2023-05-19
*/
public interface SpecialBondInformationV1Mapper extends BaseMapper<SpecialBondInformationV1> {
}
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.SpecialBondProjectsV1;
/**
* <p>
* 专项债项目表 Mapper 接口
* </p>
*
* @author xzr
* @since 2023-05-19
*/
public interface SpecialBondProjectsV1Mapper extends BaseMapper<SpecialBondProjectsV1> {
}
package com.dsk.system.service; package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
/** /**
* @ClassName EconomicService * @ClassName EconomicService
...@@ -18,5 +19,43 @@ public interface EconomicService { ...@@ -18,5 +19,43 @@ public interface EconomicService {
*@Author: Dgm *@Author: Dgm
*@date: 2023/5/18 10:25 *@date: 2023/5/18 10:25
*/ */
AjaxResult nationalPage(); AjaxResult nationalList(OpRegionalEconomicDataV1Dto dto);
/***
*@Description: 全国经济大全详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult details(Integer id);
/***
*@Description: 地区经济统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult statisticsRegional(OpRegionalEconomicDataV1Dto dto);
/***
*@Description: 地区经济-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalList(OpRegionalEconomicDataV1Dto dto);
/***
*@Description: 地区经济-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalComparison(OpRegionalEconomicDataV1Dto dto);
} }
package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto;
/**
* @ClassName EconomicService
* @Description 区域企业业务层
* @Author Dgm
* @Date 2023/5/18 10:17
* @Version 1.00
*/
public interface RegionalEnterprisesService {
/***
*@Description: 区域企业分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult page(ComposeQueryDto compose);
}
package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.SpecialPurposeBondsDto;
/**
* @ClassName EconomicService
* @Description 专项债项目业务层
* @Author Dgm
* @Date 2023/5/18 10:17
* @Version 1.00
*/
public interface SpecialPurposeBondsService {
/***
*@Description: 专项债项目分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult page(SpecialPurposeBondsDto dto);
/***
*@Description: 专项债项目详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult details(String id);
/***
*@Description: 项目类别统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult bondStatistics(SpecialPurposeBondsDto dto);
}
package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult;
/**
* @ClassName EconomicService
* @Description 城投平台业务层
* @Author Dgm
* @Date 2023/5/18 10:17
* @Version 1.00
*/
public interface UrbanInvestmentPlatformService {
/***
*@Description: 城投平台分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult page();
/***
*@Description: 城投平台详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult details(String id);
}
...@@ -2,8 +2,10 @@ package com.dsk.system.service.impl; ...@@ -2,8 +2,10 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanException; import cn.hutool.core.bean.BeanException;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.common.utils.SecurityUtils; import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.domain.customer.Customer; import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.CustomerUser; import com.dsk.system.domain.customer.CustomerUser;
...@@ -16,12 +18,15 @@ import com.dsk.system.mapper.CustomerMapper; ...@@ -16,12 +18,15 @@ import com.dsk.system.mapper.CustomerMapper;
import com.dsk.system.mapper.CustomerUserMapper; import com.dsk.system.mapper.CustomerUserMapper;
import com.dsk.system.service.IBusinessInfoService; import com.dsk.system.service.IBusinessInfoService;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -30,6 +35,7 @@ import java.util.List; ...@@ -30,6 +35,7 @@ import java.util.List;
* @author makejava * @author makejava
* @since 2023-05-16 09:27:57 * @since 2023-05-16 09:27:57
*/ */
@Slf4j
@Service @Service
public class CustomerServiceImpl implements ICustomerService { public class CustomerServiceImpl implements ICustomerService {
...@@ -108,4 +114,5 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -108,4 +114,5 @@ public class CustomerServiceImpl implements ICustomerService {
dto.setUserId(SecurityUtils.getUserId()); dto.setUserId(SecurityUtils.getUserId());
return businessInfoService.selectCustomerBusinessList(dto); return businessInfoService.selectCustomerBusinessList(dto);
} }
} }
package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.system.service.RegionalEnterprisesService;
import com.dsk.system.service.SpecialPurposeBondsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @ClassName RegionalEnterprisesServiceImpl
* @Description 区域企业业务层实现
* @Author Dgm
* @Date 2023/5/18 10:23
* @Version
*/
@Service
public class RegionalEnterprisesServiceImpl implements RegionalEnterprisesService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Override
public AjaxResult page(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/jsk/search/enterprisePage", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
}
package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.system.service.EconomicService;
import com.dsk.system.service.UrbanInvestmentPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @ClassName EconomicServiceImpl
* @Description 城投平台业务层实现
* @Author Dgm
* @Date 2023/5/18 10:23
* @Version
*/
@Service
public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatformService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Override
public AjaxResult page() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/xx", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult details(String id) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/xx", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
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