Commit d1f2d097 authored by 施翔轲's avatar 施翔轲

咨询机构管理:分表改造

parent 0f6b84d0
......@@ -14,6 +14,7 @@ import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectDetailVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;
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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -28,6 +29,7 @@ import javax.validation.constraints.NotNull;
* @author sxk
* @since 2023-12-10 15:34:46
*/
@Validated
@RestController
@RequestMapping("advisory/body")
public class AdvisoryBodyManageController extends BaseController {
......
......@@ -11,7 +11,7 @@ import javax.annotation.Resource;
/**
* 咨询机构和项目关联表(AdvisoryBodyProject)表控制层
*
* @author makejava
* @author sxk
* @since 2023-12-15 15:57:54
*/
@RestController
......
......@@ -6,7 +6,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
......@@ -31,54 +30,14 @@ public class AdvisoryBody implements Serializable {
* 咨询机构cid(用于查询建设库数据)
*/
private Integer advisoryBodyCid;
/**
* 项目主键(用作关联d_project)
*/
private Long projectKey;
/**
* 咨询机构名称
*/
private String advisoryBodyName;
/**
* 法人代表
*/
private String legalPerson;
/**
* 法人联系电话
*/
private String legalPersonPhone;
/**
* 注册地址
*/
private String regAddress;
/**
* 项目负责人
*/
private String projectLeader;
/**
* 项目负责人专业
*/
private String projectLeaderMajor;
/**
* 项目负责人联系电话
*/
private String projectLeaderPhone;
/**
* 结算金额(万元)
*/
private BigDecimal settleAmount;
/**
* 结算开始时间
*/
private Date settleStartTime;
/**
* 结算完成时间
*/
private Date settleFinishTime;
/**
* 是否为终审单位(0代表是 1代表否)
* 经营范围
*/
private String isFinalJudgeUnit;
private String businessScope;
/**
* 创建者
*/
......
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
......@@ -18,6 +19,7 @@ public class AdvisoryBodyProject implements Serializable {
/**
* 项目主键
*/
@TableId(value = "project_key")
private Long projectKey;
/**
* 咨询机构ID
......
......@@ -3,6 +3,7 @@ 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;
......@@ -22,10 +23,12 @@ public class AdvisoryBodySearchBo {
/**
* 最小最近合作时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date minLastCooperateDate;
/**
* 最大最近合作时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date maxLastCooperateDate;
/**
* 经营范围
......
......@@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
......@@ -16,9 +17,10 @@ import java.util.List;
@NoArgsConstructor
public class CooperateProjectDetailSearchBo {
/**
* 咨询机构ID
* 咨询机构CID
*/
private Long advisoryBodyId;
@NotNull(message = "咨询机构CID不能为空")
private Long advisoryBodyCid;
/**
* 项目名称
*/
......
......@@ -11,7 +11,7 @@ import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* 咨询机构(SysAdvisoryBody)表数据库访问层
......@@ -20,11 +20,6 @@ import java.util.Date;
* @since 2023-12-12 10:12:04
*/
public interface AdvisoryBodyMapper extends BaseMapper<AdvisoryBody> {
/**
* 查询最近一次合作时间
*/
Date selectLastCooperateTime(@Param("advisoryBodyId") Long advisoryBodyId);
/**
* 获取所有企业列表(咨询机构)数据
*/
......@@ -37,5 +32,20 @@ public interface AdvisoryBodyMapper extends BaseMapper<AdvisoryBody> {
* @return
*/
Page<AdvisoryBodyVo> queryListByBo(IPage<AdvisoryBodyBo> build, @Param("bo") AdvisoryBodyBo bo);
/**
* 根据咨询机构名称查询对应的项目IDs
* @param advisoryBodyName 咨询机构名称
* @return 项目IDs
*/
List<Long> selectProjectIdsByAdvisoryBodyName(@Param("advisoryBodyName") String advisoryBodyName);
/**
* 根据项目主键查询咨询机构
*
* @param projectKey 项目主键
* @return 咨询机构
*/
AdvisoryBody queryAdvisoryBodyByProjectKey(@Param("projectKey") Long projectKey);
}
......@@ -12,7 +12,7 @@ import org.springframework.stereotype.Service;
* @author sxk
* @since 2023-12-12 10:12:09
*/
@Service("sysAdvisoryBodyService")
@Service("advisoryBodyService")
public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, AdvisoryBody> implements AdvisoryBodyService {
}
......
package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
......@@ -14,8 +12,9 @@ import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.constant.QueryConstants;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.bo.CooperateProjectDetailSearchBo;
import com.dsk.cscec.domain.bo.ProjectSearchBo;
......@@ -23,8 +22,9 @@ import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectDetailVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;
import com.dsk.cscec.mapper.DProjectMapper;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.AdvisoryBodyProjectMapper;
import com.dsk.cscec.mapper.DProjectMapper;
import com.dsk.cscec.service.IDProjectService;
import com.dsk.jsk.domain.EnterpriseInfoHeaderBody;
import com.dsk.system.utils.DskOpenApiUtil;
......@@ -36,7 +36,6 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* 咨询机构管理
......@@ -52,6 +51,8 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
@Resource
private AdvisoryBodyMapper advisoryBodyMapper;
@Resource
private AdvisoryBodyProjectMapper advisoryBodyProjectMapper;
@Resource
private DskOpenApiUtil dskOpenApiUtil;
/**
......@@ -65,12 +66,15 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
public TableDataInfo<ProjectSearchVo> queryProjectList(ProjectSearchBo projectSearchBo, PageQuery pageQuery) {
//根据咨询机构名称查询对应的项目IDs
String advisoryBodyName = projectSearchBo.getAdvisoryBodyName();
List<Long> projectIds = new ArrayList<>();
List<Long> projectIds = advisoryBodyMapper.selectProjectIdsByAdvisoryBodyName(advisoryBodyName);
if (StringUtils.isNotBlank(advisoryBodyName)) {
//根据咨询机构名称查询咨询机构
for (AdvisoryBody advisoryBody : advisoryBodyMapper.selectList(new LambdaQueryWrapper<AdvisoryBody>()
.like(AdvisoryBody::getAdvisoryBodyName, advisoryBodyName))) {
if (ObjectUtil.isNotNull(advisoryBody.getProjectKey())) {
projectIds.add(advisoryBody.getProjectKey());
//根据咨询机构CID查询项目主键
for (AdvisoryBodyProject advisoryBodyProject : advisoryBodyProjectMapper.selectList(new LambdaQueryWrapper<AdvisoryBodyProject>()
.eq(AdvisoryBodyProject::getAdvisoryBodyCid, advisoryBody.getAdvisoryBodyCid()))) {
projectIds.add(advisoryBodyProject.getProjectKey());
}
}
}
......@@ -122,14 +126,13 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
}
/**
* 根据项目ID查询咨询机构
* 根据项目主键查询咨询机构
*
* @param projectKey 项目主键
* @return 咨询机构
*/
private AdvisoryBody getAdvisoryBodyByProjectKey(Long projectKey) {
return advisoryBodyMapper.selectOne(new LambdaQueryWrapper<AdvisoryBody>()
.eq(AdvisoryBody::getProjectKey, projectKey));
return advisoryBodyMapper.queryAdvisoryBodyByProjectKey(projectKey);
}
/**
......@@ -162,7 +165,12 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
Map<String, Object> companyMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(infoHeaderBody, false, false));
Map companyData = MapUtils.getMap(companyMap, "data", null);
//最近一次合作时间
advisoryBodySearchVo.setLastCooperateTime(advisoryBodyMapper.selectLastCooperateTime(advisoryBodySearchVo.getAdvisoryBodyId()));
List<AdvisoryBodyProject> advisoryBodyProjectList = advisoryBodyProjectMapper.selectList(new LambdaQueryWrapper<AdvisoryBodyProject>()
.select(AdvisoryBodyProject::getCreateTime)
.eq(AdvisoryBodyProject::getAdvisoryBodyCid, advisoryBodySearchVo.getAdvisoryBodyCid())
.orderByDesc(AdvisoryBodyProject::getCreateBy));
advisoryBodySearchVo.setLastCooperateTime(advisoryBodyProjectList.get(0).getCreateTime());
//经营范围
advisoryBodySearchVo.setBusinessStatus(MapUtils.getString(companyData, "businessStatus", ""));
advisoryBodySearchVo.setCorporatePerson(MapUtils.getString(companyData, "corporatePerson", ""));
String provinceName = MapUtils.getString(companyData, "provinceName", "");
......@@ -188,14 +196,14 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
*/
@Override
public TableDataInfo<CooperateProjectDetailSearchVo> queryCooperateProjectDetailList(CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery) {
//先根据咨询机构ID查出所有该咨询机构下的记录
//先根据咨询机构CID查出所有该咨询机构下的记录
List<AdvisoryBody> advisoryBodyList = advisoryBodyMapper.selectList(new LambdaQueryWrapper<AdvisoryBody>()
.eq(AdvisoryBody::getAdvisoryBodyId, cooperateProjectDetailSearchBo.getAdvisoryBodyId()));
.eq(AdvisoryBody::getAdvisoryBodyCid, cooperateProjectDetailSearchBo.getAdvisoryBodyCid()));
//提取所有项目主键
ArrayList<Long> projectKeyList = new ArrayList<>();
for (AdvisoryBody advisoryBody : advisoryBodyList) {
projectKeyList.add(advisoryBody.getProjectKey());
//projectKeyList.add(advisoryBody.getProjectKey());
}
//再根据记录终改的项目主键查询项目详情
......@@ -217,15 +225,15 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
.in(!cooperateProjectDetailSearchBo.getCityName().isEmpty(), "city_name", cooperateProjectDetailSearchBo.getCityName());
Page<CooperateProjectDetailSearchVo> page = baseMapper.selectPageCooperateProjectDetailList(pageQuery.build(), wrapper);
//填充结算天数
for (CooperateProjectDetailSearchVo cooperateProjectDetailSearchVo : page.getRecords()) {
for (AdvisoryBody advisoryBody : advisoryBodyList) {
if (Objects.equals(advisoryBody.getProjectKey(), cooperateProjectDetailSearchVo.getProjectKey())) {
long betweenDays = DateUtil.between(advisoryBody.getSettleStartTime(), advisoryBody.getSettleFinishTime(), DateUnit.DAY);
cooperateProjectDetailSearchVo.setSettlementDays(betweenDays);
}
}
}
////填充结算天数
//for (CooperateProjectDetailSearchVo cooperateProjectDetailSearchVo : page.getRecords()) {
// for (AdvisoryBody advisoryBody : advisoryBodyList) {
// if (Objects.equals(advisoryBody.getProjectKey(), cooperateProjectDetailSearchVo.getProjectKey())) {
// long betweenDays = DateUtil.between(advisoryBody.getSettleStartTime(), advisoryBody.getSettleFinishTime(), DateUnit.DAY);
// cooperateProjectDetailSearchVo.setSettlementDays(betweenDays);
// }
// }
//}
return TableDataInfo.build(page);
}
......@@ -242,12 +250,18 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
.eq(DProject::getProjectKey, projectKey));
ProjectDetailVo projectDetailVo = BeanUtil.toBean(dProject, ProjectDetailVo.class);
//查询咨询机构信息
AdvisoryBody advisoryBody = advisoryBodyMapper.selectOne(new LambdaQueryWrapper<AdvisoryBody>().eq(AdvisoryBody::getProjectKey, projectKey));
AdvisoryBody advisoryBody = advisoryBodyMapper.queryAdvisoryBodyByProjectKey(projectKey);
//填充咨询机构名称
projectDetailVo.setAdvisoryBodyName(advisoryBody.getAdvisoryBodyName());
return projectDetailVo;
}
/**
* 根据咨询机构ID查询咨询机构详情
*
* @param advisoryBodyId 咨询机构ID
* @return 咨询机构详情
*/
@Override
public AdvisoryBody queryAdvisoryBodyDetail(Long advisoryBodyId) {
return null;
......
......@@ -3,29 +3,12 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.AdvisoryBodyMapper">
<select id="selectLastCooperateTime" resultType="java.util.Date">
select ab.create_time
from advisory_body ab
where ab.advisory_body_id = ${advisoryBodyId};
</select>
<select id="selectPageAdvisoryBodyList" resultType="com.dsk.cscec.domain.vo.AdvisoryBodySearchVo">
select advisory_body_id,
project_key,
advisory_body_name,
legal_person,
legal_person_phone,
reg_address,
project_leader,
project_leader_major,
project_leader_phone,
settle_start_time,
settle_finish_time,
is_final_judge_unit
select
<include refid="allColumnOfAdvisoryBody"></include>
from advisory_body ${ew.getCustomSqlSegment}
</select>
<select id="queryListByBo" resultType="com.dsk.cscec.domain.vo.AdvisoryBodyVo">
select abp.advisory_body_id,abp.advisory_body_cid,abp.project_key,abp.project_leader,abp.project_leader_major,
abp.project_leader_phone,
......@@ -78,4 +61,34 @@
</where>
order by dp.load_time desc
</select>
<select id="selectProjectIdsByAdvisoryBodyName" resultType="java.lang.Long">
select
<include refid="allColumnOfAdvisoryBody"></include>
from advisory_body
where
<if test="advisoryBodyName != null">
and advisory_body_name like concat('%',#{advisoryBodyName},'%')
</if>
</select>
<select id="queryAdvisoryBodyByProjectKey" resultType="com.dsk.cscec.domain.AdvisoryBody">
select
<include refid="allColumnOfAdvisoryBody"></include>
from advisory_body ab
left join advisory_body_project abp
on abp.advisory_body_cid = ab.advisory_body_cid
where abp.project_key = ${projectKey};
</select>
<sql id="allColumnOfAdvisoryBody">
advisory_body_id,
advisory_body_cid,
advisory_body_name,
business_scope,
create_by,
create_time,
update_by,
update_time
</sql>
</mapper>
\ No newline at end of file
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