Commit c177ac77 authored by huangjie's avatar huangjie

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys...

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents 3612b80e f166a9fa
......@@ -51,7 +51,11 @@
<artifactId>dsk-acc-open-sdk-java</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.7.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.tencentcloudapi</groupId>-->
......
......@@ -103,4 +103,14 @@ public class EnterpriseCreditController {
return enterpriseCreditService.kaitingPureRole(body);
}
@PostMapping(value = "/restrictedConsumerPage")
public TableDataInfo restrictedConsumerPage(@RequestBody @Valid EnterpriseCreditPageBody body) throws Exception {
return enterpriseCreditService.restrictedConsumerPage(body);
}
@PostMapping(value = "/judicialFreezesPage")
public TableDataInfo judicialFreezesPage(@RequestBody @Valid EnterpriseCreditPageBody body) throws Exception {
return enterpriseCreditService.judicialFreezesPage(body);
}
}
package com.dsk.jsk.domain;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseCreditPageBody extends BasePage {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
/**
* 开始时间(年月日)
*/
private String dateFrom;
/**
* 截止时间(年月日)
*/
private String dateTo;
public boolean isVaildCid() {
return 0 == cid;
}
}
......@@ -132,4 +132,16 @@ public class EnterpriseCreditService {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseCredit/kaitingPureRole", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class);
}
public TableDataInfo restrictedConsumerPage(EnterpriseCreditPageBody body) throws Exception{
if (body.isVaildCid()) return new TableDataInfo(new ArrayList<>(), 0);
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseCredit/restrictedConsumerPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public TableDataInfo judicialFreezesPage(EnterpriseCreditPageBody body) throws Exception{
if (body.isVaildCid()) return new TableDataInfo(new ArrayList<>(), 0);
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseCredit/judicialFreezesPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
}
......@@ -62,4 +62,25 @@ public class CompanySearchController {
public AjaxResult bossCompany(@RequestBody JSONObject object) {
return opportunityRadarService.bossCompany(object);
}
//---------------------------------------中建一局-------------------------------------------
/*
* 查资质
*/
@RequestMapping("/zjyjAptitude")
public AjaxResult zjyjAptitude(@RequestBody JSONObject object) {
return opportunityRadarService.zjyjAptitude(object);
}
/*
* 查资质 不满足
*/
@RequestMapping("/zjyjAptitude/contrary")
public AjaxResult zjyjAptitudeContrary(@RequestBody JSONObject object) {
return opportunityRadarService.zjyjAptitudeContrary(object);
}
}
package com.dsk.search.controller;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.search.service.BusinessOpportunityRadarService;
import com.dsk.search.service.ExportService;
import com.dsk.system.domain.vo.AptitudeVo;
import com.dsk.system.domain.vo.SysUserImportVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
* 查企业
* @author lc
* @ClassName ExportController
* @Date 2023/12/06 16:40
*/
@RequestMapping("/export")
@RestController
public class ExportController {
@Resource
private ExportService exportService;
/**
* 获取导入模板
*/
@PostMapping("/aptitude/importTemplate")
public void importTemplate(HttpServletResponse response) {
List<Object> list = new ArrayList<>();
AptitudeVo aptitudeVo = new AptitudeVo();
aptitudeVo.setCompanyName("重庆市轨道交通(集团)有限公司");
list.add(aptitudeVo);
ExcelUtil.exportTemplate(list, "企业数据", "excel/userImportTemplate.xlsx", response);
}
/*
* 批量资质导出
*/
@RequestMapping("/aptitude/file")
public AjaxResult aptitudeFile(@RequestPart("file") MultipartFile file) throws Exception {
return exportService.aptitudeFile(file);
}
}
......@@ -217,4 +217,14 @@ public class BusinessOpportunityRadarService {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/subscription/yqBxproPage", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult zjyjAptitude(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/zjyj/aptitude", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult zjyjAptitudeContrary(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/zjyj/aptitude/contrary", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
package com.dsk.search.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.constant.Constants;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.excel.ExcelUtils;
import com.dsk.common.exception.ServiceException;
import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.jsk.service.EnterpriseService;
import com.dsk.system.domain.SysUserFileRecord;
import com.dsk.system.domain.vo.AptitudeVo;
import com.dsk.system.service.ISysUserFileRecordService;
import com.dsk.system.utils.DskOpenApiUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author lc
* @ClassName ExportService
* @Date 2023/12/06 16:40
**/
@Service
public class ExportService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
private ISysUserFileRecordService sysUserFileRecordService;
@Value("${dsk.exportBackUrl}")
private String EXPORT_BACK_URL;
public AjaxResult aptitudeFile(MultipartFile file) throws Exception {
ComposeQueryDto composeQueryDto = new ComposeQueryDto();
//识别Excel内容
List<AptitudeVo> companyNameList = new ExcelUtils<>(AptitudeVo.class).importExcel(file.getInputStream(), 2);
if (companyNameList.isEmpty()) {
throw new ServiceException("表格中不存在待导入数据!");
}
List<String> list = new ArrayList<>();
for (int i = 0; i < companyNameList.size(); i++) {
if (i>499){
break;
}
list.add(companyNameList.get(i).getCompanyName());
}
composeQueryDto.setKeyword(String.join(",",list));
SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName("批量导出".concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1);
//生成中
fileRecord.setStatus(2);
fileRecord.setRemark("资质批量导出");
Long fileId = sysUserFileRecordService.exportAdd(fileRecord);
composeQueryDto.setExportUniqueCode(fileId.toString());
//回调函数
composeQueryDto.setExportBackUrl(EXPORT_BACK_URL);
composeQueryDto.setExportExeclName("资质批量导出.xlsx");
dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/areaGroupByProvince", BeanUtil.beanToMap(composeQueryDto,false,false));
return AjaxResult.success();
}
}
......@@ -121,12 +121,6 @@ aside {
}
}
//main-container全局样式
.app-container {
//padding: 16px;
//margin-top: 56px;
}
.components-container {
margin: 30px 50px;
position: relative;
......@@ -226,18 +220,13 @@ li {
margin: 0;
}
.app-main {
position: relative;
background-color: #f5f5f5;
>div{
width: calc(100% - 48px);
}
}
.app-container {
margin: 16px 24px;
width: 100%;
height: 100%;
background-color: #f5f5f5;
padding: 16px 24px;
box-sizing: border-box;
//width: 100%;
overflow: auto;
.el-input__inner {
border-color: #d9d9d9;
color: #232323;
......
......@@ -99,8 +99,10 @@
margin-right: 8px;
}
.el-submenu__icon-arrow {
top: 54%;
right: 5px;
top: 50%;
transform: translateY(-50%);
margin-top: 0px;
right: 8px;
color: #d8d8d8;
}
......@@ -121,7 +123,7 @@
min-width: 128px;
font-size: 12px;
color: #fff !important;
padding-left: 24px !important;
padding-left: 24px;
}
.el-menu--inline .nest-menu .el-menu-item .svg-icon {
display: none;
......@@ -213,7 +215,7 @@
.hideSidebar {
.sidebar-container {
width: 48px !important;
width: $hideSideBarWidth !important;
.sidebar-logo-container {
padding: 0px;
......@@ -233,8 +235,8 @@
}
.main-container {
margin-left: 48px;
width: calc(100% - 48px);
margin-left: $hideSideBarWidth;
width: calc(100% - #{$hideSideBarWidth});
}
.submenu-title-noDropdown {
......@@ -328,6 +330,42 @@
transition: none;
}
}
// 重置导航栏菜单样式
.el-menu {
.secondary-menu {
.secondary-menu-item {
&.el-submenu {
& > {
.el-menu--inline {
padding: 0px;
.secondary-menu-item-sub {
.el-menu-item {
font-size: 14px;
padding-left: 32px !important;
}
& > .secondary-menu-item {
.el-submenu__title {
padding-left: 32px !important;
}
& > .el-menu--inline {
.secondary-menu-item-sub {
.el-menu-item {
font-size: 12px;
padding-left: 40px !important;
}
}
}
}
}
}
}
}
}
}
}
}
// when menu collapsed
......
......@@ -52,6 +52,7 @@ $subMenuHover:#001528;
$base-sidebar-width: 220px;
$sideBarWidth: 220px;
$hideSideBarWidth : 48px;
//系统默认颜色
$systemColor:#0081FF;
......
......@@ -10,16 +10,16 @@
</template>
<script>
import iframeToggle from "./IframeToggle/index"
import iframeToggle from "./IframeToggle/index";
export default {
name: 'AppMain',
components: { iframeToggle },
computed: {
cachedViews() {
return this.$store.state.tagsView.cachedViews
return this.$store.state.tagsView.cachedViews;
},
key() {
return this.$route.fullPath
return this.$route.fullPath;
}
}
}
......@@ -27,12 +27,11 @@ export default {
<style lang="scss" scoped>
.app-main {
/* 50= navbar 50 */
min-height: calc(100vh - 50px);
width: 100%;
position: relative;
height: calc(100% - 56px);
width: 100%;
background: #f5f5f5;
overflow: hidden;
display: flex;
}
.fixed-header + .app-main {
......@@ -41,20 +40,17 @@ export default {
.hasTagsView {
.app-main {
/* 84 = navbar + tags-view = 50 + 34 */
min-height: calc(100vh - 56px);
min-width:1240px;
background: #F5F5F5;
overflow: initial;
height: calc(100% - 56px);
min-width: 1240px;
}
.fixed-header + .app-main {
padding-top: 84px;
}
}
.EnterpriseData{
.EnterpriseData {
.app-main {
overflow: initial;
overflow: hidden;
}
}
</style>
......
......@@ -9,12 +9,12 @@
</el-menu-item>
</app-link>
</template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body class="secondary-menu-item">
<template slot="title">
<item v-if="item.meta" :icon="sideIcon(item)" :title="item.meta.title" />
</template>
<sidebar-item v-for="child in item.children" :key="child.path" :is-nest="true" :item="child" :base-path="resolvePath(child.path,child.query)"
:active-menu="activeMenu" class="nest-menu" />
:active-menu="activeMenu" class="nest-menu secondary-menu-item-sub" />
</el-submenu>
</template>
<!-- 收起 -->
......
<template>
<div :class="{'has-logo':showLogo}" @mouseenter="sideEnter" @mouseleave="sideLeave" :style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
<logo v-if="showLogo" :collapse="isCollapse" />
<el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
<el-menu
:default-active="activeMenu"
:collapse="isCollapse"
:background-color="variables.menuBg"
:text-color="variables.menuText"
:unique-opened="true"
:active-text-color="settings.theme"
:collapse-transition="false"
mode="vertical"
>
<sidebar-item
v-for="(route, index) in hidechildren"
:key="route.path + index"
:is-collapse="isCollapse"
:active-menu="activeMenu"
:item="route"
:base-path="route.path"
:class="route.fixed&&route.fixed.isFixed?'sideFoot':''"
:style="route.fixed&&route.fixed.isFixed?{'bottom': route.fixed.number*50+'px'}: bottomMenu&&index==routes.length-bottomMenu-2?{'padding-bottom': bottomMenu*50+'px'}:''"
/>
</el-menu>
</el-scrollbar>
<div v-show="isExpand" class="side-expand" @click="toggleSideBar">
<img :src="isCollapse?require('@/assets/images/sidebar_right.png'):require('@/assets/images/sidebar_left.png')">
</div>
<div :class="{'has-logo':showLogo}" @mouseenter="sideEnter" @mouseleave="sideLeave"
:style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
<logo v-if="showLogo" :collapse="isCollapse" />
<el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
<el-menu :default-active="activeMenu" :collapse="isCollapse" :background-color="variables.menuBg" :text-color="variables.menuText"
:unique-opened="true" :active-text-color="settings.theme" :collapse-transition="false" mode="vertical">
<sidebar-item v-for="(route, index) in hidechildren" :key="route.path + index" :is-collapse="isCollapse" :active-menu="activeMenu"
:item="route" :base-path="route.path" :class="route.fixed&&route.fixed.isFixed?'sideFoot':''"
:style="route.fixed&&route.fixed.isFixed?{'bottom': route.fixed.number*50+'px'}: bottomMenu&&index==routes.length-bottomMenu-2?{'padding-bottom': bottomMenu*50+'px'}:''" class="secondary-menu"/>
</el-menu>
</el-scrollbar>
<div v-show="isExpand" class="side-expand" @click="toggleSideBar">
<img :src="isCollapse?require('@/assets/images/sidebar_right.png'):require('@/assets/images/sidebar_left.png')">
</div>
</div>
</template>
<script>
......@@ -40,69 +24,69 @@ import variables from "@/assets/styles/variables.scss";
export default {
components: { SidebarItem, Logo },
data() {
return {
isExpand: false
}
},
computed: {
...mapState(["settings"]),
...mapGetters(["sidebarRouters", "sidebar"]),
hidechildren(){
return this.sidebarRouters.map(item=>{
if(item.children?.length){
item.children = item.children.filter(i=>{
if (typeof (i.hidden) == 'boolean' && i.hidden == false || i.path == "index"){
return i
}
})
}
return item
})
},
activeMenu() {
const route = this.$route;
const { meta, path } = route;
// if set path, the sidebar will highlight the path you set
if (meta.activeMenu) {
return meta.activeMenu;
components: { SidebarItem, Logo },
data() {
return {
isExpand: false
};
},
computed: {
...mapState(["settings"]),
...mapGetters(["sidebarRouters", "sidebar"]),
hidechildren() {
return this.sidebarRouters.map(item => {
if (item.children?.length) {
item.children = item.children.filter(i => {
if (typeof (i.hidden) == 'boolean' && i.hidden == false || i.path == "index") {
return i;
}
return path;
},
device() {
return this.$store.state.app.device
},
bottomMenu() {
const routeArr = this.$router.options.routes
const navFixed = routeArr.filter(item => item.fixed && item.fixed.isFixed)
return navFixed.length
},
showLogo() {
return this.$store.state.settings.sidebarLogo;
},
variables() {
return variables;
},
isCollapse() {
return !this.sidebar.opened;
},
});
}
return item;
});
},
activeMenu() {
const route = this.$route;
const { meta, path } = route;
// if set path, the sidebar will highlight the path you set
if (meta.activeMenu) {
return meta.activeMenu;
}
return path;
},
device() {
return this.$store.state.app.device;
},
bottomMenu() {
const routeArr = this.$router.options.routes;
const navFixed = routeArr.filter(item => item.fixed && item.fixed.isFixed);
return navFixed.length;
},
showLogo() {
return this.$store.state.settings.sidebarLogo;
},
variables() {
return variables;
},
isCollapse() {
return !this.sidebar.opened;
},
},
methods: {
toggleSideBar() {
this.$emit('handleBar', this.isCollapse ? '-96' : '96'); // 96为展开宽度和收起宽度之差
this.$store.dispatch('app/toggleSideBar');
},
sideEnter() {
if (this.device !== 'mobile') {
this.isExpand = true;
}
},
sideLeave() {
if (this.device !== 'mobile') {
this.isExpand = false;
}
},
methods: {
toggleSideBar(){
this.$emit('handleBar', this.isCollapse ? '-96' : '96'); // 96为展开宽度和收起宽度之差
this.$store.dispatch('app/toggleSideBar');
},
sideEnter(){
if (this.device !== 'mobile') {
this.isExpand = true;
}
},
sideLeave(){
if (this.device !== 'mobile') {
this.isExpand = false;
}
},
},
},
};
</script>
......@@ -96,6 +96,7 @@ export default {
position: relative;
height: 100%;
width: 100%;
overflow: hidden;
&.mobile.openSidebar {
position: fixed;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.dsk.system.domain.vo;
import com.dsk.common.annotation.Excel;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 用户对象导入VO
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
// @Accessors(chain = true) // 导入不允许使用 会找不到set方法
public class AptitudeVo implements Serializable {
//如需修改以下字段,需同步修改
private static final long serialVersionUID = 1L;
/**
* 序号
*/
@Excel(name = "序号")
private Integer no;
/**
* 企业名称
*/
@Excel(name = "企业名称")
private String companyName;
/**
* 资质名称
*/
@Excel(name = "资质名称")
private String certName;
/**
* 资质编号
*/
@Excel(name = "资质编号")
private String certNo;
/**
* 承包工程范围
*/
@Excel(name = "承包工程范围")
private String contractScope;
/**
* 发证日期
*/
@Excel(name = "发证日期")
private String issueDate;
/**
* 有效期
*/
@Excel(name = "有效期")
private String validityDate;
/**
* 发证机关
*/
@Excel(name = "发证机关")
private String authority;
/**
* 经营范围
*/
@Excel(name = "经营范围")
private String businessScope;
}
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