Commit 556ffc80 authored by lcl's avatar lcl

代码清理

parent 99f0d105
......@@ -8,7 +8,6 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.biz.utils.ExcelUtils;
import com.dsk.common.annotation.Log;
import com.dsk.common.constant.GlobalConstants;
import com.dsk.common.constant.TenantConstants;
......@@ -17,6 +16,7 @@ import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.excel.ExcelUtils;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.tenant.helper.TenantHelper;
......
package com.dsk.biz.utils;
package com.dsk.common.excel;
import cn.hutool.core.convert.Convert;
import com.dsk.common.annotation.Excel;
......@@ -9,7 +9,6 @@ import com.dsk.common.utils.DictUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.file.FileTypeUtils;
import com.dsk.common.utils.file.FileUploadUtils;
import com.dsk.common.utils.file.FileUtils;
import com.dsk.common.utils.file.ImageUtils;
import com.dsk.common.utils.poi.ExcelHandlerAdapter;
import com.dsk.common.utils.poi.ExcelUtil;
......
package com.dsk.biz.controller;
import com.dsk.biz.domain.BusinessBacklog;
import com.dsk.biz.domain.bo.BusinessBacklogListDto;
import com.dsk.biz.domain.vo.BusinessBacklogListVo;
import com.dsk.biz.service.IBusinessBacklogService;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 项目工作待办Controller
*
* @author lxl
* @date 2023-05-17
*/
@RestController
@RequestMapping("/business/backlog")
@Slf4j
public class BusinessBacklogController extends BaseController
{
@Autowired
private IBusinessBacklogService businessBacklogService;
/**
* 分页查询项目工作待办列表
*/
// @PreAuthorize("@ss.hasPermi('system:backlog:list')")
@GetMapping("/list")
public TableDataInfo<BusinessBacklogListVo> list(BusinessBacklogListDto dto, PageQuery pageQuery)
{
return businessBacklogService.selectBusinessBacklogList(dto, pageQuery);
}
/**
* 新增项目工作待办
*/
// @PreAuthorize("@ss.hasPermi('system:backlog:add')")
// @Log(title = "项目工作待办", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R<Void> add(@RequestBody BusinessBacklog businessBacklog)
{
return toAjax(businessBacklogService.insertBusinessBacklog(businessBacklog));
}
/**
* 修改项目工作待办
*/
// @PreAuthorize("@ss.hasPermi('system:backlog:edit')")
// @Log(title = "项目工作待办", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
public R<Void> edit(@RequestBody BusinessBacklog businessBacklog)
{
return toAjax(businessBacklogService.updateBusinessBacklog(businessBacklog));
}
/**
* 获取项目工作代办逾期数量
*/
@GetMapping("/overdue/count/{businessId}")
public R<Integer> overdueCount(@PathVariable Integer businessId)
{
return R.ok(businessBacklogService.overdueCount(businessId));
}
}
package com.dsk.biz.controller;
import com.dsk.biz.domain.bo.BusinessIdDto;
import com.dsk.biz.domain.vo.BusinessFileVo;
import com.dsk.biz.utils.OldFileUtils;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.file.FileUploadUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author lxl
* @Description: 项目文件管理Controller
* @Date 2023/5/30 上午 8:44
**/
@Slf4j
@RestController
@RequestMapping("/business/file")
public class BusinessFileController extends BaseController {
/**
* 新建文件夹
*/
// @PreAuthorize("@ss.hasPermi('system:file:add')")
// @Log(title = "项目资料文档", businessType = BusinessType.INSERT)
@PostMapping("/new")
public AjaxResult newFolder(@RequestBody(required=false) BusinessIdDto filePath) {
return OldFileUtils.newFolder(filePath.getFilePath()) ? AjaxResult.success() : AjaxResult.error();
}
/**
* 删除某个文件或整个文件夹
*/
@PostMapping("/remove")
public AjaxResult removeFile(@RequestBody(required=false) BusinessIdDto filePath) {
return OldFileUtils.delFolder(filePath.getFilePath()) ? AjaxResult.success() : AjaxResult.error();
}
/**
* 分页查询项目的所有文件
* 获取文件夹中所有文件
*/
@GetMapping(value = "/list")
public TableDataInfo getAllFiles(BusinessIdDto filePath) {
List<BusinessFileVo> allFiles;
if(StringUtils.isNumeric(filePath.getFilePath())) filePath.setFilePath(FileUploadUtils.getDefaultBaseDir() + filePath.getFilePath());
allFiles = OldFileUtils.getAllFiles(filePath.getFilePath());
//模糊查询文件
if(StringUtils.isNotEmpty(filePath.getKeyword())){
List<BusinessFileVo> allFileName = OldFileUtils.getAllFileNames(filePath.getFilePath());
allFiles = allFileName.stream().filter(p -> p.getFilePath().contains(filePath.getKeyword())).collect(Collectors.toList());
}
//文件按照时间倒序
allFiles = allFiles.stream().sorted(Comparator.comparing(BusinessFileVo::getCreatTime).reversed()).collect(Collectors.toList());
return TableDataInfo.build(allFiles);
}
/**
* 上传文件及文件夹
* @param file 文件流
* @param request 请求头参数
* @return
*/
@PostMapping("/upload")
public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file, HttpServletRequest request) {
try {
//获取文件名
String filename = new String(file.getOriginalFilename().getBytes("ISO-8859-1"),"UTF-8");
String businessFileName = request.getHeader("FilePath");
// 上传文件路径
String filePath = FileUploadUtils.getDefaultBaseDir() + businessFileName + "/";
//校验是否上传同名文件
File newFile = new File(filePath);
if (newFile.exists()) {
// 获取当前目录下的文件和文件夹
File[] files = newFile.listFiles();
for (File allFile : files) {
if (filename.equals(allFile.getName())) return AjaxResult.error("文件已存在");
}
}
// 上传并返回文件全路径
String fileName = FileUploadUtils.upload(filePath, file);
// String url = serverConfig.getUrl() + fileName;
AjaxResult ajax = AjaxResult.success();
ajax.put("url", fileName);
return ajax;
} catch (IOException e) {
return AjaxResult.error(e.getMessage());
}
}
/**
* 下载文件
* @param filePath 要下载的文件路径
* @param response 返回的响应
*/
@PostMapping("/download")
public void downloadFolder(@RequestBody BusinessIdDto filePath, HttpServletResponse response) {
OldFileUtils.downloadByFilePath(filePath.getFilePath(),response);
}
}
package com.dsk.biz.controller;
import com.dsk.biz.domain.BusinessFollowRecord;
import com.dsk.biz.domain.bo.BusinessIdDto;
import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.vo.BusinessListVo;
import com.dsk.biz.service.IBusinessFollowRecordService;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目跟进记录Controller
*
* @author lxl
* @date 2023-05-17
*/
@RestController
@RequestMapping("/business/record")
public class BusinessFollowRecordController extends BaseController
{
@Autowired
private IBusinessFollowRecordService businessFollowRecordService;
/**
* 查询关联项目
*/
@GetMapping("/relate/project/{userId}")
public R<List<BusinessListVo>> selectRelateProject(@PathVariable("userId") Long userId)
{
return R.ok(businessFollowRecordService.selectRelateProject(userId));
}
/**
* 查询关联业主企业
*/
@GetMapping("/relate/company/{userId}")
public R<List<String>> selectRelateCompany(@PathVariable("userId") Long userId)
{
return R.ok(businessFollowRecordService.selectRelateCompany(userId));
}
/**
* 新增项目跟进记录
*/
// @PreAuthorize("@ss.hasPermi('system:record:add')")
// @Log(title = "项目跟进记录", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R<Void> add(@RequestBody BusinessFollowRecord businessFollowRecord)
{
return toAjax(businessFollowRecordService.insertBusinessFollowRecord(businessFollowRecord));
}
/**
* 分页查询项目跟进记录
*/
// @PreAuthorize("@ss.hasPermi('system:record:list')")
@GetMapping("/list")
public TableDataInfo<BusinessFollowRecord> list(BusinessIdDto dto, PageQuery pageQuery)
{
return businessFollowRecordService.selectBusinessFollowRecordList(dto, pageQuery);
}
/**
* 删除项目跟进记录
*/
// @PreAuthorize("@ss.hasPermi('system:record:remove')")
// @Log(title = "项目跟进记录", businessType = BusinessType.DELETE)
@DeleteMapping("remove/{ids}")
public R<Void> remove(@PathVariable(value = "ids",required=false) Long[] ids)
{
return toAjax(businessFollowRecordService.deleteBusinessFollowRecordByIds(ids));
}
/**
* 分页查询跟进动态
*/
// @PreAuthorize("@ss.hasPermi('system:record:list')")
@GetMapping("all/list")
public TableDataInfo<BusinessFollowRecord> allFollow(BusinessListDto dto, PageQuery pageQuery)
{
return businessFollowRecordService.allFollow(dto, pageQuery);
}
}
package com.dsk.biz.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import com.dsk.biz.domain.BusinessInfo;
import com.dsk.biz.domain.bo.BusinessAddDto;
import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.vo.BusinessBrowseVo;
import com.dsk.biz.domain.vo.BusinessLikeProjectNameListVo;
import com.dsk.biz.domain.vo.BusinessListVo;
import com.dsk.biz.service.IBusinessInfoService;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.enums.BusinessType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 项目详情Controller
*
* @author lxl
* @date 2023-05-17
*/
@RestController
@RequestMapping("/business/info")
public class BusinessInfoController extends BaseController
{
@Autowired
private IBusinessInfoService businessInfoService;
/**
* 项目批量导入
*/
@PostMapping("/upload")
// public AjaxResult batchUpload(@RequestPart("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response){
public AjaxResult batchUpload(@RequestPart("file") MultipartFile file){
return businessInfoService.batchUpload(file);
}
/**
* 查询所有项目名称(支持模糊查询)
*/
@PostMapping("/query/project")
public R<List<BusinessLikeProjectNameListVo>> queryprojectName(@RequestBody BusinessListDto dto,@RequestBody PageQuery pageQuery){
return R.ok(businessInfoService.selectProjectName(dto,pageQuery));
}
/**
* 分页查询项目列表
*/
// @PreAuthorize("@ss.hasPermi('system:business:list')")
@GetMapping("/list")
public TableDataInfo<BusinessListVo> list(BusinessListDto dto, PageQuery pageQuery)
{
return businessInfoService.selectBusinessInfoList(dto, pageQuery);
}
/**
* 查询项目速览
*/
// @PreAuthorize("@ss.hasPermi('system:business:query')")
@SaCheckLogin
@GetMapping("/browse/{businessId}")
public R<BusinessBrowseVo> browse(@PathVariable("businessId") Integer businessId)
{
return R.ok(businessInfoService.browse(businessId));
}
/**
* 获取项目建设内容
*/
// @PreAuthorize("@ss.hasPermi('system:business:query')")
@GetMapping(value = "/construction/{id}")
public R<BusinessInfo> getConstruction(@PathVariable("id") Integer id)
{
return R.ok(businessInfoService.getConstruction(id));
}
/**
* 删除项目列表
*/
// @PreAuthorize("@ss.hasPermi('system:business:remove')")
// @Log(title = "项目管理", businessType = BusinessType.DELETE)
@DeleteMapping("/remove/{ids}")
public R<Void> remove(@PathVariable(value = "ids",required=false) Long[] ids)
{
return toAjax(businessInfoService.deleteBusinessInfoByIds(ids));
}
/**
* 新增项目详情
*/
// @PreAuthorize("@ss.hasPermi('system:business:add')")Z
// @Log(title = "项目管理", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R<Void> add(@RequestBody BusinessAddDto dto)
{
return toAjax(businessInfoService.insertBusinessInfo(dto));
}
/**
* 修改项目详情
*/
// @PreAuthorize("@ss.hasPermi('system:business:edit')")
// @Log(title = "项目管理", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
public R<Void> edit(@RequestBody BusinessInfo businessInfo)
{
return toAjax(businessInfoService.updateBusinessInfo(businessInfo));
}
}
package com.dsk.biz.controller;
import com.dsk.biz.domain.BusinessLabel;
import com.dsk.biz.domain.bo.BusinessIdDto;
import com.dsk.biz.service.IBusinessLabelService;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R;
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;
/**
* 项目标签Controller
*
* @author lxl
* @date 2023-05-17
*/
@RestController
@RequestMapping("/business/label")
public class BusinessLabelController extends BaseController
{
@Autowired
private IBusinessLabelService businessLabelService;
/**
* 新增项目标签
*/
// @PreAuthorize("@ss.hasPermi('system:label:add')")
// @Log(title = "项目标签", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R<Void> add(@RequestBody BusinessLabel businessLabel)
{
return toAjax(businessLabelService.insertBusinessLabel(businessLabel));
}
/**
* 删除项目标签
*/
// @PreAuthorize("@ss.hasPermi('system:label:remove')")
// @Log(title = "项目标签", businessType = BusinessType.DELETE)
@PostMapping("/remove")
public R<Void> remove(@RequestBody BusinessIdDto dto)
{
return toAjax(businessLabelService.deleteBusinessLabelById(dto));
}
}
package com.dsk.biz.controller;
import com.dsk.biz.domain.BusinessOpenTender;
import com.dsk.biz.domain.bo.BusinessOpenTenderDto;
import com.dsk.biz.service.IBusinessOpenTenderService;
import com.dsk.biz.utils.ExcelUtils;
import com.dsk.common.annotation.Log;
import com.dsk.common.annotation.RepeatSubmit;
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.common.enums.BusinessType;
import com.dsk.common.exception.BusinessException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
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;
/**
* 项目开标记录
*
* @author lcl
* @date 2023-10-23
*/
@RestController
@RequestMapping("/business/open/tender")
public class BusinessOpenTenderController extends BaseController {
@Autowired
private IBusinessOpenTenderService baseService;
/**
* 开标记录列表
*/
@GetMapping("/list")
public TableDataInfo<BusinessOpenTender> list(BusinessOpenTenderDto dto, PageQuery pageQuery) {
return baseService.selectList(dto, pageQuery);
}
/**
* 添加开标记录
*/
@PostMapping
@RepeatSubmit
public R<Void> add(@RequestBody BusinessOpenTender bo) {
return toAjax(baseService.add(bo));
}
/**
* 修改开标记录
*/
@PutMapping
@RepeatSubmit
public R<Void> edit(@RequestBody BusinessOpenTender bo) {
return toAjax(baseService.edit(bo));
}
/**
* 删除开标记录
*/
@DeleteMapping("/{ids}")
@RepeatSubmit
public R<Void> remove(@PathVariable Long[] ids) {
return toAjax(baseService.remove(ids));
}
/**
* 批量导入
*/
@Log(title = "开标记录批量导入", businessType = BusinessType.IMPORT)
@PostMapping("/importData/{businessId}")
public R<Map<String, Object>> importData(@RequestPart("file") MultipartFile file, @PathVariable Integer businessId) throws Exception {
List<BusinessOpenTender> list = new ExcelUtils<>(BusinessOpenTender.class).importExcel(file.getInputStream(), 2);
if (list.isEmpty()) throw new BusinessException("请填写导入数据!");
int sucessCount = 0;
List<String> errorList = new ArrayList<>();
for (BusinessOpenTender openTender : list) {
if (ObjectUtils.isEmpty(openTender.getTenderer())) {
errorList.add("投标人不能为空!");
continue;
}
openTender.setBusinessId(businessId);
try {
int add = baseService.add(openTender);
if (add > 0) {
sucessCount++;
}
} catch (Exception e) {
errorList.add(openTender.getTenderer().concat(":").concat(e.getMessage()));
}
}
Map<String, Object> result = new HashMap<>();
result.put("sucessCount", sucessCount);
result.put("errorCount", list.size() - sucessCount);
result.put("errorMsg", errorList);
return R.ok(result);
}
}
package com.dsk.biz.controller;
import com.dsk.biz.domain.bo.BusinessSearchDto;
import com.dsk.biz.service.IBusinessOverviewService;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.helper.LoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 项目概览
*
* @author lcl
* @create 2023/8/14
*/
@RestController
@RequestMapping("/business/overview")
public class BusinessOverviewController extends BaseController {
@Autowired
private IBusinessOverviewService baseService;
/**
* 项目状态统计
*/
@GetMapping("/status/statistics")
public AjaxResult statusStatistics() {
return AjaxResult.success(baseService.statusStatistics(new BusinessSearchDto(LoginHelper.getUserId())));
}
/**
* 项目资金分析
*/
@GetMapping("/amount/analyze")
public AjaxResult amountAnalyze() {
return AjaxResult.success(baseService.amountAnalyze(new BusinessSearchDto(LoginHelper.getUserId(), 0)));
}
/**
* 项目类型分析
*/
@GetMapping("/type/analyze/{status}")
public AjaxResult typeAnalyze(@PathVariable Integer status) {
return AjaxResult.success(baseService.typeAnalyze(new BusinessSearchDto(LoginHelper.getUserId(), status)));
}
/**
* 项目类别分析
*/
@GetMapping("/category/analyze/{status}")
public AjaxResult categoryAnalyze(@PathVariable Integer status) {
return AjaxResult.success(baseService.categoryAnalyze(new BusinessSearchDto(LoginHelper.getUserId(), status)));
}
/**
* 公招项目地区统计
*
* @return
*/
@RequestMapping("/countGroupByProvince")
public AjaxResult countGroupByProvince(@RequestBody Map<String,Object> object) {
return baseService.countGroupByProvince(object);
}
/**
* 公招项目投资金额统计
*
* @return
*/
@RequestMapping("/rangByMoney")
public AjaxResult rangByMoney(@RequestBody Map<String,Object> object) {
return baseService.rangByMoney(object);
}
}
package com.dsk.biz.controller;
import com.dsk.biz.domain.BusinessRelateCompany;
import com.dsk.biz.domain.bo.BusinessIdDto;
import com.dsk.biz.service.IBusinessRelateCompanyService;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目相关企业Controller
*
* @author lxl
* @date 2023-05-17
*/
@RestController
@RequestMapping("/business/company")
public class BusinessRelateCompanyController extends BaseController
{
@Autowired
private IBusinessRelateCompanyService businessRelateCompanyService;
/**
* 查询相关企业角色
*/
@PostMapping("/role/list")
public R<List<String>> companyRoleList(@RequestBody BusinessIdDto dto){
return R.ok(businessRelateCompanyService.companyRoleList(dto));
}
/**
* 查询项目相关企业列表
*/
// @PreAuthorize("@ss.hasPermi('system:company:list')")
@GetMapping("/list")
public TableDataInfo<BusinessRelateCompany> list(BusinessRelateCompany bo, PageQuery pageQuery)
{
return businessRelateCompanyService.selectBusinessRelateCompanyList(bo, pageQuery);
}
/**
* 新增项目关联单位
*/
// @PreAuthorize("@ss.hasPermi('system:company:add')")
// @Log(title = "项目关联单位", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R<Void> add(@RequestBody BusinessRelateCompany businessRelateCompany)
{
return toAjax(businessRelateCompanyService.insertBusinessRelateCompany(businessRelateCompany));
}
/**
* 修改项目关联单位
*/
// @PreAuthorize("@ss.hasPermi('system:company:edit')")
// @Log(title = "项目关联单位", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
public R<Void> edit(@RequestBody BusinessRelateCompany businessRelateCompany)
{
return toAjax(businessRelateCompanyService.updateBusinessRelateCompany(businessRelateCompany));
}
/**
* 删除项目关联单位
*/
// @PreAuthorize("@ss.hasPermi('system:company:remove')")
// @Log(title = "项目关联单位", businessType = BusinessType.DELETE)
@DeleteMapping("/remove/{ids}")
public R<Void> remove(@PathVariable Long[] ids)
{
return toAjax(businessRelateCompanyService.deleteBusinessRelateCompanyByIds(ids));
}
// /**
// * 导出项目关联单位列表
// */
// @PreAuthorize("@ss.hasPermi('system:company:export')")
// @Log(title = "项目关联单位", businessType = BusinessType.EXPORT)
// @PostMapping("/export")
// public void export(HttpServletResponse response, BusinessRelateCompany businessRelateCompany)
// {
// List<BusinessRelateCompany> list = businessRelateCompanyService.selectBusinessRelateCompanyList(businessRelateCompany);
// ExcelUtil<BusinessRelateCompany> util = new ExcelUtil<BusinessRelateCompany>(BusinessRelateCompany.class);
// util.exportExcel(response, list, "项目关联单位数据");
// }
// /**
// * 获取项目关联单位详细信息
// */
// @PreAuthorize("@ss.hasPermi('system:company:query')")
// @GetMapping(value = "/{id}")
// public AjaxResult getInfo(@PathVariable("id") Long id)
// {
// return success(businessRelateCompanyService.selectBusinessRelateCompanyById(id));
// }
}
package com.dsk.biz.controller;
import com.dsk.biz.domain.ContactInfo;
import com.dsk.biz.domain.bo.ContactInfoSearchDto;
import com.dsk.biz.domain.vo.ContactInfoListVo;
import com.dsk.biz.service.IContactInfoService;
import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 联系人(ContactInfo)表控制层
*
* @author makejava
* @since 2023-07-25 17:18:00
*/
@RestController
@RequestMapping("/contact/info")
public class ContactInfoController extends BaseController {
/**
* 服务对象
*/
@Autowired
private IContactInfoService baseService;
/**
* 联系人列表
*/
// @PreAuthorize("@ss.hasPermi('contact:info:list')")
@GetMapping("/list")
public TableDataInfo<ContactInfoListVo> selectPageList(ContactInfoSearchDto dto, PageQuery pageQuery){
return baseService.selectList(dto,pageQuery);
}
/**
* 联系人详情
*/
// @PreAuthorize("@ss.hasPermi('contact:info')")
@GetMapping("/{id}")
public R<ContactInfo> info(@PathVariable Long id){
return R.ok(baseService.selectById(id));
}
/**
* 添加用户联系人
*/
// @PreAuthorize("@ss.hasPermi('contact:info:add')")
@PostMapping()
@RepeatSubmit()
public R<Void> add(@RequestBody ContactInfo baen){
return toAjax(baseService.insert(baen));
}
/**
* 编辑用户联系人
*/
// @PreAuthorize("@ss.hasPermi('contact:info:edit')")
@PutMapping()
@RepeatSubmit()
public R<Void> edit(@RequestBody ContactInfo baen){
return toAjax(baseService.update(baen));
}
/**
* 删除用户联系人
*/
// @PreAuthorize("@ss.hasPermi('contact:info:del')")
@DeleteMapping("/{id}")
@RepeatSubmit()
public R<Void> del(@PathVariable("id") Long id){
return toAjax(baseService.deleteById(id));
}
}
package com.dsk.biz.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanException;
import com.dsk.biz.domain.Customer;
import com.dsk.biz.domain.bo.CustomerBusinessSearchDto;
import com.dsk.biz.domain.bo.CustomerSearchDto;
import com.dsk.biz.domain.vo.CustomerBusinessListVo;
import com.dsk.biz.domain.vo.CustomerListVo;
import com.dsk.biz.domain.vo.CustomerVo;
import com.dsk.biz.service.ICustomerService;
import com.dsk.biz.utils.ExcelUtils;
import com.dsk.common.annotation.Log;
import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.utils.poi.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
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;
/**
* 客户相关
*
* @author lcl
* @create 2023/5/16
*/
@RestController
@RequestMapping("/customer")
public class CustomerController extends BaseController {
@Autowired
private ICustomerService baseService;
/**
* 查询客户列表
*/
// @SaCheckPermission("'customer:list')")
@GetMapping("/list")
public TableDataInfo<CustomerListVo> selectPageList(CustomerSearchDto dto , PageQuery pageQuery) {
return baseService.selectList(dto,pageQuery);
}
/**
* 客户详情
*/
// @SaCheckPermission("'customer:info')")
@GetMapping("/{customerId}")
public R<CustomerVo> info(@PathVariable("customerId") String customerId) {
return R.ok(baseService.info(customerId));
}
/**
* 添加客户
*/
// @SaCheckPermission("'customer:add')")
@PostMapping()
@RepeatSubmit
public R<Void> add(@RequestBody Customer customer) {
return toAjax(baseService.add(customer));
}
/**
* 认领客户
*/
// @SaCheckPermission("'customer:claim'")
@PostMapping("/claim")
@RepeatSubmit
public R<Map<String, Object>> claim(@RequestBody Customer customer) {
// if (ObjectUtils.isEmpty(customer.getUipId())) throw new BeanException("城投uipId不能为空");
boolean add = baseService.add(customer);
if (add) {
Map<String, Object> map = new HashMap<>();
map.put("customerId", customer.getCustomerId());
return R.ok(map);
}
return R.fail();
}
/**
* 编辑客户
*/
// @SaCheckPermission("'customer:edit'")
@PutMapping()
@RepeatSubmit
public R<Void> edit(@RequestBody Customer customer) {
return toAjax(baseService.edit(customer));
}
/**
* 获取个人客户列表
*/
@GetMapping("/user/list")
public R<List<Customer>> userList() {
return R.ok(baseService.selectUserList());
}
/**
* 获取客户项目(合作情况)列表
*/
// @SaCheckPermission("'customer:business:list'")
@GetMapping("/business/list")
public TableDataInfo<CustomerBusinessListVo> businessList(CustomerBusinessSearchDto dto, PageQuery pageQuery) {
return baseService.selectBusinessList(dto,pageQuery);
}
@Log(title = "客户数据导入", businessType = BusinessType.IMPORT)
//@SaCheckPermission("'customer:importData'")
@PostMapping("/importData")
// public R<List<String>> importData(@RequestPart("file") MultipartFile file) throws Exception {
public AjaxResult importData(@RequestPart("file") MultipartFile file) throws Exception {
List<Customer> customerList = new ExcelUtils<>(Customer.class).importExcel(file.getInputStream(), 2);
List<String> resultList = new ArrayList<>();
int successCount = 0;
for (Customer customer : customerList) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) {
continue;
}
try {
baseService.add(customer);
successCount++;
} catch (Exception e) {
resultList.add(customer.getCompanyName().concat(":").concat(e.getMessage()));
}
}
AjaxResult success = AjaxResult.success(resultList);
success.put("successCount", successCount);
return success;
}
/**
* 客户状态
*/
@GetMapping("/status/{companyName}")
public R<Integer> status(@PathVariable String companyName) {
return R.ok(baseService.status(companyName));
}
/**
* 取消认领
*/
@PutMapping("/cancelClaim/{companyName}")
@RepeatSubmit
public R<Void> cancelClaim(@PathVariable String companyName) {
return toAjax(baseService.cancelClaim(companyName));
}
/**
* 历史认领
*/
@PutMapping("/historyClaim/{companyName}")
@RepeatSubmit
public R<Void> historyClaim(@PathVariable String companyName) {
return toAjax(baseService.historyClaim(companyName));
}
}
package com.dsk.biz.controller;
import com.dsk.biz.domain.CustomerFollowRecord;
import com.dsk.biz.domain.bo.CustomerFollowRecordSearchDto;
import com.dsk.biz.domain.vo.CustomerFollowRecordListVo;
import com.dsk.biz.service.ICustomerFollowRecordService;
import com.dsk.common.annotation.RepeatSubmit;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 客户跟进记录相关
*
* @author lcl
* @create 2023/5/18
*/
@RestController
@RequestMapping("/customer/follow/record")
public class CustomerFollowRecordController extends BaseController {
@Autowired
private ICustomerFollowRecordService baseService;
/**
* 查询客户跟进记录列表
*/
// @PreAuthorize("@ss.hasPermi('customer:follow:record:list')")
@GetMapping("/list")
public TableDataInfo<CustomerFollowRecordListVo> selectPageList(CustomerFollowRecordSearchDto dto, PageQuery pageQuery){
return baseService.selectList(dto, pageQuery);
}
/**
* 添加客户跟进记录
*/
// @PreAuthorize("@ss.hasPermi('customer:follow:record:add')")
@PostMapping()
@RepeatSubmit
public R<Void> add(@RequestBody CustomerFollowRecord followRecord){
return toAjax(baseService.add(followRecord));
}
/**
* 删除客户跟进记录
*/
// @PreAuthorize("@ss.hasPermi('customer:follow:record:del')")
@DeleteMapping("/{id}")
@RepeatSubmit
public R<Void> del(@PathVariable("id") Long id){
return toAjax(baseService.del(id));
}
}
package com.dsk.biz.controller;
import com.dsk.biz.domain.bo.CustomerSearchDto;
import com.dsk.biz.domain.vo.CustomerAnalyzeVo;
import com.dsk.biz.service.ICustomerOverviewService;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* 客户概览
* @author lcl
* @create 2023/8/15
*/
@RestController
@RequestMapping("/customer/overview")
public class CustomerOverviewController extends BaseController {
@Autowired
private ICustomerOverviewService baseService;
/**
* 客户统计
*/
@GetMapping("/statistics")
public R<Map<String, Object>> statistics(){
return R.ok(baseService.statistics(new CustomerSearchDto()));
}
/**
* 客户合作情况
*/
@GetMapping("/cooperation/top")
public R<List<CustomerAnalyzeVo>> cooperationTop(){
return R.ok(baseService.cooperationTop(new CustomerSearchDto()));
}
/**
* 客户信资评级
*/
@GetMapping("/credit/level")
public R<List<Map<String, Object>>> creditLevel(){
return R.ok(baseService.creditLevel(new CustomerSearchDto()));
}
}
package com.dsk.biz.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* 项目工作待办对象 business_backlog
*
* @author lxl
* @date 2023-05-17
*/
@Data
public class BusinessBacklog
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Integer id;
/** 项目id */
private Integer businessId;
/** 关联客户 */
private String target;
/** 待办工作内容 */
private String task;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date finishTime;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dueTime;
/** 状态(2已完成,1进行中,0逾期) */
private Integer state;
private Date createTime;
private Date updateTime;
}
package com.dsk.biz.domain;
import com.dsk.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* 项目跟进记录对象 business_follow_record
*
* @author lxl
* @date 2023-05-17
*/
@Data
public class BusinessFollowRecord extends BaseEntity
{
private static final long serialVersionUID = 1L;
/**
* 项目名称
*/
private String projectName;
/**
* 业主单位
*/
private String ownerCompany;
/** $column.columnComment */
private Integer id;
/** 项目id */
private Integer businessId;
/** 用户id */
private Long userId;
/** 用户昵称 */
private String nickName;
/** 拜访对象 */
private String visitPerson;
/** 职位 */
private String position;
/** 拜访时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date visitTime;
/** 下次拜访时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date nextVisitTime;
/** 记录内容 */
private String recordInfo;
/** 拜访方式 */
private String visitWay;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date creatTime;
}
package com.dsk.biz.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import com.dsk.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* 项目详情对象 business_info
*
* @author lxl
* @date 2023-05-17
*/
@Data
@NoArgsConstructor
public class BusinessInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/**
* 用户id
*/
private Integer userId;
/** $column.columnComment */
private Integer id;
/** 项目名称 */
@ExcelProperty(value = "项目名称")
private String projectName;
/** 总投金额(万元) */
@ExcelProperty(value ="总投金额(万元)")
private Double investmentAmount;
/** 资金来源 */
@ExcelProperty(value ="资金来源")
private String amountSource;
/** 计划招标时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
// @ExcelProperty(value ="计划招标时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date planBidTime;
/** 计划开工时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
// @ExcelProperty(value ="计划开工时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date planStartTime;
/** 项目级别 */
@ExcelProperty(value ="项目级别")
private String projectLevel;
/** 项目阶段 */
@ExcelProperty(value ="项目阶段")
private String projectStage;
/** 建设性质 */
@ExcelProperty(value ="建设性质")
private String buildProperty;
/** 计划竣工时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
// @ExcelProperty(value ="计划竣工时间", width = 30, format = "yyyy-MM-dd")
private Date planCompleteTime;
/** 项目概况与建设规模 */
@ExcelProperty(value ="项目概况与建设规模")
private String projectDetails;
/** 省 */
@ExcelProperty(value ="省")
private String provinceName;
/** 省id */
@ExcelProperty(value ="省id")
private Integer provinceId;
/** 市 */
@ExcelProperty(value ="市")
private String cityName;
/** 市id */
@ExcelProperty(value ="市id")
private Integer cityId;
/** 区 */
@ExcelProperty(value ="区")
private String districtName;
/** 区id */
@ExcelProperty(value ="区id")
private Integer districtId;
/** 项目类型 */
@ExcelProperty(value ="项目类型")
private String projectType;
/** 项目类别 */
@ExcelProperty(value ="项目类别")
private String projectCategory;
/** 商务团队 */
@ExcelProperty(value ="商务团队")
private String team;
/** 0 仅自己可见,1 他人可见 */
@ExcelProperty(value ="0 仅自己可见,1 他人可见")
private Integer isPrivate;
/** 客户id */
@ExcelProperty(value ="客户id")
private String customerId;
/** 项目状态 */
@ExcelProperty(value ="项目状态(0.储备中1.跟进中2.已合作)")
private Integer status;
/** 评标办法 */
@ExcelProperty(value ="评标办法")
private String evaluationBidWay;
/** 开标时间 */
@ExcelProperty(value ="开标时间")
private String bidOpenTime;
/** 开标地点 */
@ExcelProperty(value ="开标地点")
private String bidOpenPlace;
/** 保证金缴纳 */
@ExcelProperty(value ="保证金缴纳")
private String earnestMoneyPay;
/** 保证金金额 */
@ExcelProperty(value ="保证金金额")
private String earnestMoney;
/** 评标委员会 */
@ExcelProperty(value ="评标委员会")
private String evaluationBidCouncil;
/** 建设单位 */
@ExcelProperty(value ="建设单位")
private String constructionUnit;
/** 建设单位负责人 */
@ExcelProperty(value ="建设单位负责人")
private String constructionPrincipal;
/** 建设单位联系电话 */
@ExcelProperty(value ="建设单位联系电话")
private String constructionPhone;
/** 主管单位 */
@ExcelProperty(value ="主管单位")
private String supervisorUnit;
/** 主管单位负责人 */
@ExcelProperty(value ="主管单位负责人")
private String supervisorPrincipal;
/** 主管单位联系电话 */
@ExcelProperty(value ="主管单位联系电话")
private String supervisorPhone;
/** 建设单位城投id */
@ExcelProperty(value ="建设单位城投id")
private String constructionUnitUipId;
/** 建设单位建设库id */
@ExcelProperty(value ="建设单位建设库id")
private Integer constructionUnitCid;
/**
* 租户编号
*/
private String tenantId;
}
package com.dsk.biz.domain;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 项目标签对象 business_label
*
* @author lxl
* @date 2023-05-17
*/
@Data
@NoArgsConstructor
public class BusinessLabel extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Integer id;
/** 项目id */
private Integer businessId;
/** 标签 */
private String label;
public BusinessLabel(Integer businessId) {
this.businessId = businessId;
}
}
package com.dsk.biz.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author lcl
* @Data 2023/10/23 16:26
*/
@Data
public class BusinessOpenTender implements Serializable {
@TableId(value = "id",type = IdType.ASSIGN_ID)
private Long id;
/**
* 项目id
*/
private Integer businessId;
/**
* 投标人id
*/
private Integer tendererId;
/**
* 投标人
*/
@Excel(name = "投标人(必填)")
private String tenderer;
/**
* 企业性质
*/
@Excel(name = "企业性质")
private String tendererNature;
/**
* 项目经理
*/
@Excel(name = "项目经理")
private String businessManager;
/**
* 联系方式
*/
@Excel(name = "联系方式")
private String contact;
/**
* 投标金额
*/
@Excel(name = "投标金额(万元)")
private Double tenderAmount;
private Date createTime;
private Date updateTime;
}
package com.dsk.biz.domain;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 项目关联单位对象 business_relate_company
*
* @author lxl
* @date 2023-05-17
*/
@Data
@NoArgsConstructor
public class BusinessRelateCompany extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Integer id;
/** 项目id */
private Integer businessId;
/** 单位建设库id */
private Integer companyId;
/** 单位城投id */
private String companyUipId;
/** 单位名称 */
private String companyName;
/** 单位角色 */
private String companyRole;
/** 负责任人 */
private String responsiblePerson;
/** 负责人电话 */
private String phone;
/** 对接深度/竞争力度 */
private String depth;
/** 是否业主单位 0:否 1:是 */
private Integer isProprietor;
private String remark;
}
package com.dsk.biz.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 项目用户关联对象 business_user
*
* @author lxl
* @date 2023-05-17
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("business_user")
public class BusinessUser extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
@TableId(value = "id",type = IdType.INPUT)
private Integer id;
/** 项目id(business_info表id) */
private Integer businessId;
/** 部门id */
private Long deptId;
/** 用户id */
private Long userId;
/** 是否创建人(1 是,0 否) */
private Integer isFounder;
public BusinessUser(Integer businessId, Long deptId, Long userId, Integer isFounder) {
this.businessId = businessId;
this.deptId = deptId;
this.userId = userId;
this.isFounder = isFounder;
}
}
package com.dsk.biz.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 用户联系人(CustomerContact)实体类
*
* @author makejava
* @since 2023-07-25 17:18:00
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("contact_info")
public class ContactInfo implements Serializable {
private static final long serialVersionUID = -22461377492423075L;
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
* 客户id
*/
private String customerId;
/**
* 项目id
*/
private Integer businessId;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 角色
*/
private String role;
/**
* 职位
*/
private String position;
/**
* 联系方式
*/
private String contactInformation;
/**
* 企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/**
* 企业名称
*/
private String companyName;
/**
* 备注
*/
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Long updateId;
private Date updateTime;
}
package com.dsk.biz.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.dsk.common.annotation.Excel;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 客户信息表(Customer)实体类
*
* @author makejava
* @since 2023-05-16 09:27:55
*/
@Data
@NoArgsConstructor
@TableName("customer")
public class Customer implements Serializable {
private static final long serialVersionUID = 824383302173350532L;
@TableId(value = "customer_id", type = IdType.ASSIGN_UUID)
private String customerId;
/**
* jsk企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/**
* 客户名称(企业名称)
*/
@Excel(name = "企业名称")
private String companyName;
/**
* 法定代表人
*/
private String legalPerson;
/**
* 注册资本
*/
private String registerCapital;
/**
* 省id
*/
private Integer provinceId;
/**
* 市id
*/
private Integer cityId;
/**
* 区县id
*/
private Integer districtId;
/**
* 注册地址
*/
private String registerAddress;
/**
* 社会统一信用代码
*/
private String creditCode;
/**
* 企业性质(company_nature_type)
*/
private String companyNature;
/**
* 企业级别(company_level_type)
*/
private String companyLevel;
/**
* 企业主体评级(credit_level_type)
*/
private String creditLevel;
/**
* 客户等级(customer_level_type)
*/
private String customerLevel;
/**
* 上级公司(控股单位)
*/
private String superCompany;
/**
* 是否上市 0:否 1:是
*/
private Integer isOn;
/**
* 是否主要客户 0:否 1:是
*/
private Integer isMajor;
/**
* 发包属性
*/
private String companyAttribute;
/**
* 主要业务
*/
private String mainBusiness;
/**
* 经营范围
*/
private String businessScope;
/**
* 商务条件特点
*/
private String businessCharacteristic;
/**
* 决策链条
*/
private String decisionChain;
/**
* 招投标流程特点
*/
private String bidCharacteristic;
/**
* 履约阶段特点
*/
private String performanceCharacteristic;
/**
* 其它管理体系特点
*/
private String otherMsCharacteistic;
/**
* 租户编号
*/
private String tenantId;
@TableField(fill = FieldFill.INSERT)
private Long createId;
@TableField(exist = false)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateId;
@TableField(exist = false)
private Date updateTime;
}
package com.dsk.biz.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 客户跟进记录(CustomerFollowRecord)实体类
*
* @author makejava
* @since 2023-05-18 15:07:59
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("customer_follow_record")
public class CustomerFollowRecord implements Serializable {
private static final long serialVersionUID = -17639570424991398L;
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
* 客户id
*/
private String customerId;
/**
* 用户id
*/
private Long userId;
/**
* 拜访方式(visit_mode_type)
*/
private String visitMode;
/**
* 拜访时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date visitTime;
/**
* 下次拜访时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date nextVisitTime;
/**
* 拜访对象姓名
*/
private String name;
/**
* 拜访对象职务
*/
private String position;
/**
* 拜访内容
*/
private String content;
@TableField(exist = false)
private Date createTime;
}
package com.dsk.biz.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 客户负责人表
*
* @author lcl
* @create 2023/5/17
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("customer_user")
public class CustomerUser implements Serializable {
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
* 客户id
*/
private String customerId;
/**
* 负责人id
*/
private Long userId;
/**
* 状态
*/
private Integer status;
/**
* 创建时间
*/
@TableField(exist = false)
private Date createTime;
/**
* 修改时间
*/
@TableField(exist = false)
private Date updateTime;
public CustomerUser(String customerId, Long userId) {
this.customerId = customerId;
this.userId = userId;
}
}
package com.dsk.biz.domain.bo;
import lombok.Data;
/**
* @author lxl
* @Description:
* @Date 2023/5/19 下午 5:58
**/
@Data
public class BusinessAddDto {
/**
* 项目名称
*/
private String projectName;
/**
* 用户id
*/
private Long userId;
/**
* 项目类型
*/
private String projectType;
/**
* 项目类别
*/
private String projectCategory;
/**
* 投资估算
*/
private Double investmentAmount;
/**
* 项目阶段
*/
private String projectStage;
/**
* 项目状态(0.储备中1.跟进中2.已合作)
*/
private Integer status;
/**
* 业主单位
*/
private String ownerCompany;
/**
* 单位id
*/
private Integer companyId;
/**
* 可见范围
*/
private Integer isPrivate;
/**
* 客户id
*/
private String customerId;
}
package com.dsk.biz.domain.bo;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import java.util.Date;
/**
* 项目工作待办对象 business_backlog
*
* @author lxl
* @date 2023-05-17
*/
@Data
public class BusinessBacklogListDto extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 项目id */
private Integer businessId;
/** 状态 (0进行中 1已完成 2逾期) */
private Integer state;
private Date startTime;
private Date endTime;
}
package com.dsk.biz.domain.bo;
import com.dsk.common.annotation.Excel;
import lombok.Data;
/**
* @author lxl
* @Description:
* @Date 2023/6/1 下午 6:41
**/
@Data
public class BusinessExcelDto {
/**
* 项目名称
*/
@Excel(name = "项目名称(必填)")
private String projectName;
/**
* 投资估算(万元)
*/
@Excel(name = "投资估算(万元)")
private String investmentAmount;
/**
* 业主单位
*/
@Excel(name = "业主单位(必填)")
private String ownerCompany;
}
package com.dsk.biz.domain.bo;
import lombok.Data;
/**
* @author lxl
* @Description:
* @Date 2023/5/13 下午 3:58
**/
@Data
public class BusinessIdDto {
/**
* 项目id
*/
private Integer businessId;
/**
* 项目标签id
*/
private Integer labelId;
/**
* 项目标签名称
*/
private String label;
/**
* 文件路径
*/
private String filePath;
/**
* 文件搜索关键字
*/
private String keyword;
}
package com.dsk.biz.domain.bo;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import java.util.List;
/**
* @author lxl
* @Description:
* @Date 2023/5/16 上午 9:10
**/
@Data
public class BusinessListDto extends BaseEntity {
/**
* 是否私人数据 0:否 1:是
*/
private Integer isPrivate;
/**
* 项目名称
*/
private String projectName;
/**
* 用户id
*/
private Long userId;
/**
* 省id
*/
private List<Integer> provinceId;
/**
* 市id
*/
private List<Integer> cityId;
/**
* 区id
*/
private List<Integer> districtId;
/**
* 项目类型
*/
private List<String> projectType;
/**
* 投资估算
*/
private String investmentAmount;
/**
* 项目阶段
*/
private List<String> projectStage;
/**
* 最小金额
*/
private String minAmount;
/**
* 最大金额
*/
private String maxAmount;
/**
* 业主单位
*/
private String ownerCompany;
/**
* 项目状态
*/
private Integer status;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
}
package com.dsk.biz.domain.bo;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author lcl
* @create 2023/8/14
*/
@Data
@NoArgsConstructor
public class BusinessOpenTenderDto implements Serializable {
/**
* 项目id
*/
private Integer businessId;
}
package com.dsk.biz.domain.bo;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author lcl
* @create 2023/8/14
*/
@Data
@NoArgsConstructor
public class BusinessSearchDto extends BaseEntity implements Serializable {
/**
* 用户id
*/
private Long userId;
/**
* 状态
*/
private Integer status;
public BusinessSearchDto(Long userId) {
this.userId = userId;
}
public BusinessSearchDto(Long userId, Integer status) {
this.userId = userId;
this.status = status;
}
}
package com.dsk.biz.domain.bo;
import lombok.Data;
import java.io.Serializable;
/**
* @author lcl
* @create 2023/5/16
*/
@Data
public class ContactInfoSearchDto implements Serializable {
/**
* 项目id
*/
private Integer businessId;
/**
* 企业名称
*/
private String companyName;
/**
* 客户id
*/
private String customerId;
}
package com.dsk.biz.domain.bo;
import lombok.Data;
import java.io.Serializable;
/**
* 客户合作情况筛选对象
* @author lcl
* @create 2023/5/16
*/
@Data
public class CustomerBusinessSearchDto implements Serializable {
/**
* 企业id
*/
private String customerId;
/**
* 企业id
*/
private Long userId;
/**
* 项目名称
*/
private String projectName;
/**
* 项目阶段
*/
private String projectStage;
/**
* 项目状态
*/
private Integer status;
}
package com.dsk.biz.domain.bo;
import lombok.Data;
/**
* @author lcl
* @create 2023/5/16
*/
@Data
public class CustomerDecisionChainSearchDto {
/**
* 客户id
*/
private String customerId;
}
package com.dsk.biz.domain.bo;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import java.io.Serializable;
/**
* 客户跟进记录筛选对象
*
* @author lcl
* @create 2023/5/18
*/
@Data
public class CustomerFollowRecordSearchDto extends BaseEntity implements Serializable {
/**
* 客户id
*/
private String customerId;
/**
* 用户id
*/
private Long userId;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
}
package com.dsk.biz.domain.bo;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author lcl
* @create 2023/5/16
*/
@Data
@NoArgsConstructor
public class CustomerSearchDto extends BaseEntity implements Serializable {
/**
* 企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/**
* 企业名称
*/
private String companyName;
/**
* 企业性质
*/
private String companyNature;
/**
* 客户id
*/
private String customerId;
/**
* 用户id
*/
private Long userId;
/**
* 客户状态 0:正常 1:历史
*/
private Integer status;
/**
* 是否上市 0:否 1:是
*/
private Integer isOn;
/**
* 省id
*/
private List<Integer> provinceIds;
/**
* 市id
*/
private List<Integer> cityIds;
/**
* 区id
*/
private List<Integer> districtIds;
/**
* 企业性质
*/
private List<String> companyNatures;
/**
* 信资等级
*/
private List<String> creditLevels;
}
package com.dsk.biz.domain.bo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
/**
* 统一入参 三条件
*
* @author zhaowei
*/
@Data
public class EnterOfThreeBo{
// /**
// * 公司名称
// *
// * @mock 重庆冠睿建设工程有限公司
// *
// */
// private String companyName;
/**
* 统一社会信用代码
*
* @mock 91500243MA5YPMQ92R
*/
@ExcelProperty(value = "socialcode")
private String creditCode;
// /**
// * 企业id
// */
// private Integer cid;
}
package com.dsk.biz.domain.vo;
import lombok.Data;
import java.io.Serializable;
/**
* 项目金额分析
*
* @author lcl
* @create 2023/8/15
*/
@Data
public class BusinessAnalyzeVo implements Serializable {
/**
* 项目类型
*/
private String projectType;
/**
* 项目类别
*/
private String projectCategory;
/**
* 资金来源
*/
private String amountSource;
/**
* 项目数量
*/
private Integer businessCount;
/**
* 总投资金额
*/
private Double totalAmount;
}
package com.dsk.biz.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* 项目工作待办对象 business_backlog
*
* @author lxl
* @date 2023-05-17
*/
@Data
public class BusinessBacklogListVo {
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Integer id;
/** 项目id */
private Integer businessId;
/** 关联客户 */
private String target;
/** 待办工作内容 */
private String task;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date finishTime;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dueTime;
/** 状态(2已完成,1进行中,0逾期) */
private Integer state;
}
package com.dsk.biz.domain.vo;
import lombok.Data;
/**
* @author lxl
* @Description:
* @Date 2023/5/22 下午 5:19
**/
@Data
public class BusinessBrowseVo {
/**
* 项目名称
*/
private String projectName;
/**
* 0 仅自己可见,1 他人可见
*/
private Integer isPrivate;
/**
* 项目类型
*/
private String projectType;
/**
* 项目类别
*/
private String projectCategory;
/**
* 项目状态(0.储备中1.跟进中2.已合作)
*/
private Integer status;
/**
* 投资估算
*/
private Double investmentAmount;
/**
* 省
*/
private String provinceName;
/**
* 市
*/
private String cityName;
/**
* 区
*/
private String districtName;
/**
* 省id
*/
private Integer provinceId;
/**
* 市id
*/
private Integer cityId;
/**
* 区id
*/
private Integer districtId;
/**
* 商务团队
*/
private String team;
/**
* 项目阶段
*/
private String projectStage;
/**
* 项目级别
*/
private String projectLevel;
/**
* 项目标签
*/
private String labelList;
/** 建设单位 */
private String constructionUnit;
/** 建设单位负责人 */
private String constructionPrincipal;
/** 建设单位联系电话 */
private String constructionPhone;
/** 主管单位 */
private String supervisorUnit;
/** 主管单位负责人 */
private String supervisorPrincipal;
/** 主管单位联系电话 */
private String supervisorPhone;
/**
* 联系人统计
*/
private Integer contactsCount;
/**
* 跟进记录统计
*/
private Integer followRecordCount;
/**
* 工作待办统计
*/
private Integer backlogCount;
/**
* 相关企业统计
*/
private Integer relateCompanyCount;
/**
* 资料文档统计
*/
private Integer fileCount;
/**
* 是否创建人(1 是,0 否)
*/
private Integer isFounder;
}
package com.dsk.biz.domain.vo;
import lombok.Data;
/**
* @author lxl
* @Description:
* @Date 2023/6/7 上午 11:05
**/
@Data
public class BusinessFileVo {
private String filePath;
private String creatTime;
public BusinessFileVo(String filePath, String creatTime) {
this.filePath = filePath;
this.creatTime = creatTime == null ? "" : creatTime;
}
}
package com.dsk.biz.domain.vo;
import lombok.Data;
/**
* @author lxl
* @Description:
* @Date 2023/6/27 下午 2:51
**/
@Data
public class BusinessLabelVo {
//主键
private Integer id;
//标签
private String label;
}
package com.dsk.biz.domain.vo;
import lombok.Data;
/**
* @author lcl
* @create 2023/7/27
*/
@Data
public class BusinessLikeProjectNameListVo {
private String projectName;
private String companyName;
/** 总投金额(万元) */
private Double investmentAmount;
/** 项目级别 */
private String projectLevel;
/** 项目阶段 */
private String projectStage;
/** 项目类型 */
private String projectType;
/** 项目类别 */
private String projectCategory;
/** 项目状态(0.储备中1.跟进中2.已合作) */
private Integer status;
}
package com.dsk.biz.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* @author lxl
* @Description:
* @Date 2023/5/19 下午 2:17
**/
@Data
public class BusinessListVo {
/**
* 项目id
*/
private Integer id;
/**
* 项目名称
*/
private String projectName;
/**
* 省
*/
private String provinceName;
/**
* 市
*/
private String cityName;
/**
* 区
*/
private String districtName;
/**
* 投资估算
*/
private Double investmentAmount;
/**
* 业主单位
*/
private String ownerCompany;
/**
* 业主单位城投id
*/
private String ownerCompanyUipId;
/**
* 业主单位建设库id
*/
private Integer ownerCompanyCid;
/**
* 最后跟进时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date followTime;
/**
* 跟进用户昵称
*/
private String nickName;
/**
* 项目标签
*/
private String label;
/**
* 项目类型
*/
private String projectType;
}
package com.dsk.biz.domain.vo;
import lombok.Data;
import java.io.Serializable;
/**
* 用户联系人(CustomerContact)实体类
*
* @author makejava
* @since 2023-07-25 17:18:00
*/
@Data
public class ContactInfoListVo implements Serializable {
private static final long serialVersionUID = -22461377492423075L;
private Long id;
/**
* 客户id
*/
private String customerId;
/**
* 项目id
*/
private Integer businessId;
/**
* 项目名称
*/
private String projectName;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 角色
*/
private String role;
/**
* 职位
*/
private String position;
/**
* 联系方式
*/
private String contactInformation;
/**
* 企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/**
* 企业名称
*/
private String companyName;
/**
* 备注
*/
private String remark;
/**
* 更新人
*/
private String updateBy;
}
package com.dsk.biz.domain.vo;
import lombok.Data;
import java.io.Serializable;
/**
* 客户分析
*
* @author lcl
* @create 2023/8/15
*/
@Data
public class CustomerAnalyzeVo implements Serializable {
/**
* 客户id
*/
private String customerId;
/**
* 企业名称
*/
private String companyName;
/**
* 企业id
*/
private Integer companyId;
/**
* 城投id
*/
private String uipId;
/**
* 项目数量
*/
private Integer businessCount;
/**
* 总投资金额
*/
private Double totalAmount;
}
package com.dsk.biz.domain.vo;
import lombok.Data;
import java.io.Serializable;
/**
* 客户合作情况列表对象
*
* @author lcl
* @create 2023/5/22
*/
@Data
public class CustomerBusinessListVo implements Serializable {
/**
* 项目id
*/
private Integer id;
/**
* 项目名称
*/
private String projectName;
/**
* 项目阶段
*/
private String projectStage;
/**
* 投资金额
*/
private String investmentAmount;
/**
* 状态
*/
private Integer status;
}
package com.dsk.biz.domain.vo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 客户跟进记录列表
*
* @author makejava
* @since 2023-05-18 15:07:59
*/
@Data
public class CustomerFollowRecordListVo implements Serializable {
private static final long serialVersionUID = -17639570424991398L;
private Long id;
/**
* 客户id
*/
private String customerId;
/**
* 企业id
*/
private Integer companyId;
/**
* 城投id
*/
private String uipId;
/**
* 客户名称
*/
private String companyName;
/**
* 用户id
*/
private Long userId;
/**
* 用户昵称
*/
private String nickName;
/**
* 拜访方式(visit_mode_type)
*/
private String visitMode;
/**
* 拜访时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date visitTime;
/**
* 下次拜访时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date nextVisitTime;
/**
* 拜访对象姓名
*/
private String name;
/**
* 拜访对象职务
*/
private String position;
/**
* 拜访内容
*/
private String content;
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
}
package com.dsk.biz.domain.vo;
import lombok.Data;
/**
* @author lcl
* @create 2023/5/17
*/
@Data
public class CustomerListVo {
private String customerId;
/**
* jsk企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/**
* 客户名称(企业名称)
*/
private String companyName;
/**
* 合作项目
*/
private Integer cooperationProject;
/**
* 跟进项目
*/
private Integer followProject;
/**
* 储备项目
*/
private Integer reserveProject;
/**
* 法定代表人
*/
private String legalPerson;
/**
* 注册资本(字符串)
*/
private String registerCapital;
/**
* 注册地址
*/
private String registerAddress;
/**
* 社会统一信用代码
*/
private String creditCode;
/**
* 企业性质
*/
private String companyNature;
/**
* 企业级别
*/
private String companyLevel;
/**
* 企业主体评级
*/
private String creditLevel;
/**
* 客户等级
*/
private String customerLevel;
/**
* 上级公司
*/
private String superCompany;
/**
* 是否上市 0:否 1:是
*/
private Integer isOn;
/**
* 是否主要客户 0:否 1:是
*/
private Integer isMajor;
/**
* 发包属性
*/
private String companyAttribute;
/**
* 主要业务
*/
private String mainBusiness;
/**
* 经营范围
*/
private String businessScope;
/**
* 商务条件特点
*/
private String businessCharacteristic;
/**
* 决策链条
*/
private String decisionChain;
/**
* 招投标流程特点
*/
private String bidCharacteristic;
/**
* 履约阶段特点
*/
private String performanceCharacteristic;
/**
* 其它管理体系特点
*/
private String otherMsCharacteistic;
/**
* 跟进人
*/
private String followUser;
}
package com.dsk.biz.domain.vo;
import lombok.Data;
import java.io.Serializable;
/**
* 客户状态列表
*
* @author lcl
* @create 2023/5/22
*/
@Data
public class CustomerStatusListVo implements Serializable {
/**
* 客户id
*/
private String customerId;
/**
* 城投id
*/
private String uipId;
/**
* 企业名称
*/
private String companyName;
/**
* 企业名称
*/
private Integer status;
}
package com.dsk.biz.domain.vo;
import com.dsk.biz.domain.Customer;
import lombok.Data;
import java.io.Serializable;
/**
* 客户详情
*
* @author makejava
* @since 2023-05-16 09:27:55
*/
@Data
public class CustomerVo extends Customer implements Serializable {
/**
* 负责人id
*/
private Long userId;
}
package com.dsk.biz.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.util.Date;
/**
* 测试树表视图对象 test_tree
*
* @author Lion Li
* @date 2021-07-26
*/
@Data
@ExcelIgnoreUnannotated
public class TestTreeVo {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Long id;
/**
* 父id
*/
@ExcelProperty(value = "父id")
private Long parentId;
/**
* 部门id
*/
@ExcelProperty(value = "部门id")
private Long deptId;
/**
* 用户id
*/
@ExcelProperty(value = "用户id")
private Long userId;
/**
* 树节点名
*/
@ExcelProperty(value = "树节点名")
private String treeName;
/**
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
}
package com.dsk.biz.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.biz.domain.BusinessBacklog;
import com.dsk.biz.domain.bo.BusinessBacklogListDto;
import com.dsk.biz.domain.vo.BusinessBacklogListVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 项目工作待办Mapper接口
*
* @author lxl
* @date 2023-05-17
*/
public interface BusinessBacklogMapper
{
/**
* 查询项目工作待办
*
* @param id 项目工作待办主键
* @return 项目工作待办
*/
public BusinessBacklog selectBusinessBacklogById(Integer id);
/**
* 查询项目工作待办列表
*/
public Page<BusinessBacklogListVo> selectBusinessBacklogList(IPage<BusinessBacklogListDto> page, @Param("dto") BusinessBacklogListDto dto);
/**
* 新增项目工作待办
*
* @param businessBacklog 项目工作待办
* @return 结果
*/
public int insertBusinessBacklog(BusinessBacklog businessBacklog);
/**
* 修改项目工作待办
*
* @param businessBacklog 项目工作待办
* @return 结果
*/
public int updateBusinessBacklog(BusinessBacklog businessBacklog);
/**
* 删除项目工作待办
*
* @param id 项目工作待办主键
* @return 结果
*/
public int deleteBusinessBacklogById(Long id);
/**
* 批量删除项目工作待办
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteBusinessBacklogByIds(Long[] ids);
Integer overdueCount(Integer businessId);
}
package com.dsk.biz.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.biz.domain.BusinessFollowRecord;
import com.dsk.biz.domain.bo.BusinessIdDto;
import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.vo.BusinessListVo;
import com.dsk.common.annotation.DataColumn;
import com.dsk.common.annotation.DataPermission;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 项目跟进记录Mapper接口
*
* @author lxl
* @date 2023-05-17
*/
public interface BusinessFollowRecordMapper
{
/**
* 查询关联项目
* @param userId
* @return
*/
List<BusinessListVo> selectRelateProject(Long userId);
/**
* 查询关联业主企业
* @param userId
* @return
*/
List<String> selectRelateCompany(Long userId);
/**
* 查询项目跟进记录
*
* @param id 项目跟进记录主键
* @return 项目跟进记录
*/
public BusinessFollowRecord selectBusinessFollowRecordById(Long id);
/**
* 分页查询项目跟进记录列表
*
* @param businessFollowRecord 项目跟进记录
* @return 项目跟进记录集合
*/
public List<BusinessFollowRecord> businessFollowRecordPaging(BusinessFollowRecord businessFollowRecord);
/**
* 根据项目id查询项目跟进记录
*
* @param dto 项目id
* @return 项目跟进记录集合
*/
public Page<BusinessFollowRecord> selectBusinessFollowRecordList(IPage<BusinessIdDto> page,@Param("dto") BusinessIdDto dto);
/**
* 新增项目跟进记录
*
* @param businessFollowRecord 项目跟进记录
* @return 结果
*/
public int insertBusinessFollowRecord(BusinessFollowRecord businessFollowRecord);
/**
* 修改项目跟进记录
*
* @param businessFollowRecord 项目跟进记录
* @return 结果
*/
public int updateBusinessFollowRecord(BusinessFollowRecord businessFollowRecord);
/**
* 删除项目跟进记录
*
* @param id 项目跟进记录主键
* @return 结果
*/
public int deleteBusinessFollowRecordById(Long id);
/**
* 批量删除项目跟进记录
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteBusinessFollowRecordByIds(Long[] ids);
/**
* 分页查询跟进动态
*
* @param dto
* @return
*/
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
Page<BusinessFollowRecord> allFollow(IPage<BusinessListDto> page, @Param("dto") BusinessListDto dto);
}
package com.dsk.biz.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.biz.domain.BusinessInfo;
import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.bo.BusinessSearchDto;
import com.dsk.biz.domain.bo.CustomerBusinessSearchDto;
import com.dsk.biz.domain.vo.*;
import com.dsk.common.annotation.DataColumn;
import com.dsk.common.annotation.DataPermission;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 项目详情Mapper接口
*
* @author lxl
* @date 2023-05-17
*/
@Mapper
public interface BusinessInfoMapper extends BaseMapper<BusinessInfo> {
/**
* 查询项目详情
*
* @param id 项目详情主键
* @return 项目详情
*/
public BusinessInfo selectBusinessInfoById(Integer id);
/**
* 查询项目建设内容
*
* @param id 项目详情主键
* @return
*/
BusinessInfo getConstruction(Integer id);
/**
* 查询所有项目名称(支持模糊查询)
*
* @return
*/
List<BusinessLikeProjectNameListVo> selectProjectName(BusinessListDto dto);
/**
* 查询项目详情列表
*
* @param dto 项目详情
* @return 项目详情集合
*/
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
Page<BusinessListVo> selectBusinessInfoList(@Param("page") IPage<BusinessListDto> page, @Param("dto") BusinessListDto dto);
/**
* 新增项目详情
*
* @param businessInfo 项目详情
* @return 结果
*/
public int insertBusinessInfo(BusinessInfo businessInfo);
/**
* 修改项目详情
*
* @param businessInfo 项目详情
* @return 结果
*/
public int updateBusinessInfo(BusinessInfo businessInfo);
/**
* 删除项目详情
*
* @param id 项目详情主键
* @return 结果
*/
public int deleteBusinessInfoById(Long id);
/**
* 批量删除项目
* 项目关联的其他所有表数据一并删除
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteBusinessInfoByIds(Long[] ids);
/**
* 根据项目统计
*
* @param business
* @return
*/
BusinessBrowseVo selectTotal(Integer business);
/**
* 查询项目名称是否存在
*
* @param projectName
* @param userId
* @return
*/
int isRepetitionProjectName(@Param("projectName") String projectName,
@Param("userId") Long userId,
@Param("companyName") String companyName);
int selectCountByStatusAndCustomerId(@Param("status") Integer status, @Param("customerId") String customerId);
Page<CustomerBusinessListVo> selectCustomerBusinessList(IPage<CustomerBusinessSearchDto> page,@Param("dto") CustomerBusinessSearchDto dto);
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
int selectCountByStatus(BusinessSearchDto dto);
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
List<BusinessAnalyzeVo> selectAmountAnalyze(BusinessSearchDto dto);
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
List<BusinessAnalyzeVo> selectTypeAnalyze(BusinessSearchDto dto);
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
List<BusinessAnalyzeVo> selectCategoryAnalyze(BusinessSearchDto dto);
}
package com.dsk.biz.mapper;
import com.dsk.biz.domain.BusinessLabel;
import com.dsk.biz.domain.bo.BusinessIdDto;
import java.util.List;
/**
* 项目标签Mapper接口
*
* @date 2023-05-17
*/
public interface BusinessLabelMapper
{
/**
* 查询项目标签
*
* @param id 项目标签主键
* @return 项目标签
*/
public BusinessLabel selectBusinessLabelById(Long id);
/**
* 查询项目标签列表
*
* @param businessLabel 项目标签
* @return 项目标签集合
*/
public List<BusinessLabel> selectBusinessLabelList(BusinessLabel businessLabel);
/**
* 新增项目标签
*
* @param businessLabel 项目标签
* @return 结果
*/
public int insertBusinessLabel(BusinessLabel businessLabel);
/**
* 修改项目标签
*
* @param businessLabel 项目标签
* @return 结果
*/
public int updateBusinessLabel(BusinessLabel businessLabel);
/**
* 删除项目标签
*
* @param dto 项目主键
* @return 结果
*/
public int deleteBusinessLabelById(BusinessIdDto dto);
/**
* 批量删除项目标签
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteBusinessLabelByIds(Long[] ids);
}
package com.dsk.biz.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.biz.domain.BusinessOpenTender;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BusinessOpenTenderMapper extends BaseMapper<BusinessOpenTender> {
}
package com.dsk.biz.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.biz.domain.BusinessRelateCompany;
import com.dsk.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 项目关联单位Mapper接口
*
* @author lxl
* @date 2023-05-17
*/
public interface BusinessRelateCompanyMapper extends BaseMapperPlus<BusinessRelateCompanyMapper,BusinessRelateCompany,BusinessRelateCompany>
{
/**
* 查询项目关联单位
*
* @param id 项目关联单位主键
* @return 项目关联单位
*/
public BusinessRelateCompany selectBusinessRelateCompanyById(Long id);
/**
* 查询项目关联单位列表
*
* @param bo 项目关联单位
* @return 项目关联单位集合
*/
public Page<BusinessRelateCompany> selectBusinessRelateCompanyList(IPage<BusinessRelateCompany> page, @Param("bo") BusinessRelateCompany bo);
/**
* 新增项目关联单位
*
* @param businessRelateCompany 项目关联单位
* @return 结果
*/
public int insertBusinessRelateCompany(BusinessRelateCompany businessRelateCompany);
/**
* 修改项目关联单位
*
* @param businessRelateCompany 项目关联单位
* @return 结果
*/
public int updateBusinessRelateCompany(BusinessRelateCompany businessRelateCompany);
/**
* 删除项目关联单位
*
* @param id 项目关联单位主键
* @return 结果
*/
public int deleteBusinessRelateCompanyById(Long id);
/**
* 批量删除项目关联单位
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteBusinessRelateCompanyByIds(Long[] ids);
BusinessRelateCompany selectByProprietor(Integer id);
}
package com.dsk.biz.mapper;
import com.dsk.biz.domain.BusinessUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 项目用户关联Mapper接口
*
* @author lxl
* @date 2023-05-17
*/
public interface BusinessUserMapper
{
/**
* 查询项目用户关联
*
* @param id 项目用户关联主键
* @return 项目用户关联
*/
public BusinessUser selectBusinessUserById(Long id);
/**
* 查询项目用户关联列表
*
* @param businessUser 项目用户关联
* @return 项目用户关联集合
*/
public List<BusinessUser> selectBusinessUserList(BusinessUser businessUser);
/**
* 新增项目用户关联
*
* @param businessUser 项目用户关联
* @return 结果
*/
public int insertBusinessUser(BusinessUser businessUser);
/**
* 修改项目用户关联
*
* @param businessUser 项目用户关联
* @return 结果
*/
public int updateBusinessUser(BusinessUser businessUser);
/**
* 删除项目用户关联
*
* @param id 项目用户关联主键
* @return 结果
*/
public int deleteBusinessUserById(Long id);
/**
* 批量删除项目用户关联
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteBusinessUserByIds(Long[] ids);
/**
* 根据项目id查询项目的创建人
* @param businessId
* @return
*/
String selectCreatorByBusinessId(Integer businessId);
/**
* 查询是否为项目的创建人
* @param businessId
* @return
*/
Integer selectFounder(@Param("businessId") Integer businessId, @Param("userId") Long userId);
}
package com.dsk.biz.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.biz.domain.ContactInfo;
import com.dsk.biz.domain.bo.ContactInfoSearchDto;
import com.dsk.biz.domain.vo.ContactInfoListVo;
import com.dsk.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 用户联系人(CustomerContact)表数据库访问层
*
* @author makejava
* @since 2023-07-25 17:18:05
*/
@Mapper
public interface ContactInfoMapper extends BaseMapperPlus<ContactInfoMapper,ContactInfo,ContactInfo> {
Page<ContactInfoListVo> selectPageList(IPage<ContactInfoSearchDto> page , @Param("dto") ContactInfoSearchDto dto);
}
package com.dsk.biz.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.biz.domain.CustomerFollowRecord;
import com.dsk.biz.domain.bo.CustomerFollowRecordSearchDto;
import com.dsk.biz.domain.vo.BusinessListVo;
import com.dsk.biz.domain.vo.CustomerFollowRecordListVo;
import com.dsk.common.annotation.DataColumn;
import com.dsk.common.annotation.DataPermission;
import com.dsk.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 客户跟进记录(CustomerFollowRecord)表数据库访问层
*
* @author makejava
* @since 2023-05-18 15:07:59
*/
@Mapper
public interface CustomerFollowRecordMapper extends BaseMapperPlus<CustomerFollowRecordMapper, CustomerFollowRecord, CustomerFollowRecord> {
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
List<CustomerFollowRecordListVo> selectAuthList(@Param("page") IPage<CustomerFollowRecordSearchDto> page, @Param("dto") CustomerFollowRecordSearchDto dto);
}
package com.dsk.biz.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.biz.domain.Customer;
import com.dsk.biz.domain.bo.CustomerSearchDto;
import com.dsk.biz.domain.vo.CustomerAnalyzeVo;
import com.dsk.biz.domain.vo.CustomerListVo;
import com.dsk.biz.domain.vo.CustomerStatusListVo;
import com.dsk.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 客户信息表(Customer)表数据库访问层
*
* @author makejava
* @since 2023-05-16 09:28:00
*/
@Mapper
public interface CustomerMapper extends BaseMapper<Customer> {
Page<CustomerListVo> selectList(IPage<CustomerSearchDto> page, @Param("dto") CustomerSearchDto dto);
List<Customer> selectUserList(Long userId);
Customer selectByCompanyNameAndUserId(@Param("companyName") String companyName, @Param("userId") Long userId);
List<CustomerStatusListVo> selectStatusList(@Param("uipIds") List<String> uipIds, @Param("userId") Long userId);
List<CustomerStatusListVo> selectStatusListByCompanyName(@Param("companyNames") List<String> companyNames, @Param("userId") Long userId);
int selectCustomerCount(CustomerSearchDto dto);
List<CustomerAnalyzeVo> selectCooperationTop(CustomerSearchDto dto);
List<Map<String, Object>> selectCreditLevelGroup(CustomerSearchDto dto);
}
package com.dsk.biz.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.biz.domain.CustomerUser;
import com.dsk.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 客户负责人表(Customer)表数据库访问层
*
* @author makejava
* @since 2023-05-16 09:28:00
*/
@Mapper
public interface CustomerUserMapper extends BaseMapper<CustomerUser> {
CustomerUser selectByCustomerIdAndUserId(@Param("customerId") String customerId, @Param("userId") Long userId);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.BusinessBacklog;
import com.dsk.biz.domain.bo.BusinessBacklogListDto;
import com.dsk.biz.domain.vo.BusinessBacklogListVo;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
/**
* 项目工作待办Service接口
*
* @author llx
* @date 2023-05-17
*/
public interface IBusinessBacklogService
{
/**
* 查询项目工作待办
*
* @param id 项目工作待办主键
* @return 项目工作待办
*/
public BusinessBacklog selectBusinessBacklogById(Integer id);
/**
* 查询项目工作待办列表
*/
public TableDataInfo<BusinessBacklogListVo> selectBusinessBacklogList(BusinessBacklogListDto dto, PageQuery pageQuery);
/**
* 新增项目工作待办
*
* @param businessBacklog 项目工作待办
* @return 结果
*/
public int insertBusinessBacklog(BusinessBacklog businessBacklog);
/**
* 修改项目工作待办
*
* @param businessBacklog 项目工作待办
* @return 结果
*/
public int updateBusinessBacklog(BusinessBacklog businessBacklog);
/**
* 批量删除项目工作待办
*
* @param ids 需要删除的项目工作待办主键集合
* @return 结果
*/
public int deleteBusinessBacklogByIds(Long[] ids);
/**
* 删除项目工作待办信息
*
* @param id 项目工作待办主键
* @return 结果
*/
public int deleteBusinessBacklogById(Long id);
Integer overdueCount(Integer businessId);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.BusinessFollowRecord;
import com.dsk.biz.domain.bo.BusinessIdDto;
import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.vo.BusinessListVo;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import java.util.List;
/**
* 项目跟进记录Service接口
*
* @author lxl
* @date 2023-05-17
*/
public interface IBusinessFollowRecordService
{
/**
* 查询项目跟进记录
*
* @param id 项目跟进记录主键
* @return 项目跟进记录
*/
public BusinessFollowRecord selectBusinessFollowRecordById(Long id);
/**
* 根据项目id查询项目跟进记录
*
* @param dto 项目跟进记录
* @return 项目跟进记录集合
*/
public TableDataInfo<BusinessFollowRecord> selectBusinessFollowRecordList(BusinessIdDto dto, PageQuery pageQuery);
/**
* 分页查询跟进动态
*
* @param dto
* @return
*/
TableDataInfo<BusinessFollowRecord> allFollow(BusinessListDto dto, PageQuery pageQuery);
/**
* 分页查询项目跟进记录列表
*
* @param businessFollowRecord 项目跟进记录
* @return 项目跟进记录集合
*/
public List<BusinessFollowRecord> businessFollowRecordPaging(BusinessFollowRecord businessFollowRecord);
/**
* 新增项目跟进记录
*
* @param businessFollowRecord 项目跟进记录
* @return 结果
*/
public int insertBusinessFollowRecord(BusinessFollowRecord businessFollowRecord);
/**
* 查询关联项目
* @param userId
* @return
*/
List<BusinessListVo> selectRelateProject(Long userId);
/**
* 查询关联业主企业
* @param userId
* @return
*/
List<String> selectRelateCompany(Long userId);
/**
* 修改项目跟进记录
*
* @param businessFollowRecord 项目跟进记录
* @return 结果
*/
public int updateBusinessFollowRecord(BusinessFollowRecord businessFollowRecord);
/**
* 批量删除项目跟进记录
*
* @param ids 需要删除的项目跟进记录主键集合
* @return 结果
*/
public int deleteBusinessFollowRecordByIds(Long[] ids);
/**
* 删除项目跟进记录信息
*
* @param id 项目跟进记录主键
* @return 结果
*/
public int deleteBusinessFollowRecordById(Long id);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.BusinessInfo;
import com.dsk.biz.domain.bo.BusinessAddDto;
import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.bo.CustomerBusinessSearchDto;
import com.dsk.biz.domain.vo.BusinessBrowseVo;
import com.dsk.biz.domain.vo.BusinessLikeProjectNameListVo;
import com.dsk.biz.domain.vo.BusinessListVo;
import com.dsk.biz.domain.vo.CustomerBusinessListVo;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* 项目详情Service接口
*
* @date 2023-05-17
*/
public interface IBusinessInfoService
{
/**
* 查询项目详情
*
* @param id 项目详情主键
* @return 项目详情
*/
public BusinessInfo selectBusinessInfoById(Integer id);
/**
* 查询项目建设内容
*
* @param id 项目详情主键
* @return
*/
BusinessInfo getConstruction(Integer id);
/**
* 查询项目详情列表
*
* @param dto 项目详情
* @return 项目详情集合
*/
public TableDataInfo<BusinessListVo> selectBusinessInfoList(BusinessListDto dto, PageQuery pageQuery);
/**
* 查询项目速览
* @param businessId
* @return
*/
BusinessBrowseVo browse(Integer businessId);
/**
* 查询所有项目名称(支持模糊查询)
* @return
*/
List<BusinessLikeProjectNameListVo> selectProjectName(BusinessListDto dto,PageQuery pageQuery);
/**
* 项目批量导入
*/
AjaxResult batchUpload(MultipartFile file);
/**
* 新增项目详情
*
* @param dto 项目详情
* @return 结果
*/
public boolean insertBusinessInfo(BusinessAddDto dto);
/**
* 修改项目详情
*
* @param businessInfo 项目详情
* @return 结果
*/
public int updateBusinessInfo(BusinessInfo businessInfo);
/**
* 批量删除项目详情
*
* @param ids 需要删除的项目详情主键集合
* @return 结果
*/
public int deleteBusinessInfoByIds(Long[] ids);
/**
* 删除项目详情信息
*
* @param id 项目详情主键
* @return 结果
*/
public int deleteBusinessInfoById(Long id);
int selectCountByStatusAndCustomerId(Integer status,String customerId);
TableDataInfo<CustomerBusinessListVo> selectCustomerBusinessList(CustomerBusinessSearchDto dto, PageQuery pageQuery);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.BusinessLabel;
import com.dsk.biz.domain.bo.BusinessIdDto;
import java.util.List;
/**
* 项目标签Service接口
*
* @date 2023-05-17
*/
public interface IBusinessLabelService
{
/**
* 查询项目标签
*
* @param id 项目标签主键
* @return 项目标签
*/
public BusinessLabel selectBusinessLabelById(Long id);
/**
* 查询项目标签列表
*
* @param businessLabel 项目标签
* @return 项目标签集合
*/
public List<BusinessLabel> selectBusinessLabelList(BusinessLabel businessLabel);
/**
* 新增项目标签
*
* @param businessLabel 项目标签
* @return 结果
*/
public int insertBusinessLabel(BusinessLabel businessLabel);
/**
* 修改项目标签
*
* @param businessLabel 项目标签
* @return 结果
*/
public int updateBusinessLabel(BusinessLabel businessLabel);
/**
* 批量删除项目标签
*
* @param ids 需要删除的项目标签主键集合
* @return 结果
*/
public int deleteBusinessLabelByIds(Long[] ids);
/**
* 删除项目标签信息
*
* @param dto 项目主键
* @return 结果
*/
public int deleteBusinessLabelById(BusinessIdDto dto);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.BusinessOpenTender;
import com.dsk.biz.domain.bo.BusinessOpenTenderDto;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
public interface IBusinessOpenTenderService {
TableDataInfo<BusinessOpenTender> selectList(BusinessOpenTenderDto dto, PageQuery pageQuery);
int add(BusinessOpenTender bo);
int edit(BusinessOpenTender bo);
int remove(Long[] ids);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.bo.BusinessSearchDto;
import com.dsk.biz.domain.vo.BusinessAnalyzeVo;
import com.dsk.common.core.domain.AjaxResult;
import java.util.List;
import java.util.Map;
/**
* @author lcl
* @create 2023/8/14
*/
public interface IBusinessOverviewService {
Map<String, Object> statusStatistics(BusinessSearchDto dto);
List<BusinessAnalyzeVo> amountAnalyze(BusinessSearchDto dto);
List<BusinessAnalyzeVo> typeAnalyze(BusinessSearchDto dto);
List<BusinessAnalyzeVo> categoryAnalyze(BusinessSearchDto dto);
AjaxResult countGroupByProvince(Map<String,Object> object);
AjaxResult rangByMoney(Map<String,Object> object);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.BusinessRelateCompany;
import com.dsk.biz.domain.bo.BusinessIdDto;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import java.util.List;
/**
* 项目关联单位Service接口
*
* @author lxl
* @date 2023-05-17
*/
public interface IBusinessRelateCompanyService
{
/**
* 查询项目关联单位
*
* @param id 项目关联单位主键
* @return 项目关联单位
*/
public BusinessRelateCompany selectBusinessRelateCompanyById(Long id);
/**
* 查询项目关联单位列表
*
* @param bo 项目关联单位
* @return 项目关联单位集合
*/
public TableDataInfo<BusinessRelateCompany> selectBusinessRelateCompanyList(BusinessRelateCompany bo, PageQuery pageQuery);
/**
* 新增项目关联单位
*
* @param businessRelateCompany 项目关联单位
* @return 结果
*/
public int insertBusinessRelateCompany(BusinessRelateCompany businessRelateCompany);
/**
* 修改项目关联单位
*
* @param businessRelateCompany 项目关联单位
* @return 结果
*/
public int updateBusinessRelateCompany(BusinessRelateCompany businessRelateCompany);
/**
* 批量删除项目关联单位
*
* @param ids 需要删除的项目关联单位主键集合
* @return 结果
*/
public int deleteBusinessRelateCompanyByIds(Long[] ids);
/**
* 删除项目关联单位信息
*
* @param id 项目关联单位主键
* @return 结果
*/
public int deleteBusinessRelateCompanyById(Long id);
/**
* 查询关联单位角色
*/
List<String> companyRoleList(BusinessIdDto dto);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.ContactInfo;
import com.dsk.biz.domain.bo.ContactInfoSearchDto;
import com.dsk.biz.domain.vo.ContactInfoListVo;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
/**
* 用户联系人(CustomerContact)表服务接口
*
* @author makejava
* @since 2023-07-25 17:18:05
*/
public interface IContactInfoService {
/**
* 查询数据列表
*/
TableDataInfo<ContactInfoListVo> selectList(ContactInfoSearchDto dto, PageQuery pageQuery);
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
ContactInfo selectById(Long id);
/**
* 新增数据
*
* @param bean 实例对象
* @return 实例对象
*/
boolean insert(ContactInfo bean);
/**
* 修改数据
*
* @param bean 实例对象
* @return 实例对象
*/
boolean update(ContactInfo bean);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
boolean deleteById(Long id);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.CustomerFollowRecord;
import com.dsk.biz.domain.bo.CustomerFollowRecordSearchDto;
import com.dsk.biz.domain.vo.CustomerFollowRecordListVo;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
/**
* 客户跟进记录(CustomerFollowRecord)表服务接口
*
* @author makejava
* @since 2023-05-18 15:07:59
*/
public interface ICustomerFollowRecordService {
TableDataInfo<CustomerFollowRecordListVo> selectList(CustomerFollowRecordSearchDto dto, PageQuery pageQuery);
boolean add(CustomerFollowRecord followRecord);
boolean del(Long id);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.bo.CustomerSearchDto;
import com.dsk.biz.domain.vo.CustomerAnalyzeVo;
import java.util.List;
import java.util.Map;
/**
* @author lcl
* @create 2023/8/15
*/
public interface ICustomerOverviewService {
Map<String, Object> statistics(CustomerSearchDto dto);
List<CustomerAnalyzeVo> cooperationTop(CustomerSearchDto dto);
List<Map<String, Object>> creditLevel(CustomerSearchDto dto);
}
package com.dsk.biz.service;
import com.dsk.biz.domain.Customer;
import com.dsk.biz.domain.bo.CustomerBusinessSearchDto;
import com.dsk.biz.domain.bo.CustomerSearchDto;
import com.dsk.biz.domain.vo.CustomerBusinessListVo;
import com.dsk.biz.domain.vo.CustomerListVo;
import com.dsk.biz.domain.vo.CustomerStatusListVo;
import com.dsk.biz.domain.vo.CustomerVo;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import java.util.List;
/**
* 客户信息表(Customer)表服务接口
*
* @author makejava
* @since 2023-05-16 09:28:00
*/
public interface ICustomerService {
TableDataInfo<CustomerListVo> selectList(CustomerSearchDto dto, PageQuery pageQuery);
CustomerVo info(String customerId);
boolean add(Customer customer);
boolean edit(Customer customer);
List<Customer> selectUserList();
TableDataInfo<CustomerBusinessListVo> selectBusinessList(CustomerBusinessSearchDto dto,PageQuery pageQuery);
List<CustomerStatusListVo> selectStatusList(List<String> uipIds);
List<CustomerStatusListVo> selectStatusListByCompanyName(List<String> companyNames);
// List<String> selectUipIdList(List<String> uipIds);
Integer status(String companyName);
boolean cancelClaim(String companyName);
boolean historyClaim(String companyName);
Customer selectByCompanyNameAndUserId(String companyName);
}
package com.dsk.biz.service.impl;
import cn.hutool.core.bean.BeanException;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.biz.domain.BusinessBacklog;
import com.dsk.biz.domain.bo.BusinessBacklogListDto;
import com.dsk.biz.domain.vo.BusinessBacklogListVo;
import com.dsk.biz.mapper.BusinessBacklogMapper;
import com.dsk.biz.service.IBusinessBacklogService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.base.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* 项目工作待办Service业务层处理
*
* @author lxl
* @date 2023-05-17
*/
@Service
@Slf4j
public class BusinessBacklogServiceImpl implements IBusinessBacklogService {
@Resource
private BusinessBacklogMapper businessBacklogMapper;
/**
* 查询项目工作待办
*
* @param id 项目工作待办主键
* @return 项目工作待办
*/
@Override
public BusinessBacklog selectBusinessBacklogById(Integer id) {
return businessBacklogMapper.selectBusinessBacklogById(id);
}
/**
* 查询项目工作待办列表
*
* @param dto 项目工作待办
* @return 项目工作待办
*/
@Override
public TableDataInfo<BusinessBacklogListVo> selectBusinessBacklogList(BusinessBacklogListDto dto, PageQuery pageQuery) {
if (ObjectUtil.isEmpty(dto.getBusinessId())) {
throw new BeanException("项目id不能为空!");
}
if (ObjectUtil.isEmpty(dto.getState())) {
throw new BeanException("工作代办状态不能为空!");
}
switch (dto.getState()) {
case 0:
dto.setStartTime(new Date());
break;
case 1:
break;
case 2:
dto.setState(0);
dto.setEndTime(new Date());
break;
default:
throw new BeanException("工作代办状态参数错误!");
}
return TableDataInfo.build(businessBacklogMapper.selectBusinessBacklogList(pageQuery.build(), dto));
}
/**
* 新增项目工作待办
*
* @param businessBacklog 项目工作待办
* @return 结果
*/
@Override
@Transactional
public int insertBusinessBacklog(BusinessBacklog businessBacklog) {
if (ObjectUtil.isNotEmpty(businessBacklog.getDueTime())) {
if (businessBacklog.getDueTime().before(new Date())) throw new BaseException("到期时间必须大于当前时间");
}
return businessBacklogMapper.insertBusinessBacklog(businessBacklog);
}
/**
* 修改项目工作待办
*
* @param businessBacklog 项目工作待办
* @return 结果
*/
@Override
@Transactional
public int updateBusinessBacklog(BusinessBacklog businessBacklog) {
if (ObjectUtil.isEmpty(businessBacklog.getId())) {
throw new BeanException("id不能为空!");
}
if (ObjectUtil.isEmpty(businessBacklog.getState())) {
throw new BeanException("状态不能为空!");
}
switch (businessBacklog.getState()) {
case 0:
businessBacklog.setFinishTime(null);
break;
case 1:
businessBacklog.setFinishTime(new Date());
break;
default:
throw new BeanException("状态参数错误!");
}
return businessBacklogMapper.updateBusinessBacklog(businessBacklog);
}
/**
* 批量删除项目工作待办
*
* @param ids 需要删除的项目工作待办主键
* @return 结果
*/
@Override
public int deleteBusinessBacklogByIds(Long[] ids) {
return businessBacklogMapper.deleteBusinessBacklogByIds(ids);
}
/**
* 删除项目工作待办信息
*
* @param id 项目工作待办主键
* @return 结果
*/
@Override
public int deleteBusinessBacklogById(Long id) {
return businessBacklogMapper.deleteBusinessBacklogById(id);
}
@Override
public Integer overdueCount(Integer businessId) {
return businessBacklogMapper.overdueCount(businessId);
}
}
package com.dsk.biz.service.impl;
import com.dsk.biz.domain.BusinessFollowRecord;
import com.dsk.biz.domain.bo.BusinessIdDto;
import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.vo.BusinessListVo;
import com.dsk.biz.mapper.BusinessFollowRecordMapper;
import com.dsk.biz.service.IBusinessFollowRecordService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* 项目跟进记录Service业务层处理
*
* @author lxl
* @date 2023-05-17
*/
@Service
public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordService
{
@Resource
private BusinessFollowRecordMapper businessFollowRecordMapper;
/**
* 查询项目跟进记录
*
* @param id 项目跟进记录主键
* @return 项目跟进记录
*/
@Override
public BusinessFollowRecord selectBusinessFollowRecordById(Long id)
{
return businessFollowRecordMapper.selectBusinessFollowRecordById(id);
}
@Override
public TableDataInfo<BusinessFollowRecord> selectBusinessFollowRecordList(BusinessIdDto dto, PageQuery pageQuery)
{
return TableDataInfo.build(businessFollowRecordMapper.selectBusinessFollowRecordList(pageQuery.build(),dto));
}
@Override
// @DataScope(userAlias = "u",deptAlias = "d")
public TableDataInfo<BusinessFollowRecord> allFollow(BusinessListDto dto, PageQuery pageQuery) {
//userId不传值,就查询全部
// if (dto.getUserId() == null) {
// Long deptId = SecurityUtils.getLoginUser().getDeptId();
// if (deptId == null) throw new BaseException("请登录");
// dto.setDeptId(deptId.intValue());
// }
return TableDataInfo.build(businessFollowRecordMapper.allFollow(pageQuery.build(),dto));
}
@Override
public List<BusinessFollowRecord> businessFollowRecordPaging(BusinessFollowRecord businessFollowRecord) {
return businessFollowRecordMapper.businessFollowRecordPaging(businessFollowRecord);
}
/**
* 新增项目跟进记录
*
* @param businessFollowRecord 项目跟进记录
* @return 结果
*/
@Override
@Transactional
public int insertBusinessFollowRecord(BusinessFollowRecord businessFollowRecord)
{
return businessFollowRecordMapper.insertBusinessFollowRecord(businessFollowRecord);
}
@Override
public List<BusinessListVo> selectRelateProject(Long userId) {
return businessFollowRecordMapper.selectRelateProject(userId);
}
@Override
public List<String> selectRelateCompany(Long userId) {
return businessFollowRecordMapper.selectRelateCompany(userId);
}
/**
* 修改项目跟进记录
*
* @param businessFollowRecord 项目跟进记录
* @return 结果
*/
@Override
public int updateBusinessFollowRecord(BusinessFollowRecord businessFollowRecord)
{
businessFollowRecord.setUpdateTime(DateUtils.getNowDate());
return businessFollowRecordMapper.updateBusinessFollowRecord(businessFollowRecord);
}
/**
* 批量删除项目跟进记录
*
* @param ids 需要删除的项目跟进记录主键
* @return 结果
*/
@Override
@Transactional
public int deleteBusinessFollowRecordByIds(Long[] ids)
{
return businessFollowRecordMapper.deleteBusinessFollowRecordByIds(ids);
}
/**
* 删除项目跟进记录信息
*
* @param id 项目跟进记录主键
* @return 结果
*/
@Override
public int deleteBusinessFollowRecordById(Long id)
{
return businessFollowRecordMapper.deleteBusinessFollowRecordById(id);
}
}
package com.dsk.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.biz.domain.*;
import com.dsk.biz.domain.bo.BusinessAddDto;
import com.dsk.biz.domain.bo.BusinessExcelDto;
import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.bo.CustomerBusinessSearchDto;
import com.dsk.biz.domain.vo.*;
import com.dsk.biz.utils.ExcelUtils;
import com.dsk.biz.utils.OldFileUtils;
import com.dsk.common.utils.file.FileUploadUtils;
import com.dsk.jsk.service.EnterpriseService;
import com.dsk.biz.mapper.BusinessInfoMapper;
import com.dsk.biz.mapper.BusinessLabelMapper;
import com.dsk.biz.mapper.BusinessRelateCompanyMapper;
import com.dsk.biz.mapper.BusinessUserMapper;
import com.dsk.biz.service.IBusinessInfoService;
import com.dsk.biz.service.ICustomerService;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.CheckUtils;
import com.dsk.system.utils.DskOpenApiUtil;
import com.dsk.common.utils.JsonUtils;
import com.dsk.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.*;
/**
* 项目详情Service业务层处理
*
* @author lxl
* @date 2023-05-17
*/
@Service
@Slf4j
public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Resource
private BusinessInfoMapper businessInfoMapper;
@Resource
private BusinessUserMapper businessUserMapper;
@Resource
private BusinessLabelMapper businessLabelMapper;
@Resource
private ReadBusinessInfoExcel readBusinessInfoExcel;
@Resource
private BusinessRelateCompanyMapper relateCompanyMapper;
@Resource
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
private ICustomerService customerService;
@Autowired
private EnterpriseService enterpriseService;
/**
* 查询项目详情
*
* @param id 项目详情主键
* @return 项目详情
*/
@Override
public BusinessInfo selectBusinessInfoById(Integer id) {
return businessInfoMapper.selectBusinessInfoById(id);
}
@Override
public BusinessInfo getConstruction(Integer id) {
BusinessInfo businessInfo = businessInfoMapper.getConstruction(id);
return ObjectUtil.isEmpty(businessInfo) ? new BusinessInfo() : businessInfo;
}
/**
* 查询项目详情列表
*
* @param dto 项目详情
* @return 项目详情
*/
@Override
public TableDataInfo<BusinessListVo> selectBusinessInfoList(BusinessListDto dto, PageQuery pageQuery) {
dto.setUserId(LoginHelper.getUserId());
TableDataInfo<BusinessListVo> result = TableDataInfo.build(businessInfoMapper.selectBusinessInfoList(pageQuery.build(), dto));
if (!CollectionUtils.isEmpty(result.getRows()) && ObjectUtil.isNotEmpty(dto.getProjectName())) {
for (BusinessListVo vo : result.getRows()) {
vo.setProjectName(StringUtils.markInRed(vo.getProjectName(), dto.getProjectName()));
vo.setOwnerCompany(StringUtils.markInRed(vo.getOwnerCompany(), dto.getProjectName()));
}
}
return result;
}
@Override
public BusinessBrowseVo browse(Integer businessId) {
BusinessBrowseVo businessBrowseVo = new BusinessBrowseVo();
//查询项目基本信息
BusinessInfo businessInfo = businessInfoMapper.selectBusinessInfoById(businessId);
if (ObjectUtil.isNotEmpty(businessInfo)) BeanUtil.copyProperties(businessInfo, businessBrowseVo);
//商务团队
businessBrowseVo.setTeam(businessUserMapper.selectCreatorByBusinessId(businessId));
//查询是否是项目创建人
Long userId = LoginHelper.getUserId();
if (userId == null) throw new BaseException("请登录");
Integer founder = businessUserMapper.selectFounder(businessId, userId);
businessBrowseVo.setIsFounder(founder == null ? 0 : founder);
//查询项目标签
List<BusinessLabel> labels = businessLabelMapper.selectBusinessLabelList(new BusinessLabel(businessId));
String labelList = CollectionUtil.isEmpty(labels) ? null : JsonUtils.toJsonString(BeanUtil.copyToList(labels, BusinessLabelVo.class));
businessBrowseVo.setLabelList(labelList);
//相关数据统计
BusinessBrowseVo total = businessInfoMapper.selectTotal(businessId);
businessBrowseVo.setBacklogCount(total.getBacklogCount());
businessBrowseVo.setContactsCount(total.getContactsCount());
businessBrowseVo.setFollowRecordCount(total.getFollowRecordCount());
businessBrowseVo.setRelateCompanyCount(total.getRelateCompanyCount());
//资料文档统计
businessBrowseVo.setFileCount(OldFileUtils.getAllFileNames(FileUploadUtils.getDefaultBaseDir() + businessId).size());
return businessBrowseVo;
}
@Override
public List<BusinessLikeProjectNameListVo> selectProjectName(BusinessListDto dto,PageQuery pageQuery) {
// List<BusinessLikeProjectNameListVo> vos = businessInfoMapper.selectProjectName(dto);
List<BusinessLikeProjectNameListVo> vos = new ArrayList<>();
try {
Map<String, Object> result = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/findByName", toRequestMap(dto,pageQuery));
if (ObjectUtil.isNotEmpty(result.get("data"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) BeanUtil.beanToMap(result.get("data")).get("list");
if (!CollectionUtils.isEmpty(list)) {
for (Map<String, Object> map : list) {
BusinessLikeProjectNameListVo vo = new BusinessLikeProjectNameListVo();
vo.setProjectName(StringUtils.markInRed(MapUtil.getStr(map, "projectName"), dto.getProjectName()));
vo.setCompanyName(MapUtil.getStr(map, "tenderee"));
if (null != map.get("projectContractAmount") && ObjectUtil.isNotEmpty(map.get("projectContractAmount"))) {
vo.setInvestmentAmount(MapUtil.getDouble(map, "projectContractAmount"));
}
// vo.setProjectType(MapUtil.getStr(map, "projectCategory"));
//项目阶段
vo.setProjectStage(MapUtil.getStr(map, "tenderStage"));
//项目类别
vo.setProjectCategory(MapUtil.getStr(map, "projectCategory"));
vos.add(vo);
}
}
}
} catch (Exception e) {
log.error("模糊查询项目名称调用失败!", e);
}
return vos;
}
private Map<String, Object> toRequestMap(BusinessListDto dto,PageQuery pageQuery) {
Map<String, Object> page = new HashMap<>();
page.put("page", pageQuery.getPageNum());
page.put("limit", pageQuery.getPageSize());
Map<String, Object> map = new HashMap<>();
map.put("keyword", dto.getProjectName());
map.put("page", page);
return map;
}
@Override
public AjaxResult batchUpload(MultipartFile file) {
//获取当前登录用户id
Long userId = LoginHelper.getUserId();
if (userId == null) return AjaxResult.error("请登录");
int row = 3;//起始行数
int rowSuccess = 0;//成功条数
Integer errorCount = 0;//失败条数
List<String> result = new LinkedList();//导入结果汇总
List<BusinessExcelDto> businessInfoList = null;
try {
businessInfoList = new ExcelUtils<>(BusinessExcelDto.class).importExcel(file.getInputStream(), 2);
if (CollectionUtil.isEmpty(businessInfoList)) return AjaxResult.error("文档中无项目信息,请按照模板文档格式上传");
} catch (Exception e) {
throw new ServiceException("数据导入失败,请检查文档格式是否有误!");
}
// List<BusinessExcelDto> businessInfoList = readBusinessInfoExcel.getExcelInfo(file);
for (BusinessExcelDto businessInfo : businessInfoList) {
// //查询已有的项目名称
// Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId, businessInfo.getOwnerCompany());
// row++;
// if (count > 0) {
// //如果存在,跳过该项目,不保存
//// result.add("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条");
// log.info("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条");
// errorCount++;
// } else {
//保存到数据库
BusinessAddDto businessAddDto = new BusinessAddDto();
BeanUtil.copyProperties(businessInfo, businessAddDto);
businessAddDto.setUserId(userId);
try {
// new BusinessInfoServiceImpl().insertBusinessInfo(businessAddDto);
this.insertBusinessInfo(businessAddDto);
rowSuccess++;
}catch (Exception e){
errorCount++;
}
// }
}
result.add("导入项目成功条数" + rowSuccess);
result.add("导入项目去重条数" + errorCount);
AjaxResult success = AjaxResult.success(String.join(",", result));
success.put("successCount", rowSuccess);
return success;
}
/**
* 新增项目详情
*
* @param dto 项目详情
* @return 结果
*/
@Override
@Transactional
public boolean insertBusinessInfo(BusinessAddDto dto) {
//新增前查询是否已存在
int count = businessInfoMapper.isRepetitionProjectName(dto.getProjectName(), dto.getUserId(), dto.getOwnerCompany());
if (count > 0) throw new ServiceException("项目名称已存在");
//判断资金Double类型的位数
if (dto.getInvestmentAmount() != null) {
int front = CheckUtils.checkIntegerPlaces(dto.getInvestmentAmount());
int later = CheckUtils.checkDecimalPlaces(dto.getInvestmentAmount());
if (front > 9) throw new ServiceException("小数点前最多支持9位");
if (later > 6) throw new ServiceException("小数点后最多支持6位");
}
//新增项目主信息
BusinessInfo businessInfo = new BusinessInfo();
BeanUtil.copyProperties(dto, businessInfo);
CustomerVo vo = new CustomerVo();
if (ObjectUtil.isNotEmpty(dto.getCustomerId())) {
vo = customerService.info(dto.getCustomerId());
} else {
Customer verifyCustomer = customerService.selectByCompanyNameAndUserId(dto.getOwnerCompany());
if (ObjectUtil.isNotEmpty(verifyCustomer)) {
BeanUtil.copyProperties(verifyCustomer, vo);
} else {
vo.setCompanyName(dto.getOwnerCompany());
customerService.add(vo);
}
businessInfo.setCustomerId(vo.getCustomerId());
}
businessInfo.setConstructionUnit(vo.getCompanyName());
businessInfo.setConstructionUnitUipId(vo.getUipId());
businessInfo.setConstructionUnitCid(vo.getCompanyId());
businessInfo.setConstructionPrincipal(vo.getLegalPerson());
businessInfo.setTenantId(LoginHelper.getTenantId());
int addBusiness = businessInfoMapper.insertBusinessInfo(businessInfo);
if (addBusiness > 0) {
//获取登陆用户的部门id
//新增用户-项目关系信息
int addbusinessUser = businessUserMapper.insertBusinessUser(new BusinessUser(businessInfo.getId(), LoginHelper.getDeptId(), dto.getUserId(), 1));
if (addbusinessUser == 0) {
throw new ServiceException("项目关系信息添加失败!");
}
}
int i = relateCompanyMapper.insertBusinessRelateCompany(dealwithCustomer(businessInfo));
if (i == 0) {
throw new ServiceException("业主单位信息添加失败!");
}
return true;
}
/**
* 修改项目详情
*
* @param businessInfo 项目详情
* @return 结果
*/
@Override
@Transactional
public int updateBusinessInfo(BusinessInfo businessInfo) {
if (ObjectUtil.isEmpty(businessInfo.getId())) {
throw new BaseException("项目id不能为空!");
}
//判断资金Double类型的位数
if (ObjectUtil.isNotEmpty(businessInfo.getInvestmentAmount())) {
int front = CheckUtils.checkIntegerPlaces(businessInfo.getInvestmentAmount());
int later = CheckUtils.checkDecimalPlaces(businessInfo.getInvestmentAmount());
if (front > 9) throw new BaseException("500", "小数点前最多支持9位");
if (later > 6) throw new BaseException("500", "小数点后最多支持6位");
}
if (StringUtils.isNotEmpty(businessInfo.getConstructionPhone()) && StringUtils.isNotEmpty(businessInfo.getSupervisorPhone())) {
if (!CheckUtils.isPhone(businessInfo.getConstructionPhone()) || !CheckUtils.isPhone(businessInfo.getSupervisorPhone()))
throw new BaseException("500", "请输入正确的电话号码");
}
//查询企业的城投id和建设库id
BusinessRelateCompany relateCompany = relateCompanyMapper.selectByProprietor(businessInfo.getId());
if (ObjectUtil.isNotEmpty(businessInfo.getConstructionUnit())) {
Map<String, Object> map = enterpriseService.getCidAndUipIdByCompanyName(businessInfo.getConstructionUnit());
businessInfo.setConstructionUnitUipId(MapUtils.getString(map, "uipId"));
businessInfo.setConstructionUnitCid(MapUtils.getInteger(map, "companyId"));
//相关企业
if (ObjectUtil.isEmpty(relateCompany)) {
relateCompanyMapper.insertBusinessRelateCompany(dealwithCustomer(businessInfo));
}
if (ObjectUtil.isNotEmpty(relateCompany) && !businessInfo.getConstructionUnit().equals(relateCompany.getCompanyName())) {
relateCompany.setCompanyId(businessInfo.getConstructionUnitCid());
relateCompany.setCompanyUipId(businessInfo.getConstructionUnitUipId());
relateCompany.setCompanyName(businessInfo.getConstructionUnit());
relateCompanyMapper.updateBusinessRelateCompany(relateCompany);
}
}
if (ObjectUtil.isNotEmpty(relateCompany) &&
(ObjectUtil.isNotEmpty(businessInfo.getConstructionPhone())
|| ObjectUtil.isNotEmpty(businessInfo.getConstructionPrincipal()))) {
relateCompany.setPhone(businessInfo.getConstructionPhone());
relateCompany.setResponsiblePerson(businessInfo.getConstructionPrincipal());
relateCompanyMapper.updateBusinessRelateCompany(relateCompany);
}
return businessInfoMapper.updateBusinessInfo(businessInfo);
}
/**
* 批量删除项目
* 项目关联的其他所有表数据一并删除
*
* @param ids 需要删除的项目详情主键
* @return 结果
*/
@Override
@Transactional
public int deleteBusinessInfoByIds(Long[] ids) {
//删除项目详情,用户关联项目,项目工作代办,项目联系人,项目跟进记录,项目标签,项目相关企业
int deleteBusiness = businessInfoMapper.deleteBusinessInfoByIds(ids);
//删除项目上传的文件
// for (Long id : ids) {
// try {
// FileUtils.delFolder(ShuZhiHuaConfig.getUploadPath() + id);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
return deleteBusiness;
}
/**
* 删除项目详情信息
*
* @param id 项目详情主键
* @return 结果
*/
@Override
public int deleteBusinessInfoById(Long id) {
return businessInfoMapper.deleteBusinessInfoById(id);
}
/**
* 查询项目数量
*
* @param status 项目状态
* @param customerId 客户id
* @return 项目数量
*/
@Override
public int selectCountByStatusAndCustomerId(Integer status, String customerId) {
return businessInfoMapper.selectCountByStatusAndCustomerId(status, customerId);
}
@Override
public TableDataInfo<CustomerBusinessListVo> selectCustomerBusinessList(CustomerBusinessSearchDto dto, PageQuery pageQuery) {
return TableDataInfo.build(businessInfoMapper.selectCustomerBusinessList(pageQuery.build(), dto));
}
private BusinessRelateCompany dealwithCustomer(BusinessInfo bean) {
BusinessRelateCompany relateCompany = new BusinessRelateCompany();
relateCompany.setBusinessId(bean.getId());
relateCompany.setCompanyId(bean.getConstructionUnitCid());
relateCompany.setCompanyUipId(bean.getConstructionUnitUipId());
relateCompany.setCompanyName(bean.getConstructionUnit());
relateCompany.setPhone(bean.getConstructionPhone());
relateCompany.setCompanyRole("招采单位");
relateCompany.setResponsiblePerson(bean.getConstructionPrincipal());
relateCompany.setIsProprietor(1);
relateCompany.setRemark("业主单位");
return relateCompany;
}
}
package com.dsk.biz.service.impl;
import com.dsk.biz.domain.BusinessLabel;
import com.dsk.biz.domain.bo.BusinessIdDto;
import com.dsk.biz.mapper.BusinessLabelMapper;
import com.dsk.biz.service.IBusinessLabelService;
import com.dsk.common.utils.DateUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* 项目标签Service业务层处理
*
* @date 2023-05-17
*/
@Service
public class BusinessLabelServiceImpl implements IBusinessLabelService
{
@Resource
private BusinessLabelMapper businessLabelMapper;
/**
* 查询项目标签
*
* @param id 项目标签主键
* @return 项目标签
*/
@Override
public BusinessLabel selectBusinessLabelById(Long id)
{
return businessLabelMapper.selectBusinessLabelById(id);
}
/**
* 查询项目标签列表
*
* @param businessLabel 项目标签
* @return 项目标签
*/
@Override
public List<BusinessLabel> selectBusinessLabelList(BusinessLabel businessLabel)
{
return businessLabelMapper.selectBusinessLabelList(businessLabel);
}
/**
* 新增项目标签
*
* @param businessLabel 项目标签
* @return 结果
*/
@Override
@Transactional
public int insertBusinessLabel(BusinessLabel businessLabel)
{
businessLabel.setCreateTime(DateUtils.getNowDate());
return businessLabelMapper.insertBusinessLabel(businessLabel);
}
/**
* 修改项目标签
*
* @param businessLabel 项目标签
* @return 结果
*/
@Override
public int updateBusinessLabel(BusinessLabel businessLabel)
{
businessLabel.setUpdateTime(DateUtils.getNowDate());
return businessLabelMapper.updateBusinessLabel(businessLabel);
}
/**
* 批量删除项目标签
*
* @param ids 需要删除的项目标签主键
* @return 结果
*/
@Override
public int deleteBusinessLabelByIds(Long[] ids)
{
return businessLabelMapper.deleteBusinessLabelByIds(ids);
}
/**
* 删除项目标签信息
*
* @param dto 项目主键
* @return 结果
*/
@Override
@Transactional
public int deleteBusinessLabelById(BusinessIdDto dto)
{
return businessLabelMapper.deleteBusinessLabelById(dto);
}
}
package com.dsk.biz.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.biz.domain.BusinessOpenTender;
import com.dsk.biz.domain.bo.BusinessOpenTenderDto;
import com.dsk.biz.mapper.BusinessOpenTenderMapper;
import com.dsk.biz.service.IBusinessOpenTenderService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.ServiceException;
import jodd.bean.BeanException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.Arrays;
/**
* @Author lcl
* @Data 2023/10/23 16:29
*/
@Slf4j
@Service
public class BusinessOpenTenderServiceImpl implements IBusinessOpenTenderService {
@Resource
private BusinessOpenTenderMapper baseMapper;
@Override
public TableDataInfo<BusinessOpenTender> selectList(BusinessOpenTenderDto dto, PageQuery pageQuery) {
return TableDataInfo.build(baseMapper.selectPage(pageQuery.build(),
Wrappers.<BusinessOpenTender>lambdaQuery().eq(BusinessOpenTender::getBusinessId, dto.getBusinessId())));
}
@Override
public int add(BusinessOpenTender bo) {
verifyBean(bo);
BusinessOpenTender openTender = baseMapper.selectOne(Wrappers.<BusinessOpenTender>lambdaQuery()
.eq(BusinessOpenTender::getTenderer, bo.getTenderer())
.eq(BusinessOpenTender::getBusinessId,bo.getBusinessId()));
if(!ObjectUtils.isEmpty(openTender)) throw new ServiceException("当前投标人已存在");
return baseMapper.insert(bo);
}
@Override
public int edit(BusinessOpenTender bo) {
if(ObjectUtils.isArray(bo.getId())) throw new BeanException("id不能为空!");
verifyBean(bo);
BusinessOpenTender openTender = baseMapper.selectOne(Wrappers.<BusinessOpenTender>lambdaQuery()
.eq(BusinessOpenTender::getTenderer, bo.getTenderer())
.eq(BusinessOpenTender::getBusinessId,bo.getBusinessId()));
if(!ObjectUtils.isEmpty(openTender) && !openTender.getId().equals(bo.getId())) throw new ServiceException("当前投标人已存在");
return baseMapper.updateById(bo);
}
@Override
public int remove(Long[] ids) {
return baseMapper.deleteBatchIds(Arrays.asList(ids));
}
private void verifyBean(BusinessOpenTender bo){
if(ObjectUtils.isEmpty(bo.getBusinessId())) throw new BeanException("项目id不能为空!");
if(ObjectUtils.isEmpty(bo.getTenderer())) throw new BeanException("投标人不能为空!");
// if(ObjectUtils.isEmpty(bo.getTendererNature())) throw new BeanException("企业性质不能为空!");
// if(ObjectUtils.isEmpty(bo.getTenderAmount())) throw new BeanException("投标金额不能为空!");
}
}
package com.dsk.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.biz.domain.bo.BusinessSearchDto;
import com.dsk.biz.domain.vo.BusinessAnalyzeVo;
import com.dsk.biz.mapper.BusinessInfoMapper;
import com.dsk.biz.service.IBusinessOverviewService;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.system.utils.DskOpenApiUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author lcl
* @create 2023/8/14
*/
@Service
public class BusinessOverviewServiceImpl implements IBusinessOverviewService {
@Resource
private BusinessInfoMapper businessInfoMapper;
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Override
public Map<String, Object> statusStatistics(BusinessSearchDto dto) {
Map<String, Object> resultMap = new HashMap<>();
//总
resultMap.put("totalCount",businessInfoMapper.selectCountByStatus(dto));
//储备
dto.setStatus(0);
resultMap.put("reserveCount",businessInfoMapper.selectCountByStatus(dto));
//跟进
dto.setStatus(1);
resultMap.put("followUpCount",businessInfoMapper.selectCountByStatus(dto));
//中标(已合作)
dto.setStatus(2);
resultMap.put("bidCount",businessInfoMapper.selectCountByStatus(dto));
return resultMap;
}
@Override
public List<BusinessAnalyzeVo> amountAnalyze(BusinessSearchDto dto) {
return businessInfoMapper.selectAmountAnalyze(dto);
}
@Override
public List<BusinessAnalyzeVo> typeAnalyze(BusinessSearchDto dto) {
return businessInfoMapper.selectTypeAnalyze(dto);
}
@Override
public List<BusinessAnalyzeVo> categoryAnalyze(BusinessSearchDto dto) {
return businessInfoMapper.selectCategoryAnalyze(dto);
}
@Override
public AjaxResult countGroupByProvince(Map<String,Object> object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/project/countGroupByProvince", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult rangByMoney(Map<String,Object> object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/project/rangByMoney", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
package com.dsk.biz.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.biz.domain.BusinessRelateCompany;
import com.dsk.biz.domain.bo.BusinessIdDto;
import com.dsk.jsk.service.EnterpriseService;
import com.dsk.biz.mapper.BusinessRelateCompanyMapper;
import com.dsk.biz.service.IBusinessRelateCompanyService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.CheckUtils;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 项目关联单位Service业务层处理
*
* @author lxl
* @date 2023-05-17
*/
@Service
public class BusinessRelateCompanyServiceImpl implements IBusinessRelateCompanyService {
@Resource
private BusinessRelateCompanyMapper businessRelateCompanyMapper;
@Autowired
private EnterpriseService enterpriseService;
/**
* 查询项目关联单位
*
* @param id 项目关联单位主键
* @return 项目关联单位
*/
@Override
public BusinessRelateCompany selectBusinessRelateCompanyById(Long id) {
return businessRelateCompanyMapper.selectBusinessRelateCompanyById(id);
}
/**
* 查询项目关联单位列表
*
* @param bo 项目关联单位
* @return 项目关联单位
*/
@Override
public TableDataInfo<BusinessRelateCompany> selectBusinessRelateCompanyList(BusinessRelateCompany bo, PageQuery pageQuery) {
return TableDataInfo.build(businessRelateCompanyMapper.selectBusinessRelateCompanyList(pageQuery.build(), bo));
}
/**
* 新增项目关联单位
*
* @param businessRelateCompany 项目关联单位
* @return 结果
*/
@Override
@Transactional
public int insertBusinessRelateCompany(BusinessRelateCompany businessRelateCompany) {
if (ObjectUtil.isNotEmpty(businessRelateCompany.getPhone()) && !CheckUtils.isPhone(businessRelateCompany.getPhone())) {
throw new BaseException("500", "请输入正确的电话号码");
}
//查询企业的城投id和建设库id
Map<String, Object> map = enterpriseService.getCidAndUipIdByCompanyName(businessRelateCompany.getCompanyName());
businessRelateCompany.setCompanyUipId(MapUtils.getString(map, "uipId", null));
businessRelateCompany.setCompanyId(MapUtils.getInteger(map, "companyId", null));
return businessRelateCompanyMapper.insertBusinessRelateCompany(businessRelateCompany);
}
/**
* 修改项目关联单位
*
* @param businessRelateCompany 项目关联单位
* @return 结果
*/
@Override
@Transactional
public int updateBusinessRelateCompany(BusinessRelateCompany businessRelateCompany) {
if (ObjectUtil.isNotEmpty(businessRelateCompany.getPhone()) && !CheckUtils.isPhone(businessRelateCompany.getPhone())) {
throw new BaseException("500", "请输入正确的电话号码");
}
//查询企业的城投id和建设库id
Map<String, Object> map = enterpriseService.getCidAndUipIdByCompanyName(businessRelateCompany.getCompanyName());
businessRelateCompany.setCompanyUipId(MapUtils.getString(map, "uipId", null));
businessRelateCompany.setCompanyId(MapUtils.getInteger(map, "companyId", null));
return businessRelateCompanyMapper.updateBusinessRelateCompany(businessRelateCompany);
}
/**
* 批量删除项目关联单位
*
* @param ids 需要删除的项目关联单位主键
* @return 结果
*/
@Override
public int deleteBusinessRelateCompanyByIds(Long[] ids) {
return businessRelateCompanyMapper.deleteBusinessRelateCompanyByIds(ids);
}
/**
* 删除项目关联单位信息
*
* @param id 项目关联单位主键
* @return 结果
*/
@Override
public int deleteBusinessRelateCompanyById(Long id) {
return businessRelateCompanyMapper.deleteBusinessRelateCompanyById(id);
}
@Override
public List<String> companyRoleList(BusinessIdDto dto) {
List<BusinessRelateCompany> roleList = businessRelateCompanyMapper.selectList(Wrappers.<BusinessRelateCompany>lambdaQuery()
.select(BusinessRelateCompany::getCompanyRole)
.eq(BusinessRelateCompany::getBusinessId, dto.getBusinessId())
.groupBy(BusinessRelateCompany::getCompanyRole)
.orderByDesc(BusinessRelateCompany::getCreateTime));
return roleList.stream().map(p -> p.getCompanyRole()).collect(Collectors.toList());
}
}
package com.dsk.biz.service.impl;
import cn.hutool.core.bean.BeanException;
import com.dsk.biz.domain.ContactInfo;
import com.dsk.biz.domain.bo.ContactInfoSearchDto;
import com.dsk.biz.domain.vo.ContactInfoListVo;
import com.dsk.jsk.service.EnterpriseService;
import com.dsk.biz.mapper.ContactInfoMapper;
import com.dsk.biz.service.IContactInfoService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.model.LoginUser;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.helper.LoginHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.Map;
/**
* 用户联系人(CustomerContact)表服务实现类
*
* @author makejava
* @since 2023-07-25 17:18:04
*/
@Slf4j
@Service
public class ContactInfoServiceImpl implements IContactInfoService {
@Resource
private ContactInfoMapper baseMapper;
@Autowired
private EnterpriseService enterpriseService;
// @Resource
// private ICustomerService customerService;
@Override
public TableDataInfo<ContactInfoListVo> selectList(ContactInfoSearchDto dto, PageQuery pageQuery) {
return TableDataInfo.build(baseMapper.selectPageList(pageQuery.build(), dto));
}
@Override
public ContactInfo selectById(Long id) {
return baseMapper.selectById(id);
}
@Override
public boolean insert(ContactInfo bean) {
verifyParameter(bean);
bean.setCreateBy(bean.getUpdateBy());
return baseMapper.insert(bean) > 0;
}
@Override
public boolean update(ContactInfo bean) {
if (ObjectUtils.isEmpty(bean.getId())) throw new BeanException("id不能为空!");
verifyParameter(bean);
return baseMapper.updateById(bean) > 0;
}
@Override
public boolean deleteById(Long id) {
return baseMapper.deleteById(id) > 0;
}
/**
* 参数验证
*/
private void verifyParameter(ContactInfo bean) {
if (!ObjectUtils.isEmpty(bean.getCompanyName())) {
Map<String, Object> map = enterpriseService.getCidAndUipIdByCompanyName(bean.getCompanyName());
bean.setCompanyId(MapUtils.getInteger(map, "companyId"));
bean.setUipId(MapUtils.getString(map, "uipId"));
}
LoginUser loginUser = LoginHelper.getLoginUser();
bean.setUpdateId(loginUser.getUserId());
bean.setUpdateBy(loginUser.getNickname());
}
}
package com.dsk.biz.service.impl;
import cn.hutool.core.bean.BeanException;
import com.dsk.biz.domain.CustomerFollowRecord;
import com.dsk.biz.domain.bo.CustomerFollowRecordSearchDto;
import com.dsk.biz.domain.vo.CustomerFollowRecordListVo;
import com.dsk.biz.mapper.CustomerFollowRecordMapper;
import com.dsk.biz.service.ICustomerFollowRecordService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.helper.LoginHelper;
import com.google.api.client.util.SecurityUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.List;
/**
* 客户跟进记录(CustomerFollowRecord)表服务实现类
*
* @author makejava
* @since 2023-05-18 15:07:59
*/
@Slf4j
@Service
public class CustomerFollowRecordServiceImpl implements ICustomerFollowRecordService {
@Resource
private CustomerFollowRecordMapper baseMapper;
@Override
// @DataScope(deptAlias = "d",userAlias = "u")
public TableDataInfo<CustomerFollowRecordListVo> selectList(CustomerFollowRecordSearchDto dto, PageQuery pageQuery) {
if (ObjectUtils.isEmpty(dto.getCustomerId())) {
dto.setUserId(LoginHelper.getUserId());
}
// log.debug("dto.params.dataScope{}",dto.getParams().get("dataScope"));
return TableDataInfo.build(baseMapper.selectAuthList(pageQuery.build(), dto));
}
@Override
public boolean add(CustomerFollowRecord followRecord) {
if (ObjectUtils.isEmpty(followRecord.getContent())) throw new BeanException("跟进内容不能为空");
if (ObjectUtils.isEmpty(followRecord.getCustomerId())) throw new BeanException("跟进客户不能为空");
followRecord.setUserId(LoginHelper.getUserId());
return baseMapper.insert(followRecord) != 0;
}
@Override
public boolean del(Long id) {
return baseMapper.deleteById(id) != 0;
}
}
package com.dsk.biz.service.impl;
import com.dsk.biz.domain.bo.CustomerSearchDto;
import com.dsk.biz.domain.vo.CustomerAnalyzeVo;
import com.dsk.biz.mapper.CustomerMapper;
import com.dsk.biz.service.ICustomerOverviewService;
import com.dsk.common.helper.LoginHelper;
import com.google.api.client.util.SecurityUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 客户概览相关
* @author lcl
* @create 2023/8/15
*/
@Service
public class CustomerOverviewServiceImpl implements ICustomerOverviewService {
@Resource
private CustomerMapper customerMapper;
@Override
public Map<String, Object> statistics(CustomerSearchDto dto) {
Map<String, Object> resultMap = new HashMap<>();
dto.setUserId(LoginHelper.getUserId());
//总
resultMap.put("totalCount",customerMapper.selectCustomerCount(dto));
//国企
dto.setCompanyNature("国有企业");
resultMap.put("nationCount",customerMapper.selectCustomerCount(dto));
//央企
dto.setCompanyNature("央企");
resultMap.put("centreCount",customerMapper.selectCustomerCount(dto));
//事业
dto.setCompanyNature("事业单位");
resultMap.put("undertakingCount",customerMapper.selectCustomerCount(dto));
return resultMap;
}
@Override
public List<CustomerAnalyzeVo> cooperationTop(CustomerSearchDto dto) {
dto.setUserId(LoginHelper.getUserId());
return customerMapper.selectCooperationTop(dto);
}
@Override
public List<Map<String, Object>> creditLevel(CustomerSearchDto dto) {
dto.setUserId(LoginHelper.getUserId());
return customerMapper.selectCreditLevelGroup(dto);
}
}
package com.dsk.biz.service.impl;
import cn.hutool.core.bean.BeanException;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.biz.domain.Customer;
import com.dsk.biz.domain.CustomerUser;
import com.dsk.biz.domain.bo.CustomerBusinessSearchDto;
import com.dsk.biz.domain.bo.CustomerSearchDto;
import com.dsk.biz.domain.vo.CustomerBusinessListVo;
import com.dsk.biz.domain.vo.CustomerListVo;
import com.dsk.biz.domain.vo.CustomerStatusListVo;
import com.dsk.biz.domain.vo.CustomerVo;
import com.dsk.jsk.service.EnterpriseCommonService;
import com.dsk.biz.mapper.CustomerMapper;
import com.dsk.biz.mapper.CustomerUserMapper;
import com.dsk.biz.service.IBusinessInfoService;
import com.dsk.biz.service.ICustomerService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.StringUtils;
import com.dsk.search.service.BusinessOpportunityRadarService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* 客户信息表(Customer)表服务实现类
*
* @author makejava
* @since 2023-05-16 09:27:57
*/
@Slf4j
@Service
public class CustomerServiceImpl implements ICustomerService {
@Resource
private CustomerMapper baseMapper;
@Resource
private CustomerUserMapper customerUserMapper;
@Autowired
private IBusinessInfoService businessInfoService;
@Autowired
private EnterpriseCommonService enterpriseCommonService;
@Autowired
private BusinessOpportunityRadarService opportunityRadarService;
@Override
// @DataScope(deptAlias = "d", userAlias = "u")
public TableDataInfo<CustomerListVo> selectList(CustomerSearchDto dto, PageQuery pageQuery) {
dto.setUserId(LoginHelper.getUserId());
dto.setStatus(ObjectUtils.isEmpty(dto.getStatus()) ? 0 : dto.getStatus());
final TableDataInfo<CustomerListVo> result = TableDataInfo.build(baseMapper.selectList(pageQuery.build(), dto));
if (!ObjectUtils.isEmpty(result.getRows()) && !ObjectUtils.isEmpty(dto.getCompanyName())) {
for (CustomerListVo vo : result.getRows()) {
vo.setCompanyName(StringUtils.markInRed(vo.getCompanyName(), dto.getCompanyName()));
}
}
return result;
}
@Override
public CustomerVo info(String customerId) {
CustomerVo vo = new CustomerVo();
BeanUtil.copyProperties(baseMapper.selectById(customerId), vo);
CustomerUser customerUser = customerUserMapper.selectOne(Wrappers.<CustomerUser>lambdaQuery()
.eq(CustomerUser::getCustomerId, customerId));
vo.setUserId(customerUser.getUserId());
return vo;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean add(Customer customer) {
Long userId = LoginHelper.getUserId();
//查重
Customer verifyCustomer = baseMapper.selectByCompanyNameAndUserId(customer.getCompanyName(), userId);
if (!ObjectUtils.isEmpty(verifyCustomer)) {
throw new ServiceException("当前客户信息已存在,请勿重复添加!");
}
dealWithcustomerData(customer);
customer.setUipId(enterpriseCommonService.getUipIdByCompanyNameOrCompanyId(customer.getCompanyName(), customer.getCompanyId()));
customer.setCreateId(userId);
customer.setUpdateId(userId);
customer.setTenantId(LoginHelper.getTenantId());
int i = baseMapper.insert(customer);
if (i == 0) throw new ServiceException("客户信息添加错误!");
int ui = customerUserMapper.insert(new CustomerUser(customer.getCustomerId(), userId));
if (ui == 0) throw new ServiceException("客户跟进人信息添加错误!");
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean edit(Customer customer) {
if (ObjectUtils.isEmpty(customer.getCustomerId())) throw new BeanException("客户id不能为空");
customer.setUpdateId(LoginHelper.getUserId());
int u = baseMapper.updateById(customer);
return u != 0;
}
@Override
public List<Customer> selectUserList() {
return baseMapper.selectUserList(LoginHelper.getUserId());
}
@Override
public TableDataInfo<CustomerBusinessListVo> selectBusinessList(CustomerBusinessSearchDto dto, PageQuery pageQuery) {
if (ObjectUtils.isEmpty(dto.getCustomerId())) throw new BeanException("客户id不能为空");
dto.setUserId(LoginHelper.getUserId());
return businessInfoService.selectCustomerBusinessList(dto, pageQuery);
}
@Override
public List<CustomerStatusListVo> selectStatusList(List<String> uipIds) {
return baseMapper.selectStatusList(uipIds, LoginHelper.getUserId());
}
@Override
public List<CustomerStatusListVo> selectStatusListByCompanyName(List<String> companyNames) {
return baseMapper.selectStatusListByCompanyName(companyNames, LoginHelper.getUserId());
}
// @Override
// public List<String> selectUipIdList(List<String> uipIds) {
// return baseMapper.selectUipIdList(uipIds, LoginHelper.getUserId());
// }
@Override
public Integer status(String companyName) {
Customer cus = baseMapper.selectByCompanyNameAndUserId(companyName, LoginHelper.getUserId());
if (ObjectUtils.isEmpty(cus)) {
return null;
}
CustomerUser customerUser = customerUserMapper.selectByCustomerIdAndUserId(cus.getCustomerId(), LoginHelper.getUserId());
if (ObjectUtils.isEmpty(customerUser)) {
throw new ServiceException("数据错误!");
}
return customerUser.getStatus();
}
@Override
public boolean cancelClaim(String companyName) {
return updateClaimStatus(companyName, 1);
}
@Override
public boolean historyClaim(String companyName) {
return updateClaimStatus(companyName, 0);
}
@Override
public Customer selectByCompanyNameAndUserId(String companyName) {
return baseMapper.selectByCompanyNameAndUserId(companyName, LoginHelper.getUserId());
}
//修改客户认领状态
private boolean updateClaimStatus(String companyName, Integer status) {
Customer cus = baseMapper.selectByCompanyNameAndUserId(companyName, LoginHelper.getUserId());
if (ObjectUtils.isEmpty(cus)) {
throw new ServiceException("数据错误!");
}
CustomerUser customerUser = customerUserMapper.selectByCustomerIdAndUserId(cus.getCustomerId(), LoginHelper.getUserId());
if (ObjectUtils.isEmpty(customerUser)) {
throw new ServiceException("数据错误!");
}
customerUser.setStatus(status);
return customerUserMapper.updateById(customerUser) == 1;
}
private void dealWithcustomerData(Customer customer) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空");
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
if (!ObjectUtils.isEmpty(map.get("data"))) {
Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
Integer companyId = MapUtil.getInt(data, "jskEid");
if (ObjectUtil.isNotEmpty(customer.getCompanyId()) && !customer.getCompanyId().equals(companyId)) {
return;
}
customer.setCompanyId(companyId);
if (ObjectUtils.isEmpty(customer.getLegalPerson())) {
customer.setLegalPerson(MapUtil.getStr(data, "legalPerson"));
}
if (ObjectUtils.isEmpty(customer.getRegisterCapital())) {
String registeredCapitalStr = MapUtil.getStr(data, "registeredCapitalStr");
if (!ObjectUtils.isEmpty(registeredCapitalStr)) {
int length = registeredCapitalStr.indexOf(".0");
if (length == registeredCapitalStr.length() - 2) {
registeredCapitalStr = registeredCapitalStr.replace(".0", "");
}
}
customer.setRegisterCapital(registeredCapitalStr);
}
if (ObjectUtils.isEmpty(customer.getProvinceId())) {
customer.setProvinceId(MapUtil.getInt(data, "provinceId"));
}
if (ObjectUtils.isEmpty(customer.getCityId())) {
customer.setCityId(MapUtil.getInt(data, "cityId"));
}
if (ObjectUtils.isEmpty(customer.getDistrictId())) {
customer.setDistrictId(MapUtil.getInt(data, "countyId"));
}
if (ObjectUtils.isEmpty(customer.getRegisterAddress())) {
if (ObjectUtil.isNotEmpty(MapUtil.getStr(data, "domicile"))) {
customer.setRegisterAddress(MapUtil.getStr(data, "domicile"));
} else {
String address = null;
if (!ObjectUtils.isEmpty(MapUtil.getStr(data, "province"))) {
address = MapUtil.getStr(data, "province");
if (!ObjectUtils.isEmpty(MapUtil.getStr(data, "city"))) {
address = address.concat("-").concat(MapUtil.getStr(data, "city"));
if (!ObjectUtils.isEmpty(MapUtil.getStr(data, "county"))) {
address = address.concat("-").concat(MapUtil.getStr(data, "county"));
}
}
}
customer.setRegisterAddress(address);
}
}
if (ObjectUtils.isEmpty(customer.getCreditCode())) {
customer.setCreditCode(MapUtil.getStr(data, "creditCode"));
}
}
} catch (Exception e) {
log.debug("获取企业id错误!error:{}", e.getMessage());
}
}
}
package com.dsk.biz.service.impl;
import com.dsk.biz.domain.bo.BusinessExcelDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
* @author lxl
* @Description:
* @Date 2023/6/1 下午 4:30
**/
@Slf4j
@Service
public class ReadBusinessInfoExcel {
// 总行数
private int totalRows = 0;
// 总条数
private int totalCells = 0;
public int getTotalRows() {
return totalRows;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public int getTotalCells() {
return totalCells;
}
public void setTotalCells(int totalCells) {
this.totalCells = totalCells;
}
/**
* 读EXCEL文件,获取信息集合
*
* @param mFile
* @return
*/
public List<BusinessExcelDto> getExcelInfo(MultipartFile mFile) {
String fileName = mFile.getOriginalFilename();// 获取文件名
try {
// 验证文件名是否合格
if (!validateExcel(fileName)) return null;
// 根据文件名判断文件是2003版本还是2007版本
boolean isExcel2003 = true;
if (isExcel2007(fileName)) isExcel2003 = false;
return createExcel(mFile.getInputStream(), isExcel2003);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 根据excel里面的内容读取信息
*
* @param is 输入流
* @param isExcel2003 excel是2003还是2007版本
* @return
*/
public List<BusinessExcelDto> createExcel(InputStream is, boolean isExcel2003) {
try {
Workbook wb = null;
// 当excel是2003时,创建excel2003
if (isExcel2003) {
wb = new HSSFWorkbook(is);
} else {
// 当excel是2007时,创建excel2007
wb = new XSSFWorkbook(is);
}
return readExcelValue(wb);// 读取Excel里面客户的信息
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 读取Excel内容
*
* @param wb
* @return
*/
private List<BusinessExcelDto> readExcelValue(Workbook wb) {
//得到第一个shell
Sheet sheet = wb.getSheetAt(0);
//得到Excel的行数
this.totalRows = sheet.getPhysicalNumberOfRows();
//得到Excel的列数(前提是有行数)
if (totalRows > 1 && sheet.getRow(0) != null) {
this.totalCells = sheet.getRow(0).getPhysicalNumberOfCells();
}
// List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
ArrayList<BusinessExcelDto> list = new ArrayList<>();
//循环Excel行数
//
for (int r = 3; r < totalRows; r++) {
Row row = sheet.getRow(r);
if (row == null) {
continue;
}
//循环Excel的列
// Map<String, Object> map = new HashMap<String, Object>();
BusinessExcelDto businessExcelDto = new BusinessExcelDto();
for (int c = 0; c < this.totalCells; c++) {
Cell cell = row.getCell(c);
if (null != cell) {
//项目名称
if (c == 0) {
//如果是纯数字,比如你写的是25,cell.getNumericCellValue()获得是25.0,通过截取字符串去掉.0获得25
if (cell.getCellType() == CellType.NUMERIC) {
String name = String.valueOf(cell.getNumericCellValue());
businessExcelDto.setProjectName(name.substring(0, name.length() - 2 > 0 ? name.length() - 2 : 1));
} else {
businessExcelDto.setProjectName(cell.getStringCellValue());
}
//业主单位
} else if (c == 1) {
if (cell.getCellType() == CellType.NUMERIC) {
String company = String.valueOf(cell.getNumericCellValue());
businessExcelDto.setOwnerCompany(company.substring(0, company.length() - 2 > 0 ? company.length() - 2 : 1));
} else {
businessExcelDto.setOwnerCompany(cell.getStringCellValue());
}
//投资估算(万元)
} else if (c == 2) {
if (cell.getCellType() == CellType.NUMERIC) {
String amount = String.valueOf(cell.getNumericCellValue());
// businessExcelDto.setInvestmentAmount(amount.substring(0, amount.length() - 2 > 0 ? amount.length() - 2 : 1));
businessExcelDto.setInvestmentAmount(amount);
} else {
businessExcelDto.setInvestmentAmount(cell.getStringCellValue());
}
}
}
}
//添加到list
list.add(businessExcelDto);
}
log.info("项目批量导入Excel数据,{}",list);
return list;
}
/**
* 验证EXCEL文件
* @param filePath
* @return
*/
public boolean validateExcel(String filePath) {
if (filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath))) {
log.info("文件不是excel格式");
return false;
}
return true;
}
// @描述:是否是2003的excel,返回true是2003
public static boolean isExcel2003(String filePath) {
return filePath.matches("^.+\\.(?i)(xls)$");
}
// @描述:是否是2007的excel,返回true是2007
public static boolean isExcel2007(String filePath) {
return filePath.matches("^.+\\.(?i)(xlsx)$");
}
}
package com.dsk.biz.utils;
import com.dsk.biz.domain.vo.BusinessFileVo;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.ServletUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.file.FileTypeUtils;
import com.dsk.common.utils.file.FileUploadUtils;
import com.dsk.common.utils.file.MimeTypeUtils;
import com.dsk.common.utils.uuid.IdUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
/**
* 文件处理工具类
*
* @author dsk
*/
@Slf4j
public class OldFileUtils
{
public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
/**
* 检查目录是否存在,如果不存在,则创建目录,如果创建失败则返回false
*
* @param path 文件夹路径
* @return boolean
*/
public static boolean newFolder(String path) {
File file = new File(path);
if (!file.exists()) {
boolean isSuccess = file.mkdir();
if (!isSuccess)
if (!file.exists()) {
file.mkdirs();
}
return isSuccess;
} else {
return true;
}
}
/**
*
*
* @param folderPath 文件夹路径
* @return 文件夹路径
*/
public static String newFolder1(String folderPath) {
String filePath = folderPath;
try {
File myFilePath = new File(filePath);
if (!myFilePath.exists()) {
myFilePath.mkdirs();
}
} catch (Exception e) {
log.error("创建文件夹失败");
filePath = "";
e.printStackTrace();
}
return filePath;
}
/**
* 输出指定文件的byte数组
*
* @param filePath 文件路径
* @param os 输出流
* @return
*/
public static void writeBytes(String filePath, OutputStream os) throws IOException
{
FileInputStream fis = null;
try
{
File file = new File(filePath);
if (!file.exists())
{
throw new FileNotFoundException(filePath);
}
fis = new FileInputStream(file);
byte[] b = new byte[1024];
int length;
while ((length = fis.read(b)) > 0)
{
os.write(b, 0, length);
}
}
catch (IOException e)
{
throw e;
}
finally
{
IOUtils.close(os);
IOUtils.close(fis);
}
}
/**
* 写数据到文件中
*
* @param data 数据
* @return 目标文件
* @throws IOException IO异常
*/
public static String writeImportBytes(byte[] data) throws IOException
{
return writeBytes(data, FileUploadUtils.getDefaultBaseDir().concat("/import"));
}
/**
* 写数据到文件中
*
* @param data 数据
* @param uploadDir 目标文件
* @return 目标文件
* @throws IOException IO异常
*/
public static String writeBytes(byte[] data, String uploadDir) throws IOException
{
FileOutputStream fos = null;
String pathName = "";
try
{
String extension = getFileExtendName(data);
pathName = DateUtils.datePath() + "/" + IdUtils.fastUUID() + "." + extension;
File file = FileUploadUtils.getAbsoluteFile(uploadDir, pathName);
fos = new FileOutputStream(file);
fos.write(data);
}
finally
{
IOUtils.close(fos);
}
return FileUploadUtils.getPathFileName(uploadDir, pathName);
}
/**
* 删除文件
*
* @param filePath 文件
* @return
*/
public static boolean deleteFile(String filePath)
{
boolean flag = false;
File file = new File(filePath);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists())
{
flag = file.delete();
}
return flag;
}
/**
* 删除整个文件夹或者文某个文件
*
* @param filePath 文件
* @return
*/
public static boolean delFolder(String filePath) {
try {
delAllFile(filePath); // 删除里面的所有文件
File file = new File(filePath);
return file.delete(); // 删除空文件夹
} catch (Exception e) {
throw new BaseException("删除文件夹失败",e.getMessage());
}
}
/**
* 文件夹过滤
*
* @param path 文件夹路径
*/
public static void delAllFile(String path) {
String hint = "这是一个根目录,请更换目录!";
File file = new File(path);
if (!file.exists()) {
throw new BaseException("文件不存在");
}
// if (!file.isDirectory()) {
// return false;
// }
if (file.getAbsolutePath().equalsIgnoreCase("/")) {
throw new BaseException(hint);
}
if (file.getAbsolutePath().equalsIgnoreCase("/root")) {
throw new BaseException(hint);
}
if (file.getAbsolutePath().equalsIgnoreCase("/usr") || file.getAbsolutePath().equalsIgnoreCase("/opt")
|| file.getAbsolutePath().equalsIgnoreCase("/bin") || file.getAbsolutePath().equalsIgnoreCase("/sbin")
|| file.getAbsolutePath().equalsIgnoreCase("/etc") || file.getAbsolutePath().equalsIgnoreCase("/selinux")
|| file.getAbsolutePath().equalsIgnoreCase("/sys") || file.getAbsolutePath().equalsIgnoreCase("/var")
|| file.getAbsolutePath().equalsIgnoreCase("/home") || file.getAbsolutePath().equalsIgnoreCase("/net")) {
throw new BaseException(hint);
}
if (file.getAbsolutePath().equalsIgnoreCase("C://") || file.getAbsolutePath().equalsIgnoreCase("C:\\\\")) {
throw new BaseException(hint);
}
String[] tempList = file.list();
File temp;
if (tempList == null) {
return;
}
for (String aTempList : tempList) {
if (path.endsWith(File.separator)) {
temp = new File(path + aTempList);
} else {
temp = new File(path + File.separator + aTempList);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + "/" + aTempList);// 删除里面的所有文件
delFolder(path + "/" + aTempList);// 删除空文件夹
}
}
}
/**
* 获取文件夹中所有文件
* @param filePath 全路径
* @return
*/
public static List<BusinessFileVo> getAllFiles(String filePath) {
List<BusinessFileVo> fileList = new ArrayList<>();
File file = new File(filePath);
if (!file.exists()) {
return fileList;
}
if (!file.isDirectory()) {
return fileList;
}
// 获取当前目录下的文件和文件夹
File[] files = file.listFiles();
if (files != null) {
for (File directory : files) {
// 如果是文件夹则递归调用此方法
if (directory.isDirectory()) {
fileList.add(new BusinessFileVo(directory.getPath(),new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(directory.lastModified())));
getAllFiles(directory.getPath());
} else {
// 如果是文件则直接输出路径
fileList.add(new BusinessFileVo(directory.getPath(),new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(directory.lastModified())));
}
}
return fileList;
}
return fileList;
}
/**
* 获取文件夹中的所有文件,不包括文件夹
*
* @param path 文件夹路径
* @return List<File>
*/
public static List<BusinessFileVo> getAllFileNames(String path) {
List<BusinessFileVo> fileList = new ArrayList<>();
File file = new File(path);
if (!file.exists()) {
return fileList;
}
if (!file.isDirectory()) {
return fileList;
}
String[] tempList = file.list();
File tempFile;
for (String fileName : tempList) {
if (path.endsWith(File.separator)) {
tempFile = new File(path + fileName);
} else {
tempFile = new File(path + File.separator + fileName);
}
if (tempFile.isFile()) {
fileList.add(new BusinessFileVo(tempFile.getPath(),new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tempFile.lastModified())));
}
if (tempFile.isDirectory()) {
List<BusinessFileVo> allFiles = getAllFileNames(tempFile.getAbsolutePath());
fileList.addAll(allFiles);
}
}
return fileList;
}
/**
* 根据文件路径下载文件
* @param filePath 要下载的文件路径
* @param response 返回的响应
*/
public static void downloadByFilePath(String filePath, HttpServletResponse response) {
try {
// path是指想要下载的文件的路径
File file = new File(filePath);
// log.info(file.getPath());
if (!file.exists()) throw new BaseException("文件不存在!");
// 获取文件名
String filename = file.getName();
// log.info("文件名: "+filename);
// 获取文件后缀名
// String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
// log.info("文件后缀名:" + ext);
// 将文件写入输入流
FileInputStream fileInputStream = new FileInputStream(file);
InputStream fis = new BufferedInputStream(fileInputStream);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
// 清空response
response.reset();
// 设置response的Header
response.setCharacterEncoding("UTF-8");
//文件类型
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
//文件名称
response.addHeader("Download-filename", URLEncoder.encode(filename, "UTF-8"));
// 告知浏览器文件的大小
response.addHeader("Content-Length", "" + file.length());
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
outputStream.write(buffer);
fis.close();
outputStream.flush();
} catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* 根据文件url下载文件
* @param filePath 要下载的文件链接
* @param response 响应体
* @return
* @throws IOException
*/
public static void downloadByUrl(String filePath, HttpServletResponse response){
// String fileUrl = request.getParameter("fileUrl"); // 获取文件链接
try {
URL url = new URL(filePath);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
// 设置响应头,告诉浏览器下载文件
String contentType = connection.getContentType(); // 获取文件类型
response.setContentType(contentType);
String filename = extractFilenameFromUrl(filePath); // 从链接中提取文件名
response.setHeader("Content-Disposition", "attachment; filename=" + filename + "");
// 将文件流写入响应输出流
InputStream inputStream = connection.getInputStream();
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
response.getOutputStream().write(buffer, 0, bytesRead);
}
inputStream.close();
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
// 从文件链接中提取文件名
public static String extractFilenameFromUrl(String url) {
int slashIndex = url.lastIndexOf('/');
int dotIndex = url.lastIndexOf('.');
if (dotIndex == -1 || dotIndex < slashIndex) {
return "download";
}
return url.substring(slashIndex + 1);
}
/**
* 上传文件
* @param url 上传链接
* @param folderPath 文件路径
* @return
* @throws IOException
*/
public static boolean uploadFolder(String url, String folderPath) throws IOException {
File folder = new File(folderPath);
if (!folder.exists() || !folder.isDirectory()) {
throw new IllegalArgumentException("文件夹路径无效: " + folderPath);
}
List<File> files = new ArrayList<>();
listFiles(folder, files);
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpPost httpPost = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
for (File file : files) {
FileBody fileBody = new FileBody(file, ContentType.DEFAULT_BINARY);
builder.addPart("file", fileBody);
}
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
HttpResponse response = httpClient.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != 200) {
throw new RuntimeException("上传文件夹失败: " + response.getStatusLine().getReasonPhrase());
}
}
return true;
}
private static void listFiles(File folder, List<File> files) {
File[] subFiles = folder.listFiles();
for (File subFile : subFiles) {
if (subFile.isDirectory()) {
listFiles(subFile, files);
} else {
files.add(subFile);
}
}
}
/**
* 文件名称验证
*
* @param filename 文件名称
* @return true 正常 false 非法
*/
public static boolean isValidFilename(String filename)
{
return filename.matches(FILENAME_PATTERN);
}
/**
* 检查文件是否可下载
*
* @param resource 需要下载的文件
* @return true 正常 false 非法
*/
public static boolean checkAllowDownload(String resource)
{
// 禁止目录上跳级别
if (StringUtils.contains(resource, ".."))
{
return false;
}
// 检查允许下载的文件规则
if (ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource)))
{
return true;
}
// 不在允许下载的文件规则
return false;
}
/**
* 下载文件名重新编码
*
* @param request 请求对象
* @param fileName 文件名
* @return 编码后的文件名
*/
public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException
{
final String agent = request.getHeader("USER-AGENT");
String filename = fileName;
if (agent.contains("MSIE"))
{
// IE浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+", " ");
}
else if (agent.contains("Firefox"))
{
// 火狐浏览器
filename = new String(fileName.getBytes(), "ISO8859-1");
}
else if (agent.contains("Chrome"))
{
// google浏览器
filename = URLEncoder.encode(filename, "utf-8");
}
else
{
// 其它浏览器
filename = URLEncoder.encode(filename, "utf-8");
}
return filename;
}
/**
* 下载文件名重新编码
*
* @param response 响应对象
* @param realFileName 真实文件名
*/
public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException
{
String percentEncodedFileName = percentEncode(realFileName);
StringBuilder contentDispositionValue = new StringBuilder();
contentDispositionValue.append("attachment; filename=")
.append(percentEncodedFileName)
.append(";")
.append("filename*=")
.append("utf-8''")
.append(percentEncodedFileName);
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition,download-filename");
response.setHeader("Content-disposition", contentDispositionValue.toString());
response.setHeader("download-filename", percentEncodedFileName);
}
/**
* 百分号编码工具方法
*
* @param s 需要百分号编码的字符串
* @return 百分号编码后的字符串
*/
public static String percentEncode(String s) throws UnsupportedEncodingException
{
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString());
return encode.replaceAll("\\+", "%20");
}
/**
* 获取图像后缀
*
* @param photoByte 图像数据
* @return 后缀名
*/
public static String getFileExtendName(byte[] photoByte)
{
String strFileExtendName = "jpg";
if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
&& ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97))
{
strFileExtendName = "gif";
}
else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70))
{
strFileExtendName = "jpg";
}
else if ((photoByte[0] == 66) && (photoByte[1] == 77))
{
strFileExtendName = "bmp";
}
else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71))
{
strFileExtendName = "png";
}
return strFileExtendName;
}
/**
* 获取文件名称 /profile/upload/2022/04/16/dsk.png -- dsk.png
*
* @param fileName 路径名称
* @return 没有文件路径的名称
*/
public static String getName(String fileName)
{
if (fileName == null)
{
return null;
}
int lastUnixPos = fileName.lastIndexOf('/');
int lastWindowsPos = fileName.lastIndexOf('\\');
int index = Math.max(lastUnixPos, lastWindowsPos);
return fileName.substring(index + 1);
}
/**
* 获取不带后缀文件名称 /profile/upload/2022/04/16/dsk.png -- dsk
*
* @param fileName 路径名称
* @return 没有文件路径和后缀的名称
*/
public static String getNameNotSuffix(String fileName)
{
if (fileName == null)
{
return null;
}
String baseName = FilenameUtils.getBaseName(fileName);
return baseName;
}
/**
* 获取本地服务的域名,端口
* @return
*/
public static String getUrl()
{
HttpServletRequest request = ServletUtils.getRequest();
StringBuffer url = request.getRequestURL();
String contextPath = request.getServletContext().getContextPath();
return url.delete(url.length() - request.getRequestURI().length(), url.length()).append(contextPath).toString();
}
}
package com.dsk.jsk.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.dsk.biz.utils.ExcelUtils;
import com.dsk.common.constant.Constants;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.core.service.OssService;
import com.dsk.component.UploadComponent;
import com.dsk.jsk.domain.JskCombineBidPageDto;
import com.dsk.jsk.domain.JskCombineCertificateDto;
import com.dsk.jsk.domain.JskCombineCountDto;
import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.domain.vo.JskCombineBidProjectExportVo;
import com.dsk.jsk.domain.vo.JskCombineWinBidProjectExportVo;
import com.dsk.jsk.service.JskCombineInfoService;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.List;
import java.util.Map;
/**
......@@ -159,34 +141,6 @@ public class JskCombineInfoController extends BaseController {
return baseService.centralEnterprseSocialPage(object);
}
/**
* 导出中标业绩
*/
// @PostMapping("/export/win/bid")
// @SaCheckPermission("combine:info:export:win:bid")
// public R<SysOssVo> exportWinBid(@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);
// return uploadComponent.upload(title, ba, Constants.SUFFIX_XLSX, Constants.CONTENT_TYPE_XLSX);
// }
// /**
// * 导出招标业绩
// */
// @PostMapping("/export/bid")
// @SaCheckPermission("combine:info:export:bid")
// public R<SysOssVo> exportBid(@RequestBody JskCombineBidPageDto dto) {
// List<JskCombineBidProjectExportVo> list = baseService.exportBid(dto);
// String title = dto.getCombineName().concat("招标公告清单");
// ExcelUtils<JskCombineBidProjectExportVo> util = new ExcelUtils<>(JskCombineBidProjectExportVo.class);
// ByteArrayOutputStream ba = util.exportExcel(list, "集团招标", title, true);
// return uploadComponent.upload(title, ba, Constants.SUFFIX_XLSX, Constants.CONTENT_TYPE_XLSX);
// }
/**
* 集团招标分页列表
*/
......
package com.dsk.jsk.controller;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.jsk.domain.*;
import com.dsk.jsk.domain.bo.*;
import com.dsk.jsk.service.service.EconomicService;
import com.dsk.jsk.util.IpUtil;
import lombok.extern.slf4j.Slf4j;
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;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
/**
* @ClassName RegionalEconomicDataController
* @Description 区域经济大全
* @Author Dgm
* @Date 2023/5/18 10:09
* @Version 1.0.0
*/
@Slf4j
@RestController
@RequestMapping(value ="/economic")
public class RegionalEconomicDataController {
@Autowired
private EconomicService economicService;
/***
*@Description: 全国经济大全分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/national/nationalPage")
public AjaxResult nationalPage(@RequestBody @Valid OpRegionalEconomicDataV1PageDto dto) {
return economicService.nationalPage(dto);
}
/***
*@Description: 获取年份
*@Param:
*@return: com.dsk.acc.security.common.msg.RestResponse
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/years/list")
public AjaxResult yearsList(@RequestBody OpRegionalEconomicDataYearsListDto dto) {
return economicService.yearsList(dto);
}
/***
*@Description: 全国经济大全详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/details")
public AjaxResult details(@RequestBody @Valid OpRegionalEconomicDataDetailsDto detailsDto) {
return economicService.details(detailsDto);
}
/***
*@Description: 获取当前地区
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping(value = "location")
public AjaxResult location(@RequestBody OpRegionalLocalDto vo, HttpServletRequest request){
String ip = IpUtil.getIpAddr(request);
log.info("location=====================================================>" +ip);
vo.setIp(ip);
return economicService.location(vo);
}
/***
*@Description: 地区经济-统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/statistics/regional")
public AjaxResult statisticsRegional(@RequestBody OpRegionalEconomicDataStatisticsRegionalDto dto) {
return economicService.statisticsRegional(dto);
}
/***
*@Description: 地区经济-主要指标列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/list")
public AjaxResult regionalList(@RequestBody OpRegionalEconomicDataRegionalListDto dto) {
return economicService.regionalList(dto);
}
/***
*@Description: 地区经济
*@Param:
*@return: com.dsk.acc.security.common.msg.RestResponse
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/compare")
public AjaxResult regionalCompare(@RequestBody OpRegionalEconomicDataStatisticsRegionalDto dto) {
return economicService.regionalCompare(dto);
}
/***
*@Description: 地区经济-对比
*@Param:
*@return: com.dsk.acc.security.common.msg.RestResponse
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/multipleCompare")
public AjaxResult regionalMultipleCompare(@RequestBody OpRegionalEconomicRegionalCompareDto compareDto) {
return economicService.regionalMultipleCompare(compareDto);
}
}
package com.dsk.jsk.controller;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.jsk.service.service.RegionalEnterprisesService;
import com.dsk.search.controller.PageQueryLimit;
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 JSONObject object) throws Exception{
ComposeQueryDto compose = JSONObject.parseObject(object.toJSONString(), ComposeQueryDto.class);
if (PageQueryLimit.pageLimit(compose.getPage())){
return AjaxResult.error("翻页已达到上限");
}
return regionalEnterprisesService.enterprisePage(object);
}
}
package com.dsk.jsk.controller;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.jsk.domain.bo.UrbanInvestmentPlatformDto;
import com.dsk.jsk.service.service.UrbanInvestmentPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @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(dto);
}
/***
*@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);
}
/***
*@Description: 城投平台统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/statistics")
public AjaxResult statistics(@RequestBody UrbanInvestmentPlatformDto dto) {
return urbanInvestmentPlatformService.statistics(dto);
}
@PostMapping("/export/pre")
public AjaxResult exportPre(@RequestBody UrbanInvestmentPlatformDto dto) {
return urbanInvestmentPlatformService.esportPre(dto);
}
}
package com.dsk.jsk.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 区域经济大全-详情
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataDetailsDto {
/**
* id
*/
@NotNull(message = "id 不能为空")
private Integer id;
}
package com.dsk.jsk.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataRegionalListDto {
/**
* id
*/
@NotNull(message = "id 不能为空")
private Integer id;
/**
* 省Id
*/
@NotNull(message = "provinceId 不能为空")
private Integer provinceId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
}
package com.dsk.jsk.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 地区经济
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataStatisticsRegionalDto {
/**
* id
*/
@NotNull(message = "id 不能为空")
private Integer id;
/**
* 年份
*/
private Integer year;
/**
* 省Id
*/
private Integer provinceId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
}
package com.dsk.jsk.domain.bo;
import lombok.Data;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataV1Dto {
/**
* id
*/
private Integer id;
/**
* 年份
*/
private Integer year;
/**
* 省Id
*/
private Integer provinceId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
/**
* 城市类型 1:直辖市
*/
private Integer cityType;
/**
* 城市类型 1:直辖市
*/
private Integer provinceType;
}
package com.dsk.jsk.domain.bo;
import com.dsk.jsk.domain.BasePage;
import lombok.Data;
import java.util.List;
/**
* @ClassName OpRegionalEconomicDataV1PageDto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataV1PageDto extends BasePage {
/**
* 年份
*/
private Integer year;
/**
* 省
*/
private List<Integer> provinceIds;
/**
* 市
*/
private List<Integer> cityIds;
/**
* 区
*/
private List<Integer> areaIds;
/**
* 全国宏观经济:1 / 辖区经济:2 / 地区对比:3
*/
private Integer type;
/**
* 排序字段 默认gdp
*/
private String field = "gdp";
/**
* 排序 (降序desc 升序asc)
*/
private String order = "desc";
}
package com.dsk.jsk.domain.bo;
import lombok.Data;
/**
* @ClassName OpRegionalEconomicDataYearsListDto
* @Description 获取年份
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataYearsListDto {
private Integer year;
}
package com.dsk.jsk.domain.bo;
import cn.hutool.core.util.ObjectUtil;
import java.util.List;
/**
* @ClassName OpRegionalEconomicRegionalCompareDto
* @Description 地区经济-对比
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
public class OpRegionalEconomicRegionalCompareDto {
/**
* 年份
*/
private Integer year;
private List<OpRegionalEconomicDataStatisticsRegionalDto> compareList;
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
}
public List<OpRegionalEconomicDataStatisticsRegionalDto> getCompareList() {
if (ObjectUtil.isNotEmpty(compareList)) {
for (OpRegionalEconomicDataStatisticsRegionalDto dataStatisticsRegionalDto : compareList) {
dataStatisticsRegionalDto.setYear(year);
}
}
return compareList;
}
public void setCompareList(List<OpRegionalEconomicDataStatisticsRegionalDto> compareList) {
this.compareList = compareList;
}
@Override
public String toString() {
return "OpRegionalEconomicRegionalCompareDto{" +
"year=" + year +
", compareList=" + compareList +
'}';
}
}
//package com.dsk.jsk.service;
//
//import cn.hutool.core.bean.BeanUtil;
//import cn.hutool.json.JSONObject;
//import com.dsk.common.core.domain.AjaxResult;
//import com.dsk.system.utils.DskOpenApiUtil;
//import com.dsk.jsk.domain.bo.ComposeQueryDto;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * @Author liujie
// * @ClassName MarketAnalysisServiceImpl
// * @Date 2023/5/15 16:40
// **/
//@Service
//public class BusinessOpportunityRadarService {
//
// @Autowired
// private DskOpenApiUtil dskOpenApiUtil;
//
// public AjaxResult jskBidNewsPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult findByName(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/findByName", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult jskBidTenderPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidTender/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult establishmentPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/establishment/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult jskBidPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult landMarketPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/landMarket/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult enterpriseIndex(ComposeQueryDto dto) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", BeanUtil.beanToMap(dto,false,false));
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult enterprisePage(ComposeQueryDto dto) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page", BeanUtil.beanToMap(dto,false,false));
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// 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);
// }
//
// public AjaxResult bondProjectPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/bondProject/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult jskBidPlanPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult getCapitalSourceSelect() {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/getCapitalSourceSelect", null);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult keywordList() {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/keywordList", null);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// public AjaxResult bidSourceList(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/source", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//}
package com.dsk.jsk.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.biz.domain.vo.CustomerStatusListVo;
import com.dsk.biz.service.ICustomerService;
import com.dsk.common.constant.CacheConstants;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.utils.DskOpenApiUtil;
import com.dsk.common.utils.EncodeIdUtil;
import com.dsk.common.utils.redis.RedisUtils;
import com.dsk.component.UploadComponent;
import com.dsk.jsk.domain.*;
import com.dsk.search.service.BusinessOpportunityRadarService;
import com.dsk.system.utils.DskOpenApiUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger;
......@@ -22,10 +17,12 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.time.Duration;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName enterpriseService
......@@ -42,11 +39,6 @@ public class EnterpriseService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
ICustomerService iCustomerService;
@Autowired
private UploadComponent uploadComponent;
public R label(EnterpriseInfoLabelBody body) throws Exception {
List<Map<String, Object>> mapList = new ArrayList<>();
if (body.isVaildCid()) {
......@@ -90,14 +82,6 @@ public class EnterpriseService {
Integer uipCode = MapUtils.getInteger(uipMap, "code", 300);
if (200 != uipCode) return R.ok(companyData);
Map uipData = MapUtils.getMap(uipMap, "data", new HashMap<>());
String uipId = MapUtils.getString(uipData, "uipId", null);
companyData.put("uipId", uipId);
companyData.put("claimStatus", iCustomerService.status(companyName));
// Integer status = iCustomerService.status(companyName);
// if (ObjectUtil.isNotEmpty(status)) {
// companyData.put("claimStatus", status.equals(0) ? 1 : 0);
// }
Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/enterprise/bondCreditRating", map);
Integer bondCreditRatingCode = MapUtils.getInteger(bondCreditRatingMap, "code", 300);
if (200 != bondCreditRatingCode) return R.ok(companyData);
......@@ -286,19 +270,6 @@ public class EnterpriseService {
cIds.add(MapUtils.getLong(CommonUtils.assertAsMap(dataMap), "companyId"));
}
List<CustomerStatusListVo> claimStatusList = iCustomerService.selectStatusListByCompanyName(companyNames);
// Map<String, Object> bondCreditRatingBatchMap = new HashMap<>(1);
// bondCreditRatingBatchMap.put("cIds", cIds);
// Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/enterprise/bondCreditRatingBatch", bondCreditRatingBatchMap);
// Integer codeRating = MapUtils.getInteger(bondCreditRatingMap, "code", 300);
// ArrayList<Map<String, Object>> objArrayList = new ArrayList(1);
// if (codeRating.equals(HttpStatus.OK.value())) {
// Object object = bondCreditRatingMap.get("data");
// if (ObjectUtil.isNotEmpty(object)) {
// objArrayList = (ArrayList) object;
// }
// }
//按照城投企业id合并两个list
for (Object companyObj : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
......@@ -346,12 +317,7 @@ public class EnterpriseService {
companyMap.put("guaranteeAmount", MapUtils.getDouble(companyMap, "guaranteeAmount") == null ? null : String.format("%.2f", MapUtils.getDouble(companyMap, "guaranteeAmount")));
companyMap.put("guaranteeRatio", MapUtils.getDouble(companyMap, "guaranteeRatio") == null ? null : String.format("%.2f", MapUtils.getDouble(companyMap, "guaranteeRatio")));
companyMap.put("claimStatus", null);
for (CustomerStatusListVo vo : claimStatusList) {
if (companyName.equals(vo.getCompanyName())) {
companyMap.put("claimStatus", vo.getStatus());
}
}
// for (Map<String, Object> m : objArrayList) {
// Long companyIdCredit = MapUtils.getLong(m, "companyId", 0L);
// if (companyIdCredit.equals(companyId)) {
......@@ -433,46 +399,4 @@ public class EnterpriseService {
return BeanUtil.toBean(map, R.class);
}
@Autowired
private BusinessOpportunityRadarService opportunityRadarService;
//企业id、uipId
public Map<String, Object> getCidAndUipIdByCompanyName(String companyName) {
Map<String, Object> result = new HashMap<>();
if (ObjectUtils.isEmpty(companyName)) return result;
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(companyName);
if (!ObjectUtils.isEmpty(map.get("data"))) {
result.put("companyId", MapUtil.getInt(BeanUtil.beanToMap(map.get("data")), "jskEid"));
}
result.put("uipId", this.getUipIdByCompanyNameOrCompanyId(companyName, MapUtils.getInteger(result, "companyId")));
} catch (Exception e) {
log.debug("获取企业id错误!error:{}", e.getMessage());
}
return result;
}
//企业uipId
public String getUipIdByCompanyNameOrCompanyId(String companyName, Integer companyId) {
try {
String uipId = null;
if (!ObjectUtil.isEmpty(companyId)) {
R res = this.getUipIdByCid(Collections.singletonList(companyId));
if (!ObjectUtils.isEmpty(res.getData())) {
List<Map<String, Object>> data = (List<Map<String, Object>>) res.getData();
uipId = MapUtil.getStr(BeanUtil.beanToMap(data.get((0))), "uipId");
}
}
if (ObjectUtil.isEmpty(uipId)) {
R res = this.getUipId(companyName);
if (!ObjectUtils.isEmpty(res.getData())) {
uipId = MapUtil.getStr(BeanUtil.beanToMap(res.getData()), "uipId");
}
}
return uipId;
} catch (Exception e) {
log.debug("获取企业uipId错误!error:{}", e.getMessage());
}
return null;
}
}
......@@ -8,26 +8,21 @@ import com.dsk.common.constant.CacheConstants;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.utils.DskOpenApiUtil;
import com.dsk.common.utils.JsonUtils;
import com.dsk.component.UploadComponent;
import com.dsk.jsk.domain.JskCombineBidPageDto;
import com.dsk.jsk.domain.JskCombineCertificateDto;
import com.dsk.jsk.domain.JskCombineCountDto;
import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.util.RedisCache;
import com.dsk.system.service.ISysUserFileRecordService;
import com.dsk.system.utils.DskOpenApiUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
......@@ -41,21 +36,9 @@ public class JskCombineInfoService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
private EnterpriseService enterpriseService;
@Autowired
private ISysUserFileRecordService sysUserFileRecordService;
@Autowired
private UploadComponent uploadComponent;
@Value("${dsk.exportBackUrl}")
private String EXPORT_BACK_URL;
@Resource
private RedisCache redisCache;
// public AjaxResult memberList(JskCombineSearchDto dto) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/combine/memberList", BeanUtil.beanToMap(dto, false, false));
// return BeanUtil.toBean(map, AjaxResult.class);
// }
public TableDataInfo memberList(JskCombineSearchDto dto) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/combine/memberList", BeanUtil.beanToMap(dto, false, false));
return dskOpenApiUtil.responsePage(map);
......@@ -68,20 +51,6 @@ public class JskCombineInfoService {
public TableDataInfo businessList(JskCombineSearchDto dto) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/combine/projectList", BeanUtil.beanToMap(dto, false, false));
if (!ObjectUtils.isEmpty(map.get("data"))) {
Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
if (!ObjectUtils.isEmpty(data.get("list"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) data.get("list");
list.parallelStream().forEach(res -> {
Integer companyId = MapUtils.getInteger(res, "companyId");
String companyName = MapUtils.getString(res, "companyName");
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
Integer projectUnitId = MapUtils.getInteger(res, "projectUnitId");
String projectUnit = MapUtils.getString(res, "projectUnit");
res.put("projectUnitUipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(projectUnit, projectUnitId));
});
}
}
return dskOpenApiUtil.responsePage(map);
}
......@@ -140,97 +109,8 @@ public class JskCombineInfoService {
return BeanUtil.toBean(map, AjaxResult.class);
}
// public List<JskCombineWinBidProjectExportVo> exportWinBid(JskCombineSearchDto dto) {
// if (ObjectUtils.isEmpty(dto.getPageSize())) throw new ServiceException("导出条数不能为空!");
// if (dto.getPageSize() > 2000) dto.setPageSize(2000);
// dto.setPageNum(1);
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/combine/projectList", BeanUtil.beanToMap(dto, false, false));
// if (ObjectUtils.isEmpty(map.get("data"))) throw new ServiceException("导出失败,系统错误!");
// Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
// if (ObjectUtils.isEmpty(data.get("list"))) throw new ServiceException("导出失败,系统错误!");
//
// List<Map<String, Object>> list = (List<Map<String, Object>>) data.get("list");
// if (ObjectUtils.isEmpty(list)) throw new ServiceException("导出失败,无数据导出!");
// List<JskCombineWinBidProjectExportVo> result = new ArrayList<>();
// for (int i = 0; i < list.size(); i++) {
// JskCombineWinBidProjectExportVo vo = new JskCombineWinBidProjectExportVo();
// vo.setId(i + 1);
// vo.setBidTime(MapUtil.getDate(list.get(i),"bidTime"));
// if(ObjectUtils.isEmpty(dto.getSearchValue())){
// vo.setCompanyName(MapUtil.getStr(list.get(i),"companyName"));
// vo.setProjectName(MapUtil.getStr(list.get(i),"projectName"));
// }else {
// vo.setCompanyName(StringUtils.removeRed(MapUtil.getStr(list.get(i),"companyName")));
// vo.setProjectName(StringUtils.removeRed(MapUtil.getStr(list.get(i),"projectName")));
// }
// vo.setStockPercent(MapUtil.getDouble(list.get(i),"stockPercent"));
// vo.setMemberLevel(MapUtil.getStr(list.get(i),"memberLevel"));
// vo.setBidAmount(MapUtil.getDouble(list.get(i),"bidAmount"));
// vo.setAddress(MapUtil.getStr(list.get(i),"address"));
// vo.setBoundType(MapUtil.getStr(list.get(i),"boundType"));
// vo.setProjectType(MapUtil.getStr(list.get(i),"projectType"));
// vo.setProjectUnit(MapUtil.getStr(list.get(i),"projectUnit"));
// result.add(vo);
// }
// return result;
// }
// public List<JskCombineBidProjectExportVo> exportBid(JskCombineBidPageDto dto) {
// if (ObjectUtils.isEmpty(dto.getPageSize())) throw new ServiceException("导出条数不能为空!");
// if (dto.getPageSize() > 2000) dto.setPageSize(2000);
// dto.setPageNum(1);
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/combine/tenderList", BeanUtil.beanToMap(dto, false, false));
// if (ObjectUtils.isEmpty(map.get("data"))) throw new ServiceException("导出失败,系统错误!");
// Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
// if (ObjectUtils.isEmpty(data.get("list"))) throw new ServiceException("导出失败,系统错误!");
//
// List<Map<String, Object>> list = (List<Map<String, Object>>) data.get("list");
// if (ObjectUtils.isEmpty(list)) throw new ServiceException("导出失败,无数据导出!");
// List<JskCombineBidProjectExportVo> result = new ArrayList<>();
// for (int i = 0; i < list.size(); i++) {
// JskCombineBidProjectExportVo vo = new JskCombineBidProjectExportVo();
// vo.setId(i + 1);
// vo.setIssueTime(MapUtil.getDate(list.get(i),"issueTime"));
// if(ObjectUtils.isEmpty(dto.getKeys())){
// vo.setTenderee(MapUtil.getStr(list.get(i),"tenderee"));
// vo.setProjectName(MapUtil.getStr(list.get(i),"projectName"));
// vo.setAgency(MapUtil.getStr(list.get(i),"agency"));
// }else {
// vo.setTenderee(StringUtils.removeRed(MapUtil.getStr(list.get(i),"tenderee")));
// vo.setProjectName(StringUtils.removeRed(MapUtil.getStr(list.get(i),"projectName")));
// vo.setAgency(StringUtils.removeRed(MapUtil.getStr(list.get(i),"agency")));
// }
// vo.setStockPercent(MapUtil.getDouble(list.get(i),"stockPercent"));
// vo.setMemberLevel(MapUtil.getStr(list.get(i),"memberLevel"));
// vo.setBidAmount(MapUtil.getDouble(list.get(i),"bidAmount"));
// vo.setAddress(MapUtil.getStr(list.get(i),"address"));
// vo.setSubjectMatter(MapUtil.getStr(list.get(i),"subjectMatter"));
// vo.setProjectType(MapUtil.getStr(list.get(i),"projectType"));
//
// result.add(vo);
// }
// return result;
// }
public TableDataInfo bidPage(JskCombineBidPageDto dto) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/combine/tenderList", BeanUtil.beanToMap(dto, false, false));
if (ObjectUtil.isNotEmpty(map.get("data"))) {
Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
if (!ObjectUtils.isEmpty(data.get("list"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) data.get("list");
list.parallelStream().forEach(res -> {
//招标企业
Integer tendereeId = MapUtils.getInteger(res, "tendereeId");
String tenderee = MapUtils.getString(res, "tenderee");
// 代理机构名称
Integer agencyId = MapUtils.getInteger(res, "agencyId");
String agency = MapUtils.getString(res, "agency");
res.put("tendereeUipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(tenderee, tendereeId));
res.put("agencyUipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(agency, agencyId));
});
}
}
return dskOpenApiUtil.responsePage(map);
}
......
package com.dsk.jsk.service.service;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.jsk.domain.*;
import com.dsk.jsk.domain.bo.*;
/**
* @ClassName EconomicService
* @Description 经济大全业务层
* @Author Dgm
* @Date 2023/5/18 10:17
* @Version 1.00
*/
public interface EconomicService {
/***
*@Description: 全国经济大全分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult nationalPage(OpRegionalEconomicDataV1PageDto dto);
/***
*@Description: 全国经济大全分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult yearsList(OpRegionalEconomicDataYearsListDto dataYearsListDto);
/***
*@Description: 全国经济大全详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult details(OpRegionalEconomicDataDetailsDto detailsDto);
/***
*@Description: 获取当前地区
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult location(OpRegionalLocalDto detailsDto);
/***
*@Description: 地区经济统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult statisticsRegional(OpRegionalEconomicDataStatisticsRegionalDto dto);
/***
*@Description: 地区经济-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalList(OpRegionalEconomicDataRegionalListDto dto);
/***
*@Description: 对比经济
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalCompare(OpRegionalEconomicDataStatisticsRegionalDto dto);
/***
*@Description: 地区经济-对比
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalMultipleCompare (OpRegionalEconomicRegionalCompareDto dto);
}
package com.dsk.jsk.service.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.constant.CacheConstants;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.DateUtils;
import com.dsk.system.utils.DskOpenApiUtil;
import com.dsk.common.utils.JsonUtils;
import com.dsk.jsk.domain.bo.*;
import com.dsk.jsk.service.service.EconomicService;
import com.dsk.jsk.util.RedisCache;
import org.apache.commons.collections4.MapUtils;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
/**
* @ClassName EconomicServiceImpl
* @Description 经济大全实现
* @Author Dgm
* @Date 2023/5/18 10:23
* @Version
*/
@Service
public class EconomicServiceImpl implements EconomicService {
@Resource
private DskOpenApiUtil dskOpenApiUtil;
@Resource
private RedisCache redisCache;
/**
* 全国宏观经济:1 / 辖区经济:2 / 地区对比:3
*/
private static final Integer TYPE = 1;
/**
* 默认排序
*/
private static final String FIELD = "gdp";
private static final String ORDER = "desc";
@Override
public AjaxResult nationalPage(OpRegionalEconomicDataV1PageDto dto) {
if (ObjectUtil.isEmpty(dto.getYear())) {
dto.setYear(DateUtils.getYear() - 1);
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/national/nationalPage", BeanUtil.beanToMap(dto, false, false));
Integer code = MapUtils.getInteger(map, "code", 300);
if (!code.equals(HttpStatus.OK.value())) {
throw new RuntimeException();
}
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult yearsList(OpRegionalEconomicDataYearsListDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/years/list", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult details(OpRegionalEconomicDataDetailsDto detailsDto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/details", BeanUtil.beanToMap(detailsDto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult location(OpRegionalLocalDto detailsDto) {
Long userId = LoginHelper.getUserId();
String redisKey = CacheConstants.PERSONAL_LOCATION + userId;
if (ObjectUtil.isEmpty(detailsDto.getProvinceId()) && ObjectUtil.isEmpty(detailsDto.getCityId()) && ObjectUtil.isEmpty(detailsDto.getAreaId())) {
if (ObjectUtil.isNotEmpty(redisKey)) {
Map<Object, Object> cacheMap = JsonUtils.parseObject(redisCache.getCacheObject(redisKey), Map.class);
if (MapUtils.isNotEmpty(cacheMap)) {
return AjaxResult.success(cacheMap);
}
}
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/location", BeanUtil.beanToMap(detailsDto, false, false));
Integer code = MapUtils.getInteger(map, "code", 300);
if (!code.equals(HttpStatus.OK.value())) {
throw new RuntimeException();
}
Map data = MapUtils.getMap(map, "data", null);
if (ObjectUtil.isNotEmpty(detailsDto.getProvinceId()) || ObjectUtil.isNotEmpty(detailsDto.getCityId()) || ObjectUtil.isNotEmpty(detailsDto.getAreaId())) {
redisCache.setCacheObject(redisKey, JsonUtils.toJsonString(data));
}
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult statisticsRegional(OpRegionalEconomicDataStatisticsRegionalDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/statistics/regional", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalList(OpRegionalEconomicDataRegionalListDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/regional/list", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalCompare(OpRegionalEconomicDataStatisticsRegionalDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/regional/compare", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalMultipleCompare(OpRegionalEconomicRegionalCompareDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/regional/multipleCompare", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
}
package com.dsk.jsk.service.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.system.utils.DskOpenApiUtil;
import com.dsk.jsk.service.service.RegionalEnterprisesService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import java.util.*;
/**
* @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 enterprisePage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/regional/page",BeanUtil.beanToMap(object, false, false));
Integer code = MapUtils.getInteger(map, "code", 300);
if (code.equals(HttpStatus.OK.value())) {
Map data = MapUtils.getMap(map, "data", null);
List<Object> list = CommonUtils.assertAsArray(MapUtils.getObject(data, "list", ""));
// 常合作客户
List<Integer> getTopCustomerIds = getTopCustomerIds(list);
Map<String,Object> topCustomerIdsMap = new HashMap<>(1);
topCustomerIdsMap.put("ids", getTopCustomerIds);
Map<String, Object> topCustomerMap = dskOpenApiUtil.requestBody("/operate/enterprise/selectCompanyNameList", topCustomerIdsMap);
// 常合作供应商
List<Integer> getTopSupplierIds = getTopSupplierIds(list);
Map<String,Object> topSupplierIdsMap = new HashMap<>(1);
topSupplierIdsMap.put("ids", getTopSupplierIds);
Map<String, Object> topSupplierMap = dskOpenApiUtil.requestBody("/operate/enterprise/selectCompanyNameList", topSupplierIdsMap);
if (CollectionUtils.isNotEmpty(list)) {
for (Object companyObj : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
companyMap.put("topCustomer", null);
//常合作客户id
Integer topCustomerId = MapUtils.getInteger(companyMap, "topCustomerId");
if (ObjectUtil.isNotEmpty(topCustomerId)) {
Integer topCustomerCode = MapUtils.getInteger(topCustomerMap, "code", 300);
if (topCustomerCode.equals(HttpStatus.OK.value())) {
List<Map<String, Object>> companyNameList = (List<Map<String, Object>>)MapUtils.getObject(topCustomerMap, "data", null);
for (Map<String, Object> comMap : companyNameList) {
Integer id = MapUtils.getInteger(comMap, "id", 0);
if (id.equals(topCustomerId)) {
String companyName = MapUtils.getString(comMap, "companyName", null);
companyMap.put("topCustomer", companyName);
}
}
}
}
//常合作供应商id
Integer topSupplierId = MapUtils.getInteger(companyMap, "topSupplierId");
companyMap.put("topSupplier", null);
if (ObjectUtil.isNotEmpty(topSupplierId)) {
Integer topSupplierCode = MapUtils.getInteger(topSupplierMap, "code", 300);
if (topSupplierCode.equals(HttpStatus.OK.value())) {
List<Map<String, Object>> companyNameList = (List<Map<String, Object>>)MapUtils.getObject(topSupplierMap, "data", null);
for (Map<String, Object> comMap : companyNameList) {
Integer id = MapUtils.getInteger(comMap, "id", 0);
if (id.equals(topSupplierId)) {
String companyName = MapUtils.getString(comMap, "companyName", null);
companyMap.put("topSupplier", companyName);
}
}
}
}
}
}
}
return BeanUtil.toBean(map, AjaxResult.class);
}
/***
*@Description: 获取企业Id-客户
*@Param:
*@return: java.util.List<java.lang.Integer>
*@Author: Dgm
*@date: 2023/7/11 16:04
*/
public List<Integer> getTopCustomerIds(List<Object> list) {
List<Integer> getIds = new ArrayList<>(20);
for (Object companyObj : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
//常合作客户id
Integer topCustomerId = MapUtils.getInteger(companyMap, "topCustomerId");
getIds.add(topCustomerId);
}
return getIds;
}
/***
*@Description: 获取企业Id-供应商
*@Param:
*@return: java.util.List<java.lang.Integer>
*@Author: Dgm
*@date: 2023/7/11 16:04
*/
public List<Integer> getTopSupplierIds(List<Object> list) {
List<Integer> getIds = new ArrayList<>(20);
for (Object companyObj : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
//常合作供应商id
Integer topSupplierId = MapUtils.getInteger(companyMap, "topSupplierId");
getIds.add(topSupplierId);
}
return getIds;
}
}
......@@ -3,20 +3,20 @@ package com.dsk.jsk.service.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.biz.domain.vo.CustomerStatusListVo;
import com.dsk.biz.service.ICustomerService;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.system.utils.DskOpenApiUtil;
import com.dsk.component.UploadComponent;
import com.dsk.jsk.domain.bo.UrbanInvestmentPlatformDto;
import com.dsk.jsk.service.service.UrbanInvestmentPlatformService;
import com.dsk.system.utils.DskOpenApiUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName EconomicServiceImpl
......@@ -31,11 +31,6 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
private ICustomerService iCustomerService;
@Autowired
private UploadComponent uploadComponent;
@Override
public AjaxResult page(UrbanInvestmentPlatformDto pageDto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/urbanInvestment/page", BeanUtil.beanToMap(pageDto, false, false));
......@@ -62,19 +57,6 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo
}
cIds.add(MapUtils.getLong(CommonUtils.assertAsMap(dataMap), "companyId"));
}
List<CustomerStatusListVo> customerStatusListVos = iCustomerService.selectStatusListByCompanyName(companyNames);
// Map<String, Object> bondCreditRatingBatchMap = new HashMap<>(1);
// bondCreditRatingBatchMap.put("cIds", cIds);
// Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/operate/enterprise/bondCreditRatingBatch", bondCreditRatingBatchMap);
// Integer codeRating = MapUtils.getInteger(bondCreditRatingMap, "code", 300);
// ArrayList<Map<String, Object>> objArrayList = new ArrayList(1);
// if (codeRating.equals(HttpStatus.OK.value())) {
// Object object = bondCreditRatingMap.get("data");
// if (ObjectUtil.isNotEmpty(object)) {
// objArrayList = (ArrayList)object;
// }
// }
//按照城投企业id合并两个list
//按照城投企业id合并两个list
......@@ -88,27 +70,6 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo
companyName = companyName.replaceAll("</font>","");
}
companyMap.put("claimStatus", null);
// companyMap.put("bratingSubjectLevel", null);
for (CustomerStatusListVo vo : customerStatusListVos) {
if (companyName.equals(vo.getCompanyName())) {
companyMap.put("claimStatus", vo.getStatus());
}
}
// 去除重复的数据
// Set<UrbanInvestmentPlatformSubjectLevelDto> subjectLevelDtoSet = new HashSet<>();
// for (Map<String, Object> m : objArrayList) {
// UrbanInvestmentPlatformSubjectLevelDto dto = new UrbanInvestmentPlatformSubjectLevelDto();
// Long companyIdCredit = MapUtils.getLong(m, "companyId", 0L);
// String rate = MapUtils.getString(m, "bratingSubjectLevel");
// dto.setCompanyId(companyIdCredit);
// dto.setBratingSubjectLevel(rate);
// subjectLevelDtoSet.add(dto);
// }
// for (UrbanInvestmentPlatformSubjectLevelDto dto : subjectLevelDtoSet) {
// if (dto.getCompanyId().equals(companyId)) {
// companyMap.put("bratingSubjectLevel", dto.getBratingSubjectLevel());
// }
// }
}
return BeanUtil.toBean(map, AjaxResult.class);
}
......
package com.dsk.search.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.alibaba.fastjson2.JSONObject;
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.R;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.component.UploadComponent;
import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.jsk.domain.vo.ImportantProjectExportVo;
import com.dsk.jsk.domain.vo.JskCombineBidProjectExportVo;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.util.List;
/**
......@@ -189,19 +177,6 @@ public class BusinessOpportunityRadarController {
return opportunityRadarService.importantCondition();
}
/**
* 导出重点项目清单
*/
@RequestMapping("/export/important")
@SaCheckPermission("radar:export:important")
public R<SysOssVo> exportBid(@RequestBody JSONObject object, HttpServletResponse response) {
List<ImportantProjectExportVo> list = opportunityRadarService.exportImportant(object);
String title = "重点项目导出明细";
ExcelUtils<ImportantProjectExportVo> util = new ExcelUtils<>(ImportantProjectExportVo.class);
ByteArrayOutputStream ba = util.exportExcel(list, "重点项目", title, true);
return uploadComponent.upload(title, ba, Constants.SUFFIX_XLSX, Constants.CONTENT_TYPE_XLSX);
}
/*
* 公招市场
......
package com.dsk.search.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.StringUtils;
import com.dsk.jsk.domain.EnterpriseUipSearchBody;
import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.jsk.domain.bo.UrbanInvestmentPlatformDto;
import com.dsk.search.service.ExportService;
import com.dsk.search.util.ObjectUtils;
import com.dsk.system.service.ISysUserFileRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
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;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.Arrays;
/**
* @author lc
* @date 2023/11/14 14:15
*/
@RestController
@RequestMapping("/export")
public class ExportController {
@Autowired
private ISysUserFileRecordService sysUserFileRecordService;
@Resource
private ExportService exportService;
/**
* 导出回调接口
* @param object
* @return
*/
@PostMapping(value = "/backUrl")
public AjaxResult exportBack(@RequestBody JSONObject object) {
return sysUserFileRecordService.exportBack(object);
}
/*
* 企业基本信息表导出
*/
@PostMapping("/enterprise/info")
public AjaxResult enterpriseInfoExport(@RequestBody JSONObject object) {
ComposeQueryDto compose = JSONObject.parseObject(object.toJSONString(), ComposeQueryDto.class);
if (null==compose.getAptitudeQueryDto()
|| !ObjectUtils.hasValueThroughObj(compose.getAptitudeQueryDto(), null, Arrays.asList("and", "or", "yes", "no", "level", "qualification", "new", "only"))) {
return AjaxResult.warn("导出筛选条件为空!");
}
if (StringUtils.isEmpty(compose.getExportExeclName())){
object.put("exportExeclName","企业基本信息导出");
}
object.put("exportTemplateName","szh-enterprise-info.xlsx");
object.put("exportStartRow",3);
return exportService.enterpriseInfoExport(object);
}
/*
* 企业资质表导出
*/
@PostMapping("/aptitude")
public AjaxResult enterpriseAptitudeExport(@RequestBody JSONObject object) {
ComposeQueryDto compose = JSONObject.parseObject(object.toJSONString(), ComposeQueryDto.class);
if (null==compose.getAptitudeQueryDto()
|| !ObjectUtils.hasValueThroughObj(compose.getAptitudeQueryDto(), null, Arrays.asList("and", "or", "yes", "no", "level", "qualification", "new", "only"))) {
return AjaxResult.warn("导出筛选条件为空!");
}
if (StringUtils.isEmpty(compose.getExportExeclName())){
object.put("exportExeclName","企业资质信息导出");
}
object.put("exportTemplateName","szh-cert-info.xlsx");
object.put("exportStartRow",3);
return exportService.enterpriseAptitudeExport(object);
}
/*
* 重点项目清单导出
*/
@RequestMapping("/important")
public AjaxResult exportImportant(@RequestBody JSONObject object) {
ComposeQueryDto compose = JSONObject.parseObject(object.toJSONString(), ComposeQueryDto.class);
if (null==compose.getImportantProjectDto()
|| !ObjectUtils.hasValueThroughObj(compose.getImportantProjectDto(), null, Arrays.asList("and", "or", "yes", "no", "level", "qualification", "new", "only"))) {
return AjaxResult.warn("导出筛选条件为空!");
}
if (StringUtils.isEmpty(compose.getExportExeclName())){
object.put("exportExeclName","重点项目导出");
}
return exportService.importantExport(object);
}
/**
* 集团成员列表导出
*/
@PostMapping("/combine/memberList")
public AjaxResult memberListExportPre(@RequestBody JskCombineSearchDto dto) throws Exception {
return exportService.memberListExport(dto);
}
//集团中标业绩导出
@PostMapping("/combine/win/bid")
@SaCheckPermission("combine:info:export:win:bid")
public AjaxResult exportWinBid(@RequestBody JskCombineSearchDto dto) {
return exportService.exportWinBid(dto);
}
//集团招标业绩导出
@PostMapping("/combine/bid")
@SaCheckPermission("combine:info:export:win:bid")
public AjaxResult exportBid(@RequestBody JskCombineSearchDto dto) {
return exportService.exportBid(dto);
}
//查城投平台导出
@PostMapping(value = "/uipSerach")
public AjaxResult uipSerachExport(@RequestBody @Valid EnterpriseUipSearchBody vo) throws Exception {
return exportService.uipSerachExport(vo);
}
//市场经济 城投平台导出
@PostMapping("/urbanInvestment")
public AjaxResult export(@RequestBody UrbanInvestmentPlatformDto dto) {
return exportService.export(dto);
}
}
//package com.dsk.search.domain;
//
//import lombok.Data;
//
//import java.util.Date;
//import java.util.List;
//
///**
// * 组合查询参数
// * @author Administrator
// *
// */
//@Data
//public class AchievementQueryDto {
//
// /**
// * 业绩所需参数
// */
//// //中标面积
//// Double tenderArea;
//// //许可面积
//// Double licenceArea;
//// //竣工面积
//// Double completionArea;
// //招投标面积
// Double startTenderArea;
// Double endTenderArea;
// //施工许可面积
// Double startLicenceArea;
// Double endLicenceArea;
// //竣工验收面积
// Double startCheckArea;
// Double endCheckArea;
// //竣工验收备案面积
// Double startCompletionArea;
// Double endCompletionArea;
// //总面积
// Double startTotalArea;
// Double endTotalArea;
// //面积体现节点
// String areaStr;
// //项目面积同时具备、任意均可 and/or
// String areaQueryType;
// //许可金额
// Double licenceMoney;
// //中标金额
// Double startTenderMoney;
// Double endTenderMoney;
// //合同金额
// Double startContractMoney;
// Double endContractMoney;
// //施工许可金额
// Double startLicenceMoney;
// Double endLicenceMoney;
// //竣工验收实际造价
// Double startCompletionMoney;
// Double endCompletionMoney;
// //竣工备案实际造价
// Double startCheckMoney;
// Double endCheckMoney;
// //总投资
// Double startInvest;
// Double endInvest;
// //项目金额同时具备、任意均可
// String moneyQueryType;
// //金额和面积同时具备、任意均可
// String moneyAndAreaQueryType;
// //业绩时间同时具备、任意均可
// String timeQueryType;
//
// String eid;
//
// String buildCorpName;
//
// String personName;
//
// String ename;
// // 项目来源 0=本地 1=四库一平台
// Integer source;
//
// Double startMoney;
//
// Double endMoney;
// //金额体现节点
// String moneyStr;
// // 关键词(包含)
// List<KeywordDto> keywords;
// // 关键词(不包含)
// String keywordNot;
// // 关键词(不包含)查询类型 project项目名称 scale建设规模 projectOrScale项目名称或建设规模
// String keywordNotType;
// // 业绩类型
// String achievementType;
//
// //单项查询 关键词包含
// String singleKeywordIn;
// //单项查询 关键词不包含
// String singleKeywordOut;
// //单项查询 关键词包含体现节点
// String singleKeywordInNode;
// //单项查询 关键词不包含体现节点
// String singleKeywordOutNode;
// //是否截图体现公司和规模 yes no
// Boolean isSingleReflect;
//
// //建设性质
// String nature;
// // 项目属地
// String divisionStr;
// //项目所在城市
// String cityStr;
//
// String province;
// Integer provinceId;
// String city;
// Integer cityId;
// String county;
// Integer countyId;
//
// Double startArea;
//
// Double endArea;
// //项目类别
// String projectType;
// // 工程用途
// String purposeStr;
// // 中标开始时间
// Date startTenderTime;
// // 中标结束时间
// Date endTenderTime;
// // 实际竣工开始日期
// Date startCheckDate;
// // 实际竣工结束日期
// Date endCheckDate;
// //竣工备案时间未公示
// String hasCheckDate;
// //实际开工开始日期
// Date startWorkDate;
// //实际开工结束日期
// Date endWorkDate;
// //合同日期开始
// Date startContractDate;
// //合同日期结束
// Date endContractDate;
// //施工许可开始日期
// Date startLicenceDate;
// //施工许可结束日期
// Date endLicenceDate;
// //施工图审开始日期
// Date startCensorDate;
// //施工图审结束日期
// Date endCensorDate;
// //竣工验收开始日期
// Date startCheckCheckDate;
// //竣工验收结束日期
// Date endCheckCheckDate;
// //竣工验收时间未公示
// String hasCheckCheckDate;
// // 业绩属性
// String attributeStr;
// // 业绩属性
// String attributeQueryType;
// // 项目经理
// String pmStr;
// // 项目经理同时具备、任意均可
// String pmQueryType;
// // 结构体系
// String structure;
// // 数据等级
// String dataLevel;
// //招投标数据等级
// String tenderDataLevel;
// //合同登记
// String contractDataLevel;
// //施工许可
// String licenceDataLevel;
// //竣工验收备案
// String completionDataLevel;
// //项目主体
// String projectDataLevel;
// //施工图审
// String censorDataLevel;
// //竣工验收
// String checkDataLevel;
// // 数据等级查询节点
// String dataLevelStr;
// // 数据等级查询方式 同时具备 任意均可
// String dataLevelQueryType;
// // 资金来源
// String fundSource;
//
// Double startLength;
//
// Double endLength;
// //施工许可
// Double startLicenceLength;
// Double endLicenceLength;
// //竣工验收
// Double startCheckCompletionLength;
// Double endCheckCompletionLength;
// //竣工验收备案
// Double startCompletionLength;
// Double endCompletionLength;
// //长度体现节点
// String lengthNode;
// //长度筛选类型 or/and
// String lengthType;
//
// Double startSpan;
//
// Double endSpan;
// //施工许可
// Double startLicenceSpan;
// Double endLicenceSpan;
// //竣工验收
// Double startCheckCompletionSpan;
// Double endCheckCompletionSpan;
// //竣工验收备案
// Double startCompletionSpan;
// Double endCompletionSpan;
// //跨度体现节点
// String spanNode;
// //跨度筛选类型 or/and
// String spanType;
//
// Integer achievementCount;
//
// String type;
//
// String tenderWay;
//
// String md5Company;
// // 企业业绩关键词
// String keyword;
// // 企业项目详情的中标开始时间 时间戳
// Long startTenderDetailTime;
// // 企业项目详情的中标结束时间 时间戳
// Long endTenderDetailTime;
//
// List<SkyProjectIndexDto> indexDtos;
//
// //指标筛选类型 or/and
// String indexQueryType;
// //指标体现节点
// String indexPoint;
//}
......@@ -5,15 +5,13 @@ import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.biz.domain.vo.CustomerStatusListVo;
import com.dsk.biz.service.ICustomerService;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.exception.ServiceException;
import com.dsk.system.utils.DskOpenApiUtil;
import com.dsk.common.utils.StringUtils;
import com.dsk.jsk.domain.vo.ImportantProjectExportVo;
import com.dsk.jsk.service.EnterpriseService;
import com.dsk.system.service.ISysUserFileRecordService;
import com.dsk.system.utils.DskOpenApiUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -36,9 +34,6 @@ public class BusinessOpportunityRadarService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
ICustomerService iCustomerService;
@Autowired
private EnterpriseService enterpriseService;
@Autowired
......@@ -112,7 +107,6 @@ public class BusinessOpportunityRadarService {
}
}
List<CustomerStatusListVo> claimStatusList = iCustomerService.selectStatusListByCompanyName(companyNames);
for (Object enterprise : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(enterprise);
......@@ -121,15 +115,8 @@ public class BusinessOpportunityRadarService {
companyName = companyName.replace("<font color='#FF204E'>", "");
companyName = companyName.replace("</font>", "");
}
companyMap.put("claimStatus", null);
for (CustomerStatusListVo vo : claimStatusList) {
if (companyName.equals(vo.getCompanyName())) {
companyMap.put("claimStatus", vo.getStatus());
}
}
Integer jskEid = MapUtils.getInteger(companyMap, "jskEid");
companyMap.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, jskEid));
}
......
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.acc.openapi.client.util.CommonUtils;
import com.dsk.biz.utils.ExcelUtils;
import com.dsk.common.constant.Constants;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.system.utils.DskOpenApiUtil;
import com.dsk.component.UploadComponent;
import com.dsk.jsk.domain.EnterpriseUipSearchBody;
import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.domain.bo.UrbanInvestmentPlatformDto;
import com.dsk.jsk.domain.vo.UrbanInvestmentExportVo;
import com.dsk.system.domain.SysUserFileRecord;
import com.dsk.system.service.ISysUserFileRecordService;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author lc
* @date 2023/11/20 15:21
*/
@Service
public class ExportService {
@Autowired
private ISysUserFileRecordService sysUserFileRecordService;
@Value("${dsk.exportBackUrl}")
private String EXPORT_BACK_URL;
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
private UploadComponent uploadComponent;
//企业基本信息导出
public AjaxResult enterpriseInfoExport(JSONObject object) {
SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(object.get("exportExeclName").toString().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1);
//生成中
fileRecord.setStatus(2);
fileRecord.setRemark("企业基本信息导出");
Long fileId = sysUserFileRecordService.exportAdd(fileRecord);
object.put("exportUniqueCode",fileId);
//回调函数
object.put("exportBackUrl",EXPORT_BACK_URL);
dskOpenApiUtil.requestBody("/operate/export/enterprise", object);
return AjaxResult.success();
}
//企业资质导出
public AjaxResult enterpriseAptitudeExport(JSONObject object) {
SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(object.get("exportExeclName").toString().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1);
//生成中
fileRecord.setStatus(2);
fileRecord.setRemark("企业资质信息导出");
Long fileId = sysUserFileRecordService.exportAdd(fileRecord);
object.put("exportUniqueCode",fileId);
//回调函数
object.put("exportBackUrl",EXPORT_BACK_URL);
dskOpenApiUtil.requestBody("/operate/export/aptitude", object);
return AjaxResult.success();
}
//重点项目清单
public AjaxResult importantExport(JSONObject object) {
SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(object.get("exportExeclName").toString().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1);
//生成中
fileRecord.setStatus(2);
fileRecord.setRemark("重点项目清单导出");
Long fileId = sysUserFileRecordService.exportAdd(fileRecord);
object.put("exportUniqueCode",fileId);
//回调函数
object.put("exportBackUrl",EXPORT_BACK_URL);
dskOpenApiUtil.requestBody("/operate/export/important", object);
return AjaxResult.success();
}
//集团成员导出
public AjaxResult memberListExport(JskCombineSearchDto dto) {
SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(dto.getExportExeclName().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1);
//生成中
fileRecord.setStatus(2);
fileRecord.setRemark("集团成员列表导出");
Long fileId = sysUserFileRecordService.exportAdd(fileRecord);
dto.setExportUniqueCode(fileId.toString());
//回调函数
dto.setExportBackUrl(EXPORT_BACK_URL);
dskOpenApiUtil.requestBody("/operate/export/member", BeanUtil.beanToMap(dto, false, false));
return AjaxResult.success();
}
//集团中标业绩导出
public AjaxResult exportWinBid(JskCombineSearchDto dto) {
SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(dto.getExportExeclName().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1);
//生成中
fileRecord.setStatus(2);
fileRecord.setRemark("集团中标业绩导出");
Long fileId = sysUserFileRecordService.exportAdd(fileRecord);
dto.setExportUniqueCode(fileId.toString());
//回调函数
dto.setExportBackUrl(EXPORT_BACK_URL);
dskOpenApiUtil.requestBody("/operate/export/combineBid", BeanUtil.beanToMap(dto, false, false));
return AjaxResult.success();
}
//集团招标业绩
public AjaxResult exportBid(JskCombineSearchDto dto) {
SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(dto.getExportExeclName().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1);
//生成中
fileRecord.setStatus(2);
fileRecord.setRemark("集团招标业绩导出");
Long fileId = sysUserFileRecordService.exportAdd(fileRecord);
dto.setExportUniqueCode(fileId.toString());
//回调函数
dto.setExportBackUrl(EXPORT_BACK_URL);
dskOpenApiUtil.requestBody("/operate/export/combine/tender", BeanUtil.beanToMap(dto, false, false));
return AjaxResult.success();
}
public AjaxResult uipSerachExport(EnterpriseUipSearchBody pageDto) {
// 分页参数
pageDto.setPageNum(1);
if (null==pageDto.getPageSize()||pageDto.getPageSize()>=2000){
pageDto.setPageSize(2000);
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/export/search/urbanInvestment", BeanUtil.beanToMap(pageDto, false, false));
Integer code = MapUtils.getInteger(map, "code", 300);
if (HttpStatus.OK.value() != code) {
throw new RuntimeException();
}
List<Object> list = CommonUtils.assertAsArray(MapUtils.getObject(map, "data", ""));
int i = 1;
List<UrbanInvestmentExportVo> resultList = new ArrayList<>();
for (Object obj : list) {
UrbanInvestmentExportVo vo = new UrbanInvestmentExportVo();
Map<String, Object> dataMap = CommonUtils.assertAsMap(obj);
vo.setId(i++);
vo.setCompanyName(MapUtil.getStr(dataMap, "companyName"));
if (null!=pageDto.getKeys()){
vo.setCompanyName(MapUtil.getStr(dataMap, "companyName"));
}
StringBuilder domicile = new StringBuilder();
if (null != dataMap.get("province")) {
domicile.append(MapUtil.getStr(dataMap,"province"));
}
if (null != dataMap.get("city")) {
domicile.append(MapUtil.getStr(dataMap,"city"));
}
if (null != dataMap.get("area")) {
domicile.append(MapUtil.getStr(dataMap,"area"));
}
if (domicile.length()>0){
vo.setDomicile(domicile.toString());
}
//招标数量
vo.setBiddingCount(MapUtil.getInt(dataMap, "biddingCount"));
//城投拿地
vo.setLandInfoCount(MapUtil.getInt(dataMap, "landInfoCount"));
//供应商
vo.setSupplierCount(MapUtil.getInt(dataMap, "supplierCount"));
//债卷余额
vo.setCreditBalance(MapUtil.getDouble(dataMap, "bondBalance"));
//主体评级
vo.setBratingSubjectLevel(MapUtil.getStr(dataMap, "bratingSubjectLevel"));
//行政级别
vo.setUipExecutiveLevel(MapUtil.getStr(dataMap, "uipExecutiveLevel"));
//股东背景
vo.setShareholderBg(MapUtil.getStr(dataMap, "shareholderBg"));
//股权关系
vo.setEquityRelationship(MapUtil.getStr(dataMap, "equityRelationship"));
//平台重要性
vo.setPlatformImportance(MapUtil.getStr(dataMap, "platformImportance"));
//城投业务类型
vo.setUipBusinessType(MapUtil.getStr(dataMap, "uipBusinessType"));
//实控人
vo.setActualController(MapUtil.getStr(dataMap, "actualController"));
//最新报告期
vo.setLatestReportPeriod(MapUtil.getDate(dataMap, "latestReportPeriod"));
//总资产
vo.setTotalAssets(MapUtil.getDouble(dataMap, "totalAssets"));
//归母净资产
vo.setBelongNetAssets(MapUtil.getDouble(dataMap, "belongNetAssets"));
resultList.add(vo);
}
String title = "查城投平台导出明细";
if (null!=pageDto.getExportExeclName()){
title = pageDto.getExportExeclName();
}
ExcelUtils<UrbanInvestmentExportVo> util = new ExcelUtils<>(UrbanInvestmentExportVo.class);
ByteArrayOutputStream ba = util.exportExcel(resultList, "查城投平台", title, true);
uploadComponent.upload(title, ba, Constants.SUFFIX_XLSX, Constants.CONTENT_TYPE_XLSX);
return AjaxResult.success();
}
public AjaxResult export(UrbanInvestmentPlatformDto pageDto) {
// 分页参数
pageDto.setPageNum(1);
if (null==pageDto.getPageSize()||pageDto.getPageSize()>=2000){
pageDto.setPageSize(2000);
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/export/urbanInvestment", BeanUtil.beanToMap(pageDto, false, false));
Integer code = MapUtils.getInteger(map, "code", 300);
if (HttpStatus.OK.value() != code) {
throw new RuntimeException();
}
List<Object> list = CommonUtils.assertAsArray(MapUtils.getObject(map, "data", ""));
int i = 1;
List<UrbanInvestmentExportVo> resultList = new ArrayList<>();
for (Object obj : list) {
UrbanInvestmentExportVo vo = new UrbanInvestmentExportVo();
Map<String, Object> dataMap = CommonUtils.assertAsMap(obj);
vo.setId(i++);
vo.setCompanyName(MapUtil.getStr(dataMap, "companyName"));
StringBuilder domicile = new StringBuilder();
if (null != dataMap.get("province")) {
domicile.append(MapUtil.getStr(dataMap,"province"));
}
if (null != dataMap.get("city")) {
domicile.append(MapUtil.getStr(dataMap,"city"));
}
if (null != dataMap.get("area")) {
domicile.append(MapUtil.getStr(dataMap,"area"));
}
if (domicile.length()>0){
vo.setDomicile(domicile.toString());
}
//招标数量
vo.setBiddingCount(MapUtil.getInt(dataMap, "biddingCount"));
//城投拿地
vo.setLandInfoCount(MapUtil.getInt(dataMap, "landInfoCount"));
//供应商
vo.setSupplierCount(MapUtil.getInt(dataMap, "supplierCount"));
//债卷余额
vo.setCreditBalance(MapUtil.getDouble(dataMap, "bondBalance"));
//主体评级
vo.setBratingSubjectLevel(MapUtil.getStr(dataMap, "bratingSubjectLevel"));
//行政级别
vo.setUipExecutiveLevel(MapUtil.getStr(dataMap, "uipExecutiveLevel"));
//股东背景
vo.setShareholderBg(MapUtil.getStr(dataMap, "shareholderBg"));
//股权关系
vo.setEquityRelationship(MapUtil.getStr(dataMap, "equityRelationship"));
//平台重要性
vo.setPlatformImportance(MapUtil.getStr(dataMap, "platformImportance"));
//城投业务类型
vo.setUipBusinessType(MapUtil.getStr(dataMap, "uipBusinessType"));
//实控人
vo.setActualController(MapUtil.getStr(dataMap, "actualController"));
//最新报告期
vo.setLatestReportPeriod(MapUtil.getDate(dataMap, "latestReportPeriod"));
//总资产
vo.setTotalAssets(MapUtil.getDouble(dataMap, "totalAssets"));
//归母净资产
vo.setBelongNetAssets(MapUtil.getDouble(dataMap, "belongNetAssets"));
resultList.add(vo);
}
String title = "城投平台导出明细";
if (null!=pageDto.getExportExeclName()){
title = pageDto.getExportExeclName();
}
ExcelUtils<UrbanInvestmentExportVo> util = new ExcelUtils<>(UrbanInvestmentExportVo.class);
ByteArrayOutputStream ba = util.exportExcel(resultList, "城投平台", title, true);
uploadComponent.upload(title, ba, Constants.SUFFIX_XLSX, Constants.CONTENT_TYPE_XLSX);
return AjaxResult.success();
}
}
......@@ -124,27 +124,11 @@ public class MarketAnalysisService {
public AjaxResult combineRecentlyBid(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/recentlyBid", object);
// if (!ObjectUtils.isEmpty(map.get("data"))) {
// List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data");
// list.parallelStream().forEach(res -> {
// Integer companyId = MapUtils.getInteger(res, "tendereeId");
// String companyName = MapUtils.getString(res, "tenderee");
// res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
// });
// }
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult combineBidByYear(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/bidByYear", object);
if (!ObjectUtils.isEmpty(map.get("data"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data");
list.parallelStream().forEach(res -> {
Integer companyId = MapUtils.getInteger(res, "companyId");
String companyName = MapUtils.getString(res, "companyName");
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
});
}
return BeanUtil.toBean(map, AjaxResult.class);
}
......@@ -155,14 +139,6 @@ public class MarketAnalysisService {
public AjaxResult combineGroupByType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/groupByType", object);
if (!ObjectUtils.isEmpty(map.get("data"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data");
list.parallelStream().forEach(res -> {
Integer companyId = MapUtils.getInteger(res, "companyId");
String companyName = MapUtils.getString(res, "companyName");
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
});
}
return BeanUtil.toBean(map, AjaxResult.class);
}
......@@ -173,14 +149,6 @@ public class MarketAnalysisService {
public AjaxResult combinePeojectTop(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/peojectTop", object);
if (!ObjectUtils.isEmpty(map.get("data"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data");
list.parallelStream().forEach(res -> {
Integer companyId = MapUtils.getInteger(res, "projectUnitId");
String companyName = MapUtils.getString(res, "projectUnit");
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
});
}
return BeanUtil.toBean(map, AjaxResult.class);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.biz.mapper.BusinessBacklogMapper">
<resultMap type="com.dsk.biz.domain.BusinessBacklog" id="BusinessBacklogResult">
<result property="id" column="id"/>
<result property="businessId" column="business_id"/>
<result property="target" column="target"/>
<result property="task" column="task"/>
<result property="finishTime" column="finish_time"/>
<result property="state" column="state"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectBusinessBacklogVo">
select id,
business_id,
target,
task,
finish_time,
due_time,
if(due_time &lt; now() and state = 0, 2 ,state) state,
create_time,
update_time
from business_backlog
</sql>
<select id="selectBusinessBacklogList" parameterType="com.dsk.biz.domain.bo.BusinessBacklogListDto"
resultType="com.dsk.biz.domain.vo.BusinessBacklogListVo">
<include refid="selectBusinessBacklogVo"/>
where business_id = #{dto.businessId}
<if test="dto.state != null "> and state = #{dto.state} </if>
<if test="dto.startTime != null "> and(due_time &gt;= #{dto.startTime} or due_time is null) </if>
<if test="dto.endTime != null "> and due_time &lt;= #{dto.endTime} </if>
ORDER BY create_time DESC
</select>
<select id="selectBusinessBacklogById" resultMap="BusinessBacklogResult">
<include refid="selectBusinessBacklogVo"/>
where id = #{id}
</select>
<insert id="insertBusinessBacklog" parameterType="com.dsk.biz.domain.BusinessBacklog"
useGeneratedKeys="true" keyProperty="id">
insert into business_backlog
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="businessId != null">business_id,</if>
<if test="target != null">target,</if>
<if test="task != null">task,</if>
<if test="dueTime != null">due_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="businessId != null">#{businessId},</if>
<if test="target != null">#{target},</if>
<if test="task != null">#{task},</if>
<if test="dueTime != null">#{dueTime},</if>
</trim>
</insert>
<update id="updateBusinessBacklog" parameterType="com.dsk.biz.domain.BusinessBacklog">
update business_backlog set finish_time = #{finishTime}, state = #{state} where id = #{id}
</update>
<delete id="deleteBusinessBacklogById" parameterType="Long">
delete
from business_backlog
where id = #{id}
</delete>
<delete id="deleteBusinessBacklogByIds" parameterType="String">
delete from business_backlog where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="overdueCount" resultType="java.lang.Integer">
select count(id) from business_backlog where business_id = #{businessId} and due_time &lt; now() and state = 0
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.biz.mapper.BusinessFollowRecordMapper">
<resultMap type="com.dsk.biz.domain.BusinessFollowRecord" id="BusinessFollowRecordResult">
<result property="id" column="id"/>
<result property="businessId" column="business_id"/>
<result property="userId" column="user_id"/>
<result property="visitPerson" column="visit_person"/>
<result property="position" column="position"/>
<result property="visitTime" column="visit_time"/>
<result property="nextVisitTime" column="next_visit_time"/>
<result property="recordInfo" column="record_info"/>
<result property="visitWay" column="visit_way"/>
<result property="creatTime" column="creat_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectBusinessFollowRecordVo">
select id,
business_id,
user_id,
visit_person,
position,
visit_time,
next_visit_time,
record_info,
visit_way,
creat_time,
update_time
from business_follow_record
</sql>
<select id="selectBusinessFollowRecordList" resultType="com.dsk.biz.domain.BusinessFollowRecord">
select f.*,u.nick_name as nickName
from business_follow_record f
left join sys_user u on f.user_id = u.user_id
where f.business_id = #{dto.businessId}
ORDER BY f.creat_time DESC
</select>
<select id="selectBusinessFollowRecordById" parameterType="Long" resultMap="BusinessFollowRecordResult">
<include refid="selectBusinessFollowRecordVo"/>
where id = #{id}
</select>
<select id="businessFollowRecordPaging" resultType="com.dsk.biz.domain.BusinessFollowRecord">
<include refid="selectBusinessFollowRecordVo"></include>
<where>
<if test="businessId != null ">and f.business_id = #{businessId}</if>
<if test="userId != null ">and f.user_id = #{userId}</if>
<if test="visitPerson != null and visitPerson != ''">and f.visit_person = #{visitPerson}</if>
<if test="position != null and position != ''">and f.position = #{position}</if>
<if test="visitTime != null ">and f.visit_time = #{visitTime}</if>
<if test="nextVisitTime != null ">and f.next_visit_time = #{nextVisitTime}</if>
<if test="recordInfo != null and recordInfo != ''">and f.record_info = #{recordInfo}</if>
<if test="visitWay != null and visitWay != ''">and f.visit_way = #{visitWay}</if>
<if test="creatTime != null ">and f.creat_time = #{creatTime}</if>
</where>
ORDER BY creat_time DESC
</select>
<select id="allFollow" resultType="com.dsk.biz.domain.BusinessFollowRecord">
select f.*,
i.project_name as projectName,
i.construction_unit as ownerCompany,
u.nick_name as nickName
from business_follow_record f
left join business_info i on i.id = f.business_id
left join sys_user u on f.user_id = u.user_id
left join sys_dept d on u.dept_id = d.dept_id
<where>
<if test="dto.userId != null"> and (f.user_id = #{dto.userId} or i.is_private = 1)</if>
<if test="dto.startTime != null and dto.startTime != '' "> and f.visit_time &gt;= #{dto.startTime} </if>
<if test="dto.endTime != null and dto.endTime != '' "> and f.visit_time &lt;= #{dto.endTime} </if>
${dto.params.dataScope}
</where>
ORDER BY f.visit_time DESC
</select>
<select id="selectRelateProject" resultType="com.dsk.biz.domain.vo.BusinessListVo">
select i.id,i.project_name as projectName
from business_info i
left join business_user u on u.business_id = i.id
where u.user_id = #{userId}
</select>
<select id="selectRelateCompany" resultType="java.lang.String">
select i.construction_unit
from business_info i
left join business_user u on u.business_id = i.id
where u.user_id = #{userId}
</select>
<insert id="insertBusinessFollowRecord" parameterType="com.dsk.biz.domain.BusinessFollowRecord" useGeneratedKeys="true"
keyProperty="id">
insert into business_follow_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="businessId != null">business_id,</if>
<if test="userId != null">user_id,</if>
<if test="visitPerson != null and visitPerson != ''">visit_person,</if>
<if test="position != null and position != ''">position,</if>
<if test="visitTime != null">visit_time,</if>
<if test="nextVisitTime != null">next_visit_time,</if>
<if test="recordInfo != null">record_info,</if>
<if test="visitWay != null">visit_way,</if>
<if test="creatTime != null">creat_time,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="businessId != null">#{businessId},</if>
<if test="userId != null">#{userId},</if>
<if test="visitPerson != null and visitPerson != ''">#{visitPerson},</if>
<if test="position != null and position != ''">#{position},</if>
<if test="visitTime != null">#{visitTime},</if>
<if test="nextVisitTime != null">#{nextVisitTime},</if>
<if test="recordInfo != null">#{recordInfo},</if>
<if test="visitWay != null">#{visitWay},</if>
<if test="creatTime != null">#{creatTime},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateBusinessFollowRecord" parameterType="com.dsk.biz.domain.BusinessFollowRecord">
update business_follow_record
<trim prefix="SET" suffixOverrides=",">
<if test="businessId != null">business_id = #{businessId},</if>
<if test="userId != null">user_id = #{userId},</if>
<if test="visitPerson != null and visitPerson != ''">visit_person = #{visitPerson},</if>
<if test="position != null and position != ''">position = #{position},</if>
<if test="visitTime != null">visit_time = #{visitTime},</if>
<if test="nextVisitTime != null">next_visit_time = #{nextVisitTime},</if>
<if test="recordInfo != null">record_info = #{recordInfo},</if>
<if test="visitWay != null">visit_way = #{visitWay},</if>
<if test="creatTime != null">creat_time = #{creatTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteBusinessFollowRecordById" parameterType="Long">
delete
from business_follow_record
where id = #{id}
</delete>
<delete id="deleteBusinessFollowRecordByIds" parameterType="String">
delete from business_follow_record where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.biz.mapper.BusinessInfoMapper">
<resultMap type="com.dsk.biz.domain.BusinessInfo" id="BusinessInfoResult">
<result property="id" column="id"/>
<result property="projectName" column="project_name"/>
<result property="investmentAmount" column="investment_amount"/>
<result property="amountSource" column="amount_source"/>
<result property="planBidTime" column="plan_bid_time"/>
<result property="planStartTime" column="plan_start_time"/>
<result property="projectLevel" column="project_level"/>
<result property="projectStage" column="project_stage"/>
<result property="buildProperty" column="build_property"/>
<result property="planCompleteTime" column="plan_complete_time"/>
<result property="projectDetails" column="project_details"/>
<result property="provinceName" column="province_name"/>
<result property="provinceId" column="province_id"/>
<result property="cityName" column="city_name"/>
<result property="cityId" column="city_id"/>
<result property="districtName" column="district_name"/>
<result property="districtId" column="district_id"/>
<result property="projectType" column="project_type"/>
<result property="projectCategory" column="project_category"/>
<result property="isPrivate" column="is_private"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="status" column="status"/>
<result property="evaluationBidWay" column="evaluation_bid_way"/>
<result property="bidOpenTime" column="bid_open_time"/>
<result property="bidOpenPlace" column="bid_open_place"/>
<result property="earnestMoneyPay" column="earnest_money_pay"/>
<result property="earnestMoney" column="earnest_money"/>
<result property="evaluationBidCouncil" column="evaluation_bid_council"/>
<result property="constructionUnit" column="construction_unit"/>
<result property="constructionPrincipal" column="construction_principal"/>
<result property="constructionPhone" column="construction_phone"/>
<result property="supervisorUnit" column="supervisor_unit"/>
<result property="supervisorPrincipal" column="supervisor_principal"/>
<result property="supervisorPhone" column="supervisor_phone"/>
</resultMap>
<sql id="selectBusinessInfoVo">
select id,
project_name,
investment_amount,
amount_source,
plan_bid_time,
plan_start_time,
project_level,
project_stage,
build_property,
plan_complete_time,
project_details,
province_name,
province_id,
city_name,
city_id,
district_name,
district_id,
project_type,
project_category,
is_private,
create_time,
update_time,
status,
customer_id,
evaluation_bid_way,
bid_open_time,
bid_open_place,
earnest_money_pay,
earnest_money,
evaluation_bid_council,
construction_unit,
construction_principal,
construction_phone,
supervisor_unit,
supervisor_principal,
supervisor_phone,
construction_unit_uip_id,
construction_unit_cid
from business_info
</sql>
<select id="selectBusinessInfoList" resultType="com.dsk.biz.domain.vo.BusinessListVo">
SELECT
i.id,
i.project_name projectName,
i.project_type projectType,
i.province_name provinceName,
i.city_name cityName,
i.district_name districtName,
i.investment_amount investmentAmount,
i.construction_unit ownerCompany,
i.construction_unit_uip_id ownerCompanyUipId,
i.construction_unit_cid ownerCompanyCid,
MAX(f.creat_time) followTime,
u.nick_name nickName,
GROUP_CONCAT(DISTINCT l.label) label
FROM business_info i
LEFT JOIN business_user bu on bu.business_id = i.id
LEFT JOIN business_follow_record f on f.business_id = i.id
LEFT JOIN business_label l on l.business_id = i.id
LEFT JOIN sys_user u on u.user_id = bu.user_id
LEFT JOIN sys_dept d on d.dept_id = u.dept_id
<where>
<if test="dto.projectType != null and dto.projectType != ''">
and i.project_type in
<foreach collection="dto.projectType" item="type" open="(" separator="," close=")">
#{type}
</foreach>
</if>
<if test="dto.minAmount != null and dto.minAmount != ''"> and i.investment_amount &gt;= #{dto.minAmount} </if>
<if test="dto.maxAmount != null and dto.maxAmount != ''"> and i.investment_amount &lt;= #{dto.maxAmount}</if>
<if test="dto.status != null "> and i.status = #{dto.status}</if>
<if test="dto.projectStage != null and dto.projectStage != ''">
and i.project_stage in
<foreach collection="dto.projectStage" item="projectStage" open="(" separator="," close=")">
#{projectStage}
</foreach>
</if>
<if test="dto.projectName != null and dto.projectName != ''">
and ( i.project_name like concat('%',#{dto.projectName},'%')
or i.construction_unit like concat('%',#{dto.projectName},'%') )
</if>
<if test="dto.provinceId != null and dto.provinceId.size > 0 ">
and i.province_id in
<foreach collection="dto.provinceId" item="provinceId" open="(" separator="," close=")">
#{provinceId}
</foreach>
</if>
<if test="dto.cityId != null and dto.cityId.size > 0 ">
and i.city_id in
<foreach collection="dto.cityId" item="cityId" open="(" separator="," close=")">
#{cityId}
</foreach>
</if>
<if test="dto.districtId != null and dto.districtId.size > 0">
and i.district_id in
<foreach collection="dto.districtId" item="districtId" open="(" separator="," close=")">
#{districtId}
</foreach>
</if>
<choose>
<when test="dto.isPrivate == 1"> and bu.user_id = #{dto.userId} </when>
<!-- 数据范围过滤 -->
<otherwise> and (bu.user_id = #{dto.userId} or i.is_private = 1) ${dto.params.dataScope} </otherwise>
</choose>
</where>
GROUP BY i.id
ORDER BY i.create_time DESC
</select>
<select id="selectProjectName" resultType="com.dsk.biz.domain.vo.BusinessLikeProjectNameListVo">
SELECT
project_name, investment_amount, project_level, project_stage, project_type,
project_category, status
FROM business_info
where project_name like concat('%',#{projectName},'%')
order by project_name desc
limit 20
</select>
<select id="selectBusinessInfoById" parameterType="integer" resultMap="BusinessInfoResult">
<include refid="selectBusinessInfoVo"/>
where id = #{id}
</select>
<select id="selectTotal" resultType="com.dsk.biz.domain.vo.BusinessBrowseVo">
SELECT
count(DISTINCT ci.id) contactsCount,
count(DISTINCT f.id) followRecordCount,
count(DISTINCT b.id) backlogCount,
count(DISTINCT r.id) relateCompanyCount
FROM
business_info i
LEFT JOIN contact_info ci on ci.business_id = i.id
LEFT JOIN business_follow_record f on f.business_id = i.id
LEFT JOIN business_backlog b on b.business_id = i.id
LEFT JOIN business_relate_company r on r.business_id = i.id
WHERE i.id = #{business}
</select>
<insert id="insertBusinessInfo" parameterType="com.dsk.biz.domain.BusinessInfo" useGeneratedKeys="true" keyProperty="id">
insert into business_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="projectName != null">project_name,</if>
<if test="investmentAmount != null">investment_amount,</if>
<if test="amountSource != null">amount_source,</if>
<if test="planBidTime != null">plan_bid_time,</if>
<if test="planStartTime != null">plan_start_time,</if>
<if test="projectLevel != null">project_level,</if>
<if test="projectStage != null">project_stage,</if>
<if test="buildProperty != null">build_property,</if>
<if test="planCompleteTime != null">plan_complete_time,</if>
<if test="projectDetails != null">project_details,</if>
<if test="provinceName != null">province_name,</if>
<if test="provinceId != null">province_id,</if>
<if test="cityName != null">city_name,</if>
<if test="cityId != null">city_id,</if>
<if test="districtName != null">district_name,</if>
<if test="districtId != null">district_id,</if>
<if test="projectType != null">project_type,</if>
<if test="projectCategory != null">project_category,</if>
<if test="isPrivate != null">is_private,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="status != null">status,</if>
<if test="customerId != null">customer_id,</if>
<if test="evaluationBidWay != null">evaluation_bid_way,</if>
<if test="bidOpenTime != null">bid_open_time,</if>
<if test="bidOpenPlace != null">bid_open_place,</if>
<if test="earnestMoneyPay != null">earnest_money_pay,</if>
<if test="earnestMoney != null">earnest_money,</if>
<if test="evaluationBidCouncil != null">evaluation_bid_council,</if>
<if test="constructionUnit != null">construction_unit,</if>
<if test="constructionPrincipal != null">construction_principal,</if>
<if test="constructionPhone != null">construction_phone,</if>
<if test="supervisorUnit != null">supervisor_unit,</if>
<if test="supervisorPrincipal != null">supervisor_principal,</if>
<if test="supervisorPhone != null">supervisor_phone,</if>
<if test="constructionUnitUipId != null">construction_unit_uip_id,</if>
<if test="constructionUnitCid != null">construction_unit_cid,</if>
tenant_id
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectName != null">#{projectName},</if>
<if test="investmentAmount != null">#{investmentAmount},</if>
<if test="amountSource != null">#{amountSource},</if>
<if test="planBidTime != null">#{planBidTime},</if>
<if test="planStartTime != null">#{planStartTime},</if>
<if test="projectLevel != null">#{projectLevel},</if>
<if test="projectStage != null">#{projectStage},</if>
<if test="buildProperty != null">#{buildProperty},</if>
<if test="planCompleteTime != null">#{planCompleteTime},</if>
<if test="projectDetails != null">#{projectDetails},</if>
<if test="provinceName != null">#{provinceName},</if>
<if test="provinceId != null">#{provinceId},</if>
<if test="cityName != null">#{cityName},</if>
<if test="cityId != null">#{cityId},</if>
<if test="districtName != null">#{districtName},</if>
<if test="districtId != null">#{districtId},</if>
<if test="projectType != null">#{projectType},</if>
<if test="projectCategory != null">#{projectCategory},</if>
<if test="isPrivate != null">#{isPrivate},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="status != null">#{status},</if>
<if test="customerId != null">#{customerId},</if>
<if test="evaluationBidWay != null">#{evaluationBidWay},</if>
<if test="bidOpenTime != null">#{bidOpenTime},</if>
<if test="bidOpenPlace != null">#{bidOpenPlace},</if>
<if test="earnestMoneyPay != null">#{earnestMoneyPay},</if>
<if test="earnestMoney != null">#{earnestMoney},</if>
<if test="evaluationBidCouncil != null">#{evaluationBidCouncil},</if>
<if test="constructionUnit != null">#{constructionUnit},</if>
<if test="constructionPrincipal != null">#{constructionPrincipal},</if>
<if test="constructionPhone != null">#{constructionPhone},</if>
<if test="supervisorUnit != null">#{supervisorUnit},</if>
<if test="supervisorPrincipal != null">#{supervisorPrincipal},</if>
<if test="supervisorPhone != null">#{supervisorPhone},</if>
<if test="constructionUnitUipId != null">#{constructionUnitUipId},</if>
<if test="constructionUnitCid != null">#{constructionUnitCid},</if>
#{tenantId}
</trim>
</insert>
<update id="updateBusinessInfo" parameterType="com.dsk.biz.domain.BusinessInfo">
update business_info
<trim prefix="SET" suffixOverrides=",">
<if test="projectName != null">project_name = #{projectName},</if>
<if test="investmentAmount != null">investment_amount = #{investmentAmount},</if>
<if test="amountSource != null">amount_source = #{amountSource},</if>
<if test="planBidTime != null">plan_bid_time = #{planBidTime},</if>
<if test="planStartTime != null">plan_start_time = #{planStartTime},</if>
<if test="projectLevel != null">project_level = #{projectLevel},</if>
<if test="projectStage != null">project_stage = #{projectStage},</if>
<if test="buildProperty != null">build_property = #{buildProperty},</if>
<if test="planCompleteTime != null">plan_complete_time = #{planCompleteTime},</if>
<if test="projectDetails != null">project_details = #{projectDetails},</if>
province_name = #{provinceName},
province_id = #{provinceId},
city_name = #{cityName},
city_id = #{cityId},
district_name = #{districtName},
district_id = #{districtId},
construction_unit_uip_id = #{constructionUnitUipId},
construction_unit_cid = #{constructionUnitCid},
<if test="projectType != null">project_type = #{projectType},</if>
<if test="projectCategory != null">project_category = #{projectCategory},</if>
<if test="isPrivate != null">is_private = #{isPrivate},</if>
<if test="status != null">status = #{status},</if>
<if test="customerId != null">customer_id = #{customerId},</if>
<if test="evaluationBidWay != null">evaluation_bid_way = #{evaluationBidWay},</if>
<if test="bidOpenTime != null">bid_open_time = #{bidOpenTime},</if>
<if test="bidOpenPlace != null">bid_open_place = #{bidOpenPlace},</if>
<if test="earnestMoneyPay != null">earnest_money_pay = #{earnestMoneyPay},</if>
<if test="earnestMoney != null">earnest_money = #{earnestMoney},</if>
<if test="evaluationBidCouncil != null">evaluation_bid_council = #{evaluationBidCouncil},</if>
<if test="constructionUnit != null">construction_unit = #{constructionUnit},</if>
<if test="constructionPrincipal != null">construction_principal = #{constructionPrincipal},</if>
<if test="constructionPhone != null">construction_phone = #{constructionPhone},</if>
<if test="supervisorUnit != null">supervisor_unit = #{supervisorUnit},</if>
<if test="supervisorPrincipal != null">supervisor_principal = #{supervisorPrincipal},</if>
<if test="supervisorPhone != null">supervisor_phone = #{supervisorPhone},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteBusinessInfoById" parameterType="Long">
delete
from business_info
where id = #{id}
</delete>
<delete id="deleteBusinessInfoByIds" parameterType="Long">
delete i,b,f,l,r,u
from business_info i
left join business_backlog b on b.business_id = i.id
left join business_follow_record f on f.business_id = i.id
left join business_label l on l.business_id = i.id
left join business_relate_company r on r.business_id = i.id
left join business_user u on u.business_id = i.id
where i.id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="selectCountByStatusAndCustomerId" resultType="java.lang.Integer">
select count(id) from business_info
<where>
<if test="status != null "> and `status` = #{status} </if>
<if test="customerId != null and customerId != ''"> and `customer_id` = #{customerId} </if>
</where>
</select>
<select id="selectCustomerBusinessList" resultType="com.dsk.biz.domain.vo.CustomerBusinessListVo">
select
bi.id, bi.project_name, bi.investment_amount, bi.project_stage, bi.status
from business_info bi
left join business_user bu on bi.id = bu.business_id
where bi.customer_id = #{dto.customerId} and (bu.user_id = #{dto.userId} or bi.is_private = 1)
<if test="dto.projectName != null and dto.projectName != '' "> and bi.project_name like concat('%',#{dto.projectName},'%') </if>
<if test="dto.projectStage != null and dto.projectStage != '' "> and bi.project_stage = #{dto.projectStage}</if>
<if test="dto.status != null "> and bi.status = #{dto.status}</if>
order by bi.create_time desc
</select>
<select id="getConstruction" resultType="com.dsk.biz.domain.BusinessInfo">
select
investment_amount,
amount_source,
plan_bid_time,
plan_start_time,
plan_complete_time,
build_property,
project_details,
evaluation_bid_way,
bid_open_time,
bid_open_place,
earnest_money_pay,
earnest_money,
evaluation_bid_council
from business_info
where id = #{id}
</select>
<select id="isRepetitionProjectName" resultType="java.lang.Integer">
select count(i.id)
from business_info i
join business_user u on u.business_id = i.id
left join customer ct on ct.customer_id = i.customer_id
where i.project_name = #{projectName}
and u.user_id = #{userId}
<if test="companyName != null and companyName != '' "> and ct.company_name =#{companyName}</if>
</select>
<sql id="businessSearchSql">
from business_info bi
join business_user bu on bu.business_id = bi.id
left join sys_user u on bu.user_id = u.user_id
left join sys_dept d on u.dept_id = d.dept_id
where (bu.user_id = #{userId} or bi.is_private = 1)
<if test="status != null"> and bi.status = #{status} </if>
${params.dataScope}
</sql>
<select id="selectCountByStatus" resultType="java.lang.Integer">
select count(bi.id) <include refid="businessSearchSql"/>
</select>
<select id="selectAmountAnalyze" resultType="com.dsk.biz.domain.vo.BusinessAnalyzeVo">
select
bi.amount_source,count(bi.id) businessCount, ROUND(sum(bi.investment_amount), 4) totalAmount
<include refid="businessSearchSql"/>
and bi.amount_source is not null
group by bi.amount_source
having businessCount > 0
</select>
<select id="selectTypeAnalyze" resultType="com.dsk.biz.domain.vo.BusinessAnalyzeVo">
select
bi.project_type,count(bi.id) businessCount, ROUND(sum(bi.investment_amount), 4) totalAmount
<include refid="businessSearchSql"/>
and bi.project_type is not null
group by bi.project_type
<if test="status != null and status == 0 "> order by businessCount desc </if>
<if test="status != null and status == 2 "> order by totalAmount desc </if>
</select>
<select id="selectCategoryAnalyze" resultType="com.dsk.biz.domain.vo.BusinessAnalyzeVo">
select
bi.project_category,count(bi.id) businessCount, ROUND(sum(bi.investment_amount), 4) totalAmount
<include refid="businessSearchSql"/>
and bi.project_category is not null
group by bi.project_category
<if test="status != null and status == 0 "> order by businessCount desc </if>
<if test="status != null and status == 2 "> order by totalAmount desc </if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.biz.mapper.BusinessLabelMapper">
<resultMap type="com.dsk.biz.domain.BusinessLabel" id="BusinessLabelResult">
<result property="id" column="id"/>
<result property="businessId" column="business_id"/>
<result property="label" column="label"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectBusinessLabelVo">
select id, business_id, label, create_time, update_time
from business_label
</sql>
<select id="selectBusinessLabelList" parameterType="com.dsk.biz.domain.BusinessLabel"
resultMap="BusinessLabelResult">
<include refid="selectBusinessLabelVo"/>
<where>
<if test="businessId != null ">and business_id = #{businessId}</if>
<if test="label != null and label != ''">and label = #{label}</if>
</where>
</select>
<select id="selectBusinessLabelById" parameterType="Long" resultMap="BusinessLabelResult">
<include refid="selectBusinessLabelVo"/>
where id = #{id}
</select>
<insert id="insertBusinessLabel" parameterType="com.dsk.biz.domain.BusinessLabel"
useGeneratedKeys="true" keyProperty="id">
insert into business_label
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="businessId != null">business_id,</if>
<if test="label != null">label,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="businessId != null">#{businessId},</if>
<if test="label != null">#{label},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateBusinessLabel" parameterType="com.dsk.biz.domain.BusinessLabel">
update business_label
<trim prefix="SET" suffixOverrides=",">
<if test="businessId != null">business_id = #{businessId},</if>
<if test="label != null">label = #{label},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteBusinessLabelById">
delete
from business_label
where id = #{labelId}
</delete>
<delete id="deleteBusinessLabelByIds" parameterType="String">
delete from business_label where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.biz.mapper.BusinessRelateCompanyMapper">
<resultMap type="com.dsk.biz.domain.BusinessRelateCompany" id="BusinessRelateCompanyResult">
<result property="id" column="id"/>
<result property="businessId" column="business_id"/>
<result property="companyId" column="company_id"/>
<result property="companyName" column="company_name"/>
<result property="companyRole" column="company_role"/>
<result property="responsiblePerson" column="responsible_person"/>
<result property="phone" column="phone"/>
<result property="isProprietor" column="is_proprietor"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="depth" column="depth"/>
<result property="companyUipId" column="company_uip_id"/>
</resultMap>
<sql id="selectBusinessRelateCompanyVo">
select id,
business_id,
company_id,
company_name,
company_role,
responsible_person,
phone,
depth,
is_proprietor,
remark,
create_time,
update_time,
company_uip_id
from business_relate_company
</sql>
<select id="selectBusinessRelateCompanyList" parameterType="com.dsk.biz.domain.BusinessRelateCompany"
resultMap="BusinessRelateCompanyResult">
<include refid="selectBusinessRelateCompanyVo"/>
<where>
<if test="bo.businessId != null ">and business_id = #{bo.businessId}</if>
<if test="bo.companyId != null ">and company_id = #{bo.companyId}</if>
<if test="bo.companyName != null and bo.companyName != ''">and company_name like concat('%', #{bo.companyName},
'%')
</if>
<if test="bo.companyRole != null and bo.companyRole != ''">and company_role = #{bo.companyRole}</if>
<if test="bo.depth != null and bo.depth != ''">and depth = #{bo.depth}</if>
<if test="bo.responsiblePerson != null and bo.responsiblePerson != ''">and responsible_person = #{bo.responsiblePerson} </if>
<if test="bo.phone != null and bo.phone != ''">and phone = #{bo.phone}</if>
</where>
</select>
<select id="selectBusinessRelateCompanyById" parameterType="Long" resultMap="BusinessRelateCompanyResult">
<include refid="selectBusinessRelateCompanyVo"/>
where id = #{id}
</select>
<insert id="insertBusinessRelateCompany" parameterType="com.dsk.biz.domain.BusinessRelateCompany" useGeneratedKeys="true"
keyProperty="id">
insert into business_relate_company
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="businessId != null">business_id,</if>
<if test="companyId != null">company_id,</if>
<if test="companyName != null">company_name,</if>
<if test="depth != null">depth,</if>
<if test="companyRole != null">company_role,</if>
<if test="responsiblePerson != null">responsible_person,</if>
<if test="phone != null">phone,</if>
<if test="isProprietor != null">is_proprietor,</if>
<if test="remark != null and remark != '' ">remark,</if>
<if test="companyUipId != null">company_uip_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="businessId != null">#{businessId},</if>
<if test="companyId != null">#{companyId},</if>
<if test="companyName != null">#{companyName},</if>
<if test="depth != null">#{depth},</if>
<if test="companyRole != null">#{companyRole},</if>
<if test="responsiblePerson != null">#{responsiblePerson},</if>
<if test="phone != null">#{phone},</if>
<if test="isProprietor != null">#{isProprietor},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="companyUipId != null">#{companyUipId},</if>
</trim>
</insert>
<update id="updateBusinessRelateCompany" parameterType="com.dsk.biz.domain.BusinessRelateCompany">
update business_relate_company
<set>
<if test="companyId != null">company_id = #{companyId},</if>
<if test="companyUipId != null">company_uip_id = #{companyUipId},</if>
<if test="companyName != null">company_name = #{companyName},</if>
<if test="depth != null">depth = #{depth},</if>
<if test="companyRole != null">company_role = #{companyRole},</if>
<if test="responsiblePerson != null">responsible_person = #{responsiblePerson},</if>
<if test="phone != null">phone = #{phone},</if>
<if test="remark != null">remark = #{remark},</if>
</set>
where id = #{id}
</update>
<delete id="deleteBusinessRelateCompanyById" parameterType="Long">
delete
from business_relate_company
where id = #{id}
</delete>
<delete id="deleteBusinessRelateCompanyByIds" parameterType="String">
delete from business_relate_company where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="selectByProprietor" resultType="com.dsk.biz.domain.BusinessRelateCompany">
<include refid="selectBusinessRelateCompanyVo"/>
where business_id = #{businessId} and is_proprietor = 1
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.biz.mapper.BusinessUserMapper">
<resultMap type="com.dsk.biz.domain.BusinessUser" id="BusinessUserResult">
<result property="id" column="id"/>
<result property="businessId" column="business_id"/>
<result property="deptId" column="dept_id"/>
<result property="userId" column="user_id"/>
<result property="isFounder" column="is_founder"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectBusinessUserVo">
select id, business_id, dept_id, user_id, is_founder, create_time, update_time
from business_user
</sql>
<select id="selectBusinessUserList" parameterType="com.dsk.biz.domain.BusinessUser" resultMap="BusinessUserResult">
<include refid="selectBusinessUserVo"/>
<where>
<if test="businessId != null ">and business_id = #{businessId}</if>
<if test="deptId != null ">and company_id = #{deptId}</if>
<if test="userId != null ">and user_id = #{userId}</if>
<if test="isFounder != null ">and is_founder = #{isFounder}</if>
</where>
</select>
<select id="selectBusinessUserById" parameterType="Long" resultMap="BusinessUserResult">
<include refid="selectBusinessUserVo"/>
where id = #{id}
</select>
<select id="selectCreatorByBusinessId" resultType="java.lang.String">
select u.nick_name
from business_user bu
left join business_info i on i.id = bu.business_id
left join sys_user u on u.user_id = bu.user_id
where bu.is_founder = 1
and i.id = #{BusinessId}
</select>
<select id="selectFounder" resultType="java.lang.Integer">
select is_founder
from business_user
where business_id = #{businessId}
and user_id = #{userId}
</select>
<insert id="insertBusinessUser" parameterType="com.dsk.biz.domain.BusinessUser" useGeneratedKeys="true" keyProperty="id">
insert into business_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="businessId != null">business_id,</if>
<if test="deptId != null">dept_id,</if>
<if test="userId != null">user_id,</if>
<if test="isFounder != null">is_founder,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="businessId != null">#{businessId},</if>
<if test="deptId != null">#{deptId},</if>
<if test="userId != null">#{userId},</if>
<if test="isFounder != null">#{isFounder},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateBusinessUser" parameterType="com.dsk.biz.domain.BusinessUser">
update business_user
<trim prefix="SET" suffixOverrides=",">
<if test="businessId != null">business_id = #{businessId},</if>
<if test="deptId != null">dept_id = #{deptId},</if>
<if test="userId != null">user_id = #{userId},</if>
<if test="isFounder != null">is_founder = #{isFounder},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteBusinessUserById" parameterType="Long">
delete
from business_user
where id = #{id}
</delete>
<delete id="deleteBusinessUserByIds" parameterType="String">
delete from business_user where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.biz.mapper.ContactInfoMapper">
<select id="selectPageList" resultType="com.dsk.biz.domain.vo.ContactInfoListVo">
select
cc.id, cc.customer_id, cc.business_id, bi.project_name, cc.name, cc.sex, cc.role,
cc.position, cc.contact_information, cc.company_id, cc.uip_id, cc.company_name, cc.remark,
cc.update_by
from contact_info cc
left join business_info bi on cc.business_id = bi.id
<where>
<if test="dto.customerId != null and dto.customerId !='' "> and (cc.customer_id = #{dto.customerId} or bi.customer_id = #{dto.customerId})</if>
<if test="dto.businessId != null "> and cc.business_id = #{dto.businessId} </if>
</where>
order by cc.create_time desc
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.biz.mapper.CustomerFollowRecordMapper">
<sql id="Base_Bean">
cfr.id, cfr.customer_id, cfr.user_id, cfr.visit_mode, cfr.visit_time, cfr.next_visit_time, cfr.name, cfr.position,
cfr.content, cfr.create_time
</sql>
<select id="selectAuthList" resultType="com.dsk.biz.domain.vo.CustomerFollowRecordListVo">
select
ct.company_id, ct.uip_id, ct.company_name, u.nick_name,
<include refid="Base_Bean"></include>
from customer_follow_record cfr
join customer ct on ct.customer_id = cfr.customer_id
join sys_user u on u.user_id = cfr.user_id
left join sys_dept d on d.dept_id = u.dept_id
<where>
<if test="dto.userId != null "> and cfr.user_id = #{dto.userId} </if>
<if test="dto.customerId != null and dto.customerId != '' "> and cfr.customer_id = #{dto.customerId} </if>
<if test="dto.startTime != null and dto.startTime != '' "> and cfr.visit_time &gt;= #{dto.startTime} </if>
<if test="dto.endTime != null and dto.endTime != '' "> and cfr.visit_time &lt;= #{dto.endTime} </if>
<!-- 数据范围过滤 -->
<if test="dto.params.dataScope != null and dto.params.dataScope != '' "> ${dto.params.dataScope}</if>
</where>
order by cfr.visit_time desc
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.biz.mapper.CustomerMapper">
<sql id="Base_Bean">
ct.customer_id, ct.company_id, ct.uip_id, ct.company_name, ct.legal_person, ct.credit_code, ct.register_capital,
ct.province_id, ct.city_id, ct.district_id, ct.register_address, ct.company_nature, ct.company_level,
ct.credit_level, ct.super_company, ct.is_on, ct.is_major, ct.company_attribute, ct.main_business,
ct.business_scope, ct.customer_level, ct.business_characteristic, ct.decision_chain, ct.bid_characteristic,
ct.performance_characteristic, ct.other_ms_characteistic, ct.create_id, ct.create_time, ct.update_id, ct.update_time
</sql>
<select id="selectList" resultType="com.dsk.biz.domain.vo.CustomerListVo">
select
u.nick_name followUser, bi1.num reserveProject, bi2.num followProject, bi3.num cooperationProject,
<include refid="Base_Bean"></include>
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
join sys_user u on ctu.user_id = u.user_id
left join (
select count(status) num,customer_id from business_info where `status` = 0 group by customer_id
) bi1 on bi1.customer_id = ct.customer_id
left join (
select count(status) num,customer_id from business_info where `status` = 1 group by customer_id
) bi2 on bi2.customer_id = ct.customer_id
left join (
select count(status) num,customer_id from business_info where `status` = 2 group by customer_id
) bi3 on bi3.customer_id = ct.customer_id
where ctu.user_id = #{dto.userId} and ctu.status = #{dto.status}
<if test="dto.companyName != null and dto.companyName != '' "> and ct.company_name like concat('%',#{dto.companyName},'%')</if>
<if test="dto.isOn != null "> and ct.is_on = #{dto.isOn}</if>
<if test="dto.provinceIds != null and dto.provinceIds.size > 0 ">
and ct.province_id in
<foreach collection="dto.provinceIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.cityIds != null and dto.cityIds.size > 0 ">
and ct.city_id in
<foreach collection="dto.cityIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.districtIds != null and dto.districtIds.size > 0 ">
and ct.district_id in
<foreach collection="dto.districtIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.companyNatures != null and dto.companyNatures.size > 0 ">
and ct.company_nature in
<foreach collection="dto.companyNatures" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.creditLevels != null and dto.creditLevels.size > 0 ">
and ct.credit_level in
<foreach collection="dto.creditLevels" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
order by ct.create_time desc
</select>
<select id="selectUserList" resultType="com.dsk.biz.domain.Customer">
select
ct.customer_id, ct.company_name
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId}
</select>
<select id="selectByCompanyNameAndUserId" resultType="com.dsk.biz.domain.Customer">
select
<include refid="Base_Bean"></include>
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ct.company_name = #{companyName} and ctu.user_id = #{userId}
</select>
<select id="selectStatusList" resultType="com.dsk.biz.domain.vo.CustomerStatusListVo">
select
ct.customer_id, ct.uip_id
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId} and ctu.status = 0 and ct.uip_id in
<foreach collection="uipIds" item="uipId" open="(" separator="," close=")">
#{uipId}
</foreach>
</select>
<select id="selectStatusListByCompanyName" resultType="com.dsk.biz.domain.vo.CustomerStatusListVo">
select
ct.customer_id, ct.company_name, ctu.status
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId} and ct.company_name in
<foreach collection="companyNames" item="companyName" open="(" separator="," close=")">
#{companyName}
</foreach>
</select>
<select id="selectCustomerCount" resultType="java.lang.Integer">
select
count(ct.customer_id)
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.status = 0 and ctu.user_id = #{userId}
<if test="companyNature != null and companyNature != ''"> and ct.company_nature = #{companyNature} </if>
</select>
<select id="selectCooperationTop" resultType="com.dsk.biz.domain.vo.CustomerAnalyzeVo">
select
ct.customer_id, ct.company_name, ct.company_id, ct.uip_id, count(bi.id) businessCount,
ROUND(sum(bi.investment_amount), 4) totalAmount
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
left join business_info bi on (bi.customer_id = ct.customer_id and bi.status = 2)
where ctu.status = 0 and ctu.user_id = #{userId}
group by ct.customer_id
having businessCount > 0
order by totalAmount desc
limit 10
</select>
<select id="selectCreditLevelGroup" resultType="java.util.Map">
select ct.* from (
select
ct.credit_level creditLevel, count(ct.customer_id) customerCount
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.status = 0 and ctu.user_id = #{userId} and ct.credit_level is not null
group by ct.credit_level
) ct
left join sys_dict_data sdd on (sdd.dict_label = ct.creditLevel and sdd.dict_type = 'credit_level_type')
order by sdd.dict_sort asc
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.biz.mapper.CustomerUserMapper">
<select id="selectByCustomerIdAndUserId" resultType="com.dsk.biz.domain.CustomerUser">
select
id, customer_id, user_id, status, create_time, update_time
from customer_user
where customer_id = #{customerId} and user_id = #{userId}
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment