Commit 3d6a45f8 authored by yht15023815643's avatar yht15023815643

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

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents d2733daa 6eec02b7
...@@ -71,6 +71,16 @@ public class SysConfigController extends BaseController { ...@@ -71,6 +71,16 @@ public class SysConfigController extends BaseController {
*/ */
@GetMapping(value = "/configKey/{configKey}") @GetMapping(value = "/configKey/{configKey}")
public R<Void> getConfigKey(@PathVariable String configKey) { public R<Void> getConfigKey(@PathVariable String configKey) {
return R.ok(configService.selectConfigValueByKey(configKey));
}
/**
* 根据参数键名查询参数值
*
* @param configKey 参数Key
*/
@GetMapping(value = "/key/{configKey}")
public R<SysConfig> getConfig(@PathVariable String configKey) {
return R.ok(configService.selectConfigByKey(configKey)); return R.ok(configService.selectConfigByKey(configKey));
} }
...@@ -161,4 +171,13 @@ public class SysConfigController extends BaseController { ...@@ -161,4 +171,13 @@ public class SysConfigController extends BaseController {
DskAccessTokenVO dskAccessTokenVO = configService.getDskAccessToken(); DskAccessTokenVO dskAccessTokenVO = configService.getDskAccessToken();
return R.ok(dskAccessTokenVO); return R.ok(dskAccessTokenVO);
} }
/**
* 根据键修改值
*/
@PutMapping(value = "/updateValue")
public R<Void> updateByConfigKey(@RequestBody SysConfig config) {
configService.updateByConfigKey(config);
return R.ok();
}
} }
package com.dsk.web.controller.system;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.SysPush;
import com.dsk.system.service.ISysPushService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 系统推送(SysPush)表控制层
*
* @author lcl
* @since 2023-12-14 10:09:24
*/
@RestController
@RequestMapping("sysPush")
public class SysPushController extends BaseController {
/**
* 服务对象
*/
@Autowired
private ISysPushService baseService;
/**
* 推送分页列表
*/
@GetMapping("/pageList")
public TableDataInfo<SysPush> pageList(SysPush bean, PageQuery query) {
return baseService.pageList(bean, query);
}
/**
* 添加推送人
*/
@PostMapping
public R<Void> add(@RequestBody SysPush bean) {
return toAjax(baseService.save(bean));
}
/**
* 修改推送状态
*/
@PutMapping("/updateStatus")
public R<Void> updateStatus(@RequestBody SysPush bean) {
return toAjax(baseService.update(Wrappers.<SysPush>lambdaUpdate()
.set(SysPush::getStatus, bean.getStatus()).eq(SysPush::getId, bean.getId())));
}
/**
* 删除推送人
*/
@DeleteMapping("/{id}")
public R<Void> del(@PathVariable Long id) {
return toAjax(baseService.removeById(id));
}
}
...@@ -9,6 +9,7 @@ import cn.hutool.core.lang.tree.Tree; ...@@ -9,6 +9,7 @@ import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.annotation.Log; import com.dsk.common.annotation.Log;
import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.constant.GlobalConstants; import com.dsk.common.constant.GlobalConstants;
import com.dsk.common.constant.TenantConstants; import com.dsk.common.constant.TenantConstants;
import com.dsk.common.core.controller.BaseController; import com.dsk.common.core.controller.BaseController;
...@@ -187,6 +188,7 @@ public class SysUserController extends BaseController { ...@@ -187,6 +188,7 @@ public class SysUserController extends BaseController {
/** /**
* 新增用户 * 新增用户
*/ */
@RepeatSubmit
@SaCheckPermission("system:user:add") @SaCheckPermission("system:user:add")
@Log(title = "用户管理", businessType = BusinessType.INSERT) @Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
......
package com.dsk.web.schedule; package com.dsk.web.schedule;
import com.dsk.common.tenant.helper.TenantHelper; import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.cscec.service.AdvisoryBodyService;
import com.dsk.system.service.ISysTenantService; import com.dsk.system.service.ISysTenantService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -19,9 +20,10 @@ import org.springframework.stereotype.Component; ...@@ -19,9 +20,10 @@ import org.springframework.stereotype.Component;
public class TenantTimerTask { public class TenantTimerTask {
private final ISysTenantService tenantService; private final ISysTenantService tenantService;
private final AdvisoryBodyService advisoryBodyService;
/** /**
* 每6小时扫描并禁用已过期租户账号 * 每10分钟扫描并禁用已过期租户账号
*/ */
@Scheduled(cron = "0 0/10 * * * ? ") @Scheduled(cron = "0 0/10 * * * ? ")
public void updateExpiredTenantStatus() { public void updateExpiredTenantStatus() {
...@@ -29,4 +31,13 @@ public class TenantTimerTask { ...@@ -29,4 +31,13 @@ public class TenantTimerTask {
TenantHelper.ignore(tenantService::handleExpiredTenant); TenantHelper.ignore(tenantService::handleExpiredTenant);
} }
/**
* 每小时更新一次咨询机构经营范围
*/
@Scheduled(cron = "0 0 * 1/1 * ? ")
public void updateAdvisoryBodyBusinessScope() {
log.info("执行定时更新咨询机构经营范围(1h/次)");
TenantHelper.ignore(advisoryBodyService::updateAdvisoryBodyBusinessScope);
}
} }
\ No newline at end of file
...@@ -187,7 +187,7 @@ sms: ...@@ -187,7 +187,7 @@ sms:
territory: ap-guangzhou territory: ap-guangzhou
dsk: dsk:
exportBackUrl: http://47.104.91.229:9099/prod-api/export/backUrl exportBackUrl: http://111.204.34.146:9099/prod-api/export/backUrl
sa-token: sa-token:
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
......
...@@ -187,7 +187,7 @@ sms: ...@@ -187,7 +187,7 @@ sms:
territory: ap-guangzhou territory: ap-guangzhou
dsk: dsk:
exportBackUrl: http://47.104.91.229:9099/prod-api/export/backUrl exportBackUrl: http://111.204.34.146:9099/prod-api/export/backUrl
sa-token: sa-token:
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
......
...@@ -166,6 +166,8 @@ tenant: ...@@ -166,6 +166,8 @@ tenant:
- d_customer - d_customer
- d_project - d_project
- d_subcontract - d_subcontract
- advisory_body
- advisory_body_project
- dim_area - dim_area
- biz_dict_data - biz_dict_data
......
...@@ -82,5 +82,7 @@ public interface Constants { ...@@ -82,5 +82,7 @@ public interface Constants {
String CONTENT_TYPE_XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; String CONTENT_TYPE_XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
String STATUTORY_HOLIDAY_ADDR = "https://timor.tech/api/holiday/year/";
} }
...@@ -24,6 +24,11 @@ public class TableDataInfo<T> implements Serializable { ...@@ -24,6 +24,11 @@ public class TableDataInfo<T> implements Serializable {
*/ */
private long total; private long total;
/**
* 当前页
*/
private long currentPage;
/** /**
* 列表数据 * 列表数据
*/ */
...@@ -39,6 +44,11 @@ public class TableDataInfo<T> implements Serializable { ...@@ -39,6 +44,11 @@ public class TableDataInfo<T> implements Serializable {
*/ */
private String msg; private String msg;
/**
* object
*/
private Object object;
/** /**
* 分页 * 分页
* *
...@@ -52,12 +62,27 @@ public class TableDataInfo<T> implements Serializable { ...@@ -52,12 +62,27 @@ public class TableDataInfo<T> implements Serializable {
this.msg = "查询成功"; this.msg = "查询成功";
} }
/**
* 分页
*
* @param list 列表数据
* @param total 总记录数
*/
public TableDataInfo(List<T> list, long total, Object object) {
this.rows = list;
this.object = object;
this.total = total;
this.code = HttpStatus.HTTP_OK;
this.msg = "查询成功";
}
public static <T> TableDataInfo<T> build(IPage<T> page) { public static <T> TableDataInfo<T> build(IPage<T> page) {
TableDataInfo<T> rspData = new TableDataInfo<>(); TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK); rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查询成功"); rspData.setMsg("查询成功");
rspData.setRows(page.getRecords()); rspData.setRows(page.getRecords());
rspData.setTotal(page.getTotal()); rspData.setTotal(page.getTotal());
rspData.setCurrentPage(page.getCurrent());
return rspData; return rspData;
} }
......
package com.dsk.cscec.controller;
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.cscec.domain.bo.*;
import com.dsk.cscec.domain.vo.*;
import com.dsk.cscec.service.AdvisoryBodyProjectService;
import com.dsk.cscec.service.AdvisoryBodyService;
import com.dsk.cscec.service.IDProjectService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
/**
* 咨询机构管理控制层
*
* @author sxk
* @since 2023-12-10 15:34:46
*/
@Validated
@RestController
@RequestMapping("advisory/body")
public class AdvisoryBodyManageController extends BaseController {
@Resource
private IDProjectService baseService;
@Resource
private AdvisoryBodyService advisoryBodyService;
@Resource
private AdvisoryBodyProjectService advisoryBodyProjectService;
/**
* 获取所有项目列表数据
*/
@GetMapping("/getProjectList")
public TableDataInfo<ProjectSearchVo> getProjectList(ProjectSearchBo projectSearchBo, PageQuery pageQuery) {
return baseService.queryProjectList(projectSearchBo, pageQuery);
}
/**
* 获取所有企业列表(咨询机构)数据
*/
@GetMapping("/getAdvisoryBodyList")
public TableDataInfo<AdvisoryBodySearchVo> getAdvisoryBodyList(AdvisoryBodySearchBo advisoryBodySearchBo, PageQuery pageQuery) {
return advisoryBodyService.queryAdvisoryBodyList(advisoryBodySearchBo, pageQuery);
}
/**
* 获取合作项目明细
*/
@GetMapping("/getCooperateProjectDetailList")
public TableDataInfo<CooperateProjectDetailSearchVo> getCooperateProjectDetailList(CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery) {
return baseService.queryCooperateProjectDetailList(cooperateProjectDetailSearchBo, pageQuery);
}
/**
* 获取项目详情
*/
@GetMapping("/getProjectDetail")
public R<ProjectDetailVo> getProjectDetail(ProjectDetailBo projectDetailBo) {
return R.ok(baseService.queryProjectDetail(projectDetailBo));
}
/**
* 校验咨询机构是否存在
*/
@GetMapping("/checkAdvisoryBodyExist")
public R<AdvisoryBodyExistVo> checkAdvisoryBodyExist(@NotBlank(message = "咨询机构名称不能为空") String advisoryBodyName) {
return R.ok(advisoryBodyService.checkAdvisoryBodyExist(advisoryBodyName));
}
/**
* 新增咨询机构
*/
@PostMapping("/addAdvisoryBody")
public R<Void> addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) {
return toAjax(advisoryBodyService.addAdvisoryBody(addAdvisoryBodyBo));
}
}
\ No newline at end of file
...@@ -3,14 +3,24 @@ package com.dsk.cscec.controller; ...@@ -3,14 +3,24 @@ package com.dsk.cscec.controller;
import com.dsk.common.core.controller.BaseController; import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery; 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.core.page.TableDataInfo;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo; import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo; import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.service.ICustomerInfoService; import com.dsk.cscec.service.ICustomerInfoService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/** /**
* 供应商相关 * 供应商相关
* *
...@@ -31,10 +41,44 @@ public class CustomerInfoController extends BaseController { ...@@ -31,10 +41,44 @@ public class CustomerInfoController extends BaseController {
* 供应商分类列表 * 供应商分类列表
*/ */
@PostMapping("/list") @PostMapping("/list")
public TableDataInfo<CustomerInfoVo> list(@Validated @RequestBody CustomerInfoBo bo,@RequestBody PageQuery query) { public TableDataInfo<CustomerInfoVo> list(@Validated @RequestBody CustomerInfoBo bo, @RequestBody PageQuery query) {
return iCustomerInfoService.queryPageList(bo, query); return iCustomerInfoService.queryPageList(bo, query);
} }
/**
* 内部合作-咨询机构合作记录
*/
@GetMapping("/advisoryList")
public TableDataInfo<AdvisoryBodyVo> advisoryList(@Validated AdvisoryBodyBo bo, PageQuery query) {
return iCustomerInfoService.queryAdvisoryList(bo, query);
}
/**
* 内部合作-咨询机构合作记录导出
*/
@GetMapping("/advisoryExport")
public void advisoryExport(@Validated AdvisoryBodyBo bo, PageQuery query, HttpServletResponse response) {
List<AdvisoryBodyVo> listVo = iCustomerInfoService.queryAdvisoryList(bo, query).getRows();
ExcelUtil.exportExcel(listVo, "咨询机构合作记录", AdvisoryBodyVo.class, response);
}
/**
* 合作记录-供应商准入情况
*/
@GetMapping("/approveInfo")
public R<CustomerApproveVo> getApproveInfo(CustomerInfoBo bo) {
return R.ok(iCustomerInfoService.queryApproveByBo(bo));
}
/**
* 内部合作-供应商合作记录
*/
@GetMapping("/cooperationList")
public TableDataInfo<CustomerCooperationVo> cooperationList(@Validated CustomerCooperationBo bo, PageQuery query) {
return iCustomerInfoService.queryCooperationList(bo, query);
}
} }
...@@ -5,12 +5,19 @@ import com.dsk.common.core.controller.BaseController; ...@@ -5,12 +5,19 @@ import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery; import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R; import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.excel.ExcelUtils;
import com.dsk.cscec.domain.DCustomer; import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.DCustomerSearchBo; import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.domain.vo.DCustomerListVo;
import com.dsk.cscec.service.IDCustomerService; import com.dsk.cscec.service.IDCustomerService;
import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.domain.vo.JskCombineWinBidProjectExportVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/** /**
* 组织维表(DCustomer)表控制层 * 组织维表(DCustomer)表控制层
* *
...@@ -30,7 +37,7 @@ public class DCustomerController extends BaseController { ...@@ -30,7 +37,7 @@ public class DCustomerController extends BaseController {
* 供应商总台账筛选 * 供应商总台账筛选
*/ */
@PostMapping("/all/searchList") @PostMapping("/all/searchList")
public TableDataInfo<DCustomer> allSearchList(@RequestBody DCustomerSearchBo bo, PageQuery query) { public TableDataInfo<DCustomerListVo> allSearchList(@RequestBody DCustomerSearchBo bo,@RequestBody PageQuery query) {
return baseService.allSearchList(bo,query); return baseService.allSearchList(bo,query);
} }
...@@ -42,6 +49,16 @@ public class DCustomerController extends BaseController { ...@@ -42,6 +49,16 @@ public class DCustomerController extends BaseController {
return R.ok(baseService.getById(customerKey)); return R.ok(baseService.getById(customerKey));
} }
/**
* 供应商信息
*/
@PostMapping("/export")
public void export(@RequestBody DCustomerSearchBo bo, HttpServletResponse response) {
List<DCustomerListVo> list = baseService.exportList(bo);
ExcelUtils<DCustomerListVo> util = new ExcelUtils<>(DCustomerListVo.class);
util.exportExcel(response, list, "sheet1","大数据经营管理支撑服务平台供应商导出", true);
}
} }
package com.dsk.cscec.controller;
import com.dsk.common.core.controller.BaseController;
import com.dsk.cscec.service.IDProjectService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* 项目维表(DProject)表控制层
*
* @author makejava
* @since 2023-12-10 15:34:46
*/
@RestController
@RequestMapping("dProject")
public class DProjectController extends BaseController {
/**
* 服务对象
*/
@Resource
private IDProjectService IDProjectService;
///**
// * 分页查询所有数据
// *
// * @param page 分页对象
// * @param dProject 查询实体
// * @return 所有数据
// */
//@GetMapping
//public R selectAll(Page<DProject> page, DProject dProject) {
// return success(this.dProjectService.page(page, new QueryWrapper<>(dProject)));
//}
//
///**
// * 通过主键查询单条数据
// *
// * @param id 主键
// * @return 单条数据
// */
//@GetMapping("{id}")
//public R selectOne(@PathVariable Serializable id) {
// return success(this.dProjectService.getById(id));
//}
//
///**
// * 新增数据
// *
// * @param dProject 实体对象
// * @return 新增结果
// */
//@PostMapping
//public R insert(@RequestBody DProject dProject) {
// return success(this.dProjectService.save(dProject));
//}
//
///**
// * 修改数据
// *
// * @param dProject 实体对象
// * @return 修改结果
// */
//@PutMapping
//public R update(@RequestBody DProject dProject) {
// return success(this.dProjectService.updateById(dProject));
//}
//
///**
// * 删除数据
// *
// * @param idList 主键结合
// * @return 删除结果
// */
//@DeleteMapping
//public R delete(@RequestParam("idList") List<Long> idList) {
// return success(this.dProjectService.removeByIds(idList));
//}
}
...@@ -4,6 +4,7 @@ package com.dsk.cscec.controller; ...@@ -4,6 +4,7 @@ package com.dsk.cscec.controller;
import com.dsk.common.core.controller.BaseController; import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.R; import com.dsk.common.core.domain.R;
import com.dsk.cscec.domain.vo.RegionVo; import com.dsk.cscec.domain.vo.RegionVo;
import com.dsk.cscec.domain.vo.RegionWithLevelVo;
import com.dsk.cscec.service.IDimAreaService; import com.dsk.cscec.service.IDimAreaService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -34,5 +35,13 @@ public class DimAreaController extends BaseController { ...@@ -34,5 +35,13 @@ public class DimAreaController extends BaseController {
public R<List<RegionVo>> allArea(){ public R<List<RegionVo>> allArea(){
return R.ok(baseService.allArea()); return R.ok(baseService.allArea());
} }
/**
* 获取地区树(不含区域)
*/
@GetMapping("/all/withoutRegion")
public R<List<RegionWithLevelVo>> allAreaWithoutRegion(){
return R.ok(baseService.allAreaWithoutRegion());
}
} }
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 咨询机构(SysAdvisoryBody)表实体类
*
* @author sxk
* @since 2023-12-12 10:12:06
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AdvisoryBody extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 咨询机构ID
*/
@TableId(value = "advisory_body_id")
private Long advisoryBodyId;
/**
* 咨询机构cid(用于查询建设库数据)
*/
private Integer advisoryBodyCid;
/**
* 咨询机构名称
*/
private String advisoryBodyName;
/**
* 经营范围
*/
private String businessScope;
}
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* @author sxk
* @date 2023.12.15
* @time 15:58
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AdvisoryBodyProject extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 项目主键
*/
@TableId(value = "project_key")
private Long projectKey;
/**
* 咨询机构ID
*/
private Long advisoryBodyId;
/**
* 咨询机构cid(用于查询建设库数据)
*/
private Integer advisoryBodyCid;
/**
* 合作时间
*/
private Date cooperateTime;
/**
* 项目负责人
*/
private String projectLeader;
/**
* 项目负责人专业
*/
private String projectLeaderMajor;
/**
* 项目负责人联系电话
*/
private String projectLeaderPhone;
/**
* 结算金额(万元)
*/
private Double settleAmount;
/**
* 结算开始时间
*/
private Date settleStartTime;
/**
* 结算完成时间
*/
private Date settleFinishTime;
/**
* 是否为终审单位(0代表是 1代表否)
*/
private String isFinalJudgeUnit;
}
package com.dsk.cscec.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @author sxk
* @date 2023.12.19
* @time 09:54
*/
@Data
public class AddAdvisoryBodyBo {
/**
* 是否为新资讯机构
*/
@NotNull(message = "是否为新咨询机构不能为空")
private Boolean isNewAdvisoryBody;
/**
* 项目主键
*/
@NotNull(message = "项目主键不能为空")
private Long projectKey;
/**
* 咨询机构cid(用于查询建设库数据)
*/
@NotNull(message = "咨询机构cid不能为空")
private Integer advisoryBodyCid;
/**
* 咨询机构名称
*/
@NotBlank(message = "咨询机构名称不能为空")
private String advisoryBodyName;
/**
* 经营范围
*/
@NotBlank(message = "经营范围不能为空")
private String businessScope;
/**
* 项目负责人
*/
private String projectLeader;
/**
* 项目负责人专业
*/
private String projectLeaderMajor;
/**
* 项目负责人联系电话
*/
private String projectLeaderPhone;
/**
* 结算金额(万元)
*/
private Double settleAmount;
/**
* 结算开始时间
*/
private Date settleStartTime;
/**
* 结算完成时间
*/
private Date settleFinishTime;
/**
* 是否为终审单位(0代表是 1代表否)
*/
private String isFinalJudgeUnit;
}
package com.dsk.cscec.domain.bo;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import java.util.List;
/**
* 咨询机构合作记录查询
*
* @author
* @since 2023-12-14
*/
@Data
public class AdvisoryBodyBo extends BaseEntity {
/**
* 咨询机构ID
*/
private Long advisoryBodyId;
/**
* 咨询机构cid(用于查询建设库数据)
*/
private Integer advisoryBodyCid;
/**
* 项目主键(用作关联d_project)
*/
private Long projectKey;
/**
* 咨询机构名称
*/
private String advisoryBodyName;
/**
* 项目承接单位id
*/
private String contractOrgId;
/**
* 项目承接单位
*/
private String contractOrgName;
/**
* 省份
*/
private List<String> province;
/**
* 城市
*/
private List<String> city;
/**
* 项目承接类型
*/
/**
* 工程类别明细
*/
}
package com.dsk.cscec.domain.bo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author sxk
* @date 2023.12.13
* @time 10:33
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AdvisoryBodySearchBo {
/**
* 咨询机构名称
*/
private String advisoryBodyName;
/**
* 最小最近合作时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date minLastCooperateDate;
/**
* 最大最近合作时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date maxLastCooperateDate;
/**
* 经营范围
*/
private String businessScope;
}
package com.dsk.cscec.domain.bo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author sxk
* @date 2023.12.14
* @time 14:17
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CooperateProjectDetailSearchBo {
/**
* 咨询机构CID
*/
@NotNull(message = "咨询机构CID不能为空")
private Long advisoryBodyCid;
/**
* 项目名称
*/
private String projectName;
/**
* 省
*/
private List<String> provinceName;
/**
* 市
*/
private List<String> cityName;
/**
* 项目承接类型
*/
private List<String> isinvestproject;
/**
* 工程基础大类
*/
private List<String> projectType1;
/**
* 工程类别明细
*/
private List<String> projectType;
}
package com.dsk.cscec.domain.bo;
import lombok.Data;
import java.util.List;
/**
* 供应商合作记录
*
* @author
* @since 2023-12-18
*/
@Data
public class CustomerCooperationBo {
/**
* 签订单位ID
*/
private String signOrgId;
/**
* 签订单位名称
*/
private String signOrgName;
/**
* 供应商ID
*/
private String customerId;
/**
* 供应商名称
*/
private String customerName;
/**
* 区域名称
*/
private List<String> areaName;
/**
* 省份名称
*/
private List<String> provinceName;
/**
* 城市名称
*/
private List<String> cityName;
}
package com.dsk.cscec.domain.bo; package com.dsk.cscec.domain.bo;
import com.dsk.common.core.domain.BaseEntity; import com.dsk.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
...@@ -16,6 +17,14 @@ import java.util.List; ...@@ -16,6 +17,14 @@ import java.util.List;
*/ */
@Data @Data
public class CustomerInfoBo extends BaseEntity { public class CustomerInfoBo extends BaseEntity {
/**
* 客商主键
*/
private Long customerKey;
/**
* 统一社会信用代码
*/
private String unifySocialCode;
/** /**
* 供应商类别(分供,劳务分包,专业分包,租赁,劳务分包队伍) * 供应商类别(分供,劳务分包,专业分包,租赁,劳务分包队伍)
*/ */
...@@ -72,12 +81,12 @@ public class CustomerInfoBo extends BaseEntity { ...@@ -72,12 +81,12 @@ public class CustomerInfoBo extends BaseEntity {
/** /**
* 准入时间开始 * 准入时间开始
*/ */
@DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
private Date approveDate2Start; private Date approveDate2Start;
/** /**
* 准入时间结束 * 准入时间结束
*/ */
@DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
private Date approveDate2End; private Date approveDate2End;
/** /**
* 队长名称 * 队长名称
......
package com.dsk.cscec.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author sxk
* @date 2023.12.18
* @time 17:43
*/
@Data
public class ProjectDetailBo {
/**
* 项目主键
*/
@NotNull(message = "项目主键不能为空")
private Long projectKey;
/**
* 咨询机构Cid
*/
@NotNull(message = "咨询机构Cid不能为空")
private Long advisoryBodyCid;
}
package com.dsk.cscec.domain.bo;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author sxk
* @date 2023.12.11
* @time 14:01
*/
@Data
public class ProjectSearchBo {
/**
* 项目名称
*/
private String projectName;
/**
* 咨询机构名称
*/
private String advisoryBodyName;
/**
* 业主单位
*/
private String ownerUnit;
/**
* 承接项目单位
*/
private String undertakeProjectUnit;
/**
* 项目创建开始时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date projectStartTime;
/**
* 项目创建结束时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date projectEndTime;
/**
* 项目承接类型
*/
private String projectUndertakeType;
/**
* 工程基础大类
*/
private String engineeringFoundationCategory;
/**
* 工程类别明细
*/
private String engineeringCategoryDetail;
/**
* 最小合同金额
*/
private Double minContractAmount;
/**
* 最大合同金额
*/
private Double maxContractAmount;
}
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author sxk
* @date 2023.12.19
* @time 14:20
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AdvisoryBodyExistVo extends AdvisoryBody {
/**
* 是否为新资讯机构
*/
private Boolean isNewAdvisoryBody;
}
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author sxk
* @date 2023.12.13
* @time 10:32
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AdvisoryBodySearchVo extends AdvisoryBody {
/**
* 最近一次合作时间
*/
private Date lastCooperateTime;
/**
* 经营状态
*/
private String businessStatus;
/**
* 法定代表人
*/
private String corporatePerson;
/**
* 注册资本
*/
private String regCapital;
/**
* 注册地区
*/
private String regArea;
/**
* 成立日期
*/
private String registeredDate;
/**
* 经营范围
*/
private String businessScope;
/**
* 合作项目数量
*/
private Long cooperateProjectCount;
}
package com.dsk.cscec.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 咨询机构合作记录
*
* @author
* @since 2023-12-14
*/
@Data
@ExcelIgnoreUnannotated
public class AdvisoryBodyVo {
/**
* 项目主键
*/
private Long projectKey;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称", index = 0)
private String projectName;
/**
* 项目编码
*/
@ExcelProperty(value = "项目编码", index = 1)
private String projectCode;
/**
* 省
*/
@ExcelProperty(value = "省", index = 2)
private String provinceName;
/**
* 市
*/
@ExcelProperty(value = "市", index = 3)
private String cityName;
/**
* 项目承接类型
*/
@ExcelProperty(value = "项目承接类型", index = 4)
private String isinvestproject;
/**
* 工程基础大类
*/
@ExcelProperty(value = "工程基础大类", index = 5)
private String projectType1;
/**
* 工程类别明细
*/
@ExcelProperty(value = "工程类别明细", index = 6)
private String projectType;
/**
* 咨询机构ID
*/
private Long advisoryBodyId;
/**
* 咨询机构cid(用于查询建设库数据)
*/
private Integer advisoryBodyCid;
/**
* 咨询机构名称
*/
private String advisoryBodyName;
/**
* 项目负责人
*/
@ExcelProperty(value = "项目负责人姓名", index = 7)
private String projectLeader;
/**
* 项目负责人专业
*/
@ExcelProperty(value = "项目负责人专业", index = 8)
private String projectLeaderMajor;
/**
* 项目负责人联系电话
*/
@ExcelProperty(value = "项目负责人联系电话", index = 9)
private String projectLeaderPhone;
/**
* 合同金额
*/
@ExcelProperty(value = "合同金额", index = 10)
private BigDecimal contractOrigValue;
/**
* 业主单位
*/
@ExcelProperty(value = "业主单位", index = 11)
private String ownerName;
/**
* 项目承接单位
*/
@ExcelProperty(value = "项目承接单位", index = 12)
private String contractOrgName;
/**
* 创建时间
*/
@ExcelProperty(value = "创建时间", index = 13)
private Date loadTime;
}
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author sxk
* @date 2023.12.14
* @time 13:45
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CooperateProjectDetailSearchVo {
/**
* 项目主键
*/
private Long projectKey;
/**
* 项目ID
*/
private String projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 项目编码
*/
private String projectCode;
/**
* 省市
*/
private String provinceName;
/**
* 市区
*/
private String cityName;
/**
* 项目承接类型
*/
private String isinvestproject;
/**
* 工程基础大类
*/
private String projectType1;
/**
* 工程类别明细
*/
private String projectType;
/**
* 合同金额
*/
private BigDecimal contractOrigValue;
/**
* 结算天数(天)
*/
private Long settlementDays;
/**
* 业主单位
*/
private String ownerName;
/**
* 项目承接单位
*/
private String contractOrgName;
/**
* 咨询机构(咨询机构表)
*/
private AdvisoryBody advisoryBody;
/**
* 创建时间(合同生效日期)
*/
private Date contractSignDate;
}
package com.dsk.cscec.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import lombok.Data;
import java.util.Date;
/**
* 供应商准入情况
*
* @author
* @since 2023-12-15
*/
@Data
@ExcelIgnoreUnannotated
public class CustomerApproveVo {
/**
* 客商主键
*/
private Long customerKey;
/**
* 供应商编号
*/
private String customerCode;
/**
* 供应商名称
*/
private String customerName;
/**
* 注册资金
*/
private Double registerCapital;
/**
* 统一社会信用代码
*/
private String unifySocialCode;
/**
* 工商注册号
*/
private String registerNo;
/**
* 组织机构代码号
*/
private String orgnizationCode;
/**
* 税务登记号
*/
private String businessLicense;
/**
* 身份信息选择
*/
private String cardType;
/**
* 身份证号
*/
private String idCard;
/**
* 纳税人身份
*/
private String paytaxType;
/**
* 纳税人税率
*/
private String taxRate;
/**
* 法人代表
*/
private String representative;
/**
* 联系人
*/
private String contactPerson;
/**
* 联系电话
*/
private String contactPhone;
/**
* 业主性质
*/
private String ownerKind;
/**
* 资质等级
*/
private String credential;
/**
* 施工承包范围
*/
private String constructJobScope;
/**
* 专业类别id
*/
private String groupSpecialtyId;
/**
* 集团专业类别
*/
private String groupSpecialty;
/**
* 城市id
*/
private String registerCityId;
/**
* 注册地区域
*/
private String registerRegion;
/**
* 省份
*/
private String registerProvince;
/**
* 城市
*/
private String registerCity;
/**
* 企业注册地
*/
private String registerAddress;
/**
* 开户行
*/
private String openBank;
/**
* 银行账号
*/
private String bankAccount;
/**
* 主营业务
*/
private String primaryBusiness;
/**
* 税号
*/
private String taxNumber;
/**
* 企业性质
*/
private String customerProperty;
//证书信息
/**
* 营业执照到期时间1
*/
private Date expireDate1;
/**
* 组织机构代码证到期时间2
*/
private Date expireDate2;
/**
* 税务登记证到期时间3
*/
private Date expireDate3;
/**
* 资质证书到期时间4
*/
private Date expireDate4;
/**
* 安全生产许可证到期时间5
*/
private Date expireDate5;
/**
* 施工队长资格证到期时间6
*/
private String expireDate6;
/**
* 授权委托书到期时间7
*/
private String expireDate7;
//审批意见
/**
* 经办人
*/
private String responsiblePerson;
/**
* 经办人签字时间
*/
private Date approveDate1;
/**
* 商务经理
*/
private String businessManager;
/**
* 商务经理签字时间
*/
private Date approveDate3;
/**
* 项目经理
*/
private String projectManager;
/**
* 项目经理签字时间
*/
private Date approveDate4;
/**
* 采购部门负责人/公司意见
*/
private String purchasePrincipal;
/**
* 准入时间
*/
private Date approveDate2;
}
package com.dsk.cscec.domain.vo;
import lombok.Data;
/**
* 供应商合作记录
*
* @author
* @since 2023-12-18
*/
@Data
public class CustomerCooperationVo {
/**
* 分包合同主键
*/
private Long subcontractKey;
/**
* 分包合同ID
*/
private String subcontractId;
/**
* 项目名称
*/
private String projectName;
/**
* 分包合同金额
*/
private Double subcontractValue;
/**
* 签订单位ID
*/
private String signOrgId;
/**
* 签订单位名称
*/
private String signOrgName;
/**
* 合同签订日期
*/
private String signDate;
/**
* 分包范围
*/
private String jobScope;
/**
* 结算价
*/
private Double settleValue;
/**
* 区域名称
*/
private String areaName;
/**
* 省份名称
*/
private String provinceName;
/**
* 城市名称
*/
private String cityName;
/**
* 项目经理名称
*/
private String projectManagerName;
/**
* 项目经理电话
*/
private String projectManagerPhone;
/**
* 工程类型名称
*/
private String projectType2;
}
...@@ -141,6 +141,10 @@ public class CustomerInfoVo { ...@@ -141,6 +141,10 @@ public class CustomerInfoVo {
* 合作项目数量 * 合作项目数量
*/ */
private Integer projectCooperationCount; private Integer projectCooperationCount;
/**
* jsk企业id
*/
private Integer companyId;
/** /**
* 资源平台分类 * 资源平台分类
*/ */
......
package com.dsk.cscec.domain.vo;
import com.dsk.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author lcl
* @Data 2023/12/18 14:14
*/
@Data
public class DCustomerListVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "序号", width = 6)
private Integer num;
/**
* jsk企业id
*/
private Integer companyId;
/**
* 客商主键
*/
private Long customerKey;
/**
* ipm供应商id
*/
private String customerId;
/**
* 税号
*/
private String taxNumber;
/**
* 供应商名称
*/
@Excel(name = "供应商名称", width = 30)
private String customerName;
/**
* 供应商编号
*/
@Excel(name = "供应商编号", width = 15)
private String customerCode;
/**
* 推荐公司
*/
@Excel(name = "推荐单位", width = 30)
private String recommendOrg;
/**
* 注册地区域
*/
@Excel(name = "公司注册区域", width = 10)
private String registerRegion;
/**
* 省份
*/
@Excel(name = "公司注册省", width = 10)
private String registerProvince;
/**
* 城市
*/
@Excel(name = "公司注册市", width = 10)
private String registerCity;
/**
* 供应商类别
*/
@Excel(name = "供应商类别", width = 10)
private String customerClass;
/**
* 集团专业类别
*/
@Excel(name = "专业类别", width = 20)
private String groupSpecialty;
/**
* 纳税人身份
*/
@Excel(name = "纳税人身份", width = 10)
private String paytaxType;
/**
* 纳税人税率
*/
@Excel(name = "纳税人税率", width = 10)
private String taxRate;
/**
* 供应商状态
*/
@Excel(name = "状态", width = 10)
private String customerState;
/**
* 限用/禁用状态
*/
@Excel(name = "限用/禁用状态", width = 10)
private String badnessState;
/**
* 队长名称
*/
@Excel(name = "劳务队长", width = 10)
private String leaderName;
/**
* 劳务队长联系电话
*/
@Excel(name = "队长联系电话", width = 10)
private String laborCaptainPhone;
/**
* 劳务队长身份证号
*/
@Excel(name = "队长身份证号", width = 10)
private String laborCaptainIdcard;
/**
* 队伍规模人数
*/
@Excel(name = "队伍规模", width = 10)
private Double serviceTeamPersonnum;
/**
* 专业特长
*/
@Excel(name = "专业特长", width = 10)
private String serviceTeamSpeciality;
/**
* 施工承包范围
*/
@Excel(name = "施工承包范围", width = 25)
private String constructJobScope;
/**
* 资质等级
*/
@Excel(name = "资质等级", width = 10)
private String credential;
/**
* 注册资金
*/
@Excel(name = "注册资金(万元)", width = 10)
private Double registerCapital;
/**
* 联系人
*/
@Excel(name = "公司联系人", width = 10)
private String contactPerson;
/**
* 电话
*/
@Excel(name = "联系人电话", width = 10)
private String contactPhone;
/**
* 准入时间
*/
@Excel(name = "准入时间", width = 10 , dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date approveDate2;
/**
* 企业合作数量
*/
@Excel(name = "公司合作数量", width = 10 )
private Integer enterpriseCooperationCount;
/**
* 项目合作数量
*/
@Excel(name = "合作项目数量", width = 10 )
private Integer projectCooperationCount;
/**
* 考评等级
*/
@Excel(name = "分包商等级", width = 10)
private String creditLevel;
}
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.domain.DProject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* @author sxk
* @date 2023.12.14
* @time 16:18
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProjectDetailVo extends DProject {
/**
* 咨询机构
*/
private AdvisoryBody advisoryBody;
/**
* 法定代表人
*/
private String corporatePerson;
/**
* 注册地址
*/
private String regAddress;
/**
* 项目信息
*/
private AdvisoryBodyProject advisoryBodyProject;
}
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author sxk
* @date 2023.12.11
* @time 14:01
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProjectSearchVo {
/**
* 项目主键
*/
private Long projectKey;
/**
* 项目ID
*/
private String projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 项目编码
*/
private String projectCode;
/**
* 省市
*/
private String provinceName;
/**
* 项目承接类型
*/
private String isinvestproject;
/**
* 工程基础大类
*/
private String projectType1;
/**
* 工程类别明细
*/
private String projectType;
/**
* 合同金额
*/
private BigDecimal contractOrigValue;
/**
* 业主单位
*/
private String ownerName;
/**
* 项目承接单位
*/
private String contractOrgName;
/**
* 咨询机构(咨询机构表)
*/
private AdvisoryBody advisoryBody;
/**
* 创建时间(合同生效日期)
*/
private Date contractSignDate;
}
package com.dsk.cscec.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @Author sxk
* @Data 2023/12/13 14:14
*/
@Data
public class RegionWithLevelVo {
String level;
String value;
List<RegionWithLevelVo> children;
Integer childrenLength;
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 咨询机构(SysAdvisoryBody)表数据库访问层
*
* @author sxk
* @since 2023-12-12 10:12:04
*/
public interface AdvisoryBodyMapper extends BaseMapper<AdvisoryBody> {
/**
* 获取所有企业列表(咨询机构)数据
*/
Page<AdvisoryBodySearchVo> selectPageAdvisoryBodyList(@Param("page") Page<AdvisoryBodySearchVo> page, @Param(Constants.WRAPPER) Wrapper<AdvisoryBody> queryWrapper);
/**
* 咨询机构合作记录
* @param build
* @param bo
* @return
*/
Page<AdvisoryBodyVo> queryListByBo(IPage<AdvisoryBodyBo> build, @Param("bo") AdvisoryBodyBo bo);
/**
* 根据咨询机构名称查询咨询机构Cids
* @param advisoryBodyName 咨询机构名称
* @return 项目IDs
*/
List<Long> selectAdvisoryBodyCidsByName(@Param("advisoryBodyName") String advisoryBodyName);
/**
* 根据项目主键查询咨询机构
*
* @param projectKey 项目主键
* @return 咨询机构
*/
AdvisoryBody queryAdvisoryBodyByProjectKey(@Param("projectKey") Long projectKey);
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 咨询机构和项目关联表(AdvisoryBodyProject)表数据库访问层
*
* @author makejava
* @since 2023-12-15 15:57:54
*/
public interface AdvisoryBodyProjectMapper extends BaseMapper<AdvisoryBodyProject> {
/**
* 根据咨询机构Cids查询项目Keys
*
* @param advisoryBodyCids 咨询机构Cids
* @return 项目Keys
*/
List<Long> selectProjectKeysByAdvisoryBodyCids(@Param("advisoryBodyCids") List<Long> advisoryBodyCids);
}
...@@ -8,6 +8,7 @@ import com.dsk.cscec.domain.DCustomer; ...@@ -8,6 +8,7 @@ import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.CustomerInfoBo; import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.bo.DCustomerSearchBo; import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.domain.vo.CustomerInfoVo; import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.domain.vo.DCustomerListVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -20,7 +21,7 @@ import java.util.List; ...@@ -20,7 +21,7 @@ import java.util.List;
*/ */
public interface DCustomerMapper extends BaseMapper<DCustomer> { public interface DCustomerMapper extends BaseMapper<DCustomer> {
Page<DCustomer> allSearchList(IPage<DCustomerSearchBo> build, @Param("bo") DCustomerSearchBo bo); Page<DCustomerListVo> allSearchList(IPage<DCustomerSearchBo> build, @Param("bo") DCustomerSearchBo bo);
/** /**
* 分类查询供应商列表 * 分类查询供应商列表
......
package com.dsk.cscec.mapper; package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.cscec.domain.DProject; import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;
import org.apache.ibatis.annotations.Param;
/** /**
* 项目维表(DProject)表数据库访问层 * 项目维表(DProject)表数据库访问层
...@@ -10,6 +16,14 @@ import com.dsk.cscec.domain.DProject; ...@@ -10,6 +16,14 @@ import com.dsk.cscec.domain.DProject;
* @since 2023-12-10 15:34:46 * @since 2023-12-10 15:34:46
*/ */
public interface DProjectMapper extends BaseMapper<DProject> { public interface DProjectMapper extends BaseMapper<DProject> {
/**
* 获取所有项目列表数据
*/
Page<ProjectSearchVo> selectPageProjectList(@Param("page") Page<ProjectSearchVo> page, @Param(Constants.WRAPPER) Wrapper<DProject> queryWrapper);
/**
* 获取合作项目明细
*/
Page<CooperateProjectDetailSearchVo> selectPageCooperateProjectDetailList(@Param("page") Page<CooperateProjectDetailSearchVo> page, @Param(Constants.WRAPPER) Wrapper<DProject> Wrapper);
} }
...@@ -2,7 +2,13 @@ package com.dsk.cscec.mapper; ...@@ -2,7 +2,13 @@ package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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.cscec.domain.DSubcontract; import com.dsk.cscec.domain.DSubcontract;
import com.dsk.cscec.domain.vo.DCustomerListVo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import org.apache.ibatis.annotations.Param;
/** /**
* 分包分供合同(DSubcontract)表数据库访问层 * 分包分供合同(DSubcontract)表数据库访问层
...@@ -16,5 +22,14 @@ public interface DSubcontractMapper extends BaseMapper<DSubcontract> { ...@@ -16,5 +22,14 @@ public interface DSubcontractMapper extends BaseMapper<DSubcontract> {
Integer selectProjectCountByCustomerId(String customerId); Integer selectProjectCountByCustomerId(String customerId);
DCustomerListVo selectStatisticByCustomerId(String customerId);
/**
* 供应商合作记录
* @param build
* @param bo
* @return
*/
Page<CustomerCooperationVo> selectCooperationList(IPage<CustomerCooperationBo> build, @Param("bo")CustomerCooperationBo bo);
} }
package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.AdvisoryBodyProject;
/**
* 咨询机构和项目关联表(AdvisoryBodyProject)表服务接口
*
* @author makejava
* @since 2023-12-15 15:57:57
*/
public interface AdvisoryBodyProjectService extends IService<AdvisoryBodyProject> {
}
package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.bo.AddAdvisoryBodyBo;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyExistVo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
/**
* 咨询机构(SysAdvisoryBody)表服务接口
*
* @author sxk
* @since 2023-12-12 10:12:09
*/
public interface AdvisoryBodyService extends IService<AdvisoryBody> {
/**
* 获取所有企业列表(咨询机构)数据
*
* @param advisoryBodySearchBo 查询实体
* @param pageQuery 分页对象
* @return 所有数据
*/
TableDataInfo<AdvisoryBodySearchVo> queryAdvisoryBodyList(AdvisoryBodySearchBo advisoryBodySearchBo, PageQuery pageQuery);
/**
* 校验咨询机构是否存在
*
* @param advisoryBodyName 咨询机构名称
* @return 校验结果
*/
AdvisoryBodyExistVo checkAdvisoryBodyExist(String advisoryBodyName);
/**
* 新增咨询机构
*
* @param addAdvisoryBodyBo 新增信息
* @return 添加结果
*/
Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo);
/**
* 每小时更新一次咨询机构经营范围
*/
void updateAdvisoryBodyBusinessScope();
}
...@@ -4,7 +4,12 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -4,7 +4,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery; import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.DCustomer; import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo; import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo; import com.dsk.cscec.domain.vo.CustomerInfoVo;
/** /**
...@@ -17,4 +22,15 @@ public interface ICustomerInfoService extends IService<DCustomer> { ...@@ -17,4 +22,15 @@ public interface ICustomerInfoService extends IService<DCustomer> {
TableDataInfo<CustomerInfoVo> queryPageList(CustomerInfoBo bo, PageQuery query); TableDataInfo<CustomerInfoVo> queryPageList(CustomerInfoBo bo, PageQuery query);
CustomerApproveVo queryApproveByBo(CustomerInfoBo bo);
TableDataInfo<AdvisoryBodyVo> queryAdvisoryList(AdvisoryBodyBo bo, PageQuery query);
/**
* 供应商合作记录
* @param bo
* @param query
* @return
*/
TableDataInfo<CustomerCooperationVo> queryCooperationList(CustomerCooperationBo bo,PageQuery query);
} }
...@@ -5,6 +5,9 @@ import com.dsk.common.core.domain.PageQuery; ...@@ -5,6 +5,9 @@ import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.DCustomer; import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.DCustomerSearchBo; import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.domain.vo.DCustomerListVo;
import java.util.List;
/** /**
* 组织维表(DCustomer)表服务接口 * 组织维表(DCustomer)表服务接口
...@@ -14,7 +17,9 @@ import com.dsk.cscec.domain.bo.DCustomerSearchBo; ...@@ -14,7 +17,9 @@ import com.dsk.cscec.domain.bo.DCustomerSearchBo;
*/ */
public interface IDCustomerService extends IService<DCustomer> { public interface IDCustomerService extends IService<DCustomer> {
TableDataInfo<DCustomer> allSearchList(DCustomerSearchBo bo, PageQuery query); TableDataInfo<DCustomerListVo> allSearchList(DCustomerSearchBo bo, PageQuery query);
List<DCustomerListVo> exportList(DCustomerSearchBo bo);
} }
package com.dsk.cscec.service; package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.DProject; import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.bo.CooperateProjectDetailSearchBo;
import com.dsk.cscec.domain.bo.ProjectDetailBo;
import com.dsk.cscec.domain.bo.ProjectSearchBo;
import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectDetailVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;
/** /**
* 项目维表(DProject)表服务接口 * 项目维表(DProject)表服务接口
* *
* @author makejava * @author sxk
* @since 2023-12-10 15:34:51 * @since 2023-12-10 15:34:51
*/ */
public interface IDProjectService extends IService<DProject> { public interface IDProjectService extends IService<DProject> {
/**
* 获取所有项目列表数据
*
* @param projectSearchBo 查询实体
* @param pageQuery 分页对象
* @return 所有数据
*/
TableDataInfo<ProjectSearchVo> queryProjectList(ProjectSearchBo projectSearchBo, PageQuery pageQuery);
/**
* 获取合作项目明细
*
* @param cooperateProjectDetailSearchBo 查询实体
* @param pageQuery 分页对象
* @return 所有数据
*/
TableDataInfo<CooperateProjectDetailSearchVo> queryCooperateProjectDetailList(CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery);
/**
* 根据项目主键查询项目详情
*
* @param projectDetailBo 查询实体
* @return 项目详情
*/
ProjectDetailVo queryProjectDetail(ProjectDetailBo projectDetailBo);
} }
...@@ -3,6 +3,7 @@ package com.dsk.cscec.service; ...@@ -3,6 +3,7 @@ package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.DimArea; import com.dsk.cscec.domain.DimArea;
import com.dsk.cscec.domain.vo.RegionVo; import com.dsk.cscec.domain.vo.RegionVo;
import com.dsk.cscec.domain.vo.RegionWithLevelVo;
import java.util.List; import java.util.List;
...@@ -17,5 +18,7 @@ public interface IDimAreaService extends IService<DimArea> { ...@@ -17,5 +18,7 @@ public interface IDimAreaService extends IService<DimArea> {
List<RegionVo> allArea(); List<RegionVo> allArea();
List<RegionWithLevelVo> allAreaWithoutRegion();
} }
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.mapper.AdvisoryBodyProjectMapper;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.service.AdvisoryBodyProjectService;
import org.springframework.stereotype.Service;
/**
* 咨询机构和项目关联表(AdvisoryBodyProject)表服务实现类
*
* @author makejava
* @since 2023-12-15 15:57:57
*/
@Service("advisoryBodyProjectService")
public class AdvisoryBodyProjectServiceImpl extends ServiceImpl<AdvisoryBodyProjectMapper, AdvisoryBodyProject> implements AdvisoryBodyProjectService {
}
package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.domain.bo.AddAdvisoryBodyBo;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyExistVo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.AdvisoryBodyProjectMapper;
import com.dsk.cscec.service.AdvisoryBodyService;
import com.dsk.jsk.domain.EnterpriseInfoHeaderBody;
import com.dsk.system.utils.DskOpenApiUtil;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 咨询机构(SysAdvisoryBody)表服务实现类
*
* @author sxk
* @since 2023-12-12 10:12:09
*/
@Service("advisoryBodyService")
public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, AdvisoryBody> implements AdvisoryBodyService {
@Resource
private AdvisoryBodyMapper baseMapper;
@Resource
private DskOpenApiUtil dskOpenApiUtil;
@Resource
private AdvisoryBodyProjectMapper advisoryBodyProjectMapper;
/**
* 获取所有企业列表(咨询机构)数据
*
* @param advisoryBodySearchBo 查询实体
* @param pageQuery 分页对象
* @return 所有数据
*/
@Override
public TableDataInfo<AdvisoryBodySearchVo> queryAdvisoryBodyList(AdvisoryBodySearchBo advisoryBodySearchBo, PageQuery pageQuery) {
//先按照分页要求从咨询机构表中查出分页数据
QueryWrapper<AdvisoryBody> wrapper = Wrappers.query();
wrapper.like(StringUtils.isNotBlank(advisoryBodySearchBo.getAdvisoryBodyName()), "advisory_body_name", advisoryBodySearchBo.getAdvisoryBodyName())
.between(ObjectUtil.isNotNull(advisoryBodySearchBo.getMinLastCooperateDate()) && ObjectUtil.isNotNull(advisoryBodySearchBo.getMaxLastCooperateDate()),
"create_time",
advisoryBodySearchBo.getMinLastCooperateDate(),
advisoryBodySearchBo.getMaxLastCooperateDate())
.like(StringUtils.isNotBlank(advisoryBodySearchBo.getBusinessScope()), "business_scope", advisoryBodySearchBo.getBusinessScope());
Page<AdvisoryBodySearchVo> page = baseMapper.selectPageAdvisoryBodyList(pageQuery.build(), wrapper);
//根据咨询机构cid查询对应的企业信息
for (AdvisoryBodySearchVo advisoryBodySearchVo : page.getRecords()) {
EnterpriseInfoHeaderBody infoHeaderBody = new EnterpriseInfoHeaderBody();
//有Cid的才去建设库查数据
if (ObjectUtil.isNotNull(advisoryBodySearchVo.getAdvisoryBodyCid())) {
infoHeaderBody.setCompanyId(Math.toIntExact(advisoryBodySearchVo.getAdvisoryBodyCid()));
} else {
continue;
}
Map<String, Object> companyMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(infoHeaderBody, false, false));
Map companyData = MapUtils.getMap(companyMap, "data", null);
//最近一次合作时间
List<AdvisoryBodyProject> advisoryBodyProjectList = advisoryBodyProjectMapper.selectList(new LambdaQueryWrapper<AdvisoryBodyProject>()
.select(AdvisoryBodyProject::getCreateTime)
.eq(AdvisoryBodyProject::getAdvisoryBodyCid, advisoryBodySearchVo.getAdvisoryBodyCid())
.orderByDesc(AdvisoryBodyProject::getCreateTime));
if (ObjectUtil.isNotNull(advisoryBodyProjectList) && !advisoryBodyProjectList.isEmpty()) {
advisoryBodySearchVo.setLastCooperateTime(advisoryBodyProjectList.get(0).getCreateTime());
}
//经营范围
advisoryBodySearchVo.setBusinessStatus(MapUtils.getString(companyData, "businessStatus", ""));
//法人
advisoryBodySearchVo.setCorporatePerson(MapUtils.getString(companyData, "corporatePerson", ""));
//注册资本
advisoryBodySearchVo.setRegCapital(MapUtils.getString(companyData, "regCapital", ""));
//拼接地区
String provinceName = MapUtils.getString(companyData, "provinceName", "");
String cityName = MapUtils.getString(companyData, "cityName", "");
String districtName = MapUtils.getString(companyData, "districtName", "");
advisoryBodySearchVo.setRegArea(provinceName + "-" + cityName + "-" + districtName);
//成立日期
advisoryBodySearchVo.setRegisteredDate(MapUtils.getString(companyData, "registeredDate", ""));
//经营范围
advisoryBodySearchVo.setBusinessScope(MapUtils.getString(companyData, "businessScope", ""));
//合作项目数量
advisoryBodySearchVo.setCooperateProjectCount(advisoryBodyProjectMapper.selectCount(new LambdaQueryWrapper<AdvisoryBodyProject>()
.eq(AdvisoryBodyProject::getAdvisoryBodyCid, advisoryBodySearchVo.getAdvisoryBodyCid())));
}
return TableDataInfo.build(page);
}
/**
* 校验咨询机构是否存在
*
* @param advisoryBodyName 咨询机构名称
* @return 校验结果
*/
@Override
public AdvisoryBodyExistVo checkAdvisoryBodyExist(String advisoryBodyName) {
//先从咨询机构表查询是否存在,存在则直接返回
AdvisoryBody advisoryBody = baseMapper.selectOne(new LambdaQueryWrapper<AdvisoryBody>()
.eq(AdvisoryBody::getAdvisoryBodyName, advisoryBodyName));
if (ObjectUtil.isNotNull(advisoryBody)) {
//咨询机构表中有记录,则设置为非新咨询机构
AdvisoryBodyExistVo advisoryBodyExistVo = BeanUtil.toBean(advisoryBody, AdvisoryBodyExistVo.class);
advisoryBodyExistVo.setIsNewAdvisoryBody(false);
return advisoryBodyExistVo;
} else {
Map<String, Object> params = new HashMap<>();
params.put("keyword", advisoryBodyName);
Map jskData = MapUtils.getMap(dskOpenApiUtil.requestBody("/nationzj/enterprice/index", params), "data", null);
//防止没有数据而导致强转错误,所以先判断下total
if (MapUtils.getInteger(jskData, "total", 0) > 0) {
List<Map<String, Object>> data = (List<Map<String, Object>>) jskData.get("list");
for (Map<String, Object> companyData : data) {
//企业名称完全匹配上,则直接返回给前端
if (advisoryBodyName.equals(companyData.get("name"))) {
AdvisoryBodyExistVo advisoryBodyExistVo = new AdvisoryBodyExistVo();
advisoryBodyExistVo.setAdvisoryBodyCid(Math.toIntExact(MapUtils.getLong(companyData, "jskEid")));
advisoryBodyExistVo.setAdvisoryBodyName(MapUtils.getString(companyData, "name"));
advisoryBodyExistVo.setBusinessScope(MapUtils.getString(companyData, "businessScope"));
advisoryBodyExistVo.setIsNewAdvisoryBody(true);
break;
}
}
//查不到则抛异常
throw new ServiceException("咨询机构不存在");
}
}
return null;
}
/**
* 新增咨询机构
*
* @param addAdvisoryBodyBo 新增信息
* @return 添加结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) {
//如果是新增咨询机构,则需要新增记录到咨询机构表
if (addAdvisoryBodyBo.getIsNewAdvisoryBody()) {
AdvisoryBody newAdvisoryBody = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBody.class);
newAdvisoryBody.setCreateTime(new Date());
baseMapper.insert(newAdvisoryBody);
}
return advisoryBodyProjectMapper.insert(BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBodyProject.class));
}
/**
* 每小时更新一次咨询机构经营范围
*/
@Override
public void updateAdvisoryBodyBusinessScope() {
EnterpriseInfoHeaderBody infoHeaderBody = new EnterpriseInfoHeaderBody();
for (AdvisoryBody advisoryBody : baseMapper.selectList(null)) {
infoHeaderBody.setCompanyId(Math.toIntExact(advisoryBody.getAdvisoryBodyCid()));
Map<String, Object> companyMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(infoHeaderBody, false, false));
Map companyData = MapUtils.getMap(companyMap, "data", null);
String businessScope = MapUtils.getString(companyData, "businessScope", "empty");
if (!"empty".equals(businessScope)) {
advisoryBody.setBusinessScope(businessScope);
baseMapper.updateById(advisoryBody);
}
}
}
}
package com.dsk.cscec.service.impl; package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.PageQuery; import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.constant.QueryConstants;
import com.dsk.cscec.domain.DCustomer; import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo; import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.CustomerInfoVo; import com.dsk.cscec.domain.vo.*;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.DCustomerMapper; import com.dsk.cscec.mapper.DCustomerMapper;
import com.dsk.cscec.mapper.DSubcontractMapper; import com.dsk.cscec.mapper.DSubcontractMapper;
import com.dsk.cscec.service.ICustomerInfoService; import com.dsk.cscec.service.ICustomerInfoService;
import com.dsk.search.service.BusinessOpportunityRadarService;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Map;
/** /**
* 组织维表(DCustomer)表服务实现类 * 组织维表(DCustomer)表服务实现类
...@@ -26,6 +42,15 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto ...@@ -26,6 +42,15 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
@Autowired @Autowired
private DSubcontractMapper subcontractMapper; private DSubcontractMapper subcontractMapper;
@Autowired
private BusinessOpportunityRadarService opportunityRadarService;
@Autowired
private AdvisoryBodyMapper advisoryBodyMapper;
@Autowired
private DSubcontractMapper dSubcontractMapper;
@Override @Override
public TableDataInfo<CustomerInfoVo> queryPageList(CustomerInfoBo bo, PageQuery query) { public TableDataInfo<CustomerInfoVo> queryPageList(CustomerInfoBo bo, PageQuery query) {
if("劳务分包".equals(bo.getCustomerClass())){ if("劳务分包".equals(bo.getCustomerClass())){
...@@ -37,13 +62,65 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto ...@@ -37,13 +62,65 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
} }
Page<CustomerInfoVo> page = baseMapper.queryListByType(query.build(), bo); Page<CustomerInfoVo> page = baseMapper.queryListByType(query.build(), bo);
if (CollectionUtils.isNotEmpty(page.getRecords())) { if (CollectionUtils.isNotEmpty(page.getRecords())) {
for (CustomerInfoVo customerInfoVo : page.getRecords()) { page.getRecords().parallelStream().forEach(item->{
//公司合作数量 DCustomerListVo vo = subcontractMapper.selectStatisticByCustomerId(item.getCustomerId());
customerInfoVo.setEnterpriseCooperationCount(subcontractMapper.selectEnterpriseCountByCustomerId(customerInfoVo.getCustomerId())); //企业合作数量
item.setEnterpriseCooperationCount(vo.getEnterpriseCooperationCount());
//项目合作数量 //项目合作数量
customerInfoVo.setProjectCooperationCount(subcontractMapper.selectProjectCountByCustomerId(customerInfoVo.getCustomerId())); item.setProjectCooperationCount(vo.getProjectCooperationCount());
//关键字标红
if(!ObjectUtils.isEmpty(bo.getCustomerName())){
item.setCustomerName(StringUtils.markInRed(item.getCustomerName(), bo.getCustomerName()));
}
//关键字标红
if(!ObjectUtils.isEmpty(bo.getLeaderName())){
item.setCustomerName(StringUtils.markInRed(item.getLeaderName(), bo.getLeaderName()));
}
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(item.getCustomerName());
if (!ObjectUtils.isEmpty(map.get("data"))) {
Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
Integer companyId = MapUtil.getInt(data, "jskEid");
item.setCompanyId(companyId);
} }
}catch (Exception e){
//
}
});
}
return TableDataInfo.build(page);
}
@Override
public CustomerApproveVo queryApproveByBo(CustomerInfoBo bo) {
if(ObjectUtil.isNull(bo.getCustomerKey()) && StringUtil.isBlank(bo.getCustomerName()) && StringUtil.isBlank(bo.getUnifySocialCode())){
Assert.isTrue(false,"参数不能为空");
}
LambdaQueryWrapper<DCustomer> lqw = Wrappers.lambdaQuery();
lqw.eq(ObjectUtil.isNotNull(bo.getCustomerKey()),DCustomer::getCustomerKey,bo.getCustomerKey());
lqw.eq(StringUtil.isNotBlank(bo.getUnifySocialCode()),DCustomer::getUnifySocialCode,bo.getUnifySocialCode());
lqw.eq(StringUtil.isNotBlank(bo.getCustomerName()),DCustomer::getCustomerName,bo.getCustomerName());
lqw.orderByDesc(DCustomer::getApproveDate2);
lqw.last("limit 1");
DCustomer dCustomer = baseMapper.selectOne(lqw);
CustomerApproveVo vo = BeanUtil.toBean(dCustomer, CustomerApproveVo.class);
return vo;
}
@Override
public TableDataInfo<AdvisoryBodyVo> queryAdvisoryList(AdvisoryBodyBo bo, PageQuery query) {
bo.setContractOrgId(QueryConstants.LEVEL1_COMPANY_ID);
Page<AdvisoryBodyVo> page = advisoryBodyMapper.queryListByBo(query.build(),bo);
return TableDataInfo.build(page);
}
@Override
public TableDataInfo<CustomerCooperationVo> queryCooperationList(CustomerCooperationBo bo, PageQuery query) {
if(StringUtil.isBlank(bo.getCustomerId()) && StringUtil.isBlank(bo.getCustomerName())){
Assert.isTrue(false,"供应商不能为空");
} }
bo.setSignOrgId(QueryConstants.LEVEL1_COMPANY_ID);
Page<CustomerCooperationVo> page = dSubcontractMapper.selectCooperationList(query.build(),bo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
} }
...@@ -7,8 +7,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -7,8 +7,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.PageQuery; import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.domain.DCustomer; import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.DCustomerSearchBo; import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.domain.vo.DCustomerListVo;
import com.dsk.cscec.mapper.DCustomerMapper; import com.dsk.cscec.mapper.DCustomerMapper;
import com.dsk.cscec.mapper.DSubcontractMapper; import com.dsk.cscec.mapper.DSubcontractMapper;
import com.dsk.cscec.service.IDCustomerService; import com.dsk.cscec.service.IDCustomerService;
...@@ -39,36 +41,60 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer ...@@ -39,36 +41,60 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
private BusinessOpportunityRadarService opportunityRadarService; private BusinessOpportunityRadarService opportunityRadarService;
@Override @Override
public TableDataInfo<DCustomer> allSearchList(DCustomerSearchBo bo, PageQuery query) { public TableDataInfo<DCustomerListVo> allSearchList(DCustomerSearchBo bo, PageQuery query) {
dealWithCustomerClass(bo); dealWithCustomerClass(bo);
Page<DCustomer> page = baseMapper.allSearchList(query.build(), bo); Page<DCustomerListVo> page = baseMapper.allSearchList(query.build(), bo);
if (CollectionUtils.isNotEmpty(page.getRecords())) { if (CollectionUtils.isNotEmpty(page.getRecords())) {
for (DCustomer customer : page.getRecords()) { page.getRecords().parallelStream().forEach(item -> {
DCustomerListVo vo = subcontractMapper.selectStatisticByCustomerId(item.getCustomerId());
//企业合作数量 //企业合作数量
customer.setEnterpriseCooperationCount(subcontractMapper.selectEnterpriseCountByCustomerId(customer.getCustomerId())); item.setEnterpriseCooperationCount(vo.getEnterpriseCooperationCount());
//项目合作数量 //项目合作数量
customer.setProjectCooperationCount(subcontractMapper.selectProjectCountByCustomerId(customer.getCustomerId())); item.setProjectCooperationCount(vo.getProjectCooperationCount());
showCustomerClass(item);
//关键字标红
if (!ObjectUtils.isEmpty(bo.getCustomerName())) {
item.setCustomerName(StringUtils.markInRed(item.getCustomerName(), bo.getCustomerName()));
}
try { try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCustomerName()); Map<String, Object> map = opportunityRadarService.enterpriseByName(item.getCustomerName());
if (!ObjectUtils.isEmpty(map.get("data"))) { if (!ObjectUtils.isEmpty(map.get("data"))) {
Map<String, Object> data = BeanUtil.beanToMap(map.get("data")); Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
Integer companyId = MapUtil.getInt(data, "jskEid"); Integer companyId = MapUtil.getInt(data, "jskEid");
customer.setCompanyId(companyId); item.setCompanyId(companyId);
} }
}catch (Exception e){ } catch (Exception e) {
// //
} }
} });
} }
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@Override
public List<DCustomerListVo> exportList(DCustomerSearchBo bo) {
dealWithCustomerClass(bo);
PageQuery query = new PageQuery();
List<DCustomerListVo> records = baseMapper.allSearchList(query.build(), bo).getRecords();
if (CollectionUtils.isNotEmpty(records)) {
records.parallelStream().forEach(item -> {
DCustomerListVo vo = subcontractMapper.selectStatisticByCustomerId(item.getCustomerId());
//企业合作数量
item.setEnterpriseCooperationCount(vo.getEnterpriseCooperationCount());
//项目合作数量
item.setProjectCooperationCount(vo.getProjectCooperationCount());
showCustomerClass(item);
});
}
return records;
}
private void dealWithCustomerClass(DCustomerSearchBo bo) { private void dealWithCustomerClass(DCustomerSearchBo bo) {
if (!ObjectUtils.isEmpty(bo.getCustomerClass())) { if (!ObjectUtils.isEmpty(bo.getCustomerClass())) {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
Integer isTeam = null; Integer isTeam = null;
for (String customerClass : bo.getCustomerClass()) { for (String customerClass : bo.getCustomerClass()) {
switch (customerClass){ switch (customerClass) {
case "专业分包": case "专业分包":
list.add("专业分包"); list.add("专业分包");
break; break;
...@@ -79,17 +105,17 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer ...@@ -79,17 +105,17 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
list.add("租赁"); list.add("租赁");
break; break;
case "劳务分包": case "劳务分包":
if(isTeam == null){ if (isTeam == null) {
isTeam = 0; isTeam = 0;
}else if(isTeam == 1) { } else if (isTeam == 1) {
isTeam = null; isTeam = null;
} }
list.add("劳务分包"); list.add("劳务分包");
break; break;
case "劳务队伍": case "劳务队伍":
if(isTeam == null) { if (isTeam == null) {
isTeam = 1; isTeam = 1;
}else if(isTeam == 0) { } else if (isTeam == 0) {
isTeam = null; isTeam = null;
} }
list.add("劳务分包"); list.add("劳务分包");
...@@ -102,5 +128,25 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer ...@@ -102,5 +128,25 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
bo.setIsTeam(isTeam); bo.setIsTeam(isTeam);
} }
} }
private void showCustomerClass(DCustomerListVo vo) {
if (!ObjectUtils.isEmpty(vo.getCustomerClass())) {
switch (vo.getCustomerClass()) {
case "分供":
vo.setCustomerClass("物资设备");
break;
case "租赁":
vo.setCustomerClass("施工机械");
break;
case "劳务分包":
if (!ObjectUtils.isEmpty(vo.getLeaderName())) {
vo.setCustomerClass("劳务队伍");
}
break;
default:
break;
}
}
}
} }
...@@ -3,17 +3,14 @@ package com.dsk.cscec.service.impl; ...@@ -3,17 +3,14 @@ package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.constant.CacheNames;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.domain.entity.SysDictData; import com.dsk.common.core.domain.entity.SysDictData;
import com.dsk.cscec.domain.DimArea;
import com.dsk.cscec.domain.vo.RegionVo; import com.dsk.cscec.domain.vo.RegionVo;
import com.dsk.cscec.domain.vo.RegionWithLevelVo;
import com.dsk.cscec.mapper.DimAreaMapper; import com.dsk.cscec.mapper.DimAreaMapper;
import com.dsk.cscec.domain.DimArea;
import com.dsk.cscec.service.IDimAreaService; import com.dsk.cscec.service.IDimAreaService;
import com.dsk.system.service.ISysDictDataService;
import com.dsk.system.service.ISysDictTypeService; import com.dsk.system.service.ISysDictTypeService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -79,5 +76,49 @@ public class DimAreaServiceImpl extends ServiceImpl<DimAreaMapper, DimArea> impl ...@@ -79,5 +76,49 @@ public class DimAreaServiceImpl extends ServiceImpl<DimAreaMapper, DimArea> impl
} }
return vos; return vos;
} }
@Override
public List<RegionWithLevelVo> allAreaWithoutRegion() {
List<RegionWithLevelVo> vos = new ArrayList<>();
//区域
List<SysDictData> sysDictData = sysDictTypeService.selectDictDataByType(AREA_TYPE);
if(CollectionUtils.isNotEmpty(sysDictData)){
for (SysDictData data : sysDictData) {
//省
List<Object> provinces = baseMapper.selectObjs(Wrappers.<DimArea>lambdaQuery()
.select(DimArea::getAreaName2)
.eq(DimArea::getAreaName1, data.getDictValue())
.ne(DimArea::getAreaName2, data.getDictValue())
.groupBy(DimArea::getAreaName2));
if(CollectionUtils.isNotEmpty(provinces)){
for (Object province : provinces) {
RegionWithLevelVo provinceVo = new RegionWithLevelVo();
provinceVo.setValue(String.valueOf(province));
provinceVo.setLevel("1");
List<RegionWithLevelVo> cityVos = new ArrayList<>();
//市
List<Object> citys = baseMapper.selectObjs(Wrappers.<DimArea>lambdaQuery()
.select(DimArea::getAreaName3)
.eq(DimArea::getAreaName2, provinceVo.getValue())
.ne(DimArea::getAreaName3, provinceVo.getValue())
.groupBy(DimArea::getAreaName3));
if(CollectionUtils.isNotEmpty(citys)){
for (Object city : citys) {
RegionWithLevelVo cityVo = new RegionWithLevelVo();
cityVo.setValue(String.valueOf(city));
cityVo.setLevel("2");
cityVos.add(cityVo);
}
}
provinceVo.setChildren(cityVos);
provinceVo.setChildrenLength(provinceVo.getChildren().size());
vos.add(provinceVo);
}
}
}
}
return vos;
}
} }
package com.dsk.jsk.controller;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.jsk.domain.JskCompanyRelationTableV1Dto;
import com.dsk.jsk.service.CompanyRelationTableV1Service;
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;
/**
* @ClassName CompanyRelationTableV1Controller
* @Description
* @Author Dgm
* @Date 2023/12/13 11:28
* @Version
*/
@RestController
@RequestMapping("/consultancy")
public class CompanyRelationTableV1Controller {
@Resource
private CompanyRelationTableV1Service relationTableV1Service;
/***
*@Description: 业主/施工/集团单位-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/page")
public TableDataInfo page(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception {
return relationTableV1Service.page(dto);
}
/***
*@Description: -业主/施工/集团单位详情-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/detailPage")
public TableDataInfo detailPage(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception{
return relationTableV1Service.detailPage(dto);
}
}
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/12/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;
import lombok.Data;
import java.util.List;
/**
* @ClassName JskCompanyRelationTableV1Dto
* @Description
* @Author Dgm
* @Date 2023/12/11 20:37
* @Version
*/
@Data
public class JskCompanyRelationTableV1Dto extends BasePage {
/**
* 搜-关键字素
*/
private String keyword;
/**
* 企业类型
*/
private String companyRole;
/**
* 项目类型
*/
private List<String> counterpartCompanyRoles;
/**
* 工程类型
*/
private List<String> projectTypes;
/**
* 咨询机构业务类型
*/
private List<String> businessTypes;
/**
* 公布日期-开始时间
*/
private String beginTime;
/**
* 公布日期-结束时间
*/
private String endTime;
/**
* 本次合作合同金额(万元)-最大金额
*/
private Double maxAmount;
/**
* 本次合作合同金额(万元)-最小金额
*/
private Double minAmount;
/**
* 企业Id
*/
private Integer companyId;
/**
* 企业类型 1:业主 2:施工 3:集团
*/
private Integer companyType;
/**
* 排序 1:金额降序 2:金额升序 3: 时间降序 4: 时间升区5: 数量降序6:数量升序
*/
private Integer sort = 5;
}
package com.dsk.jsk.service;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.jsk.domain.*;
import com.dsk.system.utils.DskOpenApiUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @ClassName CompanyRelationTableV1Controller
* @Description
* @Author Dgm
* @Date 2023/12/13 11:28
* @Version
*/
@Slf4j
@Service
public class CompanyRelationTableV1Service {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
public TableDataInfo page(JskCompanyRelationTableV1Dto dto) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/consultancy/page", BeanUtil.beanToMap(dto, false, false));
return dskOpenApiUtil.responsePage(map);
}
public TableDataInfo detailPage(JskCompanyRelationTableV1Dto dto) throws Exception{
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/consultancy/detailPage", BeanUtil.beanToMap(dto, false, false));
return dskOpenApiUtil.responsePage(map);
}
}
package com.dsk.jsk.service;
import org.springframework.stereotype.Service;
/**
* @ClassName JskCompanyRelationTableV1Service
* @Description 1
* @Author Dgm
* @Date 2023/12/13 10:48
* @Version
*/
@Service
public class JskCompanyRelationTableV1Service {
}
...@@ -43,8 +43,8 @@ public class MonitorController { ...@@ -43,8 +43,8 @@ public class MonitorController {
*@date: 2023/12/9 9:29 *@date: 2023/12/9 9:29
*/ */
@GetMapping(value = "push/rulesSelect") @GetMapping(value = "push/rulesSelect")
public R rulesSelect(PushMonitorCompanyAddVo addVo) { public R rulesSelect(PushMonitorRulesSelectVo selectVo) {
return monitorService.rulesSelect(addVo); return monitorService.rulesSelect(selectVo);
} }
/*** /***
...@@ -83,18 +83,6 @@ public class MonitorController { ...@@ -83,18 +83,6 @@ public class MonitorController {
return monitorService.companyDynamicPage(pageVo); return monitorService.companyDynamicPage(pageVo);
} }
/***
*@Description: 监控动态详情
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "company/dynamicDetail")
public R companyDynamicDetail(@RequestBody PushMonitorDynamicDetailVo detailVo) {
return monitorService.companyDynamicDetail(detailVo);
}
/*** /***
*@Description: 监控报告 分页 *@Description: 监控报告 分页
*@Param: *@Param:
...@@ -119,6 +107,18 @@ public class MonitorController { ...@@ -119,6 +107,18 @@ public class MonitorController {
return monitorService.companyPage(pageVo); return monitorService.companyPage(pageVo);
} }
/***
*@Description: 添加企业监控列表 分页
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "system/queryMonitorCompany")
public TableDataInfo queryMonitorCompany(@RequestBody MonitorQueryMonitorCompanyPageVo pageVo) throws Exception{
return monitorService.queryMonitorCompany(pageVo);
}
/*** /***
*@Description: 添加监控 *@Description: 添加监控
*@Param: *@Param:
...@@ -155,4 +155,16 @@ public class MonitorController { ...@@ -155,4 +155,16 @@ public class MonitorController {
return monitorService.systemImport(file, importAddVo); return monitorService.systemImport(file, importAddVo);
} }
/***
*@Description: 详情
*@Param:
*@return: java.lang.String
*@Author: Dgm
*@date: 2022/6/14 10:45
*/
@RequestMapping("/system/detail")
public R systemDetail(@RequestBody PushMonitorSystemDetailVo detailVo){
return monitorService.systemDetail(detailVo);
}
} }
...@@ -25,7 +25,7 @@ public class PushMonitorRules implements Serializable { ...@@ -25,7 +25,7 @@ public class PushMonitorRules implements Serializable {
/** /**
* 创建人Id * 创建人Id
*/ */
private Long userId = 98L; private Long userId = 7324L;
/** /**
* 风险类型,多个逗号隔开 * 风险类型,多个逗号隔开
...@@ -42,12 +42,12 @@ public class PushMonitorRules implements Serializable { ...@@ -42,12 +42,12 @@ public class PushMonitorRules implements Serializable {
/** /**
* 推送时段-起 * 推送时段-起
*/ */
private Integer timePeriodStart; private String timePeriodStart;
/** /**
* 推送时段-止 * 推送时段-止
*/ */
private Integer timePeriodEnd; private String timePeriodEnd;
/** /**
* 接收方式 手机:0 PC:1 * 接收方式 手机:0 PC:1
......
...@@ -2,6 +2,8 @@ package com.dsk.monitor.domain.vo; ...@@ -2,6 +2,8 @@ package com.dsk.monitor.domain.vo;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @ClassName ConditionVo * @ClassName ConditionVo
* @Description 共用条件 * @Description 共用条件
...@@ -14,11 +16,11 @@ public class ConditionVo { ...@@ -14,11 +16,11 @@ public class ConditionVo {
/** /**
* 用户id * 用户id
*/ */
private Long userId = 98L; private Long userId = 7324L;
/** /**
* 条件查询企业id * 条件查询企业id
*/ */
private Integer companyOrstaffId; private Integer companyId;
/** /**
* 条件查询企业名称(模糊查询) * 条件查询企业名称(模糊查询)
*/ */
...@@ -26,15 +28,15 @@ public class ConditionVo { ...@@ -26,15 +28,15 @@ public class ConditionVo {
/** /**
* 条件查询风险等级:正向,负向,中立,警示 * 条件查询风险等级:正向,负向,中立,警示
*/ */
private String riskLevel; private List<String> riskLevel;
/** /**
* 条件查询监控维度子级名称 * 条件查询监控维度父级名称数组
*/ */
private String dimensionId; private List<String> parentDimension;
/** /**
* 条件查询监控维度父级名称 * 条件查询监控维度子级名称数组
*/ */
private String parentId; private List<String> dimension;
/** /**
* 条件查询开始时间 * 条件查询开始时间
*/ */
...@@ -49,4 +51,9 @@ public class ConditionVo { ...@@ -49,4 +51,9 @@ public class ConditionVo {
*/ */
private Integer reportType; private Integer reportType;
/**
* 系统来源(ZJYJ)
*/
private String sysType = "ZJYJ";
} }
package com.dsk.monitor.domain.vo;
import com.dsk.jsk.domain.BasePage;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 添加企业监控列表 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class MonitorQueryMonitorCompanyPageVo extends BasePage {
/**
* 查询条件
*/
private String companyName;
/**
* 用户id
*/
private Long userId = 7324L;
}
...@@ -18,7 +18,7 @@ public class PushMonitorCompanyAddVo { ...@@ -18,7 +18,7 @@ public class PushMonitorCompanyAddVo {
/** /**
* 用户id * 用户id
*/ */
private Long userId = 98L; private Long userId = 7324L;
/** /**
* 多个企业id数组 * 多个企业id数组
*/ */
......
...@@ -17,7 +17,7 @@ public class PushMonitorCompanyCancelVo { ...@@ -17,7 +17,7 @@ public class PushMonitorCompanyCancelVo {
/** /**
* 用户id * 用户id
*/ */
private Long userId = 98L; private Long userId = 7324L;
/** /**
* 多个企业id数组 * 多个企业id数组
*/ */
......
...@@ -17,7 +17,7 @@ public class PushMonitorCompanyImportAddVo { ...@@ -17,7 +17,7 @@ public class PushMonitorCompanyImportAddVo {
/** /**
* 用户id * 用户id
*/ */
private Long userId = 98L; private Long userId = 7324L;
/** /**
* 多个企业id数组 * 多个企业id数组
*/ */
......
...@@ -20,5 +20,5 @@ public class PushMonitorCompanyPageVo extends BasePage { ...@@ -20,5 +20,5 @@ public class PushMonitorCompanyPageVo extends BasePage {
/** /**
* 用户id * 用户id
*/ */
private Long userId = 98L; private Long userId = 7324L;
} }
...@@ -16,7 +16,7 @@ public class PushMonitorDynamicPageVo extends BasePage { ...@@ -16,7 +16,7 @@ public class PushMonitorDynamicPageVo extends BasePage {
/** /**
* 用户id * 用户id
*/ */
private Long userId = 98L; private Long userId = 7324L;
private ConditionVo condition; private ConditionVo condition;
} }
...@@ -20,5 +20,5 @@ public class PushMonitorReportPageVo extends BasePage { ...@@ -20,5 +20,5 @@ public class PushMonitorReportPageVo extends BasePage {
/** /**
* 用户id * 用户id
*/ */
private Long userId = 98L; private Long userId = 7324L;
} }
...@@ -14,5 +14,5 @@ public class PushMonitorRulesDetailVo { ...@@ -14,5 +14,5 @@ public class PushMonitorRulesDetailVo {
/** /**
* 创建人Id * 创建人Id
*/ */
private Long userId = 98L; private Long userId = 7324L;
} }
package com.dsk.monitor.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @ClassName PushMonitorRulesSelectVo
* @Description 监控 下拉
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorRulesSelectVo {
/**
* 用户id
*/
private Long userId = 7324L;
/**
* 系统来源
*/
private String sysType = "ZJYJ";
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
/**
* @ClassName PushMonitorSystemDetail
* @Description 详情
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
public class PushMonitorSystemDetailVo {
/**
* 监控维度名称
*/
private String dimensionName;
/**
* 来源Id
*/
private String sourceId;
/**
* eid
*/
private String eid;
/**
* uid
*/
private String uId;
/**
* md5Id
*/
private String md5Id;
/**
* objId
*/
private String objId;
public String getDimensionName() {
return dimensionName;
}
public void setDimensionName(String dimensionName) {
this.dimensionName = dimensionName;
}
public String getSourceId() {
return sourceId;
}
public void setSourceId(String sourceId) {
this.sourceId = sourceId;
}
public String getEid() {
return eid;
}
public void setEid(String eid) {
this.eid = eid;
}
public String getuId() {
return uId;
}
public void setuId(String uId) {
this.uId = uId;
}
public String getMd5Id() {
return md5Id;
}
public void setMd5Id(String md5Id) {
this.md5Id = md5Id;
}
public String getObjId() {
return objId;
}
public void setObjId(String objId) {
this.objId = objId;
}
public PushMonitorSystemDetailVo() {
}
public PushMonitorSystemDetailVo(String eid, String uId, String md5Id, String objId) {
this.eid = eid;
this.uId = uId;
this.md5Id = md5Id;
this.objId = objId;
}
@Override
public String toString() {
return "PushMonitorSystemDetailVo{" +
"dimensionName='" + dimensionName + '\'' +
", sourceId='" + sourceId + '\'' +
", eid='" + eid + '\'' +
", uId='" + uId + '\'' +
", md5Id='" + md5Id + '\'' +
", objId='" + objId + '\'' +
'}';
}
}
package com.dsk.monitor.job; //package com.dsk.monitor.job;
//
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; //import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsk.common.utils.DateUtils; //import com.dsk.common.utils.DateUtils;
import com.dsk.monitor.domain.dto.PushMonitorRules; //import com.dsk.monitor.domain.dto.PushMonitorRules;
import com.dsk.monitor.mapper.PushMonitorInfoMapper; //import com.dsk.monitor.mapper.PushMonitorInfoMapper;
import com.dsk.monitor.mapper.PushMonitorRulesMapper; //import com.dsk.monitor.mapper.PushMonitorRulesMapper;
import com.dsk.monitor.util.SendMessageUtil; //import com.dsk.monitor.util.SendMessageUtil;
import org.springframework.scheduling.annotation.Scheduled; //import org.springframework.scheduling.annotation.Scheduled;
//
import javax.annotation.Resource; //import javax.annotation.Resource;
//
/** ///**
* @ClassName PushScheduling // * @ClassName PushScheduling
* @Description 发送短信 // * @Description 发送短信
* @Author Dgm // * @Author Dgm
* @Date 2023/12/9 13:51 // * @Date 2023/12/9 13:51
* @Version // * @Version
*/ // */
public class PushScheduling { //public class PushScheduling {
//
@Resource // @Resource
private PushMonitorInfoMapper monitorInfoMapper; // private PushMonitorInfoMapper monitorInfoMapper;
//
@Resource // @Resource
private PushMonitorRulesMapper rulesMapper; // private PushMonitorRulesMapper rulesMapper;
//
@Scheduled(cron = "0 0 5 * * * ?") // @Scheduled(cron = "0 0 5 * * * ?")
public void receiveModePhone() { // public void receiveModePhone() {
// 获取当前整点时间 // // 获取当前整点时间
Integer concurrentHour = DateUtils.getHour(); // Integer concurrentHour = DateUtils.getHour();
QueryWrapper queryWrapper = new QueryWrapper(); // QueryWrapper queryWrapper = new QueryWrapper();
PushMonitorRules detail = rulesMapper.selectOne(queryWrapper); // PushMonitorRules detail = rulesMapper.selectOne(queryWrapper);
// 推送时段-起 // // 推送时段-起
Integer timePeriodStart = detail.getTimePeriodStart(); // Integer timePeriodStart = detail.getTimePeriodStart();
// 推送时段-止 // // 推送时段-止
Integer timePeriodEnd = detail.getTimePeriodEnd(); // Integer timePeriodEnd = detail.getTimePeriodEnd();
if (concurrentHour > timePeriodStart && concurrentHour < timePeriodEnd) { // if (concurrentHour > timePeriodStart && concurrentHour < timePeriodEnd) {
QueryWrapper monitorInfoWrapper = new QueryWrapper(); // QueryWrapper monitorInfoWrapper = new QueryWrapper();
// 风险类型 // // 风险类型
monitorInfoWrapper.in("risk_type", detail.getRiskType()); // monitorInfoWrapper.in("risk_type", detail.getRiskType());
// 监控维度 // // 监控维度
monitorInfoWrapper.in("dimension", detail.getDimension()); // monitorInfoWrapper.in("dimension", detail.getDimension());
Long count = monitorInfoMapper.selectCount(monitorInfoWrapper); // Long count = monitorInfoMapper.selectCount(monitorInfoWrapper);
if (count >0 ) { // if (count >0 ) {
SendMessageUtil.sendMessage(detail.getPhones(), count.toString()); // SendMessageUtil.sendMessage(detail.getPhones(), count.toString());
} // }
} // }
} // }
} //}
...@@ -30,7 +30,7 @@ public interface MonitorService { ...@@ -30,7 +30,7 @@ public interface MonitorService {
*@Author: Dgm *@Author: Dgm
*@date: 2023/12/9 10:03 *@date: 2023/12/9 10:03
*/ */
R rulesSelect(PushMonitorCompanyAddVo addVo); R rulesSelect(PushMonitorRulesSelectVo addVo);
/*** /***
*@Description: 保存监控规则信息 *@Description: 保存监控规则信息
...@@ -61,22 +61,23 @@ public interface MonitorService { ...@@ -61,22 +61,23 @@ public interface MonitorService {
TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception; TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception;
/*** /***
*@Description: 监控动态详情 *@Description: 监控报告
*@Param: detailVo 信息 *@Param: pageVo 信息
*@return: R *@return: R
*@Author: Dgm *@Author: Dgm
*@date: 2023/12/9 10:03 *@date: 2023/12/9 10:03
*/ */
R companyDynamicDetail(PushMonitorDynamicDetailVo detailVo); TableDataInfo reportPage(PushMonitorReportPageVo pageVo) throws Exception;
/*** /***
*@Description: 监控报告 *@Description: 企业监控列表 分页
*@Param: pageVo 信息 *@Param: pageVo 信息
*@return: R *@return: R
*@Author: Dgm *@Author: Dgm
*@date: 2023/12/9 10:03 *@date: 2023/12/9 10:03
*/ */
TableDataInfo reportPage(PushMonitorReportPageVo pageVo) throws Exception; TableDataInfo companyPage(PushMonitorCompanyPageVo pageVo) throws Exception;
/*** /***
*@Description: 企业监控列表 分页 *@Description: 企业监控列表 分页
...@@ -85,7 +86,8 @@ public interface MonitorService { ...@@ -85,7 +86,8 @@ public interface MonitorService {
*@Author: Dgm *@Author: Dgm
*@date: 2023/12/9 10:03 *@date: 2023/12/9 10:03
*/ */
TableDataInfo companyPage(PushMonitorCompanyPageVo pageVo) throws Exception; TableDataInfo queryMonitorCompany(MonitorQueryMonitorCompanyPageVo pageVo) throws Exception;
/*** /***
...@@ -114,4 +116,13 @@ public interface MonitorService { ...@@ -114,4 +116,13 @@ public interface MonitorService {
*@date: 2023/12/9 10:03 *@date: 2023/12/9 10:03
*/ */
R systemImport(MultipartFile file, PushMonitorCompanyImportAddVo importAddVo) throws Exception; R systemImport(MultipartFile file, PushMonitorCompanyImportAddVo importAddVo) throws Exception;
/***
*@Description: 动态详情
*@Param: cancelVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R systemDetail(PushMonitorSystemDetailVo importAddVo);
} }
...@@ -5,6 +5,7 @@ import com.dsk.common.core.domain.AjaxResult; ...@@ -5,6 +5,7 @@ import com.dsk.common.core.domain.AjaxResult;
import com.dsk.component.UploadComponent; import com.dsk.component.UploadComponent;
import com.dsk.jsk.domain.bo.ComposeQueryDto; import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.search.service.BusinessOpportunityRadarService; import com.dsk.search.service.BusinessOpportunityRadarService;
import com.dsk.search.util.PageQueryLimit;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
......
...@@ -2,9 +2,9 @@ package com.dsk.search.controller; ...@@ -2,9 +2,9 @@ package com.dsk.search.controller;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.StringUtils;
import com.dsk.jsk.domain.bo.ComposeQueryDto; import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.search.service.BusinessOpportunityRadarService; import com.dsk.search.service.BusinessOpportunityRadarService;
import com.dsk.search.util.PageQueryLimit;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -74,6 +74,14 @@ public class CompanySearchController { ...@@ -74,6 +74,14 @@ public class CompanySearchController {
return opportunityRadarService.zjyjAptitude(object); return opportunityRadarService.zjyjAptitude(object);
} }
/*
* 符合条件的资质
*/
@RequestMapping("/zjyj/enterpriseAptitude")
public AjaxResult zjyjEnterpriseAptitude(@RequestBody JSONObject object) {
return opportunityRadarService.zjyjEnterpriseAptitude(object);
}
/* /*
* 查资质 不满足 * 查资质 不满足
*/ */
......
...@@ -8,6 +8,7 @@ import com.dsk.search.service.BusinessOpportunityRadarService; ...@@ -8,6 +8,7 @@ import com.dsk.search.service.BusinessOpportunityRadarService;
import com.dsk.search.service.ExportService; import com.dsk.search.service.ExportService;
import com.dsk.system.domain.vo.AptitudeVo; import com.dsk.system.domain.vo.AptitudeVo;
import com.dsk.system.domain.vo.SysUserImportVo; import com.dsk.system.domain.vo.SysUserImportVo;
import com.dsk.system.service.ISysUserFileRecordService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -30,6 +31,18 @@ public class ExportController { ...@@ -30,6 +31,18 @@ public class ExportController {
@Resource @Resource
private ExportService exportService; private ExportService exportService;
@Resource
private ISysUserFileRecordService sysUserFileRecordService;
/**
* 导出回调接口
* @param object
* @return
*/
@PostMapping(value = "/backUrl")
public AjaxResult exportBack(@RequestBody JSONObject object) {
return sysUserFileRecordService.exportBack(object);
}
/** /**
* 获取导入模板 * 获取导入模板
...@@ -37,10 +50,8 @@ public class ExportController { ...@@ -37,10 +50,8 @@ public class ExportController {
@PostMapping("/aptitude/importTemplate") @PostMapping("/aptitude/importTemplate")
public void importTemplate(HttpServletResponse response) { public void importTemplate(HttpServletResponse response) {
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
AptitudeVo aptitudeVo = new AptitudeVo(); list.add(new AptitudeVo("重庆市轨道交通(集团)有限公司"));
aptitudeVo.setCompanyName("重庆市轨道交通(集团)有限公司"); ExcelUtil.exportTemplate(list, "企业数据", "excel/aptitudeImportTemplate.xlsx", response);
list.add(aptitudeVo);
ExcelUtil.exportTemplate(list, "企业数据", "excel/userImportTemplate.xlsx", response);
} }
/* /*
......
...@@ -223,6 +223,11 @@ public class BusinessOpportunityRadarService { ...@@ -223,6 +223,11 @@ public class BusinessOpportunityRadarService {
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
public AjaxResult zjyjEnterpriseAptitude(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/zjyj/enterpriseAptitude", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult zjyjAptitudeContrary(JSONObject object) { public AjaxResult zjyjAptitudeContrary(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/zjyj/aptitude/contrary", object); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/zjyj/aptitude/contrary", object);
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
......
package com.dsk.search.controller; package com.dsk.search.util;
import com.dsk.jsk.domain.bo.Page; import com.dsk.jsk.domain.bo.Page;
......
<?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.cscec.mapper.AdvisoryBodyProjectMapper">
<select id="selectProjectKeysByAdvisoryBodyCids" resultType="java.lang.Long">
select abp.project_key
from advisory_body_project abp
<where>
<if test="advisoryBodyCids != null">
abp.advisory_body_cid = #{advisoryBodyCids}
</if>
</where>
</select>
</mapper>
\ No newline at end of file
This diff is collapsed.
...@@ -7,4 +7,4 @@ NODE_ENV = production ...@@ -7,4 +7,4 @@ NODE_ENV = production
ENV = 'staging' ENV = 'staging'
# 数字化经营履约全生命链路管理系统/测试环境 # 数字化经营履约全生命链路管理系统/测试环境
VUE_APP_BASE_API = '/stage-api' VUE_APP_BASE_API = '/prod-api'
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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