Commit 0fc75f92 authored by liuChang's avatar liuChang

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

parents d4a4d9d3 8c82824d
package com.dsk.web.controller.system;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.SysUserFileRecord;
import com.dsk.system.service.ISysUserFileRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 系统用户文件记录
*
* @author lcl
* @create 2023/9/15
*/
@RestController
@RequestMapping("/user/file/record")
public class SysUserFileRecordController extends BaseController {
@Autowired
private ISysUserFileRecordService baseService;
/**
* 获取用户文件记录列表
*/
@GetMapping(value = "/list")
public TableDataInfo<SysUserFileRecord> userList(PageQuery page){
return baseService.userList(page);
}
/**
* 添加用户文件记录列表
*/
@PostMapping()
public R<Void> add(@RequestBody SysUserFileRecord bean){
return toAjax(baseService.add(bean));
}
}
...@@ -159,6 +159,7 @@ tenant: ...@@ -159,6 +159,7 @@ tenant:
- sys_user_role - sys_user_role
- sys_client - sys_client
- sys_region - sys_region
- sys_user_file_record
- contact_info - contact_info
- customer_user - customer_user
- customer_follow_record - customer_follow_record
......
package com.dsk.component;
import com.dsk.common.core.domain.R;
import com.dsk.oss.core.OssClient;
import com.dsk.oss.entity.UploadResult;
import com.dsk.oss.factory.OssFactory;
import com.dsk.system.domain.SysUserFileRecord;
import com.dsk.system.domain.vo.SysOssVo;
import com.dsk.system.service.ISysOssService;
import com.dsk.system.service.ISysUserFileRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
/**
* 上传组件
* @author lcl
* @create 2023/9/15
*/
@Component
public class UploadComponent {
@Autowired
private ISysOssService ossService;
@Autowired
private ISysUserFileRecordService fileRecordService;
public R<SysOssVo> upload(String title, ByteArrayOutputStream ba, String suffix, String contentType) {
ByteArrayInputStream bio = new ByteArrayInputStream(ba.toByteArray());
OssClient client = OssFactory.instance();
UploadResult uploadResult = client.uploadSuffix(bio, suffix, contentType);
//总文件记录
SysOssVo sysOssVo = ossService.buildResultEntity(title.concat(suffix), suffix, client.getConfigKey(), uploadResult);
//用户文件记录
fileRecordService.add(new SysUserFileRecord(sysOssVo.getOriginalName(), 1, sysOssVo.getUrl()));
return R.ok(sysOssVo);
}
}
//package com.dsk.jsk.controller;
//
//
//import com.dsk.common.core.domain.AjaxResult;
//import com.dsk.jsk.domain.PageQueryLimit;
//import com.dsk.jsk.domain.bo.ComposeQueryDto;
//import com.dsk.jsk.service.BusinessOpportunityRadarService;
//import org.springframework.web.bind.annotation.*;
//
//import javax.annotation.Resource;
//
//
///**
// * 查企业
// * @author Administrator
// *
// */
//@RequestMapping("/enterprise")
//@RestController
//public class CompanySearchController {
//
//
// @Resource
// BusinessOpportunityRadarService opportunityRadarService;
//
// /*
// * 模糊查询企业名称
// */
// @PostMapping("/index")
// public AjaxResult landMarketPage(@RequestBody ComposeQueryDto dto) {
// if (PageQueryLimit.pageLimit(dto.getPage())){
// return AjaxResult.error("翻页已达到上限");
// }
// return opportunityRadarService.enterpriseIndex(dto);
// }
//
// /*
// * 完全匹配企业名称
// */
// @GetMapping("/findByName/{keyword}")
// public AjaxResult findByName(@PathVariable String keyword) {
// return opportunityRadarService.enterpriseByName(keyword);
// }
//
// /*
// * 完全匹配企业名称
// */
// @PostMapping("/page")
// public AjaxResult page(@RequestBody ComposeQueryDto dto) {
// if (PageQueryLimit.pageLimit(dto.getPage())){
// return AjaxResult.error("翻页已达到上限");
// }
// return opportunityRadarService.enterprisePage(dto);
// }
//}
...@@ -8,6 +8,7 @@ import com.dsk.common.core.domain.AjaxResult; ...@@ -8,6 +8,7 @@ import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R; import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.core.service.OssService; import com.dsk.common.core.service.OssService;
import com.dsk.component.UploadComponent;
import com.dsk.jsk.domain.JskCombineBidPageDto; import com.dsk.jsk.domain.JskCombineBidPageDto;
import com.dsk.jsk.domain.JskCombineCertificateDto; import com.dsk.jsk.domain.JskCombineCertificateDto;
import com.dsk.jsk.domain.JskCombineCountDto; import com.dsk.jsk.domain.JskCombineCountDto;
...@@ -18,8 +19,10 @@ import com.dsk.jsk.service.JskCombineInfoService; ...@@ -18,8 +19,10 @@ import com.dsk.jsk.service.JskCombineInfoService;
import com.dsk.oss.core.OssClient; import com.dsk.oss.core.OssClient;
import com.dsk.oss.entity.UploadResult; import com.dsk.oss.entity.UploadResult;
import com.dsk.oss.factory.OssFactory; import com.dsk.oss.factory.OssFactory;
import com.dsk.system.domain.SysUserFileRecord;
import com.dsk.system.domain.vo.SysOssVo; import com.dsk.system.domain.vo.SysOssVo;
import com.dsk.system.service.ISysOssService; import com.dsk.system.service.ISysOssService;
import com.dsk.system.service.ISysUserFileRecordService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -44,7 +47,7 @@ public class JskCombineInfoController extends BaseController { ...@@ -44,7 +47,7 @@ public class JskCombineInfoController extends BaseController {
@Autowired @Autowired
private JskCombineInfoService baseService; private JskCombineInfoService baseService;
@Autowired @Autowired
private ISysOssService ossService; private UploadComponent uploadComponent;
/** /**
* 集团成员列表 * 集团成员列表
...@@ -164,11 +167,12 @@ public class JskCombineInfoController extends BaseController { ...@@ -164,11 +167,12 @@ public class JskCombineInfoController extends BaseController {
*/ */
@PostMapping("/export/win/bid") @PostMapping("/export/win/bid")
@SaCheckPermission("combine:info:export:win:bid") @SaCheckPermission("combine:info:export:win:bid")
public void exportWinBid(@RequestBody JskCombineSearchDto dto, HttpServletResponse response) { public R<SysOssVo> exportWinBid(@RequestBody JskCombineSearchDto dto) {
List<JskCombineWinBidProjectExportVo> list = baseService.exportWinBid(dto); List<JskCombineWinBidProjectExportVo> list = baseService.exportWinBid(dto);
String title = dto.getCombineName().concat("中标业绩清单");
ExcelUtils<JskCombineWinBidProjectExportVo> util = new ExcelUtils<>(JskCombineWinBidProjectExportVo.class); ExcelUtils<JskCombineWinBidProjectExportVo> util = new ExcelUtils<>(JskCombineWinBidProjectExportVo.class);
util.exportExcel(response, list, "集团中标", dto.getCombineName().concat("中标业绩清单"), true); ByteArrayOutputStream ba = util.exportExcel(list, "集团中标", title, true);
// String fileName = util.localInit(list, "集团中标", dto.getCombineName().concat("中标业绩清单"), true); return uploadComponent.upload(title, ba, Constants.SUFFIX_XLSX, Constants.CONTENT_TYPE_XLSX);
} }
/** /**
...@@ -176,10 +180,12 @@ public class JskCombineInfoController extends BaseController { ...@@ -176,10 +180,12 @@ public class JskCombineInfoController extends BaseController {
*/ */
@PostMapping("/export/bid") @PostMapping("/export/bid")
@SaCheckPermission("combine:info:export:bid") @SaCheckPermission("combine:info:export:bid")
public void exportBid(@RequestBody JskCombineBidPageDto dto, HttpServletResponse response) { public R<SysOssVo> exportBid(@RequestBody JskCombineBidPageDto dto) {
List<JskCombineBidProjectExportVo> list = baseService.exportBid(dto); List<JskCombineBidProjectExportVo> list = baseService.exportBid(dto);
String title = dto.getCombineName().concat("招标公告清单");
ExcelUtils<JskCombineBidProjectExportVo> util = new ExcelUtils<>(JskCombineBidProjectExportVo.class); ExcelUtils<JskCombineBidProjectExportVo> util = new ExcelUtils<>(JskCombineBidProjectExportVo.class);
util.exportExcel(response, list, "集团招标", dto.getCombineName().concat("招标公告清单"), true); ByteArrayOutputStream ba = util.exportExcel(list, "集团招标", title, true);
return uploadComponent.upload(title, ba, Constants.SUFFIX_XLSX, Constants.CONTENT_TYPE_XLSX);
} }
...@@ -191,24 +197,6 @@ public class JskCombineInfoController extends BaseController { ...@@ -191,24 +197,6 @@ public class JskCombineInfoController extends BaseController {
return baseService.bidPage(dto); return baseService.bidPage(dto);
} }
/**
* 导出上传oss测试
*/
@PostMapping("/export/upload")
public R<SysOssVo> exportuUpload(@RequestBody JskCombineSearchDto dto) {
List<JskCombineWinBidProjectExportVo> list = baseService.exportWinBid(dto);
String title = dto.getCombineName().concat("中标业绩清单");
ExcelUtils<JskCombineWinBidProjectExportVo> util = new ExcelUtils<>(JskCombineWinBidProjectExportVo.class);
ByteArrayOutputStream ba = util.exportExcel(list, "集团中标", title, true);
ByteArrayInputStream bio = new ByteArrayInputStream(ba.toByteArray());
OssClient client = OssFactory.instance();
UploadResult uploadResult = client.uploadSuffix(bio, Constants.SUFFIX_XLSX, Constants.CONTENT_TYPE_XLSX);
//总文件记录
SysOssVo sysOssVo = ossService.buildResultEntity(title.concat(Constants.SUFFIX_XLSX), Constants.SUFFIX_XLSX, client.getConfigKey(), uploadResult);
return R.ok(sysOssVo);
}
/*** /***
*@Description: 获取集团logo *@Description: 获取集团logo
*@Param: *@Param:
...@@ -217,7 +205,7 @@ public class JskCombineInfoController extends BaseController { ...@@ -217,7 +205,7 @@ public class JskCombineInfoController extends BaseController {
*@date: 2023/9/12 16:05 *@date: 2023/9/12 16:05
*/ */
@RequestMapping(value = "/combineMemberLogo", method = RequestMethod.POST) @RequestMapping(value = "/combineMemberLogo", method = RequestMethod.POST)
public R combineMemberLogo(@RequestBody Map<String,Object> paramMap) { public R combineMemberLogo(@RequestBody Map<String, Object> paramMap) {
return baseService.combineMemberLogo(paramMap); return baseService.combineMemberLogo(paramMap);
} }
......
...@@ -3,17 +3,24 @@ package com.dsk.search.controller; ...@@ -3,17 +3,24 @@ package com.dsk.search.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.dsk.biz.utils.ExcelUtils; import com.dsk.biz.utils.ExcelUtils;
import com.dsk.common.constant.Constants;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R;
import com.dsk.common.utils.poi.ExcelUtil; import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.component.UploadComponent;
import com.dsk.jsk.domain.bo.ComposeQueryDto; import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.jsk.domain.vo.ImportantProjectExportVo; import com.dsk.jsk.domain.vo.ImportantProjectExportVo;
import com.dsk.jsk.domain.vo.JskCombineBidProjectExportVo;
import com.dsk.search.service.BusinessOpportunityRadarService; import com.dsk.search.service.BusinessOpportunityRadarService;
import com.dsk.system.domain.vo.SysOssVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.util.List; import java.util.List;
...@@ -29,6 +36,8 @@ public class BusinessOpportunityRadarController { ...@@ -29,6 +36,8 @@ public class BusinessOpportunityRadarController {
@Resource @Resource
private BusinessOpportunityRadarService opportunityRadarService; private BusinessOpportunityRadarService opportunityRadarService;
@Autowired
private UploadComponent uploadComponent;
/* /*
* 公招标讯 * 公招标讯
...@@ -184,11 +193,12 @@ public class BusinessOpportunityRadarController { ...@@ -184,11 +193,12 @@ public class BusinessOpportunityRadarController {
*/ */
@RequestMapping("/export/important") @RequestMapping("/export/important")
@SaCheckPermission("radar:export:important") @SaCheckPermission("radar:export:important")
public void exportBid(@RequestBody JSONObject object, HttpServletResponse response) { public R<SysOssVo> exportBid(@RequestBody JSONObject object, HttpServletResponse response) {
List<ImportantProjectExportVo> list = opportunityRadarService.exportImportant(object); List<ImportantProjectExportVo> list = opportunityRadarService.exportImportant(object);
// ExcelUtil<ImportantProjectExportVo> util = new ExcelUtil<>(ImportantProjectExportVo.class); String title = "重点项目导出明细";
ExcelUtils<ImportantProjectExportVo> util = new ExcelUtils<>(ImportantProjectExportVo.class); ExcelUtils<ImportantProjectExportVo> util = new ExcelUtils<>(ImportantProjectExportVo.class);
util.exportExcel(response, list, "重点项目", "重点项目导出明细", true); ByteArrayOutputStream ba = util.exportExcel(list, "重点项目", title, true);
return uploadComponent.upload(title, ba, Constants.SUFFIX_XLSX, Constants.CONTENT_TYPE_XLSX);
} }
/* /*
......
...@@ -76,6 +76,14 @@ export function bidPage(data) { ...@@ -76,6 +76,14 @@ export function bidPage(data) {
data: data data: data
}) })
} }
// 集团业绩导出
export function exportWinBid(data) {
return request({
url: '/combine/info/export/win/bid',
method: 'post',
data: data
})
}
// 集团招标导出 // 集团招标导出
export function exportBid(data) { export function exportBid(data) {
return request({ return request({
......
...@@ -133,3 +133,12 @@ export function deptTreeSelect() { ...@@ -133,3 +133,12 @@ export function deptTreeSelect() {
method: 'get' method: 'get'
}) })
} }
// 用户文件记录列表
export function fileList(data) {
return request({
url: '/user/file/record/list',
method: 'get',
params:data
})
}
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<script> <script>
import mixin from '../../party-a/mixins/mixin' import mixin from '../../party-a/mixins/mixin'
import {businessList} from '@/api/detail/groupAccount/groupAccount' import {businessList,exportWinBid} from '@/api/detail/groupAccount/groupAccount'
import dataRegion from '@/assets/json/dataRegion1' import dataRegion from '@/assets/json/dataRegion1'
import { getDictType } from '@/api/main' import { getDictType } from '@/api/main'
export default { export default {
...@@ -271,8 +271,27 @@ ...@@ -271,8 +271,27 @@
this.dataEXCEL.pageSize=this.tableDataTotal; this.dataEXCEL.pageSize=this.tableDataTotal;
} }
delete this.dataEXCEL.pageNum delete this.dataEXCEL.pageNum
this.$download.exportByPost('/combine/info/export/win/bid',this.dataEXCEL,'集团中标.xlsx'); exportWinBid(this.dataEXCEL).then(res=>{
if(res.code === 200){
this.downloadFile(res.data.url,res.data.originalName)
}
})
// this.$download.exportByPost('/combine/info/export/win/bid',this.dataEXCEL,'集团中标.xlsx');
}, },
downloadFile(url, fileName) {
const x = new XMLHttpRequest()
x.open("GET", url, true)
x.responseType = 'blob'
x.onload=function(e) {
const url = window.URL.createObjectURL(x.response)
const a = document.createElement('a')
a.href = url
a.download = fileName
a.click()
a.remove()
}
x.send()
}
} }
} }
</script> </script>
......
...@@ -363,7 +363,25 @@ ...@@ -363,7 +363,25 @@
this.dataEXCEL.pageSize=this.tableDataTotal; this.dataEXCEL.pageSize=this.tableDataTotal;
} }
delete this.dataEXCEL.pageNum delete this.dataEXCEL.pageNum
this.$download.exportByPost('/combine/info/export/bid',this.dataEXCEL,'集团招标.xlsx'); exportBid(this.dataEXCEL).then(res=>{
if(res.code === 200){
this.downloadFile(res.data.url,res.data.originalName)
}
})
},
downloadFile(url, fileName) {
const x = new XMLHttpRequest()
x.open("GET", url, true)
x.responseType = 'blob'
x.onload=function(e) {
const url = window.URL.createObjectURL(x.response)
const a = document.createElement('a')
a.href = url
a.download = fileName
a.click()
a.remove()
}
x.send()
}, },
clickFocus(e){ clickFocus(e){
document.getElementById(e).classList.toggle('span-ba') document.getElementById(e).classList.toggle('span-ba')
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
return { return {
loading: false, // 是否加载完成-当前页控制 loading: false, // 是否加载完成-当前页控制
iframeTimer: '', // 是否加载中定时器-当前页控制 iframeTimer: '', // 是否加载中定时器-当前页控制
footHeight: 0, //底部高度,若为0(页面内部嵌套或者没有底部板块)
iframeHight: window.innerHeight, // iframe高度-当前页控制 iframeHight: window.innerHeight, // iframe高度-当前页控制
navigation: {isFixed: true, fixedHeight: 56, totalHeight: 68}, // iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度 navigation: {isFixed: true, fixedHeight: 56, totalHeight: 68}, // iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度
src: '', //iframe嵌套页面地址 src: '', //iframe嵌套页面地址
...@@ -34,11 +35,11 @@ ...@@ -34,11 +35,11 @@
}, },
mounted() { mounted() {
this.iframeLoading() // 判断iframe页面是否加载完成-当前页控制 this.iframeLoading() // 判断iframe页面是否加载完成-当前页控制
steerScroll('companyIframe', this.navigation, true) // 监听滚动(iframe的id、页面排除iframe后页面剩下顶部高度[例:80]、增加监听[不传就是移除监听]、父级id[不带默认就是铺满整个页面]] steerScroll('companyIframe', this.navigation, this.footHeight, true) // iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略
}, },
beforeDestroy() { beforeDestroy() {
clearInterval(this.iframeTimer) // -当前页控制 clearInterval(this.iframeTimer) // -当前页控制
steerScroll('companyIframe', this.navigation) // 销毁滚动 steerScroll('companyIframe', this.navigation, this.footHeight) // iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
clearInterval(this.tokentimer) clearInterval(this.tokentimer)
}, },
methods: { methods: {
......
...@@ -272,8 +272,8 @@ ...@@ -272,8 +272,8 @@
if(this.nosend == true){ if(this.nosend == true){
return false return false
} }
// logincaptchaSms(this.dxform).then(res=>{ logincaptchaSms(this.dxform).then(res=>{
// if(res.code == 200){ if(res.code == 200){
this.$message.success('已发送短信!') this.$message.success('已发送短信!')
let _this = this let _this = this
...@@ -288,14 +288,14 @@ ...@@ -288,14 +288,14 @@
_this.smstime = 60 _this.smstime = 60
} }
},1000) },1000)
// }else{ }else{
// this.$message.error(res.msg) this.$message.error(res.msg)
// this.getCode() this.getCode()
// this.showcode = true this.showcode = true
// } }
// }).catch(res=>{ }).catch(res=>{
// this.$message.error(res.msg) this.$message.error(res.msg)
// }) })
}, },
handleLogin() { handleLogin() {
this.$refs.loginForm.validate(valid => { this.$refs.loginForm.validate(valid => {
......
...@@ -40,20 +40,36 @@ ...@@ -40,20 +40,36 @@
<el-table-column prop="major" label="资质类型"/> <el-table-column prop="major" label="资质类型"/>
<el-table-column label="特级" align="right"> <el-table-column label="特级" align="right">
<el-table-column prop="tjCount" label="数量(个)" align="right"/> <el-table-column prop="tjCount" label="数量" align="right">
<el-table-column prop="tjRate" label="占比(%)" align="right"/> <template slot-scope="scope">{{ scope.row.tjCount }}</template>
</el-table-column>
<el-table-column prop="tjRate" label="占比" align="right">
<template slot-scope="scope">{{ scope.row.tjRate }}%</template>
</el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="一级" align="right"> <el-table-column label="一级" align="right">
<el-table-column prop="oneCount" label="数量(个)" align="right"/> <el-table-column prop="oneCount" label="数量" align="right">
<el-table-column prop="oneRate" label="占比(%)" align="right"/> <template slot-scope="scope">{{ scope.row.oneCount }}</template>
</el-table-column>
<el-table-column prop="oneRate" label="占比" align="right">
<template slot-scope="scope">{{ scope.row.oneRate }}%</template>
</el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="二级" align="right"> <el-table-column label="二级" align="right">
<el-table-column prop="twoCount" label="数量(个)" align="right"/> <el-table-column prop="twoCount" label="数量" align="right">
<el-table-column prop="twoRate" label="占比(%)" align="right"/> <template slot-scope="scope">{{ scope.row.twoCount }}</template>
</el-table-column>
<el-table-column prop="twoRate" label="占比" align="right">
<template slot-scope="scope">{{ scope.row.twoRate }}%</template>
</el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="三级" align="right"> <el-table-column label="三级" align="right">
<el-table-column prop="threeCount" label="数量(个)" align="right"/> <el-table-column prop="threeCount" label="数量" align="right">
<el-table-column prop="threeRate" label="占比(%)" align="right"/> <template slot-scope="scope">{{ scope.row.threeCount }}</template>
</el-table-column>
<el-table-column prop="threeRate" label="占比" align="right">
<template slot-scope="scope">{{ scope.row.threeRate }}%</template>
</el-table-column>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
...@@ -85,20 +101,36 @@ ...@@ -85,20 +101,36 @@
</el-table-column> </el-table-column>
<el-table-column prop="province" label="地区"/> <el-table-column prop="province" label="地区"/>
<el-table-column label="特级" align="right"> <el-table-column label="特级" align="right">
<el-table-column prop="tjCount" label="数量(个)" align="right"/> <el-table-column prop="tjCount" label="数量" align="right">
<el-table-column prop="tjRate" label="占比(%)" align="right"/> <template slot-scope="scope">{{ scope.row.tjCount }}</template>
</el-table-column>
<el-table-column prop="tjRate" label="占比" align="right">
<template slot-scope="scope">{{ scope.row.tjRate }}%</template>
</el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="一级" align="right"> <el-table-column label="一级" align="right">
<el-table-column prop="oneCount" label="数量(个)" align="right"/> <el-table-column prop="oneCount" label="数量" align="right">
<el-table-column prop="oneRate" label="占比(%)" align="right"/> <template slot-scope="scope">{{ scope.row.oneCount }}</template>
</el-table-column>
<el-table-column prop="oneRate" label="占比" align="right">
<template slot-scope="scope">{{ scope.row.oneRate }}%</template>
</el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="二级" align="right"> <el-table-column label="二级" align="right">
<el-table-column prop="twoCount" label="数量(个)" align="right"/> <el-table-column prop="twoCount" label="数量" align="right">
<el-table-column prop="twoRate" label="占比(%)" align="right"/> <template slot-scope="scope">{{ scope.row.twoCount }}</template>
</el-table-column>
<el-table-column prop="twoRate" label="占比" align="right">
<template slot-scope="scope">{{ scope.row.twoRate }}%</template>
</el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="三级" align="right"> <el-table-column label="三级" align="right">
<el-table-column prop="threeCount" label="数量(个)" align="right"/> <el-table-column prop="threeCount" label="数量" align="right">
<el-table-column prop="threeRate" label="占比(%)" align="right"/> <template slot-scope="scope">{{ scope.row.threeCount }}</template>
</el-table-column>
<el-table-column prop="threeRate" label="占比" align="right">
<template slot-scope="scope">{{ scope.row.threeRate }}%</template>
</el-table-column>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
...@@ -127,7 +159,9 @@ ...@@ -127,7 +159,9 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="province" label="地区" /> <el-table-column prop="province" label="地区" />
<el-table-column prop="count" label="企业异地备案数量(个)" sortable align="right"/> <el-table-column prop="count" label="企业异地备案数量" sortable align="right">
<template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
<!--<el-table-column prop="zb" label="占比"/>--> <!--<el-table-column prop="zb" label="占比"/>-->
</el-table> </el-table>
</div> </div>
......
...@@ -167,6 +167,7 @@ ...@@ -167,6 +167,7 @@
getYears(){ getYears(){
getYears({}).then(res => { getYears({}).then(res => {
this.yearOptions=res.data.reverse(); this.yearOptions=res.data.reverse();
this.queryParams.year=this.yearOptions[0].year
}) })
}, },
//地区 //地区
......
...@@ -31,8 +31,12 @@ ...@@ -31,8 +31,12 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="type" label="供应方式" :formatter="formatStatus"/> <el-table-column prop="type" label="供应方式" :formatter="formatStatus"/>
<el-table-column prop="count" label="土地交易项目 (个)" align="right" :formatter="formatStatus" sortable/> <el-table-column prop="count" label="土地交易项目" align="right" :formatter="formatStatus" sortable>
<el-table-column prop="rate" label="占比(%)" align="right" :formatter="formatStatus" width="100"/> <template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
<el-table-column prop="rate" label="占比" align="right" :formatter="formatStatus" width="90">
<template slot-scope="scope">{{ scope.row.rate }}%</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -70,8 +74,12 @@ ...@@ -70,8 +74,12 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="type" label="供应方式" :formatter="formatStatus"/> <el-table-column prop="type" label="供应方式" :formatter="formatStatus"/>
<el-table-column prop="count" label="土地交易项目 (个)" align="right" :formatter="formatStatus" sortable/> <el-table-column prop="count" label="土地交易项目" align="right" :formatter="formatStatus" sortable>
<el-table-column prop="rate" label="占比(%)" align="right" :formatter="formatStatus" width="100"/> <template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
<el-table-column prop="rate" label="占比" align="right" :formatter="formatStatus" width="90">
<template slot-scope="scope">{{ scope.row.rate }}%</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -112,8 +120,12 @@ ...@@ -112,8 +120,12 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="province" label="地区" :formatter="formatStatus"/> <el-table-column prop="province" label="地区" :formatter="formatStatus"/>
<el-table-column prop="count" label="土地交易项目 (个)" align="right" :formatter="formatStatus" sortable/> <el-table-column prop="count" label="土地交易项目" align="right" :formatter="formatStatus" sortable>
<el-table-column prop="rate" label="占比(%)" align="right" :formatter="formatStatus" width="100"/> <template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
<el-table-column prop="rate" label="占比" align="right" :formatter="formatStatus" width="90">
<template slot-scope="scope">{{ scope.row.rate }}%</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -147,8 +159,12 @@ ...@@ -147,8 +159,12 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="type" label="年份" :formatter="formatStatus"/> <el-table-column prop="type" label="年份" :formatter="formatStatus"/>
<el-table-column prop="count" label="土地交易项目 (个)" align="right" :formatter="formatStatus" sortable/> <el-table-column prop="count" label="土地交易项目" align="right" :formatter="formatStatus" sortable>
<el-table-column prop="rate" label="占比(%)" align="right" :formatter="formatStatus" width="100"/> <template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
<el-table-column prop="rate" label="占比" align="right" :formatter="formatStatus" width="90">
<template slot-scope="scope">{{ scope.row.rate }}%</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -789,6 +805,9 @@ export default { ...@@ -789,6 +805,9 @@ export default {
width: 33%; width: 33%;
float: right; float: right;
::v-deep .el-table{ ::v-deep .el-table{
.caret-wrapper{
width: 13px;
}
.sort-caret.ascending{ .sort-caret.ascending{
border-bottom-color: rgba(0,129,255,0.5); border-bottom-color: rgba(0,129,255,0.5);
} }
......
...@@ -27,7 +27,9 @@ ...@@ -27,7 +27,9 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="type" label="年份" :formatter="formatStatus"/> <el-table-column prop="type" label="年份" :formatter="formatStatus"/>
<el-table-column prop="count" label="招标数量(个)" align="right" :formatter="formatStatus" sortable/> <el-table-column prop="count" label="招标数量" align="right" :formatter="formatStatus" sortable>
<template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -63,8 +65,12 @@ ...@@ -63,8 +65,12 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="province" label="地区" :formatter="formatStatus"/> <el-table-column prop="province" label="地区" :formatter="formatStatus"/>
<el-table-column prop="count" label="招标数量 (个)" align="right" :formatter="formatStatus" sortable/> <el-table-column prop="count" label="招标数量" align="right" :formatter="formatStatus" sortable>
<el-table-column prop="rate" label="占比(%)" align="right" :formatter="formatStatus" width="100" /> <template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
<el-table-column prop="rate" label="占比" align="right" :formatter="formatStatus" width="100">
<template slot-scope="scope">{{ scope.row.rate }}%</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -101,8 +107,12 @@ ...@@ -101,8 +107,12 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="label" label="时间" :formatter="formatStatus"/> <el-table-column prop="label" label="时间" :formatter="formatStatus"/>
<el-table-column prop="count" label="招标数量(个)" align="right" :formatter="formatStatus" sortable/> <el-table-column prop="count" label="招标数量" align="right" :formatter="formatStatus" sortable>
<el-table-column prop="rate" label="占比(%)" align="right" :formatter="formatStatus" width="100" /> <template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
<el-table-column prop="rate" label="占比" align="right" :formatter="formatStatus" width="100">
<template slot-scope="scope">{{ scope.row.rate }}%</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
......
...@@ -30,10 +30,18 @@ ...@@ -30,10 +30,18 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="type" label="项目类型" :formatter="formatStatus" width="100"/> <el-table-column prop="type" label="项目类型" :formatter="formatStatus" width="100"/>
<el-table-column prop="count" label="中标数量 (个)" align="right" :formatter="formatStatus" sortable width="130"/> <el-table-column prop="count" label="中标数量" align="right" :formatter="formatStatus" sortable width="130">
<el-table-column prop="countRate" label="数量占比(%)" align="right" :formatter="formatStatus" sortable width="140"/> <template slot-scope="scope">{{ scope.row.count }}</template>
<el-table-column prop="money" label="中标总金额 (万元)" align="right" :formatter="formatStatus" sortable width="170"/> </el-table-column>
<el-table-column prop="moneyRate" label="金额占比(%)" align="right" :formatter="formatStatus" sortable width="140"/> <el-table-column prop="countRate" label="数量占比" align="right" :formatter="formatStatus" sortable width="140">
<template slot-scope="scope">{{ scope.row.countRate }}%</template>
</el-table-column>
<el-table-column prop="money" label="中标总金额" align="right" :formatter="formatStatus" sortable width="190">
<template slot-scope="scope">{{ scope.row.money }}万元</template>
</el-table-column>
<el-table-column prop="moneyRate" label="金额占比" align="right" :formatter="formatStatus" sortable width="120">
<template slot-scope="scope">{{ scope.row.moneyRate }}%</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -70,10 +78,18 @@ ...@@ -70,10 +78,18 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="province" label="地区" :formatter="formatStatus" width="100"/> <el-table-column prop="province" label="地区" :formatter="formatStatus" width="100"/>
<el-table-column prop="count" label="中标数量 (个)" align="right" :formatter="formatStatus" sortable width="130"/> <el-table-column prop="count" label="中标数量" align="right" :formatter="formatStatus" sortable width="130">
<el-table-column prop="countRate" label="数量占比(%)" align="right" :formatter="formatStatus" sortable width="150"/> <template slot-scope="scope">{{ scope.row.count }}</template>
<el-table-column prop="sumMoney" label="中标总金额 (万元)" align="right" :formatter="formatStatus" sortable width="170"/> </el-table-column>
<el-table-column prop="moneyRate" label="金额占比(%)" align="right" :formatter="formatStatus" sortable width="145"/> <el-table-column prop="countRate" label="数量占比" align="right" :formatter="formatStatus" sortable width="140">
<template slot-scope="scope">{{ scope.row.countRate }}%</template>
</el-table-column>
<el-table-column prop="sumMoney" label="中标总金额" align="right" :formatter="formatStatus" sortable width="190">
<template slot-scope="scope">{{ scope.row.sumMoney }}万元</template>
</el-table-column>
<el-table-column prop="moneyRate" label="金额占比" align="right" :formatter="formatStatus" sortable width="120">
<template slot-scope="scope">{{ scope.row.moneyRate }}%</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -110,8 +126,12 @@ ...@@ -110,8 +126,12 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="rangeName" label="中标金额" :formatter="formatStatus"/> <el-table-column prop="rangeName" label="中标金额" :formatter="formatStatus"/>
<el-table-column prop="count" label="中标数量 (个)" align="right" :formatter="formatStatus" sortable/> <el-table-column prop="count" label="中标数量" align="right" :formatter="formatStatus" sortable>
<el-table-column prop="rate" label="占比(%)" align="right" :formatter="formatStatus" width="120" sortable/> <template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
<el-table-column prop="rate" label="占比" align="right" :formatter="formatStatus" width="120" sortable>
<template slot-scope="scope">{{ scope.row.rate }}%</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -145,8 +165,12 @@ ...@@ -145,8 +165,12 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="year" label="年份" :formatter="formatStatus" width="100"/> <el-table-column prop="year" label="年份" :formatter="formatStatus" width="100"/>
<el-table-column prop="count" label="中标数量 (个)" align="right" :formatter="formatStatus" sortable/> <el-table-column prop="count" label="中标数量" align="right" :formatter="formatStatus" sortable>
<el-table-column prop="sumMoney" label="中标总金额(万元)" align="right" :formatter="formatStatus"/> <template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
<el-table-column prop="sumMoney" label="中标总金额" align="right" :formatter="formatStatus">
<template slot-scope="scope">{{ scope.row.sumMoney }}万元</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -183,8 +207,12 @@ ...@@ -183,8 +207,12 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="label" label="时间" :formatter="formatStatus" width="130"/> <el-table-column prop="label" label="时间" :formatter="formatStatus" width="130"/>
<el-table-column prop="rate" label="下浮率(%)" align="right" :formatter="formatStatus" sortable/> <el-table-column prop="rate" label="下浮率" align="right" :formatter="formatStatus" sortable>
<el-table-column prop="count" label="统计项目数量 (个)" align="right" :formatter="formatStatus"/> <template slot-scope="scope">{{ scope.row.rate }}%</template>
</el-table-column>
<el-table-column prop="count" label="统计项目数量" align="right" :formatter="formatStatus">
<template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -225,9 +253,15 @@ ...@@ -225,9 +253,15 @@
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="month" label="时间" :formatter="formatStatus" width="120"/> <el-table-column prop="month" label="时间" :formatter="formatStatus" width="120"/>
<el-table-column prop="sgRate" label="施工类下浮率(%)" align="right" :formatter="formatStatus" width="160"/> <el-table-column prop="sgRate" label="施工类下浮率" align="right" :formatter="formatStatus" width="160">
<el-table-column prop="kcsjRate" label="勘察设计类下浮率(%)" align="right" :formatter="formatStatus"/> <template slot-scope="scope">{{ scope.row.sgRate }}%</template>
<el-table-column prop="jlRate" label="监理类下浮率(%)" align="right" :formatter="formatStatus" width="160"/> </el-table-column>
<el-table-column prop="kcsjRate" label="勘察设计类下浮率" align="right" :formatter="formatStatus">
<template slot-scope="scope">{{ scope.row.kcsjRate }}%</template>
</el-table-column>
<el-table-column prop="jlRate" label="监理类下浮率" align="right" :formatter="formatStatus" width="160">
<template slot-scope="scope">{{ scope.row.jlRate }}%</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
......
...@@ -673,7 +673,6 @@ export default { ...@@ -673,7 +673,6 @@ export default {
submitForm: function() { submitForm: function() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
this.form.userName = this.form.phonenumber
if (this.form.userId != undefined) { if (this.form.userId != undefined) {
updateUser(this.form).then(response => { updateUser(this.form).then(response => {
if(response.code == 200){ if(response.code == 200){
...@@ -687,6 +686,7 @@ export default { ...@@ -687,6 +686,7 @@ export default {
} }
}); });
} else { } else {
this.form.userName = this.form.phonenumber
addUser(this.form).then(response => { addUser(this.form).then(response => {
if(response.code == 200){ if(response.code == 200){
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
......
...@@ -53,6 +53,38 @@ ...@@ -53,6 +53,38 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</el-card> </el-card>
<el-card style="margin-top: 16px" v-if="tableDataTotal > 0">
<div slot="header" class="clearfix">
<span>数据导出</span>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="table-item">
<el-table
class="fixed-table"
:data="tableData"
element-loading-text="Loading"
v-horizontal-scroll="'hover'"
max-height="640px"
border
highlight-current-row
v-if="tableDataTotal > 0 && !isSkeleton"
>
<el-table-column label="序号" width="60" align="left">
<template slot-scope="scope">{{ (params.pageNum - 1 )* params.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="导出表格名称" align="left" prop="fileName"></el-table-column>
<el-table-column label="导出时间" align="left" prop="createTime"></el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope" align="left">
<div class="wordprimary" style="text-align: left" @click="getFile(scope.row.url)">下载表格</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination-box" v-if="tableDataTotal>params.pageSize">
<el-pagination background :current-page="params.pageNum" :page-size="params.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</el-card>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
...@@ -62,21 +94,27 @@ ...@@ -62,21 +94,27 @@
import userAvatar from "./userAvatar"; import userAvatar from "./userAvatar";
import userInfo from "./userInfo"; import userInfo from "./userInfo";
import resetPwd from "./resetPwd"; import resetPwd from "./resetPwd";
import { getUserProfile } from "@/api/system/user"; import { getUserProfile,fileList } from "@/api/system/user";
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
name: "Profile", name: "Profile",
components: { userAvatar, userInfo, resetPwd }, components: { userAvatar, userInfo, resetPwd,skeleton },
data() { data() {
return { return {
user: {}, user: {},
roleGroup: {}, roleGroup: {},
postGroup: {}, postGroup: {},
activeTab: "userinfo" activeTab: "userinfo",
isSkeleton:true,
tableData:[],
tableDataTotal:0,
params:{pageNum:1,pageSize:10},
}; };
}, },
created() { created() {
this.getUser(); this.getUser();
this.fileList()
}, },
methods: { methods: {
getUser() { getUser() {
...@@ -85,6 +123,30 @@ export default { ...@@ -85,6 +123,30 @@ export default {
this.roleGroup = response.data.roleGroup; this.roleGroup = response.data.roleGroup;
this.postGroup = response.data.postGroup; this.postGroup = response.data.postGroup;
}); });
},
fileList(){
fileList(this.params).then(res=>{
if(res.code == 200){
this.tableData = res.rows
this.tableDataTotal = res.total
}else{
this.tableData = []
this.tableDataTotal = 0
}
this.isSkeleton = false
})
},
handleCurrentChange(val){
this.params.pageNum = val
this.fileList()
},
handleSizeChange(val){
this.params.pageNum = 1
this.params.pageSize = val
this.fileList()
},
getFile(url){
window.open(url)
} }
} }
}; };
......
package com.dsk.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author lcl
* @create 2023/9/15
*/
@Data
@NoArgsConstructor
@TableName("sys_user_file_record")
public class SysUserFileRecord implements Serializable {
@TableId(value = "id")
private Long id;
private String fileName;
private Integer type;
private String url;
private Long userId;
private Integer status;
private String remark;
private Date createTime;
public SysUserFileRecord(String fileName, Integer type, String url) {
this.fileName = fileName;
this.type = type;
this.url = url;
}
}
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.SysUserFileRecord;
/**
* 用户文件记录
* @author lcl
* @create 2023/9/15
*/
public interface SysUserFileRecordMapper extends BaseMapper<SysUserFileRecord> {
}
package com.dsk.system.service;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.SysUserFileRecord;
/**
* @author lcl
* @create 2023/9/15
*/
public interface ISysUserFileRecordService {
TableDataInfo<SysUserFileRecord> userList(PageQuery page);
boolean add(SysUserFileRecord bean);
}
package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanException;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.helper.LoginHelper;
import com.dsk.system.domain.SysUserFileRecord;
import com.dsk.system.mapper.SysUserFileRecordMapper;
import com.dsk.system.service.ISysUserFileRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.Date;
/**
* 用户文件记录
*
* @author lcl
* @create 2023/9/15
*/
@Slf4j
@Service
public class SysUserFileRecordServiceImpl implements ISysUserFileRecordService
{
@Resource
private SysUserFileRecordMapper baseMapper;
@Override
public TableDataInfo<SysUserFileRecord> userList(PageQuery page)
{
return TableDataInfo.build(
baseMapper.selectPage(page.build(), Wrappers.<SysUserFileRecord>lambdaQuery()
.eq(SysUserFileRecord::getUserId, LoginHelper.getUserId())
.eq(SysUserFileRecord::getType, 1)
.ge(SysUserFileRecord::getCreateTime, DateUtil.offsetDay(new Date(), -30))
.orderByDesc(SysUserFileRecord::getCreateTime))
);
}
@Override
public boolean add(SysUserFileRecord bean)
{
dataVerify(bean);
return baseMapper.insert(bean) != 0;
}
private void dataVerify(SysUserFileRecord bean)
{
if(ObjectUtils.isEmpty(bean.getUrl())) throw new BeanException("文件存储链接不能为空!");
if(ObjectUtils.isEmpty(bean.getFileName())) throw new BeanException("文件名称不能为空!");
if(ObjectUtils.isEmpty(bean.getType())) throw new BeanException("文件类型不能为空!");
bean.setUserId(LoginHelper.getUserId());
}
}
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